/* The desktop shell never changes mobile layout or the battle stage itself. */
#desktop-shell{display:none}
body.desktop-game #desktop-shell{display:block}html.ds-boot>body>main,html.ds-boot>body>.topbar,html.ds-boot>body>.ambient{display:none}
body.desktop-game>.topbar,body.desktop-game>main>.page-heading,body.desktop-game>main>.campaign-toolbar,body.desktop-game>main>.page-footer{display:none}
body.desktop-game .desktop-shell{--ds-gold:#d4b477;--ds-ink:#07101b;--ds-line:rgba(204,172,114,.32);--ds-muted:#a8b3b9;--ds-header:68px;--ds-rail:90px;position:fixed;inset:0;z-index:30;color:#ede7d8;font:14px/1.5 "Noto Sans SC","Microsoft YaHei",sans-serif;isolation:isolate;overflow:hidden;background:#060d14}
body.desktop-game .desktop-shell[data-screen="battle"]{background:transparent;pointer-events:none}
body.desktop-game .desktop-shell[data-screen="battle"]{--ds-header:58px;--ds-rail:74px}
body.desktop-game .desktop-shell[data-screen="battle"] .ds-menu{gap:4px;padding-top:15px;background:linear-gradient(90deg,#0a1018dc,#0c141e5c)}
body.desktop-game .desktop-shell[data-screen="battle"] .ds-brand b{font-size:19px}
body.desktop-game .desktop-shell[data-screen="battle"] .ds-brand>span{font-size:34px}
body.desktop-game .desktop-shell button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}
body.desktop-game .desktop-shell button:disabled{cursor:default}
body.desktop-game .desktop-shell button:focus-visible{outline:2px solid #f1d896;outline-offset:5px}
body.desktop-game .desktop-shell :is(h1,h2,h3,p){margin:0}
body.desktop-game .desktop-shell :is(h1,h2,h3){font-family:"Noto Serif SC","Songti SC",SimSun,serif;letter-spacing:.06em}
body.desktop-game .desktop-shell button:not(:disabled):hover{filter:brightness(1.15)}
body.desktop-game .ds-topbar{height:var(--ds-header);position:absolute;inset:0 0 auto 0;z-index:5;display:flex;align-items:center;gap:22px;padding:0 30px 0 19px;background:linear-gradient(#090f17f5,#0a121cef);border-bottom:1px solid var(--ds-line);box-shadow:0 8px 35px #0005;pointer-events:auto}
body.desktop-game .ds-brand{border:0;background:none;display:flex;align-items:center;gap:10px;padding:0;color:var(--ds-gold)!important}
body.desktop-game .ds-brand>span{font-size:42px;line-height:1;font-family:serif;filter:drop-shadow(0 0 8px #e5ba5260)}
body.desktop-game .ds-brand b{font-family:"Noto Serif SC",serif;font-size:23px;font-weight:600;line-height:1.1;letter-spacing:.2em}
body.desktop-game .ds-brand small{display:block;font-size:9px;letter-spacing:.42em;margin-top:6px;color:#a8997a}
body.desktop-game .ds-breadcrumb{font-size:12px;padding-left:23px;border-left:1px solid var(--ds-line);letter-spacing:.13em;color:#bec5c8}
body.desktop-game .ds-resources{margin-left:auto;display:flex;align-items:center;justify-content:space-between;min-width:330px;height:100%;gap:30px;position:relative;padding:0 18px}
body.desktop-game .ds-resources>span:not(.ds-native-image){display:grid;grid-template-columns:23px auto;column-gap:7px;align-items:center;position:relative;z-index:1}
body.desktop-game .ds-resources i{grid-row:1/3;font-style:normal;font-size:22px;color:#e8c27e;filter:drop-shadow(0 0 8px #e8c27e66)}
body.desktop-game .ds-resources strong{font-family:Georgia,serif;line-height:1;font-size:19px;font-weight:500;letter-spacing:.04em}
body.desktop-game .ds-resources small{font-size:9px;color:#9ea5a7;margin-top:5px;letter-spacing:.2em}
body.desktop-game .ds-resources em{font-style:normal;font-size:11px;color:#a4acae}
body.desktop-game .ds-sound{width:34px;height:34px;background:#16202a;border:1px solid #7e6b494f;color:var(--ds-gold)!important;border-radius:50%;font-size:20px!important}
body.desktop-game .ds-menu{position:absolute;top:var(--ds-header);left:0;bottom:0;z-index:5;display:flex;flex-direction:column;align-items:center;gap:13px;width:var(--ds-rail);padding:24px 0;background:linear-gradient(90deg,#0a1018f5,#0c141ee6);border-right:1px solid var(--ds-line);pointer-events:auto}
body.desktop-game .ds-menu>button{position:relative;z-index:1;background:none;border:1px solid transparent;width:65px;min-height:67px;display:flex;flex-direction:column;align-items:center;gap:4px;color:#9ba5ae}
body.desktop-game .ds-menu>button i{font:27px/1.25 Georgia,serif;color:#a08c68}
body.desktop-game .ds-menu>button span{font-size:11px;letter-spacing:.15em}
body.desktop-game .ds-menu>button.active{color:#edd9a8;background:linear-gradient(90deg,#a8853b05,#b08b3620,#a8853b05);border-block-color:#aa92523b}
body.desktop-game .ds-menu>button.active:before{content:"";position:absolute;left:-13px;top:10px;bottom:10px;width:2px;background:#d1b274;box-shadow:0 0 12px #f6d18b}
body.desktop-game .ds-menu>button.active i{color:#e0c995}
body.desktop-game .ds-menu-rule{height:1px;width:28px;background:var(--ds-line);margin:7px 0}
body.desktop-game .ds-content{position:absolute;left:var(--ds-rail);top:var(--ds-header);right:0;bottom:0;min-width:0;min-height:0;overflow:hidden;max-width:none;padding:0;margin:0}
body.desktop-game .ds-content[hidden]{display:none}
body.desktop-game .ds-native-image{position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;pointer-events:none;min-width:0;min-height:0}
body.desktop-game .ds-native-image img{display:block;width:0;height:0;max-width:100%;max-height:100%;object-fit:contain;flex:none}
body.desktop-game .ds-native-image img[data-pixel-safe="pending"]{visibility:hidden}
body.desktop-game .ds-native-image img[data-columns]{position:absolute;max-width:none;max-height:none}
body.desktop-game .ds-sprite-frame{display:block;position:relative;overflow:hidden;flex:none}
body.desktop-game .ds-resource-art{position:absolute;inset:0;opacity:.75}
body.desktop-game .ds-menu-art{display:none}
body.desktop-game .ds-menu-button-art{position:absolute;inset:0;z-index:-1;opacity:.8}
body.desktop-game :is(.ds-world,.ds-region-map,.ds-preparation){position:relative;width:100%;height:100%;overflow:hidden;background:radial-gradient(ellipse at 53% 63%,#26494e55,transparent 50%),linear-gradient(150deg,#0c1523,#11222a 50%,#050a11)}
body.desktop-game :is(.ds-world-art,.ds-region-art,.ds-preparation-art){position:absolute;inset:0;opacity:.65}
body.desktop-game .ds-world-art{opacity:.82;filter:saturate(.92)}
body.desktop-game .ds-map-atmosphere{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 52% 67%,transparent 25%,#02091355 95%),linear-gradient(180deg,#030a1226,transparent 42%,#030a1240)}
body.desktop-game .ds-map-plane{position:absolute;left:var(--map-x,0px);top:var(--map-y,0px);width:var(--map-width,100%);height:var(--map-height,100%)}
body.desktop-game [data-map-ready="pending"]>.ds-map-plane{visibility:hidden}
body.desktop-game .ds-world-heading{position:absolute;left:42px;top:33px;z-index:2}
body.desktop-game .ds-kicker{display:block;font-size:10px;letter-spacing:.24em;color:#baab82;text-transform:uppercase}
body.desktop-game .ds-world-heading h1,body.desktop-game .ds-map-heading h1{font-size:34px;font-weight:500;margin:7px 0}
body.desktop-game .ds-world-heading p,body.desktop-game .ds-map-heading p{font-size:12px;color:#aab4bb}
body.desktop-game .ds-tower{position:absolute;left:40%;width:23%;top:6%;height:78%;pointer-events:none}
body.desktop-game .ds-tower-shape{position:absolute;inset:5% 21% 4%;clip-path:polygon(50% 0,54% 14%,65% 21%,61% 27%,68% 36%,65% 44%,79% 57%,72% 65%,94% 79%,100% 100%,0 100%,6% 79%,28% 65%,21% 57%,35% 44%,32% 36%,39% 27%,35% 21%,46% 14%);background:repeating-linear-gradient(0deg,#172c36 0,#1c3941 22px,#628477 23px,#254951 25px,#122431 45px);box-shadow:inset 25px 0 35px #04111a,inset -20px 0 30px #142529;filter:drop-shadow(0 0 20px #729e8d55)}
body.desktop-game .ds-tower-beam{position:absolute;left:49%;top:-20%;bottom:8%;width:2px;background:linear-gradient(transparent,#bfd9cb88,#e7e9bdcc);box-shadow:0 0 25px #ccda9f55}
body.desktop-game .ds-tower-ring{position:absolute;left:0;right:0;height:12%;border:1px solid #9fc1ac35;border-radius:50%;box-shadow:0 0 40px #9fc1ac0d,inset 0 0 25px #9fc1ac0d}
body.desktop-game .ds-tower-ring.one{bottom:3%;transform:rotate(-8deg)}
body.desktop-game .ds-tower-ring.two{bottom:26%;left:12%;right:12%;transform:rotate(12deg)}
body.desktop-game .ds-tower-ring.three{bottom:49%;left:24%;right:24%;transform:rotate(-12deg)}
body.desktop-game .ds-tower-art{position:absolute;inset:0;z-index:1}
body.desktop-game .ds-tower:has(img) .ds-tower-shape{display:none}
body.desktop-game .ds-tower.ds-art-tower .ds-tower-shape,body.desktop-game .ds-tower.ds-art-tower .ds-tower-ring{display:none}
body.desktop-game .ds-world-routes,body.desktop-game .ds-stage-routes{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
body.desktop-game .ds-world-routes path{fill:none;stroke:#a2b89955;stroke-width:.16;stroke-dasharray:.65 .5;filter:drop-shadow(0 0 .3px #bce4af)}
body.desktop-game .ds-world-routes path.ascent{stroke:#a6bfc440;stroke-width:.12;stroke-dasharray:.25 .55}
body.desktop-game .ds-region-node{--element:#c5a466;position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);width:154px;display:flex;flex-direction:column;align-items:center;border:0;background:none;z-index:3;text-shadow:0 2px 5px #000}
body.desktop-game .fire{--element:#ed9e65}
body.desktop-game .wood{--element:#9ac69b}
body.desktop-game .water{--element:#81bfdf}
body.desktop-game .light{--element:#e3ca83}
body.desktop-game .dark{--element:#b799d9}
body.desktop-game .ds-region-seal{display:grid;place-items:center;width:58px;height:58px;border:1px solid var(--element);outline:1px solid color-mix(in srgb,var(--element) 20%,transparent);outline-offset:7px;transform:rotate(45deg);border-radius:8px;background:radial-gradient(#182e39,#0b1621);color:var(--element);font:25px/1 "Noto Serif SC",serif;box-shadow:0 0 18px color-mix(in srgb,var(--element) 20%,transparent);margin-bottom:19px}
body.desktop-game .ds-region-seal>b{transform:rotate(-45deg);font-weight:400}
body.desktop-game .ds-region-node strong{font-family:serif;font-size:16px;font-weight:500;letter-spacing:.1em}
body.desktop-game .ds-region-node small{color:var(--element);font-size:10px;margin-top:4px;letter-spacing:.03em}
body.desktop-game .ds-region-node.locked{filter:saturate(.4);opacity:.7}
body.desktop-game .ds-region-node.current .ds-region-seal{box-shadow:0 0 17px #dfb96e3b}/* perf 2026-10-15: the breathing glow lives on a ::before that only animates opacity (see the .ds-world rule below); the old box-shadow keyframes repainted every frame */
body.desktop-game .ds-chapter-node{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);background:linear-gradient(90deg,#0a1523e0,#0c18279e,transparent);border:0;border-left:1px solid #a8b7ac40;display:flex;align-items:center;padding:8px 15px 8px 10px;gap:12px;text-align:left;z-index:2;min-width:170px}
body.desktop-game .ds-chapter-node>i{font:20px Georgia;color:#788b94}
body.desktop-game .ds-chapter-node span{display:grid;grid-template-columns:auto auto;column-gap:11px}
body.desktop-game .ds-chapter-node strong{grid-column:1/3;font:14px/1.7 serif;letter-spacing:.09em;color:#b4c1c6}
body.desktop-game .ds-chapter-node small{font-size:8px;color:#83999e;letter-spacing:.12em}
body.desktop-game .ds-chapter-node em{font-size:8px;font-style:normal;color:#7d8b90;grid-column:2;grid-row:1;align-self:center}
body.desktop-game .ds-chapter-node.available{border-color:#d4b477aa}
body.desktop-game .ds-chapter-node.available strong,body.desktop-game .ds-chapter-node.available>i{color:#e0c894}
body.desktop-game .ds-chapter-node:disabled{opacity:.85}
body.desktop-game .ds-chapter-node:disabled strong{color:#c1cbd0}
body.desktop-game .ds-chapter-node:disabled :is(small,em){color:#a1b1b7}
body.desktop-game .ds-tower-crown{position:absolute;left:50%;top:47%;display:flex;flex-direction:column;align-items:center;transform:translate(-50%,-50%);border:0;background:#081622b3;padding:8px 14px;color:#a7adae!important;z-index:3}
body.desktop-game .ds-tower-crown>span{font:28px Georgia;color:#a5b8ad}
body.desktop-game .ds-tower-crown b{font:13px/1.8 serif;letter-spacing:.12em}
body.desktop-game .ds-tower-crown small{font-size:9px;color:#929c9c}
body.desktop-game .ds-tower-crown.available{box-shadow:0 0 35px #dab76d25;border-bottom:1px solid #dab76d90}
body.desktop-game .ds-expedition{position:absolute;left:37px;bottom:33px;max-width:248px;padding:20px 19px 15px;border:1px solid #c7a5623b;background:linear-gradient(120deg,#0c1824ef,#0a141fbb);box-shadow:0 15px 50px #0006;z-index:4}
body.desktop-game .ds-expedition:before,body.desktop-game .ds-expedition:after{content:"";position:absolute;width:12px;height:12px;border-color:#e2c78875}
body.desktop-game .ds-expedition:before{left:-1px;top:-1px;border-left:2px solid;border-top:2px solid}
body.desktop-game .ds-expedition:after{right:-1px;bottom:-1px;border-right:2px solid;border-bottom:2px solid}
body.desktop-game .ds-expedition h2{font-size:17px;line-height:1.6;margin:8px 0}
body.desktop-game .ds-expedition p{font-size:11px;line-height:1.8;color:#a8b5bf;margin-bottom:17px}
body.desktop-game .ds-expedition>small{display:block;text-align:center;font-size:9px;color:#778d94;margin-top:10px}
body.desktop-game .ds-primary{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 16px;min-height:43px;border:1px solid #d1b47392;background:linear-gradient(120deg,#ad884037,#d4ac5047,#94773620);color:#f1dfb3!important;letter-spacing:.16em;font-size:13px!important}
body.desktop-game .ds-primary:disabled{opacity:.45}
body.desktop-game .ds-primary span{font-size:20px;line-height:1}
body.desktop-game .ds-world-caption{position:absolute;right:36px;bottom:31px;display:flex;gap:13px;align-items:center;color:#bdbda7;z-index:3}
body.desktop-game .ds-world-caption>span{font:43px/1 Georgia;color:#b9a47977}
body.desktop-game .ds-world-caption b{font:15px/1.6 serif;letter-spacing:.13em}
body.desktop-game .ds-world-caption small{display:block;font-size:10px;color:#89989d;letter-spacing:.1em}
body.desktop-game .ds-map-heading{position:absolute;left:42px;top:26px;z-index:3;max-width:70%}
body.desktop-game .ds-back{background:none;border:0;border-bottom:1px solid #80949444;padding:3px 0 7px;margin-bottom:17px;color:#b5bfc3!important;font-size:11px!important;letter-spacing:.08em}
body.desktop-game .ds-difficulty{position:absolute;right:35px;top:37px;display:flex;border:1px solid #bba06855;background:#0a1823c9;z-index:3}
body.desktop-game .ds-difficulty button{border:0;background:none;color:#87949d;padding:9px 18px;font-size:12px}
body.desktop-game .ds-difficulty button.selected{background:#a38b442c;box-shadow:inset 0 -2px #d7bb83;color:#e1c799}
body.desktop-game .ds-region-art{opacity:.65}
body.desktop-game .ds-stage-routes path{fill:none;stroke:#c5b89644;stroke-width:.25;stroke-dasharray:.45 .6}
body.desktop-game .ds-stage-routes path.cleared{stroke:#ebd398b0;stroke-dasharray:none;filter:drop-shadow(0 0 .25px #fff0a2)}
body.desktop-game .ds-stage-node{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);z-index:3;display:flex;align-items:center;flex-direction:column;width:180px;border:0;background:none;text-shadow:0 2px 5px #000}
body.desktop-game .ds-stage-orbit{display:grid;place-items:center;position:relative;width:58px;height:58px;border:1px solid #b7b19488;background:#071621db;outline:1px solid #8d9c8850;outline-offset:7px;transform:rotate(45deg);margin-bottom:22px}
body.desktop-game .ds-stage-orbit>i{font:20px/1 Georgia;color:#b1bbba;transform:rotate(-45deg)}
body.desktop-game .ds-stage-node strong{font:16px/1.7 serif;letter-spacing:.06em}
body.desktop-game .ds-stage-node small{font-size:10px;color:#b9bba7;margin-top:5px;letter-spacing:.12em}
body.desktop-game .ds-stage-node.cleared .ds-stage-orbit{border-color:#d7c184;box-shadow:0 0 24px #d7c18440;background:#766a3933}
body.desktop-game .ds-stage-node.current .ds-stage-orbit{border-color:#ecdbac;box-shadow:0 0 20px #dfc1813b}/* perf 2026-10-15: same glow, animated as opacity on a pseudo-element instead of box-shadow */body.desktop-game .ds-stage-node.current .ds-stage-orbit::before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;box-shadow:0 0 40px #ffe5a877;opacity:0;pointer-events:none;will-change:opacity;animation:ds-stage-pulse-glow 3s ease-in-out infinite}@keyframes ds-stage-pulse-glow{0%,100%{opacity:0}50%{opacity:1}}@media(prefers-reduced-motion:reduce){body.desktop-game .ds-stage-node.current .ds-stage-orbit::before{animation:none}}
body.desktop-game .ds-stage-node.current small{color:#ecdbac}
body.desktop-game .ds-stage-node.locked{opacity:.55}
body.desktop-game .ds-stage-node.boss .ds-stage-orbit{width:110px;height:110px;border-radius:50%;transform:none;outline-offset:6px;box-shadow:0 0 40px #d3af5a30}
body.desktop-game .ds-stage-node.boss .ds-stage-orbit>i{position:absolute;right:-3px;bottom:0;transform:none;padding:5px;border-radius:50%;background:#18242d;border:1px solid #998452;z-index:2;font-size:19px;color:#e5c782}
body.desktop-game .ds-boss-badge{position:absolute;inset:0;border-radius:50%}
body.desktop-game .ds-map-legend{position:absolute;right:38px;bottom:27px;background:#08131ed1;padding:14px 18px;border-left:1px solid #a9905a55;z-index:3}
body.desktop-game .ds-map-legend span{display:inline-flex;align-items:center;gap:6px;font-size:10px;color:#a5b1b8;margin-right:15px}
body.desktop-game .ds-map-legend i{width:6px;height:6px;border:1px solid #83928d;transform:rotate(45deg)}
body.desktop-game .ds-map-legend i.complete{background:#c8b674;border-color:#c8b674}
body.desktop-game .ds-map-legend i.next{border-color:#f6e7bb;box-shadow:0 0 8px #f6e7bb}
body.desktop-game .ds-map-legend p{margin-top:7px;font-size:10px;color:#748b96}
body.desktop-game .ds-preparation{padding:24px 32px 26px;display:flex;flex-direction:column}
body.desktop-game .ds-preparation-art{opacity:.24}
body.desktop-game .ds-preparation-shade{position:absolute;inset:0;background:linear-gradient(90deg,#07111bf2,#0a131cc7 55%,#07111bed);pointer-events:none}
body.desktop-game .ds-prep-heading{position:relative;flex:none;z-index:1;padding-bottom:19px}
body.desktop-game .ds-prep-heading .ds-back{margin-bottom:11px}
body.desktop-game .ds-prep-heading .ds-kicker{display:inline-block;margin-left:22px}
body.desktop-game .ds-prep-heading h1{font-size:27px;line-height:1.5;font-weight:500}
body.desktop-game .ds-prep-heading p{margin-top:6px;color:#9cabb6;font-size:11px}
body.desktop-game .ds-prep-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(400px,.95fr);gap:30px;flex:1;min-height:0}
body.desktop-game .ds-layer-preview,body.desktop-game .ds-party-prep{min-width:0;min-height:0;display:flex;flex-direction:column}
body.desktop-game .ds-prep-grid h2{font-size:16px;font-weight:500;display:flex;align-items:center;gap:15px;padding-bottom:13px;border-bottom:1px solid var(--ds-line);flex:none}
body.desktop-game .ds-prep-grid h2 small{font:9px/1.4 sans-serif;letter-spacing:.02em;color:#8ea0ac;margin-left:auto}
body.desktop-game .ds-layer-list{overflow:auto;min-height:0;padding-right:9px;scrollbar-width:thin;scrollbar-color:#7b72514d transparent}
body.desktop-game .ds-layer{border-bottom:1px solid #9faba51c;padding:14px 0}
body.desktop-game .ds-layer>header{display:flex;align-items:center;gap:11px;padding:0 6px 11px}
body.desktop-game .ds-layer>header>span{font:24px/1 Georgia;color:#8a9eab88}
body.desktop-game .ds-layer>header h3{font-size:13px;font-weight:500}
body.desktop-game .ds-layer>header small{display:block;font-size:9px;color:#8b9fa9;margin-top:3px}
body.desktop-game .ds-layer>header>b{margin-left:auto;color:#c7a870;font:10px Georgia;letter-spacing:.18em}
body.desktop-game .ds-layer.boss{border-left:1px solid #d3ad6159;padding-left:11px;background:linear-gradient(90deg,#b39a4110,transparent)}
body.desktop-game .ds-preview-enemies{display:flex;flex-direction:column;gap:8px}
body.desktop-game .ds-preview-enemy{display:flex;align-items:center;gap:12px;padding:6px 9px;background:#8eb7cb06;border:1px solid #adbbac09}
body.desktop-game .ds-enemy-thumb{width:54px;height:58px;flex:none;background:radial-gradient(color-mix(in srgb,var(--element) 12%,transparent),transparent);border-bottom:1px solid color-mix(in srgb,var(--element) 45%,transparent)}
body.desktop-game .ds-preview-enemy>div{min-width:0;flex:1}
body.desktop-game .ds-preview-enemy strong{display:block;font-size:11px;font-weight:500;color:#cdd6d6}
body.desktop-game .ds-preview-enemy>div>span{display:block;font:10px/1.8 Georgia,serif;color:#8fa7b2}
body.desktop-game .ds-condition-chips{display:flex;flex-wrap:wrap;gap:4px 6px}
body.desktop-game .ds-condition-chips>span{display:inline-flex;align-items:center;font-size:9px;color:#c8b991;border:1px solid #a58b5240;background:#9d844612;padding:1px 5px;cursor:help}
body.desktop-game .ds-party-heading{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--ds-line);padding-bottom:13px;gap:10px}
body.desktop-game .ds-party-heading h2{padding:0;border:0}
body.desktop-game .ds-text-button{background:none;border:0;color:#d1b682!important;font-size:10px!important;padding:0}
body.desktop-game .ds-prep-party{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-top:15px;flex:none}
body.desktop-game .ds-prep-hero{min-width:0;position:relative;display:flex;flex-direction:column;align-items:center;border:1px solid color-mix(in srgb,var(--element) 30%,transparent);padding:0 0 6px;background:linear-gradient(0deg,#0c1826,#101c27a3);overflow:hidden}
body.desktop-game .ds-prep-hero>b{position:absolute;left:0;top:0;font-size:8px;background:#152635c7;padding:1px 4px;color:var(--element);font-weight:400}
body.desktop-game .ds-hero-thumb{height:75px;width:100%;background:radial-gradient(ellipse at bottom,color-mix(in srgb,var(--element) 20%,transparent),transparent 70%)}
body.desktop-game .ds-prep-hero>span:not(.ds-native-image){font-size:11px;line-height:1.3;color:#dce0d8;margin-top:4px}
body.desktop-game .ds-prep-hero>small{font:9px Georgia;color:#8da6b3;margin-top:5px}
body.desktop-game .ds-party-stats{display:flex;gap:18px;justify-content:space-between;padding:12px 0;margin-bottom:4px;border-bottom:1px solid #b4ac8d27;flex:none}
body.desktop-game .ds-party-stats>span{font-size:9px;color:#8296a3}
body.desktop-game .ds-party-stats strong{font:14px Georgia;color:#dcdac7;margin-left:7px}
body.desktop-game .ds-prep-intel{min-height:0;overflow:auto;padding:0 8px 0 0;scrollbar-width:thin;scrollbar-color:#7b72514d transparent}
body.desktop-game .ds-prep-intel h3{font-size:12px;font-weight:500;margin:12px 0 9px}
body.desktop-game .ds-prep-intel>.ds-condition-chips>span{font-size:10px;padding:2px 6px}
body.desktop-game .ds-mechanic{display:inline-flex;gap:5px;align-items:center}
body.desktop-game .ds-mechanic i{display:inline-grid;place-items:center;font-style:normal;font-size:8px;width:15px;height:15px;border:1px solid #b79b5866;color:#e2c798;background:#b79b5814}
body.desktop-game .ds-tools-note{font-size:9px;color:#879baa;line-height:1.7;margin-bottom:7px!important}
body.desktop-game .ds-team-tools article{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid #9fb6ac10}
body.desktop-game .ds-team-tools article>i{font:11px/25px serif;width:25px;height:25px;flex:none;text-align:center;border:1px solid #7c8c8e3b;background:#2636453b;color:#a8b4b4}
body.desktop-game .ds-team-tools article.available>i{border-color:#829c6666;color:#bed296;background:#7b915214}
body.desktop-game .ds-team-tools article>div{min-width:0}
body.desktop-game .ds-team-tools strong{display:flex;flex-wrap:wrap;gap:5px 12px;font-size:10px;font-weight:500;color:#c9d2cc;align-items:center}
body.desktop-game .ds-team-tools strong small{font-size:9px;font-weight:400;color:#92a4ab}
body.desktop-game .ds-team-tools .available strong small{color:#acc58c}
body.desktop-game .ds-team-tools p{font-size:10px;color:#8ca0ab;line-height:1.7;margin-top:3px}
body.desktop-game .ds-depart{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:auto;padding-top:15px;border-top:1px solid var(--ds-line);flex:none}
body.desktop-game .ds-depart>div{min-width:0}
body.desktop-game .ds-depart strong{display:block;font-size:12px;font-weight:400;color:#ddd0ae}
body.desktop-game .ds-depart small{display:block;font-size:9px;color:#8398a4;margin-top:4px}
body.desktop-game .ds-depart .ds-primary{width:148px;flex:none}
@media (min-width:1900px){body.desktop-game .desktop-shell{--ds-header:76px;--ds-rail:104px}body.desktop-game .ds-content{font-size:15px}body.desktop-game .ds-world-heading{left:55px;top:44px}body.desktop-game .ds-world-heading h1,body.desktop-game .ds-map-heading h1{font-size:42px}body.desktop-game .ds-region-node strong{font-size:19px}body.desktop-game .ds-region-seal{width:70px;height:70px;font-size:30px}body.desktop-game .ds-chapter-node{min-width:195px;padding:11px 19px 11px 13px}body.desktop-game .ds-chapter-node strong{font-size:17px}body.desktop-game .ds-chapter-node small,body.desktop-game .ds-chapter-node em{font-size:10px}body.desktop-game .ds-expedition{left:50px;bottom:44px;max-width:300px;padding:23px}body.desktop-game .ds-expedition h2{font-size:21px}body.desktop-game .ds-expedition p{font-size:13px}body.desktop-game .ds-preparation{padding:33px 48px 36px}body.desktop-game .ds-prep-heading h1{font-size:34px}body.desktop-game .ds-prep-grid{grid-template-columns:1fr minmax(560px,.8fr);gap:50px}body.desktop-game .ds-prep-grid h2{font-size:19px}body.desktop-game .ds-preview-enemy strong{font-size:14px}body.desktop-game .ds-preview-enemy>div>span{font-size:12px}body.desktop-game .ds-enemy-thumb{width:72px;height:77px}body.desktop-game .ds-condition-chips>span{font-size:11px}body.desktop-game .ds-hero-thumb{height:110px}body.desktop-game .ds-prep-hero>span:not(.ds-native-image){font-size:14px}body.desktop-game .ds-party-stats strong{font-size:18px}body.desktop-game .ds-prep-intel h3{font-size:15px}body.desktop-game .ds-team-tools strong{font-size:13px}body.desktop-game .ds-team-tools p{font-size:12px}body.desktop-game .ds-team-tools strong small,body.desktop-game .ds-tools-note{font-size:11px}body.desktop-game .ds-depart .ds-primary{width:190px}}
@media (max-height:800px){body.desktop-game .ds-menu{gap:8px;padding-top:18px}body.desktop-game .ds-world-heading{top:24px}body.desktop-game .ds-world-heading h1{font-size:28px}body.desktop-game .ds-expedition{max-width:210px;padding:14px;bottom:24px}body.desktop-game .ds-expedition h2{font-size:15px}body.desktop-game .ds-expedition p{font-size:10px;margin-bottom:11px}body.desktop-game .ds-world-caption{bottom:22px}body.desktop-game .ds-region-seal{width:48px;height:48px;margin-bottom:15px;font-size:22px}body.desktop-game .ds-region-node strong{font-size:14px}body.desktop-game .ds-preparation{padding:18px 27px 20px}body.desktop-game .ds-prep-heading{padding-bottom:14px}body.desktop-game .ds-prep-heading h1{font-size:25px}body.desktop-game .ds-hero-thumb{height:61px}body.desktop-game .ds-prep-party{margin-top:11px;gap:6px}body.desktop-game .ds-party-stats{padding:9px 0}body.desktop-game .ds-prep-grid{gap:24px}body.desktop-game .ds-layer{padding:11px 0}body.desktop-game .ds-depart{padding-top:11px}}
@media (prefers-reduced-motion:reduce){body.desktop-game .desktop-shell *{animation:none!important}}

/* World evolution: the painting carries the architecture; UI marks destinations. */
body.desktop-game .ds-world{--world-shift-x:0px;--world-shift-y:0px;--world-panel:clamp(216px,16.2vw,298px);background:#070d16}
body.desktop-game .ds-world .ds-world-art{opacity:1;filter:none;transform:translate(var(--world-shift-x),var(--world-shift-y));will-change:transform;transition:transform 180ms ease-out;overflow:visible}
body.desktop-game .ds-world>.ds-map-plane{transform:translate(var(--world-shift-x),var(--world-shift-y));will-change:transform;transition:transform 180ms ease-out;z-index:2;pointer-events:none}
body.desktop-game .ds-world [data-world-atmosphere-host]{position:absolute;inset:0;pointer-events:none}
body.desktop-game .ds-world>.ds-map-atmosphere{z-index:1;background:linear-gradient(90deg,#03091366,transparent 23%,transparent 87%,#03091344);pointer-events:none}
body.desktop-game .ds-world-heading{left:28px;top:28px;z-index:3;padding:0 12px 24px 0;max-width:245px;background:radial-gradient(ellipse at top left,#06111ccd,transparent 74%);pointer-events:none}
body.desktop-game .ds-world-heading h1{font-size:clamp(30px,2.2vw,44px);letter-spacing:.15em;margin:6px 0}
body.desktop-game .ds-world-heading p{font-size:11px;color:#b8c7cf;letter-spacing:.16em}
body.desktop-game .ds-world-progress{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-top:19px;width:190px}
body.desktop-game .ds-world-progress>i{display:grid;place-items:center;width:25px;height:25px;border:1px solid #97acb032;color:#8c9ba1;background:#07111bb0;font:12px serif;font-style:normal;border-radius:50%}
body.desktop-game .ds-world-progress>i.complete{color:var(--element,#e0c991);border-color:currentColor;box-shadow:0 0 12px color-mix(in srgb,var(--element,#e0c991) 32%,transparent)}
body.desktop-game .ds-world-progress>span{width:100%;font-size:9px;letter-spacing:.12em;color:#b7bbb0;margin-top:1px}
body.desktop-game .ds-world-replay{display:block;pointer-events:auto;margin-top:14px}
body.desktop-game .ds-world-replay[hidden]{display:none}
body.desktop-game .ds-world :is(.ds-region-node,.ds-chapter-node,.ds-tower-crown){position:absolute;left:var(--x);top:var(--y);width:38px;height:38px;min-width:0;padding:0;transform:translate(-50%,-50%);display:grid;place-items:center;background:none;border:0;pointer-events:auto;z-index:3;opacity:1;filter:none;overflow:visible;text-shadow:0 2px 7px #000}
body.desktop-game .ds-world .ds-region-seal{box-sizing:border-box;width:36px;height:36px;margin:0;background:linear-gradient(145deg,#18212ceb,#09101ee8);border:1px solid color-mix(in srgb,var(--element) 65%,#ffffff);outline:1px solid color-mix(in srgb,var(--element) 24%,transparent);outline-offset:4px;font-size:19px;box-shadow:0 0 18px color-mix(in srgb,var(--element) 20%,transparent);transition:box-shadow .2s,border-color .2s}
body.desktop-game .ds-world .ds-region-node.locked .ds-region-seal{border-color:#647d83;color:#a2b3b7;outline-color:#647d8338;box-shadow:none}
/* perf 2026-10-15: the breathing glow fades a pseudo-element (compositor opacity) instead of animating box-shadow, which repainted on the main thread every frame while the map idled. */body.desktop-game .ds-world .ds-region-node.current .ds-region-seal{position:relative;box-shadow:0 0 17px #dfb96e33}body.desktop-game .ds-world .ds-region-node.current .ds-region-seal::before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;box-shadow:0 0 25px #dfb96e4d;opacity:0;pointer-events:none;will-change:opacity;animation:ds-world-breathe-glow 4s ease-in-out infinite}@keyframes ds-world-breathe-glow{0%,100%{opacity:0}50%{opacity:1}}@media(prefers-reduced-motion:reduce){body.desktop-game .ds-world .ds-region-node.current .ds-region-seal::before{animation:none}}
body.desktop-game .ds-world .ds-region-node.complete .ds-region-seal:after{content:'·';position:absolute;right:-8px;top:-9px;color:#ffedb6;font:bold 22px serif}
body.desktop-game .ds-world .ds-landmark-label{position:absolute;top:49px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;width:max-content;max-width:152px;padding:4px 9px 5px;gap:1px;background:radial-gradient(ellipse,#05101deb 0%,#07111c9e 58%,transparent 74%);white-space:nowrap;color:#e4ded0;pointer-events:auto}
body.desktop-game .ds-world .ds-landmark-label strong{font:14px/1.7 'Noto Serif SC','Songti SC',serif;font-weight:500;letter-spacing:.1em;color:#e5e2d3}
body.desktop-game .ds-world .ds-landmark-label small{font-size:9px;line-height:1.6;color:#b9c3c5;margin:0;letter-spacing:.07em}
body.desktop-game .ds-world .ds-region-node.available .ds-landmark-label small{color:color-mix(in srgb,var(--element) 65%,#ddd)}
body.desktop-game .ds-world .ds-chapter-node>i{width:25px;height:25px;display:grid;place-items:center;font:22px/1 Georgia;color:#cabb9c;background:#0b1726d9;border:1px solid #bda77866;border-radius:50%;box-shadow:0 0 15px #e2c68d30}
body.desktop-game .ds-world .ds-chapter-node>.ds-landmark-label{top:50%;left:auto;transform:translateY(-50%);align-items:flex-start;max-width:152px;padding:5px 10px;background:linear-gradient(90deg,#09121bdb,#08111ab8,transparent);border-left:1px solid #c4a97455}
body.desktop-game .ds-world .ds-chapter-node.label-right>.ds-landmark-label{left:calc(100% + 6px)}
body.desktop-game .ds-world .ds-chapter-node.label-left>.ds-landmark-label{right:calc(100% + 6px);align-items:flex-end;text-align:right;border-left:0;border-right:1px solid #c4a97455;background:linear-gradient(270deg,#09121bdb,#08111ab8,transparent)}
body.desktop-game .ds-world .ds-chapter-node .ds-landmark-label strong{font-size:14px;line-height:1.6}
body.desktop-game .ds-world .ds-chapter-node .ds-landmark-label small{font-size:8px;letter-spacing:.16em;color:#c6b78e}
body.desktop-game .ds-world .ds-chapter-node .ds-landmark-label em{font:9px/1.5 sans-serif;letter-spacing:.02em;color:#a8b7ba}
body.desktop-game .ds-world .ds-chapter-node.unreleased>i{border-color:#80939c40;box-shadow:none;color:#95a6ac}
body.desktop-game .ds-world .ds-chapter-node.unreleased .ds-landmark-label{border-color:#7f8e9640}
body.desktop-game .ds-world .ds-chapter-node.unreleased .ds-landmark-label strong{color:#b6c1c7}
body.desktop-game .ds-world .ds-tower-crown{box-shadow:none}
body.desktop-game .ds-world .ds-tower-crown>span:first-child{font:24px Georgia;color:#e5c987;filter:drop-shadow(0 0 10px #e8bb5570)}
body.desktop-game .ds-world .ds-tower-crown>.ds-landmark-label{top:auto;bottom:45px}
body.desktop-game .ds-world .ds-tower-crown .ds-landmark-label b{font:13px/1.5 serif;letter-spacing:.16em;color:#dfd2b0}
body.desktop-game .ds-world .ds-tower-crown .ds-landmark-label small{font-size:8px;color:#b7b6a4}
body.desktop-game .ds-world :is(.is-focused,.is-selected) :is(.ds-region-seal,.ds-chapter-node>i){box-shadow:0 0 23px #ffe2a36b;border-color:#ffe4a6}
body.desktop-game .ds-world :is(.is-focused,.is-selected)>.ds-landmark-label{filter:brightness(1.25)}
body.desktop-game .ds-focus-route{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;opacity:.65}
body.desktop-game .ds-focus-route path{fill:none;stroke:url(#world-focus-glow);stroke-width:1;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 3px #e8c988);animation:ds-world-trail 4s ease-in-out infinite}body.desktop-game .ds-focus-route path:not([d]){animation:none}/* perf 2026-10-15: no trail drawn → no SVG animation ticking on the main thread */
body.desktop-game .ds-world-resonance{position:absolute;inset:0;pointer-events:none}
body.desktop-game .ds-world-resonance-ring{position:absolute;left:50%;top:calc(67% - var(--ring-index)*9%);width:calc(14% + var(--ring-index)*2%);height:3%;transform:translate(-50%,-50%);border:1px solid #d9bd743d;border-radius:50%;box-shadow:0 0 13px #d7b46d20}
body.desktop-game .ds-world .ds-expedition{left:26px;bottom:40px;width:clamp(196px,16.2vw,278px);max-width:none;box-sizing:border-box;padding:17px 16px 13px;background:linear-gradient(125deg,#081523ef,#0a1727d9);border:1px solid #c7a56240;box-shadow:0 12px 40px #0005}
body.desktop-game .ds-world .ds-expedition h2{font-size:clamp(15px,1.1vw,21px);margin:8px 0;line-height:1.6}
body.desktop-game .ds-world .ds-expedition p{font-size:10px;line-height:1.8;color:#b7c2c9;margin-bottom:12px}
body.desktop-game .ds-expedition-party{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;margin-top:12px}
body.desktop-game .ds-expedition-party>button{height:43px;position:relative;min-width:0;padding:0;overflow:hidden;border:1px solid color-mix(in srgb,var(--element) 35%,transparent);background:#172a36}
body.desktop-game .ds-expedition-portrait{width:100%;height:100%}
body.desktop-game .ds-expedition-party i{position:absolute;top:0;left:0;font:8px sans-serif;padding:1px 2px;background:#071320b9;color:#f1dba3}
body.desktop-game .ds-expedition-team{display:block;margin:8px 0 12px auto}
body.desktop-game .ds-world .ds-expedition>.ds-primary{min-height:40px;font-size:12px!important;padding:9px 12px}
body.desktop-game .ds-world .ds-expedition>small{font-size:8px;margin-top:10px;color:#98a6af}
body.desktop-game .ds-world-detail{position:absolute;right:22px;top:50%;transform:translateY(-50%);width:var(--world-panel);box-sizing:border-box;z-index:4;padding:20px 17px 17px;background:linear-gradient(145deg,#081523f2,#0b1828e8);border:1px solid #c7a56250;box-shadow:0 15px 50px #0008;max-height:calc(100% - 76px);overflow:auto;scrollbar-width:thin;scrollbar-color:#bba06d40 transparent}
body.desktop-game .ds-world-detail[hidden]{display:none}
body.desktop-game .ds-world-detail>.ds-kicker{font-size:8px;letter-spacing:.12em;padding-right:12px}
body.desktop-game .ds-world-detail h2{font-size:clamp(18px,1.4vw,26px);line-height:1.5;margin:7px 0 13px}
body.desktop-game .ds-detail-close{position:absolute;right:7px;top:5px;border:0;background:none;color:#b6bec1!important;padding:2px 7px;font-size:22px!important}
body.desktop-game .ds-world-portal{position:relative;width:100%;aspect-ratio:16/9;background:radial-gradient(ellipse,#233a4650,transparent);overflow:hidden;border-block:1px solid #bca57721}
body.desktop-game .ds-world-portal:empty{display:none}
body.desktop-game .ds-detail-area-art{position:absolute;inset:0;width:100%;height:100%}
body.desktop-game .ds-detail-story{font-size:11px;line-height:1.9;color:#b6c1c7;margin:12px 0!important}
body.desktop-game .ds-detail-boss{display:flex;align-items:center;gap:10px;margin:12px 0;padding:9px 0;border-block:1px solid #b8a77a24}
body.desktop-game .ds-detail-portrait{width:47px;height:53px;flex:none;background:radial-gradient(#52636640,transparent)}
body.desktop-game .ds-detail-boss>div{min-width:0}
body.desktop-game .ds-detail-boss small{display:block;color:#9aa7ac;font-size:9px;margin-bottom:4px}
body.desktop-game .ds-detail-boss strong{font:12px/1.6 serif;color:#dccba8}
body.desktop-game .ds-detail-progress{margin:12px 0 15px}
body.desktop-game .ds-detail-progress>span{display:flex;justify-content:space-between;font-size:10px;color:#a9b8c1;margin-bottom:7px}
body.desktop-game .ds-detail-progress b{color:#dbca9e;font-weight:400}
body.desktop-game .ds-detail-progress>i{height:2px;background:#84949433;display:block}
body.desktop-game .ds-detail-progress em{height:100%;display:block;background:#cfb878;box-shadow:0 0 7px #cfb87888}
body.desktop-game .ds-detail-gate{display:block;color:#b4b8ac;font-size:9px;line-height:1.7;margin-top:9px}
body.desktop-game .ds-world-detail .ds-primary{font-size:12px!important;min-height:40px}
body.desktop-game .ds-world .ds-world-caption{right:28px;bottom:22px;color:#d3c3a6;pointer-events:none}
body.desktop-game .ds-world .ds-world-caption>span{font-size:28px}
body.desktop-game .ds-world .ds-world-caption b{font-size:12px}
body.desktop-game .ds-world .ds-world-caption small{font-size:9px;color:#a3b1b9}
body.desktop-game .ds-world-keyboard{position:absolute;left:28px;bottom:13px;z-index:3;color:#b0b9be;font-size:8px;letter-spacing:.07em;text-shadow:0 1px 5px #000;pointer-events:none}
/* Regional maps keep their route, but compact nameplates leave the art visible. */
body.desktop-game .ds-region-map .ds-stage-node{width:140px}
body.desktop-game .ds-region-map .ds-stage-node strong{font-size:14px;padding:2px 9px;background:radial-gradient(ellipse,#06131cde,transparent 75%);max-width:170px;white-space:nowrap}
body.desktop-game .ds-region-map .ds-stage-node small{margin-top:2px;padding:1px 8px;background:radial-gradient(ellipse,#06131cd9,transparent 75%)}
body.desktop-game .ds-region-map .ds-stage-orbit{width:44px;height:44px;outline-offset:5px;margin-bottom:16px}
body.desktop-game .ds-region-map .ds-stage-node.boss .ds-stage-orbit{width:78px;height:78px;margin-bottom:12px}
body.desktop-game .ds-region-map .ds-map-heading{padding:0 20px 20px 0;background:radial-gradient(ellipse at top left,#07121de3,transparent 75%)}
body.desktop-game .ds-region-map .ds-stage-routes path{stroke-width:.15;stroke:#c5b89655}
body.desktop-game .ds-region-map .ds-stage-routes path.cleared{stroke:#dfc79199}
@keyframes ds-world-trail{0%,100%{opacity:.55}50%{opacity:1}}
@media(min-width:1900px){body.desktop-game .ds-world-heading{left:42px;top:38px;max-width:300px}body.desktop-game .ds-world .ds-expedition{left:40px;bottom:50px;padding:22px}body.desktop-game .ds-world-detail{right:36px;padding:25px 22px}body.desktop-game .ds-world .ds-landmark-label strong,body.desktop-game .ds-world .ds-chapter-node .ds-landmark-label strong{font-size:17px}body.desktop-game .ds-world .ds-landmark-label small,body.desktop-game .ds-world .ds-chapter-node .ds-landmark-label em{font-size:10px}body.desktop-game .ds-world .ds-region-seal{width:42px;height:42px;font-size:22px}body.desktop-game .ds-expedition-party>button{height:58px}body.desktop-game .ds-world .ds-expedition p{font-size:12px}body.desktop-game .ds-world-keyboard{left:42px;bottom:20px}body.desktop-game .ds-detail-story{font-size:12px}body.desktop-game .ds-detail-boss strong{font-size:14px}body.desktop-game .ds-region-map .ds-stage-node strong{font-size:17px}body.desktop-game .ds-region-map .ds-stage-node.boss .ds-stage-orbit{width:96px;height:96px}}
@media(max-width:1500px){body.desktop-game .ds-world .ds-chapter-node>.ds-landmark-label{max-width:122px;padding-inline:7px}body.desktop-game .ds-world .ds-chapter-node .ds-landmark-label strong{font-size:12px}body.desktop-game .ds-world-detail{right:16px;padding:16px 13px}body.desktop-game .ds-world-heading{max-width:200px}body.desktop-game .ds-world-heading p{font-size:10px}}
@media(max-height:800px){body.desktop-game .ds-world-heading{top:21px}body.desktop-game .ds-world-progress{margin-top:12px}body.desktop-game .ds-world .ds-expedition{padding:13px 12px;bottom:35px;left:23px;width:194px}body.desktop-game .ds-world .ds-expedition p{font-size:9px;margin-bottom:8px}body.desktop-game .ds-expedition-party{margin-top:8px;gap:3px}body.desktop-game .ds-expedition-party>button{height:35px}body.desktop-game .ds-expedition-team{margin:7px 0 9px}body.desktop-game .ds-world-detail h2{font-size:18px;margin-bottom:9px}body.desktop-game .ds-detail-story{font-size:10px;margin-block:9px!important}body.desktop-game .ds-detail-boss{margin-block:8px;padding-block:6px}body.desktop-game .ds-detail-portrait{width:40px;height:44px}body.desktop-game .ds-world-detail{max-height:calc(100% - 62px)}}
@media(prefers-reduced-motion:reduce){body.desktop-game .ds-world :is(.ds-world-art,.ds-map-plane){transform:none!important;will-change:auto}body.desktop-game .ds-world *{animation:none!important;transition:none!important}}
body.desktop-game .ds-world-load{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);z-index:3;display:flex;align-items:center;gap:12px;padding:8px 16px;background:#091522d9;border:1px solid #ac95604d;color:#bcc8ce;font-size:11px;max-width:45%;text-align:center}
body.desktop-game .ds-world[data-map-ready="true"] .ds-world-load{display:none}
body.desktop-game .ds-world[data-map-ready="failed"]>.ds-map-plane{visibility:hidden}
body.desktop-game .ds-world-load button{border:0;border-bottom:1px solid #bca879;background:none;color:#e2c896;white-space:nowrap;padding:3px;font-size:10px}
body.desktop-game .ds-world-load button[hidden]{display:none}
body.desktop-game .ds-world[data-world-unlocked~="2"] [data-world-key="chapter:2"]>i,
body.desktop-game .ds-world[data-world-unlocked~="3"] [data-world-key="chapter:3"]>i,
body.desktop-game .ds-world[data-world-unlocked~="4"] [data-world-key="chapter:4"]>i{animation:ds-world-unlocked 3.2s ease-out 1}
@keyframes ds-world-unlocked{0%{box-shadow:0 0 0 0 #f0d9a000;color:#fff4d4}30%{box-shadow:0 0 28px 11px #f0d9a080;border-color:#ffedba}100%{box-shadow:0 0 15px #e2c68d30}}

body.desktop-game .ds-world .ds-expedition:before,body.desktop-game .ds-world .ds-expedition:after{border-color:#d6bd8570}

/* Navigation stays usable throughout its brief reveal; no camera scale is applied. */
body.desktop-game :is(.ds-world,.ds-region-map){animation:ds-map-arrival .6s ease-out both}
body.desktop-game .ds-region-map .ds-stage-node :is(strong,small){background:linear-gradient(90deg,transparent,#06131de6 18%,#06131de6 82%,transparent)}
body.desktop-game .ds-region-map .ds-stage-node:is(:hover,:focus-visible,.selected) .ds-stage-orbit{border-color:#eed79f;box-shadow:0 0 23px #dfc48165}
body.desktop-game .ds-region-map .ds-stage-node:is(:hover,:focus-visible,.selected) strong{color:#f6e7c0;text-shadow:0 0 9px #edc77255;border-bottom:1px solid #dbc08a66}
body.desktop-game .ds-region-map .ds-stage-node.locked:is(:hover,:focus-visible){opacity:.9}
@keyframes ds-map-arrival{from{opacity:.45}to{opacity:1}}
body.desktop-game .ds-region-map .ds-stage-node.locked{opacity:1}
body.desktop-game .ds-region-map .ds-stage-node.locked .ds-stage-orbit{opacity:.65}
body.desktop-game .ds-region-map .ds-stage-node.locked strong{color:#bdc2c0}
body.desktop-game .ds-region-map .ds-stage-node.locked small{color:#a5b1b7}
body.desktop-game .ds-region-map .ds-stage-node.locked:is(:hover,:focus-visible,.selected){opacity:1}
body.desktop-game .ds-region-map .ds-stage-node.locked:is(:hover,:focus-visible,.selected) .ds-stage-orbit{opacity:1}
body.desktop-game .ds-region-map .ds-stage-node.locked:is(:hover,:focus-visible,.selected) strong{color:#f6e7c0}

/* A completed chapter keeps its own light and height, even in a restored save. */
body.desktop-game .ds-world-resonance-ring{--chapter-glow:#ddd3a7;border-color:color-mix(in srgb,var(--chapter-glow) 34%,transparent);box-shadow:0 0 15px color-mix(in srgb,var(--chapter-glow) 24%,transparent)}
body.desktop-game .ds-world-resonance-ring[data-chapter="1"]{--chapter-glow:#ddd3a7}
body.desktop-game .ds-world-resonance-ring[data-chapter="2"]{--chapter-glow:#74cadf}
body.desktop-game .ds-world-resonance-ring[data-chapter="3"]{--chapter-glow:#e9b86c}
body.desktop-game .ds-world-resonance-ring[data-chapter="4"]{--chapter-glow:#83c6ac}

/* ===== Foundation 2026-10-14: approved left stone pillar (方案二), settings gear, page host, letterbox fill ===== */
body.desktop-game .desktop-shell{--ds-colh:calc(100vh - var(--ds-header));--ds-rail:calc(var(--ds-colh) * 694 / 2536);--pg-u:calc(var(--ds-colh) / 100)}
body.desktop-game .ds-frame{display:contents}
body.desktop-game .desktop-shell :is(h1,h2,h3){font-family:var(--uk-serif,"Noto Serif SC",serif)}
/* Pillar: column width follows its height (art 694×2536). Five medallions sit on the calm middle shaft. */
body.desktop-game .ds-menu.ds-pillar{width:var(--ds-rail);box-sizing:border-box;padding:calc(var(--ds-colh)*.178) 0 calc(var(--ds-colh)*.205);gap:0;justify-content:space-evenly;background:url("./assets/desktop/nav/pillar.webp") center top/100% 100% no-repeat;border-right:0;filter:drop-shadow(8px 0 18px #000a)}
body.desktop-game .ds-pillar>.ds-medal{position:relative;display:flex;flex-direction:column;align-items:center;gap:calc(var(--ds-colh)*.004);width:100%;min-height:0;padding:0;margin:0;border:0!important;background:none!important;color:#f3dfae}
body.desktop-game .ds-pillar>.ds-medal:before{display:none!important}
body.desktop-game .ds-pillar>.ds-medal:hover{filter:none}
body.desktop-game .ds-medal-icon{display:block;width:calc(var(--ds-colh)*.077);aspect-ratio:470/475;transition:transform .2s ease,filter .2s ease;filter:drop-shadow(0 4px 6px #000c)}
body.desktop-game .ds-medal-icon img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
body.desktop-game .ds-medal-label{--h:max(20px,calc(var(--ds-colh)*.027));display:flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:calc(var(--ds-rail)*.5);height:var(--h);padding:0 calc(var(--h)*.6);border-style:solid;border-color:transparent;border-width:calc(var(--h)*120/635) calc(var(--h)*620/635);border-image:url("./assets/desktop/nav/plaque.webp") 120 620 fill / calc(var(--h)*120/635) calc(var(--h)*620/635) stretch;font:700 max(12px,calc(var(--ds-colh)*.0155))/1 var(--uk-serif,serif)!important;letter-spacing:.3em!important;text-indent:.3em;color:#f3dfae;text-shadow:0 1px 2px #000;white-space:nowrap}
body.desktop-game .ds-pillar>.ds-medal:is(:hover,:focus-visible) .ds-medal-icon{transform:scale(1.05);filter:brightness(1.12) drop-shadow(0 4px 6px #000c)}
/* The single active-page highlight: medallion ×1.1 + gold outer glow, label #fff1c9. */
body.desktop-game .ds-pillar>.ds-medal.active .ds-medal-icon{transform:scale(1.1);filter:drop-shadow(0 0 12px #ffd27acc) drop-shadow(0 4px 6px #000c)}
body.desktop-game .ds-pillar>.ds-medal.active .ds-medal-label{color:#fff1c9}
body.desktop-game .ds-pillar>.ds-medal:focus-visible{outline:none}
body.desktop-game .ds-pillar>.ds-medal:focus-visible .ds-medal-icon{outline:2px solid #f1d896;outline-offset:3px;border-radius:50%}
body.desktop-game .ds-pillar .ds-dot{position:absolute;top:0;left:calc(50% + var(--ds-colh)*.026);width:max(10px,calc(var(--ds-colh)*.012));height:max(10px,calc(var(--ds-colh)*.012));border-radius:50%;background:radial-gradient(circle at 35% 35%,#ff9a8a,#d5281b 60%,#7d0d06);box-shadow:0 0 6px #ff3b2b,0 0 0 1px #2a0603;font-size:0;pointer-events:none}
/* In battle the stage needs the room: a narrow rail of small medallions (the battle builder may restyle it). */
body.desktop-game .desktop-shell[data-screen="battle"] .ds-menu.ds-pillar{padding:14px 0;gap:6px;justify-content:flex-start;background:linear-gradient(90deg,#0a1018dc,#0c141e5c);filter:none}
/* Settings gear (序章 / 指南 / 声音) in the top bar. */
body.desktop-game .ds-settings{position:relative;flex:none;display:flex;align-items:center}
body.desktop-game .ds-gear{width:clamp(38px,calc(var(--ds-header)*.66),50px);aspect-ratio:1;padding:0;border:0;background:none;border-radius:50%;filter:drop-shadow(0 3px 5px #000b);transition:transform .2s}
body.desktop-game .ds-gear img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
body.desktop-game .ds-gear:hover{transform:rotate(18deg)}
body.desktop-game .ds-gear[aria-expanded="true"]{filter:drop-shadow(0 0 10px #ffd27acc) drop-shadow(0 3px 5px #000b)}
body.desktop-game .ds-settings-menu{position:absolute;right:-6px;top:calc(100% + 10px);z-index:20;display:flex;flex-direction:column;gap:6px;min-width:212px;box-sizing:border-box;padding:6px;border-style:solid;border-color:transparent;border-width:26px;border-image:url("./assets/pages/_kit/panel.webp") 200 fill / 26px stretch;filter:drop-shadow(0 12px 22px #000c)}
body.desktop-game .ds-settings-menu[hidden]{display:none}
body.desktop-game .ds-settings-menu>button{display:flex;align-items:center;gap:12px;width:100%;min-height:40px;padding:6px 12px;border:0;border-radius:4px;background:linear-gradient(90deg,#0b162299,#0b162233);color:#f1dfb3!important;font:700 15px/1 var(--uk-serif,serif)!important;letter-spacing:.2em;text-align:left;white-space:nowrap;box-shadow:inset 0 0 0 1px #d4b47740}
body.desktop-game .ds-settings-menu>button:hover{background:linear-gradient(90deg,#3a2c1499,#0b162244);box-shadow:inset 0 0 0 1px #f1d896aa}
body.desktop-game .ds-settings-menu>button i{display:grid;place-items:center;width:28px;height:28px;flex:none;border-radius:50%;background:url("./assets/pages/_kit/icon-medal.webp") center/contain no-repeat;font:700 13px/1 var(--uk-serif,serif);font-style:normal;color:#f1d896}
body.desktop-game .ds-settings-menu>button em{margin-left:auto;font-style:normal;font-size:13px;letter-spacing:.05em;color:#a8b3b9}
body.desktop-game .ds-settings-menu>button[aria-checked="true"] em{color:#6fd36f}
body.desktop-game .ds-breadcrumb{display:flex;align-items:center;gap:8px}
body.desktop-game .ds-breadcrumb>b{color:#8a6a32;font-weight:400}
body.desktop-game .ds-breadcrumb>strong{color:#f1dfb3;font-weight:600}
/* Persistent page host: right of the pillar, under the top bar; one shared thin gold frame (.uk-frame). */
body.desktop-game .pg-host{position:absolute;left:var(--ds-rail);top:var(--ds-header);right:0;bottom:0;z-index:4;overflow:hidden;background:radial-gradient(ellipse at 50% 40%,#132433,#07101b 72%);color:var(--uk-text,#ede7d8)}
body.desktop-game .pg-host[hidden]{display:none}
body.desktop-game .pg-host:focus{outline:none}
body.desktop-game .pg-page{position:absolute;inset:0}
body.desktop-game .pg-error{position:absolute;inset:0;display:grid;place-items:center;font:700 18px/1.6 var(--uk-serif,serif);color:#f1dfb3}
body.desktop-game .desktop-shell[data-screen="page"]{background:#060d14;pointer-events:auto}
/* World: title column with the expedition card underneath (sketch-pillar-layout), kept clear of every island. */
body.desktop-game .ds-world .ds-world-left{position:absolute;left:calc(var(--pg-u)*2.8);top:calc(var(--pg-u)*2.6);z-index:4;display:flex;flex-direction:column;align-items:flex-start;gap:calc(var(--pg-u)*2.2);width:clamp(206px,calc(var(--pg-u)*28),320px);pointer-events:none}
body.desktop-game .ds-world .ds-world-left>.ds-world-heading{position:relative;inset:auto!important;max-width:none;width:100%;padding:0;background:none;text-shadow:0 2px 8px #000}
body.desktop-game .ds-world .ds-world-left>.ds-world-heading h1{font-size:clamp(28px,calc(var(--pg-u)*4.4),48px);margin:0 0 calc(var(--pg-u)*.6)}
body.desktop-game .ds-world .ds-world-left>.ds-world-heading p{font-size:max(12px,calc(var(--pg-u)*1.3))}
body.desktop-game .ds-world .ds-world-left .ds-world-progress{margin-top:calc(var(--pg-u)*1.4)}
body.desktop-game .ds-world .ds-world-left .ds-world-progress>span{font-size:max(12px,calc(var(--pg-u)*1.1))}
body.desktop-game .ds-world .ds-world-left>.ds-expedition{position:relative;inset:auto!important;width:100%;max-width:none;margin:0;pointer-events:auto;box-sizing:border-box;padding:calc(var(--pg-u)*1.8) calc(var(--pg-u)*1.7) calc(var(--pg-u)*1.3)}
body.desktop-game .ds-world .ds-world-left>.ds-expedition .ds-kicker{font-size:max(12px,calc(var(--pg-u)*1.1));letter-spacing:.14em}
body.desktop-game .ds-world .ds-world-left>.ds-expedition h2{font-size:clamp(15px,calc(var(--pg-u)*2.1),22px);margin:calc(var(--pg-u)*.6) 0}
body.desktop-game .ds-world .ds-world-left>.ds-expedition p{font-size:max(12px,calc(var(--pg-u)*1.25));margin-bottom:calc(var(--pg-u)*1)}
body.desktop-game .ds-world .ds-world-left>.ds-expedition .ds-expedition-party>button{height:calc(var(--pg-u)*5.4)}
body.desktop-game .ds-world .ds-world-left>.ds-expedition .ds-expedition-party i{font-size:max(10px,calc(var(--pg-u)*1))}
body.desktop-game .ds-world .ds-world-left>.ds-expedition .ds-text-button{font-size:max(12px,calc(var(--pg-u)*1.2))!important}
body.desktop-game .ds-world .ds-world-left>.ds-expedition>small{font-size:max(11px,calc(var(--pg-u)*1))}
body.desktop-game .ds-world .ds-world-left.is-compact>.ds-expedition p,body.desktop-game .ds-world .ds-world-left.is-compact .ds-world-replay{display:none}
body.desktop-game .ds-world .ds-world-left.is-compact>.ds-expedition>small{display:none}
body.desktop-game .ds-world .ds-world-left.is-mini>.ds-expedition .ds-expedition-party,body.desktop-game .ds-world .ds-world-left.is-mini .ds-world-heading>p{display:none}
body.desktop-game .ds-world .ds-world-keyboard{font-size:max(11px,calc(var(--pg-u)*1))}
/* Letterbox fill: mirrored, blurred copies at the map's own displayed size (never larger than the source). */
body.desktop-game .ds-map-extend{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
body.desktop-game .ds-map-extend img{position:absolute;left:var(--map-x,0px);top:var(--map-y,0px);width:var(--map-width,0px);height:var(--map-height,0px);max-width:none;max-height:none;filter:blur(9px) brightness(.72) saturate(.9);translate:var(--world-shift-x,0px) var(--world-shift-y,0px)}
body.desktop-game .ds-map-extend img.top{transform:translateY(-100%) scaleY(-1)}
body.desktop-game .ds-map-extend img.bottom{transform:translateY(100%) scaleY(-1)}
body.desktop-game .ds-map-extend img.left{transform:translateX(-100%) scaleX(-1)}
body.desktop-game .ds-map-extend img.right{transform:translateX(100%) scaleX(-1)}
body.desktop-game .ds-map-extend::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#050b1366,transparent 9%,transparent 91%,#050b1366)}
body.desktop-game :is(.ds-world,.ds-region-map):not([data-map-ready="true"])>.ds-map-extend{visibility:hidden}
body.desktop-game [data-bands="v"]>.ds-map-extend img:is(.left,.right),body.desktop-game [data-bands="h"]>.ds-map-extend img:is(.top,.bottom),body.desktop-game [data-bands="none"]>.ds-map-extend{display:none}
body.desktop-game .ds-region-map .ds-map-extend img{filter:blur(9px) brightness(.5) saturate(.85)}
@media (prefers-reduced-motion:reduce){body.desktop-game .ds-medal-icon,body.desktop-game .ds-gear{transition:none}}
body.desktop-game .ds-world .ds-world-left>.ds-expedition>.ds-primary{font-size:max(12px,calc(var(--pg-u)*1.4))!important;min-height:max(36px,calc(var(--pg-u)*4.4))}
/* Style guide §7 (integration pass): no desktop text under 12px, including the shared top bar and the world-map labels. */
body.desktop-game .ds-brand small{font-size:12px;letter-spacing:.3em;margin-top:4px}
body.desktop-game .ds-resources small{font-size:12px;letter-spacing:.12em;margin-top:3px}
body.desktop-game .ds-resources em{font-size:12px}
body.desktop-game .ds-world .ds-landmark-label small,body.desktop-game .ds-world .ds-chapter-node .ds-landmark-label small,body.desktop-game .ds-world .ds-chapter-node .ds-landmark-label em,body.desktop-game .ds-world .ds-tower-crown .ds-landmark-label small{font-size:12px;letter-spacing:.06em}
body.desktop-game .ds-world .ds-world-left .ds-world-replay.ds-text-button{font-size:max(12px,calc(var(--pg-u)*1.2))!important}
body.desktop-game .ds-world .ds-world-heading p{font-size:max(12px,calc(var(--pg-u)*1.3))}
body.desktop-game .ds-world .ds-world-left>.ds-expedition .ds-expedition-party i{font-size:12px}
body.desktop-game .ds-world .ds-world-left>.ds-expedition>small,body.desktop-game .ds-world .ds-world-keyboard{font-size:max(12px,calc(var(--pg-u)*1))}
body.desktop-game .ds-world .ds-world-caption small{font-size:12px}

/* ---- Round-1 fixes: the world's left column and chapter labels use the kit's stone and gold (no flat dark boxes);
   1080p text ≥14px (12px floor at 1366); the top bar grows with the window at 2560×1440. ---- */
body.desktop-game .ds-world .ds-world-left{width:clamp(206px,calc(var(--pg-u)*30),380px)}
body.desktop-game .ds-world .ds-world-left>.ds-expedition.uk-panel{--uk-pb:clamp(16px,calc(var(--pg-u)*2.6),34px);border:var(--uk-pb) solid transparent;border-image:url("./assets/pages/_kit/panel.webp") 200 fill / var(--uk-pb) stretch;background:none;box-shadow:none;padding:calc(var(--pg-u)*.6) calc(var(--pg-u)*.5) calc(var(--pg-u)*.4);filter:drop-shadow(0 10px 18px #0009)}
body.desktop-game .ds-world .ds-world-left>.ds-expedition.uk-panel::before,body.desktop-game .ds-world .ds-world-left>.ds-expedition.uk-panel::after{content:none}
body.desktop-game .ds-world .ds-world-left>.ds-expedition .ds-kicker{font:700 max(12px,calc(var(--pg-u)*1.4))/1.3 var(--uk-serif);letter-spacing:.1em;color:#d9c08a;text-transform:none}
body.desktop-game .ds-world .ds-world-left>.ds-expedition h2{font-family:var(--uk-serif);color:#f3dfae;text-shadow:0 2px 3px #000}
body.desktop-game .ds-world .ds-world-left>.ds-expedition p{font-size:max(12px,calc(var(--pg-u)*1.45));color:#d6dde0;line-height:1.6}
body.desktop-game .ds-world .ds-world-left>.ds-expedition .ds-expedition-party>button{border:0;border-radius:3px;box-shadow:0 0 0 2px color-mix(in srgb,var(--element,#d4b477) 55%,#3a2c18),0 3px 5px #000a;background:#172a36}
body.desktop-game .ds-world .ds-world-left>.ds-expedition .ds-expedition-party i{background:radial-gradient(circle,#2a1d0e,#140d06);color:#f1d896;border-radius:0 0 3px 0;font:700 12px/1.1 var(--uk-serif)}
body.desktop-game .ds-world .ds-world-left>.ds-expedition .ds-text-button{font-family:var(--uk-serif);font-size:max(12px,calc(var(--pg-u)*1.4))!important;color:#e6cd94}
body.desktop-game .ds-world .ds-world-left>.ds-expedition>.ds-expedition-go.uk-btn{--uk-bh:clamp(38px,calc(var(--pg-u)*5),60px);display:flex;width:100%;min-width:0;min-height:0;padding:0 calc(var(--uk-bh)*.4);background:none;letter-spacing:.2em;font:700 max(14px,calc(var(--pg-u)*1.8))/1 var(--uk-serif)!important;justify-content:center}
body.desktop-game .ds-world .ds-world-left>.ds-expedition>.ds-expedition-go .uk-btn-label{font-size:inherit;line-height:1}
body.desktop-game .ds-world .ds-world-left>.ds-expedition>small{font-size:max(12px,calc(var(--pg-u)*1.4));color:#c3cbcf;margin-top:calc(var(--pg-u)*.8)}
body.desktop-game .ds-world .ds-world-left>.ds-world-heading p{font-size:max(12px,calc(var(--pg-u)*1.45));color:#e2e8ea}
body.desktop-game .ds-world .ds-world-left .ds-world-progress>span{font-size:max(12px,calc(var(--pg-u)*1.4))}
body.desktop-game .ds-world .ds-world-left .ds-world-replay.ds-text-button{font-size:max(12px,calc(var(--pg-u)*1.4))!important}
body.desktop-game .ds-world .ds-world-progress>i{width:max(25px,calc(var(--pg-u)*3));height:max(25px,calc(var(--pg-u)*3));border:0;background:url("./assets/pages/_kit/icon-medal.webp") center/contain no-repeat;color:#cbb88c;font:700 max(12px,calc(var(--pg-u)*1.3)) var(--uk-serif);box-shadow:none}
body.desktop-game .ds-world .ds-world-progress>i.complete{color:var(--element,#f1d896);filter:drop-shadow(0 0 6px color-mix(in srgb,var(--element,#e0c991) 60%,transparent))}
body.desktop-game .ds-world .ds-world-keyboard{font-size:max(12px,calc(var(--pg-u)*1.4))}
/* Chapter landmarks: a gold medal on the map + a small carved stone plaque for the name (was a flat gradient strip). */
body.desktop-game .ds-world .ds-chapter-node>i{width:max(28px,calc(var(--pg-u)*3.4));height:max(28px,calc(var(--pg-u)*3.4));border:0;border-radius:50%;background:url("./assets/pages/_kit/icon-medal.webp") center/contain no-repeat;box-shadow:none;color:#f1d896;font:700 max(14px,calc(var(--pg-u)*1.6))/1 var(--uk-serif);filter:drop-shadow(0 2px 4px #000c)}
body.desktop-game .ds-world .ds-chapter-node.unreleased>i{filter:grayscale(.7) brightness(.75) drop-shadow(0 2px 4px #000c);color:#c9d2d6}
body.desktop-game .ds-world .ds-chapter-node>.ds-chapter-plaque,body.desktop-game .ds-world .ds-chapter-node.label-left>.ds-chapter-plaque{--cp-b:clamp(10px,calc(var(--pg-u)*1.5),18px);box-sizing:border-box;max-width:none;padding:calc(var(--pg-u)*.15) calc(var(--pg-u)*.5);border-style:solid;border-color:transparent;border-width:var(--cp-b);border-image:url("./assets/pages/_kit/panel.webp") 200 fill / var(--cp-b) stretch;background:none;align-items:center;text-align:center;filter:drop-shadow(0 4px 8px #000b)}
body.desktop-game .ds-world .ds-chapter-node.label-right>.ds-chapter-plaque{left:calc(100% + 4px)}
body.desktop-game .ds-world .ds-chapter-node.label-left>.ds-chapter-plaque{right:calc(100% + 4px)}
body.desktop-game .ds-world .ds-chapter-node .ds-chapter-plaque strong{font:700 max(14px,calc(var(--pg-u)*1.7))/1.3 var(--uk-serif);letter-spacing:.08em;color:#f3dfae;white-space:nowrap}
body.desktop-game .ds-world .ds-chapter-node .ds-chapter-plaque small,body.desktop-game .ds-world .ds-chapter-node .ds-chapter-plaque em{font:400 max(12px,calc(var(--pg-u)*1.4))/1.3 var(--uk-sans);letter-spacing:.04em;color:#d2c7aa;white-space:nowrap}
body.desktop-game .ds-world .ds-chapter-node.unreleased .ds-chapter-plaque{filter:saturate(.5) brightness(.9) drop-shadow(0 4px 8px #000b)}
body.desktop-game .ds-world .ds-chapter-node.unreleased .ds-chapter-plaque strong{color:#d7dde0}
body.desktop-game .ds-world :is(.is-focused,.is-selected).ds-chapter-node>i{filter:drop-shadow(0 0 10px #ffe2a3) drop-shadow(0 2px 4px #000c)}
/* Top bar at 2560×1440: taller bar, larger brand / crumb / resource text (the battle bar too; battle reads the bar's real height). */
@media (min-width:2400px) and (min-height:1300px){
  body.desktop-game{--uk-header:96px}
  body.desktop-game .desktop-shell{--ds-header:96px}
  body.desktop-game .desktop-shell[data-screen="battle"]{--ds-header:74px}
  body.desktop-game .ds-topbar{gap:30px;padding:0 40px 0 26px}
  body.desktop-game .ds-brand b,body.desktop-game .desktop-shell[data-screen="battle"] .ds-brand b{font-size:30px}
  body.desktop-game .ds-brand>span,body.desktop-game .desktop-shell[data-screen="battle"] .ds-brand>span{font-size:52px}
  body.desktop-game .ds-brand small{font-size:15px}
  body.desktop-game .ds-breadcrumb{font-size:17px;padding-left:30px}
  body.desktop-game .ds-resources{min-width:440px;gap:40px;padding:0 24px}
  body.desktop-game .ds-resources>span:not(.ds-native-image){grid-template-columns:30px auto;column-gap:9px}
  body.desktop-game .ds-resources i{font-size:28px}
  body.desktop-game .ds-resources strong{font-size:25px}
  body.desktop-game .ds-resources small,body.desktop-game .ds-resources em{font-size:15px}
  body.desktop-game .ds-gear{width:clamp(38px,calc(var(--ds-header)*.66),64px)}
}
@media (max-width:1500px){
  body.desktop-game .ds-world .ds-world-left{width:clamp(196px,calc(var(--pg-u)*26),300px)}
  body.desktop-game .ds-world .ds-chapter-node>.ds-chapter-plaque,body.desktop-game .ds-world .ds-chapter-node.label-left>.ds-chapter-plaque{--cp-b:8px;padding:0 2px}
  body.desktop-game .ds-world .ds-chapter-node .ds-chapter-plaque strong{font-size:max(12px,calc(var(--pg-u)*1.5));letter-spacing:.04em}
  body.desktop-game .ds-world .ds-chapter-node .ds-chapter-plaque small,body.desktop-game .ds-world .ds-chapter-node .ds-chapter-plaque em{font-size:12px;letter-spacing:0}
}
body.desktop-game .ds-world .ds-world-left .ds-world-progress{width:auto}
@media (min-width:1900px) and (min-height:1000px){
  body.desktop-game .ds-world .ds-region-node .ds-landmark-label small,body.desktop-game .ds-world .ds-tower-crown .ds-landmark-label small{font-size:14px;letter-spacing:.04em}
  body.desktop-game .ds-world .ds-tower-crown .ds-landmark-label b{font-size:16px}
  body.desktop-game .ds-world .ds-world-caption b{font-size:15px}
  body.desktop-game .ds-world .ds-world-caption small{font-size:14px}
  body.desktop-game .ds-breadcrumb{font-size:15px}
  body.desktop-game .ds-resources small,body.desktop-game .ds-resources em,body.desktop-game .ds-brand small{font-size:14px}
}
@media (min-width:2400px) and (min-height:1300px){
  body.desktop-game .ds-world .ds-region-node .ds-landmark-label,body.desktop-game .ds-world .ds-tower-crown .ds-landmark-label{max-width:230px}
  body.desktop-game .ds-world .ds-region-node .ds-landmark-label strong,body.desktop-game .ds-world .ds-tower-crown .ds-landmark-label strong{font-size:23px}
  body.desktop-game .ds-world .ds-region-node .ds-landmark-label small,body.desktop-game .ds-world .ds-tower-crown .ds-landmark-label small{font-size:16px}
  body.desktop-game .ds-world .ds-tower-crown .ds-landmark-label b{font-size:20px}
  body.desktop-game .ds-world .ds-world-caption>span{font-size:38px}
  body.desktop-game .ds-world .ds-world-caption b{font-size:19px}
  body.desktop-game .ds-world .ds-world-caption small{font-size:16px}
  /* Top-bar small text at 2560×1440 (this block is last so the 1080p block above cannot pull it back down). */
  body.desktop-game .ds-brand small{font-size:16px}
  body.desktop-game .ds-breadcrumb{font-size:18px}
  body.desktop-game .ds-resources small,body.desktop-game .ds-resources em{font-size:16px}
}
/* Battle / result top bar is shorter (57px at 1366/1440, 58px at 1080p, 74px at 1440p): tighten the resource label line and
   lift the stack so the labels' lower edge clears the resource frame's inner rim at every window size (uifix4: was ≥1900 only). */
body.desktop-game .desktop-shell[data-screen="battle"] .ds-resources small{line-height:1;margin-top:2px}
body.desktop-game .desktop-shell[data-screen="battle"] .ds-resources>span:not(.ds-native-image){transform:translateY(-2px)}
/* 界隙 (2026-10-14): a sixth medallion. Smaller medal + plaque so all six sit on the calm shaft without touching at 1366×768;
   a locked medallion is greyed with the kit's red wax seal (same language as unowned cards), its reason in the tooltip. */
body.desktop-game .ds-menu.ds-pillar{padding:calc(var(--ds-colh)*.172) 0 calc(var(--ds-colh)*.198)}
body.desktop-game .ds-medal-icon{position:relative;width:calc(var(--ds-colh)*.066)}
body.desktop-game .ds-medal-label{--h:max(20px,calc(var(--ds-colh)*.025))}
body.desktop-game .ds-pillar>.ds-medal.is-locked{cursor:not-allowed}
body.desktop-game .ds-pillar>.ds-medal.is-locked .ds-medal-icon img{filter:grayscale(.85) brightness(.58)}
body.desktop-game .ds-pillar>.ds-medal.is-locked .ds-medal-label{color:#a8b3b9}
body.desktop-game .ds-pillar>.ds-medal.is-locked:is(:hover,:focus-visible) .ds-medal-icon{transform:none}
body.desktop-game .ds-medal-seal{position:absolute;right:-10%;bottom:-8%;width:48%;aspect-ratio:1;background:url("./assets/pages/_kit/icon-wax.webp") center/contain no-repeat;filter:drop-shadow(0 2px 3px #000c);pointer-events:none}
/* 界隙: on desktop the mythic pages replace the engine's placeholder entry / battle bar (otherworld-ui.mjs); the phone keeps them. */
body.desktop-game #ow-entry,body.desktop-game #ow-battle-bar{display:none!important}

/* 7 medallions (cloud save 「榜」 on): a little tighter so the column still fits between the capital and the base. */
body.desktop-game .ds-menu.ds-pillar.has-7{padding:calc(var(--ds-colh)*.165) 0 calc(var(--ds-colh)*.185)}
body.desktop-game .ds-pillar.has-7 .ds-medal-icon{width:calc(var(--ds-colh)*.058)}
body.desktop-game .ds-pillar.has-7 .ds-medal-label{--h:max(18px,calc(var(--ds-colh)*.023))}
