/* Home-only integration layer. The existing navigation and evidence stay available. */
body:has(.console-home) { background:#0b0b0d; color:#eee9dd; }
body:has(.console-home) .admin-main { background:transparent; padding:14px; }
body:has(.console-home) .admin-main > .content { max-width:none; padding:0; z-index:auto; }
body:has(.console-home) > .admin-layout { z-index:auto; }
body:has(.console-home) .admin-main { z-index:auto; }
body:has(.console-home) .admin-dock { background:#171718; color:#f3eddf; }
html:has(.console-home),body:has(.console-home) .admin-main { scroll-padding-bottom:90px; }
body:has(.console-home) .admin-rail { background:#141415; color:#eee9dd; border-color:#45413a; }
body:has(.console-home) .admin-rail a { color:#ded7c9; min-height:44px; }
body:has(.console-home) .admin-topbar { background:#171718; color:#eee9dd; }
.console-home { --dim:#c5bdae; --dim2:#b6ae9f; padding:0 0 80px; max-width:1600px; margin:auto; position:relative; z-index:1; background:transparent!important; }
.console-home .mod { background:linear-gradient(110deg,#202022,#111113); border:1px solid #494641; box-shadow:inset 0 1px #ffffff12,0 3px 8px #0008; }
.console-home .mod::before,.console-home .mod::after { content:'⊕'; position:absolute; top:7px; color:#625f57; font-size:11px; }
.console-home .mod::before { left:7px; } .console-home .mod::after { right:7px; }
.console-home .rack { position:relative; z-index:auto; }
.console-home { z-index:auto; }
.console-home .unit--head,.console-home .traffic-header,.console-home .console-window { position:relative; z-index:4; }
.console-home .main-side,.console-home .mod-h,.console-home .mod-f,.console-home .ro,.console-home .needle-key,.console-home .lamp,.console-home .ring-c,.console-home .lh-l,.console-home .lh-v,.console-home .bank-scale { position:relative; z-index:4; }
.console-home .ring-c { position:absolute; }
.console-home .inst,.console-home .mod-h { overflow:hidden; }
.console-home .unit--head { position:relative; margin-bottom:12px; }
.console-home .unit--head .plate { color:#f3eddf; text-decoration:none; }
.console-home .console-window { font:12px/1.6 var(--mono); color:#d2cabc; overflow-wrap:anywhere; margin:12px 0; }
.console-home .traffic-dashboard-header { color:#eee9dd; gap:8px; }
.console-home .traffic-dashboard-header h1 { font-size:19px; }
.console-home .traffic-dashboard-header a,.console-home .portfolio-performance a { color:#f6c879; }
.console-home .traffic-dashboard-header select,.console-home button { min-height:44px; background:#222; color:#f3edde; border:1px solid #827565; padding:8px; }
.console-home a,.console-home summary,.console-home input,.console-home select,.console-home button { touch-action:manipulation; }
.console-home .key,.console-home .toggle-opt { min-width:44px; min-height:44px; }
.console-home .key:focus-visible,.console-home a:focus-visible,.console-home input:focus-visible,.console-home summary:focus-visible,.console-home select:focus-visible { outline:3px solid #ffd481; outline-offset:3px; }
.console-home .lh-l a { display:flex; align-items:center; min-height:44px; }
.console-home .lad-h--dom li { min-height:54px; }
.console-home .portfolio-performance { position:relative; z-index:5; margin-top:20px; padding:18px; background:#18181a; color:#eee9dd; border:1px solid #746655; }
.console-home .portfolio-metric { background:#222225; color:#eee9dd; border-color:#746655; }
.console-home .portfolio-performance .traffic-muted { color:#cfc7b8; }
.console-home .portfolio-performance summary { padding:12px 0; min-height:44px; }
.console-home .portfolio-performance table { color:#eee9dd; }
.console-home .portfolio-performance th,.console-home .portfolio-performance td { background:#18181a; border-color:#625b4e; }
.console-home .portfolio-performance .traffic-chart { background:#eee8da; }
.console-gl { position:fixed; inset:0; width:100%; height:100%; pointer-events:none; z-index:2; }
.console-home:not(.no-gl) .inst > svg, .console-home:not(.no-gl) .knob-hw > svg { visibility:hidden; }
.console-home .inst--vu { width:100%; height:clamp(170px,22vw,280px); }
.console-home .inst--ladder { height:12px; width:100%; }
.console-home .inst--scope { height:220px; width:100%; }
.console-home .inst--ring { min-height:0; }
.console-home .inst--odo { min-height:52px; }
.console-home .values-only [data-3d]:not([data-3d=knob]) { visibility:hidden; }
.console-home .no-data-instrument { color:#eee9dd; }
.console-home .no-data-instrument::after { content:'NO DATA'; position:absolute; inset:40% 0; text-align:center; z-index:5; font:700 16px var(--mono); }
@media(max-width:700px) {
 body:has(.console-home) .admin-main { padding:8px; }
 .console-home .main-grid { display:block; }
 .console-home .main-side { margin-top:12px; }
 .console-home .main-side .toggle { display:block; }
 .console-home .main-side .toggle-body { display:flex; }
 .console-home .portfolio-performance { padding:10px; }
 .console-home .mod { padding:12px; }
 .console-home .mod-id { font-size:10px; }
 .console-home .main-dial { min-width:0; }
 .console-home .ro--big .ro-w { font-size:32px; }
 .console-home .traffic-dashboard-header { flex-wrap:wrap; }
 .console-home .traffic-table-wrap { max-width:100%; overflow:auto; }
 body:has(.console-home) .admin-mobile-nav { background:#171718; color:#f3eddf; }
}
@media(prefers-reduced-motion:reduce) { .console-home *, .console-home *::before,.console-home *::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; } }
.console-home .console-scope { margin-bottom:14px; padding:10px 18px; flex-direction:row; align-items:center; flex-wrap:wrap; }
.console-home .console-scope .knob-body { display:flex; align-items:center; flex-wrap:wrap; width:auto; height:auto; margin:0; gap:4px; }
.console-home .console-scope .knob-hw { position:relative; width:64px; height:64px; flex:none; }
.console-home .console-scope .knob-opt { position:relative; inset:auto; transform:none; min-height:44px; min-width:64px; z-index:4; }
.console-home .console-scope .knob-opt input { width:100%; height:100%; }
.console-home .console-scope legend,.console-home .console-scope .key { position:relative; z-index:4; }
.console-home .rack--home .main-side { grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; align-items:start; }
.console-home .main-side .toggle { grid-column:1/-1; width:100%; }
.console-home .toggle-opt input { width:100%; height:100%; }
.console-home a { min-height:44px; min-width:44px; display:inline-flex; align-items:center; }
.console-home summary { min-height:44px; min-width:44px; }
.console-home .ro { min-width:0; }
.console-home .ro-w { max-width:100%; overflow-wrap:anywhere; }
.console-home .ro-w.is-unavailable { font-family:var(--mono); font-size:18px; }
.console-home .traffic-header { background:#18181a; border:1px solid #625b4e; padding:12px; color:#eee9dd; }
.console-home .traffic-header a { color:#f6c879; }
.console-home .traffic-header select { background:#292728; color:#f3edde; min-height:44px; }
.console-home .traffic-subnav a { min-height:44px; display:inline-flex; align-items:center; padding:0 12px; }
@media(max-width:700px) {
 .console-home .rack--home .main-side { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .console-home .main-side .ro--big { grid-column:1/-1; }
}

/* ---------- Round 6: design conformance (CONFORMANCE.md at ff10b13c) ---------- */
.console-home .visually-hidden { position:absolute!important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
.console-home .traffic-dashboard { max-width:none; padding:0; }
/* Item 3: the HTML keycap is the base layer on every tier. engine.js scans only the
   controller element (.console-instruments), so the header keys never get a 3D cap; a
   3D cap may only show through once a key carries [data-key-mesh=ready]. */
.console-home .key { background:linear-gradient(#36373b,#2a2b2e); border:1px solid #47484d; border-bottom:3px solid #0d0d0e; border-radius:4px; color:var(--leg); font:700 13px/1 var(--legf); letter-spacing:.14em; text-transform:uppercase; box-shadow:0 2px 4px #0009, inset 0 1px #ffffff14; }
.console-home .key.is-on, .console-home.no-gl .key.is-on { background-color:#e8e1cf; background-image:linear-gradient(#f1ecdf,#ddd5c2); color:#141414; border-color:#fff8e6; border-bottom-color:#8f8771; }
.console-home .key[data-key-mesh=ready] { background:transparent; border-color:transparent; box-shadow:none; }
.console-home :is(input,button).key { background-color:#2f3034; background-image:linear-gradient(#36373b,#2a2b2e); border:1px solid #47484d; border-bottom:3px solid #0d0d0e; border-radius:4px; color:var(--leg); font:700 12px/1 var(--legf); letter-spacing:.12em; text-transform:uppercase; }
.console-home .key--act { min-height:44px; padding:0 12px; font-size:12px; letter-spacing:.12em; cursor:pointer; }
.console-home .unit--head { margin:0 0 16px; }
.console-home .unit--head .plate img { border-radius:7px; }
.console-home .head-acts { display:flex; gap:8px; flex:none; }
.console-home .console-status { margin:14px 0 0; font:600 11.5px/1.4 var(--legf); letter-spacing:.08em; color:var(--legm); }
/* Item 1: CH 01 carries the readouts, the SCOPE knob (the only environment control) and DISPLAY. */
.console-home .rack--home .main-side { display:grid; grid-template-columns:minmax(0,1fr); gap:14px; justify-content:stretch; align-items:start; }
.console-home .ro-row { display:flex; flex-wrap:wrap; gap:12px 22px; align-items:end; }
.console-home .ro-c { font:400 18px/1 var(--rof); color:var(--amber); padding:9px 0 8px; }
.console-home .ctl-row { display:flex; flex-wrap:wrap; gap:10px 28px; align-items:center; }
.console-home .console-scope { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; margin:0; padding:0; background:none; border:0; box-shadow:none; }
.console-home .ctl-row .knob-body { display:flex; align-items:center; flex-wrap:wrap; width:auto; height:auto; margin:0; gap:4px; }
.console-home .ctl-row .knob-hw { position:relative; width:64px; height:64px; flex:none; }
.console-home .ctl-row .knob-opt { position:relative; inset:auto; transform:none; min-height:44px; min-width:56px; z-index:4; }
.console-home .ctl-row .knob-opt input { width:100%; height:100%; }
.console-home .ctl-row legend, .console-home .ctl-row .key { position:relative; z-index:4; }
.console-home .mod-f.console-window { text-transform:none; margin:0; overflow-wrap:anywhere; }
.console-home .ann--2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.console-home .exact-values { position:relative; z-index:4; }
.console-home .exact-values summary { display:flex; align-items:center; font:700 11.5px/1.2 var(--legf); letter-spacing:.1em; text-transform:uppercase; color:#f6c879; cursor:pointer; }
.console-home .exact-values table { width:100%; border-collapse:collapse; font:400 13px/1.4 var(--rof); color:#eee9dd; background:#141416; }
.console-home .exact-values caption { text-align:left; font:600 11.5px/1.4 var(--legf); letter-spacing:.06em; color:var(--legm); padding:6px 0; }
.console-home .exact-values th, .console-home .exact-values td { border:1px solid #3b3a37; padding:4px 8px; text-align:left; }
.console-home .exact-values .traffic-table-wrap { max-height:320px; overflow:auto; }
.console-home .console-filters { position:relative; z-index:4; margin:16px 0 0; padding:0 18px; background:#18181a; border:1px solid #625b4e; }
.console-home .console-filters summary { display:flex; align-items:center; font:700 13px/1.2 var(--legf); letter-spacing:.08em; color:#eee9dd; cursor:pointer; }
.console-home .console-filters .traffic-filters { display:flex; flex-wrap:wrap; gap:12px; align-items:end; padding:0 0 14px; }
.console-home .console-filters .traffic-field { display:grid; gap:4px; flex:1 1 240px; color:#d2cabc; }
.console-home .console-filters select { min-height:44px; background:#292728; color:#f3edde; border:1px solid #827565; }
/* Item 6: in no-gl both knobs are the round-4 SVG knob (ticks, knurled skirt, cap, pointer). */
.console-home.no-gl .i-knob .i-tick { stroke:var(--legm); stroke-width:2; }
.console-home.no-gl .i-knob-skirt { fill:#0e0e0f; } .console-home.no-gl .i-knurl { stroke:#3a3b3f; stroke-width:2; }
.console-home.no-gl .i-knob-cap { fill:#1f2023; stroke:#47484d; } .console-home.no-gl .i-knob-ptr rect { fill:var(--leg); }
@media (max-width:767px) {
  /* Item 2: the header plate is the phone app bar; the dock carries navigation. */
  body:has(.console-home) .admin-topbar { display:none; }
  body:has(.console-home) .admin-main { padding:8px 8px 0; }
  .console-home { padding-bottom:calc(var(--dock-h, 72px) + 16px + env(safe-area-inset-bottom)); }
  .console-home .unit--head { flex-wrap:nowrap; min-height:56px; padding:6px 10px!important; gap:8px; margin-bottom:12px; }
  .console-home .unit--head .plate { gap:8px; min-width:0; }
  .console-home .unit--head .plate img { width:26px; height:26px; }
  .console-home .unit--head .plate b { font-size:15px; letter-spacing:.16em; }
  .console-home .head-acts { margin-left:auto; gap:6px; }
  .console-home .head-acts .key { padding:0 8px; font-size:11px; letter-spacing:.08em; }
  .console-home .who { margin-left:0; padding:8px; }
  .console-home .rack--home .main-side { gap:12px; }
  .console-home .ro-row { gap:10px 16px; }
  .console-home .ro-row .ro--big { flex:1 1 100%; }
  .console-home .ctl-row { gap:8px 16px; }
  /* QA d326337d: below the tall SCOPE knob, DISPLAY rested ~43px above the fixed dock, and the
     sign-in flash pushed it under the dock. On phones DISPLAY comes first, ~144px higher. */
  .console-home .ctl-row .knob--display { order:-1; }
  /* Its NO DATA plate belongs on the dial; unanchored it spans mid-CH 01 and eats DISPLAY taps. */
  .console-home .no-data-instrument { position:relative; }
  .console-home .console-filters { padding:0 12px; }
  /* QA b6d8b708: the flash toast rests below the head plate keys, over CH 01's header and meter,
     which hold no controls; capped so even a long or doubled flash stays in that band. */
  body:has(.console-home) { --flash-top:64px; --flash-left:8px; --flash-max:200px; }
}
/* Item 4: Home ends at the rack. The evidence that stays on Home is a compact bank of closed
   disclosures; an opened one spans the full width so its tables stay readable. */
@media (min-width:1024px) {
  .console-home { padding-bottom:24px; }
  .console-home .portfolio-performance { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px 18px; align-items:start; margin-top:16px; padding:14px 18px; }
  .console-home .portfolio-performance > * { margin:0; min-width:0; }
  .console-home .portfolio-performance > .portfolio-columns { display:contents; }
  .console-home .portfolio-performance > p, .console-home .portfolio-performance > [role=alert], .console-home .portfolio-performance > section:not([aria-labelledby]), .console-home .portfolio-performance > details[open] { grid-column:1 / -1; }
  .console-home .portfolio-performance > p { order:-1; }
  .console-home .portfolio-performance section > h2 { font:700 13px/1.2 var(--legf); letter-spacing:.12em; text-transform:uppercase; margin:0 0 4px; }
  .console-home .portfolio-performance section > p { margin:0 0 4px; }
  .console-home .portfolio-performance section, .console-home .portfolio-performance section details { margin:0; }
  .console-home .portfolio-performance .traffic-window { padding:0; }
}

/* ---------- Round 8: design re-review at 8c508c0a (N1, N2) ---------- */
/* N1: the ring readout is centred on the ring itself (not on the gate's top edge) and clamped
   to the ring's inner face, so the digits never sit on the LED annulus at any width. */
.console-home .ring-w { --ring-d:188px; position:relative; align-self:center; justify-self:start; line-height:0; }
.console-home .ring-w .ring-c { position:absolute; inset:6px; width:auto; height:auto; display:grid; place-items:center; z-index:4; line-height:normal; }
.console-home .ring-face { display:grid; justify-items:center; max-width:calc(var(--ring-d) * .58); text-align:center; }
@media (max-width:767px) { .console-home .ring-w { --ring-d:140px; } }
@media (max-width:600px) {
  /* The digits sit on the ring's centre and KEPT hangs below them, so the widest line keeps
     clear of the annulus on both tiers (SVG fallback stroke starts at r = d/2 - 30). */
  .console-home .ring-w .ring-face { position:relative; }
  .console-home .ring-w .ring-c b { font-size:24px; line-height:1; }
  .console-home .ring-w .ring-c span { position:absolute; top:100%; left:50%; transform:translateX(-50%); white-space:nowrap; font-size:10px; line-height:1.2; letter-spacing:.12em; margin-top:2px; }
}
/* N2: the "likely human" honesty caption is HTML on every tier, in legend colour, stacked
   above the fixed WebGL canvas (z-index 2) like the readouts. */
.console-home .ro-note { position:relative; z-index:4; margin:6px 0 0; font:600 12px/1.4 var(--legf); letter-spacing:.04em; color:var(--leg); text-shadow:0 1px 1px #000; }
/* Shared Console provenance strip (moved from console_domains.css, Domains #487, same values): the
   bordered band between the head plate and the rack that says when and how the numbers were read. */
.console-home .console-provenance { position:relative; z-index:4; display:inline-block; margin:0 0 16px; padding:8px 10px; font:700 11.5px/1.3 var(--legf); letter-spacing:.1em; text-transform:uppercase; color:var(--leg); background:#17181b; border:1px solid #45413a; }
