:root {
  --bg: #0c111b;
  --panel: #121927;
  --panel-2: #151f30;
  --panel-3: #1a2638;
  --line: #263449;
  --line-soft: #202b3b;
  --text: #e8eef8;
  --muted: #8fa0b6;
  --accent: #57d3ad;
  --accent-2: #70a7ff;
  --warn: #f2c45f;
  --danger: #ff7d8a;
  --ok: #70ddb7;
  --shadow: 0 16px 50px rgba(0,0,0,.35);
  --topbar-h: 58px;
  --tabs-h: 40px;
  --console-h: 172px;
  --left-rail-w: 46px;
  --left-panel-w: 282px;
  --right-panel-w: 318px;
}
* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; background: var(--bg); color: var(--text); font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; overflow: hidden; }
button, input, select, textarea { font: inherit; }
button { color: inherit; }
.app-shell { height: 100vh; display: grid; grid-template-columns: var(--left-rail-w) var(--left-panel-w) 1fr var(--right-panel-w); grid-template-rows: var(--topbar-h) var(--tabs-h) 1fr; }
.topbar { grid-column: 1 / -1; grid-row: 1; display:flex; align-items:center; gap:22px; padding:0 14px; border-bottom:1px solid var(--line); background:linear-gradient(180deg,#111a28,#0f1723); z-index: 30; }
.brand-block { display:flex; align-items:center; gap:10px; min-width: 275px; }
.brand-mark { width:34px; height:34px; display:grid; place-items:center; border:1px solid #34506b; border-radius:8px; background:linear-gradient(145deg,#193047,#132235); color:var(--accent); font-weight:800; letter-spacing:-1px; }
.brand-title { font-weight:780; letter-spacing:.1px; line-height:1.05; }
.brand-subtitle { color:var(--muted); font-size:10px; margin-top:3px; }
.project-strip { flex:1; display:flex; align-items:center; gap:7px; min-width:0; }
.project-name-wrap { display:flex; align-items:center; gap:8px; margin-left:4px; min-width:200px; max-width:430px; flex:1; }
.project-name-wrap input { width:100%; border:0; border-bottom:1px solid transparent; background:transparent; color:var(--text); padding:5px 2px; outline:none; }
.project-name-wrap input:focus { border-color:var(--accent-2); }
.top-actions { display:flex; gap:8px; align-items:center; }
.workspace-tabs { grid-column:1/-1; grid-row:2; padding-left:calc(var(--left-rail-w) + 10px); display:flex; align-items:end; background:#0f1622; border-bottom:1px solid var(--line); overflow-x:auto; white-space:nowrap; }
.workspace-tab { height:40px; padding:0 14px; border:0; border-bottom:2px solid transparent; background:transparent; color:var(--muted); cursor:pointer; font-size:12px; }
.workspace-tab:hover { color:var(--text); background:rgba(255,255,255,.025); }
.workspace-tab.active { color:var(--text); border-color:var(--accent); background:linear-gradient(180deg,transparent,rgba(87,211,173,.06)); }
.left-rail { grid-column:1; grid-row:3; border-right:1px solid var(--line); background:#0e1520; display:flex; flex-direction:column; justify-content:space-between; align-items:center; padding:8px 0; }
.rail-section, .rail-bottom { display:flex; flex-direction:column; gap:7px; }
.rail-icon { width:34px; height:34px; border:1px solid transparent; background:transparent; color:var(--muted); border-radius:7px; cursor:pointer; font-size:16px; }
.rail-icon:hover, .rail-icon.active { color:var(--text); background:var(--panel-3); border-color:var(--line); }
.left-panel { grid-column:2; grid-row:3; border-right:1px solid var(--line); background:var(--panel); min-width:0; overflow:hidden; }
.panel-header { height:58px; display:flex; align-items:center; justify-content:space-between; padding:0 12px; border-bottom:1px solid var(--line-soft); }
.panel-title { font-size:13px; font-weight:700; }
.panel-subtitle { font-size:10px; color:var(--muted); margin-top:3px; }
.panel-body { height:calc(100% - 58px); overflow:auto; padding:10px; }
.workspace { grid-column:3; grid-row:3; min-width:0; min-height:0; display:grid; grid-template-rows:42px 1fr var(--console-h); background:#0b111a; }
.workspace-toolbar { display:flex; align-items:center; gap:8px; padding:0 10px; border-bottom:1px solid var(--line); background:#111925; }
.toolbar-group { display:flex; align-items:center; gap:4px; }
.toolbar-spacer, .console-spacer { flex:1; }
.toolbar-status { display:flex; align-items:center; gap:7px; color:var(--muted); font-size:11px; }
.dot { width:7px; height:7px; border-radius:50%; display:inline-block; }
.dot.online { background:var(--ok); box-shadow:0 0 0 4px rgba(112,221,183,.08); }
.workspace-content { min-height:0; position:relative; overflow:hidden; }
.right-panel { grid-column:4; grid-row:3; border-left:1px solid var(--line); background:var(--panel); min-width:0; overflow:hidden; }
.right-tabs { display:flex; height:42px; border-bottom:1px solid var(--line); }
.right-tab { flex:1; border:0; border-bottom:2px solid transparent; color:var(--muted); background:transparent; cursor:pointer; font-size:11px; }
.right-tab.active { color:var(--text); border-color:var(--accent-2); }
.right-panel-body { height:calc(100% - 42px); overflow:auto; padding:12px; }
.bottom-console { min-height:0; background:#101823; border-top:1px solid var(--line); display:grid; grid-template-rows:32px 1fr; }
.console-tabs { display:flex; align-items:center; padding:0 6px; border-bottom:1px solid var(--line-soft); }
.console-tab { height:31px; border:0; border-bottom:2px solid transparent; background:transparent; color:var(--muted); padding:0 10px; font-size:11px; cursor:pointer; }
.console-tab.active { color:var(--text); border-color:var(--accent); }
.console-body { overflow:auto; padding:9px 12px; font-family:"SFMono-Regular",Consolas,monospace; font-size:11px; line-height:1.55; }
.console-line { display:flex; gap:10px; }
.console-time { color:#60748f; min-width:65px; }
.console-info { color:#a9bad0; }
.console-warn { color:var(--warn); }
.btn, .icon-btn, .mini-btn, .tool-btn { border:1px solid var(--line); background:var(--panel-2); color:var(--text); border-radius:6px; cursor:pointer; }
.btn { height:30px; padding:0 10px; font-size:11px; }
.btn:hover, .icon-btn:hover, .mini-btn:hover, .tool-btn:hover { border-color:#40546c; background:#1b2839; }
.btn.primary { background:#225f57; border-color:#347c70; }
.btn.accent { background:#284c75; border-color:#376595; }
.btn.ghost { background:transparent; }
.icon-btn { width:31px; height:31px; font-size:15px; display:grid; place-items:center; }
.mini-btn { width:26px; height:24px; padding:0; }
.tool-btn { height:27px; padding:0 9px; font-size:10px; background:transparent; }
.tool-btn.active { border-color:#3d715f; background:rgba(87,211,173,.09); color:var(--accent); }
.file-label { display:inline-flex; align-items:center; cursor:pointer; }
.file-label input { display:none; }
.badge { border-radius:999px; border:1px solid var(--line); padding:3px 7px; font-size:9px; white-space:nowrap; }
.badge.ok { color:var(--ok); border-color:rgba(112,221,183,.25); background:rgba(112,221,183,.06); }
.badge.warn { color:var(--warn); border-color:rgba(242,196,95,.24); background:rgba(242,196,95,.06); }
.muted { color:var(--muted); }
.small { font-size:10px; }
.compact-select { height:27px; border:1px solid var(--line); border-radius:5px; background:#111a27; color:var(--text); padding:0 25px 0 8px; font-size:10px; }
.tree { display:flex; flex-direction:column; gap:2px; }
.tree-row { display:flex; align-items:center; gap:7px; height:28px; padding:0 7px; border-radius:5px; color:#b9c5d4; font-size:11px; cursor:pointer; }
.tree-row:hover { background:#182234; color:var(--text); }
.tree-row.selected { background:#1b3040; color:var(--text); outline:1px solid #2c4e63; }
.tree-row .indent { width:12px; }
.tree-icon { width:16px; text-align:center; color:#7287a2; }
.tree-meta { margin-left:auto; color:#60748f; font-size:9px; }
.section-label { margin:13px 4px 6px; color:#6f8199; text-transform:uppercase; letter-spacing:.08em; font-size:9px; }
.library-search { width:100%; border:1px solid var(--line); background:#0f1723; color:var(--text); border-radius:6px; padding:8px 9px; outline:none; }
.library-search:focus { border-color:#456381; }
.component-category { margin-top:12px; }
.component-category-title { font-size:10px; color:#8ea1b7; font-weight:700; margin-bottom:6px; }
.component-card { border:1px solid var(--line-soft); background:#111a28; border-radius:6px; padding:8px; margin-bottom:5px; cursor:pointer; }
.component-card:hover { border-color:#36516c; background:#152235; }
.component-card-title { font-size:11px; font-weight:650; }
.component-card-sub { font-size:9px; color:var(--muted); margin-top:3px; }
.map-shell { height:100%; position:relative; }
#map { height:100%; width:100%; background:#172230; }
.map-overlay-card { position:absolute; z-index:500; top:12px; left:12px; width:250px; background:rgba(16,24,35,.94); border:1px solid #2a3b50; border-radius:9px; box-shadow:var(--shadow); backdrop-filter:blur(8px); padding:10px; }
.map-overlay-card h3 { font-size:11px; margin:0 0 7px; }
.metric-grid { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.metric { border:1px solid var(--line-soft); background:#101a28; border-radius:6px; padding:8px; }
.metric-label { color:var(--muted); font-size:9px; }
.metric-value { margin-top:3px; font-size:13px; font-weight:720; }
.canvas-workspace { height:100%; position:relative; background-color:#0f1722; background-image:linear-gradient(#1b2836 1px,transparent 1px),linear-gradient(90deg,#1b2836 1px,transparent 1px); background-size:24px 24px; overflow:auto; }
.sld-board { width:1600px; height:900px; position:relative; transform-origin:0 0; }
.sld-node { position:absolute; min-width:115px; padding:8px 10px; border:1px solid #35516a; border-radius:6px; background:#152235; box-shadow:0 8px 20px rgba(0,0,0,.18); font-size:10px; cursor:pointer; }
.sld-node.selected { outline:2px solid var(--accent); border-color:transparent; }
.sld-node .node-title { font-weight:700; }
.sld-node .node-sub { color:var(--muted); margin-top:3px; }
.busbar { position:absolute; height:4px; background:#8ba1b9; border-radius:5px; }
.line-seg { position:absolute; height:2px; background:#536d88; transform-origin:left center; }
.dash-grid { height:100%; padding:18px; overflow:auto; display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); grid-auto-rows:auto; align-content:start; align-items:stretch; gap:12px; }
.card { border:1px solid var(--line); background:linear-gradient(180deg,#131d2b,#101824); border-radius:8px; padding:12px; min-width:0; }
.card h3 { margin:0 0 10px; font-size:12px; }
.card-sub { color:var(--muted); font-size:9px; margin-top:-6px; margin-bottom:10px; }
.span-3 { grid-column:span 3; } .span-4 { grid-column:span 4; } .span-5 { grid-column:span 5; } .span-6 { grid-column:span 6; } .span-7 { grid-column:span 7; } .span-8 { grid-column:span 8; } .span-12 { grid-column:span 12; }
.kpi { font-size:25px; font-weight:760; letter-spacing:-.4px; }
.kpi-unit { color:var(--muted); font-size:11px; margin-left:5px; }
.progress { height:6px; border-radius:20px; background:#202c3b; overflow:hidden; margin-top:9px; }
.progress > span { display:block; height:100%; background:linear-gradient(90deg,#3978b9,#59d0aa); }
.table { width:100%; border-collapse:collapse; font-size:10px; }
.table th { text-align:left; color:#8194aa; font-weight:600; padding:7px 6px; border-bottom:1px solid var(--line); }
.table td { padding:7px 6px; border-bottom:1px solid var(--line-soft); }
.table tr:hover td { background:rgba(255,255,255,.015); }
.status-chip { border:1px solid var(--line); border-radius:999px; padding:2px 6px; font-size:8px; }
.status-chip.ok { color:var(--ok); } .status-chip.warn { color:var(--warn); } .status-chip.bad { color:var(--danger); }
.property-section { border-bottom:1px solid var(--line-soft); padding:0 0 12px; margin-bottom:12px; }
.property-section-title { font-size:10px; color:#91a5bb; text-transform:uppercase; letter-spacing:.06em; margin-bottom:8px; }
.field { display:grid; grid-template-columns:46% 54%; align-items:center; gap:8px; margin-bottom:7px; font-size:10px; }
.field label { color:#8ea0b5; }
.field input, .field select { width:100%; min-width:0; height:27px; border:1px solid var(--line); background:#0f1723; color:var(--text); border-radius:5px; padding:0 7px; font-size:10px; }
.field-with-unit { display:grid; grid-template-columns:1fr auto; gap:5px; align-items:center; }
.unit { color:#6e8298; font-size:9px; min-width:27px; }
.source-tag { font-size:8px; border-radius:3px; padding:2px 4px; margin-left:4px; vertical-align:middle; }
.source-tag.user { color:#8ec5ff; background:rgba(112,167,255,.1); }
.source-tag.calc { color:var(--accent); background:rgba(87,211,173,.1); }
.source-tag.ai { color:#cf9cff; background:rgba(207,156,255,.1); }
.modal-backdrop { position:fixed; inset:0; z-index:80; background:rgba(4,8,14,.68); backdrop-filter:blur(2px); }
.modal { position:fixed; z-index:90; width:min(980px,calc(100vw - 32px)); height:min(680px,calc(100dvh - 32px)); max-height:calc(100dvh - 32px); top:50%; left:50%; transform:translate(-50%,-50%); border:1px solid #30435a; border-radius:10px; background:#111a27; box-shadow:0 28px 90px rgba(0,0,0,.55); display:grid; grid-template-rows:auto minmax(0,1fr) auto; overflow:hidden; }
.modal.hidden, .modal-backdrop.hidden { display:none; }
.modal-header { min-height:56px; display:flex; align-items:center; justify-content:space-between; gap:14px; padding:10px 16px; border-bottom:1px solid var(--line); }
.modal-header > div:first-child { min-width:0; }
.modal-title { font-size:14px; font-weight:750; }
.modal-subtitle { color:var(--muted); font-size:10px; line-height:1.4; margin-top:4px; overflow-wrap:anywhere; }
.modal-footer { min-height:50px; display:flex; align-items:center; flex-wrap:wrap; padding:8px 14px; border-top:1px solid var(--line); gap:8px; }
.settings-layout { min-height:0; display:grid; grid-template-columns:190px 1fr; }
.settings-nav { border-right:1px solid var(--line); padding:10px; }
.settings-nav-item { display:block; width:100%; height:34px; text-align:left; border:0; border-radius:5px; background:transparent; color:var(--muted); padding:0 9px; cursor:pointer; font-size:11px; }
.settings-nav-item.active, .settings-nav-item:hover { background:#172235; color:var(--text); }
.settings-content { overflow:auto; padding:16px 18px; }
.settings-group { border:1px solid var(--line); border-radius:8px; margin-bottom:12px; overflow:hidden; }
.settings-group-header { padding:10px 12px; border-bottom:1px solid var(--line-soft); font-size:11px; font-weight:700; background:#121d2b; }
.settings-group-body { padding:12px; }
.settings-row { display:grid; grid-template-columns:180px 1fr; align-items:center; gap:14px; margin-bottom:9px; font-size:10px; }
.settings-row:last-child { margin-bottom:0; }
.settings-row input, .settings-row select { height:30px; border:1px solid var(--line); background:#0d1520; color:var(--text); border-radius:5px; padding:0 8px; }
.check { display:inline-flex; gap:6px; align-items:center; color:#9fb0c4; font-size:10px; }
.ai-modal { width:min(930px,calc(100vw - 32px)); height:min(720px,calc(100dvh - 24px)); max-height:calc(100dvh - 24px); grid-template-rows:auto minmax(0,1fr) auto; }
.ai-chat { min-height:0; overflow:auto; padding:15px 18px; }
.chat-message { max-width:78%; border:1px solid var(--line); border-radius:9px; padding:10px 12px; margin-bottom:10px; font-size:11px; line-height:1.5; }
.chat-message.assistant { background:#142133; }
.chat-message.user { margin-left:auto; background:#19302d; border-color:#2b514b; }
.chat-role { color:#8298b2; font-size:8px; text-transform:uppercase; letter-spacing:.08em; margin-bottom:5px; }
.ai-composer { border-top:1px solid var(--line); padding:10px 12px 12px; background:#111a27; }
.ai-composer textarea { display:block; width:100%; min-height:66px; max-height:150px; resize:vertical; border:1px solid var(--line); background:#0d1520; color:var(--text); border-radius:6px; padding:8px; outline:none; }
.ai-composer textarea:focus { border-color:#3e6389; }
.ai-composer-row { display:flex; align-items:center; flex-wrap:wrap; gap:8px 12px; margin-top:7px; }
.ai-composer-row .toolbar-spacer { flex:1 1 24px; }
.empty-state { height:100%; display:grid; place-items:center; color:var(--muted); text-align:center; padding:30px; }
.empty-state strong { color:var(--text); display:block; margin-bottom:6px; }
.landing-grid { height:100%; overflow:auto; padding:18px; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; align-content:start; }
.launch-card { min-height:150px; border:1px solid var(--line); background:linear-gradient(160deg,#132033,#101824); border-radius:9px; padding:14px; cursor:pointer; }
.launch-card:hover { border-color:#3c5b77; transform:translateY(-1px); }
.launch-title { font-weight:720; font-size:13px; }
.launch-text { color:var(--muted); font-size:10px; line-height:1.5; margin-top:7px; }
.launch-tags { display:flex; flex-wrap:wrap; gap:5px; margin-top:10px; }
.tag { font-size:8px; color:#9cb0c7; border:1px solid var(--line); border-radius:999px; padding:2px 6px; }
@media (max-width: 1200px) {
  :root { --left-panel-w: 235px; --right-panel-w: 275px; }
  .brand-subtitle { display:none; }
  .brand-block { min-width:190px; }
}
@media (max-width: 980px) {
  :root { --right-panel-w: 0px; --left-panel-w: 220px; }
  .right-panel { display:none; }
  .project-name-wrap { display:none; }
}

/* OpenPowerSim 0.2 usability + component ecosystem */
.command-search{width:220px;height:29px;border:1px solid var(--line);background:#0d1520;color:var(--text);border-radius:6px;padding:0 9px;font-size:10px;outline:none}
.command-search:focus{border-color:#4a6f92;box-shadow:0 0 0 2px rgba(83,143,198,.08)}
.workspace-tabs{overflow-x:auto;scrollbar-width:thin}
.library-mode-tabs,.registry-actions,.library-filter-row,.mini-actions{display:flex;gap:6px;align-items:center}
.library-mode-tabs{margin-bottom:9px}
.library-filter-row{align-items:stretch;flex-direction:column}
.library-filter-row .compact-select{width:100%}
.component-scales{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}
.mini-actions{margin-top:8px}
.my-component-card{border-left:2px solid #6d5ad7}
.component-studio-layout{overflow:auto;padding:16px 18px}
.component-studio-layout textarea{background:#0d1520;color:var(--text);border:1px solid var(--line);border-radius:5px;padding:8px;resize:vertical;width:100%;font:10px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace}
.empty-state.compact{min-height:140px;height:auto;border:1px dashed var(--line);border-radius:8px}
.start-workspace{height:100%;overflow:auto;padding:22px;display:flex;flex-direction:column;gap:18px;background:radial-gradient(circle at 85% 5%,rgba(58,104,155,.13),transparent 28%),#0e1621}
.start-hero{border:1px solid var(--line);border-radius:12px;padding:20px;background:linear-gradient(135deg,#142236,#101923);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;align-items:center}
.start-hero h1{font-size:23px;line-height:1.15;margin:5px 0 8px;letter-spacing:-.03em}
.start-hero p{color:var(--muted);font-size:11px;line-height:1.6;max-width:760px;margin:0}
.eyebrow{font-size:9px;letter-spacing:.13em;color:#6fa7d5;font-weight:700}
.workflow-ribbon{display:flex;gap:6px;align-items:center;flex-wrap:wrap;max-width:360px;justify-content:flex-end}
.workflow-ribbon span{border:1px solid #31516d;background:#15263a;border-radius:999px;padding:5px 8px;font-size:8px;font-weight:750;letter-spacing:.06em;color:#a9cae6}
.workflow-ribbon b{font-weight:400;color:#58748f;font-size:10px}
.start-grid{display:grid;grid-template-columns:repeat(4,minmax(190px,1fr));gap:10px}
.project-template-card{appearance:none;text-align:left;min-height:150px;border:1px solid var(--line);border-radius:9px;background:linear-gradient(160deg,#121e2d,#0f1722);color:var(--text);padding:13px;cursor:pointer;transition:.12s ease}
.project-template-card:hover{transform:translateY(-1px);border-color:#44698a;background:linear-gradient(160deg,#16263a,#111b29)}
.project-template-title{font-size:12px;font-weight:750}
.project-template-text{font-size:9px;color:var(--muted);line-height:1.55;margin-top:6px;min-height:58px}
.start-footer{display:flex;gap:8px;justify-content:flex-end;border-top:1px solid var(--line-soft);padding-top:14px}
@media(max-width:1450px){.start-grid{grid-template-columns:repeat(3,minmax(190px,1fr))}.command-search{width:160px}}
@media(max-width:1120px){.start-grid{grid-template-columns:repeat(2,minmax(190px,1fr))}.start-hero{grid-template-columns:1fr}.workflow-ribbon{justify-content:flex-start}.command-search{display:none}}
.plant-mode-tabs{display:flex;gap:6px;flex-wrap:wrap}
.engineering-chain{display:flex;gap:5px;align-items:center;flex-wrap:wrap;padding:10px;border:1px solid var(--line-soft);border-radius:7px;background:#0f1824}
.engineering-chain span{font-size:9px;border:1px solid #2d4861;border-radius:999px;padding:4px 7px;color:#a8c1d9;background:#142337}
.engineering-chain b{font-size:9px;color:#5b7188;font-weight:400}
.quick-component-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.quick-component,.study-shortcut{border:1px solid var(--line);border-radius:6px;background:#111b29;color:var(--text);padding:8px;text-align:left;cursor:pointer}
.quick-component:hover,.study-shortcut:hover{border-color:#416581;background:#152437}
.quick-component strong,.study-shortcut span{display:block;font-size:10px}
.quick-component small,.study-shortcut small{display:block;font-size:8px;color:var(--muted);margin-top:3px;line-height:1.4}
.study-shortcut{display:block;width:100%;margin-bottom:5px}

/* 0.3 operating-architecture / readiness additions */
.mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px}
.mode-card{appearance:none;text-align:left;background:var(--panel-2,#111b27);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:11px;cursor:pointer;min-height:88px;transition:.15s ease}
.mode-card:hover{border-color:var(--accent);transform:translateY(-1px)}
.mode-card.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;background:rgba(51,160,214,.08)}
.mode-card strong{display:block;font-size:12px;margin-bottom:5px}
.mode-card small{display:block;color:var(--muted);font-size:10px;line-height:1.45}
.readiness-row{display:flex;gap:9px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--line)}
.readiness-row:last-child{border-bottom:0}
.readiness-row strong{display:block;font-size:11px}
.readiness-row small{display:block;color:var(--muted);font-size:10px;line-height:1.4;margin-top:2px}
.readiness-icon{display:grid;place-items:center;width:21px;height:21px;border-radius:50%;font-size:11px;font-weight:800;flex:0 0 auto}
.readiness-icon.ok{background:rgba(62,190,137,.14);color:#73e1b4;border:1px solid rgba(62,190,137,.45)}
.readiness-icon.warn{background:rgba(236,173,67,.12);color:#f3c66e;border:1px solid rgba(236,173,67,.45)}
@media (max-width:1180px){.mode-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.sld-node.connect-source { outline:2px dashed #66d9ef; box-shadow:0 0 0 5px rgba(102,217,239,.12); }
.sld-node:active { cursor:grabbing; }

/* 0.6 engineer-intent navigation */
.study-launcher-modal{width:min(1180px,calc(100vw - 32px));height:min(800px,calc(100dvh - 32px));max-height:calc(100dvh - 32px);grid-template-rows:auto minmax(0,1fr) auto}
.study-launcher-body{min-height:0;overflow:auto;padding:14px 16px;display:grid;grid-template-rows:auto auto 1fr;gap:12px}
.intent-filter-row{display:flex;gap:8px;align-items:center}.intent-filter-row .command-search{width:min(560px,60vw);flex:1}.intent-filter-row .compact-select{min-width:190px}
.intent-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.intent-card{appearance:none;text-align:left;min-height:112px;border:1px solid var(--line);border-radius:8px;background:#111b29;color:var(--text);padding:10px;cursor:pointer}.intent-card:hover{border-color:#4f7597;background:#152438;transform:translateY(-1px)}.intent-card strong{display:block;font-size:11px;margin-bottom:5px}.intent-card small{display:block;color:var(--muted);font-size:9px;line-height:1.45;min-height:39px}
.intent-detail{border:1px solid var(--line);border-radius:9px;background:#0e1722;padding:13px}.intent-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.intent-detail h3{margin:4px 0 5px}.intent-columns{display:grid;grid-template-columns:.85fr 1.15fr;gap:14px;margin-top:12px}.intent-columns h4{font-size:10px;margin:0 0 7px;color:#a9bfd4;text-transform:uppercase;letter-spacing:.06em}.checkline{font-size:10px;color:#9fb3c7;padding:5px 0;border-bottom:1px solid var(--line-soft)}.intent-study-row{width:100%;display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:8px;text-align:left;border:1px solid var(--line-soft);border-radius:6px;background:#101b29;color:var(--text);padding:7px;margin-bottom:5px;cursor:pointer}.intent-study-row:hover{border-color:#416581}.intent-study-row span{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#1a2d42;color:#8fc4ec;font-size:9px}.intent-study-row b{font-size:10px}.intent-study-row small{font-size:8px;color:var(--muted)}.intent-warning{margin-top:10px;padding:8px 10px;border:1px solid rgba(236,173,67,.35);background:rgba(236,173,67,.08);border-radius:6px;font-size:9px;color:#d9bd83}.intent-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:12px}
@media(max-width:1150px){.intent-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.intent-columns{grid-template-columns:1fr}}

/* OpenPowerSim 0.7 navigation + lifecycle workspaces */
.command-palette{position:fixed;top:42px;left:50%;transform:translateX(-18%);z-index:80;width:min(560px,60vw);max-height:430px;overflow:auto;border:1px solid #38566f;border-radius:8px;background:#0d1621;box-shadow:0 18px 50px rgba(0,0,0,.45);padding:6px}
.command-palette.hidden{display:none}.command-item{appearance:none;width:100%;display:flex;justify-content:space-between;gap:12px;align-items:center;text-align:left;border:0;border-bottom:1px solid var(--line-soft);background:transparent;color:var(--text);padding:9px 10px;cursor:pointer;border-radius:5px}.command-item:last-child{border-bottom:0}.command-item:hover{background:#16263a}.command-item strong{font-size:10px}.command-item small{font-size:8px;color:var(--muted);text-align:right}.command-empty{padding:16px;color:var(--muted);font-size:10px}
.workspace-tabs{gap:0}.workspace-tab{white-space:nowrap}
@media(max-width:1120px){.command-palette{left:260px;transform:none;width:calc(100vw - 290px)}}

/* OpenPowerSim 0.8.3 visibility-first engineering summaries */
.start-summary-grid{display:grid;grid-template-columns:minmax(0,1.28fr) minmax(360px,.72fr);gap:12px;flex:0 0 auto;min-height:max-content;height:auto;overflow:visible;margin:0 0 2px;padding:0}
.start-summary-card{min-height:0;padding:16px;overflow:visible}
.start-summary-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.start-summary-title-row h3{font-size:14px;margin:5px 0 9px}
.start-summary-card .card-sub{margin-top:0;line-height:1.5}
.start-mode-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 14px;margin:13px 0 14px}
.start-fact{border-top:1px solid var(--line-soft);padding-top:7px;min-width:0}
.start-fact span{display:block;color:#7f95aa;font-size:8px;text-transform:uppercase;letter-spacing:.06em;margin-bottom:3px}
.start-fact strong{display:block;font-size:9px;line-height:1.45;color:#c5d6e7;font-weight:620;overflow-wrap:anywhere}
.start-preflight-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 10px;margin:10px 0 13px}
.start-preflight-row{display:grid;grid-template-columns:20px minmax(0,1fr);gap:7px;align-items:flex-start;padding:6px 7px;border:1px solid var(--line-soft);border-radius:6px;background:rgba(8,15,24,.28);min-width:0}
.start-preflight-row strong{display:block;font-size:9px;line-height:1.3}
.start-preflight-row small{display:block;color:var(--muted);font-size:8px;line-height:1.35;margin-top:2px}
.start-preflight-card .kpi{font-size:26px;margin-top:3px}
@media(max-width:1180px){.start-summary-grid{grid-template-columns:1fr}.start-preflight-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.start-preflight-list,.start-mode-facts{grid-template-columns:1fr}.start-workspace{padding:14px}.start-hero{grid-template-columns:1fr}.workflow-ribbon{justify-content:flex-start}}


/* OpenPowerSim 0.8.4 visibility-first responsive workspace layout */
.workspace-scroll{height:100%;min-height:0;overflow:auto;padding:14px;scrollbar-gutter:stable}
.plant-shell{display:flex;flex-direction:column;gap:12px;min-width:0}
.plant-mode-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:10px 11px;border:1px solid var(--line);border-radius:8px;background:linear-gradient(180deg,#131d2b,#101824);min-height:48px}
.plant-mode-bar .plant-mode-tabs{margin:0}
.plant-main-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(300px,.92fr);gap:12px;align-items:start;min-width:0}
.plant-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:start;min-width:0}
.plant-main-grid>.card,.plant-summary-grid>.card{height:auto;min-height:0;overflow:visible}
.plant-workflow-card .section-label{margin-top:14px}
.plant-studies-card{position:relative}
.plant-studies-list{display:flex;flex-direction:column;gap:6px}
.plant-studies-list .study-shortcut{margin:0}
.plant-summary-grid .metric{padding:7px 8px}
.card{overflow-wrap:anywhere}
.card>.table-wrap{width:100%;overflow:auto}
@media(max-width:1250px){.plant-main-grid{grid-template-columns:1fr}.plant-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.plant-summary-grid{grid-template-columns:1fr}.workspace-scroll{padding:10px}.quick-component-grid{grid-template-columns:1fr}}

/* Keep dense engineering pages readable: one workspace scrollbar, not tiny nested summary scrollers. */
.dash-grid>.card{align-self:start}
.dash-grid .card-sub{line-height:1.45}
.dash-grid .table-wrap{max-width:100%}

/* OpenPowerSim 0.9 manufacturer catalog + location resource coupling */
.map-site-panel{width:min(410px,calc(100vw - 330px));min-width:320px;max-width:410px;overflow:visible}
.map-panel-title{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:9px}
.map-panel-title h3{margin:0 0 3px}
.map-resource-controls{display:flex;gap:7px;align-items:end;margin:9px 0}
.map-resource-controls label{display:flex;flex-direction:column;gap:3px;color:var(--muted);font-size:8px;flex:1}
.map-resource-controls input{height:28px;border:1px solid var(--line);border-radius:5px;background:#0d1622;color:var(--text);padding:0 7px;min-width:0}
.resource-status{border:1px solid var(--line-soft);border-radius:7px;background:#0e1723;padding:9px;margin-top:8px}
.resource-status>strong,.resource-status>span{display:block}.resource-status>span{font-size:9px;color:var(--muted);margin-top:4px;line-height:1.4}
.resource-status.loading{border-color:rgba(77,196,255,.35)}.resource-status.missing{border-color:rgba(236,173,67,.3)}
.resource-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.resource-head strong{font-size:10px}.resource-head span:not(.status-chip){display:block;font-size:8px;color:var(--muted);margin-top:3px}
.resource-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:8px}.resource-metrics>div{border-top:1px solid var(--line-soft);padding-top:5px;min-width:0}.resource-metrics span{display:block;font-size:7px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.resource-metrics b{display:block;font-size:9px;margin-top:2px;font-weight:650;overflow-wrap:anywhere}
.resource-note{font-size:8px;color:#879aad;line-height:1.38;margin-top:8px}.map-help{margin:9px 0 0;line-height:1.42}.selected-map-object{margin-top:8px}
.catalog-panel{display:flex;flex-direction:column;gap:8px}.catalog-note{border:1px solid #2b4157;background:#0e1926;border-radius:7px;padding:8px;font-size:9px;color:#9fb1c5;line-height:1.45}.catalog-note strong{color:#d9e6f2;font-size:10px}
.catalog-controls,.catalog-search-row,.brand-chip-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.catalog-controls .compact-select{flex:1;min-width:135px}.catalog-search-row .library-search{flex:1;min-width:120px}
.brand-chip{appearance:none;border:1px solid #2a4259;border-radius:999px;background:#111d2c;color:#a9c0d6;font-size:8px;padding:4px 7px;cursor:pointer}.brand-chip:hover{border-color:#4c7598;color:#d9efff;background:#16283b}
.catalog-product-card{cursor:default}.catalog-provenance{font-size:8px;color:#607e99;margin-top:5px}.catalog-product-card .mini-actions{margin-top:7px}
@media(max-width:900px){.map-site-panel{width:calc(100vw - 110px);max-width:390px;min-width:280px}.resource-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* 1.0 simulation result presentation */
.result-banner{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:10px 12px;margin:8px 0 12px;border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.018)}
.result-banner.warn{border-color:rgba(245,158,11,.35)}
.result-banner.ok{border-color:rgba(52,211,153,.35)}
.result-banner span{font-size:11px;color:var(--muted);text-align:right}
.result-detail{margin-top:12px;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:rgba(255,255,255,.012)}
.result-detail>summary{cursor:pointer;font-size:12px;font-weight:700;text-transform:capitalize;color:var(--text)}
.result-table{margin-top:8px}
.result-json{white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;line-height:1.45;color:var(--muted);margin:8px 0 0}
.result-text{padding:8px 0;color:var(--muted);font-size:11px}

/* 1.1 engineer-meaningful results workspace */
.results-workspace{height:100%;min-height:0;overflow:auto;padding:16px;display:flex;flex-direction:column;gap:12px;background:radial-gradient(circle at 82% 0%,rgba(56,133,173,.08),transparent 28%),#0c131d}
.result-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(310px,.75fr);gap:12px;align-items:stretch}
.result-hero-main,.result-panel,.assessment-badge,.result-kpi-card{border:1px solid var(--line);border-radius:9px;background:linear-gradient(180deg,#131d2b,#101824)}
.result-hero-main{padding:16px}.result-hero-main h2{margin:4px 0 6px;font-size:20px}.result-provenance-line{display:flex;flex-wrap:wrap;gap:7px;color:var(--muted);font-size:9px}
.assessment-badge{padding:14px 16px;display:flex;flex-direction:column;justify-content:center;border-left-width:3px}.assessment-badge strong{font-size:12px;letter-spacing:.04em}.assessment-badge span{font-size:10px;color:var(--muted);margin-top:5px;line-height:1.45}.assessment-badge.ok{border-left-color:var(--ok)}.assessment-badge.warn{border-left-color:var(--warn)}.assessment-badge.bad{border-left-color:var(--danger)}.assessment-badge.neutral{border-left-color:#6394bd}
.result-kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}.result-kpi-card{padding:11px 12px;min-height:82px}.result-kpi-card>span{display:block;color:#89a0b6;font-size:9px;text-transform:uppercase;letter-spacing:.05em}.result-kpi-card>strong{display:block;font-size:20px;margin-top:6px;line-height:1.08}.result-kpi-card>small{display:block;color:#61778e;font-size:8px;margin-top:7px}
.results-main-grid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(290px,.75fr);gap:12px;align-items:start}.result-panel{padding:13px;min-width:0}.result-panel-wide{min-height:280px}.result-section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.result-section-head h3,.result-panel h3{margin:3px 0 10px;font-size:12px}.result-decision-text{font-size:10px;color:#a9bacb;line-height:1.55;margin:6px 0 10px}
.engineering-chart{border:1px solid var(--line-soft);border-radius:8px;background:#0d1621;padding:8px 10px;margin-top:10px;overflow:hidden}.chart-head{display:flex;justify-content:space-between;gap:10px;align-items:center}.chart-title{font-size:10px;font-weight:700;color:#b8c9d8}.chart-legend{display:flex;flex-wrap:wrap;gap:8px;font-size:8px;color:var(--muted)}.chart-legend span{display:flex;align-items:center;gap:4px}.chart-legend i{width:12px;height:2px;display:inline-block}.engineering-chart svg{display:block;width:100%;height:auto;max-height:245px;margin-top:3px}.chart-grid{stroke:#273647;stroke-width:1}.chart-axis{fill:#72879c;font-size:9px}.chart-bar{fill:#4e87ae;opacity:.86}.chart-line{fill:none;stroke-width:2}.series-0{stroke:#61b8d9;background:#61b8d9}.series-1{stroke:#66d09c;background:#66d09c}.series-2{stroke:#c79ce9;background:#c79ce9}.series-3{stroke:#e0b26e;background:#e0b26e}.result-visual-empty{height:180px;display:grid;place-items:center;color:var(--muted);font-size:10px;text-align:center;padding:20px}
.result-notes{display:grid;gap:7px;margin-top:10px}.result-note{border:1px solid var(--line-soft);border-radius:7px;padding:8px 9px;background:#0d1621}.result-note strong{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.result-note span{display:block;font-size:9px;color:#8fa5b9;line-height:1.45;margin-top:2px}.result-note.warn{border-color:rgba(232,174,67,.28)}.result-note.limitation{border-color:rgba(128,145,165,.25)}.result-note.method{border-color:rgba(78,135,174,.28)}.result-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.result-scalar-table td:first-child{color:#91a4b7;text-transform:capitalize}.result-footer-note{border:1px solid rgba(236,173,67,.22);background:rgba(236,173,67,.045);border-radius:8px;padding:10px 12px;color:#9faeBC;font-size:9px;line-height:1.5}.results-empty{min-height:420px;border:1px dashed var(--line);border-radius:9px}
@media(max-width:1350px){.result-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.results-main-grid{grid-template-columns:1fr}.result-hero{grid-template-columns:1fr}}
@media(max-width:780px){.result-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.results-workspace{padding:10px}.result-kpi-card>strong{font-size:17px}}

/* 1.1 meaningful study manager + SLD result overlays */
.sld-overlay-toolbar{position:sticky;left:10px;top:10px;z-index:10;width:max-content;max-width:calc(100vw - 760px);display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:8px;background:rgba(13,22,33,.94);box-shadow:var(--shadow);padding:7px 9px;margin:10px}.sld-overlay-toolbar strong{font-size:10px}.sld-overlay-toolbar span{font-size:9px;color:var(--muted)}
.sld-result-chip{margin-top:6px;border:1px solid rgba(87,211,173,.28);border-radius:4px;padding:3px 5px;background:rgba(87,211,173,.06);font-size:8px;color:#9edbc9}.sld-result-chip.warn{border-color:rgba(242,196,95,.35);color:#e4c779}.sld-result-chip.bad{border-color:rgba(255,125,138,.38);color:#f39aa4}.line-seg.open{background:repeating-linear-gradient(90deg,#536d88 0 7px,transparent 7px 12px)}
.study-dashboard{display:flex;flex-direction:column;gap:12px}.study-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.study-summary-card{border:1px solid var(--line);border-radius:8px;background:linear-gradient(180deg,#131d2b,#101824);padding:11px 12px;min-height:86px}.study-summary-card>span{display:block;color:#8298ae;font-size:9px;text-transform:uppercase;letter-spacing:.05em}.study-summary-card>strong{display:block;font-size:22px;margin-top:5px}.study-summary-card>small{display:block;font-size:8px;color:#60778e;margin-top:5px}.study-summary-card .study-next{font-size:11px;line-height:1.25;margin:7px 0}.study-main-grid{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(270px,.55fr);gap:12px;align-items:start}.study-table td:first-child{min-width:320px}.study-purpose,.study-readiness-detail{display:block;color:var(--muted);font-size:8px;line-height:1.45;margin-top:3px}.study-context{display:grid;gap:7px;margin:8px 0 12px}.study-context>div{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line-soft);padding:6px 0}.study-context span{color:#7f94a8;font-size:9px}.study-context strong{font-size:9px;text-align:right}.advanced-study-list{padding:0;overflow:hidden}.advanced-study-list>summary{cursor:pointer;padding:11px 12px;font-size:10px;font-weight:700}.advanced-study-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding:0 12px 12px}.advanced-study-card{border:1px solid var(--line-soft);border-radius:6px;background:#0d1621;padding:8px}.advanced-study-card strong,.advanced-study-card span,.advanced-study-card small{display:block}.advanced-study-card strong{font-size:9px}.advanced-study-card span{font-size:8px;color:var(--muted);line-height:1.4;margin-top:3px}.advanced-study-card small{font-size:7px;color:#a98a55;margin-top:6px}
@media(max-width:1150px){.study-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.study-main-grid{grid-template-columns:1fr}.advanced-study-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sld-overlay-toolbar{max-width:80%}}
@media(max-width:720px){.study-summary-grid,.advanced-study-grid{grid-template-columns:1fr}}

/* 1.1 meaningful right-side engineering context */
.right-ai-permission{display:flex!important;margin:9px 0;justify-content:flex-start}.right-ai-permission .status-chip{margin-left:auto}.right-assessment{border:1px solid var(--line-soft);border-left-width:3px;border-radius:6px;padding:8px 9px;margin-top:8px;background:#0d1621}.right-assessment strong,.right-assessment span{display:block}.right-assessment strong{font-size:9px;letter-spacing:.04em}.right-assessment span{font-size:8px;color:var(--muted);line-height:1.45;margin-top:4px}.right-assessment.ok{border-left-color:var(--ok)}.right-assessment.warn{border-left-color:var(--warn)}.right-assessment.bad{border-left-color:var(--danger)}.right-assessment.neutral{border-left-color:#6394bd}.right-result-kpi{display:flex;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px solid var(--line-soft)}.right-result-kpi span{font-size:8px;color:#8398ad}.right-result-kpi strong{font-size:9px;text-align:right}

/* Viewport-safe modal contract: primary actions must remain reachable on laptop screens. */
@media (max-height: 760px) {
  .modal { height:calc(100dvh - 20px); max-height:calc(100dvh - 20px); }
  .ai-modal, .study-launcher-modal { height:calc(100dvh - 16px); max-height:calc(100dvh - 16px); }
  .modal-header { min-height:50px; padding:8px 12px; }
  .modal-footer { min-height:44px; padding:6px 10px; }
  .ai-chat { padding:10px 12px; }
  .ai-composer { padding:8px 10px 10px; }
  .ai-composer textarea { min-height:56px; max-height:96px; }
}
@media (max-width: 760px) {
  .modal, .ai-modal, .study-launcher-modal { width:calc(100vw - 16px); }
  .settings-layout { grid-template-columns:1fr; overflow:auto; }
  .settings-nav { border-right:0; border-bottom:1px solid var(--line); display:flex; flex-wrap:wrap; gap:4px; }
  .settings-nav-item { width:auto; flex:1 1 120px; }
  .settings-content { overflow:visible; }
  .settings-row { grid-template-columns:1fr; gap:5px; }
  .modal-footer > .toolbar-spacer { display:none; }
  .modal-footer { justify-content:flex-end; }
  .modal-footer .muted.small { flex:1 1 100%; }
  .ai-composer-row .check { flex:1 1 170px; }
  .ai-composer-row #sendAiBtn { margin-left:auto; }
}
/* 1.2 professional PV equipment selection */
.pv-selected-equipment{margin-top:12px;border-top:1px solid #24374b;padding-top:10px}.pv-selected-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 9px;margin:6px 0;border:1px solid #263b50;border-radius:7px;background:#0e1926}.pv-selected-row>div{min-width:0;display:flex;flex-direction:column;gap:2px}.pv-selected-row small{color:#6889a7;text-transform:uppercase;letter-spacing:.08em;font-size:8px}.pv-selected-row strong{font-size:10px;color:#e7f1fa;white-space:normal}.pv-selected-row span:not(.status-chip){font-size:8px;color:#8da5ba}.pv-selected-equipment .mini-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}

/* 1.3 engineering dimensioning tools */
.design-tool-layout{display:grid;grid-template-columns:minmax(320px,.9fr) minmax(420px,1.35fr);gap:12px;align-items:start}
.design-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 12px;margin-top:10px}
.design-check{padding:9px 10px;border:1px solid var(--line);border-radius:6px;background:var(--panel2)}
.design-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.design-kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:10px 0}
.design-kpi{border:1px solid var(--line);border-radius:6px;padding:10px;background:var(--panel2);min-width:0}
.design-kpi span{display:block;color:var(--muted);font-size:10px;text-transform:capitalize;margin-bottom:4px}
.design-kpi strong{display:block;font-size:14px;overflow-wrap:anywhere}
.design-result-status{display:flex;justify-content:flex-end}
@media(max-width:1150px){.design-tool-layout{grid-template-columns:1fr}.design-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.design-form-grid,.design-kpi-grid{grid-template-columns:1fr}}

/* 1.5 professional status ribbon */
.workspace { grid-template-rows:30px 42px 1fr var(--console-h); }
.health-ribbon{display:flex;align-items:center;gap:7px;padding:4px 10px;border-bottom:1px solid var(--line-soft);background:#0d1520;overflow-x:auto;white-space:nowrap;min-width:0}
.health-chip{display:flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:999px;padding:3px 8px;font-size:9px;color:var(--muted);background:#101b29}
.health-chip span{font-weight:700;letter-spacing:.06em}.health-chip strong{font-weight:600;color:var(--text)}
.health-chip.ok{border-color:rgba(112,221,183,.38);background:rgba(112,221,183,.07)}
.health-chip.warn{border-color:rgba(242,196,95,.4);background:rgba(242,196,95,.06)}
.health-chip.bad{border-color:rgba(255,125,138,.42);background:rgba(255,125,138,.07)}
.health-chip.neutral{border-color:#31435a}
.catalog-product-card .catalog-provenance{margin-top:6px;color:var(--muted);font-size:9px;line-height:1.4}
@media(max-width:1100px){.health-ribbon{gap:4px;padding-inline:7px}.health-chip{padding:3px 6px}.health-chip span{display:none}}

/* 1.6 browser-only team + validation UX */
.team-modal{width:min(1040px,calc(100vw - 32px));height:min(760px,calc(100dvh - 24px))}
.team-modal-body{min-height:0;overflow:auto;padding:12px 14px;display:grid;grid-template-columns:minmax(250px,.8fr) minmax(260px,.8fr) minmax(340px,1.4fr);gap:12px;align-items:start}
.team-presence-list,.team-comments{display:flex;flex-direction:column;gap:7px;max-height:360px;overflow:auto}
.team-person,.team-comment{border:1px solid var(--line);background:#0d1622;border-radius:7px;padding:8px 9px}
.team-person{display:flex;align-items:center;gap:8px}.team-person div{display:flex;flex-direction:column;gap:2px}.team-person small,.team-comment small{color:var(--muted);font-size:9px}
.team-comment>div{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.team-comment>div span{font-size:9px;color:var(--muted)}.team-comment p{margin:6px 0 3px;white-space:pre-wrap;line-height:1.4}
.team-comment-compose{display:grid;grid-template-columns:1fr auto;gap:7px;margin-top:10px;align-items:end}.team-comment-compose textarea{width:100%;min-height:64px;resize:vertical;background:#0d1520;color:var(--text);border:1px solid var(--line);border-radius:6px;padding:8px}
.validation-center{border-left:3px solid #4d8fba}.validation-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:12px}.validation-item{display:flex;gap:8px;border:1px solid var(--line-soft);background:#0d1622;border-radius:7px;padding:8px;min-width:0}.validation-item>div{display:flex;flex-direction:column;gap:3px;min-width:0}.validation-item small{color:var(--muted);overflow-wrap:anywhere}
.callout.info{border:1px solid rgba(91,170,220,.28);background:rgba(64,132,175,.08);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}.callout.info span{color:var(--muted);font-size:10px;line-height:1.45}
@media(max-width:1180px){.team-modal-body{grid-template-columns:1fr 1fr}.team-modal-body>.settings-group:nth-child(3){grid-column:1/-1}.validation-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.team-modal-body{grid-template-columns:1fr}.team-modal-body>.settings-group:nth-child(3){grid-column:auto}.validation-grid{grid-template-columns:1fr 1fr}.team-comment-compose{grid-template-columns:1fr}.top-actions #teamBtn .count{display:none}}
@media(max-width:520px){.validation-grid{grid-template-columns:1fr}}
.help-modal{width:min(1000px,calc(100vw - 32px));height:min(760px,calc(100dvh - 24px))}.help-modal-body{min-height:0;overflow:auto;padding:14px;display:flex;flex-direction:column;gap:12px}.help-section{border:1px solid var(--line);border-radius:8px;background:#0e1723;padding:12px}.help-section h3{margin:0 0 9px;font-size:12px}.help-section p{color:var(--muted);font-size:10px;line-height:1.5;margin:7px 0 0}.help-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.help-grid>div{border:1px solid var(--line-soft);border-radius:6px;padding:8px;background:#101a28}.help-workflow{justify-content:flex-start;flex-wrap:wrap}.help-workflow span{font-size:9px}@media(max-width:760px){.help-grid{grid-template-columns:1fr 1fr}}@media(max-width:520px){.help-grid{grid-template-columns:1fr}}

/* 2.0 browser reliability + usable settings */
.service-status{height:24px;background:transparent;cursor:pointer;font-weight:650}.service-status.bad{color:var(--danger);border-color:rgba(255,125,138,.34);background:rgba(255,125,138,.06)}
:root[data-density="comfortable"]{--topbar-h:64px;--tabs-h:44px;--console-h:190px;--left-panel-w:300px;--right-panel-w:336px}
:root[data-density="comfortable"] .btn{height:34px;padding-inline:12px}:root[data-density="comfortable"] .workspace-tab{height:44px;padding-inline:16px}:root[data-density="comfortable"] .panel-body,:root[data-density="comfortable"] .right-panel-body{padding:14px}:root[data-density="comfortable"] .field{margin-bottom:9px}:root[data-density="comfortable"] .component-card{padding:10px}
@media(max-width:1120px){.service-status{display:none}.topbar{gap:10px}.top-actions{gap:5px}}
.stacked-fields{display:flex;flex-direction:column;gap:6px;min-width:240px}
.stacked-fields input{width:100%}
.callout.info code{display:block;margin-top:6px;padding:7px 8px;border:1px solid var(--line);border-radius:6px;word-break:break-all;background:#08111b;color:var(--text)}

/* 2.1.2 decision-meaningful engineering visualization */
.chart-reference line{stroke:#d5a64e;stroke-width:1;stroke-dasharray:5 4;opacity:.82}.chart-reference text{fill:#d5b56f;font-size:8px}.chart-context{font-size:8px;color:#758ba0}.chart-caption{font-size:8px;color:#7890a7;line-height:1.45;border-top:1px solid var(--line-soft);padding:6px 4px 2px;margin-top:2px}.chart-bar.negative{fill:#b46878}.visual-kpi-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin-top:10px}.visual-kpi-item{position:relative;min-height:92px;border:1px solid var(--line-soft);border-radius:8px;background:linear-gradient(180deg,#0f1a28,#0c1520);padding:11px 12px;overflow:hidden}.visual-kpi-item:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,#4e87ae,#66d09c);opacity:.75}.visual-kpi-item span,.visual-kpi-item strong,.visual-kpi-item small{display:block}.visual-kpi-item span{font-size:8px;color:#7f95aa;text-transform:uppercase;letter-spacing:.05em}.visual-kpi-item strong{font-size:18px;margin-top:7px;line-height:1.15}.visual-kpi-item small{font-size:7px;color:#61788f;margin-top:8px}.result-visual-empty{align-content:center;gap:6px}.result-visual-empty strong,.result-visual-empty span{display:block}.result-visual-empty strong{color:#b9c8d7;font-size:11px}.result-visual-empty span{max-width:540px;line-height:1.5}


/* 2.1.3 map provider resilience */
.map-tile-notice{position:absolute;left:50%;top:14px;transform:translateX(-50%);z-index:650;max-width:min(680px,calc(100% - 32px));display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid rgba(255,183,77,.55);border-radius:8px;background:rgba(30,24,12,.94);box-shadow:0 8px 24px rgba(0,0,0,.28);color:var(--text);font-size:12px;line-height:1.4}
.map-tile-notice strong{color:#ffd08a;white-space:nowrap}.map-tile-notice.hidden{display:none}

/* 2.2.0 expanded equipment library and sizing analysis */
.catalog-library-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;padding:7px;border:1px solid var(--line-soft);background:#0d1724;border-radius:7px}.catalog-library-summary span{font-size:8px;color:var(--muted);display:flex;flex-direction:column;gap:2px}.catalog-library-summary strong{font-size:12px;color:var(--text)}
.catalog-compare-card,.catalog-analysis-card{border:1px solid #33516a;background:#101b29;border-radius:8px;padding:9px;display:flex;flex-direction:column;gap:8px}.compact-table{min-width:520px}.catalog-sizing-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.catalog-sizing-grid .field{margin:0}.catalog-sizing-grid .input-with-unit{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:5px}.catalog-sizing-grid .input-with-unit span{font-size:8px;color:var(--muted)}
.catalog-sizing-result{display:flex;flex-direction:column;gap:7px}.sizing-factor-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.sizing-factor{border:1px solid var(--line-soft);border-radius:6px;padding:6px;background:#0d1724;display:grid;gap:2px}.sizing-factor>span{font-size:8px;color:var(--muted)}.sizing-factor>strong{font-size:10px;color:var(--text)}.sizing-factor>small{font-size:8px;color:var(--muted);line-height:1.35}.sizing-factor.pass{border-color:#285f4a}.sizing-factor.warn{border-color:#7b6427}.sizing-factor.fail{border-color:#7c3540}.sizing-note{margin-top:2px}
@media(max-width:900px){.catalog-sizing-grid,.sizing-factor-list,.catalog-library-summary{grid-template-columns:1fr}}
/* 2.2 catalog decision readability */
.catalog-sizing-result .engineering-decision{display:flex;flex-direction:column;gap:4px;padding:8px;border:1px solid var(--line-soft);border-radius:7px;background:#0d1724}
.catalog-sizing-result .engineering-decision strong{font-size:10px;letter-spacing:.04em}
.catalog-sizing-result .engineering-decision span{font-size:9px;line-height:1.4;color:var(--muted)}
.catalog-sizing-result .engineering-decision.ok{border-color:#285f4a}.catalog-sizing-result .engineering-decision.warn{border-color:#7b6427}.catalog-sizing-result .engineering-decision.bad{border-color:#7c3540}

/* 2.4.0 PV mounting, layout and engineering-input clarity */
.field-help { display:block; margin-top:4px; color:var(--muted); font-size:9px; line-height:1.35; max-width:340px; }
.pv-layout-panel { margin-top:12px; border-top:1px solid var(--line-soft); padding-top:12px; }
.pv-layout-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:10px; }
.pv-layout-head .card-sub { max-width:760px; margin-top:3px; }
.pv-layout-grid { display:grid; grid-template-columns:repeat(4,minmax(150px,1fr)); gap:8px; }
.pv-layout-field { display:flex; flex-direction:column; gap:4px; color:var(--muted); font-size:9px; min-width:0; }
.pv-layout-field > span { color:#b9c5d4; font-weight:650; }
.pv-layout-field input,.pv-layout-field select { width:100%; min-width:0; height:30px; border:1px solid var(--line); background:#0f1723; color:var(--text); border-radius:5px; padding:0 7px; font-size:10px; }
.pv-layout-field small { line-height:1.3; color:var(--muted); }
.pv-layout-field.is-disabled { opacity:.48; }
.pv-layout-field.is-disabled input,.pv-layout-field.is-disabled select { cursor:not-allowed; }
.pv-layout-advanced { margin-top:10px; border:1px solid var(--line-soft); border-radius:6px; background:#0f1723; }
.pv-layout-advanced summary { padding:9px 10px; cursor:pointer; color:#cbd7e5; font-size:10px; font-weight:700; }
.pv-layout-advanced[open] summary { border-bottom:1px solid var(--line-soft); }
.pv-layout-advanced .pv-layout-grid { padding:10px; }
@media (max-width:1250px){ .pv-layout-grid{grid-template-columns:repeat(3,minmax(145px,1fr));} }
@media (max-width:900px){ .pv-layout-head{flex-direction:column}.pv-layout-grid{grid-template-columns:repeat(2,minmax(130px,1fr));} }
.validation-detail{margin-top:12px;border-top:1px solid var(--line,#d7dee5);padding-top:10px}
.validation-detail summary{cursor:pointer;font-weight:700}
.validation-gap-list{display:grid;gap:8px;margin-top:10px}
.validation-gap{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;padding:9px 10px;border:1px solid var(--line,#d7dee5);border-radius:8px;background:var(--surface-soft,#f8fafb)}
.validation-gap small{display:block;margin-top:3px;line-height:1.35}
.technology-input-card{margin-top:14px;padding:12px;border:1px solid var(--line,#d7dee5);border-radius:10px;background:var(--surface-soft,#f8fafb)}
.technology-input-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:8px}
.technology-input-row{display:grid;grid-template-columns:minmax(120px,.35fr) 1fr;gap:10px;padding:7px 0;border-top:1px solid var(--line,#d7dee5);font-size:12px}
.technology-input-row span{opacity:.78;line-height:1.35}

/* 2.5: public/free responsive workbench. The engineering workspace always occupies
   the full device width; optional panels overlay rather than squeezing it. */
.mobile-panel-btn{display:none}
:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}
@media(max-width:1450px){
 .topbar{gap:8px}.brand-block{min-width:145px}.brand-subtitle{display:none}
 .project-name-wrap{min-width:125px;max-width:250px}
 .top-actions{gap:4px}.top-actions .btn{padding-inline:6px}
}
@media(max-width:1100px){
 :root{--topbar-h:0px;--left-panel-w:0px;--right-panel-w:0px}
 .app-shell{height:100dvh;width:100%;max-width:100vw;grid-template-columns:minmax(0,1fr);grid-template-rows:auto 40px minmax(0,1fr)}
 .topbar{grid-column:1;grid-row:1;flex-wrap:wrap;gap:8px;padding:6px 10px;min-width:0;min-height:60px}
 .brand-block{min-width:0;flex:1 1 155px}
 .brand-title{font-size:14px}.brand-subtitle{display:none}
 .project-strip{order:3;flex:1 1 100%;min-width:0;overflow-x:auto;scrollbar-width:thin;padding-bottom:3px}
 .project-strip>button,.project-strip>.file-label,.project-name-wrap,.project-strip>.badge{flex-shrink:0}
 .project-name-wrap{flex:1 0 140px;min-width:140px;max-width:240px}
 .top-actions{flex:0 0 auto;gap:4px;justify-content:flex-end;flex-wrap:wrap}
 .mobile-panel-btn{display:inline-flex;align-items:center;white-space:nowrap}
 .workspace-tabs{grid-column:1;grid-row:2;padding-left:8px;min-width:0;max-width:100vw}
 .left-rail{display:none}
 .left-panel,.right-panel{display:none;position:fixed;z-index:46;top:0;bottom:0;width:min(340px,calc(100vw - 28px));max-width:none;box-shadow:0 20px 50px rgba(0,0,0,.58);height:100dvh;border:1px solid var(--line)}
 .left-panel{left:0}.right-panel{right:0}
 .app-shell.mobile-explorer-open .left-panel,.app-shell.mobile-inspector-open .right-panel{display:block}
 .workspace{grid-column:1;grid-row:3;min-width:0;width:100%;max-width:100vw;overflow:hidden;grid-template-rows:30px 42px minmax(0,1fr) var(--console-h)}
 .workspace-toolbar{min-width:0;overflow-x:auto;scrollbar-width:thin;white-space:nowrap}
 .workspace-content,.bottom-console{min-width:0}
 .command-palette{left:5vw;right:5vw;width:90vw;max-width:90vw;transform:none}
 .health-ribbon{min-width:0;overflow-x:auto}
 .modal{max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}
}
@media(max-width:650px){
 .topbar{padding:5px 7px;gap:4px 7px}
 .top-actions{flex:1 1 100%;justify-content:flex-start;order:2;gap:4px}
 .top-actions>.btn,.top-actions>.icon-btn{height:32px;font-size:10px}
 .top-actions #validateProjectBtn{display:none}
 .project-strip{order:3;flex-wrap:nowrap}
 .project-strip>.badge.service-status{display:none}
 .project-strip .project-name-wrap{max-width:190px}
 .project-strip #undoBtn,.project-strip #redoBtn{display:none}
 .workspace-toolbar{gap:4px;padding:4px;}
 .toolbar-status{display:none}
 .console-tabs{overflow-x:auto;white-space:nowrap}
 .console-tab{padding-inline:7px}
 .brand-mark{width:27px;height:27px}
 .modal-header{padding:8px 10px}
 .team-modal-body,.settings-layout{min-width:0}
 .map-site-panel{max-width:calc(100vw - 12px);min-width:0}
}

.mobile-panel-close{display:none}
@media(max-width:1100px){
 .mobile-panel-close{display:inline-grid;place-items:center;flex:0 0 34px;width:34px;height:34px;margin:5px}
 .right-tabs{height:auto;min-height:43px;align-items:center}
 .right-panel-body{height:calc(100% - 43px)}
}
/* Guest room controls: wrap instead of overlapping the next panel on phones. */
.team-modal-body .toolbar-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:9px 0;min-width:0}
.team-modal-body .toolbar-row input{min-width:0;flex:1 1 120px;height:30px;background:#0d1520;color:var(--text);border:1px solid var(--line);border-radius:5px;padding:0 8px}
.team-modal-body>.settings-group{min-width:0}
@media(max-width:760px){
 .team-modal-body{display:block;overflow-y:auto;overflow-x:hidden;padding:9px}
 .team-modal-body .settings-row{grid-template-columns:minmax(0,1fr);gap:5px}
 .team-modal-body .toolbar-row input{flex:1 1 100%}
 .team-modal-body .toolbar-row>.btn{flex:0 1 auto}
}
