*{box-sizing:border-box}:root{--bg:#0b0812;--bg-2:#141021;--ink:#efe6d8;--ink-dim:#efe6d8a3;--line:#efe6d824;--panel:#ffffff09;--accent:#ffb454;--accent-soft:#ffb45424;--serif:Georgia, "Iowan Old Style", "Palatino Linotype", "Book Antiqua", serif}.app[data-mood=night]{--accent:#b8a7ff;--accent-soft:#b8a7ff24}.app[data-mood=manor]{--accent:#ffb454;--accent-soft:#ffb45424}.app[data-mood=mirrors]{--accent:#8fd8ff;--accent-soft:#8fd8ff24}.app[data-mood=library]{--accent:#e3b579;--accent-soft:#e3b57924}.app[data-mood=ballroom]{--accent:#ffd28f;--accent-soft:#ffd28f24}.app[data-mood=feast]{--accent:#ff9e7a;--accent-soft:#ff9e7a24}.app[data-mood=garden]{--accent:#b7e6a3;--accent-soft:#b7e6a324}.app[data-mood=reveal]{--accent:#ffc4d6;--accent-soft:#ffc4d629}html,body{margin:0;padding:0}body{background:radial-gradient(1200px 800px at 50% -10%, #ffb45412, transparent 60%), radial-gradient(900px 700px at 85% 110%, var(--accent-soft), transparent 55%), linear-gradient(var(--bg), var(--bg-2) 55%, var(--bg));color:var(--ink);font-family:var(--serif);background-attachment:fixed;min-height:100dvh}.app{min-height:100dvh;position:relative;overflow-x:hidden}.topbar{z-index:5;pointer-events:none;justify-content:space-between;align-items:center;padding:14px 18px;display:flex;position:fixed;inset:0 0 auto}.wordmark{letter-spacing:.22em;text-transform:uppercase;color:var(--ink-dim);font-size:.82rem}.ghost{pointer-events:auto;border:1px solid var(--line);color:var(--ink);font-family:var(--serif);cursor:pointer;background:0 0;border-radius:999px;padding:6px 12px;font-size:.95rem;transition:border-color .25s,background .25s}.ghost:hover{border-color:var(--accent);background:var(--accent-soft)}.vignette{z-index:1;pointer-events:none;background:radial-gradient(120% 90% at 50% 40%,#0000 55%,#0000008c 100%);position:fixed;inset:0}.stage{z-index:2;flex-direction:column;max-width:680px;margin:0 auto;padding:96px 22px 140px;display:flex;position:relative}.title-stage{justify-content:center;min-height:100dvh;padding-top:60px;padding-bottom:60px}.title-card{text-align:center;flex-direction:column;align-items:center;gap:14px;animation:.9s both fadeUp;display:flex}.title-eyebrow{letter-spacing:.26em;text-transform:uppercase;color:var(--ink-dim);font-size:.8rem}.big-title{color:var(--ink);text-shadow:0 0 30px var(--accent-soft), 0 0 80px var(--accent-soft);margin:0;font-size:clamp(2.4rem,8vw,4.2rem);font-weight:500;line-height:1.08;animation:6s infinite flicker}.subtitle{color:var(--ink-dim);max-width:42ch;margin:0;font-size:clamp(1rem,2.6vw,1.15rem);font-style:italic}.title-buttons{flex-direction:column;gap:10px;width:min(360px,100%);margin-top:26px;display:flex}.title-hint{color:var(--ink-dim);margin:18px 0 0;font-size:.86rem}.title-footer{color:var(--ink-dim);letter-spacing:.04em;margin-top:34px;font-size:.9rem}.chapter{letter-spacing:.24em;text-transform:uppercase;color:var(--accent);margin-bottom:10px;font-size:.78rem;animation:.6s both fadeUp}.scene-title{margin:0 0 22px;font-size:clamp(1.7rem,5vw,2.5rem);font-weight:500;line-height:1.15;animation:.6s both fadeUp}.paragraphs{flex-direction:column;gap:16px;display:flex}.paragraph{color:var(--ink);margin:0;font-size:1.06rem;line-height:1.75;animation:.7s both fadeUp}.paragraph.letter{border-left:2px solid var(--accent);color:color-mix(in srgb, var(--ink) 88%, var(--accent));white-space:pre-line;padding-left:16px;font-style:italic}.choices{flex-direction:column;gap:10px;margin-top:34px;display:flex}.choice{text-align:left;background:var(--panel);border:1px solid var(--line);width:100%;color:var(--ink);font-family:var(--serif);cursor:pointer;border-radius:14px;align-items:baseline;gap:12px;padding:14px 18px;font-size:1.02rem;line-height:1.5;transition:border-color .25s,background .25s,transform .15s;animation:.6s both fadeUp;display:flex}.choice:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft);transform:translateY(-1px)}.choice:disabled{opacity:.55;cursor:default}.choice .num{color:var(--ink-dim);border:1px solid var(--line);border-radius:6px;flex:none;padding:1px 7px;font-size:.75rem;transform:translateY(-2px)}.choice .label{flex:1}.choice .memento-hint{opacity:.85;flex:none;font-size:1.05rem}.choice.primary{border-color:var(--accent);background:var(--accent-soft);justify-content:center;font-size:1.05rem}.choice.ghost{color:var(--ink-dim);justify-content:center}.chips{z-index:4;flex-wrap:wrap;gap:6px;max-width:52vw;display:flex;position:fixed;bottom:14px;left:14px}.chip{border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);white-space:nowrap;background:#0b0812b8;border-radius:999px;padding:4px 11px;font-size:.78rem}.toast{z-index:6;animation:.45s both toastIn,.4s 2.6s both toastOut;position:fixed;top:62px;left:50%;transform:translate(-50%)}.toast .chip{border-color:var(--accent);box-shadow:0 0 24px var(--accent-soft);padding:8px 16px;font-size:.9rem}.busy-veil{z-index:3;pointer-events:none;background:#0b081240;animation:.4s both veilIn;position:fixed;inset:0}.error-banner{z-index:7;background:#280c10e6;border:1px solid #ff787866;border-radius:12px;align-items:center;gap:12px;max-width:min(90vw,480px);padding:10px 14px;font-size:.9rem;animation:.4s both fadeUp;display:flex;position:fixed;top:56px;left:50%;transform:translate(-50%)}.epilogue{letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim);text-align:center;margin-top:26px;font-size:.8rem;animation:.7s both fadeUp}.recap{border:1px solid var(--line);background:var(--panel);border-radius:16px;margin-top:26px;padding:18px 20px;animation:.7s both fadeUp}.recap-title{letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:12px;font-size:.78rem}.recap-chips{flex-wrap:wrap;gap:8px;display:flex}.replay-hint{text-align:center;color:var(--ink-dim);margin-top:22px;font-style:italic;animation:.7s both fadeUp}.ending-actions{flex-direction:column;gap:10px;margin-top:24px;animation:.7s both fadeUp;display:flex}.lanterns{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.lantern{will-change:transform, opacity;filter:drop-shadow(0 0 8px var(--accent-soft));animation-name:floatUp;animation-timing-function:linear;animation-iteration-count:infinite;position:absolute;bottom:-6vh}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes flicker{0%,to{opacity:1}91%{opacity:1}92%{opacity:.72}93%{opacity:1}95%{opacity:.85}96%{opacity:1}}@keyframes floatUp{0%{opacity:0;transform:translate(0,0)rotate(0)}10%{opacity:var(--l-op,.5)}50%{transform:translate3d(var(--drift,0px), -52vh, 0) rotate(10deg)}90%{opacity:var(--l-op,.5)}to{transform:translate3d(calc(var(--drift,0px) * -.6), -108vh, 0) rotate(-8deg);opacity:0}}@keyframes toastIn{0%{opacity:0;transform:translate(-50%)translateY(-12px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes toastOut{to{opacity:0;transform:translate(-50%)translateY(-8px)}}@keyframes veilIn{0%{opacity:0}to{opacity:1}}@media (width<=560px){.chips{max-width:70vw}.stage{padding:84px 18px 150px}}.gate{justify-content:center;align-items:center;min-height:100dvh;padding:40px 18px 70px;display:flex;position:relative;overflow:hidden}.gate-sky{z-index:0;position:absolute;inset:0}.star{background:#fff8e7;border-radius:50%;animation:3.2s ease-in-out infinite twinkle;position:absolute}@keyframes twinkle{0%,to{opacity:.15}50%{opacity:.9}}.gate-moon{background:radial-gradient(circle at 34% 32%,#fff9e8,#f2e2ae 62%,#e6d08e);border-radius:50%;width:84px;height:84px;position:absolute;top:8%;right:10%;box-shadow:0 0 34px 10px #ffe29638,0 0 120px 42px #ffe2961a}.gate-card{z-index:1;text-align:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--line);background:#0a071299;border-radius:22px;width:100%;max-width:640px;padding:30px 26px 24px;position:relative;box-shadow:0 30px 80px #00000080}.gate-kicker{color:var(--accent);letter-spacing:.16em;text-transform:uppercase;margin:0 0 6px;font-size:12px}.gate-title{text-shadow:0 0 30px #ffb45438;margin:0;font-size:clamp(30px,6vw,44px);line-height:1.1}.gate-lede{max-width:46ch;color:var(--ink-dim);margin:12px auto 18px;font-size:15.5px;line-height:1.65}.gate-count{flex-wrap:wrap;justify-content:center;gap:10px;margin:6px 0 20px;display:flex}.plate{background:var(--panel);border:1px solid var(--line);border-radius:14px;min-width:72px;padding:10px 8px 8px}.plate b{font-variant-numeric:tabular-nums;color:var(--accent);font-size:32px;font-weight:600;line-height:1.1;display:block}.plate span{letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim);margin-top:4px;font-size:10px;display:block}.knock{cursor:pointer;color:var(--ink);border:1px solid var(--accent);font-family:var(--serif);background:0 0;border-radius:999px;padding:10px 24px;font-size:15px;transition:background .2s,transform .2s}.knock:hover{background:var(--accent-soft);transform:translateY(-1px)}.knock:active{transform:translateY(0)}.gate-whisper{min-height:22px;color:var(--ink-dim);margin:12px 0 0;font-size:14px;font-style:italic}.gate-manor{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;width:300px;height:160px;margin:6px auto 0;position:relative}.gate-manor span{position:absolute}.m-body{background:#06040b;border-radius:2px 2px 0 0;height:76px;bottom:0;left:56px;right:56px}.m-roof{clip-path:polygon(50% 0,100% 100%,0 100%);background:#06040b;height:44px;bottom:74px;left:40px;right:40px}.m-tower{background:#05030a;width:44px;height:118px;bottom:0;right:34px}.m-t-roof{clip-path:polygon(50% 0,100% 100%,0 100%);background:#05030a;width:64px;height:30px;bottom:116px;right:24px}.m-win{background:linear-gradient(#ffd98c,#ffb454);border-radius:7px 7px 2px 2px;width:15px;height:22px;animation:3.4s infinite win-flicker;box-shadow:0 0 12px #ffb4548c}.w1{bottom:34px;left:84px}.w2{animation-delay:.9s;bottom:34px;left:122px}.w3{animation-delay:1.7s;bottom:34px;left:160px}.w4{width:12px;height:26px;animation-delay:2.3s;bottom:56px;right:46px}@keyframes win-flicker{0%,to{opacity:.95}45%{opacity:.72}60%{opacity:.9}70%{opacity:.55}}.gate.opening .m-win{animation:2.2s ease-out forwards win-bloom}.gate.opening .gate-moon{animation:2.2s ease-out forwards moon-bloom}.gate.opening .gate-card{animation:2.4s ease-out both card-glow}@keyframes win-bloom{0%{opacity:.9;box-shadow:0 0 12px #ffb4548c}to{opacity:1;box-shadow:0 0 26px 6px #ffc46ed9}}@keyframes moon-bloom{0%{box-shadow:0 0 34px 10px #ffe29638,0 0 120px 42px #ffe2961a}to{box-shadow:0 0 60px 22px #ffe8aa73,0 0 180px 70px #ffe29633}}@keyframes card-glow{0%{border-color:var(--line)}to{border-color:#ffb45473}}.gate-footer{color:var(--ink-dim);opacity:.85;margin-top:16px;font-size:12.5px}.gate-fence{z-index:0;background:repeating-linear-gradient(90deg,#06040b 0 5px,#0000 5px 15px) bottom/15px 22px repeat-x;border-bottom:4px solid #06040b;height:30px;position:absolute;bottom:0;left:0;right:0}@media (width<=560px){.gate{padding-bottom:60px}.plate{min-width:62px}.plate b{font-size:24px}.gate-manor{transform-origin:bottom;transform:scale(.82)}.gate-moon{width:64px;height:64px;right:8%}}@media (prefers-reduced-motion:reduce){.lanterns{display:none}.big-title{animation:none}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
