:root{
  --paper:#f4f1ea;
  --surface:#ffffff;
  --surface-2:#e9efed;
  --ink:#17242a;
  --ink-soft:#536267;
  --line:#cbd6d2;
  --brand:#176b67;
  --brand-2:#dcebe8;
  --theme-head:rgba(244,241,234,.96);
  --theme-hero1:#f5f2eb;
  --theme-hero2:#e8efed;
  --theme-alt:#edf1ef;
  --theme-deep:#203238;
  --theme-nav:#ffffff;
  --theme-card1:#ffffff;
  --theme-card2:#f5f7f5;
  --theme-canvas:#f5f7f5;
  --shadow:0 18px 55px rgba(21,33,43,.10);

  --active:#176b53;
  --accent:#925321;
  --future:#6f4d1d;
  --historical:#536267;
  --danger:#963c35;
  --purple:#7455c7;
  --blue:#2b6dc5;
  --grid:#dbe4e1;
  --hover:#edf4f1;
  --serif:Georgia,'Times New Roman',serif;
  --sans:ui-sans-serif,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}


html[data-theme="light"]{
  color-scheme:light;
  --paper:#f4f1ea;
  --surface:#ffffff;
  --surface-2:#e9efed;
  --ink:#17242a;
  --ink-soft:#536267;
  --line:#cbd6d2;
  --brand:#176b67;
  --brand-2:#dcebe8;
  --theme-head:rgba(244,241,234,.96);
  --theme-hero1:#f5f2eb;
  --theme-hero2:#e8efed;
  --theme-alt:#edf1ef;
  --theme-deep:#203238;
  --theme-nav:#ffffff;
  --theme-card1:#ffffff;
  --theme-card2:#f5f7f5;
  --theme-canvas:#f5f7f5;
  --shadow:0 18px 55px rgba(21,33,43,.10);
}

html[data-theme="medium"]{
  color-scheme:dark;
  --paper:#182328;
  --surface:#223138;
  --surface-2:#2a3d44;
  --ink:#f2f6f4;
  --ink-soft:#bdc9c8;
  --line:#41575d;
  --brand:#79d9cc;
  --brand-2:#18353b;
  --theme-head:rgba(24,35,40,.96);
  --theme-hero1:#172329;
  --theme-hero2:#23343a;
  --theme-alt:#1d2b31;
  --theme-deep:#121c20;
  --theme-nav:#223138;
  --theme-card1:#24353c;
  --theme-card2:#1d2c32;
  --theme-canvas:#172329;
  --shadow:0 20px 60px rgba(0,0,0,.22);
  --active:#72d5aa;
  --accent:#d8a55f;
  --future:#d0ad72;
  --historical:#91a0a5;
  --danger:#e38077;
  --grid:#334a51;
  --hover:#2b4047;
}

html[data-theme="dark"]{
  color-scheme:dark;
  --paper:#071014;
  --surface:#0d181d;
  --surface-2:#132228;
  --ink:#edf4f3;
  --ink-soft:#9eafaf;
  --line:#263940;
  --brand:#64d2c2;
  --brand-2:#0b2026;
  --theme-head:rgba(7,16,20,.94);
  --theme-hero1:#071014;
  --theme-hero2:#0b181d;
  --theme-alt:#091419;
  --theme-deep:#040a0d;
  --theme-nav:#0a151a;
  --theme-card1:rgba(17,31,37,.96);
  --theme-card2:rgba(11,23,28,.96);
  --theme-canvas:#071014;
  --shadow:0 24px 70px rgba(0,0,0,.28);
  --active:#72d5aa;
  --accent:#d8a55f;
  --future:#d0ad72;
  --historical:#91a0a5;
  --danger:#e38077;
  --grid:#20343b;
  --hover:#12282e;
}

*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--paper);color:var(--ink);font-family:var(--serif)}
body{overflow:hidden}
button,input,select{font:inherit}
button{cursor:pointer}
button:focus-visible,input:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.hidden{display:none!important}

.gaix-header{
  height:48px;
  background:#0b1b28;
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 16px;
  position:relative;
  z-index:100;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.brand-lockup{display:flex;align-items:center;gap:10px;font-family:var(--sans);font-size:14px;white-space:nowrap}
.brand-mark{display:grid;place-items:center;width:27px;height:27px;border-radius:8px;background:linear-gradient(135deg,#1b75a9,#48a7b1);font-weight:800}
.slash{opacity:.45}
.header-tools{display:flex;align-items:center;gap:14px;font-family:var(--sans)}
.boundary-pill{font-size:10px;letter-spacing:.06em;border:1px solid #345266;border-radius:999px;padding:5px 8px;color:#cce1eb}
.theme-utility{display:flex;align-items:center;gap:7px}.theme-utility-label{font-size:10px;color:#d6e2e7}
.theme-bar{display:flex;gap:4px}
.theme-bar button{width:24px;height:24px;border-radius:999px;border:1px solid #48616e;background:transparent;padding:3px;display:grid;place-items:center}
.theme-bar button i{display:block;width:12px;height:12px;border-radius:50%;border:1px solid rgba(255,255,255,.45)}
.theme-bar button[data-theme-choice="light"] i{background:#f4f1ea}
.theme-bar button[data-theme-choice="medium"] i{background:#223138}
.theme-bar button[data-theme-choice="dark"] i{background:#071014}
.theme-bar button.active{box-shadow:0 0 0 2px #79d9cc;border-color:#79d9cc}

.command-bar{
  height:68px;
  background:var(--surface);
  border-bottom:1px solid var(--line);
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:9px 14px;
  position:relative;
  z-index:90;
}
.workflow-name{display:flex;align-items:center;gap:10px;min-width:0}.workflow-name h1{font-size:17px;margin:2px 0;white-space:nowrap}
.overline{font-family:var(--sans);font-size:9px;letter-spacing:.11em;font-weight:800;color:var(--brand)}
.saved{font-family:var(--sans);color:var(--ink-soft);font-size:10px;white-space:nowrap}
.command-actions{display:flex;align-items:center;gap:7px;font-family:var(--sans);white-space:nowrap}
.icon-btn,.tool,.zoom-group button,.secondary,.primary,.bom-filters button,.mini-btn,.minimap-controls button{
  border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:8px;padding:7px 10px
}
.icon-btn{padding:6px 9px}.primary{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:700}.secondary{font-weight:650}
.secondary:hover,.icon-btn:hover,.tool:hover,.zoom-group button:hover,.mini-btn:hover,.minimap-controls button:hover{background:var(--surface-2)}
.zoom-group{display:flex;align-items:center;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--surface)}
.zoom-group button{border:0;border-right:1px solid var(--line);border-radius:0}.zoom-group button:last-child{border-right:0}
.zoom-group span{font-family:var(--sans);font-size:10px;min-width:50px;text-align:center}

.state-chip,.state-pill{font-family:var(--sans);font-size:8px;font-weight:800;letter-spacing:.03em;border:1px solid currentColor;border-radius:999px;padding:4px 6px;white-space:nowrap}
.state-chip.declared,.state-pill.declared{color:var(--active);background:color-mix(in srgb,var(--active) 10%,transparent)}
.state-chip.candidate,.state-pill.candidate{color:var(--accent);background:color-mix(in srgb,var(--accent) 11%,transparent)}
.state-chip.unresolved,.state-pill.unresolved{color:var(--danger);background:color-mix(in srgb,var(--danger) 11%,transparent)}
.state-chip.unused,.state-pill.unused{color:var(--historical);background:color-mix(in srgb,var(--historical) 10%,transparent)}

.status-ribbon{
  min-height:32px;display:flex;justify-content:space-between;align-items:center;padding:6px 14px;
  background:color-mix(in srgb,var(--accent) 8%,var(--surface));border-bottom:1px solid var(--line);font-family:var(--sans);font-size:10px
}
.aggregate{font-weight:800;padding:5px 8px;border-radius:7px}.aggregate.unresolved{color:var(--danger);background:color-mix(in srgb,var(--danger) 11%,var(--surface))}.aggregate.candidate{color:var(--accent);background:color-mix(in srgb,var(--accent) 11%,var(--surface))}.aggregate.declared{color:var(--active);background:color-mix(in srgb,var(--active) 11%,var(--surface))}

.workbench{
  display:grid;
  grid-template-columns:278px minmax(620px,1fr) 304px;
  gap:8px;
  height:calc(100vh - 318px);
  min-height:520px;
  padding:8px;
}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 5px 18px rgba(21,33,43,.055)}
.panel-title{display:flex;justify-content:space-between;align-items:flex-start;padding:11px 11px 7px}.panel-title h2{font-size:15px;margin:2px 0}
.count-pill{font-family:var(--sans);font-size:9px;color:var(--ink-soft);border:1px solid var(--line);border-radius:999px;padding:4px 7px}

.ontology{min-height:0;display:flex;flex-direction:column;overflow:hidden}.search-row{display:flex;gap:5px;padding:0 9px 7px}
.search-row input,.bom-search input{width:100%;border:1px solid var(--line);background:var(--theme-card2);color:var(--ink);border-radius:8px;padding:8px;font-family:var(--sans);font-size:10px}
.ontology-tree{overflow:auto;padding:0 7px 8px;min-height:0;flex:1;scrollbar-gutter:stable}
.ont-group{border-top:1px solid color-mix(in srgb,var(--line) 75%,transparent)}.ont-head{display:flex;align-items:center;gap:7px;padding:7px 5px;font-family:var(--sans);font-size:10px;font-weight:750;cursor:pointer}.ont-head .chev{width:10px;color:var(--ink-soft)}.ont-head .glyph{width:20px;text-align:center;color:var(--brand)}.ont-head .n{margin-left:auto;color:var(--ink-soft);font-size:8px;border-radius:999px;background:var(--surface-2);padding:2px 5px}.ont-items{display:none;padding-left:17px}.ont-group.open .ont-items{display:block}
.ont-item{display:flex;gap:7px;align-items:center;padding:6px 7px;border-radius:7px;font-family:var(--sans);font-size:10px;cursor:grab;border:1px solid transparent;position:relative}.ont-item:hover{background:var(--hover);border-color:var(--line)}.ont-item:active{cursor:grabbing}.ont-item .ont-dot{color:var(--brand);width:14px;text-align:center}.ont-item .ont-state{margin-left:auto;color:var(--ink-soft);font-size:8px}
.ontology-preview{border-top:1px solid var(--line);padding:9px 10px;font-family:var(--sans);font-size:9px;line-height:1.4;color:var(--ink-soft);min-height:56px}.ontology-preview strong{display:block;color:var(--ink);margin-bottom:2px;font-size:10px}

.canvas-panel{position:relative;overflow:hidden;min-height:0;background:var(--surface)}
.canvas-toolbar{height:42px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 8px;font-family:var(--sans);background:var(--theme-nav)}
.toolset{display:flex;gap:4px}.tool{padding:6px 9px;display:flex;align-items:center;gap:5px}.tool.active{background:color-mix(in srgb,var(--brand) 13%,var(--surface));border-color:var(--brand);color:var(--brand)}
/* COMPOSER MAIN CANVAS AUTHORING correction: visible text labels next to
   each tool icon (previously icon-only) so Select/Move, Pan, and Connect
   are named, not just symbolized. */
.tool-icon{font-size:13px;line-height:1}
.tool-label{font:800 8px var(--sans);letter-spacing:.03em;white-space:nowrap}
@media (max-width:1180px){.tool-label{display:none}}
.canvas-help{font-size:10px;display:flex;gap:8px;align-items:center}.canvas-help span,.canvas-scale{color:var(--ink-soft);font-size:9px}
.viewport{position:absolute;left:0;right:0;top:42px;bottom:24px;overflow:auto;background:var(--theme-canvas);outline:none;scrollbar-gutter:stable;overscroll-behavior:contain}
.viewport.panning{cursor:grabbing}.viewport.connecting{cursor:crosshair}
.world{position:relative;width:2000px;height:1300px;transform-origin:0 0;background-image:radial-gradient(var(--grid) 1px,transparent 1px);background-size:18px 18px}
.edge-layer{position:absolute;inset:0;overflow:visible;z-index:1}.edge-group{cursor:pointer}.edge-line{fill:none;stroke:color-mix(in srgb,var(--ink-soft) 75%,transparent);stroke-width:2}.edge-hit{fill:none;stroke:transparent;stroke-width:18}.edge-group.selected .edge-line{stroke:var(--brand);stroke-width:3}.edge-group.unresolved .edge-line{stroke:var(--danger);stroke-dasharray:7 5}.edge-group.declared .edge-line{stroke:var(--active)}.edge-group.candidate .edge-line{stroke:var(--accent);stroke-dasharray:4 4}.edge-label rect{fill:var(--surface);stroke:var(--line)}.edge-label text{font-family:var(--sans);font-size:9px;fill:var(--ink);font-weight:700}.edge-group.selected .edge-label rect{stroke:var(--brand);stroke-width:2}
.node{position:absolute;width:230px;min-height:76px;background:var(--theme-card1);border:2px solid var(--line);border-radius:11px;box-shadow:0 7px 17px rgba(20,40,55,.11);padding:10px 11px 9px 48px;z-index:2;user-select:none;cursor:grab}.node:hover{box-shadow:0 10px 24px rgba(20,40,55,.16)}.node.selected{box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 18%,transparent),0 10px 22px rgba(20,40,55,.13)}.node.connect-source{box-shadow:0 0 0 4px color-mix(in srgb,var(--purple) 24%,transparent),0 10px 22px rgba(20,40,55,.13)}.node.declared{border-color:color-mix(in srgb,var(--active) 65%,var(--line))}.node.candidate{border-color:color-mix(in srgb,var(--accent) 70%,var(--line))}.node.unresolved{border-color:color-mix(in srgb,var(--danger) 78%,var(--line))}.node .node-icon{position:absolute;left:12px;top:16px;font-size:23px}.node .kind{font-family:var(--sans);font-size:8px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.node.declared .kind{color:var(--active)}.node.candidate .kind{color:var(--accent)}.node.unresolved .kind{color:var(--danger)}.node .title{font-family:var(--sans);font-size:11px;font-weight:800;margin:4px 0}.node .sub{font-family:var(--sans);font-size:9px;color:var(--ink-soft);line-height:1.3}.node-state{position:absolute;right:8px;bottom:-10px}.node .attachment-count{position:absolute;right:8px;top:7px;font-family:var(--sans);font-size:8px;color:var(--ink-soft)}.node.drop-target{box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 25%,transparent)}
.drop-zone{position:absolute;left:860px;top:1115px;border:2px dashed color-mix(in srgb,var(--brand) 70%,var(--line));color:var(--brand);background:color-mix(in srgb,var(--brand) 5%,var(--surface));border-radius:10px;padding:12px 28px;text-align:center;font-family:var(--sans);font-size:12px;font-weight:700;z-index:2}.drop-zone span{font-size:9px;font-weight:400}
.canvas-footnote{position:absolute;left:10px;bottom:4px;font:8px var(--sans);color:var(--ink-soft);z-index:15;background:color-mix(in srgb,var(--surface) 85%,transparent);padding:2px 5px;border-radius:5px}

.minimap-wrap{position:absolute;right:16px;top:56px;width:166px;background:color-mix(in srgb,var(--surface) 96%,transparent);border:1px solid var(--line);border-radius:10px;z-index:10;box-shadow:var(--shadow);overflow:hidden}.minimap-head{height:27px;display:flex;justify-content:space-between;align-items:center;padding:0 7px;border-bottom:1px solid var(--line);font:9px var(--sans);color:var(--ink-soft)}.mini-btn{padding:3px 6px;font-size:8px}.minimap{height:104px;position:relative;background:var(--theme-canvas);background-image:radial-gradient(var(--grid) .8px,transparent .8px);background-size:10px 10px;overflow:hidden;cursor:crosshair}.mini-node{position:absolute;width:12px;height:7px;border-radius:2px;background:var(--historical)}.mini-node.declared{background:var(--active)}.mini-node.candidate{background:var(--accent)}.mini-node.unresolved{background:var(--danger)}.mini-viewport{position:absolute;border:2px solid var(--brand);background:color-mix(in srgb,var(--brand) 8%,transparent);pointer-events:none}.minimap-controls{display:grid;grid-template-columns:1fr 1fr 1fr;border-top:1px solid var(--line)}.minimap-controls button{border:0;border-right:1px solid var(--line);border-radius:0;padding:5px;font:9px var(--sans)}.minimap-controls button:last-child{border-right:0}

.inspector{min-height:0;overflow:auto;scrollbar-gutter:stable}.inspect-card{padding:0 11px 12px;font-family:var(--sans);font-size:10px;line-height:1.45}.inspect-status{margin-bottom:10px}.inspect-card h3{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);margin:13px 0 5px}.inspect-card p{margin:5px 0 8px}.inspect-card dl{display:grid;grid-template-columns:88px 1fr;gap:5px 8px;margin:0}.inspect-card dt{color:var(--ink-soft)}.inspect-card dd{margin:0}.inspect-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.inspect-actions button{font:9px var(--sans);border:1px solid var(--line);background:var(--theme-card2);color:var(--ink);border-radius:6px;padding:6px 8px}.inspect-actions button.primary-action{background:var(--brand);border-color:var(--brand);color:#fff}.inspect-actions button.danger-action{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 55%,var(--line))}.attach-list{display:flex;flex-direction:column;gap:5px}.attach{border:1px solid var(--line);border-radius:6px;padding:6px;background:var(--theme-card2)}.edit-field{display:grid;gap:4px;margin-top:8px}.edit-field label{font-size:8px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft)}.edit-field input,.edit-field select{border:1px solid var(--line);background:var(--theme-card2);color:var(--ink);border-radius:6px;padding:7px;font:10px var(--sans)}
.legend-card{border-top:1px solid var(--line);margin-top:10px;padding:10px 11px;font:9px var(--sans)}.legend-card h3{font-size:10px;margin:0 0 7px}.legend-card>div{display:grid;grid-template-columns:12px 1fr;gap:0 6px;margin:6px 0}.legend-card>div span:last-child{grid-column:2;color:var(--ink-soft)}.legend-card small{display:block;color:var(--ink-soft);margin-top:8px}.dot{width:9px;height:9px;border-radius:50%;display:inline-block;margin-top:2px}.dot.declared{background:var(--active)}.dot.candidate{background:var(--accent)}.dot.unresolved{background:var(--danger)}

.bom{margin:0 8px 8px;height:160px;display:flex;flex-direction:column;overflow:hidden}.bom-toolbar{display:grid;grid-template-columns:285px minmax(360px,1fr) 235px;gap:10px;align-items:center;padding:7px 9px;border-bottom:1px solid var(--line)}.bom-toolbar h2{font-size:13px;margin:2px 0}.bom-filters{display:flex;gap:4px;min-width:0}.bom-filters button{font:9px var(--sans);padding:5px 7px;white-space:nowrap}.bom-filters button span{display:inline-block;margin-left:3px;opacity:.7}.bom-filters button.active{background:var(--brand);color:#fff;border-color:var(--brand)}.bom-search{display:flex;gap:5px}.bom-items{display:flex;gap:7px;overflow:auto;padding:7px 9px;min-height:0;scrollbar-gutter:stable}.bom-card{min-width:164px;max-width:184px;border:1px solid var(--line);border-radius:9px;background:var(--theme-card2);padding:8px;cursor:pointer;position:relative;font-family:var(--sans)}.bom-card:hover,.bom-card.selected{border-color:var(--brand);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 12%,transparent)}.bom-card .bom-title{font-size:10px;font-weight:800}.bom-card .bom-sub{font-size:8px;color:var(--ink-soft);margin:3px 0 6px;line-height:1.3;min-height:20px}.bom-card .bom-state{font-size:7px}.bom-card .bom-menu{position:absolute;right:6px;top:5px;color:var(--ink-soft);font-weight:700}.bom-help{font:8px var(--sans);color:var(--ink-soft);padding:0 9px 5px}

.toast{position:fixed;right:18px;bottom:18px;z-index:200;background:#0b1b28;color:#fff;border-radius:8px;padding:10px 13px;font:10px var(--sans);box-shadow:var(--shadow);max-width:420px}.modal{position:fixed;inset:0;z-index:300;background:rgba(5,14,20,.58);display:grid;place-items:center}.modal-card{position:relative;width:min(650px,92vw);max-height:80vh;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:20px;box-shadow:0 35px 90px rgba(0,0,0,.35)}.modal-card h2{margin:5px 0 12px}.modal-close{position:absolute;right:12px;top:12px}.validation-row{display:grid;grid-template-columns:120px 1fr;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);font:10px var(--sans)}.validation-row strong{font-size:10px}.modal-actions{text-align:right;margin-top:14px}

@media(max-width:1200px){.workbench{grid-template-columns:240px minmax(560px,1fr) 270px}.bom-toolbar{grid-template-columns:240px 1fr 210px}.boundary-pill{display:none}}
@media(max-width:980px){body{overflow:auto}.command-bar{height:auto;gap:8px;flex-wrap:wrap}.status-ribbon{flex-wrap:wrap;gap:5px}.workbench{height:auto;grid-template-columns:1fr;padding:8px}.ontology{max-height:350px}.canvas-panel{height:650px}.inspector{max-height:500px}.bom{height:auto;max-height:none}.bom-toolbar{grid-template-columns:1fr}.bom-items{flex-wrap:wrap;overflow:visible}.gaix-header{height:auto;min-height:48px;gap:8px;flex-wrap:wrap;padding:8px 12px}.header-tools{margin-left:auto}}


/* ==========================================================================
   CANDIDATE 004 — ONTOLOGY ASSIST + INTAKE DIAGNOSTIC + SCENARIO LAB
   ========================================================================== */

button.emphasis{border-color:var(--brand);color:var(--brand);background:color-mix(in srgb,var(--brand) 7%,var(--surface))}
.assist-row{display:grid;grid-template-columns:auto 95px 1fr;gap:7px;align-items:center;padding:0 10px 9px;font:8px var(--sans);color:var(--ink-soft);border-bottom:1px solid var(--line)}
.assist-row label{font-weight:800;color:var(--ink);text-transform:uppercase;letter-spacing:.04em}
.assist-row select{padding:5px 6px;border:1px solid var(--line);border-radius:6px;background:var(--theme-card2);color:var(--ink);font:9px var(--sans)}
.ontology-tooltip{position:fixed;z-index:500;pointer-events:none;max-width:330px;background:var(--theme-deep);color:#f3f7f6;border:1px solid color-mix(in srgb,var(--brand) 55%,#fff);border-radius:8px;padding:9px 10px;box-shadow:0 14px 36px rgba(0,0,0,.28);font:9px/1.45 var(--sans)}
.ontology-tooltip strong{display:block;color:#a9e6dc;margin-bottom:3px;font-size:10px}
.ontology-pinned-note{border:1px solid var(--brand);background:color-mix(in srgb,var(--brand) 7%,var(--surface));border-radius:8px;padding:9px}
.node.sim-active{box-shadow:0 0 0 6px color-mix(in srgb,var(--brand) 28%,transparent),0 12px 30px rgba(20,40,55,.18);transform:translateZ(0)}
.node.sim-blocked{box-shadow:0 0 0 6px color-mix(in srgb,var(--danger) 30%,transparent),0 12px 30px rgba(20,40,55,.18)}
.edge-group.sim-active .edge-line{stroke-width:5;filter:drop-shadow(0 0 3px color-mix(in srgb,var(--brand) 55%,transparent))}
.edge-group.sim-blocked .edge-line{stroke:var(--danger);stroke-width:5;filter:drop-shadow(0 0 3px color-mix(in srgb,var(--danger) 55%,transparent))}

.intake-modal{position:fixed;inset:0;z-index:420;background:rgba(5,14,20,.72);padding:3vh 3vw;overflow:auto}
.intake-shell{max-width:1500px;margin:auto;background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:15px;box-shadow:0 36px 100px rgba(0,0,0,.38);overflow:hidden}
.intake-head{display:flex;justify-content:space-between;gap:25px;align-items:flex-start;padding:18px 20px 14px;background:linear-gradient(135deg,var(--theme-hero1),var(--theme-hero2));border-bottom:1px solid var(--line)}
.intake-head h2{margin:3px 0 5px;font-size:23px}.intake-head p{margin:0;color:var(--ink-soft);max-width:850px;font:10px/1.5 var(--sans)}
.intake-source{padding:14px 18px;border-bottom:1px solid var(--line);background:var(--surface)}
.intake-source-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;font:10px var(--sans)}
.intake-source-head>div{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.intake-source input[type=file]{max-width:250px;font:9px var(--sans);color:var(--ink-soft)}
#intakeText{width:100%;min-height:130px;resize:vertical;border:1px solid var(--line);border-radius:8px;background:var(--theme-card2);color:var(--ink);padding:11px;font:10px/1.5 var(--sans)}
.intake-file-note{margin-top:6px;color:var(--ink-soft);font:8px var(--sans)}
.intake-stages{display:grid;grid-template-columns:repeat(4,1fr);gap:0;min-height:330px}
.intake-stages section{padding:15px;border-right:1px solid var(--line);background:var(--surface)}
.intake-stages section:nth-child(even){background:var(--theme-card2)}
.intake-stages section:last-child{border-right:0}
.intake-stages h3{font:700 13px var(--serif);margin:3px 0 10px}.stage-kicker{font:800 8px var(--sans);letter-spacing:.07em;color:var(--brand)}
.diagnostic-list{display:flex;flex-direction:column;gap:7px;font:9px/1.45 var(--sans)}
.diagnostic-item{border:1px solid var(--line);border-radius:7px;background:var(--theme-card1);padding:8px}
.diagnostic-item strong{display:block;font-size:9px;margin-bottom:2px}.diagnostic-item span{color:var(--ink-soft)}
.diagnostic-item.good{border-left:4px solid var(--active)}.diagnostic-item.warn{border-left:4px solid var(--accent)}.diagnostic-item.bad{border-left:4px solid var(--danger)}
.gap-status{display:inline-block;margin-top:6px;padding:3px 6px;border:1px solid var(--line);border-radius:999px;font:800 7px var(--sans);letter-spacing:.05em;color:var(--ink-soft);background:var(--surface-2)}.gap-status.clarified{color:var(--active);border-color:color-mix(in srgb,var(--active) 55%,var(--line))}.gap-status.partial{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 55%,var(--line))}.gap-status.still-open,.gap-status.open{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 55%,var(--line))}
.empty-state{color:var(--ink-soft);font-style:italic}
#openImportedBtn{margin-top:12px}
.intake-boundary{padding:10px 18px;border-top:1px solid var(--line);background:color-mix(in srgb,var(--accent) 7%,var(--surface));font:9px var(--sans);color:var(--ink-soft)}

.sim-drawer{position:fixed;z-index:410;right:0;top:0;bottom:0;width:min(420px,94vw);background:var(--paper);color:var(--ink);border-left:1px solid var(--line);box-shadow:-28px 0 70px rgba(0,0,0,.22);overflow:auto;padding-bottom:18px}
.sim-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;padding:16px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,var(--theme-hero1),var(--theme-hero2))}
.sim-head h2{font-size:18px;margin:3px 0}.sim-boundary{margin:12px 14px 8px;border:1px solid color-mix(in srgb,var(--accent) 55%,var(--line));background:color-mix(in srgb,var(--accent) 8%,var(--surface));border-radius:8px;padding:9px;font:9px/1.4 var(--sans)}
.sim-controls-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px 14px}
.sim-controls-grid label{display:grid;gap:4px;font:8px var(--sans);color:var(--ink-soft)}
.sim-controls-grid label:first-child{grid-column:1/-1}
.sim-controls-grid input,.sim-controls-grid select{border:1px solid var(--line);border-radius:6px;background:var(--theme-card2);color:var(--ink);padding:7px;font:10px var(--sans)}
.hypothesis-check{display:flex;align-items:flex-start;gap:7px;margin:4px 14px 10px;padding:9px;border:1px dashed var(--purple);border-radius:7px;background:color-mix(in srgb,var(--purple) 7%,var(--surface));font:9px/1.4 var(--sans)}
.sim-actions{display:flex;flex-wrap:wrap;gap:6px;padding:5px 14px 10px;border-bottom:1px solid var(--line)}
.sim-summary{margin:11px 14px;padding:10px;border-radius:8px;background:var(--theme-card2);border:1px solid var(--line);font:9px/1.45 var(--sans)}
.sim-summary.success{border-left:5px solid var(--active)}.sim-summary.blocked{border-left:5px solid var(--danger)}.sim-summary.hypothetical{border-left:5px solid var(--purple)}
.sim-trace{display:flex;flex-direction:column;gap:6px;padding:0 14px 12px}
.trace-step{display:grid;grid-template-columns:28px 1fr;gap:7px;border:1px solid var(--line);border-radius:7px;background:var(--surface);padding:7px;font:9px/1.4 var(--sans);opacity:.58}
.trace-step.reached{opacity:1}.trace-step.current{border-color:var(--brand);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 10%,transparent)}
.trace-step.blocked{border-left:5px solid var(--danger)}.trace-step.hypothetical{border-left:5px solid var(--purple)}
.trace-num{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);font-weight:800}
.trace-step strong{display:block}.trace-step span{color:var(--ink-soft)}
.sim-invariants{margin:0 14px;padding:9px;border-top:1px solid var(--line);color:var(--ink-soft);font:8px/1.4 var(--sans)}

@media(max-width:1100px){
  .intake-stages{grid-template-columns:1fr 1fr}
  .intake-stages section{border-bottom:1px solid var(--line)}
}
@media(max-width:700px){
  .intake-modal{padding:0}
  .intake-shell{border-radius:0}
  .intake-stages{grid-template-columns:1fr}
  .intake-source-head{align-items:flex-start;flex-direction:column}
  .assist-row{grid-template-columns:1fr 90px}.assist-row span{grid-column:1/-1}
}


/* CANDIDATE 005 — QUESTION RESOLUTION / CLARIFICATION LAYER */
.clarification-legend{display:flex;gap:14px;flex-wrap:wrap;padding:8px 18px;border-bottom:1px solid var(--line);background:var(--theme-card2);font:8px var(--sans);color:var(--ink-soft)}
.question-card{position:relative;overflow:visible}
.question-card .question-meta{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-top:5px}
.question-card .q-status{font:800 7px var(--sans);letter-spacing:.05em;text-transform:uppercase;color:var(--accent)}
.question-card.resolved .q-status{color:var(--active)}
.question-card.pending .q-status{color:var(--purple)}
.question-card .q-answer-strip{position:absolute;left:8px;right:8px;bottom:6px;transform:translateY(calc(100% + 4px));z-index:80;display:none;gap:5px;padding:6px;border:1px solid var(--line);border-radius:7px;background:var(--paper);box-shadow:0 12px 28px rgba(0,0,0,.18)}
.question-card:hover .q-answer-strip,.question-card:focus-within .q-answer-strip{display:flex}
.q-answer-strip button{flex:1;min-height:28px;padding:5px 6px;border-radius:6px;border:1px solid var(--line);background:var(--theme-card2);color:var(--ink);font:800 8px var(--sans)}
.q-answer-strip button:hover{border-color:var(--brand);color:var(--brand)}
.q-explain-box{display:none;margin-top:7px;gap:6px}
.question-card.explaining .q-explain-box{display:grid}
.q-explain-box textarea{min-height:72px;resize:vertical;border:1px solid var(--line);border-radius:6px;background:var(--theme-card2);color:var(--ink);padding:7px;font:9px/1.4 var(--sans)}
.interpretation-box{margin-top:7px;border:1px solid var(--purple);border-radius:7px;background:color-mix(in srgb,var(--purple) 7%,var(--surface));padding:7px}
.interpretation-box strong{display:block;color:var(--purple);margin-bottom:3px}
.interpretation-actions{display:flex;gap:5px;margin-top:6px}
.interpretation-actions button{min-height:26px;padding:4px 7px;font:800 7px var(--sans)}
.clarification-impact{margin-top:5px;padding-top:5px;border-top:1px dashed var(--line);color:var(--ink-soft)}
.question-card.resolved{border-left:4px solid var(--active)}
.question-card.pending{border-left:4px solid var(--purple)}
.question-card.explaining{border-left:4px solid var(--accent)}
/* CLARIFICATION Q&A DEFECT correction: the collapsed compact-summary state
   for a confirmed question -- a single row, not the full card, so it no
   longer pushes the next unresolved question down. */
.question-card.collapsed{padding:0}
.question-card.collapsed .resolved-summary-row{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;border:0;background:transparent;color:inherit;text-align:left;padding:9px 10px;cursor:pointer;font:inherit}
.question-card.collapsed .resolved-summary-row strong{font:800 8px var(--sans);letter-spacing:.04em}
.question-card.collapsed .resolved-summary-row .q-status{font:800 7px var(--sans);letter-spacing:.05em;text-transform:uppercase;color:var(--active)}
.question-card.collapsed .resolved-summary-row .resolved-summary-toggle{margin-left:auto;font:800 7px var(--sans);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft)}
.question-card.collapsed .resolved-summary-row:hover .resolved-summary-toggle{color:var(--accent)}


/* ==========================================================================
   CANDIDATE 006 — DESKTOP VIEWPORT / BOTTOM BOM VISIBILITY CORRECTION
   Root cause in 005:
   - body overflow was hidden
   - workbench used calc(100vh - 318px)
   - workbench also had min-height:520px
   - BOM was a separate 160px block below that
   At common browser viewport heights, the minimum workbench height could
   force the BOM below the visible viewport with no page scroll available.
   ========================================================================== */

@media (min-width:981px){
  html{height:100%}
  body{
    height:100vh;
    height:100dvh;
    min-height:0;
    overflow:hidden;
    display:grid;
    grid-template-rows:auto auto auto minmax(0,1fr) 168px;
  }

  .gaix-header,
  .command-bar,
  .status-ribbon{
    min-width:0;
  }

  .workbench{
    height:auto;
    min-height:0;
    overflow:hidden;
  }

  .ontology,
  .canvas-panel,
  .inspector{
    min-height:0;
    height:100%;
  }

  .bom{
    height:auto;
    min-height:0;
    margin:0 8px 8px;
    overflow:hidden;
  }

  .bom-items{
    min-height:0;
    overflow:auto;
  }
}

/* Preserve the full bottom inventory even on shorter desktop browser windows. */
@media (min-width:981px) and (max-height:760px){
  body{
    grid-template-rows:auto auto auto minmax(0,1fr) 142px;
  }
  .bom-toolbar{padding-top:4px;padding-bottom:4px}
  .bom-items{padding-top:5px;padding-bottom:5px}
  .bom-help{display:none}
}

/* Existing narrow-layout behavior remains page-scroll based. */
@media (max-width:980px){
  html,body{
    height:auto;
    min-height:100%;
  }
  body{
    display:block;
    overflow:auto;
  }
  .workbench{
    height:auto;
    min-height:0;
    overflow:visible;
  }
  .bom{
    height:auto;
    min-height:0;
  }
}


/* ==========================================================================
   CANDIDATE 007 — ONTOLOGY EDGE RAIL / FLYOUT
   The Ontology Library no longer consumes a permanent workbench column.
   Hover the left edge rail to reveal it; click the rail/pin to keep it open.
   The flyout overlays the canvas instead of shrinking the canvas.
   ========================================================================== */

@media (min-width:981px){
  .workbench{
    position:relative;
    grid-template-columns:minmax(0,1fr) 304px;
  }

  .ontology{
    position:absolute;
    z-index:125;
    left:8px;
    top:8px;
    bottom:8px;
    width:min(316px,34vw);
    height:auto;
    transform:translateX(calc(-100% - 18px));
    opacity:.2;
    pointer-events:none;
    transition:transform .18s ease,opacity .14s ease;
    box-shadow:18px 0 44px rgba(10,28,37,.18);
  }

  .ontology.flyout-open{
    transform:translateX(0);
    opacity:1;
    pointer-events:auto;
  }

  .ontology-rail{
    position:absolute;
    z-index:130;
    left:0;
    top:50%;
    transform:translateY(-50%);
    width:30px;
    min-height:118px;
    padding:7px 4px;
    display:flex;
    flex-direction:column;
    justify-content:center;
    align-items:center;
    gap:8px;
    border:1px solid var(--line);
    border-left:0;
    border-radius:0 9px 9px 0;
    background:var(--theme-nav);
    color:var(--brand);
    box-shadow:7px 0 20px rgba(10,28,37,.10);
    cursor:pointer;
    font:800 8px var(--sans);
    letter-spacing:.08em;
  }

  .ontology-rail span{
    writing-mode:vertical-rl;
    transform:rotate(180deg);
  }

  .ontology-rail b{
    font-size:16px;
    line-height:1;
    transition:transform .16s ease;
  }

  .ontology-rail[aria-expanded="true"] b{
    transform:rotate(180deg);
  }

  .ontology-panel-actions{
    display:flex;
    align-items:center;
    gap:5px;
  }

  #ontologyPinBtn.pinned{
    border-color:var(--brand);
    background:color-mix(in srgb,var(--brand) 12%,var(--surface));
    color:var(--brand);
  }

  .canvas-panel{
    grid-column:1;
    min-width:0;
  }

  .inspector{
    grid-column:2;
    min-width:0;
  }
}

@media (min-width:981px) and (max-width:1200px){
  .workbench{
    grid-template-columns:minmax(0,1fr) 270px;
  }
}

/* On narrow/mobile layouts the ontology returns to normal document flow. */
@media (max-width:980px){
  .ontology-rail{display:none}
  .ontology{
    position:static;
    transform:none;
    opacity:1;
    pointer-events:auto;
    width:auto;
    height:auto;
    max-height:350px;
  }
  .ontology-panel-actions #ontologyPinBtn,
  .ontology-panel-actions #ontologyCloseBtn{
    display:none;
  }
}


/* ==========================================================================
   CANDIDATE 008 — BOTTOM CANDIDATE BOM EDGE RAIL / FLYOUT
   The BOM no longer reserves permanent vertical space on desktop.
   Hover the bottom rail to reveal it; click/pin to keep it open.
   The flyout overlays the lower canvas instead of shrinking the work area.
   ========================================================================== */

@media (min-width:981px){
  body{
    grid-template-rows:auto auto auto minmax(0,1fr);
  }

  .workbench{
    min-height:0;
  }

  .bom{
    position:fixed;
    z-index:124;
    left:8px;
    right:8px;
    bottom:0;
    height:min(210px,34vh);
    min-height:138px;
    margin:0;
    transform:translateY(calc(100% + 18px));
    opacity:.22;
    pointer-events:none;
    transition:transform .18s ease,opacity .14s ease;
    box-shadow:0 -18px 44px rgba(10,28,37,.18);
  }

  .bom.flyout-open{
    transform:translateY(0);
    opacity:1;
    pointer-events:auto;
  }

  /* If both auxiliary surfaces are open, keep them geometrically separate. */
  body.bom-flyout-active .ontology.flyout-open{
    bottom:calc(min(210px,34vh) + 8px);
  }

  .bom-rail{
    position:fixed;
    z-index:132;
    left:50%;
    bottom:0;
    transform:translateX(-50%);
    width:190px;
    height:29px;
    padding:4px 12px;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    border:1px solid var(--line);
    border-bottom:0;
    border-radius:9px 9px 0 0;
    background:var(--theme-nav);
    color:var(--brand);
    box-shadow:0 -7px 20px rgba(10,28,37,.10);
    cursor:pointer;
    font:800 8px var(--sans);
    letter-spacing:.07em;
  }

  .bom-rail b{
    font-size:15px;
    line-height:1;
    transition:transform .16s ease;
  }

  .bom-rail[aria-expanded="true"] b{
    transform:rotate(180deg);
  }

  .bom-titlebar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    min-width:0;
  }

  .bom-panel-actions{
    display:flex;
    align-items:center;
    gap:4px;
  }

  #bomPinBtn.pinned{
    border-color:var(--brand);
    background:color-mix(in srgb,var(--brand) 12%,var(--surface));
    color:var(--brand);
  }

  .bom-toolbar{
    grid-template-columns:minmax(250px,285px) minmax(330px,1fr) 235px;
  }

  .bom-items{
    flex:1 1 auto;
    min-height:0;
    overflow:auto;
  }
}

/* Short desktop windows still get a useful overlay without consuming the canvas. */
@media (min-width:981px) and (max-height:760px){
  body{
    grid-template-rows:auto auto auto minmax(0,1fr);
  }

  .bom{
    height:min(176px,31vh);
    min-height:126px;
  }

  body.bom-flyout-active .ontology.flyout-open{
    bottom:calc(min(176px,31vh) + 8px);
  }

  .bom-help{
    display:none;
  }
}

/* Narrow/mobile layouts keep the BOM in normal document flow. */
@media (max-width:980px){
  .bom-rail{
    display:none;
  }

  .bom{
    position:static;
    transform:none;
    opacity:1;
    pointer-events:auto;
    height:auto;
    min-height:0;
    margin:0 8px 8px;
    box-shadow:none;
  }

  .bom-panel-actions{
    display:none;
  }
}

/* ==========================================================================
   Candidate Revision Review — GENESIS-AIX-COMPOSER-REVISION-PUBLIC-REVIEW-
   INTEGRATION-AUTH-001. Additive only; reuses existing tokens/patterns
   (.intake-modal/.intake-shell/.intake-head/.stage-kicker/.intake-boundary).
   ========================================================================== */
.revision-shell{max-width:1400px}
.revision-body{display:grid;grid-template-columns:repeat(4,1fr);gap:0;min-height:340px}
.revision-col{padding:15px;border-right:1px solid var(--line);background:var(--surface);overflow:auto}
.revision-col:nth-child(even){background:var(--theme-card2)}
.revision-col:last-child{border-right:0}

.revision-kv{display:flex;justify-content:space-between;gap:10px;font:9px/1.5 var(--sans);padding:4px 0;border-bottom:1px dashed var(--line)}
.revision-kv span{color:var(--ink-soft)}
.revision-kv b{font-weight:700;text-align:right}

.revision-synthetic-badge{display:inline-block;margin-bottom:8px;padding:4px 8px;border-radius:6px;font:800 8px var(--sans);letter-spacing:.05em;background:color-mix(in srgb,var(--accent) 16%,var(--surface));color:var(--ink);border:1px solid var(--line)}

.revision-element-list{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.revision-element-row{border:1px solid var(--line);border-radius:8px;padding:7px 9px;background:var(--paper)}
.revision-element-label{display:flex;flex-direction:column;gap:2px;margin-bottom:6px;font:9px/1.4 var(--sans)}
.revision-element-label b{font:700 9px var(--sans)}
.revision-element-label span{color:var(--ink-soft)}
.revision-element-choices{display:flex;gap:5px}
.revision-element-choices button{flex:1;font:700 8px var(--sans);padding:5px 4px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink);cursor:pointer}
.revision-element-choices button.active{background:var(--brand);color:#fff;border-color:var(--brand)}
.revision-element-choices button[disabled]{opacity:.5;cursor:not-allowed}

.revision-view-toggle{display:flex;gap:6px;margin-bottom:8px}
.revision-view-toggle button{font:700 8px var(--sans);padding:5px 8px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink);cursor:pointer}
.revision-view-toggle button.active{background:var(--brand);color:#fff;border-color:var(--brand)}

.revision-diff{display:flex;flex-direction:column;gap:5px;font:9px/1.4 var(--sans)}
.revision-diff.empty-state{color:var(--ink-soft);font-style:italic}
.revision-diff-row{display:flex;justify-content:space-between;gap:8px;padding:5px 7px;border-radius:6px;border:1px solid var(--line);background:var(--paper)}
.revision-diff-row span{font-weight:800;letter-spacing:.03em;text-transform:uppercase;font-size:8px}
.diff-added span{color:#1a7f37}
.diff-removed span{color:#b3261e}
.diff-modified span{color:#9a6700}
.diff-unchanged span{color:var(--ink-soft)}
.diff-unresolved-deferred span{color:#6b4fbb}

.revision-guard-note{font:9px/1.5 var(--sans);color:var(--ink-soft);margin:6px 0 10px}
.revision-guard-buttons{display:flex;flex-direction:column;gap:6px}
.revision-guard-buttons button{font-size:9px;text-align:left}
.revision-guard-result{margin-top:10px;padding:8px;border-radius:8px;font:9px/1.5 var(--sans);min-height:14px}
.revision-guard-result.ok{background:color-mix(in srgb,#1a7f37 12%,var(--surface));border:1px solid #1a7f37}
.revision-guard-result.refused{background:color-mix(in srgb,#b3261e 12%,var(--surface));border:1px solid #b3261e}

.revision-actions{display:flex;justify-content:flex-end;gap:10px;padding:12px 18px;border-top:1px solid var(--line);background:var(--surface)}

.revision-confirm-actions{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px}

@media (max-width:980px){
  .revision-body{grid-template-columns:1fr 1fr}
}
@media (max-width:640px){
  .revision-body{grid-template-columns:1fr}
}
