/* ════════════════════════════════════════════════════════════════
   hive.css — "Backlit Wax" skin (baked @ 50%) + all view styles.
   Brown = wax (material, depth, top-light). Yellow = honey (backlit,
   glossy, glowing). Teal = intelligence. Stone-teal = permanence.
═══════════════════════════════════════════════════════════════════ */
*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0; }
html,body{ height:100%; }
:root{
  /* Build stamp — the CSS twin of WORKER_BUILD in worker.js. A stale
     stylesheet is invisible: the JS updates, the markup changes, and the
     layout silently uses last deploy's rules. Check it with:
       getComputedStyle(document.documentElement).getPropertyValue('--css-build')
     BUMP THIS on every CSS deploy. */
  --css-build:'2026-07-27m';
  /* ── Obsidian chrome (cool charcoal) — makes the warm gold cards pop ── */
  --void:#0c0e12; --comb:#181c22; --comb-2:#101319; --cell:#1a1f26; --cell-hover:#222831;
  --border:#2a3038; --border-dim:#1a1f26;
  /* ── warm accents kept exactly — this is what the gold identity rides on ── */
  --wax:#c97f1f; --wax-bright:#ffb627; --royal:#ffd966; --honey-hi:#fff0c0;
  --signal:#5ce1c9; --signal-dim:#2f7d70;
  --scan-blue:#4f9dff;
  --crystal:#cdddf5; --crystal-dim:#8a9bb5; --crystal-deep:#5c708f;
  --danger:#ff5e5e; --warn:#ffaa33; --ok:#5cd97e; --decl:#ff8a4d; --dead:#6b4d7a; --iris:#8a7dff; --mint:#7ed957;
  /* ── cool-neutral text so it sits right on charcoal (was warm cream) ── */
  --text-primary:#eef1f5; --text-secondary:#b8c0cc; --text-dim:#7c8694; --text-label:#e7b755;
  --font-display:'Space Grotesk',sans-serif; --font-body:'Inter',sans-serif; --font-mono:'JetBrains Mono',monospace;
  --hex-cut:10px; --hex-cut-sm:6px; --glow:.5; --warmth:.5; --depth:.5; --breath:0;
}
body{ background:var(--void); color:var(--text-primary); font-family:var(--font-body); font-size:14px; line-height:1.5; min-height:100%; }
a{ color:inherit; text-decoration:none; }
button{ font-family:inherit; }
.hex-cut-sm{ clip-path:polygon(var(--hex-cut-sm) 0,calc(100% - var(--hex-cut-sm)) 0,100% var(--hex-cut-sm),100% calc(100% - var(--hex-cut-sm)),calc(100% - var(--hex-cut-sm)) 100%,var(--hex-cut-sm) 100%,0 calc(100% - var(--hex-cut-sm)),0 var(--hex-cut-sm)); }

body::before{ content:''; position:fixed; inset:0; z-index:0; pointer-events:none;
  background:
    radial-gradient(56% 44% at 50% 26%, rgba(255,176,48, calc(.10*var(--warmth)*(1 + .25*var(--breath)))), transparent 72%),
    radial-gradient(40% 40% at 12% 90%, rgba(255,150,30,.05), transparent 70%),
    radial-gradient(45% 45% at 92% 88%, rgba(92,225,201,.035), transparent 72%); }
.grain{ position:fixed; inset:-40px; z-index:0; pointer-events:none; opacity:.4;
  background-image:repeating-linear-gradient(120deg, rgba(255,182,39,.022) 0 1px, transparent 1px 42px),repeating-linear-gradient(60deg, rgba(255,182,39,.022) 0 1px, transparent 1px 42px); }

/* nav */
nav.bar{ position:relative; z-index:5; height:48px; display:flex; align-items:center; padding:0 18px; gap:22px;
  background:linear-gradient(180deg,#22160b,#160e07); border-bottom:1px solid #2a3038; box-shadow:0 1px 0 rgba(255,200,90,.06) inset, 0 6px 24px rgba(0,0,0,.4); }
.brand{ display:flex; align-items:center; gap:9px; font-family:var(--font-display); font-weight:700; font-size:14px; }
.brand .dot{ width:9px; height:9px; border-radius:50%; background:var(--signal); box-shadow:0 0 8px var(--signal); }
nav .links{ display:flex; gap:18px; margin-left:8px; }
nav .links a{ font-family:var(--font-mono); font-size:14px; letter-spacing:.08em; color:var(--text-dim); }
nav .links a.active{ color:var(--wax-bright); }
nav .cta{ margin-left:auto; font-family:var(--font-mono); font-size:14px; letter-spacing:.08em; padding:7px 14px; border:1px solid var(--border); color:var(--text-secondary); }

/* layout */
#app{ position:relative; z-index:2; display:grid; grid-template-columns:280px 1fr 260px; gap:1px; background:#0c0e12; min-height:calc(100vh - 48px); }
.panel{ background:linear-gradient(168deg,#181c22,#130c06); position:relative; }
.panel::after{ content:''; position:absolute; inset:0 0 auto 0; height:1px; background:linear-gradient(90deg, transparent, rgba(255,200,90, calc(.14*var(--depth))), transparent); pointer-events:none; }
.panel--side{ padding:20px; display:flex; flex-direction:column; gap:18px; overflow-y:auto; }
.panel--center{ padding:18px 20px 28px; display:flex; flex-direction:column; gap:14px; }

.sec-label{ font-family:var(--font-mono); font-size:13.5px; font-weight:700; letter-spacing:.15em; color:var(--text-label); text-transform:uppercase; display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.sec-label .count{ color:var(--text-dim); font-weight:400; margin-left:auto; letter-spacing:.05em; }
.sec-label--intel{ color:var(--signal); }
.sec-label.addon-label{ margin-top:16px; padding-top:14px; border-top:1px dashed rgba(190,242,100,.25); color:#bef264; }
.srow.addon{ border-color:rgba(190,242,100,.3); background:linear-gradient(165deg, rgba(190,242,100,.08), #101319); }
.srow.addon .srow__icon,.srow.addon .srow__name,.srow.addon .srow__pct{ color:#bef264; }
.srow.addon .srow__fill{ background:linear-gradient(90deg, rgba(190,242,100,.1), rgba(190,242,100,.22)); border-right-color:rgba(190,242,100,.5); }
.srow.addon.dormant{ opacity:.5; }
.card{ background:linear-gradient(168deg,#1f1409,#160e07); border:1px solid var(--border); box-shadow: inset 0 1px 0 rgba(255,210,120,calc(.08*var(--depth))), 0 calc(8px*var(--depth)) calc(22px*var(--depth)) rgba(0,0,0,.42); }
.honeybar{ height:6px; background:#0d0805; border-radius:4px; overflow:hidden; box-shadow:inset 0 1px 2px rgba(0,0,0,.6); }
.honeybar > i{ display:block; height:100%; border-radius:4px; background:linear-gradient(180deg,#ffe48a 0%, #ffb627 35%, #c97f1f 100%); box-shadow:0 0 calc(12px*var(--glow)) rgba(255,182,39,.55), inset 0 1px 0 rgba(255,255,255,.45); transition:width .6s cubic-bezier(.2,.8,.2,1); }

.btn{ font-family:var(--font-mono); font-size:14px; letter-spacing:.06em; padding:10px 16px; cursor:pointer; white-space:nowrap; border:1px solid var(--wax);
  background:linear-gradient(180deg, rgba(255,200,80,.2), rgba(255,160,30,.06)); box-shadow:inset 0 1px 0 rgba(255,230,150,.35), 0 0 calc(18px*var(--glow)) rgba(255,182,39,.18); color:#ffe089; }
.btn:hover{ filter:brightness(1.12); }
.btn--ghost{ background:transparent; border-color:var(--border); color:var(--text-secondary); box-shadow:none; }

/* brand + pillars (left rail top) */
.hive-brand{ display:flex; flex-direction:column; gap:4px; padding-bottom:14px; border-bottom:1px solid var(--border); }
.hive-brand .mark{ font-family:var(--font-display); font-weight:700; font-size:21px; display:flex; align-items:center; gap:8px; }
.hive-brand .hex{ color:var(--wax-bright); filter:drop-shadow(0 0 calc(7px*var(--glow)) rgba(255,182,39,.7)); }
.hive-brand .sub{ font-family:var(--font-mono); font-size:14px; color:var(--text-secondary); }

.stat{ background:linear-gradient(165deg,#2a1c0c,#1a1107); border:1px solid var(--border); padding:15px; box-shadow: inset 0 1px 0 rgba(255,210,120,calc(.12*var(--depth))), 0 calc(10px*var(--depth)) calc(26px*var(--depth)) rgba(0,0,0,.5); }
.stat__state{ font-family:var(--font-display); font-weight:700; font-size:17px; letter-spacing:.03em; margin-bottom:12px; color:var(--text-secondary); }
.stat__state .pip{ display:inline-block; width:7px; height:7px; border-radius:50%; background:var(--signal); margin-right:8px; vertical-align:middle; box-shadow:0 0 7px var(--signal); animation:pip 3s ease-in-out infinite; }
@keyframes pip{ 0%,100%{ box-shadow:0 0 6px var(--signal); opacity:.7; } 50%{ box-shadow:0 0 12px var(--signal); opacity:1; } }
.stat__read{ margin-top:9px; font-family:var(--font-mono); font-size:14px; color:var(--text-secondary); }
.stat__read b{ color:var(--wax-bright); }

/* surface rail */
.srow{ display:grid; grid-template-columns:22px 1fr auto; align-items:center; gap:10px; padding:9px 11px; background:linear-gradient(165deg,#1a1f26,#101319); border:1px solid var(--border-dim); margin-bottom:7px; position:relative; overflow:hidden; transition:all .16s; }
.srow:hover{ border-color:#6b4a1c; transform:translateY(-1px); }
.srow__fill{ position:absolute; inset:0 auto 0 0; pointer-events:none; background:linear-gradient(90deg, rgba(201,127,31,.10), rgba(255,182,39,.16)); border-right:1px solid rgba(255,210,120,.4); box-shadow:0 0 14px rgba(255,182,39,calc(.18*var(--glow))); transition:width .6s ease; }
.srow__icon{ font-size:14px; text-align:center; position:relative; z-index:1; }
.srow__name{ font-family:var(--font-mono); font-size:14px; letter-spacing:.04em; text-transform:uppercase; color:var(--text-secondary); position:relative; z-index:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.srow__pct{ position:relative; z-index:1; font-family:var(--font-mono); font-weight:700; font-size:14px; color:var(--wax-bright); }
.srow.dormant{ opacity:.6; } .srow.dormant .srow__pct{ color:var(--text-dim); }
.srow.ring{ border-color:var(--crystal-dim); background:linear-gradient(165deg, rgba(120,140,175,.18), #160e07); margin-top:9px; }
.srow.ring .srow__icon,.srow.ring .srow__name,.srow.ring .srow__pct{ color:var(--crystal); }
.srow.ring .srow__fill{ background:linear-gradient(90deg, rgba(205,221,245,.10), rgba(205,221,245,.20)); border-right-color:rgba(205,221,245,.5); box-shadow:none; }

.pillars{ display:flex; flex-direction:column; gap:8px; }
.pillar{ padding:10px 12px; border:1px solid var(--border-dim); background:linear-gradient(165deg,#1a1f26,#101319); }
.pillar.intel{ border-color:rgba(92,225,201,.35); background:linear-gradient(165deg, rgba(22,61,56,.5), #160e07); }
.pillar__k{ font-family:var(--font-mono); font-size:13px; letter-spacing:.1em; text-transform:uppercase; color:var(--text-dim); }
.pillar__v{ font-family:var(--font-display); font-weight:700; font-size:16px; margin:2px 0; }
.pillar__feel{ font-family:var(--font-mono); font-size:13px; color:var(--text-dim); }
.pillar.growth .pillar__v{ color:var(--wax-bright); } .pillar.intel .pillar__v{ color:var(--signal); } .pillar.perm .pillar__v{ color:var(--text-secondary); }
.total{ margin-top:6px; text-align:center; font-family:var(--font-mono); font-size:13.5px; color:var(--text-secondary); }
.total b{ color:var(--wax-bright); font-size:14px; }

/* tabs */
.tabs{ display:flex; gap:6px; align-items:stretch; flex-wrap:wrap; }

/* ── wax-seal bevel — chunky, physical, pressed-in ── */
.tab, .tab--comb, .tab--tool, .tab--nav{
  font-family:var(--font-mono); font-weight:700; font-size:12.5px; letter-spacing:.1em; text-transform:uppercase;
  padding:10px 16px; display:inline-flex; align-items:center; gap:8px;
  cursor:pointer; position:relative; transition:all .12s ease;
  color:rgba(255,255,255,.65);
  background:linear-gradient(180deg,#20242c,#161920);
  border:2px solid #2c313b; border-top-color:#363c48; border-bottom-color:#0a0b0d;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04); }
.tab .tab__hx, .tab--comb .tab__hx{ font-size:10px; color:var(--ct); opacity:.55; }
.tab--comb .tab__no{ opacity:.45; font-weight:600; margin-right:1px; }

.tab:hover, .tab--comb:hover, .tab--tool:hover, .tab--nav:hover{
  border-color:color-mix(in srgb, var(--ct) 55%, #2c313b); color:#fff; }
.tab.active, .tab--comb.active, .tab--tool.active, .tab--nav.active{
  color:#fff;
  background:linear-gradient(180deg, color-mix(in srgb, var(--ct) 32%, #20242c), color-mix(in srgb, var(--ct) 13%, #161920));
  border-color:var(--ct);
  box-shadow:inset 0 2px 5px rgba(0,0,0,.45), 0 0 0 1px color-mix(in srgb, var(--ct) 45%, transparent); }
.tab.active .tab__hx, .tab--comb.active .tab__hx{ opacity:1; }
.tab--comb.active .tab__no{ opacity:.85; }

/* core responsibility colors */
.tab[data-tab="inspect"], .tab--tool[data-tab="inspect"]{ --ct:#4ecdc4; }
.tab[data-tab="triage"],  .tab--tool[data-tab="triage"] { --ct:#ff5e5e; }
.tab[data-tab="expand"],  .tab--tool[data-tab="expand"] { --ct:#ffb627; }
.tab[data-tab="harvest"], .tab--tool[data-tab="harvest"]{ --ct:#7ed957; }
.tab--tool[data-tab="security"]{ --ct:#e8836b; }

/* ── locked / coming soon tabs ── */
.tab--locked{ cursor:not-allowed; opacity:.6; position:relative; }
.tab--locked:hover{ transform:none; border-color:#2c313b; color:rgba(255,255,255,.65); }
.tab__soon{ font-family:var(--font-mono); font-size:8.5px; font-weight:800; letter-spacing:.14em;
  color:#0c0e12; background:#ffb627; padding:2px 6px; margin-left:8px; border-radius:2px;
  transform:rotate(-6deg); display:inline-block; box-shadow:0 1px 3px rgba(0,0,0,.4); }
.tab--nav{ --ct:#bef264; }
.tab--nav .tab__hx{ background:linear-gradient(135deg,#ffd966,#bef264); -webkit-background-clip:text; background-clip:text; color:transparent; opacity:.75; }
.tab--nav.active .tab__hx{ opacity:1; }

/* divider between nav group and core group */
.tab-sep{ width:1px; align-self:stretch; margin:2px 22px; background:linear-gradient(180deg,transparent,rgba(255,255,255,.18),transparent); }

/* ── security tab — isolated, pushed right, distinct from workflow tabs ── */
.tab-tools-wrap{ padding-left:10px; margin-left:4px; margin-right:8px; display:flex; align-items:center; gap:8px; }
.tab-tools-lead{ font-family:var(--font-mono); font-size:9px; letter-spacing:.12em; color:rgba(255,255,255,.28); text-transform:uppercase; margin-right:4px; white-space:nowrap; }

/* ── guided journey: pushed far right, styled special ── */
.tab-guided-wrap{ margin-left:auto; padding-left:32px; border-left:1px solid rgba(255,255,255,.08); display:flex; align-items:center; gap:12px; padding-right:28px; }
.tab-guided-lead{ font-family:var(--font-mono); font-size:12px; letter-spacing:.03em; color:var(--text-dim); white-space:nowrap; font-style:italic; }
.tab--guided{
  font-family:'Cinzel',serif; font-weight:600; font-size:13px; letter-spacing:.1em;
  padding:12px 20px; cursor:pointer; white-space:nowrap; transition:all .18s ease;
  color:rgba(255,240,160,.92);
  background:linear-gradient(135deg,rgba(200,128,26,.9),rgba(120,70,10,.92));
  border:1px solid rgba(240,180,60,.5);
  box-shadow:0 0 18px rgba(200,128,26,.22);
}
.tab--guided:hover{ filter:brightness(1.12); box-shadow:0 0 26px rgba(200,128,26,.38); transform:translateY(-1px); }
.tab--guided.active{ color:#fff; border-color:var(--wax-bright); box-shadow:0 0 28px rgba(255,182,39,.5); }
@media(max-width:1100px){ .tab-guided-wrap{ margin-left:0; width:100%; justify-content:space-between; } }

/* OVERVIEW */
.hero{ padding:18px 20px; }
.hero__top{ display:flex; align-items:flex-end; justify-content:space-between; gap:20px; flex-wrap:wrap; }
.hero__eyebrow{ font-family:var(--font-mono); font-size:13.5px; letter-spacing:.18em; color:var(--text-label); text-transform:uppercase; }
.hero__state{ font-family:var(--font-display); font-weight:700; font-size:34px; line-height:1; background:linear-gradient(180deg,#fff0c0,#ffb627 60%,#c97f1f); -webkit-background-clip:text; background-clip:text; color:transparent; filter:drop-shadow(0 0 calc(14px*var(--glow)) rgba(255,182,39,.35)); }
.hero__next{ font-family:var(--font-mono); font-size:14px; color:var(--text-secondary); margin-top:4px; } .hero__next b{ color:var(--wax-bright); }
.hero__rank{ text-align:right; font-family:var(--font-mono); font-size:13.5px; color:var(--text-dim); } .hero__rank b{ display:block; font-family:var(--font-display); font-size:15px; color:var(--text-secondary); margin-top:2px; }
.ladder{ margin-top:18px; }
.ladder__track{ display:grid; grid-template-columns:repeat(11,1fr); gap:4px; }
.ladder__seg{ height:34px; position:relative; border:1px solid var(--border-dim); background:#101319; clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%); display:flex; align-items:center; justify-content:center; }
.ladder__seg.done{ background:linear-gradient(180deg,#caa24a,#8a5a18); border-color:#6b4a1c; }
.ladder__seg.cur{ background:linear-gradient(180deg,#ffe48a,#ffb627 55%,#c97f1f); border-color:#ffd966; box-shadow:0 0 calc(18px*var(--glow)) rgba(255,182,39,.6), inset 0 1px 0 rgba(255,255,255,.5); }
.ladder__seg.cur::after{ content:''; position:absolute; bottom:-7px; left:50%; transform:translateX(-50%); border-left:5px solid transparent; border-right:5px solid transparent; border-top:6px solid var(--royal); }
.ladder__num{ font-family:var(--font-mono); font-size:13.5px; font-weight:700; color:var(--text-dim); }
.ladder__seg.done .ladder__num,.ladder__seg.cur .ladder__num{ color:#3a2608; }
.ladder__labels{ display:grid; grid-template-columns:repeat(11,1fr); gap:4px; margin-top:7px; }
.ladder__lab{ font-family:var(--font-mono); font-size:12px; text-align:center; color:var(--text-dim); text-transform:uppercase; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ladder__lab.cur{ color:var(--wax-bright); font-weight:700; }

.vitals{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.vital{ padding:14px; }
.vital__label{ font-family:var(--font-mono); font-size:13px; letter-spacing:.1em; color:var(--text-dim); text-transform:uppercase; }
.vital__big{ font-family:var(--font-display); font-weight:700; font-size:26px; line-height:1; margin:8px 0 3px; } .vital__big small{ font-size:14px; color:var(--text-dim); font-weight:500; } .vital__big .grade{ color:var(--warn); }
.vital__sub{ font-family:var(--font-mono); font-size:13.5px; color:var(--text-secondary); margin-bottom:9px; }
.vital .honeybar{ height:5px; }

.work{ display:grid; grid-template-columns:1.35fr 1fr; gap:12px; }
.nextmove{ padding:16px; background:linear-gradient(150deg, rgba(255,182,39,.12), rgba(31,20,9,.6) 55%); border:1px solid #7a531f; box-shadow: inset 0 1px 0 rgba(255,210,120,.25), 0 0 calc(22px*var(--glow)) rgba(255,182,39,.14); }
.nextmove__tag{ font-family:var(--font-mono); font-size:13px; letter-spacing:.14em; color:var(--royal); text-transform:uppercase; }
.nextmove__title{ font-family:var(--font-display); font-weight:700; font-size:18px; margin:6px 0; }
.nextmove__why{ font-size:12.5px; color:var(--text-secondary); line-height:1.5; }
.nextmove__foot{ display:flex; align-items:center; justify-content:space-between; margin-top:14px; }
.nextmove__vp{ font-family:var(--font-mono); font-weight:700; font-size:15px; color:var(--royal); }
.attack{ margin-top:12px; padding:14px 16px; }
.arow{ display:grid; grid-template-columns:18px 1fr auto auto; gap:10px; align-items:center; padding:9px 0; border-bottom:1px solid var(--border-dim); }
.arow:last-child{ border-bottom:none; }
.arow__n{ font-family:var(--font-mono); font-size:14px; font-weight:700; color:var(--wax); }
.arow__t{ font-size:13px; } .arow__t small{ display:block; font-family:var(--font-mono); font-size:13px; color:var(--text-dim); letter-spacing:.08em; text-transform:uppercase; }
.arow__vp{ font-family:var(--font-mono); font-weight:700; font-size:14px; color:var(--wax-bright); }
.mini{ font-family:var(--font-mono); font-size:13px; padding:5px 9px; border:1px solid var(--border); color:var(--text-secondary); cursor:pointer; background:transparent; }
.mini:hover{ border-color:var(--wax); color:var(--wax-bright); }

.momentum{ padding:16px; }
.mstat{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-bottom:14px; }
.mstat__cell{ text-align:center; padding:10px 4px; background:rgba(255,255,255,.02); border:1px solid var(--border-dim); }
.mstat__v{ font-family:var(--font-display); font-weight:700; font-size:20px; color:var(--royal); } .mstat__v.teal{ color:var(--signal); }
.mstat__k{ font-family:var(--font-mono); font-size:13px; letter-spacing:.06em; color:var(--text-dim); text-transform:uppercase; margin-top:3px; }
.recent{ font-family:var(--font-mono); font-size:14px; color:var(--text-secondary); }
.recent__row{ display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px solid var(--border-dim); } .recent__row:last-child{ border-bottom:none; } .recent__row .ok{ color:var(--ok); }
.alert{ margin-top:12px; padding:10px 12px; border:1px solid rgba(255,170,51,.4); background:rgba(255,170,51,.07); display:flex; gap:10px; align-items:flex-start; }
.alert__dot{ width:8px; height:8px; border-radius:50%; background:var(--warn); box-shadow:0 0 8px var(--warn); margin-top:4px; flex-shrink:0; animation:pip 2.4s ease-in-out infinite; }
.alert__txt{ font-size:14px; color:var(--text-secondary); line-height:1.45; } .alert__txt b{ color:var(--warn); }

.hivestrip{ padding:16px 18px; display:grid; grid-template-columns:1fr auto; gap:18px; align-items:center; }
.hivestrip__head{ display:flex; align-items:baseline; gap:10px; margin-bottom:10px; }
.hivestrip__count{ font-family:var(--font-display); font-weight:700; font-size:20px; } .hivestrip__count small{ font-size:13px; color:var(--text-dim); }
.hivestrip__phase{ font-family:var(--font-mono); font-size:13.5px; letter-spacing:.1em; color:var(--text-label); text-transform:uppercase; margin-left:auto; }
.hivestrip .honeybar{ height:12px; }

/* ── COLONY INSPECTION ── */
/* ── SCAN PAGE HERO ── */
.insp-hero{ position:relative; padding:32px 32px 28px; border-bottom:1px solid var(--border); overflow:hidden;
  background:
    radial-gradient(ellipse 620px 380px at 8% -10%, color-mix(in srgb, var(--scan-c) 14%, transparent), transparent 72%),
    linear-gradient(160deg, color-mix(in srgb, var(--scan-c) 5%, transparent), transparent 55%); }
.insp-hero__top{ position:relative; display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.insp-hero__label{ font-family:var(--font-mono); font-size:14px; letter-spacing:.24em; color:var(--scan-c); display:flex; align-items:center; gap:9px; }
.insp-hero__dot{ width:6px; height:6px; border-radius:50%; background:var(--scan-c); animation:insp-dot-blink 2s ease-in-out infinite; }
@keyframes insp-dot-blink{ 0%,100%{ opacity:1; } 50%{ opacity:.3; } }
.insp-hero__domain{ font-family:var(--font-mono); font-size:13.5px; color:var(--text-dim); }
.insp-hero__scanline{ height:1px; background:color-mix(in srgb, var(--scan-c) 25%, transparent); position:relative; overflow:hidden; margin-bottom:24px; }
.insp-hero__scanline::after{ content:''; position:absolute; top:0; left:-30%; width:30%; height:100%;
  background:linear-gradient(90deg, transparent, var(--scan-c), transparent); animation:insp-sweep 5s linear infinite; }
@keyframes insp-sweep{ 0%{ left:-30%; } 100%{ left:100%; } }
.insp-hero__body{ position:relative; display:flex; align-items:center; gap:32px; }
.insp-hero__ring{ position:relative; width:132px; height:132px; flex:none; }
.insp-hero__ring svg{ width:100%; height:100%; transform:rotate(-90deg); overflow:visible; }
.insp-hero__ring-track{ fill:none; stroke:rgba(255,255,255,.07); stroke-width:9; }
.insp-hero__ring-fill{ fill:none; stroke:var(--scan-c); stroke-width:9; stroke-linecap:round;
  transition:stroke-dashoffset 1.1s cubic-bezier(.2,.8,.3,1); }
.insp-hero__ring-pct{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-family:var(--font-display); font-weight:700; font-size:32px; color:var(--scan-c); line-height:1; }
.insp-hero__info{ flex:1; min-width:0; }
.insp-hero__h1{ font-family:var(--font-display); font-weight:700; font-size:19px; color:var(--text-primary); margin:0 0 6px; }
.insp-hero__title{ font-size:14.5px; color:var(--text-secondary); margin:0 0 12px; }
.insp-hero__stats{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-bottom:10px; }
.insp-hero__stat{ font-family:var(--font-mono); font-size:12.5px; color:var(--c); }
.insp-hero__stamp{ font-family:var(--font-mono); font-size:11.5px; color:var(--text-dim); }
.insp-hero__actions{ display:flex; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
.insp-quad__action{ margin:0 16px 14px; background:transparent; border:1px solid var(--border-dim); color:var(--text-dim); font-family:var(--font-mono); font-size:13.5px; letter-spacing:.06em; padding:7px 12px; cursor:pointer; text-align:left; transition:all .15s; flex-shrink:0; }
.insp-quad__action:hover{ border-color:var(--wax); color:var(--wax); }
.btn--security{ background:linear-gradient(135deg,rgba(184,134,11,.9),rgba(120,80,8,.95)); border-color:rgba(240,190,50,.5); color:rgba(255,230,100,.95); }
.btn--security:hover{ filter:brightness(1.12); box-shadow:0 0 20px rgba(200,140,20,.4); }
.insp-link{ background:transparent; border:none; color:var(--signal); font-size:14px; cursor:pointer; text-decoration:underline; padding:0; }
.insp-scan-progress{ font-family:var(--font-mono); font-size:13.5px; color:var(--signal); animation:blink 1s infinite; }
.insp-pbar{ height:2px; background:rgba(255,255,255,.08); border-radius:1px; overflow:hidden; }
.insp-pbar-fill{ height:100%; background:linear-gradient(90deg,var(--wax),var(--wax-bright)); transition:width .3s ease; }
.insp-check-section{ font-family:var(--font-mono); font-size:12.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--text-dim); margin-top:6px; margin-bottom:3px; }
.insp-check{ display:flex; align-items:center; gap:8px; padding:6px 8px; border:1px solid var(--border-dim); }
.insp-check.pass{ border-color:rgba(92,217,126,.2); background:rgba(92,217,126,.04); }
.insp-check.warn{ border-color:rgba(255,170,51,.2); background:rgba(255,170,51,.04); }
.insp-check.fail{ border-color:rgba(255,94,94,.25); background:rgba(255,94,94,.06); }
.insp-check__dot{ width:7px; height:7px; border-radius:50%; flex-shrink:0; }
.pass .insp-check__dot{ background:var(--ok); }
.warn .insp-check__dot{ background:var(--warn); }
.fail .insp-check__dot{ background:var(--danger); }
.insp-check__name{ font-family:var(--font-mono); font-size:13.5px; color:var(--text-secondary); flex:1; }
.insp-check__val{ font-family:var(--font-mono); font-size:13.5px; font-weight:700; }

.insp-triage-cta{ display:flex; align-items:center; gap:12px; padding:14px 16px; margin-top:10px; flex-wrap:wrap;
  border:1px solid rgba(255,182,39,.25); background:rgba(255,182,39,.06); border-radius:6px; }
.insp-triage-cta--critical{ border-color:rgba(255,94,94,.4); background:rgba(255,94,94,.08); }
.insp-triage-cta--critical .insp-triage-cta__icon{ color:var(--danger); }
.insp-triage-cta__crit{ color:var(--danger); font-weight:700; }
.insp-triage-cta__icon{ font-size:18px; color:var(--wax-bright); flex:none; }
.insp-triage-cta__text{ flex:1; font-size:13.5px; color:var(--text-secondary); min-width:200px; }
.insp-triage-cta__text b{ color:var(--text-primary); }
.insp-all-good{ font-size:14px; color:var(--text-dim); font-style:italic; padding:6px 0; }
#insp-scan-results{ width:100%; }

.intelstat{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.istat{ padding:13px; text-align:center; }
.istat__v{ font-family:var(--font-display); font-weight:700; font-size:22px; } .istat__v.teal{ color:var(--signal); } .istat__v.warn{ color:var(--warn); } .istat__v.dim{ color:var(--text-dim); }
.istat__k{ font-family:var(--font-mono); font-size:13px; letter-spacing:.07em; color:var(--text-dim); text-transform:uppercase; margin-top:4px; }

/* ── COMMAND CENTER (BRIEFING) ── */
.cmd-wrap{ display:flex; flex-direction:column; gap:0; }

/* Brief strip */
.cmd-brief{ padding:22px 26px 18px; background:linear-gradient(160deg,rgba(20,50,44,.55),#130c06); border:1px solid rgba(92,225,201,.35); border-left:3px solid var(--signal); margin-bottom:0; position:relative; overflow:hidden; }
.cmd-brief::before{ content:''; position:absolute; inset:0; pointer-events:none; background:repeating-linear-gradient(0deg,rgba(92,225,201,.025) 0 1px,transparent 1px 4px); }
.cmd-brief__bar{ display:flex; align-items:center; gap:10px; margin-bottom:12px; position:relative; }
.cmd-brief__live{ font-family:var(--font-mono); font-size:13px; letter-spacing:.16em; color:var(--signal); text-transform:uppercase; display:flex; align-items:center; gap:7px; }
.cmd-brief__live .b{ width:6px; height:6px; border-radius:50%; background:var(--signal); box-shadow:0 0 7px var(--signal); animation:bl 1.4s steps(2) infinite; }
@keyframes bl{ 50%{opacity:.3} }
.cmd-brief__meta{ margin-left:auto; font-family:var(--font-mono); font-size:13px; color:var(--text-dim); }
.cmd-brief__status{ display:flex; align-items:center; gap:16px; margin-bottom:14px; position:relative; }
.cmd-brief__level{ display:flex; flex-direction:column; gap:2px; }
.cmd-brief__level-name{ font-family:var(--font-display); font-weight:700; font-size:22px; color:var(--honey-hi); line-height:1; }
.cmd-brief__level-name.immortal{ color:var(--signal); text-shadow:0 0 20px rgba(92,225,201,.5); }
.cmd-brief__level-prog{ font-family:var(--font-mono); font-size:13.5px; color:var(--text-dim); }
.cmd-brief__ladder{ flex:1; max-width:320px; }
.cmd-brief__hi{ font-family:var(--font-display); font-weight:700; font-size:22px; color:var(--honey-hi); margin:10px 0 8px; position:relative; }
.cmd-brief__lines{ display:flex; flex-direction:column; gap:7px; position:relative; }
.cmd-brief__lines p{ font-size:13.5px; color:var(--text-secondary); line-height:1.7; margin:0; font-family:var(--font-body); }
.cmd-brief__counsel{ color:var(--text-dim)!important; font-style:italic; }
.cmd-brief__actions{ display:flex; gap:10px; margin-top:16px; flex-wrap:wrap; position:relative; }
.cmd-brief__actions .btn{ font-size:14px; padding:9px 16px; }

/* Four command cards */
.cmd-grid{ display:grid; grid-template-columns:1fr 1fr; border-top:1px solid var(--border); }
.cmd-card{ display:flex; flex-direction:column; border-right:1px solid var(--border); border-bottom:1px solid var(--border); background:linear-gradient(170deg,#1a1208,#110c06); transition:background .2s; }
.cmd-card:nth-child(2n){ border-right:none; }
.cmd-card:hover{ background:linear-gradient(170deg,#201508,#130e07); }
.cmd-card--inspect{ border-top:2px solid rgba(92,225,201,.4); }
.cmd-card--brood{ border-top:2px solid rgba(255,170,51,.4); }
.cmd-card--expand{ border-top:2px solid rgba(255,182,39,.4); }
.cmd-card--honey{ border-top:2px solid rgba(255,217,102,.4); }
.cmd-card__head{ padding:18px 20px 12px; border-bottom:1px solid var(--border-dim); flex-shrink:0; }
.cmd-card__eyebrow{ font-family:var(--font-mono); font-size:12.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--text-dim); margin-bottom:5px; }
.cmd-card--inspect .cmd-card__eyebrow{ color:var(--signal-dim); }
.cmd-card--brood .cmd-card__eyebrow{ color:rgba(255,170,51,.7); }
.cmd-card--expand .cmd-card__eyebrow{ color:rgba(255,182,39,.7); }
.cmd-card--honey .cmd-card__eyebrow{ color:rgba(255,217,102,.7); }
.cmd-card__title{ font-family:var(--font-display); font-weight:700; font-size:18px; color:var(--honey-hi); margin-bottom:3px; }
.cmd-card__tagline{ font-size:14px; color:var(--text-dim); line-height:1.5; }
.cmd-card__meta{ padding:10px 20px 8px; border-bottom:1px solid var(--border-dim); flex-shrink:0; }
.cmd-card__domain{ font-family:var(--font-mono); font-size:13.5px; color:var(--signal); }
.cmd-card__warn{ font-family:var(--font-mono); font-size:13.5px; color:var(--text-dim); }
.cmd-card__fill{ flex:1; padding:12px 18px; display:flex; flex-direction:column; gap:6px; overflow:hidden; }
.cmd-card__desc{ font-size:14px; color:var(--text-secondary); line-height:1.65; }
.cmd-card__action{ margin-top:auto; }
.cmd-card__foot{ padding:10px 20px 14px; font-family:var(--font-mono); font-size:13px; color:var(--text-dim); border-top:1px solid var(--border-dim); flex-shrink:0; line-height:1.5; }

/* Brood tending — inline, self-contained */
.tend-list{ gap:4px!important; overflow-y:auto; max-height:240px; }
.tend-row{ display:flex; align-items:center; gap:10px; padding:8px 10px; border:1px solid var(--border-dim); background:rgba(0,0,0,.2); }
.tend-icon{ font-size:13px; flex-shrink:0; width:16px; text-align:center; }
.tend-info{ flex:1; min-width:0; }
.tend-name{ font-size:14px; color:var(--text-secondary); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin-bottom:2px; }
.tend-meta{ font-family:var(--font-mono); font-size:13px; letter-spacing:.05em; text-transform:uppercase; }
.tend-btn{ font-family:var(--font-mono); font-size:13px; letter-spacing:.06em; padding:5px 10px; background:transparent; border:1px solid var(--border-dim); color:var(--text-dim); cursor:pointer; flex-shrink:0; white-space:nowrap; transition:all .15s; }
.tend-btn:hover{ border-color:var(--wax); color:var(--wax-bright); background:rgba(255,182,39,.08); }
.tend-clear{ display:flex; flex-direction:column; align-items:center; text-align:center; padding:20px 12px; gap:4px; }
.tend-clear__icon{ font-size:28px; color:var(--ok); opacity:.6; margin-bottom:4px; }
.tend-clear__msg{ font-family:var(--font-display); font-weight:700; font-size:15px; color:var(--ok); }
.tend-clear__sub{ font-size:14px; color:var(--text-dim); }

/* Expand list */
.cmd-expand-list{ gap:3px!important; }
.cmd-expand-row{ display:flex; align-items:center; gap:8px; padding:5px 6px; cursor:pointer; border-bottom:1px solid var(--border-dim); }
.cmd-expand-row:hover{ background:rgba(255,255,255,.03); }
.cmd-expand-vp{ font-family:var(--font-mono); font-weight:700; font-size:13.5px; color:var(--royal); width:32px; flex-shrink:0; }
.cmd-expand-name{ font-size:14px; color:var(--text-secondary); flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cmd-expand-surf{ font-family:var(--font-mono); font-size:12.5px; color:var(--text-dim); flex-shrink:0; }

/* Honey grid */
.cmd-honey-grid{ display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.cmd-honey-item{ padding:10px 12px; background:rgba(255,255,255,.02); border:1px solid var(--border-dim); }
.cmd-honey-v{ font-family:var(--font-display); font-weight:700; font-size:20px; line-height:1; margin-bottom:3px; }
.cmd-honey-k{ font-family:var(--font-mono); font-size:12.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--text-dim); }
.cmd-honey-sub{ font-size:13.5px; color:var(--text-secondary); margin-top:3px; }

/* inspect output area */
#brief-inspect-output{ width:100%; }

/* ══ BRIEFING — final design ══════════════════════════════════ */
@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=DM+Serif+Display:ital@0;1&display=swap');

.bf-wrap{ display:grid; grid-template-rows:1fr auto auto auto; min-height:calc(100vh - 44px); overflow:visible; }

/* ── BRIEFING WINDOW ── */
.bf-win{
  display:grid; grid-template-columns:1fr;
  border:1px solid rgba(200,165,80,.2);
  border-top:none;
  outline:3px solid rgba(200,165,80,.06); outline-offset:3px;
  overflow:hidden; position:relative;
  box-shadow:0 0 0 8px rgba(200,165,80,.03),0 0 40px rgba(200,128,26,.07),inset 0 0 0 1px rgba(200,165,80,.05);
}
.bf-hex-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:.65;}
.bf-glow{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(ellipse 65% 70% at 5% 0%,rgba(180,105,12,.16) 0%,transparent 55%),
             radial-gradient(ellipse 40% 50% at 95% 100%,rgba(100,70,8,.08) 0%,transparent 55%);}
.bf-rule-top{position:absolute;top:0;left:0;right:0;height:1px;z-index:4;background:linear-gradient(90deg,transparent,rgba(200,165,80,.6),rgba(255,210,80,.8),rgba(200,165,80,.6),transparent);}
.bf-rule-bot{position:absolute;bottom:0;left:0;right:0;height:1px;z-index:4;background:linear-gradient(90deg,transparent,rgba(200,165,80,.4),rgba(255,210,80,.5),rgba(200,165,80,.4),transparent);}

/* LEFT */
.bf-left{
  position:relative;z-index:3;
  padding:18px 28px 16px;
  display:flex;flex-direction:column;justify-content:space-between;
  background:linear-gradient(140deg,rgba(16,12,6,.88) 0%,rgba(7,5,10,.94) 100%);
}
.bf-left > *:not(.bf-foldstats):not(.bf-bottom){max-width:920px;margin-left:auto;margin-right:auto;width:100%;}
.bf-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.bf-eyebrow{display:flex;align-items:center;gap:9px;}
.bf-eyebrow-text{font-family:'Cinzel',serif;font-size:14px;letter-spacing:.24em;color:rgba(210,175,90,.78);text-transform:uppercase;}
.bf-badge{font-family:var(--font-mono);font-size:12px;letter-spacing:.15em;text-transform:uppercase;padding:4px 10px;display:flex;align-items:center;gap:6px;}
.bf-badge--crit{background:rgba(224,85,85,.1);border:1px solid rgba(224,85,85,.3);color:rgba(224,85,85,.85);}
.bf-badge--warn{background:rgba(240,160,32,.1);border:1px solid rgba(240,160,32,.3);color:rgba(240,160,32,.85);}
.bf-badge--ok  {background:rgba(80,200,117,.1);border:1px solid rgba(80,200,117,.3);color:rgba(80,200,117,.85);}
.bf-badge--dim {background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.35);}
.bf-badge-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0;animation:bf-hb 1.4s ease-in-out infinite;}
@keyframes bf-hb{0%,100%{opacity:1}50%{opacity:.2}}
.bf-badge--crit .bf-badge-dot{background:#e05555;box-shadow:0 0 6px #e05555;}
.bf-badge--warn .bf-badge-dot{background:var(--warn);box-shadow:0 0 6px var(--warn);}
.bf-badge--ok   .bf-badge-dot{background:var(--ok);box-shadow:0 0 6px var(--ok);}
.bf-badge--dim  .bf-badge-dot{background:rgba(255,255,255,.3);}

.bf-ornament{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.bf-orn-line{flex:1;height:1px;background:linear-gradient(90deg,rgba(200,165,80,.25),rgba(200,165,80,.08));}
.bf-orn-line:last-child{background:linear-gradient(90deg,rgba(200,165,80,.08),rgba(200,165,80,.25));}
.bf-orn-center{display:flex;align-items:center;gap:6px;}
.bf-orn-diamond{width:3px;height:3px;background:rgba(200,165,80,.4);transform:rotate(45deg);}

.bf-greeting{
  font-family:'Cinzel',serif;font-weight:600;
  font-size:clamp(22px,2.6vw,34px);
  letter-spacing:.08em;line-height:1.2;text-align:center;
  background:linear-gradient(170deg,rgba(255,244,192,.96) 0%,rgba(255,210,60,.88) 45%,rgba(200,140,20,.75) 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  filter:drop-shadow(0 0 18px rgba(200,128,26,.28));
  margin-bottom:3px;
}
.bf-subgreeting{text-align:center;font-family:'DM Serif Display',serif;font-size:15px;font-style:italic;color:rgba(205,170,85,.62);letter-spacing:.05em;margin-bottom:10px;}

.bf-sit-rule{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.bf-sit-line{flex:1;height:1px;background:rgba(224,85,85,.15);}
.bf-sit-label{font-family:'Cinzel',serif;font-size:14px;letter-spacing:.2em;color:rgba(224,85,85,.72);text-transform:uppercase;white-space:nowrap;}

.bf-situation{
  font-family:'DM Serif Display',serif;
  font-size:clamp(16px,1.9vw,23px);
  line-height:1.45;text-align:center;
  color:rgba(255,255,255,.75);
  margin-bottom:10px;
}
.bf-sit-red{color:#e05555;font-style:italic;text-shadow:0 0 20px rgba(224,85,85,.35);}
.bf-sit-amber{color:var(--wax-bright);}
.bf-sit-ok{color:var(--ok);}
.bf-sit-warn{color:var(--warn);}
.bf-sit-dim{color:rgba(255,255,255,.5);}

.bf-quote{
  padding:10px 16px;
  background:rgba(200,165,80,.04);
  border:1px solid rgba(200,165,80,.1);
  border-left:2px solid rgba(200,165,80,.28);
  margin-bottom:8px;position:relative;
}
.bf-quote-mark{position:absolute;top:-8px;left:12px;font-family:'DM Serif Display',serif;font-size:28px;color:rgba(200,165,80,.15);line-height:1;}
.bf-quote-text{font-family:'DM Serif Display',serif;font-size:16px;line-height:1.75;color:rgba(255,255,255,.62);font-style:italic;}
/* ── onboarding steps (first-run guide inside the oracle section) ── */
.bf-onboard{display:flex;flex-direction:column;gap:16px;text-align:left;max-width:700px;margin:0 auto;font-style:normal;}
.bf-onboard-step{display:flex;align-items:flex-start;gap:16px;padding:14px 18px;background:rgba(255,200,80,.04);border:1px solid rgba(255,200,80,.1);border-radius:8px;}
.bf-onboard-n{font-family:'Cinzel',serif;font-size:18px;font-weight:700;color:var(--wax-bright);flex:none;width:28px;text-align:center;margin-top:2px;}
.bf-onboard-step div{font-family:var(--font-body);font-size:14px;line-height:1.65;color:rgba(255,255,255,.7);font-style:normal;}
.bf-onboard-step b{color:rgba(255,244,192,.95);font-weight:700;font-style:normal;}
.bf-quote-text b{color:rgba(240,160,32,.8);font-weight:400;font-style:normal;}

.bf-scan-cta{font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:.1em;padding:4px 10px;background:rgba(78,205,196,.1);border:1px solid rgba(78,205,196,.4);color:var(--signal);cursor:pointer;white-space:nowrap;transition:all .15s;}
.bf-scan-cta:hover{background:rgba(78,205,196,.2);border-color:var(--signal);}
.bf-counsel{font-family:'DM Serif Display',serif;font-size:15px;line-height:1.7;color:rgba(255,255,255,.5);font-style:italic;text-align:center;margin-bottom:10px;}

/* ── ascent band (prev · current · next) ── */
.bf-ascent{padding:12px 16px;margin-bottom:10px;border:1px solid rgba(200,165,80,.1);background:rgba(10,7,3,.4);}
.bf-ascent-say{font-family:'DM Serif Display',serif;font-style:italic;font-size:15px;line-height:1.55;color:rgba(255,255,255,.55);text-align:center;margin-bottom:12px;}
.bf-ascent-say b{color:var(--wax-bright);font-style:normal;}
.bf-ascent-track{display:flex;align-items:center;justify-content:center;gap:0;margin-bottom:11px;}
.bf-alv{font-family:var(--font-mono);letter-spacing:.05em;text-align:center;white-space:nowrap;}
.bf-alv.past,.bf-alv.next{font-size:12.5px;color:rgba(255,255,255,.32);text-transform:uppercase;flex:none;}
.bf-alv.now{font-family:'Cinzel',serif;font-weight:600;font-size:19px;color:var(--wax-bright);text-transform:uppercase;letter-spacing:.08em;padding:0 18px;position:relative;text-shadow:0 0 18px rgba(240,160,32,.4);}
.bf-alv.now .bf-alv-tag{display:block;font-family:var(--font-mono);font-size:8.5px;font-weight:400;letter-spacing:.18em;color:rgba(255,255,255,.4);text-shadow:none;margin-bottom:3px;text-transform:uppercase;}
.bf-aline{height:1px;width:44px;flex:none;background:linear-gradient(90deg,transparent,rgba(200,128,26,.7),transparent);}
.bf-ascent-bar{height:4px;background:rgba(255,255,255,.07);overflow:hidden;}
.bf-ascent-bar span{display:block;height:100%;background:linear-gradient(90deg,rgba(200,128,26,.9),var(--wax-bright));box-shadow:0 0 8px rgba(240,160,32,.5);}

.bf-bottom{display:flex;align-items:center;justify-content:space-between;gap:14px;padding-top:10px;border-top:1px solid rgba(200,165,80,.08);}
.bf-weather{display:flex;gap:12px;}
.bf-weather .wx{font-family:var(--font-mono);font-size:13px;letter-spacing:.06em;color:rgba(200,165,80,.55);display:flex;align-items:center;gap:4px;}
.bf-btn-primary{
  font-family:'Cinzel',serif;font-size:12.5px;letter-spacing:.13em;font-weight:600;text-transform:uppercase;
  padding:10px 20px;cursor:pointer;
  background:linear-gradient(135deg,rgba(200,128,26,.88),rgba(90,52,8,.95));
  color:rgba(255,240,160,.92);
  border:1px solid rgba(200,165,80,.38);
  box-shadow:0 0 16px rgba(200,128,26,.18);
  white-space:nowrap;transition:all .15s;
}
.bf-btn-primary:hover{filter:brightness(1.12);box-shadow:0 0 24px rgba(200,128,26,.3);}

/* RIGHT — slim identity controls, top-right of the brief */
.bf-right{
  position:absolute;z-index:5;top:16px;right:20px;width:230px;
  display:flex;flex-direction:column;gap:6px;
  padding:12px 14px;background:rgba(8,6,3,.6);border:1px solid rgba(200,165,80,.14);border-radius:8px;
  backdrop-filter:blur(4px);
}
.bf-r-label{font-family:'Cinzel',serif;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:rgba(210,175,90,.7);margin-bottom:2px;}
.bf-colony-name{
  font-family:'Cinzel',serif;font-size:17px;font-weight:600;letter-spacing:.06em;
  color:rgba(255,244,192,.85);line-height:1.1;
  cursor:text;outline:none;border-bottom:1px solid transparent;transition:border-color .15s;padding-bottom:2px;
}
.bf-colony-name:focus{border-color:rgba(200,165,80,.3);}
.bf-url-wrap{display:flex;align-items:center;background:rgba(255,255,255,.03);border:1px solid rgba(200,165,80,.1);}
.bf-url-pre{font-family:var(--font-mono);font-size:11.5px;color:rgba(78,205,196,.38);padding:5px 6px;border-right:1px solid rgba(200,165,80,.08);white-space:nowrap;}
.bf-url-in{font-family:var(--font-mono);font-size:11.5px;color:var(--signal);background:transparent;border:none;outline:none;padding:5px 7px;flex:1;min-width:0;letter-spacing:.04em;}
.bf-url-in::placeholder{color:rgba(78,205,196,.18);}

/* folded-in stat strip (replaces the orphaned panel's stats) */
.bf-foldstats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:rgba(200,165,80,.1);border:1px solid rgba(200,165,80,.12);margin-bottom:12px;}
.bf-fs{background:linear-gradient(165deg,rgba(16,12,6,.9),rgba(7,5,10,.95));padding:10px 6px;text-align:center;min-width:0;}
.bf-fs-v{font-family:'Cinzel',serif;font-size:clamp(14px,4vw,20px);font-weight:600;line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.bf-fs-k{font-family:var(--font-mono);font-size:10px;color:rgba(255,255,255,.4);letter-spacing:.03em;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.bf-stat{padding:7px 9px;background:rgba(255,255,255,.02);border:1px solid rgba(200,165,80,.07);position:relative;overflow:hidden;display:flex;flex-direction:column;gap:2px;min-width:0;}
.bf-stat::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:rgba(200,165,80,.35);}
.bf-stat-v{font-family:var(--font-display);font-weight:700;font-size:20px;line-height:1;letter-spacing:.03em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.bf-stat-k{font-family:var(--font-mono);font-size:12px;letter-spacing:.13em;text-transform:uppercase;color:rgba(255,255,255,.42);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* ── FOUR CARDS ── */
.bf-cards{
  display:grid;grid-template-columns:repeat(4,1fr);gap:12px;
  padding:8px 14px;
  background:var(--void);
  border-top:1px solid rgba(200,165,80,.08);
  min-height:220px;
}
.bf-card{
  position:relative;overflow:hidden;border-radius:2px;cursor:pointer;
  transition:transform .2s ease,box-shadow .2s ease;
  display:grid;grid-template-rows:1fr auto;
  min-height:0;
}
.bf-card:hover{transform:translateY(-3px);}
.bf-card-hex{position:absolute;inset:0;width:100%;height:100%;z-index:0;}
.bf-card-inner{position:relative;z-index:2;padding:12px 14px 0;}
.bf-card-bot{position:relative;z-index:2;padding:8px 14px 12px;border-top:1px solid rgba(255,255,255,.06);display:flex;align-items:flex-end;gap:8px;}

.bf-c-step{font-family:var(--font-mono);font-size:12px;letter-spacing:.15em;text-transform:uppercase;font-weight:600;margin-bottom:7px;display:inline-flex;align-items:center;gap:6px;padding:3px 8px;background:rgba(0,0,0,.65);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.1);}
.bf-c-title{font-family:var(--font-display);font-weight:700;font-size:24px;letter-spacing:.04em;line-height:.95;color:#fff;text-shadow:0 1px 10px rgba(0,0,0,.8);margin-bottom:3px;}
.bf-c-tag{font-size:13px;color:rgba(255,255,255,.45);line-height:1.5;}
.bf-c-items{display:flex;flex-direction:column;gap:2px;margin-top:7px;}
.bf-c-item{display:flex;align-items:center;gap:6px;padding:3px 6px;font-size:13px;background:rgba(0,0,0,.32);border-left:2px solid transparent;backdrop-filter:blur(4px);}
.bf-c-item.crit{border-color:#e05555;}.bf-c-item.warn{border-color:var(--warn);}.bf-c-item.pass{border-color:var(--ok);}
.bf-c-item.dead{border-color:var(--dead);}.bf-c-item.vp{border-color:rgba(255,208,60,.4);}.bf-c-item.dim{border-color:rgba(255,255,255,.08);}
.bf-c-item-n{flex:1;color:rgba(255,255,255,.78);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.bf-c-item-t{font-family:var(--font-mono);font-size:12px;letter-spacing:.05em;flex-shrink:0;padding:1px 4px;}
.bf-c-num{font-family:var(--font-display);font-weight:700;font-size:38px;line-height:1;letter-spacing:.02em;}
.bf-c-unit{font-family:var(--font-mono);font-size:12px;letter-spacing:.13em;font-weight:600;padding:3px 8px;background:rgba(0,0,0,.65);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.1);}
@keyframes bf-tendpulse{0%,100%{text-shadow:0 0 20px rgba(224,85,85,.5)}50%{text-shadow:0 0 40px rgba(224,85,85,.9),0 0 70px rgba(224,85,85,.3)}}

.bf-card--inspect{border:1px solid rgba(78,205,196,.55);outline:3px solid rgba(78,205,196,.15);outline-offset:3px;box-shadow:0 0 0 7px rgba(78,205,196,.05),0 0 26px rgba(78,205,196,.13),inset 0 0 0 1px rgba(78,205,196,.16);}
.bf-card--inspect .bf-c-step{color:#4ecdc4;border-color:rgba(78,205,196,.25);}
.bf-card--inspect .bf-c-num{color:#4ecdc4;text-shadow:0 0 22px rgba(78,205,196,.5);}
.bf-card--inspect .bf-c-unit{color:#4ecdc4;border-color:rgba(78,205,196,.25);}
.bf-card--inspect .bf-card-bot{border-color:rgba(78,205,196,.1);}
.bf-card--inspect:hover{border-color:rgba(78,205,196,.85);box-shadow:0 0 0 7px rgba(78,205,196,.08),0 0 38px rgba(78,205,196,.22),inset 0 0 0 1px rgba(78,205,196,.26);}

.bf-card--tend{border:1px solid rgba(224,85,85,.65);outline:3px solid rgba(224,85,85,.18);outline-offset:3px;box-shadow:0 0 0 7px rgba(224,85,85,.06),0 0 26px rgba(224,85,85,.17),inset 0 0 0 1px rgba(224,85,85,.18);}
.bf-card--tend .bf-c-step{color:#ff7070;border-color:rgba(224,85,85,.25);}
.bf-card--tend .bf-c-num{color:#e05555;}
.bf-card--tend .bf-c-unit{color:#ff7070;border-color:rgba(224,85,85,.25);}
.bf-card--tend .bf-card-bot{border-color:rgba(224,85,85,.1);}
.bf-card--tend:hover{border-color:rgba(224,85,85,.9);box-shadow:0 0 0 7px rgba(224,85,85,.1),0 0 38px rgba(224,85,85,.26),inset 0 0 0 1px rgba(224,85,85,.26);}

.bf-card--expand{border:1px solid rgba(255,208,60,.5);outline:3px solid rgba(255,208,60,.14);outline-offset:3px;box-shadow:0 0 0 7px rgba(255,208,60,.04),0 0 26px rgba(255,208,60,.11),inset 0 0 0 1px rgba(255,208,60,.14);}
.bf-card--expand .bf-c-step{color:#ffd060;border-color:rgba(255,208,60,.22);}
.bf-card--expand .bf-c-num{color:#ffd060;text-shadow:0 0 22px rgba(255,208,60,.4);}
.bf-card--expand .bf-c-unit{color:#ffd060;border-color:rgba(255,208,60,.22);}
.bf-card--expand .bf-card-bot{border-color:rgba(255,208,60,.08);}
.bf-card--expand:hover{border-color:rgba(255,208,60,.8);box-shadow:0 0 0 7px rgba(255,208,60,.07),0 0 38px rgba(255,208,60,.18),inset 0 0 0 1px rgba(255,208,60,.22);}

.bf-card--harvest{border:1px solid rgba(80,200,117,.5);outline:3px solid rgba(80,200,117,.14);outline-offset:3px;box-shadow:0 0 0 7px rgba(80,200,117,.04),0 0 26px rgba(80,200,117,.11),inset 0 0 0 1px rgba(80,200,117,.14);}
.bf-card--harvest .bf-c-step{color:#50c875;border-color:rgba(80,200,117,.22);}
.bf-card--harvest .bf-c-num{color:#50c875;text-shadow:0 0 22px rgba(80,200,117,.4);}
.bf-card--harvest .bf-c-unit{color:#50c875;border-color:rgba(80,200,117,.22);}
.bf-card--harvest .bf-card-bot{border-color:rgba(80,200,117,.08);}
.bf-card--harvest:hover{border-color:rgba(80,200,117,.8);box-shadow:0 0 0 7px rgba(80,200,117,.07),0 0 38px rgba(80,200,117,.18),inset 0 0 0 1px rgba(80,200,117,.22);}

/* ── HIVE BAND in briefing ── */
.bf-hive{
  position:relative;
  background:var(--void);
  border-top:1px solid rgba(200,165,80,.08);
}
.bf-hive-label{
  position:absolute;top:0;left:0;right:0;z-index:3;
  display:flex;align-items:flex-start;justify-content:space-between;
  padding:14px 20px 28px;
  background:linear-gradient(180deg,rgba(4,2,10,.92) 0%,rgba(4,2,10,.7) 45%,transparent 100%);
  pointer-events:none;
}
.bf-hive-titlewrap{display:flex;flex-direction:column;gap:3px;}
.bf-hive-colonyname{font-family:'Cinzel',serif;font-weight:700;font-size:32px;letter-spacing:.04em;line-height:1.05;
  background:linear-gradient(170deg,rgba(255,246,200,.98),rgba(255,205,70,.9) 55%,rgba(200,140,20,.82));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  filter:drop-shadow(0 0 22px rgba(200,128,26,.35));}
.bf-hive-eyebrow{font-family:var(--font-mono);font-size:12px;letter-spacing:.2em;color:rgba(225,150,40,.78);text-transform:uppercase;}
.apy-hive-label{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;}
.apy-hive-eyebrow{font-family:var(--font-mono);font-size:12px;letter-spacing:.2em;color:rgba(225,150,40,.78);text-transform:uppercase;}
.bf-hive-count{font-family:var(--font-mono);font-size:12.5px;color:rgba(255,255,255,.55);}
.bf-hive-count span{color:rgba(255,255,255,.4);}
.bf-hive-canvas-wrap{
  width:100%;height:660px;
  position:relative;overflow:hidden;
}
#bf-hive-canvas{display:block;width:100%;height:100%;}

/* ── VITAL STRIP ── */
.bf-strip{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid rgba(200,165,80,.08);background:rgba(4,2,10,.96);}
.bf-sv{padding:9px 18px;border-right:1px solid var(--border-dim);display:flex;align-items:center;gap:9px;cursor:pointer;transition:background .15s;}
.bf-sv:hover{background:rgba(255,255,255,.02);}
.bf-sv:last-child{border-right:none;}
.bf-sv-v{font-family:var(--font-display);font-weight:700;font-size:18px;line-height:1;letter-spacing:.04em;}
.bf-sv-r{display:flex;flex-direction:column;gap:1px;}
.bf-sv-k{font-family:var(--font-mono);font-size:12px;letter-spacing:.13em;text-transform:uppercase;color:rgba(255,255,255,.42);}
.bf-sv-s{font-size:12.5px;color:rgba(255,255,255,.5);}

/* MISSIONS */
.mchips{ display:flex; flex-wrap:wrap; gap:7px; }
.mchip{ font-family:var(--font-mono); font-size:13.5px; letter-spacing:.03em; padding:7px 11px; border:1px solid var(--border-dim); background:linear-gradient(165deg,#1a1f26,#101319); color:var(--text-secondary); cursor:pointer; transition:all .14s; }
.mchip:hover{ border-color:var(--wax); color:var(--wax-bright); }
.mchip.on{ border-color:var(--wax); color:#1a1107; background:linear-gradient(180deg,#ffd45a,#e89a1e); font-weight:700; }
.mchip b{ opacity:.8; font-weight:700; }
.mchip--security{ border-color:rgba(200,128,26,.4); color:rgba(255,200,80,.8); background:linear-gradient(165deg,rgba(200,128,26,.12),rgba(120,70,8,.1)); }
.mchip--security:hover{ border-color:rgba(255,200,80,.7); color:var(--wax-bright); background:linear-gradient(165deg,rgba(200,128,26,.2),rgba(120,70,8,.15)); }
.mchip-divider{ display:inline-block; width:1px; align-self:stretch; margin:2px 8px; background:linear-gradient(180deg,transparent,rgba(190,242,100,.3),transparent); }
.mchip--addon{ border-color:rgba(190,242,100,.3); color:rgba(190,242,100,.75); background:linear-gradient(165deg,rgba(190,242,100,.1),rgba(190,242,100,.03)); }
.mchip--addon:hover{ border-color:#bef264; color:#bef264; background:linear-gradient(165deg,rgba(190,242,100,.2),rgba(190,242,100,.06)); }
.mchip--addon.on{ border-color:#bef264; color:#0c0e12; background:linear-gradient(180deg,#d4ff8a,#bef264); font-weight:700; }
.mgrid{ display:grid; grid-template-columns:repeat(2,1fr); gap:12px; }
.mcard{ position:relative; padding:15px 16px; background:linear-gradient(165deg,#1a1f26,#160e07); border:1px solid var(--border); cursor:pointer; transition:transform .16s, box-shadow .16s, border-color .16s; overflow:hidden; }
.mcard::before{ content:''; position:absolute; left:0; right:0; bottom:0; height:0; background:linear-gradient(180deg, transparent, rgba(255,182,39,.12) 60%, rgba(255,182,39,.22)); transition:height .5s cubic-bezier(.2,.8,.2,1); pointer-events:none; }
.mcard:hover{ transform:translateY(-2px); border-color:var(--wax); box-shadow:0 12px 26px rgba(0,0,0,.4), 0 0 20px rgba(255,182,39,calc(.12*var(--glow))); }
.mcard__head{ display:flex; justify-content:space-between; align-items:center; position:relative; z-index:1; }
.mcard__surface{ font-family:var(--font-mono); font-size:13px; letter-spacing:.1em; text-transform:uppercase; color:var(--text-dim); }
.mcard__living{ font-family:var(--font-mono); font-size:13px; color:var(--signal); letter-spacing:.04em; }
.mcard__title{ font-family:var(--font-display); font-weight:700; font-size:15px; margin:7px 0 12px; position:relative; z-index:1; }
.mcard__foot{ display:flex; align-items:center; justify-content:space-between; position:relative; z-index:1; }
.mcard__vp{ font-family:var(--font-mono); font-weight:700; font-size:14px; color:var(--wax-bright); }
.mcard__cta{ font-family:var(--font-mono); font-size:13.5px; letter-spacing:.06em; color:var(--text-secondary); }
.mcard__cta--scan{ color:#4ecdc4; }
.mcard__done{ font-family:var(--font-mono); font-size:13.5px; color:var(--ok); letter-spacing:.04em; }
.mcard.done{ border-color:var(--wax); }
.mcard.done::before{ height:100%; }
.mcard.done .mcard__title{ color:var(--royal); }

/* ── upgraded Briefing (the Keeper) ── */
.briefing--hero{ padding:26px 28px; border-color:var(--signal-dim); background:linear-gradient(160deg, rgba(22,61,56,.6), rgba(13,14,12,.92) 70%); box-shadow: inset 0 1px 0 rgba(92,225,201,.28), 0 0 calc(34px*var(--glow)) rgba(92,225,201,.14); }
.briefing--hero .briefing__hi{ font-size:30px; margin:14px 0 12px; letter-spacing:-.01em; }
.briefing__report{ position:relative; max-width:64ch; }
.briefing__report p{ font-family:var(--font-body); font-size:14px; line-height:1.62; color:var(--text-secondary); margin-bottom:7px; position:relative; }
.briefing__counsel{ padding-left:13px; border-left:2px solid var(--royal); color:var(--text-primary) !important; font-style:italic; margin-top:10px !important; }

/* ── 5-stage stepper ── */
.stepper{ display:flex; align-items:center; gap:0; margin-top:14px; flex-wrap:wrap; }
.step{ display:flex; flex-direction:column; align-items:center; gap:3px; min-width:60px; opacity:.55; transition:opacity .2s; }
.step__line{ flex:1; height:1px; min-width:12px; background:linear-gradient(90deg, var(--border), var(--border-dim)); margin-top:-18px; }
.step__dot{ width:13px; height:13px; border-radius:50%; border:2px solid var(--sc); background:transparent; }
.step__lbl{ font-family:var(--font-mono); font-size:12.5px; letter-spacing:.07em; color:var(--text-dim); text-transform:uppercase; }
.step__n{ font-family:var(--font-mono); font-size:13px; color:var(--text-secondary); font-weight:700; }
.step--done{ opacity:1; } .step--done .step__dot{ background:var(--sc); box-shadow:0 0 9px var(--sc); }
.step--cur{ opacity:1; } .step--cur .step__dot{ background:var(--sc); box-shadow:0 0 12px var(--sc); animation:pip 2s ease-in-out infinite; } .step--cur .step__lbl{ color:var(--sc); }
.step--empty{ opacity:.3; }

/* ── stage windows ── */
.stage__head{ display:grid; grid-template-columns:auto auto 1fr; align-items:center; gap:10px; margin:16px 0 10px; }
.stage__num{ width:22px; height:22px; display:flex; align-items:center; justify-content:center; font-family:var(--font-mono); font-weight:700; font-size:13.5px; color:#11100c; background:var(--sc); border-radius:50%; box-shadow:0 0 10px var(--sc); }
.stage__name{ font-family:var(--font-display); font-weight:700; font-size:15px; letter-spacing:.06em; color:var(--sc); }
.stage__prog{ font-family:var(--font-mono); font-size:13.5px; color:var(--text-dim); justify-self:end; }
.stage__bar{ grid-column:1 / -1; height:3px; background:#0d0805; border-radius:3px; overflow:hidden; }
.stage__bar > i{ display:block; height:100%; background:var(--sc); box-shadow:0 0 8px var(--sc); border-radius:3px; transition:width .5s; }
.mcard__perm{ font-family:var(--font-mono); font-size:13px; color:var(--signal-dim); letter-spacing:.04em; }

/* ── decay dot color (right rail) ── */
.supp__item::before{ background:var(--sd, var(--danger)) !important; box-shadow:0 0 6px var(--sd, var(--danger)) !important; }

/* ── immortal status shimmer ── */
.hero__state.immortal{ background:linear-gradient(110deg,#5ce1c9,#8a7dff 40%,#ffd966 75%,#5ce1c9); background-size:200% auto; -webkit-background-clip:text; background-clip:text; color:transparent; animation:imm 6s linear infinite; }
@keyframes imm{ to{ background-position:200% center; } }

/* ── MISSION DETAIL DRAWER ── */
.md-overlay{ position:fixed; inset:0; z-index:100; background:rgba(6,4,2,.75); backdrop-filter:blur(4px); display:flex; justify-content:flex-end; opacity:0; transition:opacity .28s ease; pointer-events:none; }
.md-overlay.open{ opacity:1; pointer-events:all; }
.md-drawer{ width:min(640px,100vw); height:100%; overflow-y:auto; background:linear-gradient(160deg,#1f1408,#110c06 40%,#0e0c0a); border-left:1px solid var(--border); box-shadow:-20px 0 60px rgba(0,0,0,.7), inset 1px 0 0 rgba(255,200,90,.07); transform:translateX(100%); transition:transform .32s cubic-bezier(.22,.8,.22,1); padding:28px 32px 48px; display:flex; flex-direction:column; gap:18px; }
.md-overlay.open .md-drawer{ transform:translateX(0); }
.md__header{ display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.md__meta{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.md__surface{ font-family:var(--font-mono); font-size:13.5px; letter-spacing:.08em; text-transform:uppercase; }
.md__phase{ font-family:var(--font-mono); font-size:13px; letter-spacing:.1em; padding:3px 8px; border:1px solid; text-transform:uppercase; }
.md__vp{ font-family:var(--font-mono); font-weight:700; font-size:13px; color:var(--royal); }
.md__effort{ font-family:var(--font-mono); font-size:13px; color:var(--text-dim); letter-spacing:.06em; }
.md__time{ font-family:var(--font-mono); font-size:13px; color:var(--text-dim); }
.md__close{ width:32px; height:32px; border:1px solid var(--border); background:transparent; color:var(--text-dim); font-size:14px; cursor:pointer; flex-shrink:0; display:flex; align-items:center; justify-content:center; }
.md__close:hover{ border-color:var(--wax); color:var(--wax-bright); }
.md__title{ font-family:var(--font-display); font-weight:700; font-size:24px; line-height:1.2; color:var(--honey-hi); }
.md__desc{ font-size:14px; line-height:1.65; color:var(--text-secondary); padding:12px 16px; background:rgba(255,182,39,.06); border-left:3px solid var(--wax); }
.md__decay{ font-family:var(--font-mono); font-size:14px; color:var(--warn); padding:8px 12px; border:1px solid rgba(255,170,51,.3); background:rgba(255,170,51,.06); }
.md__decay.perm{ color:var(--signal); border-color:rgba(92,225,201,.25); background:rgba(92,225,201,.05); }
.md__section-head{ font-family:var(--font-mono); font-size:13.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--text-label); padding-bottom:8px; border-bottom:1px solid var(--border-dim); margin-top:4px; }
.md__steps{ display:flex; flex-direction:column; gap:2px; }
.md__step{ display:grid; grid-template-columns:28px 1fr; gap:12px; align-items:start; padding:11px 0; border-bottom:1px solid var(--border-dim); }
.md__step:last-child{ border-bottom:none; }
.md__step-n{ width:28px; height:28px; border-radius:50%; background:linear-gradient(180deg,#caa24a,#8a5a18); display:flex; align-items:center; justify-content:center; font-family:var(--font-mono); font-weight:700; font-size:13.5px; color:#1a1107; flex-shrink:0; box-shadow:0 0 10px rgba(255,182,39,.3); }
.md__step-body{ font-size:13.5px; line-height:1.6; color:var(--text-primary); padding-top:4px; }
.md__links{ display:flex; flex-direction:column; gap:8px; }
.md__link{ display:flex; align-items:center; gap:10px; padding:11px 14px; border:1px solid var(--border-dim); background:linear-gradient(165deg,#1c1409,#101319); color:var(--text-secondary); font-size:13px; text-decoration:none; transition:all .15s; }
.md__link:hover{ border-color:var(--signal-dim); color:var(--signal); transform:translateX(3px); }
.md__link-icon{ font-size:14px; color:var(--signal-dim); }
.md__complete-bar{ margin-top:8px; padding:20px; background:linear-gradient(150deg, rgba(255,182,39,.1), rgba(31,20,9,.6) 55%); border:1px solid rgba(255,182,39,.3); display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; box-shadow:inset 0 1px 0 rgba(255,210,120,.2), 0 0 20px rgba(255,182,39,.08); }
.md__verify-type{ display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); font-size:12px; letter-spacing:.02em;
  padding:6px 12px; border-radius:20px; margin-bottom:12px; }
.md__verify-type-icon{ font-size:12px; }
.md__verify-type--auto{ color:var(--scan-blue,#4f9dff); background:color-mix(in srgb, var(--scan-blue,#4f9dff) 10%, transparent);
  border:1px solid color-mix(in srgb, var(--scan-blue,#4f9dff) 35%, transparent); }
.md__verify-type--manual{ color:var(--wax-bright); background:rgba(255,182,39,.08); border:1px solid rgba(255,182,39,.3); }
.md__verify-bar{ margin-top:8px; padding:18px 20px; border:1px solid; border-radius:6px; display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.md__verify-icon{ font-size:22px; flex:none; font-weight:700; }
.md__verify-body{ flex:1; min-width:180px; }
.md__verify-label{ font-family:var(--font-mono); font-size:13px; font-weight:700; letter-spacing:.02em; }
.md__verify-sub{ font-size:12.5px; color:rgba(255,255,255,.42); margin-top:4px; line-height:1.5; }
.md__checkbox-wrap{ display:flex; align-items:center; gap:10px; cursor:pointer; }
.md__checkbox-wrap input{ display:none; }
.md__checkbox-box{ width:20px; height:20px; border:2px solid var(--border); background:transparent; flex-shrink:0; display:flex; align-items:center; justify-content:center; transition:all .2s; }
.md__checkbox-wrap.checked .md__checkbox-box{ background:var(--wax); border-color:var(--wax-bright); box-shadow:0 0 12px rgba(255,182,39,.5); }
.md__checkbox-wrap.checked .md__checkbox-box::after{ content:'✓'; font-size:14px; color:#1a1107; font-weight:700; }
.md__checkbox-txt{ font-family:var(--font-mono); font-size:14px; color:var(--text-secondary); }
.md__checkbox-wrap.checked .md__checkbox-txt{ color:var(--ok); }
.mcard.flash{ animation:mcardFlash 1.4s ease-out; }
@keyframes mcardFlash{ 0%,100%{ box-shadow:none; } 20%{ box-shadow:0 0 0 3px var(--wax-bright), 0 0 30px rgba(255,182,39,.5); border-color:var(--wax-bright); } }

/* ── APIARY ── */
.apy-header{ display:flex; justify-content:space-between; align-items:flex-start; padding:22px 28px; background:linear-gradient(165deg,rgba(20,50,44,.6),#130c06); border:1px solid var(--signal-dim); margin-bottom:0; }
.apy-header__label{ font-family:var(--font-mono); font-size:13.5px; letter-spacing:.15em; color:var(--signal); display:flex; align-items:center; gap:7px; margin-bottom:8px; }
.apy-header__title{ font-family:var(--font-display); font-weight:700; font-size:26px; color:var(--honey-hi); margin-bottom:6px; }
.apy-header__sub{ font-size:13px; color:var(--text-secondary); max-width:52ch; line-height:1.6; }
.apy-header__actions{ display:flex; gap:10px; margin-top:14px; flex-wrap:wrap; }
.apy-act{ font-family:var(--font-mono); font-size:12.5px; letter-spacing:.08em; padding:10px 16px; cursor:pointer; display:inline-flex; align-items:center; gap:8px; transition:all .15s; border:1px solid; background:transparent; }
.apy-act--new{ color:var(--wax-bright); border-color:rgba(255,182,39,.4); }
.apy-act--new:hover{ background:rgba(255,182,39,.1); border-color:var(--wax-bright); }
.apy-act--new .apy-act-hex{ font-size:12px; opacity:.7; }
.apy-act--del{ color:rgba(224,110,90,.85); border-color:rgba(224,110,90,.32); }
.apy-act--del:hover:not(:disabled){ background:rgba(224,110,90,.1); border-color:rgba(224,110,90,.7); color:#e8836b; }
.apy-act--del:disabled{ opacity:.3; cursor:not-allowed; }
.apy-act--start-over{ color:rgba(255,200,80,.7); border-color:rgba(255,200,80,.25); }
.apy-act--start-over:hover{ background:rgba(255,200,80,.08); border-color:rgba(255,200,80,.5); color:var(--wax-bright); }

/* delete-colony type-to-confirm modal */
.apy-modal{ position:fixed; inset:0; z-index:200; display:flex; align-items:center; justify-content:center; }
.apy-modal[hidden]{ display:none; }
.apy-modal__backdrop{ position:absolute; inset:0; background:rgba(4,3,6,.72); backdrop-filter:blur(3px); }
.apy-modal__box{ position:relative; z-index:1; width:min(440px,92vw); background:linear-gradient(165deg,#1a1206,#120b14); border:1px solid rgba(224,110,90,.3); box-shadow:0 24px 70px rgba(0,0,0,.6),0 0 40px rgba(224,110,90,.1); padding:26px 26px 22px; }
.apy-modal__title{ font-family:'Cinzel',serif; font-size:20px; font-weight:600; color:#e8836b; margin-bottom:12px; letter-spacing:.02em; }
.apy-modal__body{ font-size:14px; line-height:1.6; color:var(--text-secondary); margin-bottom:18px; }
.apy-modal__body b{ color:rgba(255,244,192,.9); }
.apy-modal__confirm-label{ font-family:var(--font-mono); font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--text-dim); margin-bottom:7px; }
.apy-modal__input{ width:100%; font-family:var(--font-mono); font-size:14px; color:var(--text-primary); background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.14); padding:10px 12px; outline:none; margin-bottom:18px; letter-spacing:.03em; }
.apy-modal__input:focus{ border-color:rgba(224,110,90,.5); }
.apy-modal__actions{ display:flex; gap:10px; justify-content:flex-end; }
.apy-modal__cancel{ font-family:var(--font-mono); font-size:12.5px; letter-spacing:.06em; padding:10px 18px; cursor:pointer; background:transparent; border:1px solid var(--border); color:var(--text-secondary); }
.apy-modal__cancel:hover{ border-color:var(--text-dim); color:var(--text-primary); }
.apy-modal__go{ font-family:var(--font-mono); font-size:12.5px; font-weight:700; letter-spacing:.06em; padding:10px 20px; cursor:pointer; background:#c0492e; border:1px solid #e8836b; color:#fff; transition:all .15s; }
.apy-modal__go:hover:not(:disabled){ background:#e05540; }
.apy-modal__go:disabled{ opacity:.35; cursor:not-allowed; background:rgba(224,110,90,.2); border-color:rgba(224,110,90,.3); }
.apy-header__right{ text-align:right; }
.apy-header__count{ font-family:var(--font-display); font-weight:700; font-size:52px; color:var(--wax-bright); line-height:1; }
.apy-header__count-label{ font-family:var(--font-mono); font-size:13.5px; color:var(--text-dim); letter-spacing:.1em; text-transform:uppercase; }

.apy-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:0; border-top:1px solid var(--border); }

.apy-card{ background:
    linear-gradient(170deg,#1c1208,#110c06),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='48' viewBox='0 0 56 48'%3E%3Cg fill='none' stroke='%23ffb627' stroke-opacity='0.05' stroke-width='1'%3E%3Cpath d='M14 0l14 8v16l-14 8L0 24V8z'/%3E%3Cpath d='M42 0l14 8v16l-14 8-14-8V8z'/%3E%3Cpath d='M28 24l14 8v16l-14 8-14-8V32z'/%3E%3C/g%3E%3C/svg%3E");
  background-size:cover, 56px 48px;
  border:1px solid var(--border); border-radius:4px; overflow:hidden; }
.apy-card--active{ background:
    linear-gradient(170deg,#231608,#160e05),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='48' viewBox='0 0 56 48'%3E%3Cg fill='none' stroke='%23ffcc44' stroke-opacity='0.1' stroke-width='1'%3E%3Cpath d='M14 0l14 8v16l-14 8L0 24V8z'/%3E%3Cpath d='M42 0l14 8v16l-14 8-14-8V8z'/%3E%3Cpath d='M28 24l14 8v16l-14 8-14-8V32z'/%3E%3C/g%3E%3C/svg%3E");
  background-size:cover, 56px 48px;
  border:1px solid var(--wax-bright); position:relative; z-index:1;
  box-shadow:inset 0 0 0 1px rgba(255,210,100,.25), 0 0 30px rgba(255,182,39,.14), 0 0 0 3px rgba(255,182,39,.06); }

.apy-card__crown{ display:flex; align-items:center; gap:3px; padding:14px 20px 0; position:relative; }
.apy-card__hex{ font-size:18px; color:var(--wax); opacity:.25; }
.apy-card--active .apy-card__hex{ opacity:.6; }
.apy-card__active-dot{ width:7px; height:7px; border-radius:50%; background:var(--ok); box-shadow:0 0 8px var(--ok); margin-left:auto; animation:pulse 2s infinite; }
@keyframes pulse{ 0%,100%{ opacity:1; } 50%{ opacity:.4; } }

.apy-card__body{ padding:10px 20px 20px; display:flex; flex-direction:column; gap:14px; }

.apy-field-label{ font-family:var(--font-mono); font-size:13px; letter-spacing:.12em; text-transform:uppercase; color:var(--text-dim); margin-bottom:5px; }
.apy-field-sub{ color:var(--text-dim); font-size:12.5px; text-transform:none; letter-spacing:0; }

.apy-name{ font-family:var(--font-display); font-weight:700; font-size:20px; color:var(--honey-hi); outline:none; border-bottom:1px solid transparent; padding-bottom:3px; cursor:text; transition:border-color .15s,color .15s; background:transparent; }
.apy-name:hover{ border-bottom-color:rgba(255,182,39,.3); }
.apy-name:focus{ border-bottom-color:var(--wax); color:var(--royal); }
.apy-name[contenteditable]:empty:before{ content:attr(placeholder); color:var(--text-dim); font-weight:400; }

.apy-url-row{ display:flex; align-items:center; background:rgba(0,0,0,.35); border:1px solid var(--border-dim); transition:border-color .15s; }
.apy-url-row:focus-within{ border-color:var(--wax); box-shadow:0 0 0 1px rgba(255,182,39,.2); }
.apy-url-pre{ font-family:var(--font-mono); font-size:13.5px; color:var(--text-dim); padding:9px 8px 9px 12px; white-space:nowrap; border-right:1px solid var(--border-dim); }
.apy-url-input{ flex:1; background:transparent; border:none; outline:none; font-family:var(--font-mono); font-size:14px; color:var(--text-primary); padding:9px 10px; min-width:0; }
.apy-url-input::placeholder{ color:var(--text-dim); }
.apy-scan-btn{ font-family:var(--font-mono); font-size:13px; letter-spacing:.08em; padding:9px 12px; background:rgba(255,182,39,.12); border:none; border-left:1px solid rgba(255,182,39,.3); color:var(--wax-bright); cursor:pointer; white-space:nowrap; transition:background .15s; }
.apy-scan-btn:hover{ background:rgba(255,182,39,.22); }
.apy-scan-btn:disabled{ background:rgba(255,255,255,.04); color:rgba(255,255,255,.35); cursor:default; }
.apy-scan-btn:disabled:hover{ background:rgba(255,255,255,.04); }

.apy-stats-row{ display:grid; grid-template-columns:repeat(4,1fr); gap:8px; }
.apy-stat-block{ text-align:center; padding:8px 4px; border:1px solid var(--border-dim); background:rgba(255,255,255,.02); }
.apy-stat-v{ display:block; font-family:var(--font-display); font-weight:700; font-size:15px; color:var(--wax-bright); }
.apy-stat-k{ display:block; font-family:var(--font-mono); font-size:12.5px; color:var(--text-dim); text-transform:uppercase; letter-spacing:.06em; margin-top:2px; }

.apy-hbar{ display:flex; gap:3px; align-items:center; }
.apy__hcell{ font-size:14px; color:var(--border); transition:color .2s; }
.apy__hcell.on{ color:var(--wax); text-shadow:0 0 8px rgba(255,182,39,.6); }

.apy-card__actions{ display:flex; }
.apy-card__actions .btn{ flex:1; width:100%; }

.apy-new-wrap{ border-top:1px solid var(--border); border-bottom:1px solid var(--border); }
.apy-new-btn{ width:100%; background:transparent; border:none; color:var(--text-dim); font-family:var(--font-mono); font-size:14px; letter-spacing:.1em; padding:18px 24px; text-align:left; cursor:pointer; display:flex; align-items:center; gap:12px; transition:all .15s; }
.apy-new-btn:hover{ color:var(--wax); background:rgba(255,182,39,.04); }
.apy-new-hex{ font-size:20px; }

/* ── DIAGNOSTICS ── */
.apy-scan-output{ width:100%; margin-top:10px; }
.apy-scan-output:empty{ margin-top:0; }
.apy-scan-inline{ max-height:340px; overflow-y:auto; border-radius:6px; }
.apy-scan-jumplink{ margin-bottom:8px; }
.apy-scan-jumplink__btn{ width:100%; font-family:var(--font-mono); font-size:11px; letter-spacing:.06em; padding:9px 12px;
  background:rgba(78,205,196,.1); border:1px solid rgba(78,205,196,.4); color:#8fe6de; cursor:pointer; border-radius:5px; transition:all .15s; }
.apy-scan-jumplink__btn:hover{ background:rgba(78,205,196,.18); }
.diag-panel{ border-top:1px solid var(--border); width:100%; }
.diag-header{ display:flex; justify-content:space-between; align-items:center; padding:18px 24px; background:linear-gradient(90deg,rgba(255,182,39,.08),transparent); border-bottom:1px solid var(--border); gap:24px; }
.diag-title{ font-family:var(--font-mono); font-size:13px; letter-spacing:.12em; color:var(--wax-bright); }
.diag-domain{ font-family:var(--font-display); font-size:20px; font-weight:700; color:var(--honey-hi); margin-top:3px; }
.diag-progress{ text-align:right; min-width:200px; }
.diag-scanning{ font-family:var(--font-mono); font-size:13.5px; color:var(--signal); display:block; margin-bottom:6px; }
.diag-pbar{ height:3px; background:rgba(255,255,255,.08); border-radius:2px; overflow:hidden; }
.diag-pbar-fill{ height:100%; background:linear-gradient(90deg,var(--wax),var(--wax-bright)); transition:width .4s ease; border-radius:2px; }
.diag-sections{ display:flex; flex-direction:column; width:100%; }
.diag-section{ width:100%; border-bottom:1px solid var(--border); }
.diag-section__head{ font-family:var(--font-mono); font-size:13.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--text-label); padding:12px 24px 10px; background:rgba(0,0,0,.2); border-bottom:1px solid var(--border-dim); display:flex; justify-content:space-between; align-items:center; }
.diag-section__left{ display:flex; align-items:center; gap:10px; }
.scope-badge{ font-family:var(--font-mono); font-size:9.5px; letter-spacing:.04em; text-transform:none; font-weight:700; padding:2px 8px; border-radius:10px; cursor:help; }
.scope-badge--wide{ color:var(--ok); background:rgba(126,217,87,.12); border:1px solid rgba(126,217,87,.3); }
.scope-badge--home{ color:var(--warn); background:rgba(255,170,51,.12); border:1px solid rgba(255,170,51,.3); }
.diag-section__count{ color:var(--text-dim); font-size:13px; letter-spacing:.06em; }
.diag-section__grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); align-items:stretch; gap:10px; padding:14px; width:100%; }
.diag-card{
  height:100%; padding:18px 20px; border-radius:8px; border:1px solid var(--border-dim);
  background:linear-gradient(170deg,#161009,#110c06);
  display:flex; flex-direction:column; gap:8px;
  transition:border-color .15s, transform .15s, box-shadow .15s;
}
.diag-card:hover{ border-color:rgba(255,255,255,.16); transform:translateY(-1px); box-shadow:0 4px 16px rgba(0,0,0,.25); }
.diag-card--pass{ background:linear-gradient(170deg,#0d1f13,#110c06); }
.diag-card--warn{ background:linear-gradient(170deg,#211705,#110c06); }
.diag-card--fail{ background:linear-gradient(170deg,#211010,#110c06); }
/* severity — deliberately louder than a routine fail/warn. critical gets
   a real border and glow so it visually jumps off the grid; high gets a
   quieter but still distinct treatment. medium/low intentionally get no
   extra card styling — the point is that only genuine emergencies stand
   out, not that every non-pass check competes for attention. */
.diag-card--sev-critical{ border:1.5px solid rgba(255,94,94,.55); box-shadow:0 0 0 1px rgba(255,94,94,.15), 0 0 20px rgba(255,94,94,.12); }
.diag-card--sev-high{ border:1px solid rgba(255,170,51,.4); }
.diag-sev{ font-family:var(--font-mono); font-size:10.5px; font-weight:700; letter-spacing:.08em; padding:2px 7px; border-radius:3px; flex-shrink:0; }
.diag-sev--critical{ color:#fff; background:var(--danger); }
.diag-sev--high{ color:var(--void); background:var(--warn); }
.diag-card__top{ display:flex; align-items:center; gap:8px; }
.diag-card__icon{ font-size:15px; flex-shrink:0; }
.diag-card__label{ font-family:var(--font-mono); font-size:12.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--text-dim); flex:1; line-height:1.35; }
.diag-card__badge{ font-family:var(--font-mono); font-size:11.5px; letter-spacing:.07em; padding:2px 7px; border-radius:3px; border:1px solid; flex-shrink:0; }
.diag-badge--scanning{ color:var(--text-dim); border-color:var(--border-dim); animation:blink 1.2s infinite; }
.diag-badge--pass{ color:var(--ok); border-color:rgba(92,217,126,.4); background:rgba(92,217,126,.08); }
.diag-badge--warn{ color:var(--warn); border-color:rgba(255,170,51,.4); background:rgba(255,170,51,.08); }
.diag-badge--fail{ color:var(--danger); border-color:rgba(255,94,94,.4); background:rgba(255,94,94,.08); }
.diag-card__value{ font-family:var(--font-display); font-weight:700; font-size:23px; color:var(--wax-bright); line-height:1.15; }
.diag-card__value.diag-card__scanning{ font-size:14px; color:var(--text-dim); font-family:var(--font-mono); font-weight:400; }
.diag-card__unit{ font-size:14px; font-family:var(--font-mono); color:var(--text-dim); font-weight:400; margin-left:2px; }
.diag-card__metrics{ display:flex; flex-wrap:wrap; gap:4px; }
.diag-metric{ font-family:var(--font-mono); font-size:12.5px; color:var(--text-secondary); background:rgba(255,255,255,.04); border:1px solid var(--border-dim); border-radius:3px; padding:2px 6px; }

/* ── Extended Diagnostics — deliberately its own visual identity
   (violet), separate divider, collapsed by default. Not the same
   concept as the Local/Ecommerce add-on split (that's business-type
   relevance; this is priority tier), so it gets its own color rather
   than reusing chartreuse. ── */
.ext-diag{ margin-top:22px; padding:18px 4px 0; border-top:1px dashed rgba(138,125,255,.28); }
.ext-diag__head{ display:flex; align-items:center; gap:10px; cursor:pointer; list-style:none; font-family:var(--font-mono); font-size:13px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--iris); }
.ext-diag__head::-webkit-details-marker{ display:none; }
.ext-diag__head::before{ content:'▸'; font-size:11px; transition:transform .15s; }
.ext-diag[open] .ext-diag__head::before{ transform:rotate(90deg); }
.ext-diag__dot{ width:7px; height:7px; border-radius:50%; background:var(--iris); flex:none; }
.ext-diag__count{ margin-left:auto; margin-right:2px; flex-shrink:0; color:rgba(138,125,255,.6); font-weight:400; }
.ext-diag__sub{ font-size:12.5px; color:var(--text-dim); margin:10px 0 14px; line-height:1.6; max-width:560px; }
.ext-diag__rows{ display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); align-items:stretch; gap:10px; }
.ext-diag-row{
  display:flex; align-items:flex-start; gap:12px; padding:16px 18px; border-radius:8px;
  background:linear-gradient(170deg,#161009,#110c06); border:1px solid var(--border-dim);
  cursor:pointer; transition:border-color .15s, transform .15s, box-shadow .15s;
}
.ext-diag-row:hover{ border-color:rgba(138,125,255,.35); transform:translateY(-1px); box-shadow:0 4px 16px rgba(0,0,0,.25); background:linear-gradient(170deg,#181229,#110c06); }
.ext-diag-row--done{ opacity:.55; }
.ext-diag-check{ width:20px; height:20px; border-radius:5px; border:1.5px solid; flex:none; display:flex; align-items:center; justify-content:center; margin-top:1px; }
.ext-diag-title{ font-size:13.5px; color:rgba(255,255,255,.88); margin-bottom:8px; line-height:1.4; }
.ext-diag-tag{ font-family:var(--font-mono); font-size:9.5px; letter-spacing:.04em; padding:2px 7px; border-radius:3px; border:1px solid; margin-right:8px; }
.ext-diag-time{ font-family:var(--font-mono); font-size:10.5px; color:rgba(255,255,255,.3); }
.ext-diag-arrow{ color:rgba(255,255,255,.2); font-size:13px; flex:none; margin-top:2px; transition:transform .15s, color .15s; }
.ext-diag-row:hover .ext-diag-arrow{ color:var(--iris); transform:translateX(2px); }

/* ── teaser — prominent, near the top, so Extended Diagnostics is never
   discovered only by scrolling all the way to the bottom ── */
.ext-diag-teaser{ display:flex; align-items:center; gap:12px; padding:14px 18px; margin:16px 0; background:rgba(138,125,255,.08); border:1px solid rgba(138,125,255,.28); border-radius:6px; cursor:pointer; transition:background .15s, border-color .15s; }
.ext-diag-teaser:hover{ background:rgba(138,125,255,.14); border-color:rgba(138,125,255,.45); }
.ext-diag-teaser__ic{ color:var(--iris); font-size:14px; flex:none; }
.ext-diag-teaser__text{ flex:1; font-size:13px; color:var(--text-secondary); line-height:1.5; }
.ext-diag-teaser__text b{ color:var(--iris); font-weight:700; }
.ext-diag-teaser__arrow{ color:var(--iris); font-size:14px; flex:none; animation:ext-teaser-bounce 1.6s ease-in-out infinite; }
@keyframes ext-teaser-bounce{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(3px); } }

/* ── Deep TLS Analysis card — its own distinct, slower-flow visual identity ── */
.tls-card{ background:var(--void); border:1px solid var(--border-dim); border-radius:6px; padding:20px 22px; }
.tls-card__head{ display:flex; align-items:center; gap:10px; font-family:var(--font-mono); font-size:13px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--text-primary); margin-bottom:14px; }
.tls-card__dot{ width:8px; height:8px; border-radius:50%; background:var(--text-dim); flex:none; }
.tls-card__dot--loading{ background:var(--warn); animation:blink 1.2s infinite; }
.tls-card__dot--error{ background:var(--danger); }
.tls-card__dot--done{ background:var(--ok); }
.tls-card__badge{ font-family:var(--font-mono); font-size:10px; padding:2px 8px; border:1px solid rgba(255,170,51,.4); color:var(--warn); background:rgba(255,170,51,.08); margin-left:auto; }
.tls-card__badge--done{ border-color:rgba(92,217,126,.4); color:var(--ok); background:rgba(92,217,126,.08); }
.tls-card__status{ font-size:14px; color:var(--text-secondary); margin-bottom:8px; }
.tls-card__note{ font-size:12.5px; color:var(--text-dim); line-height:1.6; max-width:520px; }
.tls-card__grade{ font-family:var(--font-display); font-weight:700; font-size:36px; line-height:1; margin-bottom:14px; }
.tls-card__protocols{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px; }
.tls-proto{ font-family:var(--font-mono); font-size:12px; padding:5px 10px; border:1px solid rgba(92,217,126,.35); color:var(--ok); background:rgba(92,217,126,.06); }
.tls-proto--legacy{ border-color:rgba(255,94,94,.4); color:var(--danger); background:rgba(255,94,94,.08); }
.tls-card__warn{ font-size:13px; color:var(--danger); background:rgba(255,94,94,.06); border:1px solid rgba(255,94,94,.2); padding:12px 14px; margin-bottom:12px; line-height:1.6; }
.tls-card__ok{ font-size:13px; color:var(--ok); margin-bottom:12px; }
.tls-card__row{ display:flex; justify-content:space-between; font-size:13px; color:var(--text-secondary); padding:8px 0; border-top:1px solid var(--border-dim); }

/* ── one-time explanatory notice — Briefing ── */
.bf-notice{ display:flex; align-items:flex-start; gap:14px; padding:16px 20px; margin-bottom:18px; background:linear-gradient(165deg,rgba(94,180,255,.08),transparent); border:1px solid rgba(94,180,255,.25); border-radius:8px; }
.bf-notice__ic{ color:var(--iris); font-size:16px; flex:none; margin-top:1px; }
.bf-notice__body{ flex:1; font-size:13px; color:var(--text-secondary); line-height:1.6; }
.bf-notice__body b{ color:var(--text-primary); }
.bf-notice__dismiss{ font-family:var(--font-mono); font-size:11.5px; font-weight:600; letter-spacing:.04em; padding:8px 16px; background:rgba(94,180,255,.12); border:1px solid rgba(94,180,255,.3); color:var(--text-primary); border-radius:4px; flex:none; cursor:pointer; transition:background .15s; }
.bf-notice__dismiss:hover{ background:rgba(94,180,255,.22); }

/* ── Trust Briefing — the "what's actually protected" section ── */
.scc-trust{ margin:20px 24px; padding:24px 26px; background:linear-gradient(165deg,rgba(200,128,26,.05),transparent); border:1px solid rgba(200,128,26,.15); border-radius:8px; }
.scc-trust__head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.scc-trust__eyebrow{ font-family:var(--font-mono); font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--wax-bright); margin-bottom:14px; }
.scc-trust__ring-wrap{ position:relative; width:52px; height:52px; }
.scc-trust__ring{ width:52px; height:52px; transform:rotate(-90deg); }
.scc-trust__ring-track{ fill:none; stroke:rgba(255,255,255,.08); stroke-width:5; }
.scc-trust__ring-fill{ fill:none; stroke:var(--mint); stroke-width:5; stroke-linecap:round; transition:stroke-dashoffset .5s ease; }
.scc-trust__ring-pct{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-family:var(--font-mono); font-size:12px; font-weight:700; color:var(--mint); }
.scc-trust__lede{ font-size:14px; color:var(--text-secondary); margin-bottom:20px; line-height:1.6; max-width:640px; }
.scc-trust__grid{ display:grid; grid-template-columns:1fr 1fr; gap:18px 28px; margin-bottom:20px; }
.scc-trust__item{ display:flex; gap:12px; align-items:flex-start; }
.scc-trust__ic{ font-size:18px; flex:none; margin-top:1px; }
.scc-trust__item div b{ display:block; font-size:13.5px; color:var(--text-primary); margin-bottom:3px; font-weight:600; }
.scc-trust__item div{ font-size:12.5px; color:var(--text-dim); line-height:1.6; }
.scc-trust__stat{ font-family:var(--font-mono); font-size:12px; color:var(--text-dim); padding-top:16px; border-top:1px solid rgba(255,255,255,.08); }
@media(max-width:760px){ .scc-trust__grid{ grid-template-columns:1fr; } }

/* ── Fully Secured celebration state ── */
.scc-secured-hero{ position:relative; margin:16px 0 0; padding:36px 30px; text-align:center; background:linear-gradient(165deg,rgba(126,217,87,.08),transparent); border:1px solid rgba(126,217,87,.3); border-radius:10px; overflow:hidden; max-width:560px; width:100%; }
.scc-secured-hero__glow{ position:absolute; top:-40%; left:50%; transform:translateX(-50%); width:400px; height:300px; background:radial-gradient(ellipse, rgba(126,217,87,.18), transparent 70%); pointer-events:none; }
.scc-secured-hero__badge{ position:relative; width:84px; height:84px; margin:0 auto 18px; }
.scc-secured-hero__shield{ width:100%; height:100%; }
.scc-secured-hero__shield-fill{ fill:rgba(126,217,87,.12); stroke:var(--mint); stroke-width:2.5; filter:drop-shadow(0 0 14px rgba(126,217,87,.5)); }
.scc-secured-hero__check{ fill:none; stroke:var(--mint); stroke-width:6; stroke-linecap:round; stroke-linejoin:round; }
.scc-secured-hero__title{ position:relative; font-family:var(--font-display); font-weight:800; font-size:28px; color:var(--mint); letter-spacing:.01em; margin-bottom:10px; text-shadow:0 0 20px rgba(126,217,87,.4); }
.scc-secured-hero__sub{ position:relative; font-size:14px; color:var(--text-secondary); max-width:480px; margin:0 auto; line-height:1.65; }
.scc-badge-embed{ position:relative; margin-top:24px; padding-top:24px; border-top:1px solid rgba(126,217,87,.2); max-width:480px; margin-left:auto; margin-right:auto; text-align:left; }
.scc-badge-embed__preview{ display:flex; justify-content:center; margin-bottom:16px; }
.trust-badge-preview{ display:inline-flex; align-items:center; gap:10px; padding:10px 16px; background:var(--void); border:1px solid rgba(126,217,87,.4); border-radius:6px; }
.trust-badge-preview__shield{ font-size:20px; }
.trust-badge-preview__title{ font-size:12px; font-weight:600; color:var(--text-primary); }
.trust-badge-preview__sub{ font-size:10px; color:var(--text-dim); }
.scc-badge-embed__label{ font-size:12px; color:var(--text-dim); margin-bottom:8px; }
.scc-badge-embed__code{ width:100%; min-height:110px; background:var(--void); border:1px solid var(--border-dim); color:var(--text-secondary); font-family:var(--font-mono); font-size:10.5px; padding:12px; resize:vertical; line-height:1.5; }
.diag-card__msg{ font-size:13.5px; color:var(--text-secondary); line-height:1.55; }
.diag-card__why{ font-size:13.5px; color:var(--text-dim); line-height:1.5; font-style:italic; }
.diag-card__detail{ margin-top:auto; padding-top:10px; border-top:1px solid var(--border-dim); }
.diag-card__detail summary{ font-family:var(--font-mono); font-size:12px; color:var(--text-dim); cursor:pointer; letter-spacing:.05em; padding:2px 0; list-style:none; display:flex; align-items:center; gap:5px; }
.diag-card__detail summary::-webkit-details-marker{ display:none; }
.diag-card__detail summary::before{ content:'▸'; font-size:9px; transition:transform .15s; }
.diag-card__detail[open] summary::before{ transform:rotate(90deg); }
.diag-card__detail summary:hover{ color:var(--signal); }
.diag-card__detail p{ font-size:13.5px; color:var(--text-secondary); line-height:1.6; margin-top:8px; }
.diag-fix{ margin-top:4px!important; color:var(--warn)!important; }
.diag-link{ display:inline-block; margin-top:6px; font-family:var(--font-mono); font-size:13px; color:var(--signal); letter-spacing:.06em; text-decoration:none; border-bottom:1px solid var(--signal-dim); }
.diag-link:hover{ color:var(--wax); border-color:var(--wax); }

/* RING view */
.ringhero{ padding:18px 20px; text-align:center; position:relative; }
.ringhero__title{ font-family:var(--font-display); font-weight:700; font-size:22px; color:var(--crystal); }
.ringhero__sub{ font-family:var(--font-mono); font-size:14px; color:var(--text-secondary); margin-top:4px; }
.ringcanvas{ display:block; margin:12px auto 0; }
.ringtheme{ margin-top:6px; }
.ringgrid{ display:grid; grid-template-columns:repeat(2,1fr); gap:10px; }
.rcell{ padding:12px 14px; background:linear-gradient(165deg,#16181f,#10100c); border:1px solid var(--crystal-dim); display:grid; grid-template-columns:1fr auto; gap:10px; align-items:center; cursor:pointer; transition:all .16s; }
.rcell:hover{ box-shadow:0 0 16px rgba(196,212,238,.16); transform:translateY(-1px); }
.rcell.done{ background:linear-gradient(165deg, rgba(120,140,175,.30), #10100c); border-color:var(--crystal); }
.rcell__t{ font-family:var(--font-body); font-weight:600; font-size:13px; } .rcell.done .rcell__t{ color:var(--crystal); }
.rcell__vp{ font-family:var(--font-mono); font-weight:700; font-size:13.5px; color:var(--crystal-dim); }
.rcell__check{ font-family:var(--font-mono); font-size:13px; color:var(--crystal); }

/* HIVE view */
#hive-canvas{ display:block; width:100%; height:auto; }
.hiveview-cap{ display:flex; justify-content:space-between; align-items:center; margin-top:10px; font-family:var(--font-mono); font-size:14px; color:var(--text-secondary); } .hiveview-cap b{ color:var(--wax-bright); }

/* right rail score */
.score{ background:linear-gradient(165deg,#251808,#170f07); border:1px solid var(--border); padding:16px; }
/* ── right-rail dials (glassy, overlapping into the hive graphic) ── */
#rail-right{ position:relative; z-index:6; margin-left:-24px; }  /* bleed left over the graphic edge */
.dial-card{
  position:relative; padding:18px 16px 15px; text-align:center; margin-bottom:14px; border-radius:12px;
  background:linear-gradient(158deg, rgba(30,20,8,.58), rgba(14,10,18,.62));
  backdrop-filter:blur(10px) saturate(1.1); -webkit-backdrop-filter:blur(10px) saturate(1.1);
  border:1px solid rgba(255,200,80,.30);
  box-shadow:0 14px 42px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,210,120,.12);
}
.dial-card::before{ content:''; position:absolute; inset:0; border-radius:12px; pointer-events:none;
  background:radial-gradient(120% 60% at 50% 0%, rgba(255,190,60,.08), transparent 60%); }
.dial-label{font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--text-label);display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:10px;position:relative;}
.dial-label .pill{font-family:var(--font-mono);font-size:8.5px;font-weight:700;letter-spacing:.12em;padding:3px 7px;border-radius:20px;border:1px solid rgba(140,225,201,.4);color:var(--crystal);background:rgba(140,225,201,.07);}
.dialwrap{position:relative;width:150px;height:150px;margin:2px auto 8px;}
.dial-num{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;}
.dial-num .n{font-family:'Audiowide',var(--font-display),sans-serif;font-size:38px;font-weight:400;line-height:.9;letter-spacing:.01em;text-shadow:0 0 26px rgba(255,190,60,.35);}
.dial-sub{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);margin-top:2px;position:relative;}
.dial-delta{font-family:var(--font-mono);font-size:11.5px;font-weight:700;margin-top:4px;letter-spacing:.03em;position:relative;}
.dial-note{font-family:var(--font-mono);font-size:10.5px;font-weight:500;line-height:1.55;color:var(--text-secondary);margin-top:10px;padding-top:10px;border-top:1px solid rgba(200,128,26,.16);position:relative;}
.dial-note b{color:var(--text-primary);font-weight:700;}
@media(max-width:1100px){ #rail-right{ margin-left:0; } }
.score__top{ display:flex; justify-content:space-between; align-items:flex-start; }
.score__label{ font-family:var(--font-mono); font-size:13.5px; letter-spacing:.12em; color:var(--text-label); text-transform:uppercase; line-height:1.5; }
.pill{ font-family:var(--font-mono); font-size:13px; padding:4px 9px; border:1px solid var(--border); color:var(--text-dim); border-radius:999px; }
.score__big{ font-family:var(--font-display); font-weight:700; font-size:42px; line-height:1; margin:8px 0 14px; display:flex; align-items:baseline; gap:8px; }
.score__num{ transition:color .4s, text-shadow .4s; } .score__grade{ font-size:22px; color:var(--text-dim); }
.score__row{ display:flex; justify-content:space-between; font-family:var(--font-mono); font-size:14px; color:var(--text-secondary); padding:7px 0; }
.score__row .v{ font-weight:700; } .score__note{ margin-top:12px; font-family:var(--font-mono); font-size:13.5px; color:var(--text-dim); line-height:1.6; }
.supp__item{ padding:9px 0 9px 16px; position:relative; border-bottom:1px solid var(--border-dim); } .supp__item:last-child{ border-bottom:none; }
.supp__item::before{ content:''; position:absolute; left:0; top:13px; width:7px; height:7px; border-radius:50%; background:var(--danger); box-shadow:0 0 6px var(--danger); animation:pip 3.2s ease-in-out infinite; }
.supp__name{ font-family:var(--font-mono); font-size:14px; color:var(--text-secondary); } .supp__desc{ font-size:13.5px; color:var(--text-dim); margin-top:2px; line-height:1.45; }

/* +VP toast */
.vp-float{ position:fixed; z-index:60; font-family:var(--font-mono); font-weight:700; font-size:15px; color:var(--royal); text-shadow:0 0 10px rgba(255,182,39,.7); pointer-events:none; animation:vpRise 1.1s ease-out forwards; }
@keyframes vpRise{ 0%{ transform:translateY(0) scale(.8); opacity:0; } 20%{ opacity:1; transform:translateY(-10px) scale(1.1);} 100%{ transform:translateY(-46px) scale(1); opacity:0; } }

@media (max-width:1100px){ #app{ grid-template-columns:1fr; } .vitals,.intelstat{ grid-template-columns:repeat(2,1fr); } .work,.toolgrid,.ringgrid,.hivestrip,.mgrid{ grid-template-columns:1fr; }
  .panel--center{ order:-1; } #rail-left{ order:1; } #rail-right{ order:2; }
  .tabs{ position:sticky; top:0; z-index:6; background:linear-gradient(180deg,#160e07,rgba(22,16,11,.85)); padding:6px 0; }
}
@media (prefers-reduced-motion:reduce){ *{ animation:none !important; } }



/* ── ORDERED REPAIR PLAN ── */
.diag-repair{ margin:0 0 26px; }

/* ── Multi-page crawl — its own visual identity (teal/signal, not the
   amber wax used elsewhere) so it reads as a deliberate, distinct
   feature — a network of pages, not another brown card. ── */
.diag-crawl{ margin:0 24px 24px; }

/* ── Section dividers separating the three distinct scan types on this
   page — Site-Wide (above), URL Audit, and Sitemap Audit, each its own
   clearly-labeled sibling rather than one undifferentiated scan. ── */
.insp-section-divider{ margin:36px 0 18px; padding-top:24px; border-top:1px solid var(--border-dim); }
.insp-section-divider__title{ font-family:var(--font-display); font-size:19px; font-weight:700; color:var(--text-primary); margin-bottom:5px; }
.insp-section-divider__sub{ font-size:13.5px; color:var(--text-secondary); line-height:1.55; max-width:560px; }

.url-audit-tool{ padding:4px 0 8px; }
.url-audit-input-row{ display:flex; gap:10px; flex-wrap:wrap; }
.url-audit-input{
  flex:1; min-width:220px; padding:12px 16px; border-radius:7px; font-family:var(--font-mono); font-size:13.5px;
  background:rgba(255,255,255,.03); border:1px solid var(--border-dim); color:var(--text-primary);
}
.url-audit-input:focus{ outline:none; border-color:var(--signal); box-shadow:0 0 0 3px rgba(92,225,201,.12); }
.url-audit-input::placeholder{ color:var(--text-dim); }
.url-audit-btn{
  font-family:var(--font-mono); font-size:12.5px; font-weight:700; letter-spacing:.04em;
  padding:0 22px; background:var(--signal); color:#08201c; border:none; border-radius:7px;
  cursor:pointer; flex:none; transition:filter .15s, transform .15s;
}
.url-audit-btn:hover{ filter:brightness(1.1); transform:translateY(-1px); }

.crawl-idle{
  display:flex; align-items:center; gap:20px; padding:20px 24px; border-radius:10px; flex-wrap:wrap;
  background:linear-gradient(160deg, rgba(92,225,201,.08), rgba(12,14,18,.4));
  border:1px solid rgba(92,225,201,.22);
}
.crawl-idle__icon{ font-size:22px; flex:none; filter:drop-shadow(0 0 8px rgba(92,225,201,.4)); }
.crawl-idle__text{ flex:1; min-width:220px; font-size:13.5px; color:var(--text-secondary); line-height:1.6; }
.crawl-idle__text b{ display:block; color:var(--text-primary); margin-bottom:5px; font-size:14.5px; font-weight:700; }

.crawl-start-btn, .crawl-rescan-btn{
  font-family:var(--font-mono); font-size:12.5px; font-weight:700; letter-spacing:.05em;
  padding:11px 20px; background:var(--signal); color:#08201c; border:none; border-radius:7px;
  cursor:pointer; flex:none; transition:filter .15s, transform .15s, box-shadow .15s;
  box-shadow:0 0 0 rgba(92,225,201,0);
}
.crawl-start-btn:hover, .crawl-rescan-btn:hover{ filter:brightness(1.1); transform:translateY(-1px); box-shadow:0 4px 18px rgba(92,225,201,.25); }

.crawl-progress{
  padding:22px 24px; border-radius:10px;
  background:linear-gradient(160deg, rgba(92,225,201,.06), rgba(12,14,18,.4));
  border:1px solid rgba(92,225,201,.18);
}
.crawl-progress__status{ font-family:var(--font-mono); font-size:13px; letter-spacing:.03em; color:var(--signal); margin-bottom:12px; display:flex; align-items:center; gap:8px; }
.crawl-progress__status::before{ content:''; width:7px; height:7px; border-radius:50%; background:var(--signal); animation:blink 1.1s infinite; flex:none; }
.crawl-progress .diag-pbar{ background:rgba(92,225,201,.1); }
.crawl-progress .diag-pbar-fill{ background:linear-gradient(90deg, var(--signal-dim), var(--signal)); box-shadow:0 0 10px rgba(92,225,201,.5); }
.crawl-progress__url{ font-family:var(--font-mono); font-size:11.5px; color:var(--text-dim); margin-top:10px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

.crawl-results{
  padding:22px 24px; border-radius:10px;
  background:linear-gradient(160deg, rgba(92,225,201,.05), rgba(12,14,18,.4));
  border:1px solid rgba(92,225,201,.16);
}
.crawl-results__scope{
  font-family:var(--font-mono); font-size:12px; letter-spacing:.03em; color:var(--signal);
  margin-bottom:16px; padding-bottom:16px; border-bottom:1px solid rgba(92,225,201,.14);
}
.crawl-row{
  border-radius:8px; margin-bottom:8px; overflow:hidden; transition:border-color .15s;
  background:rgba(255,170,51,.04); border:1px solid rgba(255,170,51,.22);
}
.crawl-row:hover{ border-color:rgba(255,170,51,.4); }
.crawl-row__top{ display:flex; align-items:center; gap:11px; padding:13px 16px; cursor:pointer; }
.crawl-row__icon{ font-size:15px; flex:none; }
.crawl-row__label{ flex:1; font-size:13.5px; color:var(--text-primary); font-weight:500; }
.crawl-row__count{ font-family:var(--font-mono); font-size:11.5px; font-weight:700; letter-spacing:.03em; color:var(--warn); flex:none; padding:3px 8px; border-radius:4px; background:rgba(255,170,51,.1); border:1px solid rgba(255,170,51,.25); }
.crawl-row__arrow{ color:var(--text-dim); font-size:11px; flex:none; transition:transform .15s; }
.crawl-row__pages{ padding:2px 16px 14px 41px; border-top:1px dashed rgba(255,170,51,.15); margin-top:2px; padding-top:10px; }
.crawl-row__page{ font-family:var(--font-mono); font-size:11.5px; color:var(--text-secondary); padding:5px 0; overflow-wrap:break-word; }

.crawl-clean-summary{
  font-size:13px; color:var(--ok); margin:10px 0; line-height:1.6; padding:12px 14px;
  background:rgba(126,217,87,.06); border:1px solid rgba(126,217,87,.2); border-radius:7px;
}
.crawl-unreachable-note{ font-size:12px; color:var(--text-dim); margin:8px 0; }
.diag-crawl .crawl-rescan-btn{ margin-top:14px; }
.repair-head{ padding:18px 20px; border:1px solid var(--wax); background:linear-gradient(135deg,rgba(255,182,39,.1),transparent); margin-bottom:16px; }
.repair-head__title{ font-family:var(--font-display); font-size:20px; color:var(--royal); letter-spacing:.02em; }
.repair-head__sub{ font-size:13px; color:var(--text-secondary); margin-top:6px; line-height:1.6; }
.repair-head__sub b{ color:var(--wax-bright); }
.repair-tier{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin:20px 0 10px; font-family:var(--font-mono); font-size:13px; letter-spacing:.08em; text-transform:uppercase; color:var(--text-secondary); border-bottom:1px solid var(--border-dim); padding-bottom:7px; }
.repair-tier__n{ color:var(--wax-bright); font-weight:700; }
.repair-tier__blurb{ flex:1 1 100%; font-family:var(--font-body); font-size:12px; text-transform:none; letter-spacing:0; color:var(--text-dim); }
.repair-item{ display:flex; gap:14px; padding:14px 16px; border:1px solid var(--border-dim); border-left:3px solid var(--border); background:var(--comb-2); margin-bottom:8px; }
.repair-item--fail{ border-left-color:var(--danger); }
.repair-item--warn{ border-left-color:var(--warn); }
.repair-item__num{ flex:none; width:30px; height:30px; display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-size:15px; color:var(--void); background:var(--wax-bright); border-radius:2px; }
.repair-item--warn .repair-item__num{ background:var(--warn); }
.repair-item--fail .repair-item__num{ background:var(--danger); color:#fff; }
.repair-item__body{ flex:1; min-width:0; }
.repair-item__head{ display:flex; align-items:center; gap:9px; }
.repair-item__icon{ font-size:15px; }
.repair-item__label{ font-family:var(--font-mono); font-size:13px; letter-spacing:.04em; color:var(--text-primary); text-transform:uppercase; }
.repair-item__badge{ margin-left:auto; font-family:var(--font-mono); font-size:10px; padding:2px 8px; }
.repair-item__status{ font-size:12.5px; color:var(--text-dim); margin-top:5px; line-height:1.5; }
.repair-item__guide{ margin-top:9px; }
.repair-item__guide summary{ cursor:pointer; font-family:var(--font-mono); font-size:11px; letter-spacing:.06em; color:var(--wax-bright); text-transform:uppercase; }
.repair-guide{ margin-top:9px; padding:12px 14px; background:rgba(0,0,0,.2); border:1px solid var(--border-dim); }
.repair-guide p{ font-size:13px; line-height:1.65; color:var(--text-secondary); margin-bottom:8px; }
.repair-guide p b{ color:var(--text-primary); }
.repair-guide__fix b{ color:var(--ok) !important; }
.repair-foot{ margin-top:14px; padding:13px 16px; border:1px dashed var(--border); color:var(--text-dim); font-size:12.5px; text-align:center; }

/* ── measurement failures (not repair items) ── */
.repair-unknown{ margin-top:20px; padding:16px 18px; border:1px dashed var(--border); background:rgba(255,255,255,.02); }
.repair-unknown__head{ font-family:var(--font-mono); font-size:13px; letter-spacing:.1em; text-transform:uppercase; color:var(--text-secondary); }
.repair-unknown__sub{ font-size:12.5px; line-height:1.6; color:var(--text-dim); margin:7px 0 12px; }
.repair-unknown__sub b{ color:var(--text-secondary); }
.repair-unknown__item{ display:flex; justify-content:space-between; gap:14px; align-items:center; padding:7px 0; border-top:1px solid var(--border-dim); font-size:12.5px; color:var(--text-secondary); }
.repair-unknown__msg{ color:var(--text-dim); font-size:11.5px; text-align:right; flex:1; }

/* ── health/growth split + before-after delta ── */
.score__delta{ font-family:var(--font-mono); font-size:13px; font-weight:700; margin:6px 0 2px; letter-spacing:.02em; }
.score__divider{ height:1px; background:var(--border-dim); margin:16px 0 12px; }
.score__growth{ margin:2px 0 8px; }

/* ── no-email toggle + explainer overlay ── */
.noemail-toggle{ display:flex; align-items:flex-start; gap:12px; padding:12px 14px; margin-bottom:12px;
  border:1px solid var(--border-dim); background:rgba(255,255,255,.02); }
.noemail-switch{ position:relative; flex:none; width:42px; height:24px; }
.noemail-switch input{ opacity:0; width:0; height:0; }
.noemail-slider{ position:absolute; inset:0; cursor:pointer; background:var(--cell-hover); border:1px solid var(--border); transition:.2s; border-radius:24px; }
.noemail-slider:before{ content:''; position:absolute; height:16px; width:16px; left:3px; top:3px; background:var(--text-dim); transition:.2s; border-radius:50%; }
.noemail-switch input:checked + .noemail-slider{ background:rgba(255,182,39,.25); border-color:var(--wax-bright); }
.noemail-switch input:checked + .noemail-slider:before{ transform:translateX(18px); background:var(--wax-bright); }
.noemail-copy{ display:flex; flex-direction:column; gap:2px; }
.noemail-label{ font-size:13.5px; color:var(--text-primary); display:flex; align-items:center; gap:7px; }
.noemail-sub{ font-size:12px; color:var(--text-dim); line-height:1.4; }
.noemail-info{ background:none; border:none; color:var(--wax-bright); cursor:pointer; font-size:13px; padding:0; line-height:1; }
.noemail-info:hover{ color:var(--royal); }
.noemail-overlay{ position:fixed; inset:0; z-index:200; background:rgba(0,0,0,.7); backdrop-filter:blur(3px);
  display:flex; align-items:center; justify-content:center; padding:24px; }
.noemail-overlay[hidden]{ display:none !important; }
.noemail-overlay__box{ max-width:520px; background:var(--comb); border:1px solid var(--wax); padding:26px 28px;
  max-height:85vh; overflow-y:auto; }
.noemail-overlay__head{ font-family:var(--font-display); font-size:18px; color:var(--royal); margin-bottom:14px; }
.noemail-overlay__box p{ font-size:13.5px; line-height:1.65; color:var(--text-secondary); margin-bottom:12px; }
.noemail-overlay__box p b{ color:var(--text-primary); }
.noemail-overlay__box ul{ margin:0 0 12px; padding-left:18px; }
.noemail-overlay__box li{ font-size:13.5px; line-height:1.6; color:var(--text-secondary); margin-bottom:8px; }
.noemail-overlay__box li b{ color:var(--text-primary); }
.noemail-overlay__box code{ font-family:var(--font-mono); font-size:12px; background:rgba(255,255,255,.06); padding:1px 5px; color:var(--wax-bright); }
.noemail-overlay__warn{ padding:10px 12px; border:1px solid var(--warn); background:rgba(255,170,51,.08); color:var(--warn) !important; font-size:12.5px !important; }
.diag-badge--na{ color:var(--text-dim); border:1px solid var(--border); }
.diag-badge--unknown{ color:var(--text-dim); border:1px solid var(--border); }

/* ── rich authored mission guides ── */
.md__g-block{ margin:14px 0; }
.md__g-block p{ font-size:14px; line-height:1.7; color:var(--text-secondary); }
.md__g-what{ color:var(--text-primary); margin-bottom:10px; }
.md__g-why{ color:var(--text-secondary); }
.md__g-time{ display:inline-block; font-family:var(--font-mono); font-size:12px; color:var(--text-dim); margin:10px 0 4px; padding:5px 11px; border:1px solid var(--border-dim); }
.md__g-fullguide{ display:inline-flex; align-items:center; gap:6px; font-family:var(--font-mono); font-size:12.5px;
  color:var(--wax-bright); margin:2px 0 12px; text-decoration:none; }
.md__g-fullguide:hover{ text-decoration:underline; }
.md__step--rich{ align-items:flex-start; }
.md__step-do{ font-size:14px; font-weight:600; color:var(--text-primary); line-height:1.5; }
.md__step-detail{ font-size:13px; line-height:1.65; color:var(--text-secondary); margin-top:5px; }
.md__paste{ margin-top:9px; }
.md__paste-label{ font-size:11px; font-weight:700; letter-spacing:0.04em; color:var(--text-label,#e7b755); text-transform:uppercase; margin-bottom:4px; }
.md__paste-row{ display:flex; align-items:stretch; gap:0; border:1px solid var(--border,#2a3038); border-radius:4px; overflow:hidden; background:rgba(0,0,0,0.25); }
.md__paste-code{ flex:1; font-family:var(--font-mono,monospace); font-size:12.5px; color:var(--signal,#5ce1c9); padding:9px 11px; white-space:pre-wrap; word-break:break-all; line-height:1.45; }
.md__paste-btn{ flex:none; border:none; border-left:1px solid var(--border,#2a3038); background:var(--comb-2,#1f242c); color:var(--text-primary,#eef1f5); font-family:var(--font-mono,monospace); font-size:12px; font-weight:600; padding:0 14px; cursor:pointer; transition:background .15s,color .15s; }
.md__paste-btn:hover{ background:var(--wax-bright,#ffb627); color:#0c0e12; }
.md__paste-btn.copied{ background:var(--ok,#5cd97e); color:#0c0e12; }
.md__gotchas{ margin:4px 0 8px; padding-left:20px; }
.md__gotchas li{ font-size:13px; line-height:1.6; color:var(--text-secondary); margin-bottom:7px; }
.md__gotchas li::marker{ color:var(--warn); }
.md__g-done{ display:flex; gap:11px; align-items:flex-start; margin:16px 0 4px; padding:13px 15px; border:1px solid var(--ok); background:rgba(92,217,126,.07); }
.md__g-done b{ color:var(--ok); }
.md__g-done > div{ font-size:13.5px; line-height:1.6; color:var(--text-secondary); }
.md__g-done-icon{ color:var(--ok); font-size:16px; flex:none; }
.md__link-body{ display:flex; flex-direction:column; gap:2px; }
.md__link-label{ font-size:13px; color:var(--text-primary); }
.md__link-note{ font-size:12px; color:var(--text-dim); line-height:1.4; }

/* ── GUIDED PATH ─────────────────────────────────────────────── */
.guided-wrap{ padding:24px; max-width:760px; margin:0 auto; display:flex; flex-direction:column; gap:20px; }
.guided-eyebrow{ font-family:var(--font-mono); font-size:12px; letter-spacing:.2em; color:var(--signal,#5ce1c9); }
.guided-h1{ font-family:var(--font-display); font-weight:700; font-size:30px; color:var(--text-primary,#fff); line-height:1.05; margin-top:6px; }
.guided-sub{ font-size:14.5px; color:var(--text-secondary,#b8c0cc); margin-top:8px; line-height:1.6; }
.guided-prog{ margin-top:16px; }
.guided-prog__bar{ height:8px; background:rgba(255,255,255,.08); border-radius:4px; overflow:hidden; }
.guided-prog__bar i{ display:block; height:100%; background:linear-gradient(90deg,var(--wax,#c97f1f),var(--wax-bright,#ffb627)); border-radius:4px; transition:width .5s; }
.guided-prog__txt{ font-family:var(--font-mono); font-size:12px; color:var(--text-dim,#7c8694); margin-top:6px; letter-spacing:.04em; }

.guided-next{ border:1px solid var(--wax-bright,#ffb627); background:linear-gradient(160deg,rgba(255,182,39,.10),rgba(255,182,39,.03)); padding:26px; border-radius:6px; box-shadow:0 10px 40px rgba(255,182,39,.10); cursor:pointer; transition:transform .15s,box-shadow .15s; }
.guided-next:hover{ transform:translateY(-2px); box-shadow:0 16px 50px rgba(255,182,39,.18); }
.guided-next--done{ border-color:var(--ok,#5cd97e); background:linear-gradient(160deg,rgba(92,217,126,.10),rgba(92,217,126,.03)); cursor:default; }
.guided-next--done:hover{ transform:none; }
.guided-next__tag{ font-family:var(--font-mono); font-size:11px; letter-spacing:.18em; color:var(--wax-bright,#ffb627); margin-bottom:10px; }
.guided-next__title{ font-family:var(--font-display); font-weight:700; font-size:24px; color:var(--text-primary,#fff); line-height:1.15; }
.guided-next__meta{ display:flex; flex-wrap:wrap; gap:8px 14px; margin-top:12px; font-family:var(--font-mono); font-size:12px; color:var(--text-dim,#7c8694); }
.guided-next__surface{ color:var(--signal,#5ce1c9); }
.guided-next__vp{ color:var(--royal,#ffd966); }
.guided-next__desc{ font-size:14px; color:var(--text-secondary,#b8c0cc); margin-top:12px; line-height:1.55; }
.guided-next__btn{ margin-top:18px; font-family:var(--font-mono); font-size:13px; letter-spacing:.06em; padding:12px 20px; border:none; background:var(--wax-bright,#ffb627); color:#0c0e12; cursor:pointer; font-weight:700; border-radius:4px; transition:filter .15s; }
.guided-next__btn:hover{ filter:brightness(1.08); }

.guided-queue{ display:flex; flex-direction:column; gap:8px; }
.guided-queue__label{ font-family:var(--font-mono); font-size:11px; letter-spacing:.18em; color:var(--text-dim,#7c8694); margin:8px 2px; }
.guided-step{ display:flex; align-items:center; gap:14px; padding:13px 16px; border:1px solid var(--border-dim,#20252c); background:var(--comb,#181c22); border-radius:5px; cursor:pointer; transition:border-color .15s,transform .1s; }
.guided-step:hover{ border-color:var(--wax,#c97f1f); transform:translateX(2px); }
.guided-step__n{ flex:none; width:24px; height:24px; border-radius:50%; background:rgba(255,255,255,.06); color:var(--text-dim,#7c8694); font-family:var(--font-mono); font-size:12px; display:flex; align-items:center; justify-content:center; }
.guided-step__body{ flex:1; display:flex; flex-direction:column; gap:2px; }
.guided-step__title{ font-size:14px; color:var(--text-primary,#eef1f5); font-weight:500; }
.guided-step__meta{ font-family:var(--font-mono); font-size:11.5px; color:var(--text-dim,#7c8694); }
.guided-step__arrow{ color:var(--text-dim,#7c8694); }

.guided-sandbox-cta{ margin-top:14px; padding:18px; border:1px dashed var(--border,#2a3038); border-radius:6px; text-align:center; }
.guided-sandbox-cta__txt{ font-size:13.5px; color:var(--text-dim,#7c8694); margin-bottom:10px; }
.guided-sandbox-cta__btn{ font-family:var(--font-mono); font-size:12.5px; letter-spacing:.05em; padding:10px 18px; background:none; border:1px solid var(--signal,#5ce1c9); color:var(--signal,#5ce1c9); cursor:pointer; border-radius:4px; transition:background .15s,color .15s; }
.guided-sandbox-cta__btn:hover{ background:var(--signal,#5ce1c9); color:#0c0e12; }

/* ══════════ DEMO MODE (landing-page hero embed) ══════════ */
body.demo-mode nav.bar{ display:none; }
body.demo-mode #reset-btn{ display:none; }
body.demo-mode .tabs{ display:none; }              /* hero shows the briefing only, no tab chrome */
body.demo-mode #app{ pointer-events:none; }        /* display-only, non-interactive */
body.demo-mode{ overflow:hidden; }
/* let the briefing breathe as a standalone hero */
body.demo-mode #app{ grid-template-columns:248px 1fr 260px; height:100vh; }

/* ══════════════════════════════════════════════════
   SECURITY COMMAND CENTER
   ══════════════════════════════════════════════════ */

/* root */
.scc-root{ display:flex; flex-direction:column; height:100%; overflow:hidden; background:#050409; }

/* banner */
.scc-banner{ flex-shrink:0; padding:14px 20px 10px; display:flex; align-items:center; gap:16px;
  background:linear-gradient(135deg,rgba(200,128,26,.08),rgba(200,128,26,.03)); }
.scc-head-badge{ width:38px; height:38px; border-radius:10px; background:rgba(200,128,26,.14);
  border:1px solid rgba(200,128,26,.4); display:flex; align-items:center; justify-content:center;
  font-size:17px; flex-shrink:0; animation:scc-badge-pulse 2.6s ease-in-out infinite; }
@keyframes scc-badge-pulse{ 0%,100%{ box-shadow:0 0 0 0 rgba(200,128,26,.35); } 50%{ box-shadow:0 0 0 8px rgba(200,128,26,0); } }
.scc-head-status{ font-family:var(--font-mono); font-size:9.5px; color:rgba(255,255,255,.35); letter-spacing:.08em;
  margin-top:5px; display:flex; align-items:center; gap:6px; }
.scc-head-dot{ width:5px; height:5px; border-radius:50%; background:#ffd966; box-shadow:0 0 6px #ffd966;
  animation:scc-dot-blink 1.7s ease-in-out infinite; flex-shrink:0; }
@keyframes scc-dot-blink{ 0%,100%{ opacity:1; } 50%{ opacity:.25; } }
.scc-scanline{ flex-shrink:0; height:2px; background:rgba(200,128,26,.12); position:relative; overflow:hidden;
  margin:0 20px 0; }
.scc-scanline::after{ content:''; position:absolute; top:0; left:-30%; width:30%; height:100%;
  background:linear-gradient(90deg, transparent, #ffd966, transparent);
  animation:scc-sweepline 3.6s ease-in-out infinite; }
@keyframes scc-sweepline{ 0%{ left:-30%; } 100%{ left:100%; } }

/* threat strip */
.scc-threat{ flex-shrink:0; height:30px; display:flex; align-items:center; gap:0; padding:0 16px;
  border-bottom:1px solid; }

/* ══ Sentinel Ring hero ══ */
.scc-hero{ flex-shrink:0; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:26px 16px 8px;
  border-bottom:1px solid rgba(200,128,26,.18);
  background:
    radial-gradient(circle at 50% 20%, rgba(255,217,102,.07), transparent 55%),
    linear-gradient(180deg,rgba(200,128,26,.04),rgba(200,128,26,.01)); }
.scc-ringstage{ position:relative; width:340px; height:340px; }
.scc-sweep{ position:absolute; inset:-6px; border-radius:50%; pointer-events:none;
  background:conic-gradient(from 0deg, transparent 0deg, rgba(200,128,26,.16) 26deg, transparent 64deg, transparent 360deg);
  animation:scc-sweep-spin 14s linear infinite; mix-blend-mode:screen; }
@keyframes scc-sweep-spin{ to{ transform:rotate(360deg); } }
.scc-ringstage svg{ position:absolute; inset:0; overflow:visible; width:100%; height:100%; z-index:1; }
.scc-hexring .scc-hex polygon{ transition:fill .4s ease, stroke .4s ease; cursor:pointer; }
.scc-hexring .scc-hex--locked polygon{ fill:rgba(92,90,46,.22); stroke:rgba(140,138,80,.5); stroke-width:1.4; }
.scc-hexring .scc-hex--fill polygon{ fill:url(#scc-hex-grad); stroke:#ffdd6b; stroke-width:1.5;
  filter:drop-shadow(0 0 5px rgba(201,162,39,.7)); }
.scc-hexring .scc-hex:hover polygon{ stroke:#ffdd6b; stroke-width:2; }
.scc-scanring circle{ transition:stroke-dashoffset .8s ease; }
.scc-core{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); text-align:center; width:170px; z-index:2; }
.scc-secured-badge{ position:absolute; top:-38px; left:50%; transform:translateX(-50%); font-family:var(--font-mono);
  font-size:9.5px; letter-spacing:.16em; color:#ffd966; background:rgba(200,128,26,.14);
  border:1px solid rgba(200,128,26,.5); padding:5px 13px; border-radius:20px; white-space:nowrap; }
.scc-core__grade{ font-size:52px; font-weight:900; line-height:1; font-family:var(--font-mono); }
.scc-core__label{ font-family:var(--font-mono); font-size:9px; letter-spacing:.16em; color:rgba(255,255,255,.28); margin-top:4px; }
.scc-core__pct{ font-family:var(--font-mono); font-size:11px; color:rgba(255,255,255,.55); margin-top:9px; }
.scc-core__scanrow{ margin-top:12px; display:flex; flex-direction:column; align-items:center; gap:7px; }
.scc-core__scanstatus{ font-family:var(--font-mono); font-size:9.5px; letter-spacing:.06em; }
.scc__run-btn-sm#scc-run-btn{ font-family:var(--font-mono); font-size:9.5px; letter-spacing:.06em; color:#4ecdc4;
  background:rgba(78,205,196,.1); border:1px solid rgba(78,205,196,.4); border-radius:20px;
  padding:6px 14px; cursor:pointer; transition:all .15s; }
.scc__run-btn-sm#scc-run-btn:hover{ background:rgba(78,205,196,.18); transform:scale(1.04); }

/* ── unified tile row: Scan Results first, then the four phases ── */
.scc-tilerow{ flex-shrink:0; display:grid; grid-template-columns:repeat(5, minmax(0,1fr));
  border-bottom:1px solid rgba(200,128,26,.18); }
.scc-tile{ min-width:0; overflow:hidden; padding:30px 10px; cursor:pointer; text-align:center;
  border-right:1px solid rgba(255,255,255,.05); border-bottom:3px solid transparent; transition:background .15s;
  display:flex; flex-direction:column; align-items:center; }
.scc-tile:last-child{ border-right:none; }
.scc-tile:hover{ background:rgba(255,255,255,.03); }
.scc-tile svg{ display:block; }
.scc-tile__label{ font-family:var(--font-mono); font-size:11px; font-weight:700; letter-spacing:.05em; margin-top:12px; }
.scc-tile__sub{ font-family:var(--font-mono); font-size:10.5px; color:rgba(255,255,255,.4); margin-top:5px; }
.scc-tile__warn{ font-family:var(--font-mono); font-size:9.5px; margin-top:5px; }
.scc-tile__pills{ display:flex; gap:5px; margin-top:9px; flex-wrap:wrap; justify-content:center; }
.scc-tile__pill{ font-family:var(--font-mono); font-size:8.5px; letter-spacing:.03em; padding:2px 6px; border-radius:3px; border:1px solid; }
.scc-tile__pill--fail{ color:#ff4444; border-color:rgba(255,68,68,.32); background:rgba(255,68,68,.08); }
.scc-tile__pill--warn{ color:#e8b04b; border-color:rgba(232,176,75,.32); background:rgba(232,176,75,.08); }
.scc-tile__pill--pass{ color:#5cd97e; border-color:rgba(92,217,126,.32); background:rgba(92,217,126,.08); }

/* working surface */
.scc-working-surface{ flex:1; overflow:hidden; display:flex; flex-direction:column; }

/* mission list */
.scc-mission-list{ flex:1; overflow-y:auto; }
.scc-mission-row{ display:flex; align-items:flex-start; gap:11px; padding:11px 18px;
  border-bottom:1px solid rgba(255,255,255,.04); cursor:pointer; transition:background .1s; }
.scc-mission-row:hover{ background:rgba(200,128,26,.04); }
.scc-mission-row--done{ opacity:.42; }
.scc-mission-check{ width:22px; height:22px; flex-shrink:0; margin-top:0;
  border:2px solid; display:flex; align-items:center; justify-content:center;
  border-radius:4px; transition:all .15s; cursor:pointer; }
.scc-mission-check:hover{ transform:scale(1.12); filter:brightness(1.3); }

/* scan output */
#scc-scan-output{ flex:1; overflow-y:auto; }

/* scan result cards */
.sr-wrap{ padding:0; }
.sr-banner{ display:flex; align-items:center; gap:16px; padding:14px 20px;
  border-bottom:1px solid rgba(255,255,255,.06); flex-wrap:wrap; }
.sr-score-pills{ display:flex; gap:7px; flex-wrap:wrap; margin-left:auto; }
.sr-pill{ font-family:var(--font-mono); font-size:9px; letter-spacing:.1em; padding:3px 9px; border:1px solid; }
.sr-pill--fail{ color:#ff4444; border-color:#ff444330; background:rgba(255,68,68,.07); }
.sr-pill--warn{ color:#e8b04b; border-color:#e8b04b30; background:rgba(232,176,75,.07); }
.sr-pill--pass{ color:#5cd97e; border-color:#5cd97e30; background:rgba(92,217,126,.07); }
.sr-section-head{ font-family:var(--font-mono); font-size:8px; letter-spacing:.18em;
  text-transform:uppercase; padding:10px 20px 4px; }
.sr-section-head--fail{ color:#ff4444; background:rgba(255,68,68,.03); border-top:1px solid rgba(255,68,68,.1); }
.sr-section-head--warn{ color:#e8b04b; background:rgba(232,176,75,.02); border-top:1px solid rgba(232,176,75,.08); margin-top:6px; }
.sr-section-head--pass{ color:rgba(255,255,255,.2); border-top:1px solid rgba(255,255,255,.05); margin-top:6px; }
.sr-card{ margin:0 14px 6px; padding:13px 14px; border:1px solid; }
.sr-card--fail{ background:rgba(255,68,68,.04); border-color:rgba(255,68,68,.14); border-left:3px solid #ff4444; }
.sr-card--warn{ background:rgba(232,176,75,.03); border-color:rgba(232,176,75,.1); border-left:3px solid #e8b04b; }
.sr-card__head{ display:flex; align-items:center; gap:9px; margin-bottom:8px; }
.sr-card__icon{ font-size:14px; flex:none; }
.sr-card__label{ font-size:13px; font-weight:600; color:rgba(255,255,255,.86); flex:1; }
.sr-badge{ font-family:var(--font-mono); font-size:8px; letter-spacing:.1em; padding:2px 6px; border:1px solid; font-weight:700; }
.sr-badge--fail{ color:#ff4444; border-color:#ff444430; }
.sr-badge--warn{ color:#e8b04b; border-color:#e8b04b30; }
.sr-card__what{ font-size:12.5px; color:rgba(255,255,255,.6); line-height:1.65; margin-bottom:7px; }
.sr-card__why{ font-size:11.5px; color:rgba(255,255,255,.35); line-height:1.65; margin-bottom:9px; font-style:italic; }
.sr-card__fix{ padding:9px 12px; background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.07);
  font-size:12px; color:rgba(255,255,255,.55); line-height:1.7; }
.sr-fix-label{ font-family:var(--font-mono); font-size:7px; letter-spacing:.18em; color:rgba(200,128,26,.6);
  display:block; margin-bottom:4px; }
.sr-fix-link{ display:inline-block; margin-top:7px; font-family:var(--font-mono); font-size:9px;
  color:var(--signal); letter-spacing:.05em; text-decoration:none; }
.sr-fix-link:hover{ text-decoration:underline; }
.sr-pass-grid{ display:grid; grid-template-columns:1fr 1fr; padding:4px 12px 16px; }
.sr-pass-item{ display:flex; align-items:center; gap:7px; padding:4px 6px;
  font-size:11px; color:rgba(255,255,255,.35); }
.sr-clear{ padding:44px 24px; text-align:center; }

/* scan progress bar */
.sec-scan-running{ padding:0; }
.sec-scan-progress{ display:flex; align-items:center; gap:14px; padding:11px 18px;
  background:rgba(200,128,26,.05); border-bottom:1px solid rgba(200,128,26,.12); }
.sec-scan-status{ font-family:var(--font-mono); font-size:10px; color:rgba(200,128,26,.8);
  letter-spacing:.08em; flex:none; min-width:160px; }
.sec-scan-pbar{ flex:1; height:4px; background:rgba(255,255,255,.07); border-radius:2px; overflow:hidden; }

/* buttons */
.scc__run-btn{ font-family:var(--font-mono); font-size:9px; letter-spacing:.1em; padding:7px 14px;
  background:linear-gradient(135deg,rgba(184,134,11,.9),rgba(120,80,8,.95));
  border:1px solid rgba(240,190,50,.4); color:rgba(255,230,100,.95); cursor:pointer; transition:all .2s; white-space:nowrap; }
.scc__run-btn:hover{ filter:brightness(1.12); box-shadow:0 0 14px rgba(200,140,20,.3); }
.scc__run-btn-sm{ font-family:var(--font-mono); font-size:10px; letter-spacing:.1em; padding:9px 20px;
  background:transparent; border:1px solid rgba(200,128,26,.4); color:rgba(255,200,80,.75); cursor:pointer; transition:all .15s; }
.scc__run-btn-sm:hover{ background:rgba(200,128,26,.08); }
.scc__run-btn-sm:disabled{ opacity:.45; cursor:default; }
.scc__run-btn-sm:disabled:hover{ background:transparent; }

/* ── security scan running state ── */
.sec-scan-running{ padding:0; }
.sec-scan-progress{ display:flex; align-items:center; gap:14px; padding:14px 20px; background:rgba(200,128,26,.05); border-bottom:1px solid rgba(200,128,26,.15); }
.sec-scan-status{ font-family:var(--font-mono); font-size:11px; color:rgba(200,128,26,.8); letter-spacing:.1em; flex:none; min-width:140px; }
.sec-scan-pbar{ flex:1; height:4px; background:rgba(255,255,255,.07); border-radius:2px; overflow:hidden; }
/* ══════════════════════════════════════════════════════════════════
   THE PULSE — its own identity, distinct from Security's amber and
   Extended Diagnostics' violet. Blue/signal reads as "live data feed,"
   matching what this actually is.
   ══════════════════════════════════════════════════════════════════ */
.pulse-page{ padding:28px 32px; max-width:1100px; }
.pulse-header{ margin-bottom:28px; }
.pulse-header__title{ font-family:var(--font-display); font-size:24px; font-weight:700; color:var(--text-primary); letter-spacing:.02em; margin-bottom:6px; }
.pulse-header__sub{ font-size:14px; color:var(--text-secondary); max-width:600px; line-height:1.55; }

.pulse-connect-row{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:14px; margin-bottom:28px; }
.pulse-connect-card{
  padding:20px 22px; border-radius:10px; background:linear-gradient(160deg,rgba(92,225,201,.05),rgba(12,14,18,.4));
  border:1px solid var(--border-dim);
}
.pulse-connect-card--on{ border-color:rgba(92,225,201,.35); background:linear-gradient(160deg,rgba(92,225,201,.09),rgba(12,14,18,.4)); }
.pulse-connect-card__top{ display:flex; align-items:center; gap:9px; margin-bottom:8px; }
.pulse-connect-card__icon{ font-size:17px; }
.pulse-connect-card__label{ font-family:var(--font-display); font-size:15px; font-weight:700; color:var(--text-primary); }
.pulse-connect-card__desc{ font-size:12.5px; color:var(--text-secondary); line-height:1.5; margin-bottom:14px; }
.pulse-connect-card__status{ font-family:var(--font-mono); font-size:12px; color:var(--signal); margin-bottom:10px; }
.pulse-connect-btn{
  font-family:var(--font-mono); font-size:12.5px; font-weight:700; letter-spacing:.04em; padding:10px 18px;
  background:var(--signal); color:#08201c; border:none; border-radius:7px; cursor:pointer; transition:filter .15s, transform .15s;
}
.pulse-connect-btn:hover{ filter:brightness(1.1); transform:translateY(-1px); }
.pulse-connect-btn:disabled{ opacity:.6; cursor:default; }
.pulse-disconnect-btn{
  font-family:var(--font-mono); font-size:11.5px; padding:7px 14px; background:none;
  border:1px solid var(--border-dim); color:var(--text-dim); border-radius:6px; cursor:pointer;
}
.pulse-disconnect-btn:hover{ color:var(--danger); border-color:rgba(255,94,94,.3); }

.pulse-section{ margin-bottom:32px; }
.pulse-section__title{ font-family:var(--font-display); font-size:16px; font-weight:700; color:var(--text-primary); margin-bottom:16px; }
.pulse-loading, .pulse-error, .pulse-empty{ padding:20px; font-size:13.5px; color:var(--text-dim); font-family:var(--font-mono); }
.pulse-error{ color:var(--danger); }

.pulse-metric-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:12px; margin-bottom:16px; }
.pulse-metric-card{ padding:18px 20px; border-radius:9px; background:rgba(255,255,255,.02); border:1px solid var(--border-dim); }
.pulse-metric-card__label{ font-family:var(--font-mono); font-size:11px; letter-spacing:.05em; color:var(--text-dim); text-transform:uppercase; margin-bottom:8px; }
.pulse-metric-card__value{ font-family:var(--font-display); font-size:26px; font-weight:700; color:var(--text-primary); display:flex; align-items:baseline; gap:10px; }
.pulse-metric-card__sub{ font-size:12px; color:var(--text-secondary); margin-top:6px; }
.pulse-trend{ font-family:var(--font-mono); font-size:12px; font-weight:600; }
.pulse-trend--up{ color:var(--ok); }
.pulse-trend--down{ color:var(--danger); }
.pulse-trend--flat{ color:var(--text-dim); }

.pulse-subgrid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:14px; }
.pulse-list-card{ padding:16px 18px; border-radius:9px; background:rgba(255,255,255,.02); border:1px solid var(--border-dim); }
.pulse-list-card__title{ font-family:var(--font-mono); font-size:11.5px; letter-spacing:.04em; color:var(--text-dim); text-transform:uppercase; margin-bottom:10px; }
.pulse-list-row{ display:flex; justify-content:space-between; align-items:center; gap:10px; padding:7px 0; font-size:13px; color:var(--text-secondary); border-bottom:1px solid rgba(255,255,255,.04); }
.pulse-list-row:last-child{ border-bottom:none; }
.pulse-list-row span:first-child{ color:var(--text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:220px; }
.pulse-list-row--query span:first-child{ max-width:180px; }
.pulse-list-row__meta{ font-family:var(--font-mono); font-size:11.5px; flex:none; }
.pulse-list-empty{ font-size:12.5px; color:var(--text-dim); font-family:var(--font-mono); padding:8px 0; }

/* ══════ SETUP — real, in-app configuration status ══════ */
.setup-page{ padding:28px 32px; max-width:820px; }
.setup-header{ margin-bottom:24px; }
.setup-header__title{ font-family:var(--font-display); font-size:24px; font-weight:700; color:var(--text-primary); margin-bottom:6px; }
.setup-header__sub{ font-size:14px; color:var(--text-secondary); line-height:1.55; }

.setup-card{ padding:20px 22px; border-radius:10px; background:rgba(255,255,255,.02); border:1px solid var(--border-dim); margin-bottom:16px; }
.setup-card__title{ font-family:var(--font-display); font-size:15px; font-weight:700; color:var(--text-primary); display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.setup-card__badge{ font-family:var(--font-mono); font-size:10px; letter-spacing:.04em; padding:2px 8px; border-radius:10px; font-weight:600; }
.setup-card__badge--safe{ color:var(--ok); background:rgba(126,217,87,.12); border:1px solid rgba(126,217,87,.3); }
.setup-card__badge--live{ color:var(--text-dim); background:rgba(255,255,255,.05); border:1px solid var(--border-dim); }
.setup-card__badge--off{ color:var(--danger); background:rgba(255,94,94,.1); border:1px solid rgba(255,94,94,.3); }
.setup-card__desc{ font-size:13px; color:var(--text-secondary); line-height:1.55; margin-bottom:14px; }

.setup-input-row{ display:flex; gap:10px; flex-wrap:wrap; }
.setup-input{ flex:1; min-width:220px; padding:11px 14px; border-radius:7px; font-family:var(--font-mono); font-size:13px; background:rgba(255,255,255,.03); border:1px solid var(--border-dim); color:var(--text-primary); }
.setup-input:focus{ outline:none; border-color:var(--signal); }
.setup-save-btn, .setup-refresh-btn{
  font-family:var(--font-mono); font-size:12px; font-weight:700; letter-spacing:.03em; padding:0 18px;
  background:var(--signal); color:#08201c; border:none; border-radius:7px; cursor:pointer; flex:none;
}
.setup-refresh-btn{ margin-top:12px; padding:9px 16px; background:none; border:1px solid var(--border-dim); color:var(--text-dim); }
.setup-refresh-btn:hover{ border-color:var(--signal); color:var(--signal); }
.setup-input-status{ font-size:12px; margin-top:8px; color:var(--text-dim); }

.setup-checklist{ display:flex; flex-direction:column; gap:8px; margin-bottom:6px; }
.setup-check-row{ display:flex; align-items:center; gap:10px; padding:8px 12px; border-radius:6px; background:rgba(255,255,255,.015); }
.setup-check-icon{ font-family:var(--font-mono); font-weight:700; font-size:13px; flex:none; color:var(--text-dim); }
.setup-check-name{ font-family:var(--font-mono); font-size:12.5px; color:var(--text-primary); flex:none; min-width:170px; }
.setup-check-note{ font-size:12px; color:var(--text-dim); }

.setup-steps{ display:flex; flex-direction:column; gap:10px; }
.setup-step{ font-size:13px; color:var(--text-secondary); line-height:1.55; }
.setup-step b{ color:var(--text-primary); }
.setup-step code{ font-family:var(--font-mono); font-size:12px; background:rgba(255,255,255,.06); padding:1px 5px; border-radius:3px; }
.setup-link{ color:var(--signal); text-decoration:underline; }

/* ── Setup: backend provider selector ── */
.setup-provider-row{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:10px; margin-bottom:14px; }
.setup-provider-option{
  display:flex; flex-direction:column; gap:5px; padding:14px 16px; border-radius:8px;
  background:rgba(255,255,255,.02); border:1px solid var(--border-dim); cursor:pointer; position:relative;
}
.setup-provider-option input{ position:absolute; top:14px; right:14px; }
.setup-provider-option--active{ border-color:var(--signal); background:rgba(92,225,201,.06); }
.setup-provider-option__name{ font-size:13.5px; font-weight:600; color:var(--text-primary); padding-right:24px; }
.setup-provider-option__tag{ font-family:var(--font-mono); font-size:11px; color:var(--text-dim); }
.setup-provider-note{ font-size:13px; color:var(--text-secondary); line-height:1.6; padding:14px 16px; border-radius:8px; background:rgba(255,255,255,.02); border:1px solid var(--border-dim); }

/* ── Setup: the "why connect" value card ── */
.setup-card--why{ border-color:rgba(92,225,201,.25); background:linear-gradient(160deg,rgba(92,225,201,.06),rgba(255,255,255,.02)); }
.setup-why-list{ display:flex; flex-direction:column; gap:9px; margin:12px 0 4px; }
.setup-why-item{ font-size:13px; color:var(--text-secondary); line-height:1.55; padding-left:16px; position:relative; }
.setup-why-item::before{ content:'✓'; position:absolute; left:0; color:var(--signal); font-weight:700; }
.setup-why-item b{ color:var(--text-primary); }

/* ── Setup: real walkthrough sub-steps and inline warnings ── */
.setup-substeps{ margin:8px 0 0 18px; display:flex; flex-direction:column; gap:6px; }
.setup-substeps div{ font-size:12.5px; color:var(--text-secondary); line-height:1.5; }
.setup-warn{ color:var(--warn); font-weight:600; }

/* ── Setup: link out to the real standalone guide, replacing the wall of text ── */
.setup-guide-link{
  display:flex; align-items:center; gap:14px; margin-top:14px; padding:16px 18px; border-radius:9px;
  background:rgba(92,225,201,.06); border:1px solid rgba(92,225,201,.25); text-decoration:none;
  transition:border-color .15s, transform .15s;
}
.setup-guide-link:hover{ border-color:rgba(92,225,201,.5); transform:translateY(-1px); }
.setup-guide-link__icon{ font-size:22px; flex:none; }
.setup-guide-link__text{ flex:1; display:flex; flex-direction:column; gap:3px; }
.setup-guide-link__title{ font-size:14px; font-weight:600; color:var(--text-primary); }
.setup-guide-link__sub{ font-size:12px; color:var(--text-dim); }
.setup-guide-link__arrow{ font-size:18px; color:var(--signal); flex:none; }

/* ══════════════════════════════════════════════════════════════════════
   THE PULSE — rebuilt. Prefix .pls-* (the older .pulse-* rules are left
   in place and simply unused by the new markup; removing them is safe
   once nothing else references them).

   Direction: this is a signal room. The hive's honeycomb geometry shows
   up as a cut corner on every panel, teal (--signal) reads as live search
   data, gold (--wax-bright) as impressions/attention, violet (--iris) as
   on-site behaviour. Data is set in mono because it's instrument output;
   prose is set in the body face because it's meant to be read.
   ══════════════════════════════════════════════════════════════════════ */

/* Matches the old .pulse-page box exactly (padding 28/32, max-width 1100).
   Omitting these let the new Pulse run edge-to-edge and push the right-hand
   status rail off screen. */
.pls{ display:flex; flex-direction:column; gap:26px; padding:28px 32px 48px; max-width:1100px; }

/* ── header ── */
.pls-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:24px; flex-wrap:wrap; }
.pls-head__eyebrow{
  font-family:var(--font-mono); font-size:10px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--signal); margin-bottom:8px; display:flex; align-items:center; gap:7px;
}
.pls-head__eyebrow::before{
  content:''; width:6px; height:6px; border-radius:50%; background:var(--signal);
  box-shadow:0 0 0 0 rgba(92,225,201,.6); animation:pls-ping 2.6s ease-out infinite;
}
@keyframes pls-ping{ 0%{box-shadow:0 0 0 0 rgba(92,225,201,.5)} 70%{box-shadow:0 0 0 9px rgba(92,225,201,0)} 100%{box-shadow:0 0 0 0 rgba(92,225,201,0)} }
.pls-head__title{
  font-family:var(--font-display); font-size:34px; font-weight:700; letter-spacing:-.02em;
  color:var(--text-primary); margin:0 0 8px;
}
.pls-head__sub{ font-family:var(--font-body); font-size:13.5px; line-height:1.6; color:var(--text-dim); margin:0; max-width:58ch; }
.pls-head__controls{ display:flex; gap:10px; align-items:center; }

/* ── controls ── */
.pls-select,.pls-input,.pls-refresh{
  font-family:var(--font-mono); font-size:11.5px; color:var(--text-secondary);
  background:var(--comb-2); border:1px solid var(--border); padding:8px 11px;
  border-radius:3px; cursor:pointer; transition:border-color .15s, color .15s;
}
.pls-input{ cursor:text; min-width:130px; }
.pls-select:hover,.pls-refresh:hover,.pls-input:hover{ border-color:var(--signal-dim); color:var(--text-primary); }
.pls-select:focus-visible,.pls-input:focus-visible,.pls-refresh:focus-visible,
.pls-chip__act:focus-visible{ outline:2px solid var(--signal); outline-offset:2px; }
.pls-refresh{ color:var(--signal); }

/* ── connection chips ── */
.pls-chips{ display:flex; gap:10px; flex-wrap:wrap; }
.pls-chip{
  display:flex; align-items:center; gap:9px; padding:9px 14px;
  background:var(--comb-2); border:1px solid var(--border-dim); border-radius:3px;
  font-family:var(--font-mono); font-size:11.5px;
}
.pls-chip__dot{ width:7px; height:7px; border-radius:50%; background:var(--text-dim); flex:none; }
.pls-chip--on .pls-chip__dot{ background:var(--signal); box-shadow:0 0 8px rgba(92,225,201,.7); }
.pls-chip__label{ color:var(--text-secondary); }
.pls-chip__detail{ color:var(--text-dim); max-width:230px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pls-chip__act{ background:none; border:none; color:var(--text-dim); font-family:var(--font-mono); font-size:10.5px; cursor:pointer; padding:2px 4px; }
.pls-chip__act:hover{ color:var(--danger); }
.pls-chip__act--go{ color:var(--signal); }
.pls-chip__act--go:hover{ color:var(--honey-hi); }

/* ── block headers: the rule encodes which source the data came from ── */
.pls-block{ display:flex; flex-direction:column; gap:18px; }
.pls-block__head{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.pls-block__rule{ width:26px; height:2px; background:var(--signal); flex:none; }
.pls-block__rule--alt{ background:var(--iris); }
.pls-block__title{
  font-family:var(--font-display); font-size:15px; font-weight:700;
  letter-spacing:.14em; text-transform:uppercase; color:var(--text-primary); margin:0;
}
.pls-block__note{ font-family:var(--font-mono); font-size:10.5px; color:var(--text-dim); }

/* ── hero metrics with pulse traces ── */
.pls-heroes{ display:grid; grid-template-columns:repeat(auto-fit,minmax(215px,1fr)); gap:12px; }
.pls-hero{
  background:linear-gradient(160deg,var(--comb) 0%,var(--comb-2) 100%);
  border:1px solid var(--border-dim); padding:16px 16px 12px;
  clip-path:polygon(0 0, calc(100% - var(--hex-cut)) 0, 100% var(--hex-cut), 100% 100%, 0 100%);
  display:flex; flex-direction:column; gap:8px; min-width:0;
}
.pls-hero__label{
  font-family:var(--font-mono); font-size:9.5px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--text-dim);
}
.pls-hero__row{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.pls-hero__value{
  font-family:var(--font-display); font-size:30px; font-weight:700;
  letter-spacing:-.02em; color:var(--text-primary); line-height:1;
}
.pls-hero__sub{ font-family:var(--font-body); font-size:11.5px; color:var(--text-dim); line-height:1.5; }
.pls-trace{ width:100%; height:44px; display:block; overflow:visible; }
.pls-trace--empty{ height:44px; }

.pls-delta{ font-family:var(--font-mono); font-size:11px; font-weight:600; }
.pls-delta--up{ color:var(--ok); }
.pls-delta--down{ color:var(--danger); }
.pls-delta--flat{ color:var(--text-dim); }

/* ── the insight layer: the reason this page exists ── */
.pls-insights{ display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:12px; }
.pls-ins{
  background:var(--comb-2); border:1px solid var(--border-dim);
  border-left:2px solid var(--text-dim); padding:16px 18px;
  display:flex; flex-direction:column; gap:8px;
}
.pls-ins--act{ border-left-color:var(--wax-bright); }
.pls-ins--fix{ border-left-color:var(--scan-blue); }
.pls-ins--ok{ border-left-color:var(--ok); }
.pls-ins__kicker{
  font-family:var(--font-mono); font-size:9.5px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--text-dim);
}
.pls-ins--act .pls-ins__kicker{ color:var(--wax-bright); }
.pls-ins--fix .pls-ins__kicker{ color:var(--scan-blue); }
.pls-ins__headline{
  font-family:var(--font-display); font-size:16px; font-weight:600;
  color:var(--text-primary); margin:0; line-height:1.35; letter-spacing:-.01em;
}
.pls-ins__body{ font-family:var(--font-body); font-size:12.5px; line-height:1.6; color:var(--text-secondary); margin:0; }
.pls-ins__list{ list-style:none; margin:4px 0 0; padding:0; display:flex; flex-direction:column; gap:1px; }
.pls-ins__list li{
  display:flex; justify-content:space-between; align-items:baseline; gap:14px;
  padding:7px 0; border-top:1px solid var(--border-dim);
}
.pls-ins__term{
  font-family:var(--font-mono); font-size:12px; color:var(--text-primary);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0;
}
.pls-ins__meta{ font-family:var(--font-mono); font-size:10.5px; color:var(--text-dim); white-space:nowrap; flex:none; }

/* ── panels, splits, tables ── */
.pls-splits{ display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:12px; }
.pls-splits--three{ grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); }
.pls-panel{
  background:var(--comb-2); border:1px solid var(--border-dim); padding:16px 18px;
  clip-path:polygon(0 0, calc(100% - var(--hex-cut)) 0, 100% var(--hex-cut), 100% 100%, 0 100%);
  min-width:0;
}
.pls-panel--tight{ padding:14px 16px; }
.pls-panel__bar{ display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:14px; flex-wrap:wrap; }
.pls-panel__title{
  font-family:var(--font-mono); font-size:10.5px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--text-label); margin-bottom:12px;
}
.pls-panel__bar .pls-panel__title{ margin-bottom:0; }
.pls-panel__tools{ display:flex; gap:8px; flex-wrap:wrap; }

.pls-table{ width:100%; border-collapse:collapse; font-family:var(--font-mono); font-size:11.5px; }
.pls-table th{
  text-align:right; font-weight:500; font-size:9.5px; letter-spacing:.13em;
  text-transform:uppercase; color:var(--text-dim); padding:0 0 9px; border-bottom:1px solid var(--border);
}
/* Must out-specify `.pls-table th` (0,1,1) — a bare `.pls-th--main` (0,1,0)
   loses to it and the label renders right-aligned. */
.pls-table th.pls-th--main{ text-align:left; }
.pls-table td{ padding:8px 0; border-bottom:1px solid var(--border-dim); color:var(--text-secondary); }
.pls-table tbody tr:hover td{ background:rgba(92,225,201,.04); color:var(--text-primary); }
.pls-td--main{
  text-align:left; color:var(--text-primary); max-width:1px; width:46%;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; padding-right:14px;
}
.pls-td--num{ text-align:right; padding-left:12px; white-space:nowrap; font-variant-numeric:tabular-nums; }
.pls-td--lead{ color:var(--signal); font-weight:600; }

/* ── share bars ── */
.pls-bar{ display:flex; height:7px; border-radius:2px; overflow:hidden; background:var(--cell); margin-bottom:12px; }
.pls-bar__seg{ display:block; height:100%; }
.pls-legend{ display:flex; flex-wrap:wrap; gap:10px 16px; font-family:var(--font-mono); font-size:10.5px; color:var(--text-dim); }
.pls-legend__item{ display:flex; align-items:center; gap:6px; }
.pls-legend__item b{ color:var(--text-primary); font-weight:600; }
.pls-legend__dot{ width:7px; height:7px; border-radius:1px; flex:none; }

/* ── ranked lists ── */
.pls-rank{ list-style:none; margin:0; padding:0; }
.pls-rank__row{
  display:flex; align-items:baseline; gap:11px; padding:8px 0;
  border-bottom:1px solid var(--border-dim); font-family:var(--font-mono); font-size:11.5px;
}
.pls-rank__row:last-child{ border-bottom:none; }
.pls-rank__n{ color:var(--text-dim); font-size:9.5px; width:14px; flex:none; }
.pls-rank__label{ color:var(--text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; min-width:0; }
.pls-rank__val{ color:var(--signal); font-weight:600; white-space:nowrap; flex:none; font-variant-numeric:tabular-nums; }
.pls-rank__unit{ color:var(--text-dim); font-weight:400; font-size:9.5px; }

/* ── states: direction, not mood ── */
.pls-skel{ padding:26px 0; }
.pls-skel__bar{
  height:2px; background:linear-gradient(90deg,transparent,var(--signal),transparent);
  background-size:200% 100%; animation:pls-sweep 1.3s ease-in-out infinite; margin-bottom:12px;
}
@keyframes pls-sweep{ 0%{background-position:200% 0} 100%{background-position:-200% 0} }
.pls-skel__text{ font-family:var(--font-mono); font-size:11.5px; color:var(--text-dim); }
.pls-fail{ background:rgba(255,94,94,.05); border:1px solid rgba(255,94,94,.25); border-left:2px solid var(--danger); padding:16px 18px; }
.pls-fail__title{ font-family:var(--font-display); font-size:14px; font-weight:600; color:var(--text-primary); margin-bottom:6px; }
.pls-fail__body{ font-family:var(--font-body); font-size:12.5px; line-height:1.6; color:var(--text-secondary); }
.pls-none{ font-family:var(--font-mono); font-size:11.5px; color:var(--text-dim); padding:14px 0; }
.pls-empty{ text-align:center; padding:52px 20px; border:1px dashed var(--border); }
.pls-empty__mark{ font-size:26px; color:var(--signal); margin-bottom:12px; }
.pls-empty__title{ font-family:var(--font-display); font-size:17px; font-weight:600; color:var(--text-primary); margin-bottom:8px; }
.pls-empty__body{ font-family:var(--font-body); font-size:13px; line-height:1.6; color:var(--text-dim); max-width:44ch; margin:0 auto; }

@media (max-width:640px){
  .pls-head__title{ font-size:26px; }
  .pls-head__controls{ width:100%; }
  .pls-select--range{ flex:1; }
  .pls-table th:nth-child(3),.pls-table td:nth-child(3){ display:none; }
  .pls-panel__bar{ align-items:stretch; }
  .pls-panel__tools{ width:100%; }
  .pls-input{ flex:1; }
}
@media (prefers-reduced-motion:reduce){
  .pls-head__eyebrow::before{ animation:none; }
  .pls-skel__bar{ animation:none; background:var(--signal-dim); }
}

/* ── Sparse-signal states ──────────────────────────────────────────────
   A new site is the common case, not the edge case, and it's the screen
   customers judge the product on. These make low data read as early
   rather than as broken. */
.pls-signal{ border:1px solid var(--border-dim); border-left:2px solid var(--signal-dim); padding:15px 18px; background:var(--comb-2); }
.pls-signal--sparse{ border-left-color:var(--signal); }
.pls-signal--none{ border-left-color:var(--text-dim); }
.pls-signal__title{ font-family:var(--font-display); font-size:14.5px; font-weight:600; color:var(--text-primary); margin-bottom:6px; }
.pls-signal__body{ font-family:var(--font-body); font-size:12.5px; line-height:1.65; color:var(--text-secondary); max-width:78ch; }
.pls-trace--empty{
  display:flex; align-items:center; font-family:var(--font-mono);
  font-size:9.5px; letter-spacing:.06em; color:var(--text-dim); opacity:.55;
}
.pls-ins__conf{
  margin-left:9px; padding:2px 6px; border:1px solid var(--border);
  border-radius:2px; font-size:8.5px; letter-spacing:.1em; color:var(--text-dim);
}

/* ── Generated missions ────────────────────────────────────────────────
   Its own section on purpose. These are built from the colony's own
   Search Console data, so they get a distinct treatment from anything in
   the 522-mission catalog — gold rail, evidence set in mono, and the
   self-verifying condition stated on every card. */
.pls-gen{ border:1px solid var(--border); border-top:2px solid var(--wax-bright); background:linear-gradient(180deg,rgba(201,127,31,.06) 0%,transparent 42%); padding:20px 22px; display:flex; flex-direction:column; gap:12px; }
.pls-gen__head{ display:flex; justify-content:space-between; align-items:flex-start; gap:18px; flex-wrap:wrap; }
.pls-gen__kicker{ font-family:var(--font-mono); font-size:9.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--wax-bright); margin-bottom:7px; }
.pls-gen__title{ font-family:var(--font-display); font-size:18px; font-weight:700; color:var(--text-primary); margin:0 0 7px; letter-spacing:-.01em; }
.pls-gen__sub{ font-family:var(--font-body); font-size:12.5px; line-height:1.6; color:var(--text-dim); margin:0; max-width:70ch; }
.pls-gen__won{ font-family:var(--font-mono); font-size:10.5px; color:var(--ok); border:1px solid rgba(92,217,126,.3); padding:5px 10px; border-radius:2px; white-space:nowrap; }

.pls-gm{ background:var(--comb-2); border:1px solid var(--border-dim); border-left:2px solid var(--wax); padding:15px 17px; display:flex; flex-direction:column; gap:9px; }
.pls-gm--slipping{ border-left-color:var(--danger); }
.pls-gm--low-ctr{ border-left-color:var(--scan-blue); }
.pls-gm--content-gap{ border-left-color:var(--iris); }
.pls-gm__top{ display:flex; justify-content:space-between; align-items:center; gap:12px; }
.pls-gm__kind{ font-family:var(--font-mono); font-size:9.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--text-dim); }
.pls-gm__impact{ font-family:var(--font-mono); font-size:9px; letter-spacing:.12em; padding:2px 7px; border:1px solid var(--border); border-radius:2px; color:var(--text-dim); }
.pls-gm__impact--critical{ color:var(--danger); border-color:rgba(255,94,94,.35); }
.pls-gm__impact--high{ color:var(--wax-bright); border-color:rgba(255,182,39,.3); }
.pls-gm__title{ font-family:var(--font-display); font-size:15.5px; font-weight:600; color:var(--text-primary); margin:0; line-height:1.35; }
.pls-gm__ev{ display:flex; flex-wrap:wrap; gap:8px 18px; }
.pls-gm__stat{ font-family:var(--font-mono); font-size:10.5px; color:var(--text-dim); }
.pls-gm__stat b{ color:var(--signal); font-weight:600; font-size:12.5px; margin-right:3px; }
.pls-gm__why{ font-family:var(--font-body); font-size:12.5px; line-height:1.65; color:var(--text-secondary); margin:0; max-width:74ch; }
.pls-gm__foot{ display:flex; justify-content:space-between; align-items:center; gap:14px; padding-top:9px; border-top:1px solid var(--border-dim); flex-wrap:wrap; }
.pls-gm__verify{ font-family:var(--font-mono); font-size:10px; color:var(--signal-dim); }
.pls-gm__dismiss{ background:none; border:none; font-family:var(--font-mono); font-size:10px; color:var(--text-dim); cursor:pointer; padding:3px 5px; }
.pls-gm__dismiss:hover{ color:var(--danger); }
.pls-gm__dismiss:focus-visible{ outline:2px solid var(--signal); outline-offset:2px; }
.pls-gm__done{ font-family:var(--font-mono); font-size:10.5px; color:var(--ok); padding-top:6px; line-height:1.6; }

/* Briefing · search-signal card — The Pulse's teal identity, matching the
   pattern of the other bf-card variants. */
.bf-card--signal{border:1px solid rgba(92,225,201,.55);outline:3px solid rgba(92,225,201,.15);outline-offset:3px;box-shadow:0 0 0 7px rgba(92,225,201,.05),0 0 26px rgba(92,225,201,.13),inset 0 0 0 1px rgba(92,225,201,.16);}
.bf-card--signal .bf-c-step{color:#5ce1c9;border-color:rgba(92,225,201,.25);}
.bf-card--signal .bf-c-num{color:#5ce1c9;text-shadow:0 0 22px rgba(92,225,201,.5);}
.bf-card--signal .bf-c-unit{color:#5ce1c9;border-color:rgba(92,225,201,.25);}
.bf-card--signal .bf-card-bot{border-color:rgba(92,225,201,.1);}
.bf-card--signal:hover{border-color:rgba(92,225,201,.85);box-shadow:0 0 0 7px rgba(92,225,201,.08),0 0 38px rgba(92,225,201,.22),inset 0 0 0 1px rgba(92,225,201,.26);}

/* ══ Tab legibility ═══════════════════════════════════════════════════
   Labels sat at rgba(255,255,255,.65) over the #20242c→#161920 wax-seal
   bevel, which read washed out. Lifting the fill alone would glare
   against that pressed-in surface, so the fill goes up AND a dark stroke
   goes behind it — the outline separates the glyphs from the bevel, which
   is what lets the lighter shade stay comfortable rather than harsh.

   `paint-order: stroke fill` is the important part: it paints the stroke
   BEHIND the fill, so only the outer half shows and the letterforms keep
   their weight. Without it, -webkit-text-stroke eats into the glyph and
   mono type at 12.5px turns spindly. Supported in current Chrome, Safari
   and Firefox; the text-shadow underneath covers anything older.
   ══════════════════════════════════════════════════════════════════════ */
.tab, .tab--comb, .tab--tool, .tab--nav{
  color:rgba(255,255,255,.92);
  -webkit-text-stroke:2.5px rgba(0,0,0,.82);
  paint-order:stroke fill;
  text-shadow:0 1px 1px rgba(0,0,0,.7);
}
/* Active tabs sit on a lit gradient, so they need less stroke — too much
   here would muddy the colour the active state is meant to announce. */
.tab.active, .tab--comb.active, .tab--tool.active, .tab--nav.active{
  color:#fff;
  -webkit-text-stroke:2.5px rgba(0,0,0,.5);
  paint-order:stroke fill;
  text-shadow:0 1px 2px rgba(0,0,0,.55);
}
.tab:hover, .tab--comb:hover, .tab--tool:hover, .tab--nav:hover{ color:#fff; }
/* Locked tabs must still read as unavailable — lift, but stay behind. */
.tab--locked{ color:rgba(255,255,255,.62); }
/* Hex glyphs were at .55 and disappeared next to brighter labels. */
.tab .tab__hx, .tab--comb .tab__hx{ opacity:.72; }
/* The group label was at .28 — nearly invisible. It's a signpost, so it
   should be quiet, not absent. */
.tab-tools-lead{ color:rgba(255,255,255,.42); text-shadow:0 1px 1px rgba(0,0,0,.6); }

/* ══ Pulse density ════════════════════════════════════════════════════
   .panel--center is `1fr` inside `#app{280px 1fr 260px}`, so a 1920px
   screen leaves roughly 1340px of usable width and a 2560px one nearly
   2000. Capping at 1100 threw that away while simultaneously stacking the
   two widest components, which is how the page ended up both narrow and
   endlessly tall. 1560 is the new ceiling — past that, prose lines get
   uncomfortable to read regardless of available room.
   ══════════════════════════════════════════════════════════════════════ */
.pls{ max-width:1560px; }

/* The two large tables side by side. This is the biggest single win:
   it roughly halves page height and doubles the width each table gets. */
.pls-tables{ display:grid; grid-template-columns:1fr; gap:12px; align-items:start; }
@media (min-width:1240px){ .pls-tables{ grid-template-columns:1fr 1fr; } }

/* Scroll the rows, not the page. 50 rows per table made the Pulse ~2,500px
   tall; now each table is a fixed-height panel and the two stay level. */
.pls-tablewrap{ overflow-y:auto; overflow-x:hidden; max-height:540px; margin:0 -2px; padding:0 2px; }
.pls-tablewrap::-webkit-scrollbar{ width:8px; }
.pls-tablewrap::-webkit-scrollbar-track{ background:transparent; }
.pls-tablewrap::-webkit-scrollbar-thumb{ background:var(--border); border-radius:4px; }
.pls-tablewrap::-webkit-scrollbar-thumb:hover{ background:var(--signal-dim); }
.pls-tablewrap{ scrollbar-width:thin; scrollbar-color:var(--border) transparent; }
/* Header has to stay put once the body scrolls, or the columns lose meaning. */
.pls-table thead th{ position:sticky; top:0; z-index:2; background:var(--comb-2); }

/* Devices/Countries are small; auto-fit stretched them across the full
   width and made them look emptier the wider the screen got. */
.pls-splits--pair{ grid-template-columns:1fr; }
@media (min-width:900px){ .pls-splits--pair{ grid-template-columns:1fr 1fr; max-width:760px; } }

/* Generated missions two-up once there's room for them to breathe. */
.pls-gen__grid{ display:grid; grid-template-columns:1fr; gap:10px; }
@media (min-width:1240px){ .pls-gen__grid{ grid-template-columns:1fr 1fr; } }

/* Wider screens can carry a fourth hero and a third insight comfortably. */
@media (min-width:1500px){
  .pls-heroes{ grid-template-columns:repeat(4,1fr); }
  .pls-insights{ grid-template-columns:repeat(2,1fr); }
}

/* ══ Command deck ═════════════════════════════════════════════════════
   All metrics from both sources sit together at the top; the directory
   lists go below. Previously Search and Visitors were two full stacks, so
   half the numbers an owner wanted were 2,000px down the page.
   ══════════════════════════════════════════════════════════════════════ */
.pls-deck{ display:flex; flex-direction:column; gap:14px; }
.pls-deck__head{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.pls-deckrow{ display:flex; flex-direction:column; gap:10px; position:relative; padding-left:14px; }
/* The rail is the source marker — teal for search, violet for on-site. */
.pls-deckrow::before{ content:''; position:absolute; left:0; top:3px; bottom:3px; width:2px; background:var(--signal); opacity:.5; }
.pls-deckrow__tag{ font-family:var(--font-mono); font-size:9.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--signal); }
.pls-deckrow__tag--alt{ color:var(--iris); }
.pls-deckrow:has(.pls-deckrow__tag--alt)::before{ background:var(--iris); }

/* Instrument readout — secondary numbers, deliberately small. Hairline
   dividers instead of boxes so it reads as one continuous strip. */
.pls-strip{ display:flex; flex-wrap:wrap; border:1px solid var(--border-dim); background:var(--comb-2); }
.pls-strip__cell{ flex:1 1 auto; min-width:118px; padding:10px 14px; border-right:1px solid var(--border-dim); display:flex; flex-direction:column; gap:3px; }
.pls-strip__cell:last-child{ border-right:none; }
.pls-strip__v{ font-family:var(--font-mono); font-size:16px; font-weight:600; color:var(--text-primary); font-variant-numeric:tabular-nums; }
.pls-strip__cell--good .pls-strip__v{ color:var(--ok); }
.pls-strip__cell--bad .pls-strip__v{ color:var(--decl); }
.pls-strip__k{ font-family:var(--font-mono); font-size:9px; letter-spacing:.11em; text-transform:uppercase; color:var(--text-dim); line-height:1.4; }

/* Where you rank — the distribution Google won't show without hand-built
   filters, and the fastest read of search health on the page. */
.pls-rank2{ border:1px solid var(--border-dim); background:var(--comb-2); padding:14px 16px; }
.pls-rank2__head{ display:flex; justify-content:space-between; align-items:baseline; gap:14px; margin-bottom:11px; flex-wrap:wrap; }
.pls-rank2__total{ font-family:var(--font-mono); font-size:10.5px; color:var(--text-dim); }
.pls-bar--tall{ height:12px; border-radius:2px; }

.pls-lists{ display:flex; flex-direction:column; gap:26px; }
#pls-l-search, #pls-l-visitors{ display:flex; flex-direction:column; gap:14px; }

@media (max-width:640px){
  .pls-strip__cell{ min-width:50%; flex:1 1 50%; }
}

/* Five across on wide screens. minmax drops to 190px so five still fit
   comfortably in the centre column before the explicit rule kicks in. */
.pls-heroes{ grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); }
@media (min-width:1500px){ .pls-heroes{ grid-template-columns:repeat(5,1fr); } }

/* Mini proportion bar — occupies the pulse-trace slot for share metrics,
   matching its 44px height so cards in a row stay aligned. */
.pls-mini{ height:44px; display:flex; flex-direction:column; justify-content:center; gap:7px; }
.pls-mini__track{ display:flex; height:9px; border-radius:2px; overflow:hidden; background:var(--cell); }
.pls-mini__fill{ display:block; height:100%; }
.pls-mini__rest{ display:block; height:100%; flex:1; opacity:.45; }
.pls-mini__legend{ display:flex; justify-content:space-between; gap:10px; font-family:var(--font-mono); font-size:9px; letter-spacing:.04em; color:var(--text-dim); }
.pls-mini__legend span:last-child{ text-align:right; }

/* ══ Fill the screen ══════════════════════════════════════════════════
   The 1560px cap was leaving a dead margin on wide monitors. Removing it
   entirely is only safe because every element that carries PROSE now caps
   itself in `ch` — line length is a typographic limit, not a layout one,
   so it belongs on the paragraph, never on the page. Tables, bars and
   number grids have no such limit and should take everything available.
   ══════════════════════════════════════════════════════════════════════ */
.pls{ max-width:none; }
.pls-ins__body{ max-width:68ch; }
.pls-ins__headline{ max-width:34ch; }
.pls-gen__sub{ max-width:80ch; }

/* One grid for all five breakdown panels. display:contents lets the two
   zone wrappers vanish from layout so search and visitor panels flow
   together instead of forming two rows with a seam between them. */
/* Each group is its own grid. The previous design fed ONE grid from two
   zones via display:contents — which changes layout but not DOM structure,
   so every `>` selector silently matched nothing. Panels are single-source
   per group anyway, so the indirection bought nothing and cost a real bug. */
.pls-bgrid{ display:grid; grid-template-columns:repeat(12,1fr); gap:12px; align-items:start; margin-bottom:8px; }
/* align-items:start is the fix for the vertical dead space: panels size to
   their own content instead of every one stretching to match the tallest.
   A 4-row source list should not be as tall as an 8-row page list. */
.pls-bgrid .pls-panel{ align-self:start; }

/* Wide screens get more columns rather than wider ones — a five-segment
   bar stretched to 1,800px is mostly empty space. */
.pls-insights{ grid-template-columns:repeat(auto-fit,minmax(360px,1fr)); }
.pls-gen__grid{ grid-template-columns:repeat(auto-fit,minmax(370px,1fr)); }
@media (min-width:1240px){ .pls-gen__grid{ grid-template-columns:repeat(auto-fit,minmax(370px,1fr)); } }
@media (min-width:1500px){ .pls-insights{ grid-template-columns:repeat(auto-fit,minmax(360px,1fr)); } }
/* Tables are the exception — they genuinely benefit from width, so they
   stay two-up and split whatever the screen gives them. */
.pls-tables{ grid-template-columns:1fr; }
@media (min-width:1240px){ .pls-tables{ grid-template-columns:1fr 1fr; } }
.pls-tablewrap{ max-height:620px; }

/* Tier ribbon — the editorial policy made visible, so the ordering is
   explained rather than mysterious. */
.pls-gm__tier{ display:inline-block; margin-right:9px; padding:2px 7px; border-radius:2px; font-size:8.5px; letter-spacing:.12em; background:rgba(255,255,255,.05); }
.pls-gm__tier--1{ color:var(--danger); background:rgba(255,94,94,.1); }
.pls-gm__tier--2{ color:var(--wax-bright); background:rgba(255,182,39,.1); }
.pls-gm__tier--3{ color:var(--scan-blue); background:rgba(79,157,255,.1); }
.pls-gm__tier--4{ color:var(--iris); background:rgba(138,125,255,.1); }
.pls-gm--collapsing{ border-left-color:var(--danger); }
.pls-gm--page-one-lower,.pls-gm--top3-no-clicks{ border-left-color:var(--wax-bright); }
.pls-gm--cannibalisation,.pls-gm--intent-mismatch{ border-left-color:var(--scan-blue); }
.pls-gm--rising{ border-left-color:var(--iris); }
.pls-gen__more{ align-self:flex-start; background:none; border:1px solid var(--border); color:var(--text-secondary); font-family:var(--font-mono); font-size:11px; padding:8px 14px; border-radius:3px; cursor:pointer; }
.pls-gen__more:hover{ border-color:var(--wax); color:var(--wax-bright); }
.pls-gen__more:focus-visible{ outline:2px solid var(--signal); outline-offset:2px; }

/* ══ Executive framing + new panels ═══════════════════════════════════
   Section headings are business questions rather than Google's
   vocabulary — the point being that every number should answer something
   an owner actually asks, not expose an analytics term.
   ══════════════════════════════════════════════════════════════════════ */
.pls-block__head--q{ margin-top:8px; }
.pls-deckrow__tag{ font-size:10.5px; letter-spacing:.1em; text-transform:none; font-weight:600; }

/* Footnote on a panel — states the definition or the caveat, so a number
   never has to be taken on trust. */
.pls-panel__foot{ margin-top:11px; padding-top:9px; border-top:1px solid var(--border-dim); font-family:var(--font-body); font-size:11px; line-height:1.55; color:var(--text-dim); }

/* Single dominant figure (content ROI). */
.pls-one{ display:flex; align-items:baseline; gap:10px; margin:2px 0 6px; }
.pls-one__v{ font-family:var(--font-display); font-size:30px; font-weight:700; color:var(--wax-bright); line-height:1; }
.pls-one__k{ font-family:var(--font-body); font-size:11.5px; color:var(--text-dim); line-height:1.4; }
.pls-one__name{ font-family:var(--font-mono); font-size:11.5px; color:var(--text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* Cluster strength — one row per surface, shortest bars are the gaps. */
.pls-clus{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:7px; }
.pls-clus__row{ display:flex; align-items:center; gap:9px; font-family:var(--font-mono); font-size:11px; }
.pls-clus__label{ flex:0 0 92px; color:var(--text-secondary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pls-clus__track{ flex:1; height:6px; background:var(--cell); border-radius:2px; overflow:hidden; }
.pls-clus__fill{ display:block; height:100%; background:linear-gradient(90deg,var(--wax),var(--wax-bright)); }
.pls-clus__v{ flex:0 0 34px; text-align:right; color:var(--text-primary); font-variant-numeric:tabular-nums; }

/* Pinned opportunity — the one thing to do, given the most weight on the
   page. Gold rail because it is action, not measurement. */
.pls-pin{ border:1px solid rgba(255,182,39,.3); border-left:3px solid var(--wax-bright); background:linear-gradient(100deg,rgba(201,127,31,.1) 0%,transparent 55%); padding:20px 24px; display:flex; flex-direction:column; gap:9px; }
.pls-pin__kicker{ font-family:var(--font-mono); font-size:9.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--wax-bright); }
.pls-pin__title{ font-family:var(--font-display); font-size:21px; font-weight:700; color:var(--text-primary); margin:0; line-height:1.3; letter-spacing:-.01em; max-width:38ch; }
.pls-pin__ev{ display:flex; flex-wrap:wrap; gap:8px 20px; font-family:var(--font-mono); font-size:11px; color:var(--text-dim); }
.pls-pin__ev b{ color:var(--signal); font-size:13.5px; font-weight:600; margin-right:3px; }
.pls-pin__why{ font-family:var(--font-body); font-size:13px; line-height:1.65; color:var(--text-secondary); max-width:72ch; }

/* ══ Reading the numbers, not just showing them ════════════════════════
   A section headed with a question has to answer it in sentences. This is
   the answer; the cards below are the evidence for it.
   ══════════════════════════════════════════════════════════════════════ */
.pls-read{
  font-family:var(--font-body); font-size:14px; line-height:1.7; color:var(--text-secondary);
  margin:0; max-width:88ch; border-left:2px solid var(--border); padding-left:14px;
}
.pls-read strong{ color:var(--text-primary); }

/* Data-quality warning. Louder than an insight card on purpose: a wrong
   number presented confidently is worse than no number, so this outranks
   everything below it. */
.pls-warn{
  border:1px solid rgba(255,182,39,.35); border-left:3px solid var(--wax-bright);
  background:rgba(201,127,31,.07); padding:15px 18px; display:flex; flex-direction:column; gap:7px;
}
.pls-warn__title{ font-family:var(--font-display); font-size:14.5px; font-weight:700; color:var(--wax-bright); }
.pls-warn__body{ font-family:var(--font-body); font-size:12.5px; line-height:1.65; color:var(--text-secondary); max-width:86ch; }
.pls-warn__body b{ color:var(--text-primary); }
.pls-warn__fix{ font-family:var(--font-mono); font-size:10.5px; color:var(--text-dim); line-height:1.55; }

/* A row belonging to another site in the same property. */
.pls-rank__row--foreign{ opacity:.5; }
.pls-rank__host{
  display:inline-block; margin-right:6px; padding:1px 5px; border-radius:2px;
  background:rgba(255,182,39,.12); color:var(--wax-bright); font-size:9px; letter-spacing:.04em;
}

/* The strip was stretching four cells across the full width, leaving big
   gaps between value and label. Cap the cell so they group left instead. */
.pls-strip__cell{ flex:0 1 210px; min-width:150px; }

/* Quality tables — visits alongside bounce and dwell, because a visit
   count on its own says nothing about whether the traffic is worth having. */
.pls-qual{ width:100%; border-collapse:collapse; font-family:var(--font-mono); font-size:11px; }
.pls-qual th{ text-align:right; font-weight:500; font-size:9px; letter-spacing:.12em; text-transform:uppercase; color:var(--text-dim); padding:0 0 8px; border-bottom:1px solid var(--border); }
.pls-qual th:first-child{ text-align:left; }
.pls-qual td{ padding:7px 0; border-bottom:1px solid var(--border-dim); color:var(--text-primary); }
.pls-qual tbody tr:last-child td{ border-bottom:none; }
.pls-qual__n{ text-align:right; padding-left:12px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.pls-panel__foot em{ font-style:italic; color:var(--text-secondary); }

/* ══ Breakdown grouping ═══════════════════════════════════════════════
   Nine panels of different data types, visual weights and SOURCES were
   sitting in one flat auto-fit grid. Nothing told the reader that Page
   Health comes from Search Console while traffic quality comes from
   Analytics, panels wrapped unevenly and orphaned two onto a second row,
   and Devices appeared twice — once per source — with different numbers.

   Fix is grouping, not rearranging. Panels are placed by CSS `order`
   rather than DOM position, because they arrive from two zones that load
   independently: grouping has to survive Analytics failing or returning
   late, which it regularly does.
   ══════════════════════════════════════════════════════════════════════ */
.pls-grp{
  grid-column:1 / -1; display:flex; align-items:center; gap:10px;
  font-family:var(--font-mono); font-size:10.5px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--text-secondary);
  margin:14px 0 -2px; padding-bottom:8px; border-bottom:1px solid var(--border-dim);
}
.pls-grp:first-child{ margin-top:0; }
.pls-grp__n{
  display:inline-flex; align-items:center; justify-content:center;
  width:17px; height:17px; border-radius:2px; flex:none;
  background:var(--wax-bright); color:var(--void); font-size:9.5px; font-weight:700; letter-spacing:0;
}
/* Naming the source is the point — it's what was missing. */
.pls-grp__src{
  margin-left:auto; font-size:9px; letter-spacing:.1em; color:var(--text-dim);
  border:1px solid var(--border-dim); padding:2px 7px; border-radius:2px; text-transform:none;
}
/* Panels sit on a consistent baseline within a group so a giant percentage
   next to a three-row list stops reading as two unrelated things. */
.pls-bgrid .pls-panel{ display:flex; flex-direction:column; }
.pls-panel--wide{ grid-column:1 / -1; }
.pls-panel--wide .pls-clus{ display:grid; grid-template-columns:repeat(auto-fit,minmax(215px,1fr)); gap:8px 26px; }
/* Push every footnote to the bottom edge so cards in a row align. */
.pls-bgrid .pls-panel .pls-panel__foot{ margin-top:auto; }
.pls-sub{
  font-family:var(--font-mono); font-size:9px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--text-dim); margin:12px 0 7px;
}
.pls-sub:first-of-type{ margin-top:6px; }

/* ══ Making it worth looking at ═══════════════════════════════════════
   The grouping fixed comprehension; this fixes engagement. Three changes
   that are all informational, not ornamental: a focal point per group, a
   colour rail naming the source at a glance, and real data shapes instead
   of thin bars.
   ══════════════════════════════════════════════════════════════════════ */

/* Explicit widths beat auto-fit here. Auto-fit sized panels to their
   minimum and left half of group 1 empty on a wide screen; these
   proportions give each group a deliberate focal panel instead. */
/* ⚠ DESCENDANT selector, not child. The panels live inside #pls-b-search
   and #pls-b-visitors, which use display:contents so their children become
   grid items. display:contents changes LAYOUT, not DOM STRUCTURE — the
   panels are still grandchildren as far as selectors are concerned, so
   `.pls-breakdown > .pls-panel` matched nothing at all. Every span, rail
   and hover rule below silently did nothing, which is why five panels
   collapsed into five default-width columns and clipped their own tables. */
/* Group 1 is four equal Search Console panels. Group 2 pairs panels of
   similar HEIGHT rather than similar importance — two long lists on one
   row, two short tables on the next — because a grid row is as tall as its
   tallest cell, and mismatched neighbours are what produced the voids. */
.pls-bgrid .pls-panel{ grid-column:span 4; }
.pls-bgrid .pls-sp3{ grid-column:span 3; }
.pls-bgrid .pls-sp5{ grid-column:span 5; }
.pls-bgrid .pls-sp6{ grid-column:span 6; }
.pls-bgrid .pls-sp7{ grid-column:span 7; }
@media (max-width:1400px){
  .pls-bgrid .pls-sp3{ grid-column:span 6; }
  .pls-bgrid .pls-sp5,
  .pls-bgrid .pls-sp6,
  .pls-bgrid .pls-sp7{ grid-column:span 12; }
}
@media (max-width:900px){
  .pls-bgrid .pls-panel{ grid-column:1 / -1; }
}

/* Source rail. Reading a label to learn where a number came from is work;
   a colour is instant. Teal = Search Console, violet = Analytics,
   gold = your own mission data. */
.pls-bgrid .pls-panel{
  position:relative; overflow:hidden;
  transition:border-color .18s ease, transform .18s ease, box-shadow .18s ease;
}
.pls-bgrid .pls-panel::before{
  content:''; position:absolute; top:0; left:0; right:0; height:2px;
  background:linear-gradient(90deg,var(--signal),transparent 70%); opacity:.75;
}
#pls-b-visitors .pls-panel::before{
  background:linear-gradient(90deg,var(--iris),transparent 70%);
}

.pls-bgrid .pls-panel:hover{
  border-color:var(--border-lit); transform:translateY(-2px);
  box-shadow:0 8px 26px rgba(0,0,0,.45);
}

/* Ring */
.pls-ring{ width:126px; height:126px; flex:none; }
.pls-ring__v{ font-family:var(--font-display); font-size:22px; font-weight:700; fill:var(--text-primary); }
.pls-ring__k{ font-family:var(--font-mono); font-size:8px; letter-spacing:.1em; fill:var(--text-dim); text-transform:uppercase; }
.pls-split2{ display:flex; align-items:center; gap:20px; flex-wrap:wrap; margin:4px 0 2px; }
.pls-legend--stack{ flex-direction:column; align-items:flex-start; gap:9px; }

/* One figure per panel at display size, so there is somewhere for the eye
   to land before it starts reading. */
.pls-panel__title{ display:flex; align-items:center; gap:8px; }

/* ══ Discovery funnel ══════════════════════════════════════════════════
   The hero. Every other panel answers a question; this one tells the
   story — how many people Google showed you to, and how few of them ended
   up doing anything. Bars are proportional to the top stage, so the
   collapse is visible before a single number is read.
   ══════════════════════════════════════════════════════════════════════ */
.pls-fun{
  border:1px solid var(--border); border-top:2px solid var(--wax-bright);
  background:linear-gradient(170deg,rgba(201,127,31,.09) 0%,transparent 45%);
  padding:22px 26px 20px; display:flex; flex-direction:column; gap:16px;
}
.pls-fun__head{ display:flex; justify-content:space-between; align-items:flex-start; gap:22px; flex-wrap:wrap; }
.pls-fun__kicker{ font-family:var(--font-mono); font-size:9.5px; letter-spacing:.22em; text-transform:uppercase; color:var(--wax-bright); margin-bottom:7px; }
.pls-fun__title{ font-family:var(--font-display); font-size:24px; font-weight:700; letter-spacing:-.015em; color:var(--text-primary); margin:0; }
.pls-fun__leak{
  display:flex; flex-direction:column; align-items:flex-end; gap:2px;
  border:1px solid rgba(255,94,94,.35); background:rgba(255,94,94,.07);
  padding:9px 14px; border-radius:3px;
}
.pls-fun__leak-k{ font-family:var(--font-mono); font-size:8.5px; letter-spacing:.18em; text-transform:uppercase; color:var(--danger); }
.pls-fun__leak-v{ font-family:var(--font-display); font-size:22px; font-weight:700; color:var(--danger); line-height:1; }
.pls-fun__leak-s{ font-family:var(--font-mono); font-size:9.5px; color:var(--text-dim); }

.pls-fun__list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:7px; }
.pls-fun__row{ position:relative; padding:13px 16px; overflow:hidden; border:1px solid var(--border-dim); }
/* The bar IS the number — proportional width against the first stage. */
.pls-fun__bar{
  position:absolute; inset:0 auto 0 0;
  background:linear-gradient(90deg,rgba(92,225,201,.20),rgba(92,225,201,.05));
  border-right:2px solid var(--signal);
}
.pls-fun__row--seam .pls-fun__bar{
  background:linear-gradient(90deg,rgba(138,125,255,.18),rgba(138,125,255,.04));
  border-right-color:var(--iris);
}
.pls-fun__row--leak{ border-color:rgba(255,94,94,.4); }
.pls-fun__row--leak .pls-fun__bar{
  background:linear-gradient(90deg,rgba(255,94,94,.20),rgba(255,94,94,.04));
  border-right-color:var(--danger);
}
.pls-fun__body{ position:relative; display:flex; align-items:baseline; gap:18px; }
.pls-fun__n{
  font-family:var(--font-display); font-size:28px; font-weight:700; line-height:1;
  color:var(--text-primary); min-width:88px; font-variant-numeric:tabular-nums;
}
.pls-fun__row--leak .pls-fun__n{ color:var(--danger); }
.pls-fun__meta{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.pls-fun__lbl{ font-family:var(--font-body); font-size:14px; font-weight:600; color:var(--text-primary); }
.pls-fun__note{ font-family:var(--font-body); font-size:11.5px; color:var(--text-dim); line-height:1.45; }
.pls-fun__drop{
  position:absolute; right:16px; top:50%; transform:translateY(-50%);
  font-family:var(--font-mono); font-size:10.5px; color:var(--text-dim); white-space:nowrap;
}
.pls-fun__drop.is-leak{ color:var(--danger); font-weight:600; }
.pls-fun__foot{ font-family:var(--font-body); font-size:11.5px; line-height:1.6; color:var(--text-dim); max-width:92ch; }
@media (max-width:700px){
  .pls-fun__drop{ position:static; transform:none; display:block; margin-top:7px; }
  .pls-fun__n{ font-size:23px; min-width:66px; }
}

/* ══ Polish pass ═══════════════════════════════════════════════════════ */

/* 1 · Heading hierarchy. Every section heading was the same weight, so the
   page read as a flat list of equally-important things. It isn't: the
   funnel is the story, the middle sections are evidence, the raw tables
   are reference. Three levels, and the funnel outranks all of them. */
.pls-block__title.pls-h2{ font-size:17px; letter-spacing:.1em; color:var(--text-primary); }
.pls-block__title.pls-h3{ font-size:12.5px; letter-spacing:.16em; color:var(--text-dim); font-weight:600; }
.pls-block__head--q{ margin-top:20px; }

/* 2 · Funnel: label leads, number follows. The number had all the visual
   weight, so the eye read "111 · 1 · 5 · 3" before learning what any of
   them were. Now the label is read first and the number answers it. */
.pls-fun__body{ display:flex; flex-direction:column; gap:5px; }
.pls-fun__meta{ display:flex; align-items:baseline; gap:14px; flex-direction:row; }
.pls-fun__lbl{
  font-family:var(--font-mono); font-size:11px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--text-secondary); font-weight:600; min-width:170px;
}
.pls-fun__n{ font-family:var(--font-display); font-size:26px; font-weight:700; line-height:1; color:var(--text-primary); font-variant-numeric:tabular-nums; }
.pls-fun__note{ font-family:var(--font-body); font-size:11.5px; color:var(--text-dim); }
.pls-fun__row{ padding:15px 18px; }

/* 3 · One health language: green → yellow → orange → red, everywhere.
   Colour was decorative before (teal, red, violet by source); now it means
   severity of loss and nothing else. The seam stays neutral because part
   of that gap is a change of instrument, not behaviour. */
.pls-fun__row--sev0 .pls-fun__bar{ background:linear-gradient(90deg,rgba(92,225,201,.22),rgba(92,225,201,.05)); border-right-color:var(--signal); }
.pls-fun__row--sev1 .pls-fun__bar{ background:linear-gradient(90deg,rgba(92,217,126,.20),rgba(92,217,126,.04)); border-right-color:var(--ok); }
.pls-fun__row--sev2 .pls-fun__bar{ background:linear-gradient(90deg,rgba(255,182,39,.20),rgba(255,182,39,.04)); border-right-color:var(--wax-bright); }
.pls-fun__row--sev3 .pls-fun__bar{ background:linear-gradient(90deg,rgba(255,138,60,.22),rgba(255,138,60,.04)); border-right-color:#ff8a3c; }
.pls-fun__row--sev4 .pls-fun__bar{ background:linear-gradient(90deg,rgba(255,94,94,.22),rgba(255,94,94,.04)); border-right-color:var(--danger); }
.pls-fun__row--seam .pls-fun__bar{ background:linear-gradient(90deg,rgba(255,255,255,.06),transparent); border-right:2px dashed var(--border-lit); }
.pls-fun__row--sev1 .pls-fun__n{ color:var(--ok); }
.pls-fun__row--sev2 .pls-fun__n{ color:var(--wax-bright); }
.pls-fun__row--sev3 .pls-fun__n{ color:#ff8a3c; }
.pls-fun__row--sev4 .pls-fun__n{ color:var(--danger); }
.pls-fun__row.is-leak{ border-color:rgba(255,94,94,.45); }
.pls-fun__drop{ position:absolute; right:18px; top:50%; transform:translateY(-50%); }
.pls-fun__row--sev3 .pls-fun__drop,
.pls-fun__row--sev4 .pls-fun__drop{ color:var(--danger); font-weight:600; }
.pls-fun__read{
  font-family:var(--font-body); font-size:14.5px; line-height:1.65; color:var(--text-primary);
  margin:2px 0 0; max-width:84ch; border-left:2px solid var(--wax-bright); padding-left:14px;
}
.pls-fun__foot{ font-size:11px; opacity:.75; }

/* 4 · Panels were blending into the background — a little more separation. */
.pls-bgrid .pls-panel,
.pls-tables .pls-panel{ border-color:var(--border); background:var(--comb); }

/* 5 · Alternating rows. A 2% shift makes long tables dramatically easier
   to track across. */
.pls-table tbody tr:nth-child(even) td{ background:rgba(255,255,255,.018); }
.pls-qual tbody tr:nth-child(even) td{ background:rgba(255,255,255,.018); }
.pls-rank__row:nth-child(even){ background:rgba(255,255,255,.015); }

/* 6 · Breathing room around the rank distribution. */
.pls-rank2{ margin:10px 0 4px; padding:18px 20px; }

/* 7 · Observation vs recommendation, so insight cards can be skimmed. */
.pls-ins__lbl{
  font-family:var(--font-mono); font-size:8.5px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--text-dim); margin-top:2px;
}

/* 8 · Missions are the payoff and were the weakest thing on the page —
   everything above them looked more expensive. More room, bigger titles. */
.pls-gen{ padding:26px 28px; gap:16px; }
.pls-gen__title{ font-size:21px; }
.pls-gm{ padding:19px 21px; gap:11px; }
.pls-gm__title{ font-size:17px; }
.pls-gm__stat b{ font-size:14px; }
.pls-pin{ padding:24px 28px; }
.pls-pin__title{ font-size:23px; }

/* 9 · Traces were too short to read. */
.pls-trace{ height:52px; }
.pls-trace--empty{ height:52px; }

/* ══ Polish, second pass ═══════════════════════════════════════════════ */

/* Observation vs recommendation. The previous pass labelled the
   observation but there was nothing to separate it from — the cards only
   ever described. Now the action gets its own colour and weight so a
   skimmer can jump straight to it. */
.pls-ins__lbl--do{ color:var(--wax-bright); }
.pls-ins__body--do{
  color:var(--text-primary); border-left:2px solid rgba(255,182,39,.4);
  padding-left:11px; margin-left:1px;
}

/* Position scale — replaces a sparkline that was 28 days of jitter in
   52px. Log scale, because on a linear one positions 1–10 collapse into
   almost nothing while a long tail eats the whole track. */
.pls-pos{ height:52px; display:flex; flex-direction:column; justify-content:center; gap:8px; }
.pls-pos__track{ position:relative; height:9px; background:var(--cell); border-radius:2px; }
.pls-pos__zone{
  position:absolute; left:0; top:0; bottom:0; border-radius:2px 0 0 2px;
  background:linear-gradient(90deg,rgba(92,217,126,.35),rgba(92,217,126,.10));
  border-right:1px dashed rgba(92,217,126,.5);
}
.pls-pos__mark{
  position:absolute; top:50%; width:11px; height:11px; border-radius:50%;
  transform:translate(-50%,-50%); border:2px solid var(--void);
  box-shadow:0 0 0 1px rgba(255,255,255,.25);
}
.pls-pos__legend{
  display:flex; justify-content:space-between; align-items:baseline;
  font-family:var(--font-mono); font-size:8.5px; letter-spacing:.06em; color:var(--text-dim);
}
.pls-pos__zone-l{ color:var(--ok); opacity:.8; }

/* ══ Fit and finish ════════════════════════════════════════════════════ */

/* 1 · Funnel weighting. The previous pass over-corrected: labels led, but
   number and label ended up near-equal and the row lost its focal point.
   Label still comes FIRST in reading order; the number is now clearly the
   larger of the two. Position carries the sequence, size carries emphasis. */
.pls-fun__n{ font-size:31px; }
.pls-fun__lbl{ font-size:10px; letter-spacing:.15em; min-width:158px; }
.pls-fun__read strong{ color:var(--wax-bright); font-weight:700; }

/* 2 · Sections need to breathe. The page reads as one continuous stream;
   this separates the acts. */
.pls{ gap:38px; }
.pls-block{ gap:20px; }
.pls-deck{ gap:18px; }
.pls-block__head--q{ margin-top:12px; }
.pls-lists{ gap:34px; }

/* 3 · Metric cards were cramped — the single cheapest change to how
   expensive the page feels. */
.pls-hero{ padding:20px 18px 17px; gap:10px; }
.pls-panel{ padding:19px 21px; }
.pls-strip__cell{ padding:13px 16px; }

/* 4 · The data-quality warning is the smartest thing on the page and read
   like a footnote. It should sound like the product is talking. */
.pls-warn{ padding:20px 24px; gap:10px; }
.pls-warn__title{ font-size:17px; font-weight:700; letter-spacing:-.01em; }
.pls-warn__body{ font-size:13.5px; line-height:1.75; }
.pls-warn__fix{ font-size:11px; line-height:1.65; }
/* Same treatment for the narrative read — same voice, same weight. */
.pls-read{ font-size:14.5px; line-height:1.75; padding-left:16px; }

/* 5 · Traces were too dim to register at a glance. Brighter, not thicker. */
.pls-trace polyline{ stroke-width:2; opacity:1; }
.pls-trace polygon{ opacity:1.15; }
.pls-trace circle{ r:3.2; }

/* 6 · Live hover on table rows — makes a long table feel responsive. */
.pls-table tbody tr:hover td{ background:rgba(92,225,201,.075); color:var(--text-primary); }
.pls-qual tbody tr:hover td{ background:rgba(92,225,201,.075); }
.pls-rank__row:hover{ background:rgba(92,225,201,.06); }

/* 7 · Mission titles are where the eye should land first. */
.pls-gm__title{ font-size:18.5px; line-height:1.3; }
.pls-pin__title{ font-size:25px; }

/* 8 · Search intent as bars rather than a stacked legend — it was the one
   text-heavy card sitting between a donut and a set of bars. */
.pls-ilg{ display:flex; flex-direction:column; gap:9px; flex:1; min-width:130px; }
.pls-ilg__row{ display:flex; align-items:center; gap:10px; font-family:var(--font-mono); font-size:10.5px; }
.pls-ilg__k{ flex:0 0 68px; color:var(--text-secondary); }
.pls-ilg__track{ flex:1; height:7px; background:var(--cell); border-radius:2px; overflow:hidden; }
.pls-ilg__fill{ display:block; height:100%; border-radius:2px; }
.pls-ilg__v{ flex:0 0 32px; text-align:right; color:var(--text-primary); font-weight:600; font-variant-numeric:tabular-nums; }

/* ══ Connection switcher ═══════════════════════════════════════════════
   Disconnect existed, but it was the only option — so changing property
   meant a full OAuth round-trip for what should be a dropdown. This
   separates the cheap case from the expensive one.
   ══════════════════════════════════════════════════════════════════════ */
.pls-switch{
  border:1px solid var(--border); border-left:2px solid var(--signal);
  background:var(--comb-2); padding:20px 24px;
  display:flex; flex-direction:column; gap:11px;
}
.pls-switch__head{ display:flex; justify-content:space-between; align-items:center; gap:16px; }
.pls-switch__title{ font-family:var(--font-display); font-size:16px; font-weight:700; color:var(--text-primary); }
.pls-switch__x{ background:none; border:none; color:var(--text-dim); font-size:14px; cursor:pointer; padding:2px 6px; line-height:1; }
.pls-switch__x:hover{ color:var(--danger); }
.pls-switch__lbl{ font-family:var(--font-mono); font-size:9.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--text-dim); }
.pls-switch__row{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.pls-switch__sel{ min-width:280px; max-width:520px; flex:0 1 auto; }
.pls-switch__go{
  font-family:var(--font-mono); font-size:11.5px; padding:8px 15px; cursor:pointer;
  background:var(--wax-bright); color:var(--void); border:none; border-radius:3px; font-weight:600;
}
.pls-switch__go:hover{ background:var(--honey-hi); }
.pls-switch__alt{
  font-family:var(--font-mono); font-size:11.5px; padding:8px 15px; cursor:pointer;
  background:transparent; color:var(--text-secondary); border:1px solid var(--border); border-radius:3px;
}
.pls-switch__alt:hover{ border-color:var(--signal); color:var(--text-primary); }
.pls-switch__help{ font-family:var(--font-mono); font-size:11px; color:var(--signal); text-decoration:none; }
.pls-switch__help:hover{ text-decoration:underline; }
.pls-switch__note{ font-family:var(--font-body); font-size:11.5px; line-height:1.6; color:var(--text-dim); max-width:80ch; }
.pls-switch__sep{ height:1px; background:var(--border-dim); margin:5px 0 2px; }
.pls-switch__go:focus-visible,.pls-switch__alt:focus-visible,.pls-switch__x:focus-visible{ outline:2px solid var(--signal); outline-offset:2px; }

/* ══ Google connection onboarding ══════════════════════════════════════
   Replaces a two-line empty state and two separate OAuth popups. The
   sequence that was losing people: click Connect → Google's red
   "unverified app" screen with no warning → abandon. Naming that screen
   before it appears turns a scare into a step, and asking once instead of
   twice halves the number of chances to abandon.
   ══════════════════════════════════════════════════════════════════════ */
.pls-onb{
  border:1px solid var(--border); border-top:2px solid var(--signal);
  background:linear-gradient(170deg,rgba(92,225,201,.06) 0%,transparent 46%);
  padding:32px 34px; display:flex; flex-direction:column; gap:14px; max-width:920px;
}
.pls-onb__kicker{ font-family:var(--font-mono); font-size:9.5px; letter-spacing:.22em; text-transform:uppercase; color:var(--signal); }
.pls-onb__title{ font-family:var(--font-display); font-size:27px; font-weight:700; letter-spacing:-.015em; color:var(--text-primary); margin:0; max-width:24ch; }
.pls-onb__lede{ font-family:var(--font-body); font-size:14.5px; line-height:1.7; color:var(--text-secondary); margin:0; max-width:70ch; }

.pls-onb__grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:12px; margin-top:4px; }
.pls-onb__item{
  display:grid; grid-template-columns:auto 1fr; gap:3px 12px; align-items:start;
  border:1px solid var(--border-dim); background:var(--comb-2); padding:14px 16px;
}
.pls-onb__ic{ grid-row:1 / span 2; font-size:17px; }
.pls-onb__item b{ font-family:var(--font-body); font-size:13.5px; color:var(--text-primary); }
.pls-onb__item span:last-child{ font-family:var(--font-body); font-size:11.5px; line-height:1.5; color:var(--text-dim); }

/* Set apart deliberately — this is the bit that decides whether someone
   completes the flow or backs out at Google's warning page. */
.pls-onb__heads{ border:1px solid rgba(255,182,39,.28); background:rgba(201,127,31,.06); padding:15px 18px; }
.pls-onb__heads-t{ font-family:var(--font-mono); font-size:9.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--wax-bright); margin-bottom:9px; }
.pls-onb__steps{ margin:0; padding-left:18px; display:flex; flex-direction:column; gap:8px; }
.pls-onb__steps li{ font-family:var(--font-body); font-size:12.5px; line-height:1.65; color:var(--text-secondary); }
.pls-onb__steps b{ color:var(--text-primary); }
.pls-onb__steps em{ color:var(--wax-bright); font-style:normal; font-weight:600; }

.pls-onb__act{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin-top:4px; }
.pls-onb__go{
  font-family:var(--font-body); font-size:15px; font-weight:600; padding:13px 26px; cursor:pointer;
  background:var(--wax-bright); color:var(--void); border:none; border-radius:3px;
}
.pls-onb__go:hover{ background:var(--honey-hi); }
.pls-onb__go:disabled{ opacity:.6; cursor:default; }
.pls-onb__go:focus-visible{ outline:2px solid var(--signal); outline-offset:3px; }
.pls-onb__help{ font-family:var(--font-mono); font-size:11.5px; color:var(--signal); text-decoration:none; }
.pls-onb__help:hover{ text-decoration:underline; }
.pls-onb__note{ font-family:var(--font-body); font-size:11.5px; color:var(--text-dim); }

/* Errors inline and human, not a browser alert() reciting OAuth mechanics. */
.pls-onb__err{ border:1px solid rgba(255,94,94,.3); border-left:2px solid var(--danger); background:rgba(255,94,94,.05); padding:14px 17px; margin-top:6px; }
.pls-onb__err-t{ font-family:var(--font-display); font-size:14px; font-weight:600; color:var(--text-primary); margin-bottom:5px; }
.pls-onb__err-b{ font-family:var(--font-body); font-size:12.5px; line-height:1.6; color:var(--text-secondary); }
.pls-onb__err-a{ display:inline-block; margin-top:8px; font-family:var(--font-mono); font-size:11px; color:var(--signal); text-decoration:none; }
.pls-onb__err-a:hover{ text-decoration:underline; }
.pls-onb__warn{ border:1px solid rgba(255,182,39,.3); border-left:2px solid var(--wax-bright); background:rgba(201,127,31,.06); padding:12px 16px; margin-top:10px; font-family:var(--font-body); font-size:12.5px; color:var(--text-secondary); }

/* ══ Setup · connection status ═════════════════════════════════════════
   The page named "Setup" had no connect button — that lived on The Pulse
   — while this page asked the customer to obtain a Google Cloud client
   ID. Operator configuration had leaked into the product; it now only
   appears when genuinely unconfigured, or with ?operator=1.
   ══════════════════════════════════════════════════════════════════════ */
.setup-conn{ border-left:2px solid var(--signal); }
.setup-conn__ok{ font-family:var(--font-mono); font-size:10.5px; color:var(--ok); margin-left:8px; letter-spacing:.08em; }
.setup-conn__rows{ display:flex; flex-direction:column; gap:1px; margin:12px 0 14px; }
.setup-conn__row{ display:flex; align-items:center; gap:11px; padding:11px 0; border-bottom:1px solid var(--border-dim); font-family:var(--font-mono); font-size:12px; }
.setup-conn__row:last-child{ border-bottom:none; }
.setup-conn__dot{ width:8px; height:8px; border-radius:50%; background:var(--text-dim); flex:none; }
.setup-conn__row.is-on .setup-conn__dot{ background:var(--ok); box-shadow:0 0 8px rgba(92,217,126,.6); }
.setup-conn__name{ color:var(--text-primary); min-width:130px; }
.setup-conn__state{ color:var(--text-dim); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.setup-conn__row.is-on .setup-conn__state{ color:var(--ok); }
.setup-conn__cta{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.setup-conn__go{ font-family:var(--font-body); font-size:14px; font-weight:600; padding:11px 22px; cursor:pointer; background:var(--wax-bright); color:var(--void); border:none; border-radius:3px; }
.setup-conn__go:hover{ background:var(--honey-hi); }
.setup-conn__go:disabled{ opacity:.6; cursor:default; }
.setup-conn__go:focus-visible{ outline:2px solid var(--signal); outline-offset:3px; }
.setup-conn__help{ font-family:var(--font-mono); font-size:11.5px; color:var(--signal); text-decoration:none; }
.setup-conn__help:hover{ text-decoration:underline; }
.setup-conn__note{ font-family:var(--font-body); font-size:11.5px; color:var(--text-dim); margin-top:10px; line-height:1.55; }
.setup-conn__done{ font-family:var(--font-body); font-size:13px; line-height:1.6; color:var(--ok); }

/* Buried pages — strengthen, never duplicate. Distinct from content-gap
   because the action is the opposite: gap means write, buried means
   deepen and link. */
.pls-gm--buried{ border-left-color:var(--wax); }
.pls-gm--buried .pls-gm__stat b{ color:var(--wax-bright); }

/* ── Muting irrelevant topics ──────────────────────────────────────────
   Demand-driven missions follow what Google shows you for, which is not
   the same as what your business is about. Per-query dismissal is a
   treadmill when Google keeps producing variants of the same off-target
   subject, so dismissal offers to mute the topic outright — and muted
   topics stay visible so this never becomes a trap. */
.pls-gm__gone{ display:flex; flex-direction:column; gap:9px; }
.pls-gm__gone-t{ font-family:var(--font-display); font-size:15px; font-weight:600; color:var(--text-dim); }
.pls-gm__gone-b{ font-family:var(--font-body); font-size:12.5px; line-height:1.6; color:var(--text-secondary); }
.pls-gm__gone-a{ display:flex; gap:10px; flex-wrap:wrap; margin-top:2px; }
.pls-gm__mute{ font-family:var(--font-mono); font-size:11px; padding:8px 13px; cursor:pointer; background:transparent; color:var(--wax-bright); border:1px solid rgba(255,182,39,.35); border-radius:3px; }
.pls-gm__mute:hover{ background:rgba(201,127,31,.12); }
.pls-gm__keep{ font-family:var(--font-mono); font-size:11px; padding:8px 13px; cursor:pointer; background:transparent; color:var(--text-dim); border:1px solid var(--border); border-radius:3px; }
.pls-gm__keep:hover{ color:var(--text-primary); }
.pls-gen__muted{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding-top:6px; }
.pls-gen__muted-l{ font-family:var(--font-mono); font-size:9.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--text-dim); }
.pls-gen__chip{ font-family:var(--font-mono); font-size:10.5px; padding:4px 9px; cursor:pointer; background:var(--cell); color:var(--text-dim); border:1px solid var(--border-dim); border-radius:2px; }
.pls-gen__chip:hover{ color:var(--danger); border-color:rgba(255,94,94,.4); }

/* ── Dismiss control ───────────────────────────────────────────────────
   Was a bare "Not relevant" text link. Two problems: it read as either
   "hide this" or "this finding is wrong", and it gave no hint that it
   could be undone — so the safe move was to not click it, which left
   irrelevant findings occupying slots forever. */
.pls-gm__foot{ align-items:flex-end; gap:16px; }
.pls-gm__verify{ display:flex; align-items:flex-start; gap:7px; line-height:1.5; max-width:44ch; }
.pls-gm__verify-ic{ color:var(--signal); font-size:11px; flex:none; margin-top:1px; }

.pls-gm__dismiss{
  display:flex; flex-direction:column; align-items:flex-start; gap:1px;
  padding:8px 13px; border:1px solid var(--border); border-radius:3px;
  background:transparent; cursor:pointer; flex:none;
  transition:border-color .15s, background .15s;
}
.pls-gm__dismiss:hover{ border-color:rgba(255,94,94,.45); background:rgba(255,94,94,.06); }
.pls-gm__dismiss-ic{ display:none; }
.pls-gm__dismiss-t{ font-family:var(--font-body); font-size:12px; font-weight:600; color:var(--text-secondary); white-space:nowrap; }
.pls-gm__dismiss:hover .pls-gm__dismiss-t{ color:var(--danger); }
.pls-gm__dismiss-s{ font-family:var(--font-mono); font-size:9px; letter-spacing:.1em; text-transform:uppercase; color:var(--text-dim); }

/* Follow-up: two real choices, each stating its own scope. */
.pls-gm__gone-t{ color:var(--ok); }
.pls-gm__gone-a{ gap:10px; }
.pls-gm__mute,.pls-gm__keep{ display:flex; flex-direction:column; align-items:flex-start; gap:2px; padding:10px 15px; text-align:left; }
.pls-gm__mute b,.pls-gm__keep b{ font-family:var(--font-body); font-size:12.5px; font-weight:600; }
.pls-gm__mute span,.pls-gm__keep span{ font-family:var(--font-mono); font-size:9px; letter-spacing:.08em; text-transform:uppercase; color:var(--text-dim); }
.pls-gm__gone-n{ font-family:var(--font-body); font-size:11px; color:var(--text-dim); margin-top:4px; }
.pls-gm__gone-n b{ color:var(--text-secondary); }
@media (max-width:520px){
  .pls-gm__foot{ flex-direction:column; align-items:stretch; }
  .pls-gm__dismiss{ align-items:center; }
}

/* Funnel divergence — Search Console clicks vs Analytics organic arrivals.
   Unexplained, a 13x gap reads as a catastrophic click-through failure.
   Explained, it's a measurement seam plus a channel the funnel can't see. */
.pls-fun__gap{ border:1px solid rgba(79,157,255,.28); border-left:2px solid var(--scan-blue); background:rgba(79,157,255,.05); padding:16px 19px; display:flex; flex-direction:column; gap:8px; }
.pls-fun__gap-t{ font-family:var(--font-display); font-size:15px; font-weight:600; color:var(--text-primary); }
.pls-fun__gap-b{ font-family:var(--font-body); font-size:12.5px; line-height:1.6; color:var(--text-secondary); }
.pls-fun__gap-l{ margin:2px 0 0; padding-left:18px; display:flex; flex-direction:column; gap:7px; }
.pls-fun__gap-l li{ font-family:var(--font-body); font-size:12.5px; line-height:1.65; color:var(--text-secondary); }
.pls-fun__gap-l b{ color:var(--text-primary); }
