@import url('fonts.css');
:root{color-scheme:dark;--ink:#0b191e;--cream:#e8e4d3;--gold:#d9b879;--cyan:#a3dfce;--line:#adc6b22b;font-family:'DM Sans',Arial,sans-serif;background:var(--ink);color:var(--cream)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 25% 0,#22332e,var(--ink) 65%)}[hidden]{display:none!important}button,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.5}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--cyan);outline-offset:5px}a{color:var(--gold)}.shell{max-width:1480px;margin:auto;padding:0 36px}.topbar{min-height:82px;display:flex;align-items:center;justify-content:space-between;gap:22px;border-bottom:1px solid var(--line);padding:16px 0}.brand{font:600 20px 'Cormorant Garamond',Georgia,serif;letter-spacing:2px;text-decoration:none}.controls{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.controls a{font-size:14px;color:#b7cabc;text-underline-offset:5px}.quiet{padding:9px 13px;background:transparent;border:1px solid var(--line);border-radius:4px;color:#bdcfc1;font-size:14px}.quiet:hover,.secondary:hover{background:#294037}.eyebrow{font-size:14px;letter-spacing:2px;color:var(--gold)}h1,h2{font-family:'Cormorant Garamond',Georgia,serif;font-weight:500}h1{font-size:clamp(64px,7.5vw,108px);line-height:.92;letter-spacing:-2px;margin:26px 0 20px}h2{font-size:clamp(36px,4.3vw,62px);line-height:1.05;margin:12px 0}.start{min-height:650px;margin-top:28px;border:1px solid var(--line);border-radius:7px;background:linear-gradient(90deg,#08161bef,#08161b99 45%,#08161b18),url('assets/door.webp') center/cover;overflow:hidden}.start-copy{padding:54px;max-width:720px}.start p{line-height:1.8;font-size:17px;color:#c2cfc3}.start .subtitle{font:italic 28px 'Cormorant Garamond',Georgia,serif;color:var(--gold);margin:0 0 30px}.start-actions{display:flex;gap:14px;flex-wrap:wrap;margin:28px 0 18px}.primary,.secondary{border-radius:4px;padding:13px 23px;min-height:48px;font-size:16px;font-weight:500}.primary{background:var(--gold);color:#14221e;border:1px solid #eacf9a;box-shadow:0 4px 20px #0002}.primary:hover{background:#eacf9a}.secondary{background:#13272b;border:1px solid #ac997255;color:var(--cream)}.start .start-note{border-left:1px solid var(--gold);padding-left:18px;margin-top:32px}.muted,.start .privacy{color:#92aa9f;font-size:14px!important}.status-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 0}.vitality{width:250px;flex-shrink:0}.vitality>div:first-child{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px;font-size:14px;letter-spacing:1px}.vitality strong{font:16px 'IBM Plex Mono',monospace;letter-spacing:0}.meter{height:6px;background:#283d36;border-radius:3px;overflow:hidden}.meter>div{height:100%;width:100%;background:linear-gradient(90deg,#71987c,#b1d4a2);transition:width .4s ease-out}#class{font:italic 23px 'Cormorant Garamond',Georgia,serif;color:var(--gold)}.scene{position:relative;isolation:isolate;height:310px;border:1px solid var(--line);border-radius:7px 7px 0 0;overflow:hidden;background:#0c171c}.scene-motion,.art,.scene-shade,.combat-fx,.light-fx{position:absolute;inset:0;pointer-events:none}.scene-motion{z-index:-3}.art{background-size:cover;background-position:center 38%;animation:ambient 18s ease-in-out infinite alternate;transform:scale(1.025)}.scene-shade{z-index:-2;background:linear-gradient(0deg,#061419e8,transparent 85%),linear-gradient(90deg,#06141980,transparent 70%)}.scene-caption{position:absolute;left:34px;bottom:22px;right:25px}.scene-caption h2{margin:10px 0 0;text-shadow:0 2px 20px #000}.scene.revealing .scene-caption,.scene.revealing .enemy{opacity:0}.scene.revealing .scene-shade{opacity:.25}.scene-caption,.scene-shade,.enemy{transition:opacity .45s}.skip{position:absolute;right:22px;bottom:24px;background:#0b191ee8;z-index:5}.enemy{position:absolute;right:26px;top:23px;width:260px;padding:14px 16px;background:#0e1e23e8;border:1px solid #d9a57555;border-radius:5px;backdrop-filter:blur(8px)}.enemy>div:first-child{display:flex;justify-content:space-between;gap:10px;color:#efd1a6;font-size:14px}.enemy .meter{margin-top:12px;background:#49312e}.enemy .meter>div{background:linear-gradient(90deg,#b76355,#e9af78)}.enemy p{margin:8px 0 0;font-size:14px;color:#b9c5b6}.light-fx{opacity:0;z-index:-1;background:radial-gradient(ellipse at 15% 80%,#ffc56991,transparent 70%);transition:opacity .5s}.scene.torch-lit .light-fx{opacity:.58;animation:firelight 2.6s ease-in-out infinite}.scene.light-burst .light-fx{animation:flare 1s ease-out}.combat-fx{z-index:3}.impact{position:absolute;top:40%;right:23%;font:600 38px 'Cormorant Garamond',serif;color:#ffe8b6;opacity:0;pointer-events:none;text-shadow:0 2px 10px #000}.impact.show{animation:float-impact 1.2s ease-out}.play-surface{border:1px solid var(--line);border-top:0;background:linear-gradient(110deg,#17292b,#102025);border-radius:0 0 7px 7px;padding:27px 34px 0;box-shadow:0 16px 35px #0002}.narrative{max-width:95ch}.narrative p{font-size:18px;line-height:1.75;margin:0 0 20px;color:#ced8cc}.narrative .latest{color:#ead7b2;font:24px/1.45 'Cormorant Garamond',Georgia,serif;border-left:2px solid #d9b87966;padding-left:18px}.input-heading{display:flex;justify-content:space-between;gap:18px;align-items:center;padding-top:21px;border-top:1px solid var(--line);margin-bottom:15px}label{font-size:16px;color:var(--gold)}#keyboard-state{font:12px 'IBM Plex Mono',monospace;letter-spacing:1px;color:#8bc0b0}.writing-stage{position:relative;background:#08191d77;border:1px solid #b5c9ad33;border-radius:5px;overflow:hidden;transition:border-color .2s,box-shadow .2s}.writing-stage:focus-within{border-color:#d9b87988;box-shadow:0 0 25px #d9b8790e}textarea{display:block;resize:vertical;min-height:116px;max-height:220px;width:100%;padding:18px 20px;background:transparent;color:var(--cyan);border:0;outline:none;font:22px/1.6 'IBM Plex Mono',Consolas,monospace;caret-color:#f3d99a;text-shadow:0 0 14px #a3dfce22}textarea::placeholder{color:#6e9085;text-shadow:none;font-style:italic}textarea:disabled{opacity:.65}.key-ripple{position:absolute;left:0;bottom:0;height:2px;width:100%;background:linear-gradient(90deg,transparent,#eacf9a,transparent);transform:scaleX(0);opacity:0}.key-ripple.pulse{animation:key-wave .3s ease-out}.input-footer{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:16px 0 24px}.input-footer .primary{display:flex;gap:25px;align-items:center}kbd{font:12px 'IBM Plex Mono',monospace;border:1px solid currentColor;border-radius:3px;padding:3px 5px;opacity:.7}.text-button{background:none;border:0;color:#b7c9bc;font-size:14px;padding:9px 0;text-decoration:underline;text-underline-offset:5px}#action-count{margin-left:auto;font:12px 'IBM Plex Mono',monospace;color:#789889}.surface-rule{height:3px;background:linear-gradient(90deg,#d9b87977,#8dc3b540,transparent);margin:0 -34px}.choice-intro{color:#d6c9a7;font:italic 23px 'Cormorant Garamond',Georgia,serif}.options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}.path-choice{padding:19px 21px;min-height:65px;text-align:left;color:#e8e4d3;background:linear-gradient(110deg,#263b35,#192d2b);border:1px solid #d9b87955;border-radius:5px;font-size:17px;line-height:1.45;transition:background .2s,border-color .2s,transform .2s}.path-choice:hover{border-color:var(--gold);background:#30483c;transform:translateY(-2px)}#own-action{margin-bottom:20px}.below-game{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:23px 0}details{border-bottom:1px solid var(--line);font-size:16px;line-height:1.7;color:#b3c5b6}summary{cursor:pointer;color:#cfc9ae;padding:8px 0 15px;font-size:14px}.scores{display:flex;gap:18px;flex-wrap:wrap}.scores strong{font:25px 'Cormorant Garamond',serif;color:var(--gold)}.scores p{margin:0 0 12px;font-size:14px}.journal-entry{padding:10px 0;border-bottom:1px solid var(--line)}.journal-entry strong{font-size:14px;color:var(--gold)}.journal-entry p{margin:5px 0;font-size:15px;white-space:pre-wrap}.combat-stage{margin:18px 0 22px;border:1px solid #d9b87944;background:#0a1b20;padding:16px 20px;border-radius:5px}.roll-heading{display:flex;justify-content:space-between;font-size:14px;letter-spacing:1px;color:var(--gold);gap:12px}.roll-content{display:flex;align-items:center;gap:23px;min-height:116px}.die{display:grid;place-items:center;width:78px;height:87px;flex-shrink:0;clip-path:polygon(50% 0,95% 25%,95% 75%,50% 100%,5% 75%,5% 25%);background:linear-gradient(145deg,#f4d79a,#b18b4e);color:#16251f;font:600 34px 'Cormorant Garamond',Georgia,serif;filter:drop-shadow(0 5px 12px #000)}.die.rolling{animation:roll .28s linear infinite}#dice-detail{font:14px/1.5 'IBM Plex Mono',monospace;color:#a5bdb1;margin:12px 0}#roll-outcome{font-size:18px;line-height:1.5;color:var(--cream);margin:8px 0}.combat-stage.enemy-turn{border-color:#c7876666}.below-game p{overflow-wrap:anywhere}footer{padding:18px 0 26px;color:#799587;font-size:12px;letter-spacing:1px;display:flex;justify-content:space-between;gap:20px}footer span{font-style:italic;letter-spacing:0}dialog{max-width:520px;width:calc(100% - 32px);padding:36px;border:1px solid #d9b87966;border-radius:8px;background:linear-gradient(120deg,#20352f,#122329);color:var(--cream);box-shadow:0 30px 100px #0008}dialog::backdrop{background:#061217dd;backdrop-filter:blur(8px)}dialog p{font-size:17px;line-height:1.7;color:#bdcbbb}.dialog-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}dialog h2{font-size:44px}
@keyframes ambient{from{transform:scale(1.025) translateX(-.5%)}to{transform:scale(1.07) translateX(.5%)}}@keyframes firelight{0%,100%{opacity:.44}45%{opacity:.66}70%{opacity:.5}}@keyframes flare{0%,100%{opacity:.55}30%{opacity:1}}@keyframes key-wave{0%{opacity:.7;transform:scaleX(.1)}100%{opacity:0;transform:scaleX(1)}}@keyframes roll{50%{transform:rotate(25deg) scale(.8)}}@keyframes float-impact{10%{opacity:1}100%{opacity:0;transform:translateY(-35px)}}@keyframes strike{25%{background:#f4dda54d}100%{background:transparent}}@keyframes magic{30%{background:radial-gradient(ellipse at 65% 40%,#a3efdfbb,transparent 65%)}100%{background:transparent}}@keyframes hurt{25%{box-shadow:inset 0 0 100px #d25f4b99}100%{box-shadow:inset 0 0 0 transparent}}@keyframes recoil{30%{transform:translateX(13px) scale(.98);filter:brightness(1.6)}70%{transform:translateX(-3px)}}@keyframes lunge{35%{transform:scale(1.08) translateY(5px)}100%{transform:none}}.combat-fx.strike{animation:strike .65s ease-out}.combat-fx.magic{animation:magic .85s ease-out}.combat-fx.hurt{animation:hurt .7s ease-out}.scene-motion.recoil{animation:recoil .7s ease-out}.scene-motion.lunge{animation:lunge .7s ease-out}
@media(max-width:800px){.shell{padding:0 20px}.topbar{align-items:flex-start;flex-direction:column;gap:14px}.controls{width:100%;gap:10px}.status-row{flex-wrap:wrap;gap:14px}.status-row #save{display:none}.scene{height:290px}.scene-caption{left:22px;bottom:20px}.scene-caption h2{font-size:39px}.enemy{right:18px;top:18px;width:220px}.play-surface{padding:24px 22px 0}.surface-rule{margin:0 -22px}.input-heading{align-items:flex-start}#keyboard-state{font-size:11px;max-width:120px;text-align:right}.below-game{grid-template-columns:1fr;gap:10px}.start-copy{padding:36px}.vitality{width:210px}}
@media(max-width:480px){.shell{padding:0 14px}.brand{font-size:18px}.controls a,.quiet{font-size:13px}.quiet{padding:8px 10px}.start{min-height:650px;background-position:60% center}.start-copy{padding:32px 25px}.start-actions{flex-direction:column;align-items:stretch}.start-actions button{width:100%}.status-row{gap:12px}.vitality{width:155px}#class{font-size:21px}.scene{height:285px}.enemy{width:200px;padding:11px 13px}.scene-caption h2{font-size:34px}.scene-caption .eyebrow{font-size:12px}.play-surface{padding:22px 20px 0}.surface-rule{margin:0 -20px}.narrative p{font-size:17px}.narrative .latest{font-size:23px}.options{grid-template-columns:1fr}textarea{font-size:18px;padding:14px;min-height:125px}.input-footer{flex-wrap:wrap}.input-footer .primary{gap:15px}#action-count{display:none}.input-footer .text-button{max-width:55%;text-align:left}.roll-content{gap:16px}.die{width:61px;height:70px}.roll-heading{font-size:12px}#dice-detail{font-size:13px}#roll-outcome{font-size:17px}.combat-stage{padding:14px}footer{font-size:11px}.dialog-actions{flex-direction:column}.dialog-actions button{width:100%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.art{transform:none}.impact.show{opacity:1}}

.objective-panel{display:flex;align-items:baseline;gap:20px;border-bottom:1px solid var(--line);padding:0 0 17px;margin-bottom:21px}.objective-label{font-size:12px;letter-spacing:1.8px;color:var(--gold);white-space:nowrap}.objective-panel p{font-size:18px;line-height:1.5;margin:0;color:#eee5ca}.clues{display:flex;flex-wrap:wrap;gap:8px 22px;padding:0;margin:0 0 22px;list-style:none;color:#a7c3b2;font-size:14px;line-height:1.6}.clues li{padding-left:12px;border-left:2px solid #d9b87966}.example{color:#abc2b5;font-size:14px;line-height:1.6;margin:0 0 12px}.context-hint{font-size:16px;line-height:1.6;color:#f0dba8;border-left:2px solid var(--gold);padding:10px 15px;background:#d9b8790c;margin:0 0 15px}.threat{position:sticky;top:0;z-index:6;background:#25302c;border:1px solid #d9b87966;border-radius:5px;padding:12px 16px;margin:0 0 21px;box-shadow:0 6px 20px #0004}.threat-top{display:flex;align-items:center;justify-content:space-between;gap:15px;color:#edcd92;font-size:14px;letter-spacing:1px}.threat-top strong{font:26px 'IBM Plex Mono',monospace}.threat-track{height:4px;border-radius:2px;background:#75654f55;margin:9px 0;overflow:hidden}.threat-track>div{height:100%;background:var(--gold);width:100%;transition:width .18s linear}.threat p{font-size:14px;line-height:1.5;color:#c4c9b6;margin:6px 0 0}.threat.urgent{background:#352722;border-color:#d58866}.threat.urgent .threat-top{color:#ffba93}.threat.urgent .threat-track>div{background:#e3936a}.threat.combat{background:#302627;border-color:#c47a66}.threat.combat .threat-track{display:none}.threat.combat .threat-top strong{font:16px 'DM Sans',sans-serif;letter-spacing:1px}.scene.closing-in{border-color:#d58866}.scene.closing-in .scene-shade{box-shadow:inset 0 0 75px #a640322c}.scene-motion.search{animation:search .8s ease-out}.scene-motion.miss-sway{animation:miss-sway .7s ease-out}.combat-fx.reform{animation:reform .9s ease-out}@keyframes search{40%{transform:translateX(-12px)}100%{transform:none}}@keyframes miss-sway{30%{transform:translateX(-16px)}70%{transform:translateX(7px)}}@keyframes reform{30%{background:#879cbe50}65%{background:#07111999}100%{background:transparent}}@media(max-width:600px){.objective-panel{gap:8px;flex-direction:column}.objective-panel p{font-size:17px}.clues{gap:8px;font-size:14px;flex-direction:column}.threat{padding:11px 13px}.threat-top{font-size:12px}.threat p{font-size:13px}}
