/* Authoritative GeoDecision palette — load after every component stylesheet. */
:root{
  --canvas:#000000;
  --surface:#111315;
  --surface-raised:#202426;
  --land:#202426;
  --border:#636D70;
  --text:#F4F1E8;
  --muted:#A8AAA5;
  --accent:#D2BC87;
  --secondary:#9A9BC5;
  --risk:#C96F78;
  --success:#8FAE9B;
  --ink:var(--canvas);
  --panel:var(--canvas);
  --panel-raised:var(--surface);
  --panel-soft:var(--surface-raised);
  --map-line:var(--border);
  --line:rgba(99,109,112,.46);
  --navy:var(--surface);
  --slate:var(--muted);
  --paper:var(--canvas);
  --white:var(--surface);
  --alert:var(--accent);
  --teal:var(--secondary);
  --orange:var(--accent);
  --cyan:var(--secondary);
  --amber:var(--accent);
  --focus:var(--secondary);
}

html,body,.app-pages,.app-page{background-color:var(--canvas);color:var(--text)}
*{scrollbar-color:var(--border) var(--canvas);scrollbar-width:thin}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-track{background:var(--canvas)}
*::-webkit-scrollbar-thumb{background:var(--border);border:2px solid var(--canvas);border-radius:999px}
.top{background:rgba(0,0,0,.24)!important;backdrop-filter:blur(10px) saturate(.84)!important;-webkit-backdrop-filter:blur(10px) saturate(.84)!important;border-bottom-color:rgba(210,188,135,.13)!important}
.app-nav{background:rgba(0,0,0,.14)!important;backdrop-filter:blur(8px) saturate(.82)!important;-webkit-backdrop-filter:blur(8px) saturate(.82)!important;border-bottom-color:rgba(99,109,112,.34)!important}

/* On desktop the situation map is the physical surface behind the command chrome. */
@media(min-width:1001px){body{display:block!important;position:relative!important;overflow:hidden!important}
  .top{position:fixed!important;inset:0 0 auto 0!important;z-index:1200!important}
  .app-nav{position:fixed!important;inset:62px 0 auto 0!important;z-index:1190!important}
  .app-pages{position:absolute!important;inset:0!important;height:100vh!important}
  .app-page{height:100%!important}
  .app-page:not([data-page="situation"]){padding:126px 18px 16px!important}
  .app-page[data-page="situation"] .input-slot{top:132px!important}
  .app-page[data-page="situation"] .map-card header{top:134px!important}
  .app-page[data-page="situation"] .leaflet-top.leaflet-left{top:202px!important}
}
.panel,.page-slot,.advisor-controls,.dynamic-grid>article,.option,.priority-card,.message p{border-color:var(--line)}
.eyebrow,.section-head p,.brief>div>p,.priority-heading>span,.priority-card>b,.option header span,.score strong{color:var(--accent)}
.opportunity,.opp>span,.coverage strong,.message.local p{color:var(--secondary);border-color:var(--secondary)}
.status i,.update-rail>div i{background:var(--success)!important;box-shadow:0 0 12px rgba(143,174,155,.48)!important}
.status.is-updating i,.update-rail[data-state="is-updating"]>div i{background:var(--accent)!important;box-shadow:0 0 12px rgba(210,188,135,.46)!important}
.status.error i,.update-rail[data-state="error"]>div i{background:var(--risk)!important;box-shadow:0 0 12px rgba(201,111,120,.46)!important}
.update-rail{border-left-color:var(--success)}.update-rail[data-state="is-updating"]{border-left-color:var(--accent)}.update-rail[data-state="error"]{border-left-color:var(--risk)}

input[type=range]{accent-color:var(--accent)!important}
#severity{accent-color:var(--secondary)!important}
.input-slot .range-value output{color:var(--secondary)!important;background:rgba(154,155,197,.14)!important}
.input-slot .scenario-tabs button:hover,.input-slot .scenario-tabs button.active,.app-nav button.active{background:rgba(210,188,135,.08)!important;border-color:var(--accent)!important;color:var(--text)!important}
.form-grid input:not([type=range]):focus,.form-grid textarea:focus,.form-grid select:focus{border-color:var(--secondary)!important;box-shadow:0 0 0 3px rgba(154,155,197,.14)!important}
.run,.page-slot .run{background:var(--accent)!important;color:var(--canvas)!important}.run:hover,.run:focus-visible{background:var(--accent)!important;box-shadow:0 10px 24px rgba(210,188,135,.18)!important}
.result-flash{animation:palette-result-flash .56s var(--ease)}

/* Secondary workspaces: replace the legacy paper theme with restrained dark glass. */
.page-slot .chain>div,
.page-slot .weights,
.page-slot .advisor-controls,
.page-slot .segmented button,
.page-slot .priority-card dl div,
.page-slot .brief aside,
.page-slot .chat,
.page-slot .chat-log,
.page-slot .message p,
.page-slot .option{
  background:rgba(17,19,21,.74)!important;
  color:var(--text)!important;
  border-color:var(--line)!important;
}
.page-slot .weights{border:1px solid var(--line)!important}
.page-slot .chain>div{border-top-color:var(--accent)!important}
.page-slot .advisor-controls{border:1px solid var(--line)!important}
.page-slot .segmented button:hover,
.page-slot .segmented button:focus-visible{background:rgba(154,155,197,.12)!important;border-color:var(--secondary)!important;color:var(--text)!important}
.page-slot .segmented button.active{background:rgba(210,188,135,.14)!important;border-color:var(--accent)!important;color:var(--text)!important}
.page-slot .option.selected{background:rgba(210,188,135,.07)!important;border:1px solid var(--accent)!important;box-shadow:inset 0 3px 0 var(--accent)!important}
.page-slot .segmented button span,
.page-slot .priority-card p,
.page-slot .priority-card dt,
.page-slot .option p,
.page-slot .option footer,
.page-slot .weights label{color:var(--muted)!important}
.page-slot input:not([type=range]),
.page-slot textarea,
.page-slot select{
  background:rgba(17,19,21,.88)!important;
  color:var(--text)!important;
  border-color:var(--line)!important;
  color-scheme:dark!important;
}
.page-slot input[type=range]{background:transparent!important;color-scheme:dark!important}
.page-slot .brief aside li{color:var(--muted)!important}
.page-slot .brief aside .coverage{border-color:var(--line)!important}
.page-slot .question-chips button,.page-slot .ghost{background:transparent!important;color:var(--text)!important;border-color:var(--line)!important}

/* Decision navigation: typographic links float over the situation map. */
.decision-link{position:relative!important;pointer-events:auto!important;cursor:pointer;isolation:isolate;transition:color .18s ease,transform .18s ease!important}
.decision-link::after{content:"";position:absolute;left:0;right:0;bottom:2px;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .22s ease}
.decision-link .decision-cue{position:absolute;right:0;bottom:5px;color:var(--accent);font-size:11px;letter-spacing:.04em;opacity:0;transform:translateX(-5px);transition:opacity .18s ease,transform .18s ease;white-space:nowrap}
.decision-link:hover,.decision-link:focus-visible{color:var(--accent)!important;transform:translateX(2px)!important;outline:none!important}
.decision-link:hover::after,.decision-link:focus-visible::after{transform:scaleX(1)}
.decision-link:hover .decision-cue,.decision-link:focus-visible .decision-cue{opacity:1;transform:translateX(0)}
.decision-link:hover strong,.decision-link:focus-visible strong{color:var(--accent)!important}
.decision-status{cursor:pointer}.decision-status:hover,.decision-status:focus-visible{color:var(--accent)!important;outline:1px solid rgba(210,188,135,.42)!important;outline-offset:7px!important}

.detail-context{position:sticky;top:0;z-index:40;min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 0 18px;padding:0 2px 10px;background:linear-gradient(180deg,#000 72%,transparent);color:var(--muted);font-size:12px;letter-spacing:.03em}
.detail-context button,.detail-actions button,.source-links button{border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--text);padding:8px 0;cursor:pointer;transition:color .18s ease,border-color .18s ease,transform .18s ease}
.detail-context button:hover,.detail-context button:focus-visible,.detail-actions button:hover,.detail-actions button:focus-visible,.source-links button:hover,.source-links button:focus-visible{color:var(--accent);border-color:var(--accent);transform:translateY(-1px);outline:none}
.detail-actions,.source-links{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:22px;margin-top:22px}.source-links{justify-content:flex-start;margin-top:28px}

.duration-detail{background:rgba(17,19,21,.58)!important;border:1px solid var(--line)!important;border-radius:12px!important;margin-bottom:20px!important}
.duration-detail-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.duration-detail-summary article{padding:16px;background:rgba(32,36,38,.72);border:1px solid var(--line);border-radius:10px}.duration-detail-summary small,.duration-detail-summary span{display:block;color:var(--muted);font-size:11px}.duration-detail-summary strong{display:block;margin:7px 0 5px;color:var(--text);font:700 30px Consolas,monospace}.duration-detail-timeline{display:grid;gap:9px;margin-top:18px}.duration-detail-timeline>div{display:grid;grid-template-columns:90px minmax(140px,1fr) 58px;align-items:center;gap:12px;color:var(--muted);font-size:12px}.duration-detail-timeline i{height:4px;background:rgba(99,109,112,.24);overflow:hidden}.duration-detail-timeline i b{display:block;height:100%;background:var(--secondary)}.duration-detail-timeline strong{color:var(--text);font:700 14px Consolas,monospace}

.nav-target-pulse{animation:nav-target-pulse .95s ease-out!important}
@keyframes nav-target-pulse{0%{box-shadow:inset 4px 0 0 var(--accent),0 0 0 1px rgba(210,188,135,.42)}55%{box-shadow:inset 4px 0 0 var(--accent),0 0 26px rgba(210,188,135,.14)}100%{box-shadow:inset 0 0 0 transparent,0 0 0 transparent}}
@media(max-width:800px){.duration-detail-summary{grid-template-columns:1fr}.detail-context{align-items:flex-start;flex-direction:column;padding-top:10px}.decision-link .decision-cue{display:none}}
@media(prefers-reduced-motion:reduce){.decision-link,.decision-link::after,.decision-cue,.detail-context button,.detail-actions button,.source-links button{transition:none!important}.nav-target-pulse{animation:none!important;box-shadow:inset 3px 0 0 var(--accent)!important}}

.route-a,#route-map .supply{stroke:var(--risk)}.route-b,.route-c,#route-map .sales{stroke:var(--secondary)}
.hotspot circle:first-child,#route-map .risk-zone{fill:rgba(201,111,120,.18);stroke:var(--risk)}
.hotspot circle:last-child,.node circle{fill:var(--accent)}
.output-slot #executive-strip #exec-risk{color:var(--risk)!important}.map-card footer span:first-child,.map-card footer span:nth-child(2){color:var(--risk)!important}
.output-slot #executive-strip #exec-strategy{color:var(--secondary)!important}.map-card footer span:nth-child(3){color:var(--secondary)!important}

@keyframes palette-result-flash{0%{box-shadow:0 0 0 0 rgba(210,188,135,.34)}45%{box-shadow:0 0 0 5px rgba(210,188,135,.10)}100%{box-shadow:0 0 0 0 transparent}}
