.mob-cta-bar{display:none}
@media (max-width:768px){.mob-cta-bar{display:flex;align-items:center;gap:12px;justify-content:space-between;position:fixed;left:0;right:0;bottom:0;z-index:950;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid rgba(23,30,20,.1);transform:translateY(110%);transition:transform .3s cubic-bezier(.4,0,.2,1)}.mob-cta-bar.on{transform:none}.mob-cta-txt{font-size:.72rem;color:#555;line-height:1.35}.mob-cta-txt strong{color:#111}.mob-cta-btn{flex-shrink:0;background:#CCFF00;color:#000;font-weight:700;font-size:.82rem;font-family:'Space Grotesk',sans-serif;padding:11px 18px;border-radius:999px;text-decoration:none;white-space:nowrap;box-shadow:0 4px 14px rgba(160,200,0,.35)}body.mob-cta-on .senti{bottom:84px;transition:bottom .3s}}

/* Calm, evidence-led homepage polish. */
@media (min-width:1024px){
  .hero-h1{font-size:clamp(3.5rem,4.7vw,5.25rem);max-width:760px}
  .hero-sub{max-width:650px;margin-bottom:32px}
}
.hero::after{opacity:.55}
.hero-ctas{align-items:center}
.hero-ctas .btn-primary{box-shadow:0 8px 22px rgba(22,163,74,.18)}

.scanner-widget{
  --scanner-transition-ms:280ms;
  background:#fff;
  border:1px solid #d9ded9;
  border-top-color:#cbd2cc;
  border-radius:18px;
  box-shadow:0 2px 5px rgba(16,24,18,.05),0 22px 54px rgba(16,24,18,.13);
}
.scanner-glow{display:none}
.scanner-header{min-height:58px;padding:12px 16px;background:#fff;border-bottom-color:#e5e9e5}
.scanner-header-right{gap:9px}
.scanner-live-status{padding:6px 10px;border:1px solid #edf0ed;border-radius:999px;background:#f7f9f7}
.scanner-rescan{min-height:36px;padding:0 12px;border-radius:10px;background:#fff}
.scanner-body{display:grid;min-height:306px;padding:20px}
.scanner-loading-msg{
  position:relative;inset:auto;grid-area:1/1;min-height:266px;
  transition:opacity 200ms cubic-bezier(.4,0,.2,1),transform 240ms cubic-bezier(.22,1,.36,1);
  will-change:opacity,transform;
}
.scanner-loading-msg.fading{opacity:0;transform:scale(.99)}
.scanner-result{
  grid-area:1/1;grid-template-columns:minmax(0,1fr) 176px;gap:18px;
  transition:opacity var(--scanner-transition-ms) cubic-bezier(.22,1,.36,1) 40ms;
  pointer-events:none;
}
/* Skeleton loader grid must mirror .scanner-result above exactly, or the
   right column shifts sideways at the crossfade. Keep the two in sync. */
.sk-grid{grid-template-columns:minmax(0,1fr) 176px;gap:18px}
.scanner-result.visible{pointer-events:auto}
.scanner-result .result-row{transition:opacity 260ms ease}
.scanner-result.show-rows .result-row:nth-child(n){transition-delay:60ms}
.scanner-widget.is-transitioning .scanner-result,.scanner-widget.is-transitioning .scanner-loading-msg{pointer-events:none}
@media (min-width:641px){.scanner-live-status{min-width:108px;justify-content:center}}
.scanner-left{justify-content:flex-start}
.result-row{min-height:50px;padding:12px 10px;margin:0;border-radius:0;border-bottom-color:#e8ece8}
.result-row:first-child{border-top-color:#e8ece8}
.result-row:hover{background:#fafbfa}
.result-row-label{color:#59635c!important}
.result-row-val{color:#202621;font-weight:600}
/* val-scanning (breathing pending values) and val-flash (value-upgrade
   highlight) intentionally NOT overridden here — killing those animations
   made the loader read as frozen/washed-out instead of actively scanning. */
.scanner-right{align-items:stretch;gap:10px;padding:13px;background:#f7f9f7;border:1px solid #e5eae5;border-radius:14px;transition:background .45s ease,border-color .45s ease}
/* Verdict-state tint — the score card shifts with the verdict so the panel
   reads at a glance. Classes set by updateGaugeArc() in index.html. */
.scanner-widget.verdict-threat .scanner-right{background:#fdf3f2;border-color:#f2d8d4}
.scanner-widget.verdict-warn .scanner-right{background:#fdf8ee;border-color:#efe1c3}
.scanner-widget.verdict-clean .scanner-right{background:#f2faf3;border-color:#d2e8d5}
.scanner-widget.verdict-threat .scanner-data-badge{border-color:#f2d8d4;color:#b0564d}
.scanner-widget.verdict-warn .scanner-data-badge{border-color:#efe1c3;color:#a07b2f}
.scanner-widget.verdict-clean .scanner-data-badge{border-color:#d2e8d5;color:#3f7a4a}
.scanner-data-badge{align-self:center;background:#fff;border-color:#d7ddd8;color:#66736a;transition:border-color .45s ease,color .45s ease}
.score-block{padding:2px 0 4px}
#risk-score-circle{font-size:2.55rem;font-variant-numeric:tabular-nums;letter-spacing:-.06em}
.risk-bar{height:5px;background:#e2e7e2;border-radius:999px;overflow:hidden}
#result-message{line-height:1.35}
.verdict-sub{color:#69736c!important}
.verdict-link{color:#66736a;border-bottom-color:#c8d0ca}
.scanner-tabs{margin-top:auto;background:#eef2ee;border-color:#dfe5df}
.scanner-tab{min-height:38px;color:#647068}
.scanner-tab.active{background:#fff;color:#34463a;box-shadow:0 1px 3px rgba(16,24,18,.08),inset 0 0 0 1px #d5ddd6}
@media (max-width:640px){
  .scanner-body{min-height:300px;padding:14px}
  .scanner-loading-msg{min-height:272px}
  .scanner-result{grid-template-columns:1fr;gap:12px}
  .sk-grid{grid-template-columns:1fr;gap:12px}
  .scanner-right{padding:12px}
}
@media (prefers-reduced-motion:reduce){
  .scanner-loading-msg,.scanner-result{transition:none!important;transform:none!important}
}

/* Keep below-the-fold marketing sections out of the initial layout pass. */
@supports (content-visibility:auto){
  .value-props{content-visibility:auto;contain-intrinsic-size:auto 720px}
  .how-it-works{content-visibility:auto;contain-intrinsic-size:auto 820px}
  .vs-table{content-visibility:auto;contain-intrinsic-size:auto 680px}
  .proof-section{content-visibility:auto;contain-intrinsic-size:auto 860px}
  .quote-section{content-visibility:auto;contain-intrinsic-size:auto 440px}
  .cta-section{content-visibility:auto;contain-intrinsic-size:auto 460px}
}

/* ── Verdict rail compaction (2026-07-17): the rail ran ~2x the height of
   the signal rows — smaller score, tighter gaps, quieter threat state. The
   demo footnote moved out of the rail to .scanner-footnote (index.html). ── */
.scanner-right{gap:8px;padding:12px}
#risk-score-circle{font-size:2.05rem}
.score-block{padding:2px 0 0;gap:3px}
.risk-bar{height:4px;margin-top:4px}
.verdict-sub{margin-bottom:5px}
.verdict-cta{margin-top:4px}
.scanner-footnote{font-size:0.68rem}
.scanner-tabs{margin-top:2px;padding-top:0;border-top:none}
/* Threat state stays calm: the tint, score, and verdict headline carry the
   red — explainer, link, and badge keep neutral ink. */
.scanner-widget.verdict-threat .scanner-data-badge{border-color:#e8dad7;color:#8a7d78}
.scanner-widget.verdict-threat .verdict-link{color:#8a7f7b;border-bottom-color:#ddcbc7}
.scanner-widget.verdict-threat .verdict-sub{color:#7c716d!important}
@media (max-width:700px){#risk-score-circle{font-size:1.8rem}}
