/* ════════════════════════════════════════════════════════════════════════════
   ASSESS CORE STYLES — design tokens, nav, the scan box, the loading steps, the
   verification modal and the whole report.

   Shared by /assess and every sector landing page, for the same reason
   assess-core.js is: the report is ~2,000 lines of markup produced by one
   renderer, and a second copy of its CSS would drift from the first the moment
   anyone touched either. A sector page links this, then adds only the CSS for
   its own landing sections.
   ════════════════════════════════════════════════════════════════════════════ */

  /* THIS FILE USED TO OPEN WITH A PALETTE, and that one block undid the whole
     design system on /assess and on every sector landing page.

     Fourteen tokens — the canvas, the surfaces, the ink, the brand, the radius
     and both faces — were declared here as literals, UNLAYERED. Unlayered CSS
     beats every cascade layer, so the published revision resolved correctly,
     was emitted correctly, and lost to these lines on the only pages that link
     this sheet. The product went orange and /assess stayed indigo.

     There is no palette here now. Every name below comes from /theme.css, which
     points the legacy names at the canonical --ag-* tokens, so this page repaints
     with the rest of the platform when a revision is published. */
  * { box-sizing: border-box; }
  html,body { margin:0; }
  body { font-family: var(--font); color: var(--text); background: var(--bg); -webkit-font-smoothing: antialiased; overflow-x: hidden; }
  a { color: inherit; text-decoration: none; }

  .bg-glow { position: fixed; inset: 0; z-index: 0; pointer-events: none; }
  /* What sits behind the page is a design control, not a decision this file
     gets to make. It was two fixed indigo washes no token could reach. */
  .bg-glow::before { content:""; position:absolute; inset:0; background: var(--ag-backdrop, none); }

  nav { position: fixed; top:0; left:0; right:0; z-index:100; display:flex; align-items:center; justify-content:space-between;
    padding:0 28px; height:58px; background: var(--nav-bg); backdrop-filter: blur(20px); border-bottom:1px solid var(--border); }
  .brand { display:flex; align-items:center; gap:9px; font-weight:800; font-size:16px; letter-spacing:-0.04em; }
  .logo-mark { width:26px; height:26px; border-radius:var(--ag-radius-sm); background: var(--ag-signal);
    display:grid; place-items:center; font-size:12px; font-weight:800; color: var(--ag-signal-contrast); }
  /* The brand as TYPE is --brand-text. --brand is the fill, and on a light
     signal the dot was the colour of the paper. */
  .brand-dot { color: var(--ag-signal-ink); }
  .nav-badge { font-size:10px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--brand-text);
    background:var(--brand-dim); border:1px solid color-mix(in srgb, var(--ag-signal) 30%, transparent); padding:3px 8px; border-radius:5px; }
  .nav-right { display:flex; align-items:center; gap:14px; }
  .nav-link { font-size:13px; color:var(--muted); transition:color .15s; }
  .nav-link:hover { color:var(--text); }
  .btn-sm { font-family:var(--font); font-size:13px; font-weight:600; cursor:pointer; border-radius:8px; padding:7px 14px;
    border:1px solid var(--border-strong); background:var(--surface-1); color:var(--text); transition:all .15s; }
  .btn-sm:hover { background:var(--surface-2); border-color:var(--brand); }

  /* Mobile nav. The bar is shared by every page on this stylesheet, so the
     burger lives here and assess-core.js injects the button — a page gets the
     collapse by using the standard nav/.nav-right markup, not by opting in.
     The panel is opaque (--surface-1, not the translucent --nav-bg) so links
     stay readable over whatever it covers. */
  .nav-burger { display:none; font-family:var(--font); background:var(--surface-1);
    border:1px solid var(--border-strong); color:var(--text); width:38px; height:38px;
    border-radius:9px; font-size:17px; line-height:1; cursor:pointer;
    align-items:center; justify-content:center; transition:border-color .15s; }
  .nav-burger:hover { border-color:var(--brand); }
  @media (max-width:820px){
    .nav-burger { display:inline-flex; }
    /* Fixed, so the open menu doesn't push the page or ride inside the 58px bar. */
    .nav-right { position:fixed; top:58px; left:0; right:0; flex-direction:column;
      align-items:stretch; gap:4px; background:var(--surface-1);
      border-bottom:1px solid var(--border); padding:10px 16px 16px;
      box-shadow:0 14px 30px rgba(2,6,23,.14); display:none; }
    .nav-right.open { display:flex; }
    .nav-link { padding:12px; border-radius:9px; font-size:15px; }
    .nav-link:hover { background:var(--surface-2); }
    .btn-sm { width:100%; margin-top:6px; padding:11px 14px; font-size:14px; }
  }

  main { position:relative; z-index:1; max-width:900px; margin:0 auto; padding:110px 24px 100px; }

  /* Hero / input */
  .hero { text-align:center; margin-bottom:8px; }
  .eyebrow { display:inline-flex; align-items:center; gap:7px; font-size:12px; font-weight:600; color:var(--brand-text);
    background:var(--brand-dim); border:1px solid color-mix(in srgb, var(--ag-signal) 30%, transparent); padding:5px 12px; border-radius:100px; margin-bottom:20px; }
  .eyebrow .dot { width:6px; height:6px; border-radius:50%; background:var(--good); box-shadow:0 0 8px var(--good); animation:pulse 2s infinite; }
  @keyframes pulse { 0%,100%{opacity:1} 50%{opacity:.4} }
  h1 { font-size:clamp(30px,5vw,50px); font-weight:900; letter-spacing:-0.035em; line-height:1.08; margin:0 0 14px; }
  h1 .grad { color: var(--ag-signal-ink); }
  .lede { font-size:clamp(15px,2vw,18px); color:var(--muted); max-width:56ch; margin:0 auto 34px; line-height:1.55; }

  /* Wide enough that the field and both actions sit on one line on a desktop,
     and wraps cleanly below that rather than crushing the input. */
  .checker { display:flex; gap:10px; max-width:900px; margin:0 auto; flex-wrap:wrap; justify-content:center; }
  .checker input { min-width:260px; }
  .checker input { flex:1; font-family:var(--font); font-size:15px; padding:15px 18px; border-radius:12px;
    border:1px solid var(--border-strong); background:var(--surface-1); color:var(--text); outline:none; transition:border-color .15s, box-shadow .15s; }
  .checker input:focus { border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-dim); }
  .btn-go { font-family:var(--font); font-size:15px; font-weight:700; cursor:pointer; white-space:nowrap; border:none;
    border-radius:var(--ag-radius-md); padding:0 var(--ag-control-px-lg); min-height:var(--ag-control-h-lg);
    color: var(--ag-signal-contrast); background: var(--ag-signal);
    transition:transform .12s, filter .2s; }
  .btn-go:hover { transform:translateY(-1px); filter:brightness(1.06); }
  .btn-go:disabled { opacity:.6; cursor:default; transform:none; }
  /* Secondary on purpose: the scan is free and should stay the obvious first
     move. This is for the reader who already knows what is wrong and wants it
     handled rather than measured again. */
  .btn-fix { font-family:var(--font); font-size:15px; font-weight:600; cursor:pointer; white-space:nowrap;
    border-radius:12px; padding:15px 22px; text-decoration:none; display:inline-flex; align-items:center;
    border:1px solid var(--border-strong); background:var(--surface-1); color:var(--text); transition:border-color .15s, background .15s; }
  .btn-fix:hover { border-color:var(--brand); background:var(--brand-dim); }
  .hint { font-size:12.5px; color:var(--faint); margin-top:14px; }
  .err-inline { color:var(--bad); font-size:13.5px; margin-top:14px; min-height:18px; }

  /* Quick / Detailed mode toggle */
  .mode-row { display:flex; justify-content:center; margin-top:14px; }
  .mode-toggle { display:inline-flex; gap:4px; padding:4px; border-radius:12px; background:var(--surface-1); border:1px solid var(--border); }
  .mode-opt { font-family:var(--font); cursor:pointer; border:1px solid transparent; background:transparent; color:var(--muted);
    border-radius:9px; padding:8px 16px; text-align:left; transition:all .15s; display:flex; flex-direction:column; gap:1px; }
  .mode-opt b { font-size:13.5px; font-weight:700; }
  .mode-opt small { font-size:11px; color:var(--faint); font-weight:500; }
  .mode-opt.active { background:var(--brand-dim); border-color:color-mix(in srgb, var(--ag-signal) 35%, transparent); color:var(--text); }
  .mode-opt.active small { color:var(--brand-text); }

  /* Loading */
  .loading { max-width:520px; margin:48px auto 0; display:none; }
  .loading.show { display:block; }
  .lstep { display:flex; align-items:center; gap:12px; padding:12px 16px; border-radius:12px; margin-bottom:8px;
    background:var(--surface-1); border:1px solid var(--border); color:var(--muted); font-size:14px; opacity:.5; transition:all .3s; }
  .lstep.active { opacity:1; border-color:color-mix(in srgb, var(--ag-signal) 35%, transparent); color:var(--text); }
  .lstep.done { opacity:1; color:var(--good); }
  .spin { width:16px; height:16px; border-radius:50%; border:2px solid var(--border-strong); border-top-color:var(--brand); animation:sp .7s linear infinite; }
  @keyframes sp { to { transform:rotate(360deg); } }
  .lstep .tick { width:16px; height:16px; }

  /* Report */
  .report { display:none; margin-top:48px; }
  .report.show { display:block; animation:rise .5s cubic-bezier(0.16,1,0.3,1); }
  @keyframes rise { from { opacity:0; transform:translateY(16px); } to { opacity:1; transform:none; } }

  .card { background:var(--surface-1); border:1px solid var(--border); border-radius:var(--radius); padding:26px; margin-bottom:18px; }
  .card-title { font-size:12px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--faint); margin:0 0 18px; }

  /* Scoreboard */
  .scoreboard { display:grid; grid-template-columns:auto 1fr; gap:32px; align-items:center; }
  @media (max-width:620px){ .scoreboard { grid-template-columns:1fr; text-align:center; justify-items:center; } }
  .gauge { position:relative; width:180px; height:180px; }
  .gauge svg { transform:rotate(-90deg); }
  .gauge-num { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; }
  .gauge-num b { font-size:46px; font-weight:900; letter-spacing:-0.03em; line-height:1; }
  .gauge-num span { font-size:12px; color:var(--muted); margin-top:4px; }
  .sb-meta h2 { font-size:24px; font-weight:800; letter-spacing:-0.02em; margin:0 0 4px; }
  .sb-meta .dom { font-family:var(--mono); font-size:13px; color:var(--brand-text); margin-bottom:14px; }
  .grade-pill { display:inline-block; font-size:13px; font-weight:700; padding:6px 14px; border-radius:100px; }
  .coverage-pill { display:inline-block; margin-left:8px; font-size:11.5px; font-weight:600; padding:5px 11px; border-radius:100px;
    background:var(--surface-2,var(--surface-1)); border:1px solid var(--border); color:var(--muted); cursor:default; }
  .coverage-pill.quick { color:var(--faint); }
  .sb-verdict { color:var(--muted); font-size:14.5px; line-height:1.55; margin-top:14px; max-width:46ch; }

  /* Visibility cards */
  .vis-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
  @media (max-width:620px){ .vis-grid { grid-template-columns:1fr; } }
  .vis { border:1px solid var(--border); border-radius:12px; padding:18px; background:var(--surface-2); }
  .vis-head { display:flex; align-items:center; gap:9px; font-weight:700; font-size:14px; margin-bottom:12px; }
  .vis-ico { width:22px; height:22px; border-radius:var(--ag-radius-sm); display:grid; place-items:center; font-size:12px; font-weight:800; color:var(--ag-signal-contrast); }
  .vis-status { display:inline-flex; align-items:center; gap:7px; font-size:13px; font-weight:600; padding:5px 11px; border-radius:100px; margin-bottom:10px; }
  .vis-note { font-size:12.5px; color:var(--muted); line-height:1.5; }
  .st-yes { background:var(--good-dim); color:var(--good); }
  .st-no { background:var(--bad-dim); color:var(--bad); }
  .st-na { background:rgba(255,255,255,0.05); color:var(--faint); }
  .vis-query { font-size:11.5px; color:var(--faint); margin-top:12px; padding-top:12px; border-top:1px solid var(--border);
    font-style:italic; line-height:1.4; }

  /* Category bars */
  .cat { margin-bottom:18px; }
  .cat:last-child { margin-bottom:0; }
  .cat-head { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:8px; }
  .cat-name { font-size:14.5px; font-weight:600; }
  .cat-score { font-family:var(--mono); font-size:13px; color:var(--muted); }
  .bar { height:9px; border-radius:100px; background:rgba(255,255,255,0.06); overflow:hidden; }
  .bar > i { display:block; height:100%; border-radius:100px; width:0; transition:width 1s cubic-bezier(0.16,1,0.3,1); }
  .findings { margin-top:10px; display:grid; grid-template-columns:1fr 1fr; gap:4px 20px; }
  @media (max-width:620px){ .findings { grid-template-columns:1fr; } }
  .finding { font-size:12.5px; color:var(--muted); display:flex; gap:7px; align-items:flex-start; line-height:1.4; }
  .finding.no { color:var(--faint); }
  .finding .m { font-weight:700; }
  .finding.yes .m { color:var(--good); }
  .finding.no .m { color:var(--bad); }

  /* Weakness / strength lists */
  .two-col { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
  @media (max-width:720px){ .two-col { grid-template-columns:1fr; } }
  .list-item { display:flex; gap:11px; padding:12px 0; border-bottom:1px solid var(--border); font-size:14px; line-height:1.5; }
  .list-item:last-child { border-bottom:none; }
  .list-item .ic { flex-shrink:0; margin-top:1px; font-size:15px; }

  /* CTA */
  .cta { text-align:center; background: var(--ag-signal-ink-soft);
    border:1px solid color-mix(in srgb, var(--ag-signal) 30%, transparent); border-radius:20px; padding:44px 30px; margin-top:26px; }
  .cta h3 { font-size:26px; font-weight:800; letter-spacing:-0.02em; margin:0 0 10px; }
  .cta p { color:var(--muted); font-size:15px; max-width:48ch; margin:0 auto 24px; line-height:1.55; }
  .btn-cta { display:inline-flex; align-items:center; gap:9px; font-size:16px; font-weight:700; cursor:pointer;
    border:none; border-radius:var(--ag-radius-md); padding:0 var(--ag-control-px-lg); min-height:var(--ag-control-h-lg);
    color: var(--ag-signal-contrast); background: var(--ag-signal);
    transition:transform .12s, filter .2s; }
  .btn-cta:hover { transform:translateY(-2px); filter:brightness(1.06); }
  .cta small { display:block; margin-top:16px; color:var(--faint); font-size:12.5px; }

  .disclaimer { text-align:center; font-size:12px; color:var(--faint); margin-top:20px; line-height:1.5; }

  /* Report toolbar — download PDF */
  .report-toolbar { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:16px; flex-wrap:wrap; }
  .rt-label { font-size:13px; color:var(--muted); font-family:var(--mono); } .rt-label b { color:var(--text); }
  .btn-pdf { display:inline-flex; align-items:center; gap:8px; font-family:var(--font); font-size:13.5px; font-weight:600; cursor:pointer;
    border:1px solid var(--border-strong); background:var(--surface-1); color:var(--text); border-radius:10px; padding:9px 16px; transition:all .15s; }
  .btn-pdf:hover { border-color:var(--ag-signal); background:var(--brand-dim); color:var(--ag-ink); }
  .btn-pdf:disabled { opacity:.6; cursor:default; }

  /* Gate banner — the hard "AI literally can't read/reach you" warning */
  .gate { display:flex; gap:14px; align-items:flex-start; background:var(--bad-dim); border:1px solid rgba(248,113,113,0.35);
    border-radius:14px; padding:18px 20px; margin-bottom:18px; }
  .gate .g-ico { font-size:22px; line-height:1; flex-shrink:0; margin-top:1px; }
  .gate h4 { margin:0 0 6px; font-size:15px; font-weight:800; color:var(--bad); letter-spacing:-0.01em; }
  .gate ul { margin:6px 0 0; padding-left:18px; color:var(--muted); font-size:13px; line-height:1.55; }

  /* Two-number headline: readiness vs visibility */
  .headline-nums { display:flex; gap:10px; margin-top:16px; flex-wrap:wrap; }
  .hnum { flex:1; min-width:120px; background:var(--surface-2); border:1px solid var(--border); border-radius:12px; padding:12px 14px; }
  .hnum b { display:block; font-size:26px; font-weight:900; letter-spacing:-0.03em; line-height:1; }
  .hnum b u { font-size:14px; font-weight:700; color:var(--faint); text-decoration:none; }
  .hnum span { display:block; font-size:11px; color:var(--muted); margin-top:5px; text-transform:uppercase; letter-spacing:.08em; }

  /* Evidence-tier badges */
  .tier { display:inline-block; font-size:9.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
    padding:2px 6px; border-radius:5px; margin-left:7px; vertical-align:middle; }
  .tier-proven { background:rgba(52,211,153,0.16); color:var(--good); }
  .tier-strong { background:var(--ag-signal-ink-soft); color:var(--ag-signal-ink); }
  .tier-moderate { background:rgba(251,191,36,0.14); color:var(--warn); }
  .tier-weak { background:rgba(255,255,255,0.06); color:var(--faint); }
  .gate-tag { display:inline-block; font-size:9.5px; font-weight:800; letter-spacing:.06em; text-transform:uppercase;
    padding:2px 6px; border-radius:5px; margin-left:7px; background:var(--bad-dim); color:var(--bad); vertical-align:middle; }

  /* Crawler-access bot table */
  .bot-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:8px; }
  .bot { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 13px; border-radius:10px;
    border:1px solid var(--border); background:var(--surface-2); font-size:13px; }
  .bot.blocked { border-color:rgba(248,113,113,0.4); background:var(--bad-dim); }
  .bot .b-name { font-weight:600; }
  .bot .b-engine { font-size:11px; color:var(--faint); }
  .bot .b-state { font-size:11px; font-weight:700; padding:3px 8px; border-radius:100px; white-space:nowrap; }
  .bot .allow { background:var(--good-dim); color:var(--good); }
  .bot .block { background:var(--bad-dim); color:var(--bad); }
  .bot-group-label { font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--faint);
    margin:16px 0 8px; }
  .bot-group-label:first-child { margin-top:0; }

  /* JS-render warning banner */
  .jsbanner { display:flex; gap:12px; align-items:flex-start; background:var(--warn-dim); border:1px solid rgba(251,191,36,0.32);
    border-radius:12px; padding:14px 16px; margin-top:14px; font-size:13px; color:var(--muted); line-height:1.5; }
  .jsbanner b { color:var(--warn); }

  /* Competitor tables inside visibility */
  .comp-table { margin-top:12px; padding-top:12px; border-top:1px solid var(--border); }
  .comp-row { display:flex; gap:9px; align-items:flex-start; padding:6px 0; font-size:12.5px; line-height:1.4; }
  .comp-row .rank { flex-shrink:0; font-family:var(--mono); font-size:11px; color:var(--faint); min-width:20px; }
  .comp-row.you { color:var(--good); font-weight:600; }
  .comp-row .cn { font-weight:600; }
  .comp-row .why { color:var(--faint); font-size:11.5px; }
  .comp-star { color:var(--warn); font-size:11px; }
  .vis-rate { font-family:var(--mono); font-size:12px; color:var(--muted); margin-bottom:8px; }
  .vis-excerpt { font-size:11.5px; color:var(--faint); margin-top:10px; padding:9px 11px; background:rgba(255,255,255,0.03);
    border-radius:8px; border-left:2px solid var(--border-strong); line-height:1.5; font-style:italic; }

  /* Off-site authority + GEO levers checklists */
  .lever-grid { display:grid; grid-template-columns:1fr 1fr; gap:6px 20px; }
  @media (max-width:620px){ .lever-grid { grid-template-columns:1fr; } }
  .lever { display:flex; gap:9px; align-items:flex-start; font-size:13px; padding:8px 0; border-bottom:1px solid var(--border); line-height:1.45; }
  .lever .lm { font-weight:700; flex-shrink:0; margin-top:1px; }
  .lever.yes .lm { color:var(--good); }
  .lever.no .lm { color:var(--bad); }
  .lever .lwhy { display:block; color:var(--faint); font-size:11.5px; margin-top:2px; }

  /* Schema depth chips */
  .schema-chips { display:flex; flex-wrap:wrap; gap:7px; margin-top:6px; }
  .chip { font-family:var(--mono); font-size:11.5px; padding:4px 10px; border-radius:7px; background:var(--brand-dim);
    border:var(--ag-border-thin) solid var(--ag-button-edge); color:var(--ag-signal-ink); }
  .chip.none { background:rgba(255,255,255,0.04); border-color:var(--border); color:var(--faint); }

  /* Prioritised issue list with tiers + why */
  .issue { display:flex; gap:12px; padding:14px 0; border-bottom:1px solid var(--border); }
  .issue:last-child { border-bottom:none; }
  .issue .i-ic { flex-shrink:0; font-size:16px; margin-top:1px; }
  .issue .i-body { flex:1; }
  .issue .i-title { font-size:14px; font-weight:600; margin-bottom:3px; }
  .issue .i-why { font-size:12.5px; color:var(--muted); line-height:1.5; }
  .issue .i-group { font-size:11px; color:var(--faint); margin-top:4px; }

  /* Methodology footer */
  .method { font-size:12.5px; color:var(--muted); line-height:1.6; }
  .method li { margin-bottom:7px; }
  .method-title { font-size:12px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--faint); margin:0 0 12px; }
  /* Tri-state findings: ✓ machine-readable · ◐ on page not AI-readable · ✕ missing */
  .finding.part { color:var(--warn); }
  .finding.part .m { color:var(--warn); }
  .soft-tag { font-size:10px; color:var(--warn); background:var(--warn-dim); border-radius:5px; padding:1px 6px; margin-left:6px; white-space:nowrap; }
  .legend { display:flex; flex-wrap:wrap; gap:14px; font-size:11.5px; color:var(--muted); margin:0 0 16px; }
  .legend b { font-weight:800; margin-right:3px; }
  .legend .lg-y b { color:var(--good); } .legend .lg-p b { color:var(--warn); } .legend .lg-n b { color:var(--bad); }
  .achv { margin-top:12px; font-size:12.5px; color:var(--warn); background:var(--warn-dim); border:1px solid var(--warn-dim); border-radius:9px; padding:8px 12px; }
  .achv b { font-size:15px; }
  .issue.partial { border-color:var(--warn-dim); }
  /* Head-to-head peer comparison */
  .peers { display:flex; flex-direction:column; gap:9px; }
  .peer { display:grid; grid-template-columns:minmax(120px,1.4fr) 3fr auto; align-items:center; gap:14px; padding:7px 10px; border-radius:9px; }
  .peer.you { background:var(--brand-dim); outline:1px solid var(--brand); }
  .p-name { font-size:13px; font-weight:600; display:flex; flex-direction:column; line-height:1.25; }
  .p-tag { display:inline-block; font-size:9.5px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; color:var(--ag-signal-ink); }
  .p-dom { font-size:11px; font-weight:400; color:var(--faint); }
  .p-bar { height:9px; background:var(--surface-2); border-radius:6px; overflow:hidden; }
  .p-bar i { display:block; height:100%; border-radius:6px; transition:width 1s cubic-bezier(.16,1,.3,1); }
  .p-score { font-weight:800; font-size:17px; text-align:right; display:flex; flex-direction:column; align-items:flex-end; line-height:1.1; }
  .p-score small { font-size:10px; font-weight:600; opacity:.85; }
  .peers-note { font-size:12px; color:var(--muted); margin-top:12px; }
  /* ── Perception sections — shared markup with the PDF, themed for the app ── */
  .perc h2 { font-size:15px; font-weight:700; letter-spacing:-.01em; margin:0 0 12px; }
  .perc .pnote { font-size:12.5px; color:var(--muted); margin:0 0 12px; }
  .perc .idtop { display:flex; align-items:center; gap:12px; margin-bottom:10px; flex-wrap:wrap; }
  .perc .pill { font-size:11px; font-weight:700; padding:2px 9px; border-radius:100px; }
  .perc .idmeta { font-size:12px; color:var(--muted); }
  .perc .idquote { font-style:italic; color:var(--muted); font-size:13px; border-left:3px solid var(--brand-dim); padding:4px 0 4px 12px; margin-bottom:10px; }
  .perc .idrow { font-size:12.5px; color:var(--muted); margin:5px 0; }
  .perc .idcols { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:12px; margin-top:14px; }
  .perc .idcol { border-radius:10px; padding:10px 12px; border:1px solid var(--border); background:var(--surface-2); }
  .perc .idcol.ok { border-color:var(--good-dim); } .perc .idcol.miss { border-color:var(--warn-dim); }
  .perc .idcol.bad { border-color:var(--bad-dim); } .perc .idcol.wh { border-color:var(--brand-dim); }
  .perc .idh { font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; margin-bottom:6px; color:var(--faint); }
  .perc .idcol.ok .idh { color:var(--good); } .perc .idcol.miss .idh { color:var(--warn); }
  .perc .idcol.bad .idh { color:var(--bad); } .perc .idcol.wh .idh { color:var(--brand-text); }
  .perc .idli { font-size:12px; color:var(--muted); margin:4px 0; line-height:1.45; }
  .perc .mapwrap { text-align:center; margin:12px 0 6px; overflow-x:auto; }
  .perc .btbl { width:100%; border-collapse:collapse; margin-top:8px; }
  .perc .btbl th { text-align:left; font-size:10.5px; text-transform:uppercase; letter-spacing:.06em; color:var(--faint); border-bottom:1px solid var(--border); padding:5px 8px; }
  .perc .btbl td { font-size:12.5px; padding:8px; border-bottom:1px solid var(--border); vertical-align:top; }
  .perc .btbl td.num, .perc .btbl th.num { text-align:right; white-space:nowrap; }
  .perc .btbl tr.you { background:var(--brand-dim); }
  .perc .btbl td.good { color:var(--good); font-weight:700; } .perc .btbl td.bad { color:var(--bad); font-weight:700; }
  .perc .btbl .attrs { color:var(--muted); }
  .perc .ytag { font-size:9.5px; font-weight:800; text-transform:uppercase; color:var(--brand-text); }
  .perc .qtxt { font-size:11px; color:var(--faint); margin-top:3px; line-height:1.4; }
  .perc .mini { display:inline-block; width:48px; height:6px; background:var(--surface-2); border-radius:4px; overflow:hidden; vertical-align:middle; margin-right:6px; }
  .perc .mini i { display:block; height:100%; }
  .perc .srcgrid { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:6px 14px; margin-top:10px; }
  .perc .srcrow { display:grid; grid-template-columns:1fr auto auto auto; gap:9px; align-items:center; font-size:12px; padding:5px 9px; border-radius:7px; background:var(--surface-2); }
  .perc .srcrow.mine { background:var(--brand-dim); font-weight:700; }
  .perc .sdom { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .perc .skind { font-size:9.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--faint); border:1px solid var(--border); border-radius:4px; padding:1px 5px; }
  .perc .scount { color:var(--faint); } .perc .spres { color:var(--brand-text); font-weight:700; }
  .perc .projq { font-size:13px; font-weight:700; color:var(--text); margin:8px 0 6px; }
  .perc .projdelta { font-size:13px; color:var(--muted); margin-bottom:10px; }
  .perc .projdelta .up { color:var(--good); font-weight:700; } .perc .projdelta .dn { color:var(--bad); font-weight:700; }
  .perc .projdelta .flat { color:var(--faint); font-weight:700; }
  .perc .projans { font-size:12.5px; color:var(--muted); line-height:1.6; background:var(--surface-2); border:1px solid var(--good-dim); border-radius:11px; padding:12px 14px; white-space:pre-wrap; }
  .perc .rmcols { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:14px; margin-top:12px; }
  .perc .rmh { font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--brand-text); border-bottom:2px solid var(--brand-dim); padding-bottom:5px; margin-bottom:9px; }
  .perc .rmitem { background:var(--surface-2); border:1px solid var(--border); border-radius:10px; padding:10px 12px; margin-bottom:8px; }
  .perc .rmtitle { font-size:12.5px; font-weight:700; color:var(--text); }
  .perc .rmdetail { font-size:11.5px; color:var(--muted); margin-top:4px; line-height:1.5; }
  .perc .rmmeta { display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin-top:8px; }
  .perc .rmeff { font-size:10px; color:var(--faint); }
  .perc .rmown { font-size:10px; font-weight:800; text-transform:uppercase; color:var(--muted); margin-left:auto; }
  .perc .rmown.ag { color:var(--brand-text); }
  .peer-insight { margin-top:12px; padding:11px 14px; background:var(--brand-dim); border:1px solid color-mix(in srgb, var(--ag-signal) 25%, transparent); border-radius:10px; font-size:13px; color:var(--text); line-height:1.5; }
  /* visibility: queries + metric key */
  .vq { margin:2px 0 16px; font-size:12.5px; }
  .vq summary { cursor:pointer; color:var(--brand-text); font-weight:600; }
  .vq-list { margin:10px 0 0; padding-left:20px; color:var(--muted); display:flex; flex-direction:column; gap:5px; font-size:12.5px; line-height:1.45; }
  .vmn { margin-top:16px; padding:11px 14px; background:var(--surface-2); border:1px solid var(--border); border-radius:10px; font-size:12px; color:var(--muted); line-height:1.6; }
  .vmn b { color:var(--text); }
  /* ── Email-verification modal ── */
  .vmodal { position:fixed; inset:0; z-index:1000; display:none; align-items:center; justify-content:center; padding:20px;
    background:rgba(10,10,15,0.55); backdrop-filter:blur(3px); }
  .vmodal.show { display:flex; }
  .vcard { position:relative; width:100%; max-width:420px; background:var(--surface-1); border:1px solid var(--border);
    border-radius:18px; padding:30px 28px 24px; box-shadow:0 24px 60px rgba(0,0,0,0.35); animation:vpop .18s cubic-bezier(.16,1,.3,1); }
  @keyframes vpop { from { opacity:0; transform:translateY(10px) scale(.98); } to { opacity:1; transform:none; } }
  .vclose { position:absolute; top:12px; right:14px; background:none; border:none; font-size:24px; line-height:1; color:var(--faint); cursor:pointer; padding:4px 8px; }
  .vclose:hover { color:var(--text); }
  .vico { font-size:30px; margin-bottom:8px; }
  .vcard h3 { font-size:20px; font-weight:800; letter-spacing:-.02em; margin:0 0 8px; color:var(--text); }
  .vsub { font-size:13.5px; color:var(--muted); line-height:1.5; margin:0 0 18px; }
  .vsub b { color:var(--text); }
  .vcard input { width:100%; padding:13px 15px; font-size:15px; border-radius:11px; border:1px solid var(--border-strong);
    background:var(--surface-2); color:var(--text); outline:none; transition:border-color .15s; }
  .vcard input:focus { border-color:var(--brand); }
  .vcode-in { text-align:center; letter-spacing:10px; font-size:24px; font-weight:700; font-family:var(--mono); }
  .vbtn { width:100%; margin-top:12px; padding:13px 16px; font-size:15px; font-weight:700; color:var(--ag-signal-contrast); background:var(--ag-signal);
    border:none; border-radius:11px; cursor:pointer; transition:filter .15s; }
  .vbtn:hover { filter:brightness(1.07); } .vbtn:disabled { opacity:.6; cursor:default; }
  .verr { color:var(--bad); font-size:13px; margin-top:10px; min-height:16px; line-height:1.4; }
  .vfine { font-size:11.5px; color:var(--faint); margin:14px 0 0; line-height:1.5; }
  .vfine a { color:var(--brand-text); text-decoration:none; } .vfine a:hover { text-decoration:underline; }

/* ════════════════════════════════════════════════════════════════════════════
   THE LADDERS — the conversation report.

   One visual carries the whole thing: a 0–100 track with TWO marks on it, the
   business and the rival the assistants named themselves. Everything else is a
   list. Colour is semantic only (red/amber/green + the brand for "you"); the
   accent is never spent on decoration, because on this page a coloured thing
   means a verdict.
   ════════════════════════════════════════════════════════════════════════════ */

/* ── Section rule: the hinge between "what happened" and "why" ───────────── */
.sec-rule { display:flex; align-items:center; gap:14px; margin:34px 0 18px; }
.sec-rule::before, .sec-rule::after { content:""; height:1px; background:var(--border); flex:1; }
.sec-rule span { font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  color:var(--faint); white-space:nowrap; }

/* ── The traffic light ───────────────────────────────────────────────────── */
.tlwrap { padding:30px 0 30px; }
.tlwrap.tl-sm { padding:24px 0 24px; }
.tl { position:relative; height:30px; border-radius:8px; border:1px solid var(--border);
  background:linear-gradient(to right,
    var(--bad-dim) 0%, var(--bad-dim) 49%,
    var(--warn-dim) 49%, var(--warn-dim) 79%,
    var(--good-dim) 79%, var(--good-dim) 100%); }
.tl-sm .tl { height:22px; }
.tl-split { position:absolute; top:0; bottom:0; width:1px; background:var(--border-strong); }
.tl-pin { position:absolute; top:-6px; bottom:-6px; width:3px; border-radius:2px; transform:translateX(-1.5px); }
.tl-pin.you { background:var(--brand); z-index:3; box-shadow:0 0 10px var(--brand-glow); }
.tl-pin.comp { background:var(--muted); z-index:2; opacity:.75; }
.tl-tag { position:absolute; font-size:10px; font-weight:800; letter-spacing:.06em; text-transform:uppercase;
  white-space:nowrap; padding:3px 7px; border-radius:5px; transform:translateX(-50%); max-width:190px;
  overflow:hidden; text-overflow:ellipsis; }
.tl-tag.you { top:-26px; color:var(--ag-signal-contrast); background:var(--ag-signal); }
.tl-tag.comp { bottom:-26px; color:var(--muted); background:var(--surface-2); border:1px solid var(--border-strong); }
.tl-scale { display:flex; justify-content:space-between; font-size:10px; color:var(--faint); margin-top:7px;
  font-variant-numeric:tabular-nums; }

/* ── Bottom line ─────────────────────────────────────────────────────────── */
.lede-card .lede-p { font-size:16px; line-height:1.68; color:var(--text); margin:0; max-width:74ch; }
.lede-card .lede-p b { color:var(--text); font-weight:700; }
.lede-quote { margin-top:16px; padding:16px 18px; border-radius:12px; background:var(--surface-2);
  border-left:3px solid var(--brand); font-size:14.5px; line-height:1.62; color:var(--muted); }
.lede-quote .lq-lab { display:block; font-size:10px; font-weight:700; letter-spacing:.1em;
  text-transform:uppercase; color:var(--faint); margin-bottom:8px; }

/* ── Dashboard ───────────────────────────────────────────────────────────── */
.ld-intro { font-size:13.5px; color:var(--muted); line-height:1.6; margin-bottom:6px; max-width:78ch; }
.ld-intro b { color:var(--text); }
.ld-legend { display:flex; gap:18px; flex-wrap:wrap; align-items:center; font-size:11.5px;
  color:var(--faint); margin-bottom:12px; }
.ld-legend i { display:inline-block; width:10px; height:3px; border-radius:2px; margin-right:6px;
  vertical-align:middle; }
.ld-legend .lg-you { background:var(--brand); } .ld-legend .lg-comp { background:var(--muted); opacity:.75; }
.ld-legend .lg-zones { margin-left:auto; }

.ld-table { border:1px solid var(--border); border-radius:12px; overflow:hidden; }
.ld-row { display:grid; grid-template-columns:1fr 200px 92px; gap:16px; align-items:center;
  padding:12px 16px; background:var(--surface-1); text-decoration:none; color:inherit;
  transition:background .12s; border-left:3px solid transparent; }
.ld-row + .ld-row { border-top:1px solid var(--border); }
.ld-row:hover { background:var(--surface-2); }
.ld-row.r { border-left-color:var(--bad); } .ld-row.a { border-left-color:var(--warn); }
.ld-row.g { border-left-color:var(--good); } .ld-row.untested { opacity:.62; }
.ld-q { font-size:14px; font-weight:650; line-height:1.3; }
.ld-q small { display:block; font-size:11px; font-weight:500; color:var(--faint); margin-top:3px; }
.ld-mini { position:relative; height:7px; border-radius:99px; border:1px solid var(--border);
  background:linear-gradient(to right, var(--bad-dim) 0 49%, var(--warn-dim) 49% 79%, var(--good-dim) 79% 100%); }
.ld-mini i { position:absolute; top:-4px; bottom:-4px; width:3px; border-radius:2px; transform:translateX(-1.5px); }
.ld-mini .mini-you { background:var(--brand); z-index:2; }
.ld-mini .mini-comp { background:var(--muted); opacity:.6; }
.ld-score { text-align:right; font-variant-numeric:tabular-nums; }
.ld-score b { font-size:19px; font-weight:800; letter-spacing:-.02em; }
.ld-score small { display:block; font-size:10.5px; color:var(--faint); }
.ld-nt { font-size:10.5px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--faint); }
.ld-notes { margin-top:12px; font-size:12.5px; color:var(--faint); line-height:1.6; }
.ld-notes p { margin:4px 0; }
.ld-none { font-size:14px; color:var(--muted); line-height:1.6; }
@media (max-width:720px) {
  .ld-row { grid-template-columns:1fr 74px; }
  .ld-mini { display:none; }
}

/* ── One conversation ────────────────────────────────────────────────────── */
.card.ladder { scroll-margin-top:74px; }
.lad-head { display:flex; gap:16px; align-items:flex-start; flex-wrap:wrap; }
.lad-t { flex:1; min-width:220px; }
.lad-t h3 { margin:0; font-size:18px; font-weight:750; letter-spacing:-.02em; }
.lad-n { font-size:10.5px; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  color:var(--faint); margin-top:5px; }
.lad-s { text-align:right; font-variant-numeric:tabular-nums; }
.lad-s b { font-size:30px; font-weight:800; letter-spacing:-.03em; line-height:1; }
.lad-s small { display:block; font-size:10px; color:var(--faint); letter-spacing:.08em;
  text-transform:uppercase; margin-top:3px; }
.lad-why { font-size:13.5px; color:var(--muted); line-height:1.6; margin-top:8px; max-width:74ch; }
/* What the ten questions actually do, straight from the vocabulary. Sits above
   the "why it matters" line because a reader asks what was tested before they
   ask why it was worth testing. */
.lad-asks { font-size:13.5px; color:var(--ink); line-height:1.6; margin-top:10px; max-width:74ch; }
/* A rung that asks the assistant about ITSELF produces the fix list and counts
   for nothing. Marked, because a green "Named" beside a score it did not move
   is the kind of detail that makes a reader distrust the whole table. */
.rns { display:block; font-size:10px; text-transform:uppercase; letter-spacing:.05em;
       color:var(--muted); margin-top:3px; text-align:right; }
.rung.unscored .rn { opacity:.45; }
.dimtbl { width:100%; border-collapse:collapse; font-size:13px; margin-top:10px; }
.dimtbl th { text-align:left; font-size:10.5px; text-transform:uppercase; letter-spacing:.06em;
             color:var(--muted); border-bottom:1px solid var(--line); padding:7px 8px; }
.dimtbl td { border-bottom:1px solid var(--line); padding:9px 8px; vertical-align:top; }
.dimtbl td.d-q { width:30%; }
.dimtbl td.d-q b { display:block; }
.dimtbl td.d-q small { color:var(--muted); }
.dimtbl td.d-a { color:var(--muted); line-height:1.55; }
.dimtbl td.d-s { width:56px; text-align:right; font-weight:800; font-variant-numeric:tabular-nums; }
.dim-stage { font-size:10.5px; text-transform:uppercase; letter-spacing:.08em; color:var(--muted);
             font-weight:700; margin:20px 0 2px; }
.lad-drop { margin:4px 0 14px; padding:12px 15px; border-radius:10px; background:var(--bad-dim);
  border-left:3px solid var(--bad); font-size:13.5px; color:var(--text); }
.lad-drop b { color:var(--bad); }

.rungs { border:1px solid var(--border); border-radius:12px; overflow:hidden; }
.rung { display:grid; grid-template-columns:32px 1fr 96px; gap:14px; padding:13px 16px;
  align-items:start; background:var(--surface-1); }
.rung + .rung { border-top:1px solid var(--border); }
.rung.drop { background:var(--bad-dim); }
.rung.untested { opacity:.6; }
.rung .rn { font-size:11px; color:var(--faint); font-variant-numeric:tabular-nums; padding-top:3px; }
.rq { font-size:14px; font-weight:620; line-height:1.45; }
.rq .star { color:var(--brand-text); text-decoration:none; font-weight:800; margin-right:5px; }
.rq .star:hover { text-decoration:underline; }
.rsrc { display:inline-block; margin-left:8px; font-size:9.5px; font-weight:700; letter-spacing:.07em;
  text-transform:uppercase; padding:2px 6px; border-radius:4px; color:var(--brand-text);
  background:var(--brand-dim); border:1px solid color-mix(in srgb, var(--ag-signal) 30%, transparent); vertical-align:middle; }
.rback { margin-top:6px; font-size:13px; color:var(--muted); line-height:1.55; }
.rback.muted { color:var(--faint); font-style:italic; }
.rtally { color:var(--faint); font-size:11.5px; white-space:nowrap; }
.rquote { margin-top:7px; padding-left:11px; border-left:2px solid var(--border-strong);
  font-size:13px; color:var(--muted); line-height:1.55; }
.rcause { margin-top:7px; font-size:11.5px; color:var(--faint); }
.rcause a { color:var(--brand-text); text-decoration:none; }
.rcause a:hover { text-decoration:underline; }
.rv { display:flex; justify-content:flex-end; padding-top:1px; }
.chip { font-size:9.5px; font-weight:800; letter-spacing:.07em; text-transform:uppercase;
  padding:3px 8px; border-radius:100px; white-space:nowrap; border:1px solid; }
.chip.v-pass { color:var(--good); background:var(--good-dim); border-color:var(--good); }
.chip.v-partial { color:var(--warn); background:var(--warn-dim); border-color:var(--warn); }
.chip.v-absent { color:var(--bad); background:var(--bad-dim); border-color:var(--bad); }
.chip.v-untested { color:var(--faint); background:transparent; border-color:var(--border-strong); }
@media (max-width:640px) {
  .rung { grid-template-columns:26px 1fr; }
  .rv { grid-column:2; justify-content:flex-start; margin-top:6px; }
}

/* ── The plan ────────────────────────────────────────────────────────────── */
.pbucket { border:1px solid var(--border); border-radius:12px; overflow:hidden; margin-top:14px; }
.pb-h { display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; padding:12px 16px;
  background:var(--surface-2); border-bottom:1px solid var(--border); }
.pb-h h4 { margin:0; font-size:14.5px; font-weight:700; }
.pb-h span { font-size:12px; color:var(--faint); }
.pb-h .pb-n { margin-left:auto; font-variant-numeric:tabular-nums; font-weight:700; color:var(--muted); }
.pbucket.b-gate .pb-h { background:var(--bad-dim); }
.pbucket.b-gate .pb-h h4 { color:var(--bad); }
.pbucket.b-quick .pb-h h4 { color:var(--good); }
.pitem { padding:13px 16px; background:var(--surface-1); }
.pitem + .pitem { border-top:1px solid var(--border); }
.pi-f { font-size:14px; font-weight:640; line-height:1.45; }
.pi-c { font-size:13px; color:var(--muted); line-height:1.55; margin-top:4px; max-width:76ch; }
.pi-i { font-size:13px; color:var(--text); line-height:1.55; margin-top:6px; font-weight:560; }
.pi-r { font-size:11.5px; color:var(--faint); margin-top:7px; }
.pi-r a { color:var(--brand-text); text-decoration:none; }
.pi-r a:hover { text-decoration:underline; }
.pi-p { margin-top:8px; }
.pi-p summary { font-size:11.5px; color:var(--faint); cursor:pointer; }
.pi-p code { display:block; margin-top:6px; font-size:11.5px; color:var(--muted);
  background:var(--surface-2); border:1px solid var(--border); border-radius:7px; padding:9px 11px;
  white-space:pre-wrap; word-break:break-word; }

/* ── Appendix ────────────────────────────────────────────────────────────── */
.ap { border:1px solid var(--border); border-radius:12px; overflow:hidden; margin-top:12px;
  scroll-margin-top:74px; }
.ap:target { border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-dim); }
.ap-h { display:flex; gap:12px; align-items:baseline; flex-wrap:wrap; padding:12px 16px;
  background:var(--surface-2); border-bottom:1px solid var(--border); }
.ap-id { font-size:11px; font-weight:800; color:var(--brand-text); letter-spacing:.05em;
  text-transform:uppercase; white-space:nowrap; }
.ap-t { font-size:13.5px; font-weight:620; }
.ap-b { padding:14px 16px; background:var(--surface-1); }
.ap-want { font-size:12.5px; color:var(--faint); line-height:1.55; margin-bottom:12px; }
.ap-want b { color:var(--muted); }
.ap-take + .ap-take { margin-top:13px; padding-top:13px; border-top:1px solid var(--border); }
.ap-lab { display:flex; gap:10px; align-items:center; font-size:11px; font-weight:700;
  letter-spacing:.06em; text-transform:uppercase; color:var(--faint); margin-bottom:7px; }
.ap-b pre { margin:0; font-family:var(--mono); font-size:12px; line-height:1.62; color:var(--muted);
  background:var(--surface-2); border:1px solid var(--border); border-radius:8px; padding:12px 14px;
  white-space:pre-wrap; word-break:break-word; }
.ap-why { margin-top:7px; font-size:12px; color:var(--faint); font-style:italic; }

.hnum.hnum-lead b { font-size:1.15em; }
