:root { color-scheme:dark; --ink:#eae5df; --soft:#a9aac4; --gold:#d9c49c; --glass:rgba(13,18,35,.66); --line:rgba(218,221,248,.18); }
*,*::before,*::after { box-sizing:border-box }
html,body { margin:0; width:100%; height:100%; overflow:hidden }
body { background:#070b17; color:var(--ink); font-family:'Noto Serif KR',Georgia,serif; font-weight:300; -webkit-tap-highlight-color:transparent; }
button { font:inherit; -webkit-tap-highlight-color:transparent }
button:focus-visible { outline:2px solid #e8d9b5; outline-offset:4px }
#world { position:fixed; inset:0; width:100%;height:100%; display:block; z-index:0; touch-action:none; cursor:crosshair; }
.grain { position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.08;mix-blend-mode:overlay; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E"); }
.vignette { position:fixed;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse 80% 80% at 50% 45%,transparent 25%,rgba(0,0,0,.44) 100%); }
.topbar { position:fixed;top:0;left:0;right:0;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:clamp(16px,3vw,34px) clamp(16px,4vw,58px);pointer-events:none;gap:16px; }
.topbar > * { pointer-events:auto }
.brand { display:flex;align-items:center;gap:12px; color:#ece9e3;flex:0 0 auto;letter-spacing:.22em; }
.brand-icon { color:#e1cda9; font-size:2rem;text-shadow:0 0 20px #bd9ccc88;line-height:1 }
.brand strong {font:400 16px/1.1 'Cormorant Garamond',Georgia,serif;letter-spacing:.25em;display:block}
.brand small {color:#8b91ac; font:400 8px/1.3 'Cormorant Garamond',serif;letter-spacing:.26em;display:block;margin-top:6px}
.toolbar {display:flex;align-items:center;gap:7px}
.tool {width:37px;height:37px;border:1px solid var(--line);border-radius:50%;color:#cfcee4;background:rgba(17,21,42,.5);backdrop-filter:blur(8px);font-size:18px;display:grid;place-items:center;cursor:pointer;transition:color .2s,background .2s,border-color .2s,transform .2s}
.tool:hover:not(:disabled){color:#ffe6b9;border-color:rgba(237,210,156,.55);background:rgba(35,33,57,.75);transform:translateY(-2px)}
.tool[aria-pressed='true']{border-color:rgba(219,193,128,.65);color:#e5c98d;box-shadow:0 0 18px rgba(210,165,108,.15)}
.tool:disabled {opacity:.33;cursor:not-allowed}
.intro {position:fixed;z-index:5;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:0;pointer-events:none;padding:110px 25px 95px;transition:opacity 1.4s ease,visibility 1.4s;animation:introIn 1.2s ease both}
.intro.hidden{opacity:0;visibility:hidden}
.intro > * {pointer-events:none}
.intro .start {pointer-events:auto}
.eyebrow {color:#b8abbe;font:400 10px/1.4 'Cormorant Garamond',serif;letter-spacing:.33em;margin:0 0 30px}
.intro h1 {font-size:clamp(25px,4.1vw,58px);font-weight:300;line-height:1.65;letter-spacing:-.035em;margin:0;color:#f4efeb;text-shadow:0 2px 28px #0009,0 0 45px #151a3988}
.intro h1 em {font-style:normal;color:#dfd3b9}
.ornament {display:flex;align-items:center;gap:22px;color:#dacaa6;font-size:22px;margin:22px auto 10px}.ornament span{display:block;width:44px;height:1px;background:linear-gradient(90deg,transparent,#e2cda870)}.ornament span:last-child{transform:rotate(180deg)}
.intro-copy {margin:8px 0 26px;line-height:2.2;font-size:clamp(11px,1.2vw,14px);color:#b3b3c7;letter-spacing:.07em}
.start{border:1px solid rgba(232,207,159,.5);color:#f2e1c1;background:rgba(202,175,124,.09);border-radius:100px;padding:13px 25px;letter-spacing:.1em;font-size:12px;cursor:pointer;backdrop-filter:blur(9px);transition:background .25s,box-shadow .25s,transform .25s}
.start:hover{background:rgba(202,175,124,.21);box-shadow:0 0 38px rgba(213,179,122,.18);transform:translateY(-2px)}.start span{margin-right:10px;color:#dcc894}
.intro-note{font:300 10px/1.7 'Noto Serif KR',serif;letter-spacing:.06em;color:#82859f;margin:23px 0 0}
.poem{position:fixed;z-index:15;left:50%;bottom:clamp(74px,10vh,114px);transform:translate(-50%,12px);width:min(480px,calc(100vw - 36px));max-height:55vh;overflow:auto;text-align:center;padding:28px 30px 18px;background:linear-gradient(145deg,rgba(12,17,34,.88),rgba(19,20,38,.7));border:1px solid rgba(231,204,165,.24);border-radius:18px;box-shadow:0 16px 60px #0009,0 0 45px #6771af13;backdrop-filter:blur(18px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .55s,transform .55s,visibility .55s}
.poem.visible{opacity:1;transform:translate(-50%,0);visibility:visible;pointer-events:auto}
.poem-kicker{display:block;font:400 10px/1.5 'Cormorant Garamond',Georgia,serif;letter-spacing:.22em;color:#d6bd96}
.poem-text{white-space:pre-line;font-size:clamp(14px,2vw,18px);line-height:2.15;letter-spacing:.06em;color:#ede3dc;margin:17px 0 8px}
.poem-close{border:0;background:none;color:#b1a9b7;cursor:pointer;padding:8px 18px;font-size:11px}
.poem-close:hover{color:#fff}
.footerline{position:fixed;left:clamp(16px,4vw,58px);right:clamp(16px,4vw,58px);bottom:max(19px,env(safe-area-inset-bottom));z-index:10;display:flex;gap:20px;align-items:flex-end;justify-content:space-between;pointer-events:none;font-family:'Cormorant Garamond',Georgia,serif;letter-spacing:.09em}
.counter{min-width:130px;color:#a6a5b9;font-size:13px}.counter strong{color:#efe3c7;font-size:24px;font-weight:300;font-variant-numeric:tabular-nums}.counter-glyph{color:#d8bb93;font-size:18px;margin-right:4px}.counter-label{font-size:10px;letter-spacing:.2em}
.hint{font-family:'Noto Serif KR',serif;font-size:11px;color:#a4a2b8;text-align:center}.time-label{min-width:130px;text-align:right;font-size:12px;color:#acabc0;letter-spacing:.13em}
.toast{position:fixed;z-index:35;left:50%;top:90px;transform:translate(-50%,-6px);width:max-content;max-width:calc(100vw - 30px);text-align:center;padding:11px 20px;border:1px solid rgba(229,209,170,.27);border-radius:24px;color:#eae0ca;background:rgba(12,16,33,.9);box-shadow:0 14px 40px #0008;font:300 12px/1.5 'Noto Serif KR',serif;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s}.toast.show{opacity:1;transform:translate(-50%,0)}
.confirm-dialog{width:min(400px,calc(100vw - 34px));border:1px solid #b29e7c66;border-radius:18px;background:#12182a;color:#e9e1d3;text-align:center;box-shadow:0 25px 100px #000c;padding:28px 26px}.confirm-dialog::backdrop{background:rgba(0,0,0,.7);backdrop-filter:blur(7px)}.dialog-spark{font-size:26px;color:#ddc49c}.confirm-dialog h2{font-weight:300;font-size:20px;margin:12px 0}.confirm-dialog p{font-size:12px;color:#b9b7c7;line-height:1.9}.dialog-actions{display:flex;gap:10px;justify-content:center;margin-top:22px}.dialog-actions button{border:1px solid #ffffff38;border-radius:20px;padding:10px 18px;color:#e7e4e0;background:#ffffff0a;cursor:pointer;font-size:12px}.dialog-actions .danger{border-color:#caa8a877;color:#ffd2d2;background:#b6515122}
.noscript{position:fixed;z-index:40;bottom:70px;left:50%;transform:translateX(-50%);background:#192039;color:white;padding:18px}
@keyframes introIn {from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:620px){.topbar{padding:16px 14px;align-items:flex-start}.brand{gap:5px;margin-top:9px}.brand-icon{font-size:23px}.brand strong{font-size:13px;letter-spacing:.16em}.brand small{font-size:7px;letter-spacing:.13em}.toolbar{gap:4px}.tool{width:30px;height:30px;font-size:16px}.intro{padding:125px 19px 90px}.eyebrow{font-size:9px;letter-spacing:.18em;margin-bottom:24px}.intro h1{font-size:clamp(24px,6.6vw,37px);line-height:1.65}.intro-copy{font-size:11px}.intro-note{font-size:9px}.footerline{left:16px;right:16px;bottom:max(16px,env(safe-area-inset-bottom));align-items:flex-end}.counter{min-width:100px;font-size:11px}.counter strong{font-size:22px}.counter-label{display:none}.hint{position:absolute;left:0;right:0;bottom:40px;font-size:10px}.time-label{min-width:72px;font-size:10px}.poem{bottom:100px;padding:18px 15px 12px}.poem-text{font-size:14px}.toast{top:70px;font-size:11px}}
@media(max-width:360px){.brand small{display:none}.brand strong{font-size:11px}.toolbar{gap:3px}.tool{width:29px;height:29px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
