:root{color-scheme:dark;--bg:#101e1b;--panel:#1b2b25;--ink:#ebe4d1;--muted:#a9b4a3;--gold:#d9b66f;--border:#c1ad7d33}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% -20%,#324839 0,transparent 60%),var(--bg);color:var(--ink);font:14px Manrope,system-ui,sans-serif;min-height:100dvh}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;touch-action:manipulation}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,textarea:focus-visible{outline:2px solid var(--gold);outline-offset:4px}[hidden]{display:none!important}.game{max-width:1140px;margin:auto;padding:0 30px}.masthead{height:100px;display:flex;align-items:center;border-bottom:1px solid var(--border);gap:24px}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:var(--gold);font:34px 'Cormorant Garamond',Georgia,serif}.brand span{font:600 10px/1.7 Manrope,sans-serif;letter-spacing:3px;color:var(--ink)}.edition{margin-left:auto;font-size:9px;letter-spacing:2px;color:var(--muted)}.icon-button{border:1px solid var(--border);border-radius:50%;width:36px;height:36px;background:transparent;color:var(--gold)}.player-strip{display:flex;align-items:center;padding:20px 0;gap:12px}.avatar{width:38px;height:42px;border:1px solid var(--border);display:grid;place-items:center;color:var(--gold);background:#43503844;border-radius:8px}.player-name{display:flex;flex-direction:column;gap:3px}.player-name strong{font-family:'Cormorant Garamond',Georgia,serif;font-size:22px}.player-name small{font-size:10px;color:var(--muted)}.level{font-size:10px;letter-spacing:1px;border:1px solid var(--border);padding:6px 8px;border-radius:5px;color:var(--gold)}.wallet{margin-left:auto;font-weight:600;color:var(--gold)}.layout{display:grid;grid-template-columns:1.05fr 1fr;gap:24px;margin-top:26px;align-items:start}.player-strip:not([hidden])+.layout{margin-top:0}.scene-wrap{border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--panel)}.scene{position:relative;height:470px;isolation:isolate;overflow:hidden;background:linear-gradient(#486c60,#87916a 50%,#394e36 51%,#1c3324)}.scene-caption{position:absolute;left:24px;top:22px;z-index:4;text-shadow:0 2px 6px #17261e}.small-label{font-size:9px;letter-spacing:2px;color:var(--gold);font-weight:700}.scene h1{font:500 37px/1.1 'Cormorant Garamond',Georgia,serif;margin:9px 0}.sun{position:absolute;top:75px;right:70px;width:65px;height:65px;border-radius:50%;background:#eee3a8;box-shadow:0 0 70px #e4db9b66}.mountains{position:absolute;left:-5%;width:110%;height:270px;top:95px;clip-path:polygon(0 85%,10% 50%,20% 65%,29% 10%,39% 44%,46% 23%,61% 62%,74% 21%,81% 48%,93% 29%,100% 80%,100% 100%,0 100%);background:#526e59}.mountains.front{top:180px;background:#354f39;transform:scaleX(-1)}.woodland{position:absolute;inset:0;opacity:.65;background:repeating-linear-gradient(88deg,transparent 0 28px,#223e2b 29px 36px,transparent 37px 90px);mask-image:linear-gradient(transparent 30%,#000 45%,#000 75%,transparent)}.ground{position:absolute;left:0;right:0;bottom:0;height:140px;background:repeating-linear-gradient(0deg,#263b26 0 9px,#293f27 10px 12px)}.path{position:absolute;bottom:0;height:138px;width:70%;left:12%;background:#9c8e5d;opacity:.45;clip-path:polygon(48% 0,54% 0,100% 100%,0 100%)}.hero-sprite{position:absolute;z-index:3;bottom:44px;width:235px;height:auto;left:18%;image-rendering:pixelated;filter:drop-shadow(0 7px 5px #09120bb8);animation:idle 3s ease-in-out infinite;transform-origin:50% 90%}.enemy{position:absolute;right:1%;bottom:44px;width:45%;z-index:4}.enemy img{width:100%;height:auto;image-rendering:pixelated;transform:scaleX(-1);filter:sepia(.3) saturate(.8) brightness(.8) drop-shadow(0 7px 6px #08180e)}.enemy-label{font-size:10px;text-align:center;background:#0e211cc9;padding:8px;border:1px solid var(--border);border-radius:6px;margin-bottom:10px}.enemy-label .meter{margin-top:6px}.scene.in-battle .hero-sprite{left:0;width:52%}.scene.inspect .hero-sprite{left:18%;width:64%;bottom:35px}.scene.attacking .hero-sprite{animation:lunge .35s ease}.meter{height:4px;background:#071a15;border-radius:8px;overflow:hidden}.meter i{height:100%;display:block;background:#c18d65;width:100%;transition:width .45s ease}.health i{background:#8bb177}.scene-bottom{position:absolute;left:20px;right:20px;bottom:17px;display:flex;justify-content:space-between;z-index:8;color:#e4dfbe;font-size:9px;letter-spacing:1.7px}.vignette{position:absolute;inset:0;z-index:5;pointer-events:none;box-shadow:inset 0 0 120px #0b231a66}.fireflies i{position:absolute;z-index:5;width:3px;height:3px;left:17%;top:66%;background:#eff2a4;box-shadow:0 0 12px #ebed9a;animation:float 5s infinite alternate}.fireflies i:nth-child(2){left:80%;top:50%;animation-delay:-2s}.fireflies i:nth-child(3){left:37%;top:44%;animation-delay:-3s}.fireflies i:nth-child(4){left:65%;top:76%;animation-delay:-4s}.vitals{padding:19px 22px;display:grid;grid-template-columns:1fr 1fr;gap:22px}.vitals span{display:block;font-size:11px;margin-bottom:9px;color:#baceaa}.vitals small{font-size:9px;color:var(--muted)}.story-card{border:1px solid var(--border);border-radius:16px;background:linear-gradient(140deg,#26352a77,#14251e77);padding:24px;min-height:470px}.card-top{display:flex;justify-content:space-between;padding-bottom:18px;border-bottom:1px solid var(--border)}.sparkle{color:var(--gold)}.story{white-space:pre-line;line-height:1.8;max-height:270px;overflow:auto;margin:21px 0;color:#d7ddcc;scrollbar-width:thin}.story h2{font:500 36px/1.12 'Cormorant Garamond',Georgia,serif;color:var(--ink)}.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.actions button{background:#40513a55;min-height:46px;text-align:left;border:1px solid #8c9e6b44;border-radius:8px;padding:11px 13px;font-size:11px;transition:background .2s,transform .15s}.actions button:hover{background:#68774755;border-color:#bba26777}.actions button:active{transform:translateY(1px)}.actions button:nth-child(-n+2){border-color:#d7b36a66}.actions button.wide{grid-column:1/-1}.message-form label{font-size:11px;color:var(--muted)}textarea{display:block;width:100%;resize:vertical;max-height:150px;background:#0e211e88;color:var(--ink);border:1px solid var(--border);border-radius:8px;padding:12px;font:13px/1.6 inherit;margin:8px 0 12px}.primary{width:100%;padding:13px 16px;border-radius:8px;border:1px solid #dabf84;background:#cfaf6d;color:#19291e;font-weight:700;display:flex;justify-content:space-between}.connection{font-size:11px;min-height:18px;margin-top:12px;color:#e3bd8a}.connection:empty{margin:0;min-height:0}nav{margin:24px 0 0;display:flex;justify-content:space-around;border:1px solid var(--border);border-radius:12px;padding:8px;background:#13241e}nav button{background:none;border:0;color:#8b9e89;font-size:22px;min-width:60px;min-height:52px}nav button span{display:block;font-size:10px;margin-top:3px}nav button.selected{color:var(--gold)}footer{text-align:center;font-size:8px;letter-spacing:2px;color:#81917c;padding:28px}dialog{background:#1c3026;color:var(--ink);border:1px solid var(--border);border-radius:18px;padding:32px;max-width:390px;width:calc(100% - 32px);text-align:center}dialog::backdrop{background:#050e0bd9;backdrop-filter:blur(5px)}dialog h2{font:30px 'Cormorant Garamond',Georgia,serif}dialog p{font-size:12px;line-height:1.7;color:var(--muted)}.dialog-close{position:absolute;right:12px;top:10px;background:none;border:none;font-size:24px}.tap-target{display:block;margin:26px auto;background:radial-gradient(#5c8154,#264a2f);border:1px solid #a3bf7366;color:#c2e18d;font-size:100px;width:160px;height:160px;border-radius:50%;box-shadow:0 0 70px #6a954a22;transition:transform .12s}.tap-target:active{transform:scale(.92)}.tap-progress{display:flex;gap:8px;justify-content:center}.tap-progress i{width:10px;height:10px;border:1px solid #b9cd8c66;border-radius:50%}.tap-progress i.filled{background:var(--gold);box-shadow:0 0 8px #d9b66f66}@keyframes idle{50%{translate:0 -4px}}@keyframes float{to{translate:15px -30px;opacity:.1}}@keyframes lunge{50%{translate:28px -7px;rotate:4deg}}@media(max-width:700px){.game{padding:0 16px 75px}.masthead{height:70px}.brand{font-size:28px}.brand span{font-size:8px;letter-spacing:2px}.edition{display:none}.icon-button{margin-left:auto}.player-strip{padding:13px 0}.layout{grid-template-columns:1fr;gap:14px;margin-top:18px}.scene{height:290px}.scene-caption{left:18px;top:17px}.scene h1{font-size:28px}.hero-sprite{width:160px;left:30%;bottom:25px}.enemy{bottom:25px;width:40%;right:4%}.scene.in-battle .hero-sprite{width:42%;left:8%}.scene.inspect .hero-sprite{height:230px;width:auto;left:28%;bottom:20px}.sun{top:38px;right:43px;width:44px;height:44px}.mountains{top:40px;height:190px}.mountains.front{top:100px}.ground{height:100px}.path{height:100px}.story-card{min-height:unset;padding:18px}.story{margin:15px 0;max-height:200px;font-size:13px;line-height:1.7}.card-top{padding-bottom:12px}.actions button{min-height:47px;font-size:11px}.vitals{padding:13px 17px}.scene-bottom{bottom:12px;font-size:8px}nav{position:fixed;left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:20;box-shadow:0 -4px 30px #07160dcc;margin:0;padding:4px}footer{padding:20px 0 10px}.avatar{height:34px;width:32px}.player-name strong{font-size:19px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}body.reduce-motion *{animation:none!important}
.scene.night{filter:brightness(.65) saturate(.8)}.scene.traveling .woodland{animation:journey 1.1s ease}.scene.traveling .hero-sprite{animation:idle .15s 6}.unknown-enemy:after{content:"?";display:block;text-align:center;font:100px Georgia;color:#b7ba8e;text-shadow:0 0 30px #bec38977}.unknown-enemy .enemy-label{position:relative;z-index:2}@keyframes journey{0%{transform:translateX(0);opacity:1}45%{transform:translateX(-50px);opacity:.2}55%{transform:translateX(50px);opacity:.2}100%{transform:translateX(0);opacity:1}}
.actions{display:block}.action-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:8px 0}.action-row:has(>button:only-child){grid-template-columns:1fr}.actions button strong{display:block;font-size:12px;font-weight:600}.actions button small{display:block;white-space:pre-line;font-size:10px;line-height:1.6;color:var(--muted);margin-top:6px}nav [data-icon]{display:block;margin:0}nav [data-label]{display:block;font-size:10px}#road-map{height:290px;border:1px solid var(--border);border-radius:10px;background:radial-gradient(ellipse at center,#425a4166,#192f2966);position:relative;margin:14px 0;overflow:hidden}#road-map svg{width:100%;height:100%;touch-action:none}.map-controls{position:absolute;right:8px;bottom:8px;display:flex;gap:5px}.map-controls button,#travel-choice button{padding:9px 16px;background:var(--gold);color:#23362b;border:0;border-radius:5px}#travel-choice{border:1px solid var(--border);padding:12px;border-radius:8px;font-size:12px;margin:12px 0}.player-strip{flex-wrap:wrap}#xp-summary{width:100%;font-size:10px;color:var(--muted);padding-left:48px}#world-date{letter-spacing:0}body[data-theme=parchment]{--bg:#d3c39c;--ink:#302b22;--muted:#5d614b;--gold:#b08a40;--border:#665e3655;background:#d3c39c}.game{transition:background .2s}body[data-theme=parchment] .story-card,body[data-theme=parchment] nav,body[data-theme=parchment] dialog{background:#e0d1ab;color:#302b22}body[data-theme=parchment] .story{color:#302b22}body[data-theme=parchment] .actions button{color:#302b22;background:#bfae8055}body[data-theme=night]{--bg:#10151f;--panel:#1c2534;--gold:#a6bad4;--muted:#a4b4c9;background:#10151f}body[data-theme=night] .story-card,body[data-theme=night] nav{background:#192435}.woodland:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(78deg,transparent 0 38px,#12392a33 39px 42px,transparent 43px 69px);opacity:.7}.ground:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 20% 60%,#a6b27888 0 2px,transparent 3px),radial-gradient(ellipse at 80% 70%,#9eae6888 0 2px,transparent 3px);background-size:33px 24px,51px 36px}.hero-sprite{image-rendering:pixelated}.scene-bottom{gap:8px;flex-wrap:wrap;font-size:9px}
#dice-display{position:absolute;z-index:12;left:15px;bottom:50px;max-width:calc(100% - 30px);padding:9px 12px;border:1px solid #c6b17d;border-radius:7px;background:#192a24ee;color:#e8d7a6;font:11px monospace}.rolling{animation:roll-die .3s linear infinite}@keyframes roll-die{50%{transform:translateY(-5px) rotate(5deg)}}
.scene.illustrated{background-size:cover;background-repeat:no-repeat;background-color:#5d7852;transition:background-position .8s ease}.scene.illustrated>.sun,.scene.illustrated>.mountains,.scene.illustrated>.woodland,.scene.illustrated>.ground,.scene.illustrated>.path{display:none}.scene.illustrated .scene-caption{text-shadow:0 2px 8px #14251c}.scene.illustrated .hero-sprite{filter:drop-shadow(0 8px 4px #14231c88)}.craft-card{padding:14px;border:1px solid var(--border);border-radius:10px;margin:12px 0;background:#31452c33}.craft-card h3{margin:0 0 8px;font:21px Georgia,serif}.craft-card p{font-size:12px;margin:5px 0;color:var(--muted)}.craft-card .met{color:#a8c58c}.craft-card .missing{color:#d4a58b}.craft-card button{margin-top:10px;padding:11px 17px;background:var(--gold);color:#21362a;border:0;border-radius:5px}.map-caption{position:absolute;left:10px;top:8px;padding:3px 6px;background:#e9dcb8dd;color:#403b2c;font-size:10px}#road-map.map-expanded{position:fixed;inset:4vh 3vw;width:94vw;height:92vh;z-index:100;background:#d6c9a3;box-shadow:0 0 0 100vmax #0009}.map-controls{z-index:3}.map-controls button{padding:8px 10px;font-size:12px}
.hero-body{display:block;width:100%;height:auto;image-rendering:pixelated}.hero-weapon{position:absolute;width:auto;max-width:none;pointer-events:none;image-rendering:pixelated}.scene.inspect .hero-sprite{height:auto;width:min(64%,240px)}

/* Grounded travel shares one road coordinate system with the character. */
.travel-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}.scene.grounded-travel #hero-figure{visibility:hidden;animation:none}.scene.grounded-travel>.sun,.scene.grounded-travel>.mountains,.scene.grounded-travel>.woodland,.scene.grounded-travel>.ground,.scene.grounded-travel>.path{display:none}.scene.grounded-travel .fireflies{display:none}.scene.grounded-travel .scene-caption{z-index:4}.scene.grounded-travel{transition:none}
