/* V40 Visual Reset — Korean Occult Noir. Replacement rules, not decoration. */
:root{--v40-night:#071317;--v40-night-2:#0b2024;--v40-jade:#8fc7b0;--v40-brass:#d9bf79;--v40-vermilion:#b9473f;--v40-glass:#07171bd6;--v40-line:#b5cbb13b}
#screen-title .title-actions .btn{background:#09171bd9;border:1px solid #d8c48a88;color:#f0e3c4;box-shadow:0 8px 24px #0007;backdrop-filter:blur(9px)}
#screen-title .title-actions .btn-primary{background:linear-gradient(135deg,#d9c887,#9fb98c);color:#10201f;border-color:#efe0aa;box-shadow:0 10px 30px #0008}
#screen-title .title-actions .btn:disabled{opacity:.62;cursor:wait}
#screen-title .title-preview-option summary{color:#dbc99f;background:none;border:0;text-shadow:0 2px 8px #000;letter-spacing:.04em}
#screen-title .title-note{opacity:.72;max-width:330px;line-height:1.6}

#screen-map{background:var(--v40-night);overflow:clip}
#screen-map::before{content:"";position:absolute;inset:0;z-index:7;pointer-events:none;background:radial-gradient(circle at 50% 47%,transparent 34%,#02101433 67%,#020b0edf 112%),linear-gradient(180deg,#0714192e 0,#07141900 50%,#02090dc7 100%)}
#screen-map::after{content:"";position:absolute;inset:-12%;z-index:8;pointer-events:none;opacity:.38;background:radial-gradient(ellipse at 22% 56%,#8bc5b012 0 17%,transparent 38%),radial-gradient(ellipse at 74% 31%,#d9bd7610 0 13%,transparent 35%);filter:blur(16px);animation:v40Mist 14s ease-in-out infinite alternate}
@keyframes v40Mist{to{transform:translate3d(4%,-2%,0) scale(1.04);opacity:.55}}
#screen-map #map{filter:saturate(.8) contrast(1.02)}
#screen-map .night-tiles{filter:invert(1) hue-rotate(185deg) brightness(.9) contrast(1.06) saturate(.5) sepia(.08)}
#screen-map .hud-top{top:calc(6px + var(--safe-t));left:8px;right:8px;padding:0;background:none;gap:6px;align-items:flex-start}
#screen-map .hud-rank{flex:1;max-width:190px;padding:5px 7px;background:#061419c4;border:1px solid var(--v40-line);border-radius:14px;backdrop-filter:blur(10px);box-shadow:0 8px 24px #0005}
#screen-map .hud-avatar{width:36px;height:36px;border:1px solid #d9bf797d;border-radius:50%;box-shadow:0 0 0 2px #051014}
#screen-map .hud-rank-name{font-size:11px;color:#efe2bf;letter-spacing:-.02em}
#screen-map .bar-xp{height:3px;border:0;background:#d9bf7920}#screen-map .bar-xp>div{background:linear-gradient(90deg,#8fc7b0,#d9bf79)}
#screen-map .hud-xp-text{font-size:8px;margin-top:2px;color:#9fb7aa}
#screen-map .hud-title{font-size:8px;margin-top:1px;line-height:1.1}
#screen-map .hud-stats{flex-direction:row;gap:4px;align-items:flex-start}
#screen-map .stat{min-height:34px;padding:4px 6px;border:1px solid var(--v40-line);border-radius:12px;background:#061419c4!important;color:#e8dfc3!important;box-shadow:0 8px 22px #0004;font:700 11px var(--sans);backdrop-filter:blur(10px)}
#screen-map .stat small{display:none}#screen-map .stat-icon{width:14px;height:14px}#screen-map .stat-emoji{font-size:12px}
#screen-map .world-population{top:calc(52px + var(--safe-t));left:50%;transform:translateX(-50%);max-width:80%;padding:3px 9px;background:#0312169c;border:0;border-radius:999px;color:#9fb7aa;font-size:8px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:none;backdrop-filter:blur(8px)}
#screen-map .radar{left:18%;right:18%;top:calc(75px + var(--safe-t));min-height:34px;padding:5px 10px;gap:6px;background:#061419b8;color:#e8dfc3;border:1px solid #94b9a54d;border-radius:999px;box-shadow:0 8px 26px #0004;backdrop-filter:blur(10px)}
#screen-map .radar-arrow{width:18px;height:18px;font-size:12px;color:var(--v40-brass)}#screen-map .radar-text{font:700 10px var(--sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#screen-map .map-actions{left:10px;right:10px;bottom:calc(68px + var(--safe-b));gap:6px}
#screen-map .retention-next{min-height:48px;padding:6px 8px;border:1px solid #97b7a64d;border-radius:12px;background:#07181bd9;box-shadow:0 8px 24px #0005;backdrop-filter:blur(10px)}
#screen-map .retention-next::after{display:none}#screen-map .retention-incident{min-width:38px;min-height:34px;padding:3px 5px;border:0;border-radius:8px;background:#d2bb7d12;color:#d9bf79;font-size:8px}
#screen-map .retention-copy small,#screen-map .retention-copy>span{display:none}#screen-map .retention-copy b{font:800 12px/1.25 var(--serif);color:#f0e4c8}#screen-map .retention-arrow{font-size:16px}
#screen-map:has(#btn-engage:not([hidden])) .retention-next{display:none}
#screen-map .btn-engage{min-height:50px;padding:7px 12px;border:1px solid #d8bf7a99;border-radius:12px;background:linear-gradient(100deg,#0a1c20e8,#291b18e8);color:#f4e6c5;box-shadow:0 10px 28px #0006;animation:none;backdrop-filter:blur(11px)}
#screen-map .btn-engage.boss{background:linear-gradient(100deg,#17152ae8,#38201ee8);border-color:#c49ab3aa;box-shadow:0 10px 28px #0006}
#screen-map .engage-name{font-size:15px}#screen-map .engage-sub{font-size:9px;color:#b6c8bc}
#screen-map .map-tools{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 44px;gap:6px}
#screen-map .map-tools .btn{min-height:44px;padding:7px 9px;border:1px solid #789b8c4d;border-radius:11px;background:#07181bd4;color:#c7d7c8;box-shadow:none;font:700 10px var(--sans);backdrop-filter:blur(9px)}
#screen-map .map-tools #btn-locate{width:44px;padding:0}#screen-map .map-tools small{color:#d9bf79}
#screen-map .ar-outing-entry{min-height:44px;font-size:10px}
#screen-map .ghost-marker .gm.gm-distant{width:34px;height:38px;border:0;border-radius:0;background:none;opacity:.42;filter:grayscale(.25) drop-shadow(0 0 8px #7eb3a855)}
#screen-map .ghost-marker .gm.gm-distant img{width:32px;height:34px;opacity:.82}#screen-map .ghost-marker .gm.gm-distant .gm-tier{opacity:.45;font-size:7px}
#screen-map .ghost-marker .gm.gm-near{transform:scale(1.08);filter:drop-shadow(0 0 8px #8fc7b066) drop-shadow(0 4px 8px #0009)}
#screen-map .ghost-marker .gm-level{top:-7px;left:50%;transform:translateX(-50%);min-width:0;padding:1px 4px;border:0;border-radius:999px;background:#041216bf;color:#e6d9b7;font-size:7px}
#screen-map .spot-marker .sm-name{bottom:-1px;padding:1px 5px;border:0;border-radius:999px;background:#061419bf;color:#c5d4c7;font:700 8px var(--sans);box-shadow:0 3px 10px #0005}
#screen-map .tabbar.play-tabbar{left:8px;right:8px;bottom:calc(6px + var(--safe-b));padding:4px;gap:2px;background:#061419e8;border:1px solid var(--v40-line);border-radius:16px;box-shadow:0 10px 30px #0008;backdrop-filter:blur(12px);overflow:hidden}
#screen-map .play-tabbar .tab{min-height:49px;padding:4px 2px;border:0;border-radius:12px;color:#8fa79c;background:transparent;font:700 9px var(--sans)}
#screen-map .play-tabbar .tab::before{content:'·';display:block;margin:0 auto 2px;color:#718b80;font:800 16px/1 var(--serif)}
#screen-map .play-tabbar .tab[data-open='map']::before{content:'路'}#screen-map .play-tabbar .tab[data-open='inventory']::before{content:'袋'}#screen-map .play-tabbar .tab[data-open='community']::before{content:'戰'}#screen-map .play-tabbar .tab[data-open='menu']::before{content:'門'}
#screen-map .play-tabbar .tab.active{background:#17312fd9;color:#f0dfb7;box-shadow:inset 0 0 0 1px #8eaa8c55}#screen-map .play-tabbar .tab.active::before{color:#d9bf79}
.toast{max-width:min(360px,calc(100% - 8px));padding:7px 10px;border:1px solid #91aa9a44;border-left:2px solid var(--v40-vermilion);border-radius:9px;background:#07171be8;color:#e8dfc4;box-shadow:0 9px 24px #0007;font:600 10px/1.5 var(--sans);backdrop-filter:blur(10px)}
.toast.warn{background:#241716ed;border-left-color:#c45c51;color:#f0dfc7}
@media(max-width:360px){#screen-map .radar{left:13%;right:13%}#screen-map .hud-rank{max-width:170px}#screen-map .stat{padding:4px 5px}#screen-map .retention-next{min-height:44px}}
@media(prefers-reduced-motion:reduce){#screen-map::after{animation:none}}
/* AR manifestation is a scene, not a camera settings screen. */
#screen-ar-outing .ar-outing-scene{background:#041115}
#screen-ar-outing .ar-outing-fallback{place-items:end center;padding:0 28px 28vh;background-image:linear-gradient(180deg,#04111638,#04111688 52%,#020b0ee8),url('../assets/img/environments/night-gate-v32.webp');background-size:cover;background-position:center;color:#a9c0b4;text-shadow:0 2px 8px #000;font-size:10px}
#screen-ar-outing .ar-outing-scene::before{content:"";position:absolute;z-index:1;left:50%;top:48%;width:min(64vw,300px);aspect-ratio:1;transform:translate(-50%,-50%);border:1px solid #86b7a43d;border-radius:50%;box-shadow:0 0 0 18px #8fc7b006,0 0 0 42px #8fc7b005,inset 0 0 50px #8fc7b00a;pointer-events:none;transition:border-color .3s,box-shadow .3s,transform .3s}
#screen-ar-outing .ar-outing-scene::after{content:"";position:absolute;z-index:1;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 48%,transparent 0 24%,#07151b18 45%,#02090bd8 100%),linear-gradient(180deg,#020b0e9a 0,transparent 20%,transparent 74%,#020a0dcf 100%)}
#screen-ar-outing[data-signal='near'] .ar-outing-scene::before{border-color:#a6c9af66;box-shadow:0 0 0 14px #8fc7b009,0 0 0 36px #8fc7b008,0 0 46px #8fc7b018,inset 0 0 46px #8fc7b014}
#screen-ar-outing[data-signal='strong'] .ar-outing-scene::before{border-color:#d9bf7980;transform:translate(-50%,-50%) scale(.94);box-shadow:0 0 0 12px #d9bf790c,0 0 0 30px #d9bf7908,0 0 60px #d9bf7922,inset 0 0 52px #d9bf7914}
#screen-ar-outing[data-signal='manifest'] .ar-outing-scene::before{border-color:#c45b4f99;transform:translate(-50%,-50%) scale(.86);box-shadow:0 0 0 10px #b9473f14,0 0 0 24px #d9bf790a,0 0 74px #b9473f33,inset 0 0 70px #b9473f1f}
#screen-ar-outing .ar-outing-head{padding-top:calc(9px + env(safe-area-inset-top));background:linear-gradient(#031014e8,transparent);border:0}
#screen-ar-outing .ar-outing-head b{font:800 18px/1.1 var(--serif);color:#eee1bf}#screen-ar-outing .ar-outing-head small{font-size:8px;color:#8fa99c}
#screen-ar-outing .ar-outing-exit{border:1px solid #96aa9850;background:#07171bd9;color:#e8ddbe;box-shadow:none;border-radius:12px}
#screen-ar-outing .ar-outing-mode{top:calc(62px + env(safe-area-inset-top));padding:3px 8px;background:#041216a8;border:0;color:#8ca69a;font-size:8px;opacity:.9}
#screen-ar-outing .ar-outing-signal{top:calc(91px + env(safe-area-inset-top));min-width:156px;padding:5px 9px;border:0;background:#041216b8;box-shadow:none;backdrop-filter:blur(8px)}
#screen-ar-outing .ar-outing-signal-text{font-size:9px;color:#dbc98f}
#screen-ar-outing .ar-outing-footer{left:12px;right:12px;bottom:calc(9px + env(safe-area-inset-bottom));grid-template-columns:1fr auto;gap:6px 8px}
#screen-ar-outing .ar-outing-discovery{padding:6px 8px;border:1px solid #91aa9840;border-radius:9px;background:#041216c9;color:#b8cabf;font-size:9px;backdrop-filter:blur(8px)}
#screen-ar-outing .ar-outing-safety{padding:5px 8px;border:0;border-radius:8px;background:#041216a8;color:#d7c78f;font-size:8px;line-height:1.35}
#screen-ar-outing .ar-outing-recenter{min-width:96px;padding:7px 9px;border:1px solid #a18f664d;background:#171512c9;color:#e4d7b8;box-shadow:none;border-radius:9px;font-size:9px}
#screen-ar-outing .ar-outing-target{filter:drop-shadow(0 12px 10px #000b);transition:filter .25s,opacity .25s}
#screen-ar-outing .ar-outing-target:not(.revealed) .ar-outing-spirit{opacity:.36;filter:grayscale(.7) brightness(.58) contrast(1.2) blur(.35px)}
#screen-ar-outing .ar-outing-target:not(.revealed) .ar-outing-label b{color:#9fb1a8;font-size:10px}
#screen-ar-outing .ar-outing-target.revealed .ar-outing-spirit{filter:drop-shadow(0 0 15px #83bca85a)}
#screen-ar-outing .ar-outing-target.manifest{filter:drop-shadow(0 0 18px #d0b96e80) drop-shadow(0 12px 10px #000b)}
#screen-ar-outing .ar-outing-target.manifest::before{content:"";position:absolute;left:50%;top:51%;width:112px;height:112px;transform:translate(-50%,-50%);border:1px solid #d9bf7980;border-radius:50%;box-shadow:0 0 0 9px #d9bf7908,0 0 26px #d9bf7924;pointer-events:none}
#screen-ar-outing .ar-outing-target.manifest .ar-outing-label b{color:#f0dfb4}#screen-ar-outing .ar-outing-target.manifest .ar-outing-indicator{color:#d96355;text-shadow:0 0 12px #d96355aa}
@media(prefers-reduced-motion:reduce){#screen-ar-outing .ar-outing-scene::before{transition:none}}
/* Combat: quiet baseline, violent moments. */
#screen-ar .hud-top{padding:calc(8px + var(--safe-t)) 9px 8px;gap:6px;background:linear-gradient(#02090dd9,transparent)}
#screen-ar .hud-top .btn-icon{width:44px;height:44px;border:1px solid #a28d6655;border-radius:12px;background:#071316d9;box-shadow:none;color:#eadfbe}
#screen-ar .ghost-status{padding:6px 9px;border:1px solid #8da49730;border-radius:12px;background:#061419c2;box-shadow:none;backdrop-filter:blur(9px)}
#screen-ar .ghost-title{margin-bottom:4px;font-size:12px;color:#eee1c0}#screen-ar .ghost-title .tier{font-size:9px}
#screen-ar .bar-hp{height:6px;border:0;background:#2a1416}#screen-ar .bar-wrath{height:3px;border:0;background:#1d1824}
#screen-ar .ar-timer{width:40px;height:40px;border:1px solid #9d89614d;border-radius:12px;background:#071316d9;color:#dfd2b2;box-shadow:none;font-size:13px}
#screen-ar .encounter-director{top:calc(66px + var(--safe-t) + var(--encounter-offset,0px));left:12px;right:12px;gap:5px;font-size:8px}
#screen-ar .encounter-director span{padding:3px 6px;border:0;border-radius:999px;background:#061419a6;color:#9fb3aa;backdrop-filter:blur(6px)}
#screen-ar .encounter-director #pattern-cue{color:#d3c79e}#screen-ar .encounter-director .btn{min-height:44px;padding:4px 7px;border:1px solid #81998b44;background:#07171bb8;box-shadow:none;font-size:8px}
#screen-ar .enemy-technique{top:calc(99px + var(--safe-t) + var(--encounter-offset,0px));left:16%;right:16%;padding:5px 8px;border:0;border-bottom:1px solid #8b9f9538;background:#05121699;color:#a9bcb1;text-align:center;font-size:9px;backdrop-filter:blur(5px)}
#screen-ar .enemy-technique.danger{color:#f1d195;border-color:#c76a55aa;background:#211313ba}
#screen-ar .ghost-wrap{width:min(64vw,310px);height:min(51dvh,420px)}
#screen-ar .ghost-name-tag{bottom:2px;padding:2px 8px;border:0;border-radius:999px;background:#061419be;color:#e8dcb9;box-shadow:none;font:700 9px var(--sans);backdrop-filter:blur(6px)}
#screen-ar .hud-bottom{padding:34px 10px calc(9px + var(--safe-b));gap:4px;background:linear-gradient(0deg,#02090df5 0,#031014e5 54%,transparent 100%)}
#screen-ar .mind-wrap{gap:6px}#screen-ar .mind-label{font-size:9px}#screen-ar .bar-mind{height:5px;border:0;background:#173037}
#screen-ar #btn-evade{min-height:44px;border:1px solid #6c8f7e55;border-radius:10px;background:#102a2ac7;box-shadow:none;font-size:10px}
#screen-ar #btn-evade:not(:disabled){background:#183e35d9;border-color:#91bea56e;box-shadow:0 0 18px #73c5a51c}
#screen-ar .player-skillbar{gap:5px}#screen-ar .player-skillbar .btn{min-height:44px;padding:7px 8px;border:1px solid #7898894d;border-radius:10px;background:#0c2428c9;color:#e5dcc0;box-shadow:none;font-size:10px}
#screen-ar .player-skillbar .btn[data-skill='strike']{background:#2c211ac9;border-color:#b69b7060}#screen-ar .player-skillbar .btn[data-skill='ward']{background:#123128c9;border-color:#85a88660}
#screen-ar .player-combat-status,#screen-ar .ar-hint{display:none}
#screen-ar .ar-tools{gap:5px}#screen-ar .btn-tool-slot{min-height:44px;padding:4px 5px;border:1px solid #718b7d42;border-radius:10px;background:#07191dc4;box-shadow:none;font-size:9px}
#screen-ar .btn-tool-slot img{width:20px;height:20px}#screen-ar .btn-tool-slot .slot-emoji{font-size:18px;line-height:20px}
#screen-ar .potion-control select{min-height:44px;padding:3px 5px;border:1px solid #78958542;background:#0a2423;color:#b9c9ba;font-size:9px}
#screen-ar .combat-auxiliary>summary{min-height:44px;padding:5px 9px;border:1px solid #6f8e7e3d;border-radius:9px;background:#07191dbd;color:#b4c5b7;font-size:9px}
#screen-ar:has(.capture-panel:not([hidden])) .hud-top,#screen-ar:has(.capture-panel:not([hidden])) .encounter-director,#screen-ar:has(.capture-panel:not([hidden])) #enemy-technique{opacity:0;pointer-events:none;transition:opacity .18s}
#screen-ar:has(.capture-panel[data-stage='ritual']:not([hidden])) #ar-vignette{background:radial-gradient(circle at 50% 45%,transparent 25%,#06181740 52%,#010608e8 100%)}
#screen-ar .capture-panel[data-stage='ritual'] h2{top:10.5%;font-size:28px;color:#ecdfb7;letter-spacing:.08em}#screen-ar .capture-panel[data-stage='ritual'] #capture-desc{top:15%;color:#9dbfb0;font-size:10px}
#screen-ar .capture-panel[data-stage='ritual']{background:radial-gradient(circle at 50% 48%,#7ac9aa08,transparent 38%),linear-gradient(180deg,#03101416 30%,#02090dcf 100%)}
/* Dungeon stage identity: threshold / depths / sanctum. */
.dg-battle .dg-hud{padding:5px 7px;border:1px solid #81998b38;border-radius:10px;background:#05171bc7;box-shadow:0 7px 20px #0005;backdrop-filter:blur(7px)}
.dg-battle .dg-objective{padding:5px 8px;border:1px solid #81998b38;border-radius:9px;background:#05171bb8;color:#c8d7c8;box-shadow:0 7px 20px #0004;backdrop-filter:blur(6px);font-size:9px}
.dg-battle:has(.px-canvas[data-stage='1']) .dg-objective{border-color:#78a89555;color:#bcd5c7}
.dg-battle:has(.px-canvas[data-stage='2']) .dg-objective{border-color:#b863535f;color:#e0b69f;background:#1a1110c4}
.dg-battle:has(.px-canvas[data-stage='3']) .dg-objective{border-color:#c9aa6f70;color:#efd9a6;background:#160e13cf;box-shadow:0 0 24px #a84a3420}
.dg-battle:has(.px-canvas[data-stage='3']) .dg-objective::before{content:'BOSS SANCTUM';display:block;margin-bottom:2px;color:#c86b55;font:800 7px/1 var(--sans);letter-spacing:.16em}
.dg-battle .dg-party-hud{padding:3px 6px;border-radius:8px;background:#04131799;color:#a9c0b3;backdrop-filter:blur(5px)}
.dg-battle .dg-combat-cue[data-kind='gate']{border:1px solid #c7a8666e;background:#130f0de8;color:#efd598;box-shadow:0 8px 28px #0008;font-size:12px}
/* Dungeon camp: destinations, not dashboard cards. */
.dg-screen:not(.dg-playing) .px-header{background:#07191dcc;border-bottom:1px solid #8298892b;box-shadow:0 8px 24px #0004;backdrop-filter:blur(10px)}
.dg-camp{display:flex;flex-direction:column;gap:10px;padding:10px 10px calc(28px + var(--safe-b));background:radial-gradient(ellipse at 70% 0,#25483a35,transparent 38%),#07191f}
.dg-camp-hero{order:0;min-height:255px;padding:22px;border-radius:20px;border:1px solid #94a88738;box-shadow:0 12px 32px #0006}
.dg-camp-hero:after{background:linear-gradient(0deg,#041318f2 2%,#06171a78 50%,#07171a1c 82%)}
.dg-camp-hero small{font-size:8px;letter-spacing:.16em;color:#c8b876}.dg-camp-hero h2{margin:7px 0 0;font-size:29px;color:#f1e3bc;text-shadow:0 3px 12px #000}.dg-camp-hero p{margin:6px 0 0;max-width:78%;font-size:10px;color:#b8c9bd}
.dg-camp>.px-profile{order:1;width:100%;padding:5px 8px;border:0;background:transparent;color:#a9bdb2;font-size:9px;box-shadow:none}
.dg-camp .px-services{order:2;display:grid;grid-template-columns:repeat(4,1fr);gap:5px;width:100%;margin:0}
.dg-camp .px-services .px-button{min-height:54px;padding:5px;border:1px solid #78918236;border-radius:11px;background:#0b2427b8;color:#c9d3bd;box-shadow:none;font-size:8px}
.dg-camp .px-services .px-icon{width:25px;height:25px}.dg-camp .px-services span{font-size:8px}
.dg-camp .dg-join{order:3;display:grid;grid-template-columns:1fr auto;gap:6px;width:100%}.dg-camp .dg-join input{min-height:44px;padding:7px 9px;border:1px solid #75918138;background:#081d21;color:#d9dfc8;font-size:10px}.dg-camp .dg-join .px-button{min-height:44px;padding:7px 12px;border:1px solid #b59b6650;border-radius:10px;background:#241d16c9;color:#e4cf9e;box-shadow:none;font-size:9px}
.dg-camp .dg-zones{order:4;display:flex;gap:9px;width:calc(100% + 10px);margin-right:-10px;padding:2px 10px 8px 0;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}.dg-camp .dg-zones::-webkit-scrollbar{display:none}
.dg-camp .dg-zones .px-zone{flex:0 0 min(82vw,330px);min-height:205px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:3px;padding:17px;border:1px solid #9cb09b45;border-left:1px solid #9cb09b45;border-radius:17px;scroll-snap-align:start;background:#0a2025;color:#efe4c4;box-shadow:0 10px 24px #0005;isolation:isolate}
.dg-camp .dg-zones .px-zone>.px-menu-art{opacity:.9;image-rendering:auto;filter:saturate(.78) contrast(1.08)}.dg-camp .dg-zones .px-zone:after{background:linear-gradient(0deg,#041216f5 5%,#04121683 53%,#0412160d 82%)}
.dg-camp .dg-zones .px-zone-number{font:700 8px/1 var(--sans);letter-spacing:.12em;color:#c8b570}.dg-camp .dg-zones .px-zone-name{font:800 23px/1.15 var(--serif);color:#f3e4bd;text-shadow:0 3px 10px #000}.dg-camp .dg-zones .px-zone small{font-size:9px;color:#b6c8bc}.dg-camp .dg-new{top:11px;right:11px;border-radius:999px;background:#a8ccb3;color:#102b27;font-size:7px}
.dg-camp>.px-real{order:5;margin:0;padding:10px 12px;border:1px solid #79988a3b;border-radius:12px;background:#091f23;color:#c7d5c7;box-shadow:none}.dg-camp>.px-real b{font-size:11px}.dg-camp>.px-real span{font-size:8px;color:#8fa89c}
.dg-camp>.px-travel-record{order:6;margin:0;padding:0 3px;color:#718c81;font-size:8px;line-height:1.5;text-align:center}
.dg-camp .dg-resume{order:-1;margin-bottom:2px;border:1px solid #b9a66e55;background:#211b14;color:#e7d49f;box-shadow:none;border-radius:10px;font-size:9px}
@media(min-width:760px){.dg-camp{padding:18px 24px}.dg-camp-hero{min-height:300px}.dg-camp .dg-zones .px-zone{flex-basis:310px}.dg-camp .px-services{max-width:620px}.dg-camp .dg-join{max-width:620px}}
@media(max-width:360px){.dg-camp-hero{min-height:220px}.dg-camp-hero h2{font-size:25px}.dg-camp .dg-zones .px-zone{flex-basis:84vw;min-height:185px}.dg-camp .px-services .px-button{min-height:50px}}
/* Companion sanctuary: owned spirit as a scene, catalogue as secondary. */
#screen-companions .companions-body{background:radial-gradient(ellipse at 76% 4%,#26483c4a,transparent 38%),#07191f;padding:10px 10px calc(36px + var(--safe-b))}
#screen-companions .companions-notice,.dg-screen .px-notice{padding:7px 9px;border:1px solid #8ca2903d;border-left:2px solid #b1a267;border-radius:9px;background:#07191de8;color:#cbd8c8;box-shadow:0 8px 22px #0006;font-size:9px;line-height:1.5;backdrop-filter:blur(8px)}
#screen-companions .companions-hero{min-height:286px;padding:20px;border:1px solid #8da18a3a;border-radius:20px;background:linear-gradient(0deg,#041317f2 2%,#06171a8f 56%,#07171a20 86%),url('../assets/img/environments/night-gate-v32.webp') center/cover;box-shadow:0 14px 34px #0006;overflow:hidden}
#screen-companions .companions-hero .companions-kicker{font-size:8px;color:#c8b574}#screen-companions .companions-hero h3{max-width:78%;margin:9px 0;font-size:31px;color:#f1e3bd;text-shadow:0 3px 14px #000}#screen-companions .companions-hero>p{max-width:76%;font-size:10px;line-height:1.65;color:#bac9bc}
#screen-companions .companions-counts{max-width:76%;padding:7px 0 9px;border-top:1px solid #93a78630;font-size:9px;color:#d3bd78}
#screen-companions .companions-hero .companions-action{max-width:260px}#screen-companions .companions-hero .companions-action>.btn{min-height:44px;border:1px solid #d5c17f70;border-radius:11px;background:#e2d39b;color:#142523;box-shadow:0 8px 22px #0004;font-size:10px}
#screen-companions .companions-hero .companions-reason{display:none}
#screen-companions .companions-journey{display:flex;gap:4px;margin:10px 0 0;overflow:hidden}#screen-companions .companions-journey span{flex:1;padding:5px 3px;border:1px solid #8095872c;border-radius:8px;background:#07191d9e;color:#829a8e;font-size:7px;text-align:center;white-space:nowrap}#screen-companions .companions-journey .ready{border-color:#c3b67455;background:#211d14bf;color:#e3cf91}

/* Preserve touch hit areas independently of restrained visual artwork. */
#screen-map .ghost-marker:has(.gm-distant){display:grid;place-items:center}
.dg-screen:not(.dg-playing) .px-header button{min-width:44px;min-height:44px}
/* These legacy controls have ID-level size rules. Keep the V40 contract explicit. */
#screen-ar #btn-recenter{min-height:44px}
#screen-ar #ar-potion-choice{min-height:44px}
#screen-ar #enemy-technique{top:calc(114px + var(--safe-t) + var(--encounter-offset,0px))}

/* V67: keep actual streets readable beneath the night tint and point out the radar's target. */
#screen-map .night-tiles{filter:invert(1) hue-rotate(185deg) brightness(1.15) contrast(.72) saturate(.65) sepia(.08)}
#screen-map .ghost-marker .gm.gm-distant{opacity:.58;filter:grayscale(.12) drop-shadow(0 0 10px #92d2bb88)}
#screen-map .ghost-marker.recommended .gm{isolation:isolate;opacity:1;filter:drop-shadow(0 0 10px #e7c779c9) drop-shadow(0 4px 8px #000c)}
#screen-map .ghost-marker.recommended .gm::before{content:'';position:absolute;inset:1px 0 5px;border:1px solid #f0d693;border-radius:50%;background:radial-gradient(circle,#e7c16a30 20%,#173b37a8 70%);box-shadow:0 0 13px #ebce8a8a;z-index:-1}
#screen-map .ghost-marker.recommended .gm.capturable::before{border-color:#8cebc2;background:radial-gradient(circle,#74e9be34 20%,#123b38ab 70%);box-shadow:0 0 15px #71ddb0aa}
#screen-map .ghost-marker.recommended .gm-level{font-size:9px;color:#fff2cf;border-color:#b5d5a85c;background:#08251fe8}
#screen-map .btn-engage{display:flex;flex-direction:row;justify-content:center;align-items:center;gap:9px;min-height:58px;padding:5px 10px}
#screen-map .btn-engage .engage-thumb{flex:none;width:42px;height:42px;object-fit:contain;filter:drop-shadow(0 0 7px #d0bd83aa)}
#screen-map .btn-engage .engage-thumb[hidden]{display:none}
#screen-map .btn-engage .engage-copy{display:flex;flex-direction:column;align-items:flex-start;min-width:0;text-align:left}
#screen-map .btn-engage .engage-name{font-size:14px;line-height:1.25}
#screen-map .btn-engage .engage-sub{font-size:10px;line-height:1.25}
#screen-map .btn-engage.boss .engage-copy{align-items:center;text-align:center}
