/* SchemaCart v2 additions. Load after schemacart.css.
   New components only, no overrides of v1 rules. */

/* ---------- footer, multi-column ---------- */
.sc-footer__cols{display:grid;gap:var(--sc-8);grid-template-columns:1fr;padding-bottom:var(--sc-8);border-bottom:1px solid #1E293B;margin-bottom:var(--sc-6)}
.sc-footer__col h4{font:600 12px var(--sc-font-text);letter-spacing:.06em;text-transform:uppercase;color:#64748B;margin:0 0 var(--sc-3)}
.sc-footer__col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.sc-footer__col a{color:#CBD5E1;font-size:14px}
.sc-footer__col a:hover{color:#fff}

/* ---------- specificity repairs on v1 chrome ----------
   .sc-nav a and .sc-footer a (0-1-1) out-rank .sc-btn--primary (0-1-0),
   so a button inside either lands on the link colour. */
.sc-nav a.sc-btn,.sc-footer a.sc-btn{color:var(--sc-ink);text-decoration:none}
.sc-nav a.sc-btn--primary,.sc-nav a.sc-btn--primary:hover,.sc-nav a.sc-btn--primary:focus-visible,.sc-nav a.sc-btn--primary:active,
.sc-footer a.sc-btn--primary,.sc-footer a.sc-btn--primary:hover,.sc-footer a.sc-btn--primary:focus-visible,.sc-footer a.sc-btn--primary:active,
.sc-footer a.sc-btn--ghost,.sc-footer a.sc-btn--ghost:hover,.sc-footer a.sc-btn--ghost:focus-visible,.sc-footer a.sc-btn--ghost:active,
.sc-footer a.sc-btn--dark,.sc-footer a.sc-btn--dark:hover,.sc-footer a.sc-btn--dark:focus-visible,.sc-footer a.sc-btn--dark:active{color:#fff}
.sc-nav a.sc-btn--primary[aria-disabled="true"],
.sc-footer a.sc-btn--primary[aria-disabled="true"],
.sc-footer a.sc-btn--dark[aria-disabled="true"]{color:var(--sc-ink-2)}
.sc-footer a.sc-btn--ghost[aria-disabled="true"]{color:#fff}
.sc-card--dark a:not(.sc-btn),
.sc-convert a:not(.sc-btn){color:#fff;text-decoration:underline}
.sc-footer a:not(.sc-btn):hover,
.sc-card--dark a:not(.sc-btn):hover,
.sc-convert a:not(.sc-btn):hover,
.sc-card--dark a:not(.sc-btn):focus-visible,
.sc-convert a:not(.sc-btn):focus-visible,
.sc-card--dark a:not(.sc-btn):active,
.sc-convert a:not(.sc-btn):active{color:#fff}

/* ---------- page intro ---------- */
.sc-pagehead{padding-top:var(--sc-10);padding-bottom:var(--sc-8)}
.sc-pagehead h1{font-size:clamp(28px,6vw,42px);margin:var(--sc-3) 0}

/* ---------- offer ladder (pricing) ---------- */
.sc-ladder{display:grid;gap:var(--sc-4);grid-template-columns:minmax(0,1fr)}
.sc-grid>*,.sc-ladder>*,.sc-report>*,.sc-split>*{min-width:0}
.sc-ladder__label{display:flex;align-items:baseline;gap:var(--sc-3);flex-wrap:wrap;margin:var(--sc-10) 0 var(--sc-4)}
.sc-ladder__label h2{font-size:22px}
.sc-ladder__label p{font-size:14px;color:var(--sc-muted)}
/* the price is the big thing; "from" is a small qualifier before it.
   v1's .sc-tier__price span rule would otherwise shrink the converted number. */
.sc-tier__price [data-usd]{font:inherit;color:inherit;letter-spacing:inherit}
.sc-tier__from{font:500 15px var(--sc-font-text);color:var(--sc-muted);margin-right:7px;align-self:center}
.sc-tier__price .sc-tier__cur{font:600 12px/1 var(--sc-font-text);color:var(--sc-muted);margin-left:6px;letter-spacing:.04em;vertical-align:middle}
.sc-tier__rule{border:0;border-top:1px solid var(--sc-line);margin:var(--sc-4) 0}

/* ---------- comparison table ---------- */
.sc-table{width:100%;border-collapse:collapse;font-size:14.5px}
.sc-table th,.sc-table td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--sc-line);vertical-align:top}
.sc-table thead th{font:600 12px var(--sc-font-text);letter-spacing:.05em;text-transform:uppercase;color:var(--sc-muted);background:var(--sc-bg-alt)}
.sc-table tbody th{font-weight:600;color:var(--sc-ink);width:34%}
.sc-table--cmp td:last-child{background:var(--sc-accent-soft)}
.sc-tablewrap{overflow-x:auto;border:1px solid var(--sc-line);border-radius:var(--sc-r-lg);background:#fff}
.sc-tablewrap .sc-table{min-width:560px}

/* ---------- legal pages ---------- */
.sc-legal{padding-bottom:var(--sc-16)}
.sc-legal__intro{border-bottom:1px solid var(--sc-line)}
.sc-legal__layout{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sc-6);align-items:start}
.sc-legal__contents ol{margin:var(--sc-3) 0 0;padding-left:1.25em}
.sc-legal__contents li+li{margin-top:var(--sc-2)}
.sc-legal__body{min-width:0;max-width:72ch}
.sc-legal__body section+section{margin-top:var(--sc-10)}
.sc-legal__body h2{margin-bottom:var(--sc-3)}
.sc-legal__updated{font-size:14px;color:var(--sc-muted)}
.sc-legal__body .sc-tablewrap{max-width:100%;margin:var(--sc-5) 0}
.sc-legal__body table{width:100%;min-width:560px;border-collapse:collapse;font-size:14.5px}
.sc-legal__body th,.sc-legal__body td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--sc-line);vertical-align:top}
.sc-legal__body thead th{font:600 12px var(--sc-font-text);letter-spacing:.05em;text-transform:uppercase;color:var(--sc-muted);background:var(--sc-bg-alt)}
.sc-legal__body tbody th{font-weight:600;color:var(--sc-ink);width:34%}

/* ---------- numbered delivery steps ---------- */
.sc-numlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sc-5);counter-reset:sc}
.sc-numlist li{display:flex;gap:var(--sc-4);counter-increment:sc}
.sc-numlist li::before{content:counter(sc,decimal-leading-zero);flex:none;width:38px;height:38px;border-radius:50%;
  border:1.5px solid var(--sc-line);display:flex;align-items:center;justify-content:center;
  font:700 13px var(--sc-font-display);color:var(--sc-accent);background:#fff}
.sc-numlist h3{font-size:17px;margin-bottom:5px}
.sc-numlist p{font-size:14.5px;color:var(--sc-muted)}

/* ---------- promise / anti-promise columns ---------- */
.sc-promise{display:grid;gap:var(--sc-4);grid-template-columns:1fr}
.sc-promise--do,.sc-promise--dont{list-style:none;margin:var(--sc-3) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--sc-3)}
.sc-promise--do li,.sc-promise--dont li{display:flex;gap:10px;font-size:14.5px;line-height:1.55;color:var(--sc-ink-2)}
.sc-promise--do li::before,.sc-promise--dont li::before{flex:none;font-weight:700}
.sc-promise--do li::before{content:"✓";color:var(--sc-pass-text)}
.sc-promise--dont li::before{content:"✕";color:var(--sc-fail)}

/* ---------- FAQ / disclosure list ---------- */
.sc-qa{background:#fff;border:1px solid var(--sc-line);border-radius:var(--sc-r-lg);margin-bottom:var(--sc-3)}
.sc-qa summary{display:flex;align-items:center;gap:var(--sc-3);padding:18px var(--sc-5);cursor:pointer;
  font:600 16px var(--sc-font-text);color:var(--sc-ink);list-style:none}
.sc-qa summary::-webkit-details-marker{display:none}
.sc-qa summary::after{content:"+";margin-left:auto;font:400 20px var(--sc-font-text);color:var(--sc-muted-text);line-height:1}
.sc-qa[open] summary::after{content:"–"}
.sc-qa__body{padding:0 var(--sc-5) var(--sc-5);font-size:15.5px;line-height:1.7;color:var(--sc-ink-2)}
.sc-qa__body p+p{margin-top:var(--sc-3)}

/* ---------- article ---------- */
.sc-toc{background:var(--sc-bg-alt);border:1px solid var(--sc-line);border-radius:var(--sc-r-lg);padding:var(--sc-5)}
.sc-toc ol{margin:var(--sc-3) 0 0;padding-left:20px;display:flex;flex-direction:column;gap:9px;font-size:14.5px}
.sc-prose h2{margin:var(--sc-10) 0 var(--sc-4)}
.sc-prose h3{margin:var(--sc-8) 0 var(--sc-3)}
.sc-prose ul,.sc-prose ol{margin:0 0 var(--sc-5);padding-left:22px;display:flex;flex-direction:column;gap:10px;font-size:17px;line-height:1.7}
.sc-prose code{font:400 14.5px var(--sc-font-mono);background:var(--sc-bg-alt);border:1px solid var(--sc-line);border-radius:5px;padding:2px 6px}
.sc-codeblock{background:var(--sc-ink);border-radius:var(--sc-r-md);padding:var(--sc-5);margin:0 0 var(--sc-5);overflow-x:auto}
.sc-codeblock pre{margin:0;font:400 13.5px/1.75 var(--sc-font-mono);color:#CBD5E1;white-space:pre}
.sc-codeblock__cap{display:flex;justify-content:space-between;gap:var(--sc-3);font:500 11.5px var(--sc-font-text);
  letter-spacing:.05em;text-transform:uppercase;color:#64748B;margin-bottom:12px}
.sc-callout{display:flex;gap:var(--sc-3);border-radius:var(--sc-r-md);padding:16px 18px;margin:0 0 var(--sc-5);font-size:15.5px;line-height:1.65}
.sc-callout b{display:block;margin-bottom:3px}
.sc-callout--note{background:var(--sc-accent-soft);border:1px solid #DBEAFE;color:#1E3A8A}
.sc-callout--warn{background:var(--sc-warn-soft);border:1px solid #FDE68A;color:#78350F}
.sc-callout--honest{background:var(--sc-bg-alt);border:1px solid var(--sc-line);color:var(--sc-ink-2)}
.sc-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sc-3);font-size:13.5px;color:var(--sc-muted)}
.sc-meta__dot{width:3px;height:3px;border-radius:50%;background:var(--sc-line-2)}
.sc-shortver{background:var(--sc-accent-soft);border:1px solid var(--sc-line);border-radius:var(--sc-r-lg);padding:var(--sc-5) var(--sc-6);margin:0 0 var(--sc-8)}
.sc-shortver ul{margin:var(--sc-3) 0 0;padding-left:1.1em}
.sc-shortver li{margin:var(--sc-2) 0;font-size:15.5px;line-height:1.55}
.sc-related{display:grid;gap:var(--sc-4);grid-template-columns:1fr}
.sc-related a{display:block;background:#fff;border:1px solid var(--sc-line);border-radius:var(--sc-r-lg);padding:var(--sc-5);color:var(--sc-ink)}
.sc-related a:hover{border-color:var(--sc-line-2);text-decoration:none}
.sc-related h3{font-size:16px;margin-bottom:6px}
.sc-related p{font-size:13.5px;color:var(--sc-muted)}

/* ---------- inline conversion block ---------- */
.sc-convert{background:var(--sc-ink);border-radius:var(--sc-r-xl);padding:var(--sc-8) var(--sc-6);color:#fff;margin:var(--sc-10) 0}
.sc-convert h3{color:#fff;font-size:22px}
.sc-convert p{color:var(--sc-muted-ink);font-size:14.5px;margin:10px 0 var(--sc-5);max-width:46ch}
.sc-convert .sc-input{background:#1E293B;border-color:#334155;color:#fff}
.sc-convert .sc-input::placeholder{color:#64748B}

/* ---------- person / legitimacy ---------- */
.sc-person{display:flex;gap:var(--sc-5);align-items:flex-start;flex-wrap:wrap}
.sc-person__photo{width:96px;height:96px;border-radius:var(--sc-r-lg);background:var(--sc-bg-alt);border:1px dashed var(--sc-line-2);flex:none;overflow:hidden}
.sc-person__photo img{width:100%;height:100%;object-fit:cover}
.sc-deflist{display:grid;gap:var(--sc-4);grid-template-columns:1fr;margin:0}
.sc-deflist dt{font:600 12px var(--sc-font-text);letter-spacing:.05em;text-transform:uppercase;color:var(--sc-muted-text);margin-bottom:5px}
.sc-deflist dd{margin:0;font-size:15.5px;color:var(--sc-ink)}

/* ---------- evidence sampling (audit + sample report) ---------- */
.sc-samples{display:grid;gap:var(--sc-3);grid-template-columns:1fr}
.sc-sample{background:#fff;border:1px solid var(--sc-line);border-radius:var(--sc-r-lg);padding:var(--sc-5)}
.sc-sample__q{font:600 15px var(--sc-font-text);line-height:1.45;margin-bottom:var(--sc-3)}
.sc-sample__src{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--sc-muted);margin-bottom:var(--sc-3)}
.sc-sample__ans{font-size:14px;line-height:1.65;color:var(--sc-ink-2);background:var(--sc-bg-alt);border-left:2px solid var(--sc-line-2);
  border-radius:0 8px 8px 0;padding:12px 14px}
.sc-sample__ans em{color:var(--sc-muted);font-style:normal}
/* pills in a flex row must not shrink below their nowrap text */
.sc-sample__src .sc-pill{flex:none}

/* ---------- empty state / data slots (proof) ---------- */
.sc-empty{border:1px dashed var(--sc-line-2);border-radius:var(--sc-r-lg);background:var(--sc-bg-alt);
  padding:var(--sc-8) var(--sc-5);text-align:center;color:var(--sc-muted)}
.sc-empty__label{font:500 12px var(--sc-font-mono);color:var(--sc-muted-text);letter-spacing:.04em}
.sc-slot{border:1px dashed var(--sc-line-2);border-radius:var(--sc-r-md);background:var(--sc-bg-alt);min-height:120px;
  display:flex;align-items:center;justify-content:center;font:400 12.5px var(--sc-font-mono);color:var(--sc-muted-text);text-align:center;padding:var(--sc-4)}

/* ---------- 404 ---------- */
.sc-404{min-height:64vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--sc-5);padding:var(--sc-12) var(--sc-5)}
.sc-404__code{font:800 clamp(64px,18vw,120px)/1 var(--sc-font-display);letter-spacing:-.06em;color:var(--sc-line)}
.sc-404__links{display:flex;flex-wrap:wrap;gap:var(--sc-3);justify-content:center}

/* ---------- embed slot (scheduling) ---------- */
.sc-embed{border:1px solid var(--sc-line);border-radius:var(--sc-r-xl);background:#fff;min-height:520px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sc-3);text-align:center;padding:var(--sc-8) var(--sc-5)}

/* ---------- layered image slot (2-3 stacked layers, parallax at different
   speeds). Generation is paused: these render as labelled placeholders.
   Layers are oversized so the parallax never exposes an edge. ---------- */
.sc-figure__art{display:block;width:100%;height:auto;border-radius:var(--sc-r-lg);overflow:hidden;background:var(--sc-bg-alt)}
.sc-imgslot{position:relative;overflow:hidden;border-radius:var(--sc-r-lg);background:var(--sc-ink);border:1px dashed #334155}
.sc-imgslot__layer{position:absolute;inset:-14% 0;display:flex;align-items:center;justify-content:center;padding:var(--sc-4);
  font:400 11.5px/1.6 var(--sc-font-mono);color:#64748B;text-align:center}
.sc-imgslot__layer img{width:100%;height:100%;object-fit:cover}
.sc-imgslot__layer--mid{mix-blend-mode:screen}
.sc-imgslot__layer--front{mix-blend-mode:screen;align-items:flex-end}
.sc-imgslot__cap{position:absolute;left:12px;bottom:10px;z-index:3;font:500 10.5px var(--sc-font-mono);letter-spacing:.04em;color:#94A3B8}
@keyframes sc-par-back{from{transform:translateY(-5%)}to{transform:translateY(5%)}}
@keyframes sc-par-mid{from{transform:translateY(-9%)}to{transform:translateY(9%)}}
@keyframes sc-par-front{from{transform:translateY(-13%)}to{transform:translateY(13%)}}
@supports (animation-timeline:view()){
  @media (prefers-reduced-motion:no-preference){
    .sc-imgslot__layer--back{animation:sc-par-back linear both;animation-timeline:view()}
    .sc-imgslot__layer--mid{animation:sc-par-mid linear both;animation-timeline:view()}
    .sc-imgslot__layer--front{animation:sc-par-front linear both;animation-timeline:view()}
  }
}

/* ---------- the product loop (baseline → fix → re-measure → evidence) ---------- */
.sc-loop{display:grid;gap:var(--sc-3);grid-template-columns:1fr;counter-reset:loop;margin:var(--sc-6) 0 var(--sc-3)}
.sc-loop__step{position:relative;background:#fff;border:1px solid var(--sc-line);border-radius:var(--sc-r-lg);padding:var(--sc-5);counter-increment:loop}
.sc-loop__step::before{content:counter(loop);display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;
  background:var(--sc-accent-soft);color:var(--sc-accent);font:700 12px var(--sc-font-display);margin-bottom:var(--sc-3)}
.sc-loop__step h3{font-size:16px}
.sc-loop__step p{font-size:14px;line-height:1.6;color:var(--sc-muted);margin-top:6px}
.sc-loop__step:not(:last-child)::after{content:"↓";position:absolute;left:50%;bottom:-19px;transform:translateX(-50%);
  color:var(--sc-line-2);font-size:14px;line-height:1}
.sc-loop__again{font-size:13.5px;color:var(--sc-muted);display:flex;align-items:center;gap:8px}
.sc-loop__again::before{content:"↻";color:var(--sc-accent);font-size:16px}

/* ---------- scan flow: one error slot for every validation case ---------- */
.sc-error{display:flex;gap:var(--sc-3);background:var(--sc-fail-soft);border:1px solid var(--sc-fail-line);border-radius:var(--sc-r-md);
  padding:13px 15px;font-size:14px;line-height:1.6;color:#7F1D1D;text-align:left}
.sc-error b{display:block}
.sc-error__mark{flex:none;font-weight:700}
.sc-error a{color:#7F1D1D;text-decoration:underline}

/* the page-speed phase is the long one: an indeterminate sweep so it never
   reads as frozen. Reduced motion leaves the static full-width rail. */
.sc-sweep{position:relative;height:6px;background:#F1F5F9;border-radius:3px;overflow:hidden}
.sc-sweep i{position:absolute;inset:0;background:linear-gradient(90deg,#F1F5F9,var(--sc-accent),#F1F5F9);opacity:.55;
  animation:sc-sweep 1.6s ease-in-out infinite}
@keyframes sc-sweep{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}

/* review-only caption marking which state each block shows. Safe to delete
   when porting into templates. */
.sc-statecap{display:flex;align-items:center;gap:var(--sc-3);margin:var(--sc-10) 0 var(--sc-4);
  font:600 11.5px var(--sc-font-text);letter-spacing:.08em;text-transform:uppercase;color:var(--sc-muted-text)}
.sc-statecap::after{content:"";flex:1;border-top:1px dashed var(--sc-line-2)}

/* ---------- report page: identity band ---------- */
.sc-rpt-top{background:#fff;border-bottom:1px solid var(--sc-line);padding:var(--sc-6) 0}
.sc-rpt-top__row{display:flex;flex-wrap:wrap;gap:var(--sc-4);align-items:flex-start;justify-content:space-between}
.sc-rpt-url{font:700 clamp(20px,4.6vw,27px)/1.15 var(--sc-font-display);letter-spacing:-.035em;overflow-wrap:anywhere;margin:6px 0 5px}
.sc-rpt-actions{display:flex;flex-wrap:wrap;gap:var(--sc-2)}
.sc-rpt-actions .sc-btn{min-height:40px;padding:9px 14px;font-size:14px}

/* ---------- report page: score hero (built to be screenshotted) ---------- */
.sc-scorecard{background:#fff;border:1px solid var(--sc-line);border-radius:var(--sc-r-xl);padding:var(--sc-6);display:grid;gap:var(--sc-6);grid-template-columns:1fr}
.sc-scorecard__num{display:flex;align-items:center;gap:var(--sc-4);flex-wrap:wrap}
.sc-state{font:600 13px var(--sc-font-text);border-radius:var(--sc-r-pill);padding:6px 12px;white-space:nowrap}
.sc-state--pass{background:var(--sc-pass-soft);color:var(--sc-pass-text);border:1px solid var(--sc-pass-line)}
.sc-state--warn{background:var(--sc-warn-soft);color:var(--sc-warn);border:1px solid #FDE68A}
.sc-state--fail{background:var(--sc-fail-soft);color:var(--sc-fail);border:1px solid var(--sc-fail-line)}
.sc-scorecard__say{font-size:16px;line-height:1.7;color:var(--sc-ink-2);max-width:66ch}

/* 75 / 25 split, the weights release made visible */
.sc-split{display:grid;gap:var(--sc-5);grid-template-columns:1fr}
.sc-split__cap{display:flex;flex-wrap:wrap;row-gap:4px;align-items:baseline;justify-content:space-between;gap:var(--sc-3);margin-bottom:8px}
.sc-split__name{font:600 13.5px var(--sc-font-text);color:var(--sc-ink)}
.sc-split__pts{font:700 14px var(--sc-font-display);letter-spacing:-.02em;white-space:nowrap}
.sc-splitbar{height:10px;background:var(--sc-line);border-radius:5px;overflow:hidden}
.sc-splitbar i{display:block;height:100%;border-radius:5px}
.sc-split__sub{font-size:12.5px;color:var(--sc-muted-text);margin-top:7px}

/* ---------- report page: monitoring delta (subscribed stores only) ---------- */
.sc-delta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sc-5);background:var(--sc-accent-soft);border:1px solid #DBEAFE;border-radius:var(--sc-r-lg);padding:var(--sc-5)}
.sc-delta__num{font:800 30px var(--sc-font-display);letter-spacing:-.045em;line-height:1;white-space:nowrap}
.sc-delta__num--up{color:var(--sc-pass-text)}
.sc-delta__num--down{color:var(--sc-fail)}
.sc-delta__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px;font-size:14px;color:#1E3A8A;min-width:min(100%,260px);flex:1}

/* ---------- report page: point-in-time / partial banner ---------- */
.sc-banner{display:flex;gap:var(--sc-3);border-radius:var(--sc-r-md);padding:15px 17px;font-size:14.5px;line-height:1.65;
  background:var(--sc-warn-soft);border:1px solid #FDE68A;color:#78350F}
.sc-banner b{display:block;margin-bottom:3px}

/* ---------- report page: findings groups ---------- */
.sc-group{margin-top:var(--sc-10)}
.sc-group__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sc-3);margin-bottom:var(--sc-4)}
.sc-group__head h2{font-size:21px}
.sc-group__pts{font:600 11.5px var(--sc-font-text);letter-spacing:.05em;text-transform:uppercase;color:var(--sc-muted);
  border:1px solid var(--sc-line);border-radius:var(--sc-r-pill);padding:4px 11px;white-space:nowrap}
.sc-group__note{flex:0 0 100%;font-size:13.5px;line-height:1.6;color:var(--sc-muted);max-width:70ch}

/* severity hierarchy: a colour edge, so the order fail → warn → pass reads at a glance */
.sc-finding--fail{box-shadow:inset 3px 0 0 var(--sc-fail)}
.sc-finding--warn{box-shadow:inset 3px 0 0 var(--sc-warn)}
.sc-finding--pass{box-shadow:inset 3px 0 0 var(--sc-pass)}
.sc-finding--incon{box-shadow:inset 3px 0 0 var(--sc-line-2);background:var(--sc-bg-alt)}
.sc-finding__pts{font:600 12px var(--sc-font-text);color:var(--sc-muted-text);white-space:nowrap;font-variant-numeric:tabular-nums}
.sc-counts{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sc-2);margin-top:var(--sc-3);font-size:13.5px;color:var(--sc-muted)}
.sc-examples{list-style:none;margin:var(--sc-3) 0 0;padding:0;display:grid;gap:var(--sc-3)}
.sc-example__page{font:500 12.5px var(--sc-font-mono);color:var(--sc-muted);overflow-wrap:anywhere}
/* inconclusive is not failure: outlined, not filled */
.sc-pill--incon{background:#fff;color:var(--sc-muted);border:1px solid var(--sc-line-2)}
.sc-keep{display:flex;gap:var(--sc-2);background:var(--sc-bg-alt);border:1px solid var(--sc-line);border-radius:var(--sc-r-md);
  padding:13px 15px;font-size:14px;line-height:1.6;color:var(--sc-muted)}
.sc-keep__label{font:600 12px var(--sc-font-text);color:var(--sc-ink-2);flex:none;padding-top:1px}

/* ---------- report page: closing conversion pair ---------- */
.sc-ctaduo{display:grid;gap:var(--sc-3);grid-template-columns:1fr}

/* ---------- print / PDF ---------- */
@media print{
  .sc-header,.sc-footer,.sc-rpt-actions,.sc-tech-toggle,.sc-cta-bar{display:none!important}
  body{background:#fff!important}
  .sc-report{display:block!important}
  .sc-sticky{position:static!important;margin-top:var(--sc-6)}
  .sc-card,.sc-finding,.sc-scorecard,.sc-sample{break-inside:avoid;box-shadow:none!important}
  .sc-card--dark,.sc-convert{background:#fff!important;color:var(--sc-ink)!important;border:1px solid var(--sc-line-2)!important}
  .sc-card--dark h3,.sc-convert h3{color:var(--sc-ink)!important}
  .sc-card--dark p,.sc-convert p{color:var(--sc-ink-2)!important}
  .sc-tech{background:#fff!important;color:var(--sc-ink)!important;border:1px solid var(--sc-line-2)}
  details:not([open]) .sc-finding__body{display:block!important}
  @page{margin:14mm}
}

/* ---------- responsive ---------- */
@media (min-width:640px){
  .sc-split{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sc-ctaduo{grid-template-columns:repeat(2,1fr)}
  .sc-ladder{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sc-promise{grid-template-columns:repeat(2,1fr)}
  .sc-related{grid-template-columns:repeat(2,1fr)}
  .sc-samples{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
  .sc-samples > .sc-sample:last-child:nth-child(odd){grid-column:1/-1}
  .sc-deflist{grid-template-columns:repeat(2,1fr)}
  .sc-footer__cols{grid-template-columns:repeat(2,1fr)}
  .sc-convert{padding:var(--sc-10)}
}
@media (min-width:900px){
  .sc-loop{grid-template-columns:repeat(4,1fr)}
  .sc-loop__step:not(:last-child)::after{content:"→";left:auto;right:-19px;bottom:auto;top:50%;transform:translateY(-50%)}
  .sc-ladder--three{grid-template-columns:repeat(3,minmax(0,1fr))}
  .sc-related{grid-template-columns:repeat(3,1fr)}
  .sc-footer__cols{grid-template-columns:1.6fr 1fr 1fr 1fr}
  .sc-article{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:var(--sc-10);align-items:start}
  .sc-legal__layout{grid-template-columns:minmax(0,260px) minmax(0,1fr);gap:var(--sc-8)}
  .sc-legal__contents{position:sticky;top:96px;align-self:start}
}


/* ============================================================
   MOBILE ADAPTATION · v2.1 mobile run, 2026-08-04
   Layout, spacing and touch-target rules only, added so the small
   viewport mimics the approved desktop build.
   Zero new tokens. Zero new classes. No markup or copy change.
   Every declaration targets a selector that already exists above,
   and every value is an existing token or plain layout geometry.
   Recorded for the Design System Guide in design_v2.1/README.md.
   ============================================================ */
@media (max-width:639px){
  /* HERO. The backdrop is a bottom band on desktop because the hero is
     ~700px tall there. At 375px the hero is far taller, so a 300px top
     offset drops the artwork behind the lede. Anchor it to the bottom
     instead and the composition reads as it does on desktop. */
  .sc-hero{padding:var(--sc-10) var(--sc-5) var(--sc-8)}
  .sc-hero__media{top:auto;height:240px}

  /* Diagram slots keep their whole composition instead of being
     side-cropped by the desktop cover fit at a third of the width. */
  .sc-media img{object-fit:contain}

  /* SCAN STEPPER. Three 140px steps plus space-between overflow a 335px
     row. Share the row instead, and pull the rail in to match. */
  .sc-stepper__steps{gap:var(--sc-2)}
  .sc-step{width:auto;flex:1 1 0;min-width:0}
  .sc-stepper__track{left:17%;right:17%}

  /* FINDINGS. Desktop reads as one row: question, weight, status, caret.
     At 375px the fixed items leave the question ~110px and it breaks over
     five lines. Wrapping gives the question the first line and the status
     row the second, in the same order, with the whole padded summary row
     still the disclosure target. */
  .sc-finding__head{flex-wrap:wrap;padding:var(--sc-4)}
  .sc-finding__q{flex:1 1 100%}
  .sc-finding__pts{white-space:normal}
  .sc-finding__caret{margin-left:auto}
  .sc-finding__body{padding:0 var(--sc-4) var(--sc-4)}
  /* WHAT TO DO NEXT / KEEP labels sit above their sentence rather than
     taking a third of the line beside it. */
  .sc-fix,.sc-keep{flex-direction:column;gap:var(--sc-1)}
  /* the technical disclosure control reaches the 48px target */
  .sc-tech-toggle{min-height:48px;padding:var(--sc-3) 0}

  /* REPORT IDENTITY BAND. Compact 40px desktop actions become full
     48px targets and share the row. */
  .sc-rpt-actions{width:100%}
  .sc-rpt-actions .sc-btn{flex:1 1 auto;min-height:48px}

  /* PRICING. The currency control is a control: 48px like the rest. */
  .sc-currency{width:100%;justify-content:space-between;padding:6px 8px 6px var(--sc-4)}
  .sc-currency select{min-height:48px}

  /* TABLES still scroll inside .sc-tablewrap, per the Guide. Tighter
     cells mean less of it. */
  .sc-table th,.sc-table td{padding:var(--sc-3) var(--sc-4)}

  /* FOOTER. Column links are far apart enough to hit one at a time. */
  .sc-footer__col ul{gap:var(--sc-4)}
  .sc-logo{min-height:48px}
  .sc-footer__col a{display:inline-flex;align-items:center;min-height:48px;padding:var(--sc-1) 0}
  .sc-footer__links{gap:var(--sc-4) var(--sc-6)}
  .sc-footer__links a{display:inline-flex;align-items:center;min-height:48px;padding:var(--sc-1) 0}
}


/* ============================================================
   v4 ADOPTION · R22 chunk A, 2026-09-13
   The homepage and the scan flow follow design/design_v4. Every rule
   below is scoped to .sc-v4 (the homepage main and the scan pages) so
   no other route changes until its own chunk. Tokens are the shipped
   ones; the few literal values are the v4 README's own (recorded in
   design-system.md, "v4 adoption"). Classes are registered there.
   ============================================================ */
.sc-v4{--sc-v4-gutter:18px;--sc-v4-pad:48px}
.sc-v4 .sc-wrap{padding-left:var(--sc-v4-gutter);padding-right:var(--sc-v4-gutter)}
.sc-v4 .sc-section{padding:var(--sc-v4-pad) 0}
.sc-v4 h2{font:800 28px/1.1 var(--sc-font-display);letter-spacing:-.03em}
.sc-v4 .sc-kicker--mono{margin-bottom:14px}
.sc-v4 .sc-lede{font-size:16.5px;line-height:1.55;color:var(--sc-ink-2)}
.sc-v4 .sc-card{padding:var(--sc-5);border-radius:var(--sc-r-lg)}
.sc-v4 .sc-input{border-width:1px;border-radius:12px;min-height:54px;font-weight:500}
.sc-v4 .sc-input:focus{box-shadow:0 0 0 4px var(--sc-accent-soft)}
.sc-v4 .sc-input[aria-invalid="true"]{border:1.5px solid var(--sc-fail);box-shadow:0 0 0 4px var(--sc-fail-soft)}
.sc-v4 .sc-scanform .sc-btn--primary{min-height:54px;border-radius:12px;font-size:16px;box-shadow:var(--sc-shadow-hi)}
.sc-hero4 .sc-scanform{flex-direction:column;gap:10px;max-width:none}
.sc-v4 .sc-scanform__row{display:flex;flex-direction:column;gap:10px;width:100%}
.sc-v4 .sc-spinner{animation-duration:.9s}

/* nav: current page is a pill (v4 README) */
.sc-nav a[aria-current="page"]{color:var(--sc-accent);background:var(--sc-accent-soft);font-weight:600;border-radius:var(--sc-r-pill);padding:8px 14px}

/* ---------- hero: copy column beside the before-and-after cards ---------- */
.sc-hero4{padding:36px var(--sc-v4-gutter) 40px;background:linear-gradient(180deg,#fff 0%,var(--sc-bg-alt) 100%)}
.sc-hero4__inner{max-width:1184px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr);gap:32px;align-items:center}
.sc-hero4__copy{display:flex;flex-direction:column;gap:18px;min-width:0}
.sc-hero4__copy h1{font:800 40px/1.04 var(--sc-font-display);letter-spacing:-.02em;text-wrap:balance}
.sc-hero4__lead{font-size:16.5px;line-height:1.55;color:var(--sc-ink-2);max-width:460px;text-wrap:pretty}
.sc-hero4__label{font-size:13px;font-weight:600;color:var(--sc-ink-2)}
.sc-hero4__demo{display:flex;flex-direction:column;gap:12px;min-width:0}
.sc-hero4__asks{font-size:14px;color:var(--sc-ink-2);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sc-hero4__pulse{width:8px;height:8px;border-radius:50%;background:var(--sc-accent);flex:none;animation:sc-pulse 2.8s ease-in-out infinite}
@keyframes sc-pulse{0%,100%{opacity:1}50%{opacity:.35}}
/* the assistant name cycles every 3 s with a 380 ms fade: four stacked
   names, one 12 s keyframe each, offset by 3 s. Reduced motion shows the
   first name only. */
.sc-hero4__names{display:inline-grid;font-weight:600;color:var(--sc-ink)}
.sc-hero4__names b{grid-area:1/1;font-weight:600;opacity:0;animation:sc-namecycle 12s ease-in-out infinite}
.sc-hero4__names b:nth-child(2){animation-delay:3s}
.sc-hero4__names b:nth-child(3){animation-delay:6s}
.sc-hero4__names b:nth-child(4){animation-delay:9s}
@keyframes sc-namecycle{0%{opacity:0}3.17%{opacity:1}21.83%{opacity:1}25%{opacity:0}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.sc-hero4__names b{opacity:0}.sc-hero4__names b:first-child{opacity:1}}
.sc-hero4__q{background:var(--sc-ink);color:#fff;border-radius:12px;padding:12px 14px;font-size:14.5px;line-height:1.5}
.sc-hero4__cards{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
.sc-hero4__card{background:#fff;border:1px solid var(--sc-line);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:10px;min-width:0}
.sc-hero4__card--after{border-color:var(--sc-pass-line);box-shadow:0 12px 40px -22px rgba(4,120,87,.45)}
.sc-hero4__cardhead{display:flex;align-items:center;justify-content:space-between;gap:8px}
.sc-hero4__stage{font:700 11px var(--sc-font-display);letter-spacing:.06em;text-transform:uppercase;color:var(--sc-muted-text)}
.sc-hero4__card--after .sc-hero4__stage{color:var(--sc-pass-text)}
.sc-hero4__row{display:flex;justify-content:space-between;gap:8px;font-size:13px;padding:8px 10px;border:1px solid var(--sc-line);border-radius:8px}
.sc-hero4__row span:last-child{color:var(--sc-muted-text);white-space:nowrap}
.sc-hero4__row--hit{flex-direction:column;gap:5px;border-color:var(--sc-pass-line);background:var(--sc-pass-soft)}
.sc-hero4__row--hit div{display:flex;justify-content:space-between;gap:8px;font-weight:600}
.sc-hero4__row--hit div span:last-child{color:var(--sc-ink)}
.sc-hero4__row--hit small{font-size:12px;color:var(--sc-pass-text)}
.sc-hero4__note{display:flex;gap:8px;padding:9px 10px;border-radius:8px;font-size:12.5px;line-height:1.45}
.sc-hero4__note i{font-style:normal;font-weight:700;flex:none}
.sc-hero4__note--bad{background:var(--sc-fail-soft);color:#7F1D1D}
.sc-hero4__note--bad i{color:var(--sc-fail)}
.sc-hero4__note--good{background:var(--sc-pass-soft);color:#064E3B}
.sc-hero4__note--good i{color:var(--sc-pass-text)}
.sc-hero4__cap{font-size:12.5px;line-height:1.5;color:var(--sc-muted-text)}

/* ---------- two paths ---------- */
.sc-paths{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sc-5)}
.sc-path{border:1px solid var(--sc-line);border-radius:var(--sc-r-lg);padding:var(--sc-5);display:flex;flex-direction:column;gap:18px;min-width:0}
.sc-path--dark{background:var(--sc-ink);color:#fff;border-color:var(--sc-ink)}
.sc-path__head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.sc-path__title{font:700 12.5px var(--sc-font-display);color:var(--sc-muted-text);margin:0}
.sc-path--dark .sc-path__title{color:var(--sc-line-2)}
.sc-path__pill{font:600 10.5px var(--sc-font-text);color:var(--sc-ink);background:var(--sc-pass-bright);border-radius:var(--sc-r-pill);padding:2px 8px;white-space:nowrap}
.sc-path__diagram{width:100%;height:auto;display:block}
.sc-path__rows{display:grid;gap:10px;font-size:14px;line-height:1.5;color:var(--sc-ink-2)}
.sc-path--dark .sc-path__rows{color:var(--sc-line-2)}
.sc-path__row{display:grid;grid-template-columns:96px minmax(0,1fr);gap:12px}
.sc-path__row b{color:var(--sc-ink)}
.sc-path--dark .sc-path__row b{color:#fff}

/* ---------- dark band: stepper and the two cards ---------- */
.sc-v4 .sc-section--ink .sc-lede{color:var(--sc-line-2)}
.sc-band4__head{display:grid;gap:var(--sc-4);align-items:end;margin-bottom:var(--sc-8)}
.sc-steps4{display:grid;grid-template-columns:minmax(0,1fr);gap:0;position:relative}
.sc-steps4__step{display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;padding:14px 0;border-top:1px solid #334155}
.sc-steps4__n{width:28px;height:28px;border-radius:50%;background:var(--sc-ink);border:1px solid var(--sc-pass);display:grid;place-items:center;font:700 11px var(--sc-font-display);color:var(--sc-pass-bright)}
.sc-steps4__title{font:700 16px/1.25 var(--sc-font-display);color:#fff;margin-bottom:3px}
.sc-steps4__out{font-size:13.5px;line-height:1.5;color:var(--sc-line-2)}
.sc-steps4__out span{color:var(--sc-muted-ink)}
.sc-band4__cards{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sc-5);margin-top:var(--sc-8)}
.sc-dcard{border:1px solid #334155;border-radius:var(--sc-r-lg);padding:var(--sc-5);display:flex;flex-direction:column;gap:14px;min-width:0}
.sc-dcard__head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.sc-dcard__head h3{font:700 17px/1.25 var(--sc-font-display);color:#fff;letter-spacing:-.02em}
.sc-dcard__pts{font:700 12px var(--sc-font-display);color:var(--sc-pass-bright);white-space:nowrap}
.sc-dcard p{font-size:14.5px;line-height:1.55;color:var(--sc-line-2)}
.sc-dcard__item{display:grid;grid-template-columns:36px minmax(0,1fr);gap:12px;padding-top:14px;border-top:1px solid #334155}
.sc-dcard__n{font:700 13px var(--sc-font-mono);color:var(--sc-pass-bright)}
.sc-dcard__item h4{font:700 15.5px var(--sc-font-display);color:#fff;margin:0 0 4px}
.sc-dcard__item p{font-size:14px}
.sc-basics4{list-style:none;margin:0;padding:14px 0 0;border-top:1px solid #334155;display:grid;grid-template-columns:minmax(0,1fr);gap:10px 18px}
.sc-basics4 li{display:flex;gap:10px;align-items:flex-start;font-size:14px;line-height:1.5;color:var(--sc-line-2)}
.sc-section--ink .sc-checkgrid__pts{flex:none;background:var(--sc-pass-bright);border-color:var(--sc-pass-bright);color:var(--sc-ink);margin-top:1px}
.sc-band4__sums{margin-top:var(--sc-5);border:1px solid #334155;border-radius:var(--sc-r-lg);padding:var(--sc-5);font-size:14px;line-height:1.55;color:var(--sc-line-2)}
.sc-band4__sums b{color:#fff}
.sc-band4__sums ol{margin:10px 0 0;padding-left:1.2em;display:flex;flex-direction:column;gap:6px}
.sc-band4__foot{display:flex;justify-content:space-between;align-items:center;gap:var(--sc-5);flex-wrap:wrap;margin-top:var(--sc-8);font-size:14.5px;color:var(--sc-line-2)}
.sc-band4__foot b{color:#fff}

/* ---------- ownership card ---------- */
.sc-own{display:grid;grid-template-columns:minmax(0,1fr);border:1px solid var(--sc-line);border-radius:var(--sc-r-lg);overflow:hidden;background:#fff}
.sc-own__col{padding:var(--sc-5);display:flex;flex-direction:column;gap:14px;min-width:0}
.sc-own__col+.sc-own__col{border-top:1px solid var(--sc-line);background:var(--sc-bg-alt)}
.sc-own__col h3{font:700 17px var(--sc-font-display);letter-spacing:-.02em}
.sc-own__col ul,.sc-fit4 ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}
.sc-own__col li,.sc-fit4 li{display:flex;gap:12px;font-size:15px;line-height:1.55;color:var(--sc-ink-2)}
.sc-own__col li::before,.sc-fit4 li::before{flex:none;font-weight:700}
.sc-own__col--do li::before{content:"\2713";color:var(--sc-pass-text)}
.sc-own__col--yours li::before{content:"\25CF";color:var(--sc-accent)}

/* ---------- Never / Always ---------- */
.sc-limits{display:flex;flex-direction:column}
.sc-limits__row{display:grid;gap:6px;padding:18px 0;border-top:1px solid var(--sc-line)}
.sc-limits__row:last-child{border-bottom:1px solid var(--sc-line)}
.sc-limits__word{font:800 28px/1 var(--sc-font-display);letter-spacing:-.03em}
.sc-limits__word--never{color:var(--sc-fail)}
.sc-limits__word--always{color:var(--sc-pass-text)}
.sc-limits__text{font:600 18px/1.35 var(--sc-font-display);letter-spacing:-.01em;color:var(--sc-ink);text-wrap:pretty}

/* ---------- fit check ---------- */
.sc-fit4 .sc-card{gap:14px}
.sc-fit4 .sc-card--yes{border-color:var(--sc-pass-line)}
.sc-fit4 .sc-card--yes h3{color:var(--sc-pass-text)}
.sc-fit4 h3{font:700 17px var(--sc-font-display);letter-spacing:-.02em}
.sc-fit4 .sc-card--yes li::before{content:"\2713";color:var(--sc-pass-text)}
.sc-fit4 .sc-card--no li::before{content:"\00D7";color:var(--sc-fail)}

/* ---------- pricing teaser ---------- */
.sc-v4 .sc-tier__name{font:600 13px var(--sc-font-text);color:var(--sc-muted-text)}
.sc-v4 .sc-tier__price{font-size:28px;min-height:0;line-height:1.1}
.sc-v4 .sc-tier__sub{font-size:14.5px;color:var(--sc-ink-2);line-height:1.5;margin:0}
.sc-v4 .sc-tier .sc-btn{margin-top:auto}
.sc-tier--v4hi{background:var(--sc-accent-soft);border:2px solid var(--sc-accent);box-shadow:none}
.sc-tier--v4hi .sc-tier__name{color:var(--sc-accent)}

/* ---------- scan flow: step bar, running card, results card ---------- */
.sc-flow{max-width:720px;margin:0 auto var(--sc-5);display:flex;flex-direction:column;gap:8px}
.sc-flow__head{display:flex;justify-content:space-between;gap:var(--sc-4);font-size:13px}
.sc-flow__head b{font-weight:600}
.sc-flow__head span{color:var(--sc-muted-text)}
.sc-flow__bar{height:4px;background:var(--sc-line);border-radius:2px;overflow:hidden}
.sc-flow__bar i{display:block;height:100%;background:var(--sc-accent);border-radius:2px}
.sc-flow__labels{display:none;justify-content:space-between;gap:var(--sc-3);font-size:12.5px;color:var(--sc-muted-text)}
.sc-flow__labels .is-current{color:var(--sc-accent);font-weight:600}
.sc-flow__labels .is-done{color:var(--sc-pass-text);font-weight:600}
.sc-scan4{max-width:720px;margin:0 auto;background:#fff;border:1px solid var(--sc-line);border-radius:var(--sc-r-lg);padding:var(--sc-5);display:flex;flex-direction:column;gap:16px}
.sc-scan4+.sc-scan4,.sc-scan4+.sc-convert{margin-top:var(--sc-4)}
.sc-scan4__titlerow{display:flex;align-items:center;gap:10px}
.sc-scan4__title{font:800 18px/1.2 var(--sc-font-display);letter-spacing:-.02em;overflow-wrap:anywhere}
.sc-scan4__meta{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:12.5px;color:var(--sc-muted-text)}
.sc-scan4__log{display:flex;flex-direction:column;border-top:1px solid var(--sc-line)}
.sc-scan4__row{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid #F1F5F9;font-size:13.5px;font-weight:500;line-height:1.4}
.sc-scan4__row>span:first-child{flex:1;min-width:0}
.sc-scan4__row>span:last-child{font-size:12px;font-weight:400;color:var(--sc-muted-text);white-space:nowrap}
.sc-scan4__row--speed{flex-direction:column;gap:6px}
.sc-scan4__row--speed .sc-sweep{width:100%;height:3px}
.sc-scan4__row--speed small{font-size:12px;font-weight:400;color:var(--sc-muted-text);line-height:1.5}
.sc-scan4__kicker{font:500 12px var(--sc-font-mono);color:var(--sc-muted-text);overflow-wrap:anywhere}
.sc-scan4__kicker::before{content:"// ";color:var(--sc-accent)}
.sc-scan4__scorerow{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap}
.sc-scan4__score{font:800 68px/1 var(--sc-font-display);letter-spacing:-.04em}
.sc-scan4__score span{font:500 20px var(--sc-font-text);color:var(--sc-muted-text);letter-spacing:0}
.sc-scan4__score--pass{color:var(--sc-pass-text)}.sc-scan4__score--warn{color:var(--sc-warn)}.sc-scan4__score--fail{color:var(--sc-fail)}.sc-scan4__score--info{color:var(--sc-ink-2)}
.sc-scan4__state{display:flex;flex-direction:column;gap:8px;padding-bottom:8px;min-width:0}
.sc-scan4__state .sc-state{align-self:flex-start}
.sc-scan4__meter{display:flex;gap:3px;height:8px}
.sc-scan4__meter i{flex:1;border-radius:2px;background:var(--sc-line)}
.sc-scan4__meter i.is-lit-pass{background:var(--sc-pass)}
.sc-scan4__meter i.is-lit-warn{background:var(--sc-warn)}
.sc-scan4__meter i.is-lit-fail{background:var(--sc-fail)}
.sc-scan4__meter i.is-lit-info{background:var(--sc-line-2)}
.sc-scan4__bars{display:grid;gap:14px;grid-template-columns:1fr}
.sc-scan4__bar{display:flex;flex-direction:column;gap:6px;min-width:0}
.sc-scan4__barcap{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:13.5px;line-height:1.4}
.sc-scan4__barcap b{font-weight:600;color:var(--sc-ink)}
.sc-scan4__barpts{font:700 13.5px var(--sc-font-display);letter-spacing:-.02em;white-space:nowrap;color:var(--sc-ink)}
.sc-scan4__barpts span{font:500 12.5px var(--sc-font-text);color:var(--sc-muted-text);letter-spacing:0}
.sc-scan4__bartrack{height:6px;background:var(--sc-line);border-radius:3px;overflow:hidden}
.sc-scan4__barfill{display:block;height:100%;border-radius:3px;background:var(--sc-line-2)}
.sc-scan4__barfill--pass{background:var(--sc-pass)}.sc-scan4__barfill--warn{background:var(--sc-warn)}.sc-scan4__barfill--fail{background:var(--sc-fail)}
.sc-scan4__findings{display:flex;flex-direction:column;border-top:1px solid var(--sc-line)}
.sc-scan4__finding{padding:12px 0;border-bottom:1px solid #F1F5F9;display:flex;flex-direction:column;gap:4px}
.sc-scan4__finding--incon{border:1px dashed var(--sc-line-2);border-radius:var(--sc-r-md);background:var(--sc-bg-alt);padding:12px 14px;margin-top:10px}
.sc-scan4__findinghead{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.sc-scan4__findinghead strong{font-size:14px;font-weight:600}
.sc-scan4__finding p{font-size:13px;color:var(--sc-muted-text);line-height:1.45}
.sc-scan4__pill{font-size:11.5px;font-weight:600;border-radius:var(--sc-r-pill);padding:2px 8px;white-space:nowrap;flex:none}
.sc-scan4__pill--fail{color:var(--sc-fail);background:var(--sc-fail-soft)}
.sc-scan4__pill--warn{color:var(--sc-warn);background:var(--sc-warn-soft)}
.sc-scan4__pill--pass{color:var(--sc-pass-text);background:var(--sc-pass-soft)}
.sc-scan4__pill--info{color:var(--sc-ink-2);background:var(--sc-bg-alt)}
.sc-scan4__pill--incon{color:var(--sc-muted-text);background:#fff;border:1px solid var(--sc-line-2)}
.sc-scan4__hint{font-size:12.5px;color:var(--sc-muted-text);line-height:1.5}
.sc-scan4__hint--center{text-align:center;overflow-wrap:anywhere}
.sc-scan4 .sc-btn--primary{min-height:50px;border-radius:12px}
.sc-scan4 .sc-banner{margin:0}
.sc-scan4 .sc-error{margin:0}
.sc-scan4 h3{font:700 15px var(--sc-font-display);letter-spacing:-.02em}
.sc-scan4 .sc-scanform{max-width:none}

/* ---------- v4 breakpoints: 640 for pairs, 900 for the desktop rhythm,
   1000 for the hero columns ---------- */
@media (min-width:640px){
  .sc-v4 .sc-scanform__row{flex-direction:row}
  .sc-v4 .sc-scanform__row .sc-btn{white-space:nowrap}
  .sc-hero4__cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sc-paths,.sc-band4__cards,.sc-own{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sc-own__col+.sc-own__col{border-top:0;border-left:1px solid var(--sc-line)}
  .sc-basics4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sc-limits__row{grid-template-columns:200px minmax(0,1fr);gap:var(--sc-6);align-items:baseline;padding:28px 0}
  .sc-limits__word{font-size:40px}
  .sc-limits__text{font-size:26px;line-height:1.3;letter-spacing:-.02em}
  .sc-flow__labels{display:flex}
  .sc-scan4{padding:var(--sc-8)}
  .sc-scan4__score{font-size:84px}
  .sc-scan4__score span{font-size:24px}
  .sc-scan4__meter{height:10px}
  .sc-scan4__bars{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
  .sc-scan4__title{font-size:22px}
}
@media (min-width:900px){
  .sc-v4{--sc-v4-gutter:48px;--sc-v4-pad:96px}
  .sc-v4 h2{font-size:40px;line-height:1.08}
  .sc-v4 .sc-lede{font-size:17px}
  .sc-v4 .sc-card,.sc-path,.sc-dcard,.sc-own__col{padding:28px}
  .sc-v4 .sc-card{border-radius:var(--sc-r-xl)}
  .sc-hero4{padding:88px var(--sc-v4-gutter)}
  .sc-hero4__copy{gap:26px}
  .sc-hero4__copy h1{font-size:clamp(48px,5.3vw,68px);line-height:1.02}
  .sc-hero4__lead{font-size:19px}
  .sc-hero4__q{padding:14px 18px;font-size:15px;border-radius:14px}
  .sc-hero4__card{padding:18px;border-radius:14px;gap:12px}
  .sc-hero4__row{font-size:13.5px;padding:10px 11px;border-radius:9px}
  .sc-hero4__note{font-size:13px;padding:10px 12px;border-radius:9px}
  .sc-path,.sc-dcard,.sc-own{border-radius:var(--sc-r-xl)}
  .sc-path{gap:22px}
  .sc-path__title{font-size:13px}
  .sc-path__rows{font-size:15px;gap:12px}
  .sc-band4__head{grid-template-columns:minmax(0,1fr) 420px;gap:var(--sc-12)}
  .sc-steps4{grid-template-columns:repeat(4,minmax(0,1fr))}
  .sc-steps4::before{content:"";position:absolute;left:14px;right:14px;top:13px;height:1px;background:#334155}
  .sc-steps4__step{grid-template-columns:minmax(0,1fr);gap:12px;padding:0 28px 0 0;border-top:0}
  .sc-steps4__title{font-size:19px}
  .sc-steps4__out{font-size:14px}
  .sc-dcard__head h3{font-size:19px}
  .sc-tier--v4hi{padding:27px}
}
@media (min-width:1000px){
  .sc-hero4__inner{grid-template-columns:540px minmax(0,1fr);gap:72px}
}


/* ============================================================
   v4 ADOPTION · R22 chunk B, 2026-09-14
   The sample report (4a, 4b), pricing (5a, 5b) and method (6a, 6b)
   follow design/design_v4. Scoped the same way chunk A is, to .sc-v4
   plus one page class, so no route changes before its own chunk.
   Every class is registered in design-system.md section 11.
   ============================================================ */

/* ---------- shared: the wide v4 column and the dark call to action ---------- */
.sc-wrap--v4wide{max-width:1184px}
.sc-cta4{background:var(--sc-ink);color:#fff;border-radius:var(--sc-r-lg);padding:var(--sc-5);display:grid;gap:18px;align-items:center}
.sc-v4 .sc-cta4 h2,.sc-cta4 h3{font:700 20px/1.25 var(--sc-font-display);letter-spacing:-.02em;color:#fff}
.sc-cta4 p{font-size:14.5px;line-height:1.55;color:var(--sc-line-2)}
.sc-cta4 .sc-micro{color:var(--sc-muted-ink)}
.sc-cta4__actions{display:flex;flex-direction:column;gap:10px;min-width:0}
.sc-cta4__actions .sc-btn{justify-content:center;white-space:normal}
.sc-cta4 .sc-input{background:#1E293B;border-color:#334155;color:#fff}
.sc-cta4 .sc-input::placeholder{color:var(--sc-muted-ink)}

/* ---------- pricing 5a, 5b: five tiers ascending, comparison table ---------- */
.sc-pricehero{display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px}
.sc-pricehero h1{font:800 34px/1.05 var(--sc-font-display);letter-spacing:-.025em;text-wrap:balance}
.sc-pricehero p{font-size:16px;line-height:1.55;color:var(--sc-ink-2);max-width:600px}
.sc-tiers5{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;align-items:stretch}
.sc-tiers5>*{min-width:0}
.sc-v4 .sc-tiers5 .sc-tier{gap:12px}
.sc-tiers5 .sc-tier input,.sc-tiers5 .sc-tier select{max-width:100%}
.sc-tier__feats4{list-style:none;margin:0;padding:12px 0 0;border-top:1px solid var(--sc-line);display:grid;gap:8px;font-size:13.5px;line-height:1.45;color:var(--sc-ink-2)}
.sc-tier__feats4 li{display:flex;gap:8px}
.sc-tier__feats4 li::before{content:"\2713";color:var(--sc-pass-text);font-weight:700;flex:none}
.sc-table--cmp5 th,.sc-table--cmp5 td{font-size:13.5px;padding:12px}
.sc-table--cmp5 tbody th{width:auto}
.sc-cmp5__hi{background:var(--sc-accent-soft)}
.sc-table--cmp5 thead .sc-cmp5__hi{color:var(--sc-accent);background:var(--sc-accent-soft)}

/* ---------- method 6a, 6b: score card and the two check lists ---------- */
.sc-m4hero{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sc-8);align-items:end}
.sc-m4hero h1{font:800 34px/1.05 var(--sc-font-display);letter-spacing:-.025em;text-wrap:balance}
.sc-m4card{border:1px solid var(--sc-line);border-radius:var(--sc-r-lg);padding:var(--sc-5);display:flex;flex-direction:column;gap:10px;background:#fff;min-width:0}
.sc-v4 .sc-m4card h2{font:700 15px/1.3 var(--sc-font-display);letter-spacing:-.01em}
.sc-m4card__row{display:flex;justify-content:space-between;gap:12px;padding-top:10px;border-top:1px solid #F1F5F9;font-size:14.5px;line-height:1.5;color:var(--sc-ink-2)}
.sc-m4card__row b{font-weight:600}
.sc-m4card__row--good b{color:var(--sc-pass-text)}
.sc-m4card__row--warn b{color:var(--sc-warn)}
.sc-m4card__row--fail b{color:var(--sc-fail)}
.sc-m4card__row--info b{color:var(--sc-muted-text)}
.sc-checks4{display:flex;flex-direction:column}
.sc-checks4__head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:12px;border-bottom:2px solid var(--sc-ink)}
.sc-v4 .sc-checks4__head h2{font-size:24px;line-height:1.1;letter-spacing:-.02em}
.sc-checks4__count{font:700 13px var(--sc-font-display);color:var(--sc-accent);white-space:nowrap}
.sc-check4{display:grid;grid-template-columns:56px minmax(0,1fr);gap:14px;padding:16px 0;border-bottom:1px solid var(--sc-line)}
.sc-check4__pts{font:800 26px/1 var(--sc-font-display);letter-spacing:-.03em}
.sc-check4__pts span{font:500 12px var(--sc-font-text);color:var(--sc-muted-text);letter-spacing:0}
.sc-check4__bar{height:6px;background:var(--sc-line);border-radius:3px;overflow:hidden;margin-top:8px}
.sc-check4__bar i{display:block;height:100%;background:var(--sc-accent);border-radius:3px}
.sc-check4__q{font:700 15.5px/1.3 var(--sc-font-display);letter-spacing:-.01em}
.sc-check4__name{font-size:13px;color:var(--sc-muted-text);margin-top:4px}
.sc-check4__body{grid-column:2;font-size:14px;line-height:1.55;color:var(--sc-ink-2);margin-top:8px}

/* ---------- sample report 4a, 4b ---------- */
.sc-v4.sc-report4 h2{font:800 22px/1.25 var(--sc-font-display);letter-spacing:-.02em}
.sc-eg4{background:var(--sc-warn-soft);border-bottom:1px solid #FDE68A;color:#78350F;font-size:13.5px;line-height:1.55}
.sc-eg4 .sc-wrap{padding-top:10px;padding-bottom:10px;display:flex;gap:12px;align-items:flex-start;max-width:1184px}
.sc-eg4__tag{font:600 11.5px var(--sc-font-text);background:var(--sc-warn);color:#fff;border-radius:var(--sc-r-pill);padding:3px 9px;flex:none}
.sc-rephead4{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;flex-wrap:wrap}
.sc-rephead4>div{min-width:0}
.sc-v4.sc-report4 .sc-rephead4 h2{font:800 28px/1.05 var(--sc-font-display);letter-spacing:-.03em;overflow-wrap:anywhere;margin-top:6px}
.sc-rephead4__meta{font-size:13.5px;color:var(--sc-muted-text);margin-top:8px}
.sc-scores4{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sc-5)}
.sc-score4{background:#fff;border:1px solid var(--sc-line);border-radius:var(--sc-r-lg);padding:var(--sc-5);display:flex;flex-direction:column;gap:16px;min-width:0}
.sc-score4--next{background:var(--sc-bg-alt)}
.sc-score4__head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.sc-score4__stage{font:700 11.5px var(--sc-font-display);letter-spacing:.06em;text-transform:uppercase;color:var(--sc-muted-text)}
.sc-score4__when{font-size:13px;color:var(--sc-muted-text)}
.sc-score4__num{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap}
.sc-score4__slot{font:800 34px/1.1 var(--sc-font-display);letter-spacing:-.03em;color:var(--sc-line-2)}
.sc-score4__pills{display:flex;gap:8px;flex-wrap:wrap}
.sc-score4__say{font-size:14.5px;line-height:1.6;color:var(--sc-ink-2)}
.sc-fix4{display:flex;gap:8px;margin-top:8px;padding:8px 10px;background:var(--sc-accent-soft);border-radius:8px;color:#1E3A8A;font-size:13px;line-height:1.5}
.sc-fix4 b{font:700 10.5px var(--sc-font-text);letter-spacing:.06em;text-transform:uppercase;color:var(--sc-accent);flex:none;padding-top:2px}
/* the all-checks table: stacked rows on mobile (4b), four columns from 900 px (4a) */
.sc-find4{background:#fff;border:1px solid var(--sc-line);border-radius:var(--sc-r-lg);overflow:hidden}
.sc-find4__head{padding:var(--sc-5);border-bottom:1px solid var(--sc-line);display:flex;justify-content:space-between;align-items:baseline;gap:14px;flex-wrap:wrap}
.sc-v4.sc-report4 .sc-find4__head h2{font:700 19px/1.25 var(--sc-font-display);letter-spacing:-.01em}
.sc-find4__rule{font-size:13.5px;color:var(--sc-muted-text)}
.sc-find4__cols{display:none}
.sc-find4__row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;align-items:baseline;padding:16px var(--sc-5);border-bottom:1px solid #F1F5F9}
.sc-find4__name{grid-column:1;font-weight:600;font-size:14.5px}
.sc-find4__pts{grid-column:2;justify-self:end;font:700 13px var(--sc-font-display);color:var(--sc-accent);white-space:nowrap}
.sc-find4__status{grid-column:1/-1;justify-self:start}
.sc-find4__saw{grid-column:1/-1;display:flex;flex-direction:column;gap:6px;min-width:0;font-size:14px;line-height:1.55;color:var(--sc-ink-2)}
.sc-find4__foot{padding:16px var(--sc-5);font-size:13px;line-height:1.6;color:var(--sc-muted-text)}
/* .sc-v4.sc-report4 h2 would otherwise out-order the dark call to action's own
   white heading, which is declared earlier in this block. */
.sc-v4.sc-report4 .sc-cta4 h2{font:700 20px/1.25 var(--sc-font-display);letter-spacing:-.02em;color:#fff}

@media (min-width:640px){
  .sc-scores4,.sc-tiers5{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sc-pricehero h1{font-size:44px}
  .sc-v4.sc-report4 .sc-rephead4 h2{font-size:36px}
}
@media (min-width:900px){
  .sc-cta4{grid-template-columns:minmax(0,1fr) minmax(0,auto);gap:var(--sc-8);padding:var(--sc-8);border-radius:var(--sc-r-xl)}
  .sc-cta4--form{grid-template-columns:minmax(0,1fr) minmax(280px,380px)}
  .sc-cta4--stack{grid-template-columns:minmax(0,1fr);gap:var(--sc-5)}
  .sc-v4 .sc-cta4 h2,.sc-cta4 h3{font-size:26px;line-height:1.15}
  .sc-cta4__actions{flex-direction:row;flex-wrap:wrap}
  .sc-pricehero h1{font-size:56px}
  .sc-pricehero p{font-size:19px}
  .sc-m4hero{grid-template-columns:minmax(0,1fr) 420px;gap:var(--sc-16)}
  .sc-m4hero h1{font-size:clamp(40px,4.4vw,56px);line-height:1.05}
  .sc-m4card{padding:var(--sc-6)}
  .sc-check4{grid-template-columns:120px minmax(0,1fr) 1.2fr;gap:var(--sc-8);padding:22px 0}
  .sc-check4__body{grid-column:auto;margin-top:0}
  .sc-check4__pts{font-size:32px}
  .sc-v4 .sc-checks4__head h2{font-size:28px}
  .sc-v4.sc-report4 h2{font-size:26px}
  .sc-score4{padding:var(--sc-8);border-radius:var(--sc-r-xl)}
  .sc-v4.sc-report4 .sc-rephead4 h2{font-size:44px}
  .sc-score4__slot{font-size:40px}
  .sc-find4{border-radius:var(--sc-r-xl)}
  .sc-find4__cols{display:grid;grid-template-columns:190px 64px minmax(0,1fr) 124px;gap:0 20px;padding:10px var(--sc-5);border-bottom:1px solid var(--sc-line);background:var(--sc-bg-alt);font:600 11.5px var(--sc-font-text);letter-spacing:.06em;text-transform:uppercase;color:var(--sc-muted-text)}
  .sc-find4__row{grid-template-columns:190px 64px minmax(0,1fr) 124px;gap:0 20px;align-items:start;padding:18px var(--sc-5)}
  .sc-find4__pts{justify-self:start}
  .sc-find4__status{grid-column:4;grid-row:1;justify-self:start}
  .sc-find4__saw{grid-column:3;grid-row:1}
  /* the dark call to action keeps its own heading colour inside .sc-report4 */
  .sc-v4.sc-report4 .sc-cta4 h2{font-size:26px;line-height:1.15;color:#fff}
}
@media (min-width:1180px){
  .sc-tiers5{grid-template-columns:repeat(5,minmax(0,1fr))}
}

/* ============================================================
   SIMPLIFIED CHINESE · R21 chunk B
   The CJK stack sits after the site fonts, so Latin runs still
   render in Plus Jakarta Sans and Inter and only the Han
   characters fall through to a system CJK face. No font file is
   added and the four-file load order in design law 2.1 is
   unchanged. Scoped to [lang="zh-Hans"], so nothing on an
   English page is touched.
   ============================================================ */
[lang="zh-Hans"]{
  --sc-font-display:'Plus Jakarta Sans','PingFang SC','Microsoft YaHei','Noto Sans CJK SC','Source Han Sans SC',system-ui,sans-serif;
  --sc-font-text:Inter,'PingFang SC','Microsoft YaHei','Noto Sans CJK SC','Source Han Sans SC',system-ui,sans-serif;
}
/* Han characters have no word breaks, so long runs must be able
   to wrap inside a narrow card or table cell. */
[lang="zh-Hans"] .sc-v4{word-break:normal;overflow-wrap:anywhere;line-break:strict}
/* The language switch is a plain nav link, sized like one. */
.sc-langswitch{white-space:nowrap}
