/* Illustrated equipment needs space, not a second badge around every object. */
#menu-screen::before,#menu-screen::after,#menu-screen .scene-bg{display:none}
.tech-node{transition:none}
.ui-svg-icon.ui-field-icon{stroke-width:1.15}
#menu-screen .menu-brand-mark{width:38px;height:38px}
#menu-screen .hub-nav-icon{width:48px;height:48px;flex-shrink:0}
.ui-painted-icon{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
/* Art queue 1-E painted battle/tech icons: sized by the same .ui-svg-icon rules as the SVG fallback. */
img.ui-painted-object{object-fit:contain;pointer-events:none;user-select:none;-webkit-user-drag:none}
#menu-screen .quick-icon{width:44px;height:44px}
#menu-screen .arsenal-actions>.feature-card{display:flex;align-items:center;flex-direction:row;gap:22px;text-align:left}
#menu-screen .feature-icon{flex:0 0 64px;width:64px;height:64px}
#menu-screen .feature-copy{flex:1;min-width:0}
#menu-screen .feature-copy small{display:block;max-width:none;margin-top:6px;font-size:12px;line-height:1.5}
#tech-tabs .diff-btn{display:inline-flex;align-items:center;gap:7px}
#tech-tabs .ui-svg-icon{width:28px;height:28px;flex:0 0 28px}
.tech-node h3{display:flex;align-items:center;gap:10px;min-height:38px}
.tech-node h3 .ui-svg-icon{width:36px;height:36px;flex:0 0 36px}
#topbar .hud-stat-icon{width:22px;height:22px;font-size:22px}
#topbar .hud-stat-icon .ui-svg-icon{width:100%;height:100%}
@media(max-width:760px){
  #menu-screen .menu-brand-mark{width:30px;height:30px}
  #menu-screen .hub-nav-icon{width:44px;height:44px}
  #menu-screen .arsenal-actions>.feature-card{gap:16px}
  #menu-screen .feature-icon{flex-basis:56px;width:56px;height:56px}
  #tech-tabs .diff-btn{gap:4px}
}
/* Short field reports pass map gestures through; only urgent notices have a close target. */
/* Home is a mission briefing: route first, deployment second, records aside. */
#menu-screen [data-menu-panel="home"]{padding-top:24px}
#menu-screen .home-mission-metrics{grid-column:1;gap:16px;margin:4px 0 0}
#menu-screen .home-mission-metrics span{padding:0;font-size:12px;letter-spacing:0}
#menu-screen .home-brief-action{gap:12px}
#menu-screen .home-brief-action{transform:none}
#menu-screen .home-brief-action:hover>strong{text-decoration:underline;text-underline-offset:4px}
@media(max-width:760px){
  #menu-screen [data-menu-panel="home"]{padding-top:16px}
}
#wave-announce{position:fixed;inset:auto;transform:none;padding:0;font:inherit;font-size:12px;line-height:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:normal;pointer-events:none;animation:none}
#boss-alert{position:fixed;inset:auto;transform:none;padding:0;font:inherit;font-size:12px;font-weight:700;line-height:1.2;letter-spacing:normal;white-space:normal;overflow-wrap:anywhere;pointer-events:none;animation:none}
#map-banner{position:static;inset:auto;transform:none;flex:0 0 auto;margin:0;padding:6px 12px;font:inherit;font-size:13px;line-height:1.4;letter-spacing:normal;pointer-events:none;animation:none}
body:not(.game-active) #map-banner{display:none!important}
.wave-announcement-detail{margin:0 0 6px}
.field-drawer-label{display:none}
.place-confirm-icon .frontier-tower-portrait{display:block;width:38px;height:38px;object-fit:contain}
.tower-upgrade-preview{margin-top:8px;padding:8px;font-size:12px}
.tower-upgrade-preview>strong{display:block;margin-bottom:6px;font-size:12px}
.tower-branch-preview{padding-top:6px;font-size:12px}
.tower-branch-preview .irow{gap:8px;flex-wrap:wrap}
.tower-branch-preview .ival{font-variant-numeric:tabular-nums}
.tower-upgrade-preview small,#infopanel>small{display:block;font-size:12px;line-height:1.5}
#battle-stage{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0;overflow:hidden}
#battle-stage #cwrap{min-width:0;min-height:0;order:0}
#battle-stage .map-navigation-overlay{position:relative;inset:auto;height:auto;flex:0 0 auto;align-items:center;padding:4px 8px;pointer-events:auto;gap:8px}
#battle-stage .battle-fit-toggle{position:static;float:none;margin:0;flex:0 0 44px;align-self:flex-end;width:auto;min-width:84px}
#battle-fit-toggle[hidden]{display:none}
#cwrap.painted-frontier::before{display:none}
body.game-active .tcard{padding:6px 5px 9px}
body.game-active .tcard:hover{transform:none}
body.game-active .tcicon{background:transparent;border:0;box-shadow:none;border-radius:0}
body.game-active .tccost{font-variant-numeric:tabular-nums}
.frontier-tower-portrait{object-fit:contain!important;padding:2px}
#wave-preview{position:relative;inset:auto;transform:none;max-width:none;width:100%;padding:0 14px;pointer-events:auto;z-index:12;flex:0 0 auto;gap:10px;align-items:center}
body:not(.game-active) #wave-preview{display:none!important}
.wave-intel{flex:1;min-width:0}
.wave-intel summary{display:flex;align-items:center;gap:14px;min-height:44px;cursor:pointer;list-style:none;font-size:12px}
.wave-intel summary::-webkit-details-marker{display:none}
.wave-intel summary strong{flex:0 0 auto;font-size:13px}
.wave-intel summary small{margin-left:auto;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.wave-intel-details{padding:2px 0 12px;max-height:160px;overflow:auto;font-size:12px}
.wave-intel-details .wp-route{display:flex;gap:14px;margin-bottom:6px}
#auto-wave-countdown{font-size:12px;white-space:nowrap}
#auto-wave-countdown:empty{display:none}
#auto-wave-countdown button{margin-left:8px;cursor:pointer}
@media(min-width:761px){
  #side{width:330px;max-width:32vw}
  #side.collapsed{width:32px}
  #side-inner{display:flex;flex-direction:column;min-width:0}
  #tower-sec{flex:1 1 46%;min-height:160px}
  #side-inner>.ssec{padding:6px 12px}
  .info-section{flex:1 1 44%;min-height:120px}
}
@media(max-width:760px){
  #battle-stage{display:grid;grid-template-columns:minmax(0,1fr) 88px;grid-template-rows:56px minmax(0,1fr);grid-template-areas:"navigation fit" "map map"}
  #battle-stage #cwrap{grid-area:map}
  #battle-stage .map-navigation-overlay{grid-area:navigation;width:auto!important;min-width:0;padding:4px;gap:4px}
  #battle-stage .battle-fit-toggle{grid-area:fit;width:84px;align-self:center;justify-self:center;padding:4px 6px;line-height:1.2}
  #battle-stage:has(#battle-fit-toggle[hidden]){grid-template-areas:"navigation navigation" "map map"}
  #battle-stage .battle-minimap-shell{padding:0}
  #battle-stage #battle-minimap{width:80px;height:48px}
  #wave-preview{padding:0 8px;flex-wrap:wrap;gap:0}
  .wave-intel{flex-basis:100%}
  .wave-intel summary{gap:8px;font-size:12px}
  .wave-intel summary strong{font-size:12px}
  #auto-wave-countdown:not(:empty){padding-bottom:5px;width:100%;text-align:right}
  .wave-intel-details{max-height:120px}
  body.game-active .tcard{min-height:76px;grid-template-rows:36px auto auto;padding:3px 4px 4px}
  body.game-active .tcard .tcicon{height:36px}
  body.game-active .tcard .tcmeta,body.game-active .tcard .tcdesc{display:none}
  #side[data-mobile-panel="details"]{height:min(280px,34dvh)}
  #side #collapse-btn{gap:8px}
  #main.mobile-map-overview #battle-stage{flex:0 0 var(--overview-stage-height);height:var(--overview-stage-height);grid-template-rows:var(--overview-toolbar-height) minmax(0,1fr)}
  #main.mobile-map-overview #side:not(.collapsed){flex:1 1 0;height:auto;min-height:0;overflow-y:auto}
  #main.mobile-map-overview #side:not(.collapsed) #side-inner{height:auto;min-height:240px;flex:1 0 auto}
  #side-inner{height:calc(100% - 44px)}
  .field-drawer-label{display:inline;font-size:12px}
  .map-zoom-btn{width:44px}
  #side[data-mobile-panel="details"]>.ssec,#side[data-mobile-panel="details"] #side-inner>.ssec,#side[data-mobile-panel="details"] .info-head{display:none}
}
@media(min-width:761px) and (max-width:1080px) and (max-height:600px){
  .battle-fit-toggle{display:block;position:sticky;float:left;left:8px;bottom:8px;margin-top:-52px;margin-left:8px;z-index:8;cursor:pointer}
  #side-inner{min-height:0}
  #side .mobile-panel-tabs{display:grid;grid-template-columns:1fr 1fr;gap:5px;height:48px;padding:4px 8px;flex-shrink:0}
  #side .info-head,#side #side-inner>.ssec{display:none}
  #side:not(.details-open) .info-section,#side.details-open #tower-sec{display:none}
  #side .info-section,#side #tower-sec{flex:1;min-height:0}
}
/* Account/campaign wallet choice: a functional switch within the quartermaster. */
#shop-status{margin:8px 0;line-height:1.5}
#shop-retry.hidden{display:none}
#shop-retry{min-height:44px;margin-bottom:10px}

/* ART-06 painted facade: hub backdrop, chapter covers on route nodes, chapter card and archive. */
.chapter-route-track::before,.chapter-route-track::after{top:24px}
.chapter-route-node{gap:8px}
.chapter-route-marker{position:relative;width:48px;height:48px;padding:0;transform:none;overflow:visible}
.chapter-route-node.active .chapter-route-marker{transform:scale(1.12)}
.chapter-route-cover{position:absolute;inset:-3px;width:calc(100% + 6px);height:calc(100% + 6px);object-fit:contain;pointer-events:none;user-select:none}
.chapter-route-marker b{position:absolute;right:-6px;bottom:-5px;min-width:18px;padding:1px 3px;font-size:12px;line-height:12px;text-align:center;transform:none}
.chapter-transition-inner{position:relative;padding-right:min(176px,34vw)}
.chapter-transition-cover{position:absolute;right:20px;top:50%;width:min(140px,28vw);height:min(140px,28vw);object-fit:contain;transform:translateY(-50%);pointer-events:none}
.archive-chapter-top{grid-template-columns:34px auto minmax(0,1fr)}
.archive-chapter-cover{grid-row:1/3;width:34px;height:34px;object-fit:contain}
@media(max-width:760px){
  .chapter-route-track::before,.chapter-route-track::after{top:19px}
  .chapter-route-marker{width:38px;height:38px}
  .chapter-route-marker b{right:-7px;bottom:-5px;min-width:15px;font-size:12px;line-height:10px}
  .chapter-transition-inner{padding-right:min(112px,30vw)}
  .chapter-transition-cover{right:12px;top:18px;width:min(92px,26vw);height:min(92px,26vw);transform:none}
}
/* Codex art-batch2 C6: decorative icon leaves the balance text accessible. */
#tech-stars .ui-svg-icon{display:inline-block;width:24px;height:24px;vertical-align:middle;margin-inline-end:6px;object-fit:contain}
#app{--battle-ui-font:"Segoe UI","PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif;font-family:var(--ui-font)}
#app :is(.brand,.menu-title,.lc-badge,.lc-num,.lc-stars,.otitle,.up-title,.tt-name,.tt-val,.wp-title,.th-title,.li-kicker,.li-title,.score-table .sv,.settlement-medal-ring,.settlement-rank-row strong,.place-confirm-cost,.chapter-route-node,#wecount,.uname){font-family:var(--ui-font);letter-spacing:normal;text-transform:none}
#app :is(.tt-name,.th-title,.li-title){font-weight:600;line-height:1.4}
#app :is(.sval,.tccost,.ival,.score-table .sv){font-variant-numeric:tabular-nums}
#app :is(button,input):disabled{transform:none}
#app #side .stitle{font-family:var(--ui-font);font-size:14px;font-weight:600}
@media(max-width:760px){
  body.game-active .tcard{min-height:82px;grid-template-rows:36px auto auto}
}
/* tokens: battle-only candidate, no new font downloads */
body.game-active #app{font-family:var(--ui-font)}
/* base */
body.game-active #app :is(.stitle,.wave-intel summary strong){font-family:var(--ui-font);font-weight:600}
body.game-active #app :is(.ival,.sval){font-weight:500}
/* components */
body.game-active #app .mobile-panel-tabs{gap:8px}
body.game-active #app button:disabled{transform:none}
/* sections */
@media(max-width:760px){body.game-active #app #topbar .battle-audio-btn{gap:4px}}
/* Semantic ink candidate: battle sidebar only. */
body.game-active #app #infopanel>div:first-child{font-family:var(--ui-font);font-weight:500!important}
body.game-active #app #side :is(.upg-btn,.sell-btn){opacity:1}
body.game-active #app #side :is(.upg-btn,.sell-btn):disabled{opacity:1}
body.game-active #app #side .tcard.disabled,body.game-active #app #side .tcard.locked{opacity:1}
body.game-active #app #side :is(.tcard.disabled,.tcard.locked) .tcicon{opacity:.45}
body.game-active #app #side .tcdesc{opacity:1}
body.game-active #topbar #wbtn:disabled{opacity:1}

/* L3 battle controls: preserve anchors while providing fixed touch targets. */
body.game-active #app #side #collapse-btn{transform:none!important}
body.game-active #topbar button{transform:none!important}
body.game-active #app #side button{transform:none!important}
body.game-active #support-quick-tab{transform:translateY(-50%)!important}
body.game-active #guide-quick-tab{transform:none!important}
body.game-active :is(#support-quick-tab,#guide-quick-tab):is(:disabled,[aria-disabled="true"]){opacity:1}
@media(max-width:760px){
  body.game-active #app #topbar .battle-audio-btn .menu-audio-icon{flex-shrink:0}
}
#menu-screen .menu-brand-lockup strong,#menu-screen .menu-page-heading h2,#topbar .brand>span:last-child {
  font-family:var(--ui-font);
  font-weight:600;letter-spacing:.01em;animation:none;
}
#menu-screen .menu-brand-lockup small,#menu-screen .menu-page-heading .page-kicker,body.game-active #app #side .stitle {
  font-family:var(--ui-font);
  font-weight:500;letter-spacing:.01em;animation:none;
}

/* Keep the login wordmark rule inside its own column. */
body.game-active #side .stitle{font-size:12px;letter-spacing:.03em}
body.game-active #side .tcdesc,body.game-active #side .irow,body.game-active #side small,body.game-active #side .empty-info{font-size:12px;line-height:1.45}
#tutorial-hint .th-title{font-size:17px;letter-spacing:0}
#tutorial-hint .th-close{width:44px}
#tutorial-hint{padding-right:58px}
.obox .otitle{letter-spacing:.03em}
.obox small,.obox .score-table .tip-row td{font-size:12px;line-height:1.45}
@media(prefers-reduced-motion:reduce){#tutorial-hint,#level-intro,#wave-announce{animation:none}}
body.game-active #app #side :is(.tcdesc,.ilbl,.tower-targeting small){font-size:12px}
body.game-active #app #side #infopanel>div[style]{font-size:12px!important}
#level-intro .li-close{width:44px}
#level-intro{padding-right:58px}
.wave-intel-details :is(span,small,p,div,strong),.wave-intel-details .wp-tip{font-size:12px}
.obox :is(.settlement-kicker,.settlement-panel-title,.settlement-stat-grid span,.settlement-rank-row,.debrief-analysis p){font-size:12px;letter-spacing:0}
.settings-panel :is(.settings-account,.settings-note,.settings-row small){font-size:12px}
#wave-preview .wave-intel :is(span,small,p,.wp-eitem,.wp-tip,.mini-tag){font-size:12px!important}
body.game-active #app #infopanel>div:first-child{font-size:14px!important}
.obox .debrief-analysis :is(p,span,small),.obox .settlement-panel [style*="font-size"]{font-size:12px!important}
body.game-active #app #tcards :is(.tower-family,.tower-mastery){font-size:12px}
body.game-active #app #side .tower-targeting legend{font-size:12px}
#level-intro .li-rule{font-size:12px!important}
.obox :is(.settlement-medal>span,.settlement-mini-title,.settlement-next-copy>span,.analysis-item>span,.analysis-item>small){font-size:12px;letter-spacing:0}
.obox .debrief-boss-skill{font-size:12px}
.obox .debrief-loadout .loadout-preset{min-width:44px;min-height:44px;font-size:12px}
.obox .settlement-next-map span,.obox .settlement-unlock-card span,.obox .settlement-ad-note{font-size:12px}
body.game-active #app #side :is([style*="font-size:11px"],[style*="font-size:10px"],[style*="font-size:9px"]){font-size:12px!important}
.obox .debrief-loadout .loadout-chip{font-size:12px;line-height:1.4}
#level-intro .li-tags>span{font-size:12px}
#app :is(#wstatus,#support-quick-count){font-size:12px!important}
#topbar [style*="font-size:11px"],#battle-minimap [data-i18n="tacticalMap"]{font-size:12px!important}
#wide-map-coach{grid-template-columns:34px minmax(0,1fr) auto 44px}
#wide-map-coach div>span{font-size:12px}
#wide-map-coach button{width:44px}
.confirm-panel .confirm-title{font-family:var(--ui-font)}
.confirm-panel :is(.confirm-message,small){font-size:12px;line-height:1.5}
.confirm-panel .confirm-actions{flex-wrap:wrap}

/* Chapter reports and field decisions are pages of the same notebook. */
#chapter-transition small{font-size:12px;letter-spacing:.03em}
#chapter-transition h2{font-family:var(--ui-font);line-height:1.1}
#chapter-transition p{font-family:var(--ui-font);font-size:13px;font-weight:400}
#chapter-transition .chapter-transition-skip{min-width:44px;min-height:44px;font-size:12px}
#mission-event :is(.mission-event-head small,p,.mission-event-choices span){font-size:12px;letter-spacing:0}
#mission-event.resolved>span{font-size:12px}
#boss-alert{font-size:12px}
#biome-hazard-status .biome-hazard-copy :is(small,span){font-size:12px}
#chapter-transition .chapter-transition-inner{width:min(620px,calc(100vw - 44px));max-width:100%;min-width:0}
#onboarding-modal :is(.manual-card p,.weapon-guide-head p,.manual-weapon-copy p,.manual-weapon-copy small,.manual-weapon-role){font-size:12px;line-height:1.5}
.settings-panel .unlock-summary-preview>span{font-size:12px}
#onboarding-modal .archive-section-head p{font-size:12px}
#onboarding-modal .archive-chapter :is(strong,small,i){font-size:12px;line-height:1.4}
#onboarding-modal .archive-chapter-top b{font-size:12px;line-height:1.4}
#onboarding-modal .archive-mastery-row{grid-template-columns:90px minmax(0,1fr) 34px;font-size:12px}
#onboarding-modal .archive-mastery-row strong{font-size:12px}
#onboarding-modal :is(.archive-season-medal span,.archive-season-medal strong,.archive-enemy small,.archive-enemy-role,.archive-article-grid p,.archive-lore-grid p,.archive-lore-grid strong){font-size:12px;line-height:1.5}

/* The archive has a bounded index; selecting entries never hides their detail. */
#codex-modal .codex-panel{width:min(980px,94vw)}
#codex-modal .codex-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0}
#codex-modal .codex-body{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(0,1.2fr);gap:16px;min-width:0}
#codex-modal .codex-index{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;align-content:start;max-height:58dvh;overflow:auto;padding:2px;scrollbar-gutter:stable}
#codex-modal .codex-entry{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:4px;min-width:44px;min-height:60px;padding:9px;text-align:left;font:500 13px/1.35 var(--ui-font);overflow-wrap:anywhere}
#codex-modal .codex-entry small{font-size:12px;line-height:1.4}
#codex-modal .codex-detail{min-width:0;padding:14px}
#codex-modal .codex-detail :is(small,p,li,span){font-size:12px;line-height:1.5}
#codex-modal .codex-detail h3{font-size:20px;margin:6px 0 12px}
#codex-modal .codex-stat{display:flex;justify-content:space-between;gap:16px;padding:7px 0}
@media(max-width:760px){
  #codex-modal .codex-body{grid-template-columns:minmax(0,1fr)}
  #codex-modal .codex-index{max-height:28dvh}
}
/* Keep text-bearing header actions wider than the generic icon base width. */
body #menu-screen :is(.menu-audio-btn,.menu-settings-btn) { width: auto !important; }
/* A translated codex name may need two lines; preserve readable text size. */
body #codex-modal .codex-entry { height:auto!important;min-height:60px!important;white-space:normal; }
body #codex-modal .codex-entry small { min-width:0;max-width:100%;white-space:normal;overflow-wrap:anywhere;flex-shrink:0; }
/* Intrinsic grid minimums otherwise push the arsenal buttons off a phone. */
body #menu-screen .arsenal-actions > * { box-sizing: border-box; min-width: 0; max-width: 100%; }
body #menu-screen .command-brief-btn { max-width: 100%; }
@media (max-width: 760px) {
  body #menu-screen :is(.menu-audio-btn,.menu-settings-btn) { width: 44px !important; }
}

/* Primary: deployment, purchase, settlement and generated claim/resume. */

/* Icon targets keep their existing glyph and accessible name. Audio/settings
 * with visible text retain their width; only glyph-only closes are fixed. */
body :is(.settings-modal, .confirm-modal) .icon-btn, body #tutorial-hint .th-close {
  width: 44px !important;
  flex-shrink: 0;
}
body #menu-screen .carousel-arrow {
  width: 44px !important;
  /* Arrow pseudo-element is the existing icon; hide fallback <> text. */
}
/* Disable old decorative gleam, leaving carousel arrow pseudo-icons intact. */

/* Danger is based solely on existing semantic class. Discard remains secondary. */

/* Illustrated rows and route nodes remain open surfaces, without changing
 * display/grid/gaps/padding or their illustration. */
/* Inner labels otherwise retain legacy 7–11px definitions. */

/* Selected state is distinct from pressed/disabled. Underline remains visible
 * without relying solely on fill and does not overwrite aria-* attributes. */
/* Close targets live in small/clipped heads; keep ring inside their bounds. */
/* Desktop hint previously reserved only 42px for its 25px close button. */
body #tutorial-hint { padding-right: 58px; }

/* Independent coach close targets and modal card captions. */
body :is(#wide-map-coach,#level-intro) :is(.wide-map-coach-close,.li-close) { width:44px !important; flex-shrink:0; }

/* Login ticket text remains readable for unavailable sign-in and long translations. */

/* L4 self-hosted DOM fonts; Canvas and offline relaunch require separate checks. */
@font-face{font-family:'DG UI Latin';src:url('/assets/fonts/dg-noto-sans-subset.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:'DG UI Han';src:url('/assets/fonts/dg-noto-sans-sc-subset.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap}
body{font-family:var(--ui-font);font-weight:400}
/* L3 button rules use !important plus IDs: match their scope explicitly. */
h1,h2,h3,h4,strong,b{font-weight:700}
/* Measured small labels on entry and menu; retain existing larger hierarchy. */
#menu-screen :is(.menu-brand-lockup small,.auth-hint){font-size:12px!important}
#menu-screen.menu-hub .auth-hint{white-space:normal;overflow-wrap:anywhere;line-height:1.4}
@media(max-width:760px){
 #menu-screen .menu-brand-lockup strong{font-size:12px!important}
}

/* L18 production startup and login — visual only; JS owns progress. */
/* L18.1 — Woodland splash; visual only */

.splash-screen {
  gap: 14px;
  padding: 20px 16px;
  padding-bottom: max(20px, env(safe-area-inset-bottom));
  overflow-x: hidden;
  overflow-y: auto;
}

.splash-screen::before {
  content: none;
  animation: none !important;
}

.splash-scene {
  width: min(560px, calc(100vw - 36px));
  height: auto;
  aspect-ratio: 16 / 9;
  max-height: 34dvh;
  flex-shrink: 0;
  overflow: hidden;
}


.splash-brand {
  font-family: var(--ui-font);
  font-size: clamp(23px, 4vw, 34px);
  font-weight: 800;
  line-height: 1.15;
  letter-spacing: .035em;
  overflow-wrap: anywhere;
}

.splash-copy {
  font-size: 14px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: .02em;
  text-align: center;
  text-transform: none;
}

.splash-bar-track {
  width: min(360px, 76vw);
  height: 10px;
}

/* Do not set width: existing JS owns progress. */
#splash-bar {
  height: 100%;
  transition: none;
  animation: none !important;
}

#splash-bar::after { display: none; animation: none !important; }

@media (max-height: 430px) {
  .splash-screen { gap: 8px; padding-block: 10px; }
  .splash-scene { max-height: min(118px, 28dvh); }
  .splash-brand { font-size: 22px; }
  .splash-copy { font-size: 12px; }
}

/* L18.2–L18.3 — Auth appearance only */

/* Keep the existing painted landscape. */

/* Visible third option, not a muted text link. */

/* Status becomes supporting information. */

/* Responsive: tablet and portrait phones. */

/* Short landscape phones, including 844x390. */

/* All existing performance/reduced-motion modes. */
@media (prefers-reduced-motion: reduce) {
  .splash-screen *,.splash-screen::before,.splash-screen::after {
    animation: none !important;
  }
}

html:is(.low-perf-mode, .a11y-performance)
  .splash-screen * {
  animation: none !important;
  transition: none !important;
}

/* Production CSS candidate: styles only, no injected UI/state or progress width. */
@media (prefers-reduced-motion: reduce) { #splash-bar { animation: none !important; } }
html:is(.low-perf-mode, .a11y-performance) #splash-bar { animation: none !important; }

/* L11 carousel production candidate: begin. Keep offset math in game-menu.js. */
@media (max-width:900px){
#menu-screen.menu-hub .carousel-wrap{
  width:100%;
  max-width:none;
  min-width:0;
}

#menu-screen.menu-hub .carousel-track-outer{
  box-sizing:border-box;
  width:calc(100% - 108px);
  max-width:252px;
  min-width:0;
  margin-inline:auto;
  padding:4px 0 12px;
  mask-image:none;
}

#menu-screen.menu-hub .carousel-arrow{
  width:44px;
}

#menu-screen.menu-hub .carousel-arrow.left{left:0}
#menu-screen.menu-hub .carousel-arrow.right{right:0}

#menu-screen.menu-hub .carousel-track-outer .level-card.active-card{
  box-sizing:border-box;
  width:100%;
  max-width:100%;
}

#menu-screen.menu-hub .carousel-track-outer .level-card.active-card:hover{
  transform:translateY(var(--card-rise)) scale(1) rotateY(var(--card-tilt));
}

#menu-screen.menu-hub .level-card :is(.lc-badge,.lc-env,.lc-desc,.lc-lock,.lc-metrics,.lc-metrics span,.lc-chip,.lc-unlocks,.lc-tower-chip,.lc-tower-chip *,small){
  font-size:12px!important;
}
}

@media (min-width:601px) and (max-width:900px){
  #menu-screen.menu-hub .carousel-wrap{
    max-width:380px;
    margin-inline:auto;
  }
  #menu-screen.menu-hub .carousel-track-outer{
    width:calc(100% - 88px);
    max-width:292px;
  }
  #menu-screen.menu-hub .carousel-track-outer .level-card{
    min-height:200px;
  }
  #menu-screen.menu-hub .carousel-track-outer .level-card.active-card{
    align-self:flex-start;
  }
}

@media (max-width:600px){
  #menu-screen.menu-hub .carousel-track-outer{
    width:calc(100% - 108px);
    max-width:252px;
  }
}
/* L11 carousel production candidate: end. */
body #menu-screen button.home-brief-action {
  display: grid;
  gap: 8px;
  text-align: left;
}
body #menu-screen button.home-brief-action #home-daily-progress {
  display: inline-flex;
  justify-self: start;
  align-items: center;
}

#admin-modal .admin-panel {
  box-sizing: border-box;
  width: min(980px, calc(100vw - 24px));
  min-width: 0;
}

/* QA-only label stays in normal flow and never covers the admin content. */
#admin-modal .admin-qa-fixture-notice {
  position: static;
  display: block;
  box-sizing: border-box;
  margin: 0 0 10px;
  padding: 8px 10px;
  font: 700 12px/1.35 var(--ui-font);
  overflow-wrap: anywhere;
  pointer-events: none;
}

#admin-modal .admin-summary-item,
#admin-modal .admin-user-row,
#admin-modal .admin-user-main,
#admin-modal .admin-user-meta,
#admin-modal .admin-user-actions,
#admin-modal .admin-audit-row {
  min-width: 0;
}

#admin-modal .admin-summary-item small,
#admin-modal .admin-user-main > span,
#admin-modal .admin-user-meta,
#admin-modal .admin-user-meta span,
#admin-modal .admin-badge,
#admin-modal .admin-reason,
#admin-modal .admin-audit-row,
#admin-modal .admin-empty,
#admin-modal .admin-loading {
  font-size: 12px;
}

#admin-modal .admin-summary-item small {
  line-height: 1.35;
  letter-spacing: .04em;
  overflow-wrap: anywhere;
}

#admin-modal .admin-user-main > strong {
  min-width: 0;
  flex-wrap: wrap;
  overflow-wrap: anywhere;
}

#admin-modal .admin-user-main > span,
#admin-modal .admin-user-meta span,
#admin-modal .admin-audit-row span {
  line-height: 1.4;
  overflow-wrap: anywhere;
  word-break: normal;
}

#admin-modal .admin-badge {
  min-height: 24px;
  box-sizing: border-box;
  line-height: 1.2;
  letter-spacing: .02em;
  white-space: normal;
}

#admin-modal .admin-reason {
  box-sizing: border-box;
  min-width: 0;
  min-height: 44px;
  height: auto;
  padding: 8px 10px;
  line-height: 1.35;
}

#admin-modal .admin-action-group .btn,
#admin-modal .admin-user-actions > .btn,
#admin-modal .admin-toolbar .btn,
#admin-modal .admin-toolbar .diff-btn,
#admin-modal .admin-head .icon-btn {
  box-sizing: border-box;
}

#admin-modal .admin-toolbar {
  flex-wrap: wrap;
  align-items: stretch;
}

#admin-modal .admin-toolbar .leaderboard-tabs {
  min-width: 0;
  max-width: 100%;
  flex-wrap: wrap;
}

#admin-modal .admin-audit-row {
  grid-template-columns: minmax(0, 1fr) minmax(0, .8fr) minmax(0, 1fr) minmax(0, 1.4fr);
  line-height: 1.4;
}

@media (max-width: 720px) {
  #admin-modal .admin-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #admin-modal .admin-user-row {
    grid-template-columns: minmax(0, 1fr);
  }

  #admin-modal .admin-user-actions {
    grid-template-columns: minmax(0, 1fr);
  }

  #admin-modal .admin-audit-row {
    grid-template-columns: minmax(0, 1fr);
    gap: 4px;
  }
}

@media (max-width: 380px) {
  #admin-modal .admin-summary {
    grid-template-columns: minmax(0, 1fr);
  }

  #admin-modal .admin-toolbar .leaderboard-tabs {
    width: 100%;
  }
}
#menu-screen .menu-brand-lockup,
#menu-screen .menu-brand-lockup > div {
  overflow: visible;
}

#menu-screen .menu-brand-lockup strong {
  overflow: visible;
  overflow-wrap: anywhere;
  text-overflow: clip;
  white-space: normal;
}

#menu-screen .menu-hub-status .auth-hint {
  max-width: none;
  overflow: visible;
  overflow-wrap: anywhere;
  text-overflow: clip;
  white-space: normal;
}

@media (max-width: 900px) {
  #menu-screen.menu-hub {
    grid-template-rows: minmax(62px, auto) minmax(0, 1fr) minmax(64px,auto);
  }

  #menu-screen .menu-hub-header {
    box-sizing: border-box;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto auto;
    grid-template-rows: auto auto;
    grid-template-areas: "brand audio settings help" "hint hint hint hint";
    align-content: center;
    align-items: center;
    gap: 2px 8px;
    padding: 5px 18px;
  }

  #menu-screen .menu-brand-lockup {
    grid-area: brand;
    min-width: 0;
    max-width: 100%;
    overflow: visible;
  }

  #menu-screen .menu-brand-lockup > div {
    min-width: 0;
    overflow: visible;
  }

  #menu-screen .menu-brand-lockup strong {
    display: block;
    max-width: 100%;
    overflow: visible;
    overflow-wrap: anywhere;
    text-overflow: clip;
    white-space: normal;
    word-break: normal;
    font-size: 14px !important;
    line-height: 1.08;
    letter-spacing: 1px;
  }

  #menu-screen .menu-brand-lockup small {
    display: block !important;
    font-size: 12px;
    line-height: 1.2;
    letter-spacing: .5px;
    white-space: normal;
  }

  #menu-screen .menu-hub-status {
    display: contents;
  }

  #menu-screen .menu-hub-status .auth-hint {
    grid-area: hint;
    display: block;
    min-width: 0;
    max-width: none;
    overflow: visible;
    overflow-wrap: anywhere;
    text-overflow: clip;
    white-space: normal;
    text-align: left;
    font-size: 12px;
    line-height: 1.3;
  }

  #menu-screen .menu-hub-status :is(.menu-audio-btn, .menu-settings-btn) {
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
  }

  #menu-screen .menu-hub-status .menu-audio-btn { grid-area: audio; }
  #menu-screen .menu-hub-status .menu-settings-btn { grid-area: settings; }
  #menu-screen .menu-hub-status .menu-help-link { grid-area: help; }
}
