@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--paper:#eae7da;--muted:#909e98;--gold:#cba26b;--line:rgba(204,211,191,.16);--panel:rgba(14,24,23,.87);--sans:'Manrope',sans-serif;--serif:'Cormorant Garamond',Georgia,serif}*{box-sizing:border-box}body{margin:0;background:#101918;color:var(--paper);font-family:var(--sans);font-size:13px;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}button:focus-visible{outline:2px solid #e9bd7f;outline-offset:5px}button:disabled{cursor:default;opacity:.5}button, .class-card{transition:background .2s,border-color .2s,transform .2s}button:hover:not(:disabled){filter:brightness(1.15)}[hidden]{display:none!important}#world,#world canvas,.vignette,#app{position:absolute;inset:0;width:100%;height:100%}#world canvas{display:block}.vignette{pointer-events:none;background:linear-gradient(90deg,rgba(8,16,16,.86),transparent 42%,transparent 63%,rgba(8,16,16,.5)),linear-gradient(0deg,rgba(8,16,16,.8),transparent 35%,transparent 75%,rgba(8,16,16,.65))}#app{pointer-events:none}button,nav,.class-panel,.quest-panel,#modal,.ability-bar{pointer-events:auto}header{height:100px;display:flex;align-items:center;justify-content:space-between;padding:0 42px;border-bottom:1px solid var(--line);position:relative;z-index:5}.wordmark{text-align:left;font-family:var(--serif);font-weight:600;letter-spacing:4px;font-size:23px;position:relative;padding-left:42px}.wordmark small{display:block;font-family:var(--sans);font-size:8px;letter-spacing:3px;color:var(--muted);margin-top:3px}.brand-icon{position:absolute;left:0;top:0;font-size:40px;color:var(--gold);line-height:40px}nav{height:100%;display:flex;gap:35px}.nav{height:100%;position:relative;font-size:12px;color:#9ca8a0}.nav.active{color:var(--paper)}.nav.active:after{content:'';position:absolute;height:2px;bottom:0;left:0;right:0;background:var(--gold)}.nav span{border:1px solid var(--line);font-size:9px;padding:2px 5px;margin-left:5px}.wallet{display:flex;gap:9px;align-items:center;font-size:10px;color:#a1ada4}.wallet #gold{font-size:13px;color:var(--paper)}.coin{color:var(--gold);font-size:23px}.wallet i{height:16px;width:1px;background:var(--line);margin:0 7px}.save-dot,.status-dot{width:5px;height:5px;background:#8bbaa7;border-radius:50%;display:inline-block}.class-panel{position:absolute;left:42px;top:clamp(125px,17vh,185px);width:285px}.eyebrow{font-size:9px;letter-spacing:2.5px;font-weight:700;color:var(--muted)}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:500}.class-panel h1{font-size:clamp(36px,4.1vw,57px);line-height:1.03;margin:17px 0}.intro{color:#a5afa7;line-height:1.9;font-size:12px;margin-bottom:30px}.section-label{display:flex;gap:12px;align-items:center;font-size:10px;letter-spacing:1.3px;color:var(--gold);margin-bottom:15px}.section-label span{color:#b7bfb4;font-size:9px;font-weight:700}.class-card{display:flex;width:100%;align-items:center;text-align:left;padding:18px 16px;border:1px solid var(--line);margin-bottom:10px;background:rgba(20,32,29,.7);position:relative;gap:16px}.class-card.selected{border-color:#b59b69;background:linear-gradient(110deg,rgba(156,129,77,.18),rgba(21,35,31,.75))}.class-card:hover{background:rgba(65,80,67,.5)}.class-icon{width:35px;font-size:35px;text-align:center;color:#a1b5a8}.selected .class-icon{color:#dbc394}.class-card strong{font-family:var(--serif);font-size:26px;font-weight:500;display:block;line-height:1.05}.class-card small{font-size:8px;letter-spacing:1.6px;color:var(--gold);display:block;margin-top:6px}.class-card p{font-size:9px;color:#93a199;margin-top:8px}.selection-dot{width:6px;height:6px;border:1px solid #829284;border-radius:50%;position:absolute;right:15px;top:20px}.selected .selection-dot{background:var(--gold);border-color:var(--gold);box-shadow:0 0 10px #cba26b77}.class-summary{padding:12px 1px;color:#8e9d93}.class-summary span{font-size:8px;letter-spacing:1.7px}.class-summary p{font-size:10px;line-height:1.8;margin-top:7px;max-width:260px}.character-label{position:absolute;text-align:center;left:34%;right:30%;bottom:105px;pointer-events:none;text-shadow:0 2px 12px #000}.character-label h2{font-size:36px;margin:5px 0}.character-label>span:not(.eyebrow){font-size:10px;letter-spacing:1px;color:#b0b7a7}.ornament{color:#b19765;font-size:13px;letter-spacing:4px;margin-top:15px}.quest-panel{position:absolute;right:42px;top:clamp(130px,18vh,190px);width:302px;background:var(--panel);border:1px solid var(--line);box-shadow:0 20px 60px #0003;backdrop-filter:blur(12px)}.quest-panel>.section-label{padding:17px 18px;margin:0;border-bottom:1px solid var(--line);gap:8px}.section-label .live-tag{margin-left:auto;color:#7f8e85;font-size:7px;letter-spacing:1px}.quest-art{height:145px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 90%,#63837755,transparent 70%),linear-gradient(140deg,#283c36,#111e20);border-bottom:1px solid var(--line)}.quest-art:before,.quest-art:after{content:'';position:absolute;bottom:-20px;width:150px;height:110px;background:#172923;transform:rotate(27deg);left:-60px;box-shadow:20px -35px 0 #1c302b,45px -42px 0 #1a2a27}.quest-art:after{left:auto;right:-80px;transform:rotate(-28deg)}.moon{position:absolute;width:35px;height:35px;border-radius:50%;background:#b4c4a7;opacity:.55;right:45px;top:15px;box-shadow:0 0 40px #bdceab44}.crypt-door{width:85px;height:113px;border-radius:55px 55px 0 0;border:11px solid #3a4d43;background:linear-gradient(#080e10,#152524);position:absolute;bottom:-8px;left:107px;box-shadow:0 0 0 7px #253a31,0 0 30px #82cbb211;display:grid;place-items:center}.crypt-door span{color:#9edacc;font-size:26px;text-shadow:0 0 15px #7adbbb}.art-caption{position:absolute;left:17px;bottom:15px;font-size:7px;letter-spacing:1.7px;z-index:1;color:#c3cec0}.chapter{font:70px var(--serif);position:absolute;right:20px;bottom:-15px;color:#8caa8c28}.quest-content{padding:24px}.gold-text{color:var(--gold);font-size:8px;letter-spacing:1.8px}.quest-content h2{font-size:39px;line-height:1.04;margin:12px 0}.quest-content>p{font-size:11px;line-height:1.8;color:#9ba99e}.mission-stats{display:flex;gap:18px;padding:18px 0;border-bottom:1px solid var(--line);color:var(--gold);font-size:14px}.mission-stats b{font-size:9px;color:#b1baae;font-weight:400;margin-left:4px}.reward-row{padding:18px 0;display:flex;flex-direction:column;gap:8px}.reward-row>span{font-size:7px;letter-spacing:1.7px;color:#819185}.reward-row strong{font-size:11px;color:#d1bc91;font-weight:500}.reward-row i{font-style:normal;padding:0 8px;color:#65746a}.primary{width:100%;background:#c8ac78;color:#17231d;padding:16px 20px;text-align:left;font-size:12px;font-weight:800;border:1px solid #dbc28d;display:flex;justify-content:space-between;align-items:center}.primary span{font-size:18px;font-weight:400}.quest-content>.quest-note{text-align:center;font-size:8px;color:#819083;margin-top:12px}footer{position:absolute;left:42px;right:42px;bottom:0;height:64px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:9px;color:#829187;gap:20px}footer>span:first-child{font-size:8px;letter-spacing:1.6px;display:flex;align-items:center;gap:9px}footer b{border:1px solid var(--line);font-size:7px;padding:3px 5px;font-weight:400}footer button{font-size:10px;color:#bdc5b6}footer button span{margin-left:15px;color:var(--gold)}#loading{position:absolute;inset:0;z-index:50;background:#101918;display:flex;align-items:center;justify-content:center;flex-direction:column;transition:opacity .5s}#loading h1{letter-spacing:8px;font-size:32px;margin:15px}.sigil{font-size:70px;color:var(--gold);animation:pulse 2s infinite}#loading p{color:var(--muted);font-size:11px;letter-spacing:2px}@keyframes pulse{50%{opacity:.4}}body.playing .vignette{background:radial-gradient(ellipse,transparent 45%,#070e1260)}#hud{position:absolute;inset:0}.player-hud{position:absolute;left:32px;top:30px;display:flex;align-items:center;gap:13px}.hud-class{border:1px solid #a68e60;background:#17231ecc;width:55px;height:55px;display:grid;place-items:center;font-size:32px;color:#d2bb8c;transform:rotate(-5deg)}.health-wrap{width:215px}.health-heading{display:flex;justify-content:space-between;font-size:10px;letter-spacing:1px}.health-heading span{color:#becbb9;font-size:9px;letter-spacing:0}.health-track{height:7px;background:#17251b;border:1px solid #84967940;margin-top:8px}#health-bar{height:100%;width:100%;background:#b2c394;transition:width .2s}.hud-weapon{font-size:9px;color:#8e9f94;margin-top:7px}.objective{position:absolute;top:31px;left:50%;transform:translateX(-50%);text-align:center;min-width:250px}.objective h3{font-size:26px;margin:6px 0}.objective>span{font-size:10px;color:#adbbac}.pause-button{position:absolute;right:30px;top:30px;background:#17231ecc;border:1px solid var(--line);padding:10px 14px;font-size:15px}.pause-button span{font-size:9px;color:var(--muted);margin-left:10px}.ability-bar{position:absolute;bottom:45px;left:50%;transform:translateX(-50%);display:flex;gap:7px}.ability{position:relative;overflow:hidden;min-width:117px;border:1px solid #9baf9050;background:#111e1de8;padding:10px 13px;text-align:left;min-height:82px}.ability kbd{font:8px var(--sans);letter-spacing:1px;display:block;color:#e4c38d;margin-bottom:7px}.ability strong{font-size:10px;display:block;font-weight:500}.ability small{font-size:8px;color:#91a193;display:block;margin-top:5px}.cooldown-cover{position:absolute;bottom:0;left:0;width:100%;background:#c1d3ba18;pointer-events:none}.game-hint{position:absolute;bottom:17px;text-align:center;width:100%;font-size:8px;letter-spacing:1px;color:#acb7a8}.game-hint span{color:#6f8477;letter-spacing:0;margin:0 7px}#crosshair{position:absolute;top:50%;left:50%;font-size:22px;color:#fff8;transform:translate(-50%,-50%)}#damage-flash{position:absolute;inset:0;box-shadow:inset 0 0 150px #ba302a;opacity:0;pointer-events:none;transition:opacity .2s}#boss-hud{position:absolute;top:118px;left:50%;width:360px;transform:translateX(-50%);text-align:center;font-size:9px;letter-spacing:3px;color:#d6bc9b}.boss-track{height:5px;background:#221c18;margin-top:10px;border:1px solid #bf9c6d44}#boss-bar{height:100%;width:100%;background:#c49b68}#interact{position:absolute;bottom:155px;left:50%;transform:translateX(-50%);background:#12221eeb;border:1px solid #a7946b;padding:13px 22px;display:flex;align-items:center;gap:12px;font-size:11px}kbd{border:1px solid #84917c55;padding:3px 5px;border-radius:2px}.ability kbd{border:0;padding:0}#toast-area{position:absolute;top:110px;right:32px;display:flex;flex-direction:column;gap:8px;width:300px;z-index:40}.toast{background:#172821f2;border:1px solid #9cab7b50;border-left:2px solid var(--gold);padding:15px 18px;box-shadow:0 5px 25px #0004;animation:toast .3s ease-out}.toast strong{font-size:11px;display:block;color:#dfcb9b}.toast p{font-size:10px;color:#a7b5a4;line-height:1.6;margin-top:5px}@keyframes toast{from{transform:translateX(20px);opacity:0}to{transform:none;opacity:1}}#modal-backdrop{position:absolute;inset:0;background:#06100fbb;backdrop-filter:blur(10px);z-index:30;display:flex;justify-content:center;align-items:center;pointer-events:auto}#modal{width:min(780px,90vw);max-height:84vh;overflow:auto;background:linear-gradient(135deg,#1b2a26,#101d1b);border:1px solid #82937b55;padding:38px;position:relative;box-shadow:0 25px 100px #0008}#modal h2{font-size:42px;margin:8px 0 12px}#modal .close{position:absolute;right:20px;top:17px;font-size:24px;color:#a7b7a3}#modal .subtext{font-size:12px;line-height:1.8;color:#9eae9f;margin-bottom:24px;max-width:590px}.inventory-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.item-card{padding:19px;background:#0e1b17;border:1px solid #73836c55;position:relative}.item-card.rare{border-color:#649a9d88}.item-card.epic{border-color:#b18eae88}.item-card h3{font-size:24px;margin:7px 0}.item-card .eyebrow{font-size:8px}.item-card p{font-size:10px;color:#a8b5a4;line-height:1.7}.item-card button{margin-top:14px;padding:8px 13px;background:#c8ac781c;border:1px solid #c8ac7855;font-size:10px;color:#d6c397}.item-card button:disabled{color:#93b39c;border-color:#688b6b}.modal-footer{margin-top:24px;padding-top:18px;border-top:1px solid var(--line);font-size:10px;color:#8c9d8c;line-height:1.8}.guide-grid{display:grid;grid-template-columns:1fr 1fr;gap:25px}.guide-grid h3{font-size:25px;margin-bottom:12px}.guide-row{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:10px 0;font-size:10px;color:#a4b5a3}.guide-row kbd{font-size:9px;color:#e0c692}.guide-grid p{font-size:11px;line-height:1.9;color:#a4b5a3}.result-icon{font-size:40px;color:var(--gold);margin-bottom:10px}.result-stats{display:flex;gap:30px;margin:25px 0}.result-stats strong{font:32px var(--serif);display:block;color:#e4d5b3}.result-stats span{font-size:9px;color:#8e9d8f;letter-spacing:1px}.result-actions{display:flex;gap:12px;margin-top:25px}.secondary{border:1px solid #82937b55;padding:14px 24px;font-size:11px;white-space:nowrap}.enemy-label{position:absolute;transform:translate(-50%,-100%);width:46px;height:4px;background:#171b16;border:1px solid #6a765555;pointer-events:none}.enemy-label>div{height:100%;background:#c0b079}.damage-number{position:absolute;font:600 24px var(--serif);color:#efe0b3;text-shadow:0 2px 4px #000;pointer-events:none}.rare-text{color:#8dc3cb!important}.epic-text{color:#c8a5d1!important}#small-screen{display:none}
@media(min-height:900px){.quest-art{height:175px}.quest-content{padding:28px}.class-card{padding:22px 18px}.intro{margin-bottom:42px}.character-label{bottom:130px}}
@media(max-height:760px) and (min-width:900px){header{height:78px}.class-panel{top:104px}.class-panel h1{font-size:42px}.intro{margin-bottom:19px}.class-card{padding:13px}.class-summary{padding-top:5px}.quest-panel{top:106px}.quest-art{height:100px}.quest-content{padding:18px}.quest-content h2{font-size:33px;margin:10px 0}.mission-stats{padding:12px 0}.reward-row{padding:12px 0}.primary{padding:12px 18px}.character-label{bottom:88px}}
@media(max-width:1100px){header{padding:0 25px}nav{gap:20px}.wallet #save-status{display:none}.class-panel{left:25px;width:250px}.quest-panel{right:25px;width:275px}.class-card p{font-size:8px}.class-panel h1{font-size:43px}.character-label{left:30%;right:29%}footer{left:25px;right:25px}footer>span:nth-child(2){display:none}}
@media(min-width:540px) and (max-width:899px){header{height:80px;padding:0 22px}.wordmark{font-size:19px;letter-spacing:2px;padding-left:32px}.brand-icon{font-size:31px}.wordmark small{font-size:6px;letter-spacing:1.5px}nav{gap:14px}.nav{font-size:10px}.wallet{display:none}.class-panel{left:22px;right:22px;top:108px;width:auto}.class-panel>.eyebrow,.intro,.class-summary,.class-panel>.section-label{display:none}.class-panel h1{font-size:35px;margin:0 0 20px}.class-panel h1 br{display:none}.class-panel h1 br:after{content:' '}.class-card{display:inline-flex;width:calc(50% - 5px);padding:15px 13px;vertical-align:top}.class-card+.class-card{margin-left:6px}.class-card strong{font-size:25px}.class-card small{font-size:7px}.class-card p{font-size:8px}.class-icon{width:25px;font-size:29px}.quest-panel{top:auto;bottom:80px;left:22px;right:22px;width:auto}.quest-panel>.section-label{padding:13px 18px}.quest-art{display:none}.quest-content{padding:19px;min-height:167px;position:relative}.quest-content>.eyebrow{font-size:7px}.quest-content h2{font-size:32px;max-width:230px;margin:11px 0}.quest-content>p:not(.quest-note){display:none}.mission-stats{padding:0;border:0;gap:10px}.mission-stats b{font-size:8px}.reward-row{position:absolute;right:19px;top:20px;padding:0;width:185px}.reward-row strong{font-size:10px}.quest-content .primary{position:absolute;right:19px;top:77px;width:185px;padding:13px 15px;font-size:11px}.quest-content>.quest-note{position:absolute;right:19px;top:124px;width:185px;font-size:7px}.character-label{left:20%;right:20%;bottom:324px}.character-label h2{font-size:30px}.character-label>.eyebrow,.character-label .ornament{display:none}footer{height:60px;left:22px;right:22px}.player-hud{left:18px;top:20px}.health-wrap{width:145px}.hud-class{width:42px;height:46px}.objective{top:90px;min-width:220px}.objective h3{font-size:23px}.objective .eyebrow{font-size:7px}.pause-button{right:18px;top:20px}#boss-hud{top:174px;width:280px}.ability-bar{gap:4px;bottom:48px}.ability{min-width:98px;padding:9px 9px}.ability strong{font-size:9px}.game-hint{font-size:6px;letter-spacing:.2px}.game-hint span{margin:0 4px}#toast-area{top:170px;right:20px;width:250px}.guide-grid{gap:18px}#modal{padding:28px}.vignette{background:linear-gradient(0deg,#081010aa,transparent 45%,transparent 60%,#081010cc)}}
@media(max-width:539px){#small-screen{display:flex;position:absolute;inset:0;background:#101c19f5;z-index:60;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:40px}#small-screen>span{font-size:70px;color:var(--gold)}#small-screen h2{font-size:40px;margin:20px 0}#small-screen p{font-size:12px;line-height:1.9;color:var(--muted);max-width:330px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.camera-tools{position:absolute;right:30px;bottom:158px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end;width:300px;pointer-events:auto}.camera-tools>span{width:100%;text-align:right;color:#b8c7b4;font-size:9px;letter-spacing:1px}.camera-tools button{background:#12231ee8;border:1px solid #7b92795c;padding:9px 11px;font-size:10px}.camera-tools button.locked{border-color:#d7bc7b;color:#e9cf99}.camera-tools kbd{border:0;padding:0 6px 0 0;font-size:9px;color:#d7bd8a}.camera-tools small{font-size:8px;color:#a4b59f;line-height:1.6;width:100%;text-align:right}#lock-target{position:absolute;transform:translate(-50%,-50%);font-size:36px;color:#efcd8c;text-shadow:0 0 14px #dfba6c;pointer-events:none;line-height:1}#cover-basic{background:#dfc49920}@media(max-width:899px){.camera-tools{right:18px;bottom:154px;width:245px}.camera-tools small{font-size:7px}.camera-tools button{padding:8px;font-size:9px}}

.item-card .stack-count{color:var(--gold);font-weight:600;margin-bottom:6px}

.weapon-icon{display:block;width:70px;height:112px;image-rendering:pixelated;flex-shrink:0;filter:drop-shadow(3px 5px 0 #0005)}
.item-card>.weapon-icon{float:right;margin:0 0 10px 10px;width:50px;height:80px}
.reward-reveal{text-align:center;padding:8px 5px}.reward-art{display:grid;place-items:center;width:250px;height:250px;margin:18px auto 24px;background:radial-gradient(ellipse,#7cbfc225,transparent 70%);border:1px solid #8dc3cb30;box-shadow:inset 0 0 45px #0003}
.reward-art .weapon-icon{width:125px;height:200px;transform:rotate(18deg);filter:drop-shadow(5px 8px 0 #0006)}
.epic .reward-art{background:radial-gradient(ellipse,#be91df35,transparent 70%);border-color:#c8a5d155;box-shadow:0 0 40px #ac7ec018,inset 0 0 45px #0003}
.epic .reward-art .weapon-icon{filter:drop-shadow(0 0 12px #c7a1ef66) drop-shadow(5px 8px 0 #0006)}
.reward-reveal .subtext{margin:10px auto 18px;max-width:410px}.reward-power{font-size:18px;color:var(--gold)}.reward-saved{font-size:11px;line-height:1.8;color:#a8c3ad;margin-bottom:22px}.reward-reveal .primary{margin:auto;min-width:220px;justify-content:center;gap:30px}.reward-safety{font-size:10px;color:#98ad9f;margin-top:16px}
@media(max-height:760px){.reward-art{width:170px;height:170px;margin:12px auto}.reward-art .weapon-icon{width:88px;height:140px}.reward-reveal #modal-title{font-size:32px}.reward-reveal .subtext{margin-bottom:12px}}

.inventory-button{position:absolute;right:120px;top:30px;background:#17231ecc;border:1px solid var(--line);padding:12px 14px;font-size:11px;display:flex;align-items:center;gap:8px}.inventory-button kbd{padding:0;border:0;color:var(--gold)}.inventory-resume{margin-top:20px;width:100%;justify-content:space-between}
@media(max-width:900px){.inventory-button{top:20px;right:105px;padding:12px 10px;font-size:10px}}

.item-card .trash-button{color:#e1a89c;border-color:#a6655655;background:#9e443316}.trash-confirm{margin-top:14px;padding:12px;border:1px solid #a6655655;background:#9e443310}.trash-confirm p{color:#e1b6a9}

html:fullscreen{width:100%;height:100%;background:#101918}.settings-button{position:absolute;right:30px;top:82px;background:#17231ecc;border:1px solid var(--line);padding:9px 14px;font-size:10px}.result-actions{flex-wrap:wrap}@media(max-width:900px){.settings-button{right:20px;top:70px}}


.board-art{background:linear-gradient(135deg,#4a3827,#241e19);display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:16px 30px;border:8px solid #6c5537;box-shadow:inset 0 0 30px #0008;height:170px}.board-art:before,.board-art:after{display:none}.board-paper{background:#c2ae81;color:#453d2d;text-align:center;font:25px var(--serif);transform:rotate(-5deg);position:relative;padding:3px}.board-paper:before{content:'';position:absolute;top:3px;left:50%;width:4px;height:4px;background:#8a4b35;border-radius:50%}.board-paper span{display:block;font:6px var(--sans);letter-spacing:1px}.paper-two,.paper-three{transform:rotate(4deg);background:#dfcba2}.dungeon-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.dungeon-card{position:relative;display:flex;flex-direction:column;padding:20px;background:#0f1b19;border:1px solid var(--dungeon-color)}.dungeon-card h3{font-size:29px;margin:8px 0}.dungeon-card p{font-size:11px;color:#aab9af;line-height:1.7;margin-bottom:12px}.dungeon-card .eyebrow{color:var(--dungeon-color);font-size:8px}.dungeon-card .dungeon-mechanic{color:#d8d9c7}.dungeon-reward{font-size:10px;color:var(--gold);margin-top:auto;padding:14px 0}.dungeon-card-map{height:130px;display:flex;justify-content:center;margin-bottom:15px;background:radial-gradient(ellipse,#9aacbb12,transparent 70%)}.route-map{height:100%;max-width:100%;overflow:visible}.route-panel{position:absolute;top:135px;right:30px;width:125px;background:#101f1cdd;border:1px solid var(--line);padding:12px;pointer-events:none}.route-panel #dungeon-map{height:155px;text-align:center}.route-panel small{display:block;font-size:8px;line-height:1.5;text-align:center;color:#c4cbb9;margin-top:8px}.board-panel .quest-note{line-height:1.6}@media(max-width:899px){.board-panel .board-art{display:none}.route-panel{top:245px;right:18px;width:85px;padding:8px}.route-panel #dungeon-map{height:110px}.dungeon-grid{gap:10px}.dungeon-card{padding:13px}.dungeon-card h3{font-size:25px}}@media(max-width:650px){.dungeon-grid{grid-template-columns:1fr}.route-panel{top:auto;bottom:280px}.dungeon-card-map{height:95px}}

/* Reserve a notification strip below dialogs, away from close and action buttons. */
#toast-area, #toast-area .toast { pointer-events: none; }
#modal-backdrop:not([hidden]) { padding: 20px 0 90px; }
#modal-backdrop:not([hidden]) #modal { max-height: min(84vh, calc(100dvh - 130px)); }
#app:has(#modal-backdrop:not([hidden])) #toast-area {
  top: auto;
  right: auto;
  bottom: 16px;
  left: 50%;
  transform: translateX(-50%);
  width: min(600px, calc(100% - 32px));
  max-height: 56px;
}
#app:has(#modal-backdrop:not([hidden])) #toast-area .toast {
  display: none;
  padding: 8px 14px;
  animation: none;
}
#app:has(#modal-backdrop:not([hidden])) #toast-area .toast:last-child { display: block; }
#app:has(#modal-backdrop:not([hidden])) #toast-area .toast strong,
#app:has(#modal-backdrop:not([hidden])) #toast-area .toast p {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 16px;
}
#app:has(#modal-backdrop:not([hidden])) #toast-area .toast p { margin-top: 3px; }

.chase-label{color:#e3bf79!important;font-size:10px;line-height:1.6;margin:8px 0}.reward-reveal .chase-label{max-width:420px;margin:10px auto}.chase-notice{margin:4px 0 16px;padding:14px 0;border-top:1px solid #98703e38}.chase-preview{display:flex;align-items:center;gap:12px;margin-top:12px}.chase-preview .weapon-icon{width:25px;height:40px;margin:0;flex-shrink:0}.chase-preview strong{font-size:11px;display:block}.chase-preview small{font-size:9px;display:block;color:#66513a;margin-top:3px}#modal[data-panel="quests"] .chase-notice>p{font-size:9px;margin:12px 0 0}

#fps-counter{position:fixed;top:5px;right:8px;z-index:1000;pointer-events:none;font:10px/1.2 monospace;font-variant-numeric:tabular-nums;color:#e5ebdf;text-shadow:0 1px 3px #000,0 0 3px #000;opacity:.8}
#modal[data-panel="settings"]{width:min(500px,92vw)}
.settings-list{margin:24px 0 28px}
.setting-row{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 0;border-bottom:1px solid var(--line)}
.setting-row h3{font:600 14px var(--sans);color:var(--paper);margin-bottom:7px}
.setting-row p,.settings-note{font-size:11px;line-height:1.7;color:#a4b5a3}
.setting-toggle{flex:0 0 68px;padding:11px 12px;border:1px solid #82937b66;border-radius:5px;background:#0c1714;color:#b8c4ba;font-size:11px}
.setting-toggle[aria-checked="true"]{background:#b9c89c;color:#1a291e;border-color:#cddab7}
.setting-toggle:disabled{opacity:.45}
#settings-done{width:100%;justify-content:center}.settings-note{margin-top:14px;text-align:center}

/* Account forms share the existing parchment modal. */
.account-fields{display:grid;gap:16px;max-width:460px;margin:24px 0}
.account-field{display:grid;gap:7px;font-size:14px;font-weight:600}
.account-field input,.account-field select{width:100%;box-sizing:border-box;padding:12px 14px;border:1px solid #756449;border-radius:4px;background:#fff8e2;color:#29271f;font:inherit}
.account-field input:focus,.account-field select:focus{outline:2px solid #426b61;outline-offset:2px}
#account-mode{margin:12px 0;display:block}#account-message{min-height:24px;font-weight:600}
.account-conflict button{margin:12px 10px 12px 0}.account-sync{font-weight:600}

/* Three-class playtest: keep the extra card and ability within the viewport. */
.class-card{padding-top:12px;padding-bottom:12px}
@media(min-width:900px) and (max-height:850px){.class-panel{top:115px}.class-panel h1{font-size:38px;margin:12px 0}.class-panel .intro{margin-bottom:12px}.class-summary{margin-top:12px}.class-card p{display:none}}
@media(max-width:899px){.class-card{width:calc(33.333% - 8px);padding:10px}.class-card small{font-size:7px}.class-card .class-icon{font-size:22px}.class-card p{display:none}.ability-bar:has(#ability-three:not([hidden])) .ability{min-width:78px;padding:9px 7px}}

/* Keep all Ninja controls visible, including on smaller laptop screens. */
.playing.ninja-playing .ability-bar{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));width:min(960px,calc(100% - 32px))}
.playing.ninja-playing .ability-bar .ability{min-width:0;padding:10px 8px}
.playing.ninja-playing #ability-two{order:1}.playing.ninja-playing #ability-four{order:2}.playing.ninja-playing #ability-one{order:3}.playing.ninja-playing #ability-three{order:4}.playing.ninja-playing #ability-five{order:5}.playing.ninja-playing .ability-bar>div:nth-last-child(2){order:6}.playing.ninja-playing #potion-button{order:7}
@media(max-width:760px){.playing.ninja-playing .ability-bar{grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.playing.ninja-playing .ability{min-height:61px;padding:6px}.playing.ninja-playing .camera-tools{bottom:205px}}

#ninja-fatigue{display:block;margin-top:7px;font-size:10px;line-height:1.5;color:#f1b89a;background:#231c20dd;padding:4px 7px;border-radius:3px}#ninja-fatigue[hidden]{display:none}

.weapon-power-label{color:#efcf88!important;border-left:2px solid #bfa062;padding-left:9px;margin:10px 0}#weapon-ability{border-color:#dcc17e88}#weapon-ability:disabled{opacity:.8}.ability-bar:has(#weapon-ability:not([hidden])){width:min(850px,calc(100% - 24px));display:grid;grid-template-columns:repeat(6,minmax(0,1fr))}.ability-bar:has(#weapon-ability:not([hidden])) .ability{min-width:0;padding:10px 8px}@media(max-width:760px){.ability-bar:has(#weapon-ability:not([hidden])){grid-template-columns:repeat(3,minmax(0,1fr))}.playing:has(#weapon-ability:not([hidden])) .camera-tools{bottom:225px}}

.playing.ninja-playing .ability-bar:has(#weapon-ability:not([hidden])){width:min(1080px,calc(100% - 24px));grid-template-columns:repeat(9,minmax(0,1fr))}.ninja-playing #weapon-ability{order:6}.ninja-playing .ability-bar>div:nth-last-child(2){order:7}.ninja-playing #potion-button{order:8}@media(max-width:760px){.playing.ninja-playing .ability-bar:has(#weapon-ability:not([hidden])){grid-template-columns:repeat(5,minmax(0,1fr))}}

@media(min-width:900px) and (max-width:1150px){header{padding-left:24px;padding-right:24px}nav{gap:18px}.wallet{min-width:75px}.wordmark{font-size:24px}}

/* Walkable lobby: stations live in the room, leaving the center unobstructed. */
body:not(.playing) .vignette{background:linear-gradient(0deg,#081010aa,transparent 25%,transparent 78%,#081010aa)}
body:not(.playing) #header{height:82px;background:linear-gradient(#101c1be8,#101c1b00);border:0}
.hall-title{position:absolute;top:105px;left:32px;pointer-events:none}
.hall-title h1{font-size:32px;margin:7px 0}.hall-title p{font-size:11px;color:#c5caba}
.hall-character{position:absolute;left:32px;bottom:90px;padding:12px 16px;background:#12211cce;border-left:2px solid #b49a65}
.hall-character>span{font:23px var(--serif);display:block}.hall-character small{display:block;color:#c9c6b2;font-size:10px;margin-top:4px}
.hall-interact{position:absolute;bottom:120px;left:50%;transform:translateX(-50%);background:#15261ff2;border:1px solid #c5aa72;padding:14px 22px;display:flex;align-items:center;gap:14px;white-space:nowrap}
.hall-interact kbd{color:#e5c78b}.hall-controls{position:absolute;bottom:20px;left:20px;right:20px;text-align:center}
.hall-controls p{font-size:10px;color:#bec6b7}.hall-controls b{color:#e3d5b1;font-weight:500}
.hall-controls button{padding:8px 15px;border:1px solid #8a987455;background:#11221ddd;font-size:11px}
.calling-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:24px}
.calling-card{text-align:left;background:#10201c;border:1px solid #64755b;padding:22px 18px}
.calling-card.selected{border-color:#e2bd76;background:#304137}
.calling-card>span{font-size:38px;color:#dcc38b}.calling-card h3{font:30px var(--serif);margin:12px 0}
.calling-card p{font-size:11px;line-height:1.7;color:#b7c6b4}.calling-card small{display:block;margin:20px 0 12px;color:#d7c8a6}
.calling-card b{display:block;font-size:11px;color:#e0c789}
@media(max-width:899px){.hall-title{top:88px;left:22px}.hall-title h1{font-size:25px}.hall-title>.eyebrow{font-size:7px}.hall-character{left:22px;bottom:100px}.hall-controls p{font-size:8px}.calling-grid{gap:8px}.calling-card{padding:14px 10px}.calling-card h3{font-size:25px}}
.trade-sides{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:22px 0}
.trade-sides>section{padding:18px;background:#0c1916;border:1px solid #81957d55;min-height:180px}
.trade-sides h3{font:25px var(--serif);margin:0 0 15px}.trade-sides h3 small{font:11px var(--sans);color:#ceb78c}
.trade-empty,.trade-note{font-size:11px;line-height:1.8;color:#a8bca9}.trade-empty{min-height:65px}
.trade-offer{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #81957d33;font-size:11px}
.trade-offer .weapon-icon{width:25px;height:40px}.trade-offer span{flex:1}.trade-offer small{display:block;font-size:9px;color:#a7b49d;margin-top:4px}
.trade-offer button{font-size:10px;color:#d6bd8a}.trade-sides .secondary{margin-top:14px;white-space:normal;padding:10px}
.trade-inventory-title{font:27px var(--serif);margin-bottom:8px}.trade-note{margin-bottom:18px}
@media(max-width:650px){.trade-sides{grid-template-columns:1fr}}

.legendary-text{color:#f4c96d!important}.item-card.legendary{border-color:#d4a852;background:linear-gradient(145deg,#514128,#182421)}.legendary .reward-art{background:radial-gradient(ellipse,#e8b95635,transparent 70%);border-color:#e8b95677}.legendary .weapon-icon{filter:drop-shadow(0 0 9px #e8b95644)}

.trade-actions{padding:16px 0;border-top:1px solid #81957d55;border-bottom:1px solid #81957d55;margin:16px 0;display:flex;flex-wrap:wrap;gap:10px}.trade-actions p{width:100%;margin:0}.trade-actions button{min-height:44px}#trade-error{color:#d9a677;min-height:1.4em}
