/* v654: color-only panel layer. Existing v653 layouts and all game logic stay intact. */
body[data-ui-version="3"] :is(#app, dialog, .mail-dlg, .social-dialog) {
  --v654-ink:var(--tp-ink); --v654-accent:var(--tp-blue); --v654-soft:var(--tp-surface);
  --v654-edge:var(--tp-edge); --v654-label:var(--tp-navy);
}
body[data-ui-version="3"] :is(#app, dialog, .mail-dlg, .social-dialog) :is(.apt-badge,
  .apt-tag,
  .bank-panel,
  .bank-panel-head,
  .boss-car-badge,
  .cadre-card,
  .cadre-section,
  .cave-board-badge,
  .cave-zone-card,
  .cd-card,
  .channel-price-head,
  .channel-price-panel,
  .character-management-section,
  .city-destination-card,
  .civic-badge,
  .civic-card,
  .company-life-head,
  .company-life-panel,
  .company-map-head,
  .company-map-visit-head,
  .copy-row,
  .cs-turn-panel,
  .cv2-head,
  .delivery-route-card,
  .district-badge,
  .dorm-card,
  .dorm-section,
  .dorm-story-dialog,
  .draw-row,
  .emp-card,
  .emp-fatigue-tag,
  .emp-head,
  .emp-tag,
  .employee-detail-dialog,
  .ex-panel,
  .facility-header,
  .feedback-panel,
  .festival-row,
  .fin-stock-row,
  .finance-product-head,
  .furnace-auto-card,
  .furnace-mine-card,
  .furnace-ore-row,
  .furnace-row,
  .gear-gallery-dialog,
  .home-card,
  .home-level-card,
  .hosp-badge,
  .intro-map-badge,
  .inventory-detail-head,
  .life-map-panel,
  .life-screen-header,
  .line-dock-card,
  .line-dock-head,
  .line-dock-tag,
  .line-section-head,
  .logistics-panel,
  .mail-card,
  .mail-dlg,
  .mail-row,
  .material-draw-card,
  .material-draw-head,
  .material-upgrade-card,
  .merchant-card,
  .merchant-rest-row,
  .merchant-tab-panel,
  .miner-card,
  .miner-dispatch-section,
  .miner-panel,
  .miner-pause-row,
  .miner-section,
  .miner-section-head,
  .mini-map-head,
  .ms-head,
  .operation-mode-panel,
  .ore-tier-head,
  .outlet-badge,
  .pack-card,
  .packaging-section,
  .production-tools-dialog,
  .pwa-dialog,
  .pwa-panel,
  .qb-badge,
  .recruit-options-dialog,
  .region-panel,
  .relationship-head,
  .relationship-panel,
  .release-badge,
  .rep-card,
  .rescue-panel,
  .resource-card,
  .restaurant-card,
  .rnd-badge,
  .role-card,
  .sales-card,
  .sample-head,
  .score-card,
  .share-card,
  .signin-card,
  .signin-row,
  .sk-row,
  .social-dialog,
  .staff-section,
  .staff-section-head,
  .stamina-picker-head,
  .street-mission-head,
  .supply-section,
  .system-directory-head,
  .task-card:not(.task-overlay > .task-card),
  .title-badge,
  .training-header,
  .training-preview-badge,
  .welfare-card,
  .welfare-event-card) {
  background:linear-gradient(120deg,#ffffff,var(--v654-soft))!important;
  color:var(--v654-ink)!important;border-color:var(--v654-edge)!important;
  box-shadow:0 3px 10px #35497712!important;text-shadow:none!important;
}
body[data-ui-version="3"] :is(#app, dialog, .mail-dlg, .social-dialog) :is(.apt-badge,
  .apt-tag,
  .bank-panel,
  .bank-panel-head,
  .boss-car-badge,
  .cadre-card,
  .cadre-section,
  .cave-board-badge,
  .cave-zone-card,
  .cd-card,
  .channel-price-head,
  .channel-price-panel,
  .character-management-section,
  .city-destination-card,
  .civic-badge,
  .civic-card,
  .company-life-head,
  .company-life-panel,
  .company-map-head,
  .company-map-visit-head,
  .copy-row,
  .cs-turn-panel,
  .cv2-head,
  .delivery-route-card,
  .district-badge,
  .dorm-card,
  .dorm-section,
  .dorm-story-dialog,
  .draw-row,
  .emp-card,
  .emp-fatigue-tag,
  .emp-head,
  .emp-tag,
  .employee-detail-dialog,
  .ex-panel,
  .facility-header,
  .feedback-panel,
  .festival-row,
  .fin-stock-row,
  .finance-product-head,
  .furnace-auto-card,
  .furnace-mine-card,
  .furnace-ore-row,
  .furnace-row,
  .gear-gallery-dialog,
  .home-card,
  .home-level-card,
  .hosp-badge,
  .intro-map-badge,
  .inventory-detail-head,
  .life-map-panel,
  .life-screen-header,
  .line-dock-card,
  .line-dock-head,
  .line-dock-tag,
  .line-section-head,
  .logistics-panel,
  .mail-card,
  .mail-dlg,
  .mail-row,
  .material-draw-card,
  .material-draw-head,
  .material-upgrade-card,
  .merchant-card,
  .merchant-rest-row,
  .merchant-tab-panel,
  .miner-card,
  .miner-dispatch-section,
  .miner-panel,
  .miner-pause-row,
  .miner-section,
  .miner-section-head,
  .mini-map-head,
  .ms-head,
  .operation-mode-panel,
  .ore-tier-head,
  .outlet-badge,
  .pack-card,
  .packaging-section,
  .production-tools-dialog,
  .pwa-dialog,
  .pwa-panel,
  .qb-badge,
  .recruit-options-dialog,
  .region-panel,
  .relationship-head,
  .relationship-panel,
  .release-badge,
  .rep-card,
  .rescue-panel,
  .resource-card,
  .restaurant-card,
  .rnd-badge,
  .role-card,
  .sales-card,
  .sample-head,
  .score-card,
  .share-card,
  .signin-card,
  .signin-row,
  .sk-row,
  .social-dialog,
  .staff-section,
  .staff-section-head,
  .stamina-picker-head,
  .street-mission-head,
  .supply-section,
  .system-directory-head,
  .task-card:not(.task-overlay > .task-card),
  .title-badge,
  .training-header,
  .training-preview-badge,
  .welfare-card,
  .welfare-event-card) :is(h2,h3,h4,b,strong,p,small,span,em,label,summary,dt,dd) {
  color:var(--v654-ink)!important;text-shadow:none!important;
}
body[data-ui-version="3"] :is(#app, dialog, .mail-dlg, .social-dialog) :is([data-home-panel="bank"],[data-home-panel="furnace"],.bank-panel,.furnace-panel,.finance-product-head) { --v654-accent:var(--tp-blue);--v654-soft:var(--tp-surface);--v654-edge:var(--tp-edge);--v654-label:var(--tp-navy); }
body[data-ui-version="3"] :is(#app, dialog, .mail-dlg, .social-dialog) :is([data-home-panel="staff"],[data-home-panel="life"],.staff-section,.company-life-panel,.dorm-section) { --v654-accent:var(--tp-blue);--v654-soft:var(--tp-surface);--v654-edge:var(--tp-edge);--v654-label:var(--tp-navy); }
body[data-ui-version="3"] :is(#app, dialog, .mail-dlg, .social-dialog) :is([data-home-panel="inventory"],[data-home-panel="miners"],.inventory-grid,.miner-section,.logistics-panel) { --v654-accent:var(--tp-blue);--v654-soft:var(--tp-surface);--v654-edge:var(--tp-edge);--v654-label:var(--tp-navy); }
body[data-ui-version="3"] :is(#app, dialog, .mail-dlg, .social-dialog) :is([data-home-panel="settings"],[data-home-panel="skills"],.settings-controls,.training-panel,.ex-panel) { --v654-accent:var(--tp-blue);--v654-soft:var(--tp-surface);--v654-edge:var(--tp-edge);--v654-label:var(--tp-navy); }
body[data-ui-version="3"] :is(#app, dialog, .mail-dlg, .social-dialog) :is(.player-sheet:not([data-scene-panel="quests"]),.sheet-scroll,.settings-controls,.inventory-item-detail,.warehouse-filter-result,.facility-bay,.facility-blueprint,.district-detail-body,.district-detail>.company-map-visit-head,.company-map-view,.region-panel,.line-dock,.line-dock-top,.line-dock-msg,.system-directory-icon,.sheet-resource-hud>span,.ex-hud-me,.ex-cb-top,.ex-cb-bottom,.ex-cb-stat,.ex-cb-act,.ex-cb-mini,.ex-cb-weapon,.ex-cb-big,.ex-cb-speed) {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--tp-edge)!important;text-shadow:none!important;}
body[data-ui-version="3"] :is(#app, dialog, .mail-dlg, .social-dialog) :is(.district-detail-body,.facility-bay,.facility-blueprint,.ex-cb-top,.ex-cb-bottom,.inventory-item-detail) :is(b,strong,span,small,p,h3,h4) {color:var(--tp-ink)!important;text-shadow:none!important;}
body[data-ui-version="3"] :is(#app, dialog, .mail-dlg, .social-dialog) :is(button.btn,button.secondary,button.ghost,.line-dock-btn,.line-controls-toggle,.production-browse button,.settings-controls button) {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--tp-edge)!important;text-shadow:none!important;box-shadow:none!important;}
body[data-ui-version="3"] :is(#app, dialog, .mail-dlg, .social-dialog) :is(button.primary,.btn.primary,[data-action-confirm],.line-collect-main) {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--tp-edge)!important;}
/* Extra .player-sheet matches v561:101 specificity; #app is intentional. */
body[data-ui-version="3"] #app :is(.player-sheet,.quick-bar,.player-dock,.system-directory) :is(button[aria-selected="true"],button[aria-pressed="true"],button[aria-current="page"],button[aria-current="true"],button.is-on,button.active),
body[data-ui-version="3"] :is(#app, dialog, .mail-dlg, .social-dialog) :is(button[aria-selected="true"],button[aria-pressed="true"],button[aria-checked="true"],button[aria-current="page"],button[aria-current="true"],button.is-on) {background:var(--tp-blue)!important;color:#10324f!important;border-color:var(--tp-edge)!important;box-shadow:var(--tp-shadow)!important;text-shadow:none!important;}
body[data-ui-version="3"] #app .player-sheet .staff-v4-tabs button[aria-selected="true"]>span {background:var(--tp-blue)!important;color:#10324f!important;}
body[data-ui-version="3"] :is(#app, dialog, .mail-dlg, .social-dialog) :is(button,a):focus-visible {outline-color:var(--tp-ink)!important;}
/* Production family follows stable IDs, including sub-lines; never list position. */
body[data-ui-version="3"] #app :is([data-dock-line^="cnc1"],[data-line-card^="cnc1"]) { --v654-accent:var(--tp-blue);--v654-soft:var(--tp-surface);--v654-edge:var(--tp-edge);--v654-label:var(--tp-navy); }
body[data-ui-version="3"] #app :is([data-dock-line^="cnc2"],[data-line-card^="cnc2"]) { --v654-accent:var(--tp-blue);--v654-soft:var(--tp-surface);--v654-edge:var(--tp-edge);--v654-label:var(--tp-navy); }
body[data-ui-version="3"] #app :is([data-dock-line^="cnc3"],[data-line-card^="cnc3"]) { --v654-accent:var(--tp-blue);--v654-soft:var(--tp-surface);--v654-edge:var(--tp-edge);--v654-label:var(--tp-navy); }
body[data-ui-version="3"] #app :is([data-dock-line^="pad-line"],[data-line-card^="pad-line"]) { --v654-accent:var(--tp-blue);--v654-soft:var(--tp-surface);--v654-edge:var(--tp-edge);--v654-label:var(--tp-navy); }
body[data-ui-version="3"] #app :is([data-dock-line^="hose-line"],[data-line-card^="hose-line"]) { --v654-accent:var(--tp-blue);--v654-soft:var(--tp-surface);--v654-edge:var(--tp-edge);--v654-label:var(--tp-navy); }
body[data-ui-version="3"] #app :is([data-dock-line^="caliper-line"],[data-line-card^="caliper-line"]) { --v654-accent:var(--tp-blue);--v654-soft:var(--tp-surface);--v654-edge:var(--tp-edge);--v654-label:var(--tp-navy); }
body[data-ui-version="3"] #app :is([data-dock-line^="research"],[data-line-card^="research"]) { --v654-accent:var(--tp-blue);--v654-soft:var(--tp-surface);--v654-edge:var(--tp-edge);--v654-label:var(--tp-navy); }
body[data-ui-version="3"] #app :is(.line-dock-item,.line-card) {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border:1px solid var(--v654-edge)!important;border-left:5px solid var(--v654-accent)!important;box-shadow:var(--tp-shadow)!important;}
body[data-ui-version="3"] #app .line-dock-item>.line-dock-head,body[data-ui-version="3"] #app .line-card>header {background:var(--tp-surface)!important;color:var(--tp-ink)!important;}
body[data-ui-version="3"] #app .line-dock-item[data-open]>.line-dock-head {background:var(--tp-surface)!important;box-shadow:var(--tp-shadow)!important;}
body[data-ui-version="3"] #app :is(.line-dock-icon,.line-dock-tag,.line-status) {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border:1px solid var(--v654-edge)!important;}
body[data-ui-version="3"] #app .line-dock-item :is(.line-dock-head b,.line-dock-name,.line-dock-info span),body[data-ui-version="3"] #app .line-card :is(header b,p,small) {color:var(--tp-ink)!important;}
body[data-ui-version="3"] #app :is(.line-dock-status,[data-line-timer]) {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border:1px solid var(--tp-edge)!important;border-radius:8px;padding:3px 7px;}
body[data-ui-version="3"] #app .line-dock-led {background:#7775bd!important;box-shadow:0 0 0 3px #e6e3ff!important;}
body[data-ui-version="3"] #app [data-status="running"] .line-dock-led {background:#367bbf!important;box-shadow:0 0 0 3px #dcecff!important;}
body[data-ui-version="3"] #app [data-status="running"] :is(.line-dock-tag,.line-status) {background:#e1efff!important;color:#285583!important;border-color:#b2cde9!important;}
body[data-ui-version="3"] #app [data-status="done"] :is(.line-dock-tag,.line-status,.line-dock-status) {background:#eee4ff!important;color:#62418c!important;border-color:#c7b4e0!important;}
body[data-ui-version="3"] #app :is([data-status="tired"],[data-status="nofunds"],[data-status="nomaterial"],[data-status="unqualified"]) :is(.line-dock-tag,.line-status,.line-dock-status) {background:#fff0e2!important;color:#85421a!important;border-color:#edc7aa!important;}
body[data-ui-version="3"] #app :is(.line-dock-top span,.line-dock-tiles button,.line-dock-tiles button i) {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--tp-edge)!important;}
body[data-ui-version="3"] #app :is(.line-dock-tiles button b,.line-dock-top b,.line-dock-heading,.line-dock-heading small) {color:var(--tp-ink)!important;}
body[data-ui-version="3"] #app :is(.line-card progress,.line-dock-head meter) {accent-color:#6b70c4;}
body[data-ui-version="3"] #app .line-dock-head meter::-webkit-meter-bar {background:#e6eafa;}
body[data-ui-version="3"] #app .line-dock-head meter::-webkit-meter-optimum-value {background:#7b83cc;}
/* Shared chrome and detached dialogs (mounted on body, outside #app). */
body[data-ui-version="3"] :is(dialog,.mail-dlg,.social-dialog,.toast,.toast-quiet) {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--tp-edge)!important;}
body[data-ui-version="3"] #app .panel-home .player-sheet:not([data-scene-panel="quests"]) {background:var(--tp-surface)!important;border-color:var(--tp-edge)!important;}
body[data-ui-version="3"] #app .player-sheet:not([data-scene-panel="quests"])>.sheet-head {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--tp-edge)!important;}
body[data-ui-version="3"] #app .player-sheet:not([data-scene-panel="quests"])>.sheet-head :is(h2,small,b,span) {color:var(--tp-ink)!important;}
body[data-ui-version="3"] :is(#app,dialog,.mail-dlg) :is(select,input,textarea) {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--tp-edge)!important;accent-color:var(--tp-ink);}
body[data-ui-version="3"] :is(#app,dialog,.mail-dlg) :is(.bank-panel-head,.company-life-head,.channel-price-head,.staff-section-head,.miner-section-head,.facility-header,.inventory-detail-head,.company-map-head,.company-map-visit-head,.system-directory-head,.training-header,.finance-product-head) {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--v654-edge,var(--tp-edge))!important;}
body[data-ui-version="3"] :is(#app,dialog,.mail-dlg) :is(.bank-panel-head,.company-life-head,.staff-section-head,.miner-section-head,.line-section-head)>span {background:var(--tp-surface)!important;color:var(--tp-ink)!important;}
body[data-ui-version="3"] :is(#app,dialog,.mail-dlg) :is(.apt-badge,.apt-tag,.emp-tag,.emp-fatigue-tag,.qb-badge,.district-badge,.civic-badge,.inventory-detail-chip,.inventory-selected-mark) {background:var(--v654-soft,#eceaff)!important;color:var(--v654-label,#41428a)!important;border-color:var(--v654-edge,#c8c3ee)!important;}
/* Navigation and secondary controls share a blue baseline; selected and primary rules above win by specificity. */
body[data-ui-version="3"] :is(#app,dialog,.mail-dlg) button:not(.street-scene-spot) {background-color:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--tp-edge)!important;text-shadow:none!important;}
body[data-ui-version="3"] #app .line-dock-item .line-dock-status {color:var(--tp-ink)!important;}
/* Secondary views discovered in JS templates, including shop lists and statistics. */
body[data-ui-version="3"] :is(#app,dialog,.mail-dlg) :is(.analytics-kpis,.build-summary,.channel-growth-summary,.character-command-stats,.dorm-stats,.finance-center-summary,.furnace-kpis,.garage-stats,.life-invest-summary,.line-command-stats,.miner-command-stats,.oversea-summary,.profile-summary,.staff-command-stats,.staff-summary,.street-stats,.supply-kpis,.inv-toolbar,.production-board-toolbar,.recruit-board-toolbar,.merchant-controls,.garage-controls,.dealer-pages) {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--tp-edge)!important;}
body[data-ui-version="3"] :is(#app,dialog,.mail-dlg) :is(.supply-item,.ex-shop-item,.hosp-item,.ore-item,.dealer-truck-detail,.confirm-detail,.cave-selection-copy,.character-command-copy,.furnace-scene-copy,.line-command-copy,.miner-command-copy,.supply-scene-copy,.material-level-copy) {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--tp-edge)!important;}
body[data-ui-version="3"] :is(#app,dialog,.mail-dlg) :is(.analytics-kpis,.character-command-stats,.furnace-kpis,.line-command-stats,.miner-command-stats,.staff-command-stats,.supply-kpis)>span {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--tp-edge)!important;}
body[data-ui-version="3"] :is(#app,dialog,.mail-dlg) :is(.analytics-kpis,.character-command-stats,.furnace-kpis,.line-command-stats,.miner-command-stats,.staff-command-stats,.supply-kpis,.supply-item,.ex-shop-item,.hosp-item,.ore-item,.character-command-copy,.furnace-scene-copy,.line-command-copy,.miner-command-copy,.supply-scene-copy,.material-level-copy) :is(b,small,span,strong,p,h3,em) {color:var(--tp-ink)!important;text-shadow:none!important;}
body[data-ui-version="3"] :is(#app,dialog,.mail-dlg) :is(.line-command-stats,.miner-command-stats,.staff-command-stats)>span::before {background:var(--tp-surface)!important;color:var(--tp-ink)!important;}
body[data-ui-version="3"] :is(#app,dialog,.mail-dlg) :is(.merchant-tabs,.staff-v4-tabs,.furnace-tabs,.inv-tabs,.sk-tabs,.department-tabs,.life-zone-tabs,.dorm-tabs,.supply-tabs,.civic-tabs,.training-mode-tabs) {background:var(--tp-surface)!important;border-color:var(--tp-edge)!important;color:var(--tp-ink)!important;}
/* v4 chrome uses a pseudo-element wash above the sheet background. Recolor that layer too. */
body[data-ui-version="3"] #app .player-sheet:not([data-scene-panel="quests"]) {--v4-accent:#7370bf;--v4-surface:#f4f6ff;}
body[data-ui-version="3"] #app .player-sheet:not([data-scene-panel="quests"])::after {background:var(--tp-surface)!important;}
body[data-ui-version="3"] #app .player-sheet:not([data-scene-panel="quests"]) .sheet-head h2::before {color:var(--tp-ink)!important;}
body[data-ui-version="3"] #app .staff-v4-tabs button>span {background:var(--tp-surface)!important;color:var(--tp-ink)!important;}
/* Map shop windows have their own ID-specific legacy palette. */
body[data-ui-version="3"] #merchant-scene.walk25d-dialog {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--tp-edge)!important;}
body[data-ui-version="3"] #merchant-scene.walk25d-dialog :is(header,.merchant-goods>p,.fin-stock-warn) {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--tp-edge)!important;}
body[data-ui-version="3"] #merchant-scene.walk25d-dialog .merchant-goods>button {background:var(--tp-gold)!important;color:var(--tp-gold-ink)!important;border-color:var(--tp-edge)!important;}
body[data-ui-version="3"] #merchant-scene.walk25d-dialog .merchant-goods>button :is(i,b,span,small,em) {background-color:transparent!important;color:var(--tp-gold-ink)!important;text-shadow:none!important;}
body[data-ui-version="3"] :is(#app,dialog) :is(.warehouse-board,.warehouse-layout>aside,.finance-center,.finance-center-body>section,.stock-list article,.insurance-list article,.dealer-visit>header) {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--tp-edge)!important;}
body[data-ui-version="3"] :is(#app,dialog) .warehouse-board tr[data-count] td:last-child::before {background:var(--tp-surface)!important;}
body[data-ui-version="3"] :is(#app,dialog) .district-pin.region-pin span {background:var(--tp-surface)!important;color:var(--tp-ink)!important;border-color:var(--v654-edge,var(--tp-edge))!important;}
