:root{color-scheme:dark;--bg:#11100f;--panel:#1a1816;--panel-2:#24211e;--gold:#d8b56a;--gold-bright:#f1d18b;--text:#f4eee2;--muted:#a69c8d;--line:#39342e;--red:#c8665c;--green:#83aa81;--blue:#729bc6;font-family:'DM Sans',system-ui,sans-serif;background:var(--bg);color:var(--text);font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(ellipse at top,#24201c 0,#11100f 58%);padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}button,input{font:inherit}button{cursor:pointer;color:inherit}button:focus-visible,input:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.hidden{display:none!important}.welcome{position:fixed;inset:0;min-height:100dvh;display:flex;align-items:flex-end;overflow:auto;background:#0b0908}.welcome-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}.welcome-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(10,8,7,.94) 0%,rgba(10,8,7,.78) 39%,rgba(10,8,7,.12) 100%),linear-gradient(0deg,rgba(9,7,6,.88),transparent 68%)}.welcome-content{position:relative;z-index:1;width:min(620px,100%);padding:clamp(26px,7vw,76px);padding-bottom:clamp(72px,11vh,120px)}.eyebrow{margin:0;color:var(--gold);font-size:.68rem;letter-spacing:.17em;font-weight:700}.welcome h1,.setup h1,.location-heading h1{font-family:Cinzel,Georgia,serif;letter-spacing:.01em}.welcome h1{font-size:clamp(2.25rem,8vw,4.5rem);line-height:1.06;margin:.8rem 0}.welcome h1 span{color:var(--gold-bright)}.welcome-content>p:not(.eyebrow){max-width:340px;color:#ded3c1;line-height:1.6;margin:0 0 24px}.welcome-foot{position:absolute;bottom:24px;left:clamp(26px,7vw,76px);z-index:1;color:rgba(255,255,255,.54);letter-spacing:.18em;font-size:.61rem}.button{border:1px solid transparent;border-radius:12px;padding:14px 20px;font-weight:700;transition:transform .16s,background .16s}.button:active,.action-button:active{transform:scale(.98)}.button-gold{background:linear-gradient(135deg,#f0d291,#c79a4c);color:#20190e;box-shadow:0 8px 24px #b9893a30}.button-glass{display:block;margin-top:10px;background:#171411bb;border-color:#d7c7a555}.button-wide{width:100%;margin-top:20px}.text-button{border:0;background:none;color:var(--gold);font-size:.85rem;font-weight:600;padding:10px}.welcome-content .text-button{display:block;padding-left:0;margin-top:10px}.setup{width:min(680px,100%);margin:0 auto;padding:24px 20px 48px}.setup-heading{display:flex;align-items:center;gap:12px;margin:12px 0 32px}.setup h1{font-size:2rem;margin:4px 0 0}.icon-button{display:grid;place-items:center;width:42px;height:42px;border:1px solid var(--line);border-radius:50%;background:#211e1a;color:var(--gold);font-size:1.1rem}.field-label{display:block;margin:20px 0 9px;font-size:.83rem;font-weight:700;color:#e9dfce}.setup input{width:100%;height:50px;background:#1b1917;border:1px solid #494138;border-radius:10px;padding:0 14px;color:var(--text)}.class-picker{display:grid;gap:10px}.class-card{position:relative;display:grid;grid-template-columns:44px 1fr;grid-template-rows:auto auto auto;gap:2px 12px;text-align:left;padding:14px;background:#1b1917;border:1px solid #39342e;border-radius:13px}.class-card.selected{border-color:var(--gold);background:linear-gradient(110deg,#30271a,#1b1917)}.class-symbol{grid-row:1/4;align-self:center;color:var(--gold);font-size:1.7rem;text-align:center}.class-card b{font-size:.95rem}.class-card small,.class-stats{color:var(--muted);font-size:.75rem}.class-stats{color:var(--gold);margin-top:3px}.quiet-note{text-align:center;color:var(--muted);font-size:.74rem;line-height:1.5}.game-shell{width:min(980px,100%);margin:0 auto;padding:12px 16px 28px}.topbar{height:68px;display:flex;align-items:center;gap:12px}.brand-mark{width:40px;height:40px;display:grid;place-items:center;border:1px solid #9d7b44;border-radius:11px;color:var(--gold-bright);font-family:Cinzel,Georgia,serif;font-weight:700;background:linear-gradient(140deg,#47351e,#191512)}.campaign-heading{display:grid;gap:2px;flex:1}.campaign-heading .eyebrow{font-size:.56rem}.campaign-heading strong{font-family:Cinzel,Georgia,serif;font-size:.93rem}.campaign-heading small{color:var(--muted);font-size:.69rem}.topbar .icon-button{width:38px;height:38px;font-size:.8rem;letter-spacing:2px}.status-card{display:grid;grid-template-columns:1fr 1fr auto;gap:14px;align-items:center;margin:8px 0 12px;padding:13px 14px;border:1px solid #39342e;border-radius:14px;background:linear-gradient(110deg,#211d19,#191715)}.vitals{display:grid;grid-template-columns:1fr auto;gap:7px 8px}.vitals span,.level-chip span{font-size:.57rem;letter-spacing:.13em;color:var(--muted);font-weight:700}.vitals b{font-size:.72rem}.meter{grid-column:1/-1;height:6px;border-radius:8px;background:#39332d;overflow:hidden}.meter i{display:block;height:100%;width:100%;border-radius:inherit;background:linear-gradient(90deg,#a74e48,#de8771);transition:width .3s}.mana-vitals .meter i{background:linear-gradient(90deg,#456c9a,#86b4e2)}.level-chip{min-width:48px;padding-left:12px;border-left:1px solid var(--line);display:grid;justify-items:center;gap:2px}.level-chip b{font:700 1.15rem Cinzel,Georgia,serif;color:var(--gold-bright)}.level-chip small{font-size:.58rem;color:var(--muted)}.quest-strip{display:flex;align-items:center;gap:11px;margin:10px 0 20px;padding:11px 13px;background:#292219;border:1px solid #57452a;border-radius:12px}.quest-icon{color:var(--gold);font-size:1.1rem}.quest-strip div{display:grid;gap:2px;flex:1}.quest-strip small{font-size:.55rem;letter-spacing:.13em;color:#c2a66b}.quest-strip b{font-size:.8rem}.small-action{border:0;background:none;color:var(--gold);font-size:.72rem;font-weight:700;padding:8px}.location-heading{display:flex;align-items:end;justify-content:space-between;margin:0 1px 12px}.location-heading h1{font-size:1.5rem;margin:3px 0 0}.map-button{border:1px solid #514633;border-radius:9px;background:#241f18;color:var(--gold-bright);padding:9px 12px;font-size:.76rem}.map-panel{margin-bottom:14px;overflow:hidden;border:1px solid #39342e;border-radius:13px;background:#181614}.map-panel-head{display:flex;justify-content:space-between;align-items:center;padding:8px 12px}.map-panel-head b{font-size:.8rem}.map-scroll{overflow-x:auto;overscroll-behavior-x:contain;padding:8px 8px 2px;scrollbar-color:#594a34 #1b1917}.map-scroll svg{display:block;width:760px;max-width:none;height:auto}.map-hint{margin:6px 12px 10px;color:var(--muted);font-size:.67rem}.map-edge{stroke:#6c5a3c;stroke-width:4;fill:none}.map-edge.extra{stroke:#746141;stroke-width:2.5;stroke-dasharray:7 6}.map-room{cursor:pointer}.map-room rect{fill:#29241e;stroke:#665436;stroke-width:2}.map-room.current rect{fill:#40331d;stroke:#f0ca7b;stroke-width:3}.map-room.locked rect{fill:#252020;stroke:#82504b;stroke-dasharray:6 4}.map-room text{fill:#eee3d0;font:600 12px 'DM Sans',sans-serif;text-anchor:middle}.map-room .map-no{fill:#c7a15e;font-size:10px}.map-room .map-mark{fill:#f0ca7b;font-size:12px;font-weight:700}.combat-card{padding:13px 14px;margin:12px 0;border:1px solid #774841;border-radius:13px;background:linear-gradient(130deg,#321e1c,#1b1715)}.combat-card b{font-family:Cinzel,Georgia,serif;color:#ffd2c5}.enemy-meter{height:5px;margin-top:8px;background:#4b302c;border-radius:5px}.enemy-meter i{display:block;height:100%;background:#ce665e;border-radius:5px}.story-feed{display:flex;flex-direction:column;gap:9px;margin:14px 0;max-height:min(36vh,360px);overflow-y:auto;scrollbar-color:#544632 transparent}.story-entry{padding:12px 13px;border-radius:12px;background:#1b1917;border:1px solid #322e28;color:#e4dacb;font-size:.87rem;line-height:1.56;white-space:pre-wrap}.story-entry.mechanic{background:#201d18;border-left:3px solid #ab8a51;color:#cfc3ad;font-size:.77rem}.story-entry.system{background:#171b1f;border-left:3px solid #6588aa;color:#d2dfed;font-size:.78rem}.action-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:14px 0 22px}.action-button{min-height:50px;padding:11px 12px;border:1px solid #464037;border-radius:11px;background:linear-gradient(145deg,#29251f,#201e1b);text-align:left;font-weight:650;font-size:.84rem}.action-button.primary{border-color:#8e6d39;color:var(--gold-bright);background:linear-gradient(130deg,#392d1b,#28221a)}.action-button.danger{border-color:#70433f;color:#f0b0a5}.action-button:disabled{opacity:.42;cursor:not-allowed}.action-button small{display:block;margin-top:3px;color:var(--muted);font-size:.66rem;font-weight:400}.action-group-label{grid-column:1/-1;color:var(--muted);font-size:.59rem;letter-spacing:.13em;text-transform:uppercase;margin:5px 1px -2px}.bottom-bar{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #302c27;padding:11px 2px;color:var(--muted);font-size:.64rem}.bottom-bar .text-button{font-size:.7rem}.modal{width:min(500px,calc(100% - 26px));padding:0;border:1px solid #5c4d37;border-radius:16px;background:#1a1816;color:var(--text);box-shadow:0 24px 80px #000b}.modal::backdrop{background:#080706c9;backdrop-filter:blur(4px)}.modal-inner{position:relative;padding:22px}.modal h2{font:600 1.35rem Cinzel,Georgia,serif;margin:4px 30px 16px 0;color:var(--gold-bright)}.modal p,.modal li{font-size:.85rem;line-height:1.55;color:#d9cebd}.modal-close{position:absolute;right:12px;top:10px;width:36px;height:36px;border:0;background:none;color:var(--muted);font-size:1.6rem}.modal-action{display:block;width:100%;text-align:left;margin:6px 0;padding:11px;border:1px solid #454036;border-radius:9px;background:#24211e}.toast{position:fixed;z-index:10;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translate(-50%,15px);padding:10px 14px;background:#eee2c7;color:#241c10;border-radius:999px;font-size:.76rem;font-weight:700;opacity:0;pointer-events:none;transition:.2s}.toast.show{transform:translate(-50%,0);opacity:1}.file-button{display:inline-block;margin-top:10px}.hidden-file{display:none}@media(min-width:720px){.game-shell{padding:18px 26px 35px}.status-card{padding:15px 20px}.story-feed{max-height:340px}.action-panel{grid-template-columns:repeat(3,minmax(0,1fr))}.map-scroll svg{width:100%;height:auto}.welcome{align-items:center}.welcome-content{padding-bottom:70px}}@media(max-width:380px){.game-shell{padding-left:11px;padding-right:11px}.status-card{gap:8px;padding:11px}.action-button{font-size:.78rem;padding:10px}.campaign-heading strong{font-size:.81rem}}
