@import url('fonts.css');
:root{color-scheme:dark;--bg:#0d1b22;--panel:#14262c;--line:#a5c6b326;--text:#e6e8d9;--muted:#9bb3a9;--gold:#d7bd83;--mint:#a7d5ba;font-family:'DM Sans',Arial,sans-serif;background:var(--bg);color:var(--text)}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:radial-gradient(ellipse at 20% 0,#233b36,transparent 60%),var(--bg)}button,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:wait}a{color:var(--gold)}button,a,textarea,summary{touch-action:manipulation}button:focus-visible,a:focus-visible,summary:focus-visible,canvas:focus-visible{outline:2px solid var(--mint);outline-offset:4px}button{color:var(--text);border:1px solid var(--line);background:#1c3338;border-radius:5px;padding:9px 13px}button:hover{background:#2b4646}.shell{max-width:1500px;margin:auto;padding:0 32px}.topbar{min-height:86px;display:flex;justify-content:space-between;align-items:center;gap:20px;border-bottom:1px solid var(--line);padding:14px 0}.brand{font:600 19px 'Cormorant Garamond',Georgia,serif;letter-spacing:1.7px;text-decoration:none;color:#eadfbd}.brand small{display:block;font:10px 'DM Sans',sans-serif;letter-spacing:2.2px;color:var(--muted);margin-top:6px}nav{display:flex;flex-wrap:wrap;align-items:center;gap:14px}nav a{font-size:13px;color:var(--muted);text-underline-offset:5px}nav button{font-size:13px;background:transparent}.eyebrow{color:var(--gold);font-size:11px;letter-spacing:2px;margin:0 0 9px}h1,h2{font-family:'Cormorant Garamond',Georgia,serif;font-weight:500}h1{font-size:clamp(36px,4vw,56px);line-height:1.04;margin:0}h2{font-size:28px;margin:0 0 14px}.primary,.secondary{padding:12px 19px;min-height:44px}.primary{background:var(--gold);border-color:#f0d49b;color:#162924;font-weight:600}.primary:hover{background:#edcf93}.secondary{background:#1a3437}.text-button{background:transparent;border:0;color:var(--gold);padding:8px 6px;font-size:13px}.muted,.privacy{font-size:12px;color:var(--muted);line-height:1.6}.privacy{margin-bottom:0}kbd{font-family:'IBM Plex Mono',monospace;font-size:11px;border:1px solid #b6c3ac42;border-radius:3px;padding:2px 4px;background:#ffffff09;color:inherit}.welcome{position:relative;display:grid;grid-template-columns:1fr 1fr;min-height:620px;margin-top:28px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#16262c}.welcome-art{order:2;position:relative}.welcome-art img{width:100%;height:100%;object-fit:cover;display:block}.welcome-art:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#16262c,transparent 35%),linear-gradient(0deg,#101e2780,transparent)}.welcome-copy{padding:65px 48px;align-self:center}.welcome-copy h1{font-size:clamp(64px,7vw,100px)}.welcome-copy p{color:#c1ccbd;line-height:1.8}.welcome-copy .lead{font:italic 26px 'Cormorant Garamond',Georgia,serif;color:var(--gold)}.welcome-actions{display:flex;gap:12px;flex-wrap:wrap;margin:28px 0 16px}.controls-note{display:grid;gap:11px;padding-top:15px;margin-top:25px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}.chapter-row{display:flex;justify-content:space-between;align-items:center;gap:25px;margin:30px 0 24px}.status{display:flex;align-items:center;gap:22px}.status>span:first-child{font-size:10px;letter-spacing:1.5px;width:180px}.status strong{float:right;font:13px 'IBM Plex Mono',monospace;letter-spacing:0}.status i{display:block;height:5px;background:#314643;margin-top:9px;border-radius:3px;overflow:hidden}.status b{height:100%;display:block;background:linear-gradient(90deg,#6b9789,#b7c994);transition:width .4s}.status #class-name{font:italic 22px 'Cormorant Garamond',Georgia,serif;color:var(--gold)}.status small{font-size:11px;color:var(--muted)}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) 315px;gap:25px;align-items:start}.world-column{min-width:0}.goal{display:flex;align-items:baseline;gap:20px;padding:16px 20px;background:#1c3234;border:1px solid var(--line);border-bottom:0;border-radius:9px 9px 0 0}.goal span{color:var(--gold);font-size:10px;letter-spacing:1.6px;white-space:nowrap}.goal p{font-size:15px;line-height:1.5;margin:0}.canvas-frame{position:relative;border:1px solid var(--line);background:#071318;overflow:hidden}canvas{display:block;width:100%;height:auto;touch-action:none}.transition{position:absolute;inset:0;pointer-events:none;background:#071318;opacity:0}.transition.flash{animation:room-change .5s ease-out}@keyframes room-change{0%{opacity:.88}100%{opacity:0}}.movement-bar{display:flex;align-items:center;gap:15px;padding:13px 17px;background:#172c30;border:1px solid var(--line);border-top:0;border-radius:0 0 7px 7px}.movement-bar>span{flex:1;color:var(--muted);font-size:12px}.movement-bar .secondary{padding:8px 12px;min-height:35px;font-size:13px}.touch-row{display:flex;align-items:center;gap:20px;padding:12px 0}.dpad{display:none;grid-template-columns:repeat(3,42px);grid-template-rows:repeat(2,38px);gap:4px}.dpad button{padding:4px;touch-action:none;user-select:none}.dpad [data-dir=n]{grid-column:2}.dpad [data-dir=w]{grid-column:1;grid-row:2}.dpad [data-dir=s]{grid-column:2;grid-row:2}.dpad [data-dir=e]{grid-column:3;grid-row:2}.exit-buttons{display:flex;flex-wrap:wrap;gap:8px;flex:1}.exit-buttons button{font-size:11px;background:transparent;padding:6px 10px;color:var(--muted)}.exit-buttons button.blocked{border-style:dashed;color:#b89e81}.encounter{padding:17px 21px;border:1px solid #cd92764d;border-radius:7px;background:#362c2a;margin:5px 0 16px}.encounter-top{display:flex;align-items:center;justify-content:space-between;gap:20px}.encounter-top p:last-child{margin:0;line-height:1.5;font-size:13px;color:#d5c5ab}.encounter-top strong{font:18px 'IBM Plex Mono',monospace;color:#efcb8c;white-space:nowrap}.threat-track{height:4px;background:#76645460;margin:13px 0 0}.threat-track div{height:100%;background:#e9b77a;width:100%}.interaction{padding:25px;border:1px solid var(--line);background:linear-gradient(130deg,#1e3739,#14292e);border-radius:9px;margin:10px 0 15px}.interaction-heading{display:flex;justify-content:space-between;align-items:start;gap:15px}.interaction-heading h2{margin-bottom:10px;font-size:32px}.interaction>p{font-size:14px;line-height:1.65;color:#bfcec0}.interaction form label{display:block;font-size:14px;color:#e4d8b4;margin-bottom:9px}.writing{display:flex;align-items:stretch;gap:10px}.writing textarea{width:100%;min-height:88px;resize:vertical;color:#e6e8d9;background:#0f2429;border:1px solid #b1c3ac40;border-radius:5px;font-size:16px;line-height:1.6;padding:12px 14px}.writing textarea:focus{outline:1px solid var(--gold);box-shadow:0 0 25px #e4bf7210}.writing .primary{align-self:end;min-width:95px}.writing .primary kbd{display:block;margin-top:3px}.action-buttons{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.action-buttons button{font-size:13px;line-height:1.5;padding:10px 12px;min-height:42px;text-align:left}.reply{padding:12px 15px;background:#b5cb9610;border-left:2px solid var(--gold);color:#e1d9b8!important;white-space:pre-line}.roll-stage{display:flex;align-items:center;gap:22px;padding:17px 20px;border:1px solid #d7bd8340;border-radius:7px;background:#10252a;margin:12px 0 20px}.die{font:600 28px 'Cormorant Garamond',Georgia,serif;display:grid;place-items:center;color:#f4db9e;background:linear-gradient(145deg,#426267,#19393e);width:62px;height:70px;flex-shrink:0;clip-path:polygon(50% 0,94% 25%,94% 75%,50% 100%,6% 75%,6% 25%)}.die.rolling{animation:die-spin .12s linear infinite}@keyframes die-spin{50%{transform:rotate(12deg) scale(.9)}}#roll-detail{font:12px 'IBM Plex Mono',monospace;color:#d1bd8b;margin:0 0 7px}#roll-outcome{font-size:14px;line-height:1.6;margin:0}.message{font-size:14px;line-height:1.7;color:#c9d3c2;min-height:24px;margin:7px 0 18px}.scene-card,.map-card,.inventory-card,.character-card,.journal-card{background:#172b30;border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-bottom:15px}.scene-card img{width:100%;height:178px;object-fit:contain;background:#09181e;display:block;animation:picture-breathe 12s ease-in-out infinite alternate}.scene-card p{font-size:13px;line-height:1.7;color:#bdcec2;margin:17px 19px}.map-card,.inventory-card,.character-card,.journal-card{padding:18px}.card-heading{display:flex;align-items:center;justify-content:space-between}.card-heading h2,.inventory-card h2{font-size:25px;margin:0 0 10px}.card-heading span{font-size:11px;color:var(--muted)}#map{width:100%;display:block}#map text{font:8px 'DM Sans',sans-serif;fill:#b5c2b5}.map-card>p{margin-bottom:0}.inventory{display:flex;flex-wrap:wrap;gap:7px}.inventory button{font-size:11px;border-color:#b6bb9555;padding:7px 10px;background:#263d3d}.inventory button.usable{color:#e7cf8f}.inventory span{font-size:11px;padding:7px 10px;background:#263d3d;border:1px solid #b6bb9528;border-radius:4px}.character-card summary,.journal-card summary{cursor:pointer;font-size:13px;color:#dbcdab}.character-card p{font-size:12px;line-height:1.6}.ability-row{display:flex;justify-content:space-between;font-size:12px;padding:12px 0;border-bottom:1px solid var(--line)}#journal{max-height:340px;overflow:auto}.journal-entry{padding:13px 0;border-bottom:1px solid var(--line)}.journal-entry strong{font-size:11px;color:var(--gold)}.journal-entry p{font-size:12px;line-height:1.7;margin:5px 0;color:#b5c7b9}.death,.completion{padding:28px;border:1px solid #c2a57266;background:#293837;border-radius:8px;margin:20px 0}.death p,.completion p{line-height:1.7;font-size:14px}footer{border-top:1px solid var(--line);margin-top:34px;padding:24px 0 30px;font-size:11px;letter-spacing:1.5px;color:var(--muted);display:flex;justify-content:space-between}footer span{letter-spacing:0}dialog{color:var(--text);background:#172a30;border:1px solid #b8c6a557;border-radius:10px;width:min(90vw,500px);padding:30px;box-shadow:0 30px 100px #0009}dialog::backdrop{background:#061319dd;backdrop-filter:blur(7px)}dialog p{font-size:14px;line-height:1.7;color:#bdcdbf}dialog h2{font-size:39px}.dialog-actions{display:flex;gap:12px;margin-top:22px}#intro-dialog{width:min(90vw,760px);padding:0;overflow:hidden}#intro-dialog img{display:block;width:100%;max-height:360px;object-fit:contain;background:#0a181e}.dialog-copy{padding:28px 32px}.dialog-copy h2{font-size:38px}@keyframes picture-breathe{from{filter:brightness(.95);transform:scale(.985)}to{filter:brightness(1.04);transform:scale(1)}}
@media(max-width:1100px){.play-layout{grid-template-columns:minmax(0,1fr) 265px;gap:17px}.shell{padding:0 22px}.status{gap:14px}.status small{display:none}.status>span:first-child{width:150px}.scene-card img{height:150px}.movement-bar{gap:9px}.movement-bar .text-button{font-size:11px}}@media(max-width:850px){.play-layout{grid-template-columns:1fr}.play-layout aside{display:grid;grid-template-columns:1fr 1fr;gap:14px}.scene-card{grid-row:span 2}.scene-card img{height:220px}.chapter-row{margin:22px 0 18px}nav{gap:8px}nav a{font-size:11px}.welcome-copy{padding:38px 30px}.welcome{min-height:560px}.movement-bar .text-button{font-size:13px}.dpad{display:grid}.touch-row{padding:13px 0}.status>span:first-child{width:135px}}@media(max-width:550px){.shell{padding:0 14px}.topbar{align-items:start;gap:10px;min-height:80px}.brand{font-size:15px;max-width:155px}.brand small{font-size:8px}nav{justify-content:flex-end;max-width:190px}nav button{font-size:11px;padding:6px 9px}nav a{font-size:10px}.welcome{grid-template-columns:1fr;min-height:0}.welcome-art{grid-row:1;height:210px}.welcome-art:after{background:linear-gradient(0deg,#16262c,transparent)}.welcome-copy{padding:24px 26px}.welcome-copy h1{font-size:65px}.welcome-copy p{font-size:14px}.chapter-row{align-items:start;gap:12px}.chapter-row h1{font-size:30px}.chapter-row .eyebrow{font-size:9px}.status{flex-direction:column;align-items:end;gap:8px;flex-shrink:0}.status #class-name{font-size:18px}.status>span:first-child{width:110px;font-size:8px}.status strong{font-size:10px}.goal{padding:12px 14px;gap:9px;align-items:start}.goal p{font-size:12px}.goal span{font-size:9px;margin-top:4px}.movement-bar{flex-wrap:wrap;padding:11px 13px}.movement-bar>span{flex-basis:100%;font-size:11px}.movement-bar .secondary{flex:1}.movement-bar .text-button{font-size:12px}.exit-buttons{gap:5px}.exit-buttons button{font-size:10px;padding:6px}.play-layout aside{grid-template-columns:1fr}.scene-card{grid-row:auto}.scene-card img{height:220px}.scene-card p{font-size:13px}.interaction{padding:19px 16px}.interaction-heading h2{font-size:28px}.writing{flex-direction:column}.writing .primary{align-self:stretch}.writing .primary kbd{display:inline}.interaction .action-buttons{flex-direction:column}.interaction .action-buttons button{text-align:left}.roll-stage{padding:13px;gap:13px}.encounter{padding:14px}#roll-detail{font-size:10px}.encounter-top strong{font-size:14px}.encounter-top p:last-child{font-size:12px}.dialog-actions{flex-direction:column}.dialog-copy{padding:22px}footer{font-size:9px;gap:15px}}@media(pointer:coarse){.dpad{display:grid}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
