:root{--cream:#f3ecdf;--ink:#5b4a33;--ink-soft:#5b4a339e;--glass:#fffbf38c;--line:#5b4a3329}*{box-sizing:border-box}html,body{background:var(--cream);height:100%;color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;margin:0;font-family:Cormorant Garamond,Iowan Old Style,Georgia,serif;overflow:hidden}body{background:radial-gradient(120% 85% at 50% 40%,#fbf7ef 0%,#f5eee2 45%,#ece2d1 78%,#e2d6c1 100%)}#stage{touch-action:none;position:fixed;inset:0}#stage canvas{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}#veil{background:var(--cream);pointer-events:none;transition:opacity 1.4s;position:fixed;inset:0}#veil.gone{opacity:0}#hint{left:50%;bottom:max(28px, calc(env(safe-area-inset-bottom) + 20px));letter-spacing:.06em;color:var(--ink-soft);pointer-events:none;white-space:nowrap;opacity:0;margin:0;font-size:clamp(17px,2.1vh,21px);font-style:italic;transition:opacity 1.6s,transform 1.6s;position:fixed;transform:translate(-50%)}#hint.show{opacity:1}#hint.gone{opacity:0;transform:translate(-50%,6px)}#controls{right:max(18px, env(safe-area-inset-right));top:max(18px, env(safe-area-inset-top));opacity:0;gap:8px;transition:opacity 1.4s .6s;display:flex;position:fixed}#controls.show{opacity:1}#controls button{border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);min-width:36px;height:36px;color:var(--ink-soft);font:inherit;letter-spacing:.08em;cursor:pointer;border-radius:18px;align-items:center;gap:6px;padding:0 11px;font-size:15px;transition:color .3s,background .3s,border-color .3s;display:inline-flex}#controls button:hover{color:var(--ink);background:#fffbf3cc;border-color:#5b4a3342}#controls button:focus-visible{outline:1.5px solid var(--ink-soft);outline-offset:2px}#controls #sound{justify-content:center;padding:0}#controls svg{fill:none;stroke:currentColor;stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round;width:17px;height:17px}#sound .cross,#sound[aria-pressed=true] .wave{display:none}#sound[aria-pressed=true] .cross{display:inline}@media (max-width:520px){#controls span{display:none}#controls #reset{justify-content:center;width:36px;padding:0}}@media (prefers-reduced-motion:reduce){#hint,#veil,#controls{transition:none}}
