*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#030407;font-family:Georgia,Times New Roman,serif;overflow:hidden}:root{--bg:#fff4f9;--fog:#ffd9ec;--wall:#ffc2d8;--floor:#fff8fb;--wood:#f7a8c4;--flame:#ff5fa2;--flame-light:#ff7ab8;--text:#8c2f5e;--brass:#ffd166;--serif:Georgia, "Times New Roman", serif;--round:"Trebuchet MS", "Verdana", system-ui, sans-serif}.app{background:var(--bg);position:fixed;inset:0;overflow:hidden}.scene{position:absolute;inset:0}.scene canvas{width:100%;height:100%;display:block}.fade{pointer-events:none;background:#ffe3f2;position:absolute;inset:0}.vignette{pointer-events:none;background:radial-gradient(#ffffff1f 30%,#ffbee147 100%);position:absolute;inset:0}.grain{pointer-events:none;opacity:.5;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");animation:.9s steps(2,end) infinite grain-jitter;position:absolute;inset:-40%}@keyframes grain-jitter{0%{transform:translate(0)}50%{transform:translate(-1.5%,1%)}to{transform:translate(0)}}.hud{pointer-events:none;font-family:var(--round);color:var(--text);transition:opacity .8s;position:absolute;inset:0}.hud--hidden{opacity:0}.hud__loop{text-transform:uppercase;align-items:baseline;gap:.7em;display:flex;position:absolute;top:3.2vh;left:50%;transform:translate(-50%)}.hud__loop-label{letter-spacing:.62em;opacity:.42;margin-right:-.62em;font-size:11px;font-weight:700}.hud__loop-value{letter-spacing:.26em;opacity:.8;text-shadow:0 0 18px #8c2f5e38;margin-right:-.26em;font-size:27px;font-weight:700}.hud__timer{height:3px;position:absolute;bottom:0;left:0;right:0}.hud__heartbeat{transform-origin:0;background:#ffffff59;width:100%;height:100%;display:block;overflow:hidden}.hud__heartbeat-svg{width:100%;height:100%;display:block}.hud__timer--critical{animation:.85s ease-in-out infinite heartbeat-throb}@keyframes heartbeat-throb{0%,to{opacity:1;transform:scaleY(1)}12%{opacity:1;transform:scaleY(1.7)}30%{opacity:.8;transform:scaleY(1)}48%{opacity:1;transform:scaleY(1.35)}}.hud__prompt{opacity:0;transition:opacity .18s,transform .18s;position:absolute;top:55%;left:50%;transform:translate(-50%,-50%)scale(.88)}.hud__prompt--on{opacity:1;transform:translate(-50%,-50%)scale(1)}.hud__prompt-key{width:34px;height:34px;color:var(--text);font:700 15px/1 var(--round);background:#05060a6b;border:1px solid #8c2f5e8c;border-radius:3px;justify-content:center;align-items:center;animation:1.7s ease-in-out infinite prompt-pulse;display:inline-flex}@keyframes prompt-pulse{0%,to{opacity:.55}50%{opacity:1}}.overlay{text-align:center;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:3.4rem;display:flex;position:absolute;inset:0}.overlay--start{background:0 0;animation:1.6s both overlay-in}.title-veil{background:radial-gradient(at 50% 46%,#fff4f980 0%,#ffe3f2c7 55%,#ffd9ece6 100%);position:absolute;inset:0}.title--start{font-family:var(--round);letter-spacing:.06em;color:#ff4d97;text-shadow:0 0 44px #ffffffe6,0 4px #d6337a59;flex-direction:column;gap:.18em;margin:0;font-size:clamp(34px,7.2vw,88px);font-weight:700;line-height:1.02;animation:3.2s both title-start-in;display:flex;position:relative}.title--start span{animation:4.5s ease-in-out infinite title-bob}.title--start span:nth-child(2){color:#ff7ab8;animation-delay:.9s}.title--start span:nth-child(3){color:#b79cff;animation-delay:1.7s}.title-sub{opacity:0;align-items:center;gap:1.1em;animation:2.4s 1.9s both subtitle-in;display:flex;position:relative}.title-sub__rule{background:#8c2f5e47;width:56px;height:1px}.title-sub__text{font-family:var(--round);letter-spacing:.32em;text-indent:.32em;text-transform:lowercase;color:#8c2f5e9e;white-space:nowrap;font-size:11px;font-style:italic}.title-controls{opacity:0;justify-content:center;align-items:center;gap:.8em;animation:2s 2.8s both subtitle-in;display:flex;position:absolute;bottom:4.6vh;left:0;right:0}.title-controls__key{font-family:var(--round);letter-spacing:.2em;color:#8c2f5eb3;border:1px solid #8c2f5e47;border-radius:2px;padding:3px 8px;font-size:10px}.title-controls__word{font-family:var(--round);letter-spacing:.18em;text-transform:lowercase;color:#8c2f5e80;font-size:10px}.title-controls__dot{background:#8c2f5e47;border-radius:50%;width:3px;height:3px;margin:0 .5em}.hud__fps{color:#96c896b3;font-family:monospace;font-size:12px;position:absolute;bottom:10px;right:12px}@keyframes title-start-in{0%{opacity:0;filter:blur(6px);transform:translateY(14px)}to{opacity:1;filter:blur();transform:translateY(0)}}@keyframes title-bob{0%,to{transform:translateY(0)rotate(0)}30%{transform:translateY(-4px)rotate(-.6deg)}60%{transform:translateY(2px)rotate(.5deg)}}@keyframes subtitle-in{0%{opacity:0}to{opacity:1}}.overlay--win{background:radial-gradient(circle at 50% 44%,#ffe3f2 0%,#fff4f9 64%);animation:2.4s both overlay-in}.title{font-family:var(--round);letter-spacing:.14em;color:#ff4d97;text-shadow:0 0 34px #ffffffe6,0 4px #d6337a4d;margin:0;font-size:clamp(19px,4.1vw,44px);font-weight:700}.title--win{animation:4s both title-in}.brass-button{font-family:var(--round);letter-spacing:.34em;text-indent:.34em;text-transform:uppercase;color:#fff;cursor:pointer;background:linear-gradient(#ff7ab8 0%,#ff4d97 100%);border:1px solid #fff9;border-radius:999px;padding:15px 32px;font-size:13px;font-weight:700;transition:background .35s,box-shadow .35s,transform .15s;position:relative;box-shadow:0 4px #d6337a8c}.brass-button:hover,.brass-button:focus-visible{background:linear-gradient(#ff92c6 0%,#ff5fa2 100%);outline:none;box-shadow:0 4px #d6337a8c,0 0 26px #ff5fa273}.brass-button:active{transform:translateY(3px);box-shadow:0 1px #d6337a8c}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes title-in{0%{opacity:0;letter-spacing:.4em}40%{opacity:0}to{opacity:1;letter-spacing:.14em}}@media (prefers-reduced-motion:reduce){.grain,.title--start span,.hud__timer--critical,.hud__prompt-key{animation:none}.brass-button,.overlay--start,.overlay--win,.title--win{animation-duration:.01ms;animation-iteration-count:1}.hud__prompt{transition:opacity .01ms linear}}@media (height<=520px){.overlay{gap:1.6rem}.title--start{font-size:clamp(26px,6vh,48px)}.title-controls{bottom:2vh}.hud__loop{top:1.6vh}}
