/* UET_OS brand layer over the canonical A-IVOS design system. */
/* --cyan is referenced by UET visuals but absent from the canonical tokens;
   define it here (scoped to UET assets) with a darkened light-theme value so
   EV lines, donuts, badges and hbar gradients keep AA contrast in both themes. */
:root { --cyan: #22d3ee; }
[data-theme="light"] { --cyan: #0e7490; }
.uet-mark { width: 32px; height: 32px; border-radius: 9px; display:flex; align-items:center; justify-content:center; color:#fff; background:linear-gradient(135deg,#0ea5e9,#14b8a6); font-size:10px; font-weight:800; letter-spacing:-.04em; box-shadow:0 0 18px rgba(20,184,166,.35); }
.uet-side-context { display:flex; align-items:center; gap:7px; padding:8px 16px 2px; color:var(--text-muted); font-size:10px; }
.uet-status-dot { width:6px; height:6px; border-radius:50%; background:var(--ok); box-shadow:0 0 8px var(--ok); }
.uet-nav-search { padding:8px 12px 2px; }
.uet-nav-search input { width:100%; box-sizing:border-box; background:var(--surface-2); border:1px solid var(--border); border-radius:7px; padding:6px 9px; color:var(--text); font:11px var(--font-sans); outline:0; }
.uet-nav-search input:focus { border-color:var(--accent); box-shadow:var(--ring); }
.uet-chevron { opacity:.45; font-size:11px; }
.uet-scope-chip { margin:0 10px 10px; padding:8px 10px; border:1px solid var(--accent); border-radius:9px; background:var(--accent-soft); display:flex; flex-direction:column; gap:2px; }
.uet-scope-chip b { color:var(--accent-text); font-size:11px; letter-spacing:.05em; }
.uet-scope-chip span { color:var(--text-muted); font-size:9px; }
.uet-hero { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; margin-bottom:24px; padding:26px 28px; border:1px solid var(--glass-border); border-radius:var(--r-2xl); background:linear-gradient(135deg,rgba(14,165,233,.13),rgba(20,184,166,.04) 50%,rgba(99,102,241,.08)); box-shadow:var(--glass-shadow); }
.uet-hero h1 { font-size:clamp(26px,3vw,42px); max-width:760px; }
.uet-hero p { max-width:760px; margin-top:10px; color:var(--text-muted); }
.uet-kicker { color:var(--accent-text); font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; margin-bottom:10px; }
.uet-live { color:var(--ok); border:1px solid rgba(52,211,153,.35); background:var(--ok-bg); border-radius:var(--r-pill); padding:5px 9px; font-size:10px; white-space:nowrap; }
.uet-flow { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:0 0 22px; color:var(--text-muted); font-size:11px; }
.uet-flow b { color:var(--text); background:var(--surface); border:1px solid var(--border); border-radius:var(--r-pill); padding:6px 10px; }
.uet-flow i { color:var(--accent); font-style:normal; }
.uet-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
.uet-grid-2 { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.uet-row { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; padding:12px 0; border-bottom:1px solid var(--border); }
.uet-row:last-child { border-bottom:0; }
.uet-row small { display:block; color:var(--text-muted); margin-top:4px; line-height:1.5; }
.uet-card-title { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:12px; }
.uet-card-title h3 { font-size:var(--fs-lg); }
.uet-model-strip { display:flex; gap:6px; flex-wrap:wrap; max-height:130px; overflow:hidden; }
.uet-model-chip { padding:5px 7px; border:1px solid var(--border); border-radius:6px; color:var(--text-muted); font:10px var(--font-mono); background:var(--bg-elevated); }
.uet-model-chip.live { color:var(--accent-text); border-color:rgba(34,211,238,.3); }
.uet-terminal { min-height:300px; max-height:480px; overflow:auto; white-space:pre-wrap; font:12px/1.6 var(--font-mono); color:var(--text-soft); background:var(--bg-sunken); border:1px solid var(--border); border-radius:var(--r-lg); padding:16px; }
.uet-otto-messages { min-height:300px; max-height:560px; overflow:auto; padding:4px; background:var(--bg-sunken); border:1px solid var(--border); border-radius:var(--r-lg); }
.uet-otto-msg { display:flex; gap:9px; margin:14px 4px; align-items:flex-start; }
.uet-otto-msg.user { flex-direction:row-reverse; }
.uet-otto-avatar { flex:0 0 28px; width:28px; height:28px; border-radius:9px; display:flex; align-items:center; justify-content:center; color:var(--text-inverse); background:var(--accent); font-size:11px; font-weight:700; }
.uet-otto-msg.ai .uet-otto-avatar { color:var(--text); background:var(--surface-3); }
.uet-otto-bubble { max-width:min(840px,88%); padding:11px 13px; border-radius:3px 13px 13px 13px; background:var(--surface-2); color:var(--text-soft); line-height:1.55; }
.uet-otto-msg.user .uet-otto-bubble { border-radius:13px 3px 13px 13px; background:var(--accent-soft); color:var(--text); }
.uet-otto-bubble h4 { margin:8px 0 3px; color:var(--text); }
.uet-otto-bubble code { font:11px var(--font-mono); color:var(--accent-text); }
.uet-otto-meta { display:block; margin-top:9px; color:var(--text-muted); font-size:9px; }
.uet-otto-actions, .uet-feedback { display:flex; gap:6px; flex-wrap:wrap; margin-top:10px; padding-top:9px; border-top:1px solid var(--border); }
.uet-feedback { border-top:0; padding-top:0; color:var(--text-muted); font-size:10px; align-items:center; }
.uet-reasoning { margin-top:10px; padding-top:8px; border-top:1px solid var(--border); color:var(--text-muted); font-size:10px; }
.uet-reasoning summary { cursor:pointer; color:var(--accent-text); }
.uet-decision-card { display:flex; flex-direction:column; gap:5px; margin-top:10px; padding:10px; border-left:3px solid var(--warn); background:var(--surface-3); border-radius:5px; }
.uet-decision-card small { color:var(--text-muted); }
.uet-learning-rail { display:flex; gap:8px; flex-wrap:wrap; margin-top:10px; color:var(--text-muted); font-size:10px; }
.uet-learning-rail span { padding:7px 9px; border:1px solid var(--border); border-radius:7px; background:var(--surface-2); }
.uet-learning-rail b { color:var(--accent-text); }

/* Operations cockpit visual layer */
.uet-impact { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin:18px 0; }
.uet-impact-card { position:relative; overflow:hidden; min-height:116px; padding:18px; border:1px solid var(--glass-border); border-radius:18px; background:linear-gradient(145deg,var(--surface),color-mix(in srgb,var(--surface) 62%,transparent)); box-shadow:var(--glass-shadow); }
.uet-impact-card:after { content:""; position:absolute; inset:auto -24px -38px auto; width:92px; height:92px; border-radius:50%; background:var(--accent-soft); filter:blur(4px); }
.uet-impact-card span { color:var(--text-muted); font-size:10px; text-transform:uppercase; letter-spacing:.12em; }
.uet-impact-card b { display:block; margin:10px 0 6px; color:var(--text); font-size:30px; letter-spacing:-.06em; }
.uet-impact-card small { color:var(--text-muted); line-height:1.5; }
.uet-visual { min-height:0; max-width:100%; overflow:hidden; }
.uet-chart-title { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; }
.uet-chart-title b { color:var(--text); }
.uet-chart-title span { color:var(--text-muted); font-size:10px; }
.uet-network { max-height:520px; display:flex; flex-direction:column; }
.uet-network svg { width:100%; height:auto; max-height:468px; display:block; flex:0 1 auto; border-radius:16px; background:radial-gradient(circle at 50% 20%,var(--accent-soft),transparent 55%),linear-gradient(180deg,var(--bg-sunken),var(--surface-2)); }
.uet-network-link { stroke:url(#uet-flow-grad); stroke-width:.55; opacity:.8; stroke-dasharray:2 1.5; animation:uetFlow 5s linear infinite; }
.uet-network-node { fill:var(--surface-3); stroke:var(--cyan); stroke-width:.9; filter:drop-shadow(0 0 8px rgba(45,212,191,.45)); }
.uet-network-pulse { fill:none; stroke:var(--accent); stroke-width:.25; opacity:.45; animation:uetPulse 2.8s ease-out infinite; }
.uet-network-label { fill:var(--text); font-size:3.2px; font-weight:700; }
.uet-network-value { fill:var(--text); font-size:3px; font-weight:800; }
.uet-network-legend { display:flex; gap:14px; flex-wrap:wrap; margin-top:8px; padding-bottom:0; color:var(--text-muted); font-size:10px; line-height:1.2; }
.uet-network-legend i { display:inline-block; width:8px; height:8px; margin-right:5px; border-radius:50%; }
.uet-network-legend .ok { background:var(--ok); } .uet-network-legend .warn { background:var(--warn); } .uet-network-legend .bad { background:var(--bad); }
.uet-hbar { display:grid; grid-template-columns:minmax(140px,1fr) minmax(130px,2fr) 46px; align-items:center; gap:12px; padding:10px 0; border-bottom:1px solid var(--border); }
.uet-hbar:last-child { border-bottom:0; }
.uet-hbar b { display:block; color:var(--text); font-size:12px; }
.uet-hbar small { display:block; color:var(--text-muted); margin-top:3px; font-size:10px; }
.uet-hbar strong { text-align:right; font-size:11px; }
.uet-hbar-track { height:9px; overflow:hidden; border-radius:99px; background:var(--surface-3); box-shadow:inset 0 0 0 1px var(--border); }
.uet-hbar-track span { display:block; height:100%; border-radius:99px; background:linear-gradient(90deg,var(--accent),var(--cyan)); box-shadow:0 0 12px rgba(45,212,191,.25); }
.uet-hbar-track span.critical { background:linear-gradient(90deg,var(--warn),var(--bad)); box-shadow:0 0 12px rgba(251,113,133,.25); }
.uet-hbar-track span.covered { background:linear-gradient(90deg,var(--ok),var(--cyan)); }
.uet-energy-grid, .uet-radar { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.uet-energy-card, .uet-radar-item { padding:14px; border:1px solid var(--border); border-radius:14px; background:var(--surface-2); text-align:center; }
.uet-energy-card b, .uet-radar-item b { display:block; margin-top:9px; color:var(--text); font-size:12px; }
.uet-energy-card small, .uet-radar-item small { display:block; margin-top:4px; color:var(--text-muted); font-size:10px; }
.uet-donut { --pct:0; --fill:var(--accent); position:relative; width:86px; height:86px; margin:0 auto; border-radius:50%; background:conic-gradient(var(--fill) calc(var(--pct)*1%),var(--surface-3) 0); }
.uet-donut:before { content:""; position:absolute; inset:8px; border-radius:50%; background:var(--surface); }
.uet-donut span { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:var(--text); font-size:15px; font-weight:800; }
.uet-donut.small { width:64px; height:64px; } .uet-donut.small span { font-size:13px; }
.uet-summary-line { margin-top:12px; color:var(--text-muted); font-size:11px; text-align:center; }
.uet-summary-line b { color:var(--accent-text); }
.uet-pulse-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin-bottom:10px; }
.uet-pulse-item { padding:12px; border:1px solid var(--border); border-radius:12px; background:var(--surface-2); animation:uetPulseFade 2.8s ease-in-out infinite; }
.uet-pulse-item b { display:block; color:var(--text); font-size:11px; }
.uet-pulse-item small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--text-muted); font-size:9px; }
.uet-pulse-dot { display:inline-block; width:9px; height:9px; margin-right:6px; border-radius:50%; }
.uet-pulse-dot.ok { background:var(--ok); box-shadow:0 0 12px var(--ok); } .uet-pulse-dot.bad { background:var(--bad); box-shadow:0 0 12px var(--bad); }
@keyframes uetFlow { to { stroke-dashoffset:-14; } }
@keyframes uetPulse { 0% { transform:scale(.8); opacity:.7; } 100% { transform:scale(1.5); opacity:0; } }
@keyframes uetPulseFade { 0%,100% { transform:translateY(0); box-shadow:none; } 50% { transform:translateY(-2px); box-shadow:0 10px 24px rgba(14,165,233,.12); } }
[data-theme="light"] .uet-network svg { background:radial-gradient(circle at 50% 20%,rgba(14,165,233,.12),transparent 55%),linear-gradient(180deg,var(--surface-2),var(--surface)); }

.uet-chatbar { display:flex; gap:8px; margin-top:10px; }
.uet-chatbar input { flex:1; min-width:0; }
.uet-span-2 { grid-column:span 2; }
.uet-supply-toolbar { display:flex; justify-content:space-between; align-items:center; gap:18px; flex-wrap:wrap; margin:0 0 18px; padding:16px 18px; border:1px solid rgba(251,113,133,.35); border-radius:16px; background:linear-gradient(120deg,rgba(251,113,133,.12),rgba(14,165,233,.08)); }
.uet-supply-toolbar > div { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.uet-supply-toolbar > div:first-child { display:flex; flex-direction:column; align-items:flex-start; gap:3px; }
.uet-supply-toolbar span { color:var(--text-muted); font-size:11px; }
.uet-supply-strip { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-top:18px; }
.uet-supply-strip > div { padding:15px; border:1px solid var(--border); border-radius:14px; background:var(--surface-2); }
.uet-supply-strip span { display:block; color:var(--text-muted); font-size:10px; text-transform:uppercase; letter-spacing:.08em; }
.uet-supply-strip strong { display:block; margin:7px 0 4px; color:var(--text); font-size:24px; }
.uet-supply-strip small { color:var(--text-muted); line-height:1.4; }
.uet-supply-panel { min-width:0; }
.uet-supply-panel--critical { border-color:rgba(251,113,133,.4); }
.uet-supply-item { display:flex; justify-content:space-between; align-items:center; gap:14px; padding:14px 0; border-bottom:1px solid var(--border); }
.uet-supply-item:last-child { border-bottom:0; }
.uet-supply-item strong { display:block; color:var(--text); font-size:13px; }
.uet-supply-item small { display:block; margin-top:4px; color:var(--text-muted); line-height:1.45; }
.uet-supply-item--critical { padding:15px 12px; margin:0 -4px; border-left:3px solid var(--bad); background:linear-gradient(90deg,rgba(251,113,133,.1),transparent); }
.uet-supply-impact { color:var(--warn) !important; font-weight:700; }
.uet-supply-site { display:block; margin:9px 0; padding:14px; border:1px solid var(--border); border-radius:13px; background:var(--surface-2); color:inherit; text-decoration:none; transition:transform .16s,border-color .16s,background .16s; }
.uet-supply-site:hover { transform:translateY(-2px); border-color:var(--accent); background:var(--accent-soft); }
.uet-supply-site-head { display:flex; justify-content:space-between; gap:10px; align-items:center; }
.uet-supply-site-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:7px; margin:13px 0 10px; }
.uet-supply-site-grid span { padding:7px 4px; text-align:center; border-radius:8px; background:var(--surface-3); }
.uet-supply-site-grid b { display:block; font-size:16px; }
.uet-supply-site-grid small { display:block; margin-top:2px; color:var(--text-muted); font-size:9px; }
.uet-readiness, .uet-coverage { display:inline-block; padding:4px 7px; border-radius:999px; font-size:10px; font-weight:700; }
.uet-readiness.ok, .uet-coverage.ok { color:var(--ok); background:var(--ok-bg); }
.uet-readiness.bad, .uet-coverage.bad { color:var(--bad); background:var(--bad-bg); }
.uet-supply-link { color:var(--accent-text); font-size:10px; font-weight:700; }
.uet-supply-predictions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.uet-supply-prediction { display:flex; flex-direction:column; justify-content:space-between; gap:12px; min-height:120px; padding:14px; border:1px solid var(--border); border-radius:13px; background:var(--surface-2); }
.uet-supply-prediction strong { display:block; color:var(--text); }
.uet-supply-prediction small { display:block; margin-top:6px; color:var(--text-muted); line-height:1.45; }
.uet-supply-prediction-foot { display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; }
.uet-empty-success { padding:18px 0; color:var(--ok); }
@media (max-width:900px) { .uet-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .uet-grid-2 { grid-template-columns:1fr; } .uet-impact { grid-template-columns:repeat(2,minmax(0,1fr)); } .uet-energy-grid,.uet-radar,.uet-pulse-grid { grid-template-columns:1fr; } }
@media (max-width:640px) { .uet-grid { grid-template-columns:1fr; } .uet-span-2 { grid-column:auto; } .uet-hero { padding:20px; flex-direction:column; } .uet-impact { grid-template-columns:1fr; } .uet-hbar { grid-template-columns:1fr; } .uet-hbar strong { text-align:left; } .uet-otto-bubble { max-width:82%; } .uet-chatbar { flex-direction:column; } }
@media (max-width:900px) { .uet-supply-strip { grid-template-columns:repeat(2,minmax(0,1fr)); } .uet-supply-predictions { grid-template-columns:1fr; } }
@media (max-width:640px) { .uet-supply-strip { grid-template-columns:1fr; } .uet-supply-item { align-items:flex-start; flex-direction:column; } .uet-supply-site-grid { grid-template-columns:repeat(2,1fr); } }/* Situational control center — plan vs forecast Gantt + integration cards */
.uet-gantt-row { display:grid; grid-template-columns:minmax(180px,260px) 1fr 72px; gap:12px; align-items:center; padding:9px 0; border-bottom:1px solid var(--border); }
.uet-gantt-row:last-child { border-bottom:0; }
.uet-gantt-label b { display:block; color:var(--text); font-size:12px; }
.uet-gantt-label small { color:var(--text-muted); font-size:10px; }
.uet-gantt-track { position:relative; height:16px; background:var(--surface-3); border-radius:8px; overflow:hidden; }
.uet-gantt-plan { position:absolute; top:3px; bottom:3px; background:var(--accent); opacity:.45; border-radius:6px; }
.uet-gantt-forecast { position:absolute; top:3px; bottom:3px; border:2px solid var(--ok); border-radius:6px; background:transparent; }
.uet-gantt-row strong { font-size:11px; text-align:right; }
.uet-integration-card { display:flex; flex-direction:column; gap:10px; padding:18px; border:1px solid var(--border); border-radius:14px; background:var(--surface-2); }
.uet-integration-card h4 { margin:0; color:var(--text); }
.uet-integration-card small { color:var(--text-muted); line-height:1.45; }
.uet-integration-meta { display:flex; gap:14px; flex-wrap:wrap; font-size:11px; color:var(--text-muted); }
.uet-integration-meta b { color:var(--text); }
@media (max-width:640px) { .uet-gantt-row { grid-template-columns:1fr; } .uet-gantt-row strong { text-align:left; } }

/* ── Design upgrade 2026-08-31 — geo network, EVM visuals, project 360 ── */
/* Hero: subtle aurora glow, content always above it */
.uet-hero { position:relative; overflow:hidden; }
.uet-hero:before { content:""; position:absolute; top:-160px; right:-80px; width:380px; height:380px; border-radius:50%; background:radial-gradient(circle,rgba(45,212,191,.16),transparent 65%); pointer-events:none; }
.uet-hero:after { content:""; position:absolute; bottom:-190px; left:-90px; width:320px; height:320px; border-radius:50%; background:radial-gradient(circle,rgba(56,189,248,.12),transparent 65%); pointer-events:none; }
.uet-hero > * { position:relative; }
/* KPI lift on hover */
.uet-grid .kpi, .uet-impact-card { transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease; }
.uet-grid .kpi:hover, .uet-impact-card:hover { transform:translateY(-2px); border-color:var(--accent); }
/* Table interactivity */
.tbl tbody tr { transition:background .12s ease; }
.tbl tbody tr:hover { background:var(--accent-soft); }
.card--glass { transition:border-color .16s ease,box-shadow .16s ease; }
/* Network map — nodes carry facility health status */
/* Network map — solid dark bubbles with near-white values in BOTH themes, so
   the % read-out can never match the bubble colour; status carried by the
   coloured ring + glow. */
.uet-network-node { fill:#0d1526; }
.uet-network-node.ok { stroke:var(--ok); filter:drop-shadow(0 0 8px rgba(52,211,153,.5)); }
.uet-network-node.warn { stroke:var(--warn); filter:drop-shadow(0 0 8px rgba(251,191,36,.5)); }
.uet-network-node.bad { stroke:var(--bad); filter:drop-shadow(0 0 10px rgba(251,113,133,.6)); }
.uet-network-value { fill:#f1f5f9; }
.uet-network-sub { fill:var(--text-soft); font-size:2.6px; font-weight:600; }
.uet-network-alert { fill:var(--bad); stroke:rgba(255,255,255,.35); stroke-width:.3; }
.uet-network-alert-n { fill:#fff; font-size:2.7px; font-weight:800; }
.uet-network-legend { color:var(--text-soft); }
.uet-network-legend-note { margin-left:auto; opacity:.75; }
/* Tone-aware status pills — semantic color with matching tinted background
   (replaces warn-or-bad text floating on an ok-green background). */
.uet-pill { display:inline-block; padding:5px 9px; border-radius:var(--r-pill); font-size:10px; font-weight:600; white-space:nowrap; border:1px solid transparent; line-height:1; }
.uet-pill--ok { color:var(--ok); background:var(--ok-bg); border-color:color-mix(in srgb,var(--ok) 35%,transparent); }
.uet-pill--warn { color:var(--warn); background:var(--warn-bg); border-color:color-mix(in srgb,var(--warn) 40%,transparent); }
.uet-pill--bad { color:var(--bad); background:var(--bad-bg); border-color:color-mix(in srgb,var(--bad) 45%,transparent); }
/* Gantt — clickable rows, progress fill, milestone ticks, today marker */
.uet-gantt-track { overflow:visible; }
.uet-gantt-row--link { color:inherit; text-decoration:none; border-radius:9px; padding-left:6px; padding-right:6px; margin:0 -6px; transition:background .14s ease; }
.uet-gantt-row--link:hover { background:var(--accent-soft); }
.uet-gantt-row--link:hover .uet-gantt-label b { color:var(--accent-text); }
.uet-gantt-fill { position:absolute; top:0; bottom:0; left:0; opacity:.3; border-radius:5px; }
.uet-gantt-ms { position:absolute; top:2px; width:6px; height:12px; margin-left:-3px; border-radius:2px; box-shadow:0 0 6px rgba(0,0,0,.35); }
.uet-gantt-ms.ok { background:var(--ok); } .uet-gantt-ms.warn { background:var(--warn); } .uet-gantt-ms.bad { background:var(--bad); }
.uet-gantt-today { position:absolute; top:-3px; bottom:-3px; width:2px; background:var(--text); opacity:.5; }
.uet-gantt-today i { position:absolute; top:-11px; left:-9px; font-size:8px; font-style:normal; color:var(--text-muted); letter-spacing:.06em; }
/* Earned-value S-curve */
.uet-scurve svg { width:100%; height:auto; display:block; border:1px solid var(--border); border-radius:14px; background:radial-gradient(circle at 80% 0%,var(--accent-soft),transparent 55%),linear-gradient(180deg,var(--bg-sunken),var(--surface-2)); }
.uet-sc-grid { stroke:var(--border); stroke-width:.2; }
.uet-sc-axis { fill:var(--text-soft); font-size:2.6px; font-weight:600; }
.uet-sc-plan { fill:none; stroke:var(--accent); stroke-width:.8; opacity:.85; }
.uet-sc-actual { fill:none; stroke:var(--cyan); stroke-width:1.1; filter:drop-shadow(0 0 2px rgba(34,211,238,.6)); }
.uet-sc-forecast { fill:none; stroke:var(--warn); stroke-width:.7; stroke-dasharray:2 1.6; }
.uet-sc-today { stroke:var(--text); stroke-width:.35; opacity:.5; stroke-dasharray:1.5 1.5; }
.uet-sc-dot.ev { fill:var(--cyan); stroke:var(--surface); stroke-width:.3; }
.uet-sc-dot.ac { fill:var(--warn); stroke:var(--surface); stroke-width:.3; }
.uet-sc-dot.pv { fill:var(--accent); stroke:var(--surface); stroke-width:.3; }
.uet-sc-tag { fill:var(--cyan); font-size:3px; font-weight:700; }
.uet-sc-tag.ac { fill:var(--warn); }
/* Project 360 + live prediction */
.uet-proj-link { color:var(--text); text-decoration:none; }
.uet-proj-link:hover b { color:var(--accent-text); text-decoration:underline; }
.uet-ai-badge { display:inline-block; margin-left:6px; padding:2px 7px; border-radius:999px; font-size:9px; font-weight:700; color:var(--cyan); border:1px solid rgba(34,211,238,.4); background:rgba(34,211,238,.08); vertical-align:middle; white-space:nowrap; }
.uet-predict-panel { border-color:rgba(56,189,248,.35); }
.uet-predict-answer { max-width:100%; border-radius:13px; }
.uet-predict-answer h4 { margin-top:2px; }

/* ── Level-1000 packs: sim clock, Monte Carlo, CPM, twin, war-room, tour ── */
.uet-sim-bar { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; margin:0 0 18px; padding:12px 16px; border:1px dashed var(--warn); border-radius:12px; background:color-mix(in srgb,var(--warn) 7%,transparent); }
.uet-sim-clock { font-weight:700; font-size:12px; color:var(--warn); }
.uet-sim-actions { display:flex; gap:8px; flex-wrap:wrap; }
.uet-mc-strip { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-top:12px; }
.uet-mc-strip span { padding:9px 10px; border:1px solid var(--border); border-radius:10px; background:var(--surface-2); color:var(--text-muted); font-size:10px; }
.uet-mc-strip b { display:block; margin-top:3px; color:var(--text); font-size:13px; }
.uet-sc-mc { stroke:var(--cyan); stroke-width:.4; stroke-dasharray:1.6 1.4; opacity:.8; }
.uet-sc-mc.p80 { stroke:var(--warn); }
.uet-sc-tag.mc { fill:var(--cyan); font-size:2.6px; }
.uet-sc-tag.mc80 { fill:var(--warn); font-size:2.6px; }
/* CPM */
.uet-cpm { width:100%; height:auto; border:1px solid var(--border); border-radius:14px; background:linear-gradient(180deg,var(--bg-sunken),var(--surface-2)); }
.uet-cpm-box.crit { fill:color-mix(in srgb,var(--bad) 30%,var(--surface-2)); stroke:var(--bad); stroke-width:.5; }
.uet-cpm-box.nc { fill:var(--accent-soft); stroke:var(--accent); stroke-width:.4; }
.uet-cpm-link { fill:none; stroke:var(--text-muted); stroke-width:.35; opacity:.7; }
.uet-cpm-label { fill:var(--text); font-size:2.9px; font-weight:600; paint-order:stroke; stroke:var(--bg-sunken); stroke-width:.5; }
.uet-cpm-days { fill:var(--text-soft); font-size:2.6px; }
/* Digital twin */
.uet-twin { width:100%; height:auto; border:1px solid var(--border); border-radius:14px; background:radial-gradient(circle at 50% 30%,var(--accent-soft),transparent 60%),linear-gradient(180deg,var(--bg-sunken),var(--surface-2)); }
.uet-twin-link { stroke:var(--border-strong); stroke-width:.5; stroke-dasharray:2 1.6; }
.uet-twin-node { fill:#0d1526; }
.uet-twin-node.ok { stroke:var(--ok); stroke-width:1; filter:drop-shadow(0 0 6px rgba(52,211,153,.5)); }
.uet-twin-node.warn { stroke:var(--warn); stroke-width:1; filter:drop-shadow(0 0 6px rgba(251,191,36,.5)); }
.uet-twin-node.bad { stroke:var(--bad); stroke-width:1; filter:drop-shadow(0 0 8px rgba(251,113,133,.6)); }
.uet-twin-label { fill:var(--text); font-size:2.9px; font-weight:700; }
.uet-twin-sub { fill:var(--text-soft); font-size:2.4px; }
/* Claims */
.uet-claim-card { border-color:color-mix(in srgb,var(--warn) 45%,transparent); background:linear-gradient(120deg,color-mix(in srgb,var(--warn) 8%,transparent),transparent); }
/* War-room */
.uet-warroom-on { overflow:hidden; }
.uet-warroom { position:fixed; inset:0; z-index:8000; display:flex; flex-direction:column; background:var(--bg); }
.uet-wr-head { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 28px; border-bottom:1px solid var(--border); font-size:15px; }
.uet-wr-head span { color:var(--text-soft); font-variant-numeric:tabular-nums; }
.uet-wr-frame { flex:1; overflow:auto; padding:26px 34px; }
.uet-wr-kpis { display:grid; grid-template-columns:repeat(6,1fr); gap:18px; margin-bottom:22px; }
.uet-wr-kpis > div { padding:22px; border:1px solid var(--glass-border); border-radius:18px; background:var(--surface); text-align:center; }
.uet-wr-kpis span { display:block; color:var(--text-soft); font-size:12px; text-transform:uppercase; letter-spacing:.12em; }
.uet-wr-kpis b { display:block; margin-top:10px; font-size:44px; letter-spacing:-.04em; }
.wr-bad { color:var(--bad); }
.uet-wr-title { font-size:26px; margin:0 0 18px; }
.uet-wr-map { max-width:900px; margin:0 auto; }
.uet-wr-row { display:grid; grid-template-columns:2fr 1.2fr .5fr 1fr 1.6fr; gap:14px; align-items:center; padding:14px 6px; border-bottom:1px solid var(--border); font-size:15px; }
.uet-wr-grid { display:grid; grid-template-columns:1.2fr 1fr; gap:22px; }
.uet-warroom .uet-gantt-row { padding:14px 0; }
.uet-warroom .uet-gantt-label b { font-size:15px; }
/* Guided tour bar */
#uet-tour-bar { position:fixed; left:50%; bottom:18px; transform:translateX(-50%); z-index:8700; display:flex; align-items:center; gap:18px; max-width:min(920px,94vw); padding:14px 18px; border:1px solid var(--accent); border-radius:16px; background:var(--surface); box-shadow:var(--shadow-xl,0 24px 60px rgba(0,0,0,.4)); }
#uet-tour-bar b { display:block; margin-bottom:3px; }
#uet-tour-bar span { color:var(--text-soft); font-size:12px; line-height:1.45; }
.uet-tour-actions { display:flex; gap:8px; flex-shrink:0; }
/* Briefing */
.uet-briefing { padding:26px 30px; }
.uet-briefing h4 { font-size:18px; margin:18px 0 6px; }
.uet-briefing table { margin:12px 0; }
@media print { .side, .top, .toolbar, #uet-tour-bar { display:none !important; } .uet-briefing { border:0; box-shadow:none; } }
@media (max-width:900px) { .uet-mc-strip { grid-template-columns:repeat(2,1fr); } .uet-wr-kpis { grid-template-columns:repeat(3,1fr); } .uet-wr-row { grid-template-columns:1fr 1fr; } .uet-wr-grid { grid-template-columns:1fr; } }

/* ── A-IVOS level-1000 global polish (applies to every screen) ───────────── */
/* Focus visibility — keyboard/accessibility contract, both themes */
:focus-visible { outline:2px solid var(--accent); outline-offset:2px; border-radius:6px; }
.btn:focus-visible, .input:focus-visible, .select:focus-visible { outline:2px solid var(--accent); outline-offset:1px; }
/* Tactile controls */
.btn { transition:transform .14s ease, box-shadow .14s ease, background .14s ease, border-color .14s ease; }
.btn:not(:disabled):hover { transform:translateY(-1px); }
.btn:not(:disabled):active { transform:translateY(0); }
.btn:disabled { opacity:.55; cursor:not-allowed; }
/* Cards breathe */
.card { transition:border-color .16s ease, box-shadow .16s ease; }
/* KPI micro-lift everywhere (all views use .kpi) */
.kpi { transition:transform .16s ease, border-color .16s ease, box-shadow .16s ease; }
.kpi:hover { transform:translateY(-2px); border-color:var(--accent); }
/* Tables: sticky headers + hover affordance */
.tbl thead th { position:sticky; top:0; z-index:2; background:var(--surface); }
.tbl-wrap { overflow:auto; }
.tbl tbody tr { transition:background .12s ease; }
.tbl tbody tr:hover { background:var(--accent-soft); }
/* Loading shimmer for pending regions */
@keyframes aviShimmer { 0% { background-position:-400px 0; } 100% { background-position:400px 0; } }
.avi-skeleton { min-height:14px; border-radius:8px; background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-3) 50%,var(--surface-2) 75%); background-size:800px 100%; animation:aviShimmer 1.4s linear infinite; }
/* Badges get tone-matched borders */
.badge { border:1px solid color-mix(in srgb,currentColor 28%,transparent); }
/* Scrollbars stay quiet */
* { scrollbar-width:thin; scrollbar-color:var(--border) transparent; }
*::-webkit-scrollbar { width:8px; height:8px; }
*::-webkit-scrollbar-thumb { background:var(--border); border-radius:8px; }
*::-webkit-scrollbar-track { background:transparent; }
/* Reduced motion contract */
@media (prefers-reduced-motion: reduce) {
  .btn, .kpi, .card, .tbl tbody tr { transition:none !important; }
  .avi-skeleton, .uet-pulse-item, .uet-network-pulse, .uet-network-link { animation:none !important; }
}

/* ── Contrast safety rails (both themes, AA floors) ──────────────────────── */
/* Muted text inside tinted/elevated surfaces upgrades one tier */
.card .u-muted, .uet-hero .u-muted, .uet-impact-card small, .modal .u-muted { color: var(--text-soft); }
.kpi__sub, .otto-meta { color: var(--text-muted); }
/* Placeholders must meet AA on inputs */
.input::placeholder, .select::placeholder, textarea::placeholder { color: var(--text-faint); opacity: 1; }
/* Status text never relies on color alone on tinted backgrounds */
.badge--ok, .badge--warn, .badge--bad { font-weight: 600; }
/* Links inside copy keep AA in both themes */
a { color: var(--accent-text); }
a:hover { text-decoration: underline; }

/* ── OTTO premium chat layer ─────────────────────────────────────────────── */
.otto-msg { display:flex; gap:10px; margin:16px 4px; align-items:flex-start; }
.otto-msg--user { flex-direction:row-reverse; }
.otto-avatar { flex:0 0 30px; width:30px; height:30px; border-radius:10px; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:800; letter-spacing:.02em; box-shadow:0 2px 10px rgba(0,0,0,.18); }
.otto-bubble-wrap { max-width:min(860px,86%); min-width:0; }
.otto-bubble { padding:12px 15px; line-height:1.6; background:var(--surface-2); color:var(--text-soft); border:1px solid var(--border); box-shadow:0 1px 3px rgba(0,0,0,.06); word-break:break-word; }
.otto-bubble b, .otto-bubble strong { color:var(--text); }
.otto-msg--user .otto-bubble { background:var(--accent-soft); color:var(--text); border-color:color-mix(in srgb,var(--accent) 30%,transparent); }
.otto-msg--ai .otto-bubble:hover { border-color:color-mix(in srgb,var(--accent) 25%,var(--border)); }
.otto-bubble h2,.otto-bubble h3,.otto-bubble h4 { color:var(--text); margin:10px 0 4px; }
.otto-bubble pre { background:var(--bg-sunken); border:1px solid var(--border); border-radius:10px; padding:10px 12px; overflow:auto; }
.otto-bubble code { color:var(--accent-text); font-family:var(--font-mono); font-size:.92em; }
.otto-bubble table { border-collapse:collapse; margin:8px 0; font-size:.92em; }
.otto-bubble th,.otto-bubble td { border:1px solid var(--border); padding:5px 9px; text-align:left; }
.otto-bubble th { background:var(--surface-3); color:var(--text); }
.otto-actions { display:flex; gap:6px; flex-wrap:wrap; margin-top:8px; }
.otto-meta { margin-top:5px; font-size:10px; font-family:var(--font-mono); }
.otto-typing { display:inline-flex; gap:5px; padding:4px 2px; }
.otto-typing span { width:7px; height:7px; border-radius:50%; background:var(--text-muted); animation:ottoBlink 1.2s ease-in-out infinite; }
.otto-typing span:nth-child(2) { animation-delay:.15s; }
.otto-typing span:nth-child(3) { animation-delay:.3s; }
@keyframes ottoBlink { 0%,100% { opacity:.3; transform:translateY(0); } 50% { opacity:1; transform:translateY(-3px); }
}
/* Reasoning tree */
.otto-bubble details { font-size:11px; }
.otto-bubble details summary { font-weight:600; }
.otto-bubble details[open] summary { margin-bottom:4px; }
/* Welcome state */
.otto-welcome { text-align:center; padding:56px 20px 40px; }
.otto-welcome-orb { width:64px; height:64px; margin:0 auto 16px; border-radius:20px; display:flex; align-items:center; justify-content:center; color:var(--accent-text); background:var(--accent-soft); border:1px solid color-mix(in srgb,var(--accent) 35%,transparent); box-shadow:0 0 30px color-mix(in srgb,var(--accent) 18%,transparent); }
.otto-welcome-chips { display:flex; gap:8px; flex-wrap:wrap; justify-content:center; margin-top:18px; max-width:640px; margin-inline:auto; }
.otto-chip { display:inline-flex; align-items:center; gap:6px; padding:8px 12px; border:1px solid var(--border); border-radius:999px; background:var(--surface-2); color:var(--text-soft); font-size:12px; cursor:pointer; transition:border-color .14s, background .14s, transform .14s; }
.otto-chip:hover { border-color:var(--accent); background:var(--accent-soft); color:var(--text); transform:translateY(-1px); }
.otto-chip svg { color:var(--accent-text); }
@media (prefers-reduced-motion: reduce) { .otto-typing span { animation:none; } }
