/* ============================================================
   LUXERA — WEBSITE GROWTH SCORE (lead magnet)  /website-score
   Standalone acquisition page. Inherits every token from
   css/styles.css — declares NO new colour, font, radius or
   spacing value of its own. The three locals below only alias
   values already used in styles.css (the established red is
   used verbatim in .stat__num--burn / .input.is-invalid).
   ============================================================ */

.ws{
  --ws-warn: #fca5a5;                 /* == styles.css .stat__num--burn (LOW band) */
  --ws-warn-dim: rgba(252,165,165,.12);
  --ws-warn-line: rgba(252,165,165,.38);
  --ws-good: var(--lx-ice);           /* HIGH band */
  --ws-mid:  #ffcf8a;                 /* MID band — a caution amber so 55 reads differently from 88 */
}

/* shared eyebrow — mirrors .svc-hero__eyebrow / .pricing__eyebrow */
.ws-eyebrow{display:inline-flex;align-items:center;gap:var(--space-2);
  font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;
  font-size:12px;line-height:1;color:var(--lx-ice)}
.ws-section-head{display:flex;flex-direction:column;align-items:center;gap:var(--space-5);
  text-align:center;max-width:var(--measure-max);margin-inline:auto}
.ws-section-head .ws-eyebrow{justify-content:center}
.ws-section-lede{color:var(--text-body);max-width:60ch}

/* ============================================================
   01 · HERO + SCANNER
   ============================================================ */
.ws-hero{position:relative;overflow:clip;
  padding:150px var(--gutter) var(--space-13);text-align:center}
/* blueprint grid + centre glow behind the hero (grid fades out toward the bottom) */
.ws-hero::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(60% 55% at 50% 0%,rgba(var(--accent-rgb),.14),transparent 70%),
    linear-gradient(rgba(var(--accent-rgb),.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(var(--accent-rgb),.05) 1px,transparent 1px);
  background-size:100% 100%,42px 42px,42px 42px;
  -webkit-mask-image:linear-gradient(to bottom,#000 58%,transparent);
          mask-image:linear-gradient(to bottom,#000 58%,transparent)}
/* width:calc(50% + 450px) halves the auto side-margins of the old 900px column
   at any desktop width; min(100%,…) keeps it full-width on small screens */
.ws-hero__inner{position:relative;z-index:2;width:min(100%,calc(50% + 450px));margin-inline:auto;
  display:flex;flex-direction:column;align-items:center;gap:var(--space-8)}
.ws-hero__title{max-width:26ch;text-wrap:balance}
.ws-hero__lede{max-width:60ch;color:var(--text-body)}

/* ── hero decorations: floating "output preview" cards ── */
.ws-hero__decor{position:absolute;inset:0;z-index:1;pointer-events:none}
.ws-decor{position:absolute;opacity:.92}
.ws-decor-card{background:var(--surface-card);border:1px solid var(--border-card);
  border-radius:var(--radius-xl)}
.ws-decor--dial{top:150px;left:20px;transform:rotate(-6deg)}
.ws-decor--dial .ws-decor-card{padding:var(--space-7) var(--space-8)}
.ws-decor--dial .ws-dial{gap:var(--space-3)}
.ws-decor--finding{top:236px;right:14px;transform:rotate(5deg)}
.ws-decor--finding .ws-decor-card{width:244px;padding:var(--space-6) var(--space-6);
  display:flex;flex-direction:column;gap:var(--space-3)}
.ws-decor-card__top{display:flex;align-items:flex-start;gap:var(--space-4)}
.ws-decor-card__icon{width:20px;height:20px;flex:none;color:var(--ws-warn)}
.ws-decor-card__icon svg{width:100%;height:100%}
.ws-decor-card__title{flex:1 1 auto;min-width:0;color:var(--text-on-dark);
  font-family:var(--font-display);font-feature-settings:var(--font-features);
  font-size:var(--fs-body);line-height:var(--lh-tight)}
.ws-decor-card__meta{font-family:var(--font-display);letter-spacing:normal;
  font-size:13px;color:var(--ws-warn);padding-left:calc(20px + var(--space-4))}
.ws-decor-card__body{color:var(--text-muted);font-family:var(--font-display);
  font-weight:400;letter-spacing:var(--ls-body);font-feature-settings:var(--font-features);
  font-size:var(--fs-h5-sm);line-height:var(--lh-body);padding-left:calc(20px + var(--space-4))}
@media (prefers-reduced-motion:no-preference){
  .ws-decor--dial{animation:wsFloatA 7s ease-in-out infinite}
  .ws-decor--finding{animation:wsFloatB 8s ease-in-out infinite}
}
@keyframes wsFloatA{0%,100%{transform:rotate(-6deg) translateY(0)}50%{transform:rotate(-6deg) translateY(-9px)}}
@keyframes wsFloatB{0%,100%{transform:rotate(5deg) translateY(0)}50%{transform:rotate(5deg) translateY(-11px)}}
/* the centred column owns the page below this width — hide the side previews */
@media (max-width:1199.98px){.ws-hero__decor{display:none}}

/* the scanner is the hero visual — glowing accent card */
.ws-scanner{width:100%;max-width:860px;margin-inline:auto;
  display:flex;flex-direction:column;gap:var(--space-5);
  padding:0;background:none;border:0;border-radius:0;box-shadow:none}
.ws-scanner__form{display:flex;gap:var(--space-4);align-items:stretch}
.ws-scanner__field{position:relative;flex:1 1 0;min-width:0;display:flex;align-items:center}
.ws-scanner__field svg{position:absolute;left:16px;width:20px;height:20px;
  color:var(--text-subtle);pointer-events:none}
.ws-scanner__input{width:100%;background:var(--surface-raised);
  border:1px solid var(--border-input);border-radius:var(--radius-md);
  box-shadow:var(--shadow-input);padding:18px 16px 18px 46px;
  font-family:var(--font-display);font-size:16px;line-height:1.2;color:var(--lx-white);
  outline:none;transition:border-color var(--dur-fast) var(--ease-out),
                          background var(--dur-fast) var(--ease-out)}
.ws-scanner__input::placeholder{color:var(--text-placeholder)}
.ws-scanner__input:hover{border-color:rgba(255,255,255,.2)}
.ws-scanner__input:focus{background:rgba(255,255,255,.14);border-color:var(--lx-ice)}
.ws-scanner__input.is-invalid{border-color:var(--ws-warn);background:rgba(252,165,165,.06)}
.ws-scanner__submit{flex:none}
.ws-scanner__meta{display:flex;flex-wrap:wrap;justify-content:center;
  gap:var(--space-3) var(--space-6);color:var(--text-subtle);font-size:var(--fs-h5-sm)}
.ws-scanner__meta span{display:inline-flex;align-items:center;gap:var(--space-2)}
.ws-scanner__meta svg{width:13px;height:13px;color:var(--lx-ice)}
.ws-scanner__status{min-height:18px;font-size:13px;color:var(--text-muted);text-align:left}
.ws-scanner__status[data-state=error]{color:var(--ws-warn)}
.ws-scanner__status[data-state=busy]{color:var(--text-muted)}
.ws-scanner__status[data-state=ok]{color:var(--lx-ice)}

/* spinner used in the analyzing button + statuses */
.ws-spin{width:16px;height:16px;flex:none;border-radius:50%;
  border:2px solid rgba(10,20,25,.35);border-top-color:currentColor;
  animation:wsSpin .7s linear infinite;display:inline-block}
@keyframes wsSpin{to{transform:rotate(360deg)}}

.ws-hero__proof{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}
.ws-hero__proof .proof__icon{width:16px;height:16px;flex:none;color:var(--lx-ice)}
/* three trust checks packed into the hero proof pill */
.proof__pill--checks{flex-wrap:wrap;justify-content:center;
  gap:var(--space-3) var(--space-6);padding:8px 16px}
.proof__pill--checks > span{display:inline-flex;align-items:center;gap:var(--space-2);
  color:var(--text-muted);font-size:var(--fs-h5-sm)}
.proof__pill--checks svg{width:13px;height:13px;flex:none;color:var(--lx-ice)}
@media (max-width:559.98px){
  .proof__pill--checks{background:none;padding:0}
}

/* social-proof pill reused verbatim from .proof; only the wrapper differs */

@media (max-width:809.98px){
  .ws-hero{padding:120px var(--gutter) var(--space-11)}
  .ws-scanner__form{flex-direction:column}
  .ws-scanner__submit{width:100%}
}

/* ============================================================
   LIVE RESULT (revealed under the scanner after Analyze)
   ============================================================ */
/* the result is its own full-screen page, opened after the loader finishes */
.ws-result{display:none;text-align:left}
.ws-result.is-shown{position:fixed;inset:0;z-index:200;display:block;overflow-y:auto;
  background:var(--surface-page)}
/* the report is a standalone page — hide the site chrome behind it */
:root.ws-report-open .nav,
:root.ws-report-open .ws-sticky-cta{display:none}
.ws-reportpage{min-height:100%;display:flex;flex-direction:column}
.ws-report__bar{position:sticky;top:0;z-index:2;display:flex;align-items:center;
  justify-content:space-between;gap:var(--space-6);padding:var(--space-6) var(--gutter);
  background:rgba(1,16,20,.72);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--border-hairline)}
.ws-report__logo img{width:120px;height:auto;display:block}
.ws-report__restart{font-size:var(--fs-h5-sm);color:var(--text-muted);cursor:pointer;
  padding:8px 16px;border-radius:var(--radius-full);border:1px solid var(--border-card);
  transition:color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}
.ws-report__restart:hover{color:var(--lx-ice);border-color:var(--border-accent)}
.ws-report__body{flex:1;padding:var(--space-11) var(--gutter) var(--space-13)}
.ws-report__block{display:flex;flex-direction:column;gap:var(--space-7)}
.ws-report__head{display:flex;flex-direction:column;gap:var(--space-3)}
.ws-result__inner{display:flex;flex-direction:column;gap:var(--space-10);
  max-width:var(--content-max);margin-inline:auto}
.ws-result__url{display:inline-flex;align-items:center;gap:var(--space-3);
  color:var(--text-muted);font-family:var(--font-mono);font-size:12px;
  background:var(--surface-raised);border:1px solid var(--border-input);
  border-radius:var(--radius-full);padding:8px 16px}
.ws-result__url b{color:var(--lx-ice);font-weight:400}

/* locked suggestions behind the email gate */
.ws-locked__wrap{position:relative}
.ws-locked__stack{display:flex;flex-direction:column;gap:var(--space-6)}
.ws-locked.is-locked .ws-locked__stack{filter:blur(7px);opacity:.5;pointer-events:none;user-select:none}
.ws-locked__gate{display:none}
.ws-locked.is-locked .ws-locked__gate{position:absolute;inset:0;display:flex;
  flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);
  text-align:center;padding:var(--space-10) var(--space-8);
  background:radial-gradient(120% 85% at 50% 50%,rgba(1,16,20,.5),rgba(1,16,20,.86))}
.ws-locked__lock{width:48px;height:48px;flex:none;border-radius:var(--radius-full);
  display:flex;align-items:center;justify-content:center;color:var(--lx-ice);
  background:var(--surface-raised);border:1px solid var(--border-accent)}
.ws-locked__lock svg{width:22px;height:22px}
.ws-locked__title{color:var(--text-on-dark)}
.ws-locked__sub{color:var(--text-muted);max-width:46ch}
.ws-locked .ws-form{width:min(420px,100%);margin-top:var(--space-3)}
/* class display rules would otherwise beat the [hidden] attribute */
.ws-gate-done[hidden],.ws-findings[hidden]{display:none}
.u-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media (max-width:639.98px){
  .ws-report__bar .ws-result__url{display:none}
}

/* ============================================================
   SCORE CARD · gauge + six signals  (used live + as sample)
   ============================================================ */
.ws-score{display:grid;grid-template-columns:auto 1fr;gap:var(--space-11);
  align-items:center;padding:var(--space-10);background:var(--surface-card);
  border:2px solid var(--border-card);border-radius:var(--radius-3xl);
  box-shadow:var(--shadow-glow-card)}
.ws-gauge{position:relative;width:200px;height:200px;flex:none;margin-inline:auto}
.ws-gauge svg{width:100%;height:100%;transform:rotate(-90deg)}
.ws-gauge__track{fill:none;stroke:var(--surface-hover);stroke-width:14}
.ws-gauge__val{fill:none;stroke:var(--band,var(--lx-ice));stroke-width:14;stroke-linecap:round;
  stroke-dasharray:var(--circ);
  stroke-dashoffset:calc(var(--circ) - var(--circ) * var(--score,0) / 100);
  filter:drop-shadow(0 0 10px var(--band-glow,rgba(var(--accent-rgb),.5)));
  transition:stroke-dashoffset 1.2s var(--ease-out)}
.ws-gauge__mid{position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:2px}
.ws-gauge__num{font-family:var(--font-display);font-size:54px;line-height:1;
  color:var(--band,var(--lx-ice));text-shadow:0 4px 24px var(--band-glow,rgba(var(--accent-rgb),.25));
  font-variant-numeric:tabular-nums}
.ws-gauge__den{font-size:13px;color:var(--text-subtle)}
.ws-gauge__band{font-family:var(--font-display);font-weight:600;font-size:13px;
  letter-spacing:-.01em;color:var(--band,var(--lx-ice));margin-top:4px;min-height:16px}
.ws-gauge__cap{margin-top:2px;font-family:var(--font-display);letter-spacing:normal;
  font-size:13px;color:var(--text-muted)}
/* score bands: bad should look bad, good should look good */
.ws-gauge[data-band=low]{--band:var(--ws-warn);--band-glow:rgba(252,165,165,.45)}
.ws-gauge[data-band=mid]{--band:var(--ws-mid);--band-glow:rgba(255,207,138,.4)}
.ws-gauge[data-band=high]{--band:var(--lx-ice);--band-glow:rgba(var(--accent-rgb),.5)}

.ws-signals{display:flex;flex-direction:column;gap:var(--space-6);min-width:0}
.ws-signal{display:grid;grid-template-columns:minmax(96px,120px) 1fr auto;
  align-items:center;gap:var(--space-6)}
.ws-signal__name{color:var(--text-on-dark);font-size:var(--fs-body)}
.ws-signal__track{display:block;height:8px;border-radius:var(--radius-full);
  background:var(--surface-hover);overflow:hidden}
.ws-signal__fill{display:block;height:100%;border-radius:var(--radius-full);
  width:calc(var(--v,0) * 1%);background:var(--lx-ice);
  transition:width 1s var(--ease-out)}
.ws-signal__val{font-family:var(--font-mono);font-size:13px;
  font-variant-numeric:tabular-nums;color:var(--text-on-dark);min-width:52px;text-align:right}
.ws-signal[data-band=low]  .ws-signal__fill{background:var(--ws-warn)}
.ws-signal[data-band=low]  .ws-signal__val{color:var(--ws-warn)}
.ws-signal[data-band=mid]  .ws-signal__fill{background:var(--ws-mid)}
.ws-signal[data-band=mid]  .ws-signal__val{color:var(--ws-mid)}
.ws-signal[data-band=high] .ws-signal__fill{background:var(--ws-good)}
.ws-signal[data-band=high] .ws-signal__val{color:var(--lx-ice)}

/* ============================================================
   REPORT PREVIEW (section 03) — example card + benchmark dials
   ============================================================ */
/* report preview: signal dials (left) + suggestions (right), side by side */
.ws-report{display:grid;grid-template-columns:minmax(0,0.85fr) minmax(0,1.15fr);
  gap:var(--space-9);align-items:start;
  max-width:var(--content-max);margin:var(--space-10) auto 0}
.ws-report .ws-sample,.ws-report .ws-bench{margin:0;max-width:none;width:100%}
.ws-report .ws-bench{order:0}    /* dials on the left */
.ws-report .ws-sample{order:1}   /* suggestions on the right */
.ws-report .ws-dials{display:grid;grid-template-columns:repeat(3,1fr);
  gap:var(--space-8) var(--space-6);justify-items:center;width:100%}
@media (max-width:1023.98px){
  .ws-report{grid-template-columns:1fr;gap:var(--space-11)}
  .ws-report .ws-dials{display:flex}
}

.ws-sample{max-width:var(--content-max);margin:var(--space-10) auto 0}
.ws-sample__head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-5);
  margin-bottom:var(--space-6)}
.ws-sample__note{color:var(--text-subtle);font-size:var(--fs-h5-sm)}
.ws-sample__legend{display:flex;flex-wrap:wrap;justify-content:center;
  gap:var(--space-5) var(--space-9);margin-top:var(--space-8)}
.ws-sample__legend span{display:inline-flex;align-items:center;gap:var(--space-3);
  color:var(--text-muted);font-size:var(--fs-h5-sm)}
.ws-dot{width:10px;height:10px;border-radius:50%;flex:none}
.ws-dot--high{background:var(--ws-good)}
.ws-dot--mid{background:var(--ws-mid)}
.ws-dot--low{background:var(--ws-warn)}

/* insights / suggestions list (example report) */
.ws-insights{background:var(--surface-card);border:2px solid var(--border-card);
  border-radius:var(--radius-2xl);box-shadow:var(--shadow-card);
  padding:var(--space-4) var(--space-9) var(--space-5)}
.ws-insights__label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;
  font-size:12px;color:var(--text-muted);padding:var(--space-5) 0;
  border-bottom:1px solid var(--border-faint)}
.ws-insight{border-bottom:1px solid var(--border-faint)}
.ws-insight:last-child{border-bottom:0}
.ws-insight summary{display:flex;align-items:center;gap:var(--space-5);
  padding:var(--space-6) 0;cursor:pointer;list-style:none}
.ws-insight summary::-webkit-details-marker{display:none}
.ws-insight summary:focus-visible{outline:2px solid var(--lx-ice);outline-offset:2px;border-radius:6px}
.ws-insight__icon{width:22px;height:22px;flex:none;display:flex;align-items:center;justify-content:center}
.ws-insight__icon svg{width:100%;height:100%}
.ws-insight[data-sev=high]   .ws-insight__icon{color:var(--ws-warn)}
.ws-insight[data-sev=medium] .ws-insight__icon{color:var(--ws-mid)}
.ws-insight[data-sev=low]    .ws-insight__icon{color:var(--text-subtle)}
.ws-insight__title{flex:1 1 auto;min-width:0;color:var(--text-on-dark);font-size:var(--fs-body)}
.ws-insight__meta{flex:none;color:var(--text-subtle);font-family:var(--font-display);
  font-size:13px;letter-spacing:normal}
.ws-insight[data-sev=high] .ws-insight__meta{color:var(--ws-warn)}
.ws-insight__chev{width:20px;height:20px;flex:none;color:var(--text-subtle);
  transition:transform var(--dur-base) var(--ease-out)}
.ws-insight[open] .ws-insight__chev{transform:rotate(180deg)}
.ws-insight__body{margin:0;padding:0 0 var(--space-6) calc(22px + var(--space-5));
  color:var(--text-body);max-width:84ch}
@media (max-width:639.98px){
  .ws-insights{padding-inline:var(--space-7)}
  .ws-insight summary{flex-wrap:wrap}
  .ws-insight__title{flex:1 1 100%;order:1}
  .ws-insight__icon{order:0}
  .ws-insight__chev{order:0;margin-left:auto}
  .ws-insight__meta{order:2;padding-left:calc(22px + var(--space-5))}
  .ws-insight__body{padding-left:0}
}

/* prioritised suggestions as a vertical stack of separate cards */
.ws-suggestions{display:flex;flex-direction:column;gap:var(--space-6)}
.ws-suggestions .ws-insights__label{border-bottom:0;padding:0}
.ws-suggestion{background:var(--surface-card);border:1px solid var(--border-card);
  border-radius:var(--radius-xl);box-shadow:var(--shadow-card);
  padding:var(--space-7);display:flex;flex-direction:column;gap:var(--space-4)}
.ws-suggestion__top{display:flex;align-items:center;gap:var(--space-4)}
.ws-suggestion__icon{width:22px;height:22px;flex:none;display:flex;align-items:center;justify-content:center}
.ws-suggestion__icon svg{width:100%;height:100%}
.ws-suggestion[data-sev=high]   .ws-suggestion__icon{color:var(--ws-warn)}
.ws-suggestion[data-sev=medium] .ws-suggestion__icon{color:var(--ws-mid)}
.ws-suggestion[data-sev=low]    .ws-suggestion__icon{color:var(--text-subtle)}
.ws-suggestion__title{flex:1 1 auto;min-width:0;color:var(--text-on-dark);font-size:var(--fs-body)}
.ws-suggestion__meta{flex:none;color:var(--text-subtle);font-family:var(--font-display);font-size:13px}
.ws-suggestion[data-sev=high] .ws-suggestion__meta{color:var(--ws-warn)}
.ws-suggestion__body{margin:0;color:var(--text-body);
  padding-left:calc(22px + var(--space-4));max-width:84ch}
@media (max-width:639.98px){
  .ws-suggestion__top{flex-wrap:wrap}
  .ws-suggestion__title{flex:1 1 100%;order:1}
  .ws-suggestion__icon{order:0}
  .ws-suggestion__meta{order:2;padding-left:calc(22px + var(--space-4))}
  .ws-suggestion__body{padding-left:0}
}

.ws-bench{max-width:var(--content-max);margin:var(--space-13) auto 0;
  display:flex;flex-direction:column;align-items:center}
.ws-bench__label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;
  font-size:12px;color:var(--text-muted)}
.ws-bench__note{color:var(--text-subtle);font-size:var(--fs-h5-sm);text-align:center;
  margin-top:var(--space-6)}
.ws-dials{display:flex;flex-wrap:wrap;justify-content:center;
  gap:var(--space-9) var(--space-11);margin-top:var(--space-8)}
.ws-dial{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}
.ws-dial__ring{position:relative;width:104px;height:104px}
.ws-dial__ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.ws-dial__track{fill:none;stroke:var(--surface-hover);stroke-width:9}
.ws-dial__val{fill:none;stroke:var(--band,var(--lx-ice));stroke-width:9;stroke-linecap:round;
  stroke-dasharray:var(--circ);
  stroke-dashoffset:calc(var(--circ) - var(--circ) * var(--score,0) / 100);
  filter:drop-shadow(0 0 6px var(--band-glow,rgba(var(--accent-rgb),.4)))}
.ws-dial__mid{position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center}
.ws-dial__num{font-family:var(--font-display);font-size:28px;line-height:1;
  color:var(--band,var(--lx-ice));font-variant-numeric:tabular-nums}
.ws-dial__den{font-size:10px;color:var(--text-subtle);margin-top:1px}
.ws-dial__label{display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center}
.ws-dial__name{color:var(--text-on-dark);font-size:var(--fs-h5-sm)}
.ws-dial__tier{font-family:var(--font-display);letter-spacing:normal;
  font-size:12px;color:var(--text-subtle)}
.ws-dial[data-band=low]{--band:var(--ws-warn);--band-glow:rgba(252,165,165,.4)}
.ws-dial[data-band=mid]{--band:var(--ws-mid);--band-glow:rgba(255,207,138,.4)}
.ws-dial[data-band=high]{--band:var(--lx-ice);--band-glow:rgba(var(--accent-rgb),.45)}
@media (max-width:809.98px){
  .ws-dials{gap:var(--space-8) var(--space-9)}
  .ws-dial__ring{width:88px;height:88px}
  .ws-dial__num{font-size:24px}
}

/* interpretive anchor + honest "preliminary read" + what-we-detected lines */
.ws-score-note{margin-top:var(--space-6);display:flex;flex-direction:column;gap:var(--space-3);
  max-width:var(--content-max);margin-inline:auto}
.ws-benchmark{color:var(--text-muted);font-size:var(--fs-h5-sm);text-align:center}
.ws-prelim{display:flex;align-items:center;justify-content:center;gap:var(--space-3);
  color:var(--text-subtle);font-size:var(--fs-h5-sm);text-align:center}
.ws-prelim svg{width:14px;height:14px;flex:none;color:var(--lx-ice)}
/* streamed report: "finishing" placeholder shown while the action plan is still generating */
.ws-partial-note{display:flex;align-items:center;gap:var(--space-3);margin:0;color:var(--text-subtle);font-size:var(--fs-h5-sm)}
.ws-detected{color:var(--text-subtle);font-size:var(--fs-h5-sm);text-align:center;
  font-family:var(--font-mono)}
.ws-detected b{color:var(--text-muted);font-weight:400}

@media (max-width:809.98px){
  .ws-score{grid-template-columns:1fr;gap:var(--space-9);
    padding:var(--space-8);border-radius:var(--radius-2xl)}
  .ws-signal{grid-template-columns:minmax(84px,auto) 1fr auto;gap:var(--space-5)}
}

/* ============================================================
   FINDING CARDS (example + live), incl. locked/blurred
   ============================================================ */
.ws-findings{display:flex;flex-direction:column;gap:var(--space-6);
  max-width:var(--content-max);margin-inline:auto}
.ws-finding{position:relative;overflow:hidden;
  background:var(--surface-card);border:2px solid var(--border-card);
  border-radius:var(--radius-2xl);box-shadow:var(--shadow-card);padding:var(--space-9);
  display:flex;flex-direction:column;gap:var(--space-6)}
.ws-finding--flag{border-color:var(--ws-warn-line)}
.ws-finding__top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4)}
.ws-badge{display:inline-flex;align-items:center;gap:var(--space-2);
  font-family:var(--font-display);font-weight:500;letter-spacing:normal;
  font-size:13px;padding:6px 12px;border-radius:var(--radius-full)}
.ws-badge--flag{background:var(--ws-warn-dim);border:1px solid var(--ws-warn-line);
  color:var(--ws-warn)}
.ws-badge--cat{background:var(--surface-accent-dim);border:1px solid var(--border-card);
  color:var(--lx-ice)}
.ws-finding__title{color:var(--text-on-dark)}
.ws-finding__body{color:var(--text-body);max-width:72ch}
.ws-finding__meta{display:flex;flex-wrap:wrap;gap:var(--space-3)}
.ws-metachip{display:inline-flex;align-items:center;gap:var(--space-2);
  background:var(--surface-raised);border:1px solid var(--border-input);
  border-radius:var(--radius-full);padding:6px 14px;
  font-size:var(--fs-h5-sm);color:var(--text-muted)}
.ws-metachip b{color:var(--text-on-dark);font-weight:600}
.ws-finding__rec{display:flex;flex-direction:column;gap:var(--space-2);
  padding-top:var(--space-6);border-top:1px solid var(--border-faint)}
.ws-finding__rec-label{font-family:var(--font-mono);text-transform:uppercase;
  letter-spacing:.09em;font-size:11px;color:var(--lx-ice)}
.ws-finding__rec-text{color:var(--text-body)}
/* the FIX for the #1 issue stays locked until the report is unlocked */
.ws-finding__rec--locked{position:relative;min-height:52px}
.ws-finding__rec--locked .ws-finding__rec-text{filter:blur(6px);opacity:.5;user-select:none}
.ws-finding__rec-lockcta{position:absolute;left:0;right:0;top:var(--space-6);bottom:0;
  display:flex;align-items:center;justify-content:center;gap:var(--space-3);
  font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;font-size:11px;
  color:var(--lx-ice)}
.ws-finding__rec-lockcta svg{width:14px;height:14px}

/* locked / teaser finding */
.ws-finding--locked{align-items:stretch}
.ws-finding--locked .ws-finding__blur{filter:blur(7px);opacity:.5;
  user-select:none;pointer-events:none}
.ws-finding__lockrow{display:flex;align-items:center;gap:var(--space-4)}
.ws-finding__lock{position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:var(--space-3);text-align:center;
  background:linear-gradient(180deg,rgba(1,16,20,.35),rgba(1,16,20,.7));
  color:var(--text-on-dark);padding:var(--space-6)}
.ws-finding__lock svg{width:26px;height:26px;color:var(--lx-ice)}
.ws-finding__lock-cat{font-family:var(--font-display);letter-spacing:normal;
  font-size:13px;color:var(--text-muted)}

/* ============================================================
   LEAD GATE  (shown after the first finding, live flow)
   ============================================================ */
.ws-gate{position:relative;overflow:hidden;
  background:linear-gradient(125deg,var(--lx-deep) 0%,rgba(var(--accent-rgb),.12) 100%);
  border:2px solid var(--border-accent);border-radius:var(--radius-3xl);
  box-shadow:var(--shadow-glow-card);
  padding:var(--space-11);display:grid;grid-template-columns:1fr 1fr;
  gap:var(--space-11);align-items:center}
.ws-gate__copy{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-5)}
.ws-gate__count{font-family:var(--font-display);color:var(--lx-ice);
  text-shadow:var(--glow-text)}
.ws-gate__list{display:flex;flex-direction:column;gap:var(--space-4);margin-top:var(--space-2)}
.ws-gate__list li{display:flex;align-items:center;gap:var(--space-4);color:var(--text-body);
  min-width:0}
.ws-gate__list svg{width:16px;height:16px;color:var(--lx-ice);flex:none}
/* redacted finding titles — real curiosity, blurred until unlock */
.ws-gate__list .ws-blur{filter:blur(4.5px);opacity:.75;user-select:none;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ws-gate.is-done{grid-template-columns:1fr;text-align:center;place-items:center}
.ws-gate.is-done .ws-gate__copy{align-items:center;text-align:center}

@media (max-width:899.98px){
  .ws-gate{grid-template-columns:1fr;gap:var(--space-9);
    padding:var(--space-9);border-radius:var(--radius-2xl)}
}

/* ============================================================
   FORMS (lead gate + qualification)  — reuse .field/.input,
   but a NON-".form" wrapper so app.js's contact handler skips it
   ============================================================ */
.ws-form{display:flex;flex-direction:column;gap:var(--space-6);width:100%}
.ws-form__row{display:flex;gap:var(--space-5)}
.ws-form .field label{color:var(--text-muted);font-size:var(--fs-h5-sm)}
.ws-form__grid{display:flex;flex-direction:column;gap:var(--space-6);align-items:flex-start}
.ws-form__status{min-height:18px;font-size:13px;color:var(--lx-ice)}
.ws-form__status[data-state=error]{color:var(--ws-warn)}
.ws-form__status[data-state=ok]{color:var(--lx-ice)}
.ws-form__note{color:var(--text-subtle);font-size:var(--fs-h5-sm)}
@media (max-width:809.98px){ .ws-form__row{flex-direction:column} }

/* unlock success panel (shown after the gate is completed) */
.ws-gate-done{display:flex;flex-direction:column;align-items:center;gap:var(--space-5);
  text-align:center;padding:var(--space-10);
  background:linear-gradient(125deg,var(--lx-deep) 0%,rgba(var(--accent-rgb),.1) 100%);
  border:2px solid var(--border-accent);border-radius:var(--radius-3xl);
  box-shadow:var(--shadow-glow-card)}
.ws-gate-done__check{width:52px;height:52px;border-radius:var(--radius-full);flex:none;
  display:flex;align-items:center;justify-content:center;color:var(--lx-deep);
  background:var(--lx-ice);box-shadow:var(--shadow-btn-primary)}
.ws-gate-done__check svg{width:26px;height:26px}
#ws-more-findings{margin-top:var(--space-8)}

/* ============================================================
   05 · OPPORTUNITY CALCULATOR — reuses .calc/.ctrl/.stat.
   Only the opportunity block + note are local.
   ============================================================ */
.ws-opp{display:flex;flex-direction:column;gap:var(--space-4)}
.ws-opp__row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-5)}
.ws-opp__row span:first-child{color:var(--text-body);font-size:var(--fs-h5-sm)}
.ws-opp__row b{font-family:var(--font-display);font-weight:500;color:var(--lx-ice);
  font-variant-numeric:tabular-nums}
.ws-opp__revenue b{font-size:24px;text-shadow:var(--glow-text)}
.calc__disclaimer{color:var(--text-subtle);font-size:var(--fs-h5-sm);
  text-align:center;max-width:60ch;margin:var(--space-6) auto 0}
/* This calculator's CTA is long — let its grid tracks shrink below content
   min-content and let the button wrap, so nothing is clipped on mobile.
   Scoped to [data-score-calc] so the service-page calculators are untouched. */
[data-score-calc] .calc{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
[data-score-calc] .calc__cta .btn{white-space:normal;text-align:center}
@media (max-width:1199.98px){ [data-score-calc] .calc{grid-template-columns:minmax(0,1fr)} }

/* ============================================================
   08 · EXPERT TEARDOWN — progression + qualification
   ============================================================ */
.ws-progression{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);
  width:100%;max-width:440px;margin-inline:auto}
.ws-prog-step{width:100%;display:flex;align-items:center;justify-content:space-between;
  gap:var(--space-6);padding:var(--space-7) var(--space-8);
  background:var(--surface-card);border:2px solid var(--border-card);
  border-radius:var(--radius-2xl);box-shadow:var(--shadow-card)}
.ws-prog-step--final{border-color:var(--border-accent);
  background:linear-gradient(125deg,var(--lx-deep) 0%,rgba(var(--accent-rgb),.1) 100%)}
.ws-prog-step__k{color:var(--text-muted);font-size:var(--fs-h5-sm)}
.ws-prog-step__v{color:var(--lx-ice);font-family:var(--font-display);font-size:var(--fs-lead)}
.ws-prog-arrow{width:22px;height:22px;color:var(--text-subtle)}
.ws-teardown{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-12);
  align-items:center;max-width:var(--content-max);margin-inline:auto}
.ws-teardown__copy{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-6)}
.ws-teardown__micro{color:var(--text-subtle);font-size:var(--fs-h5-sm)}
.ws-qual{width:100%;margin-top:var(--space-8);display:none}
.ws-qual.is-shown{display:block}
@media (max-width:1199.98px){
  .ws-teardown{grid-template-columns:1fr;gap:var(--space-9)}
}

/* ============================================================
   07 / 09 · result + credibility source lines
   ============================================================ */
.ws-stat-src{color:var(--text-subtle);font-size:var(--fs-h5-sm);
  text-align:center;margin-top:var(--space-7)}
.ws-stat-src a{color:var(--lx-ice)}
.ws-logos{margin-top:var(--space-10)}
.ws-form__opt{color:var(--text-subtle);font-weight:400}

/* named testimonial — a real, attributed quote near the proof stats */
.ws-quote{max-width:var(--measure-max);margin:var(--space-11) auto 0;
  display:flex;flex-direction:column;align-items:center;gap:var(--space-7);text-align:center}
.ws-quote blockquote{margin:0;color:var(--text-primary)}
.ws-quote__who{display:flex;align-items:center;gap:var(--space-5)}
.ws-quote__who img{width:48px;height:48px;border-radius:var(--radius-full);object-fit:cover;flex:none}
.ws-quote__who span{display:flex;flex-direction:column;text-align:left;color:var(--text-subtle);
  font-size:var(--fs-h5-sm)}
.ws-quote__who b{color:var(--text-on-dark);font-weight:600}

/* founder credit — names the person behind the score */
.ws-founder{display:flex;align-items:center;gap:var(--space-8);max-width:var(--measure-max);
  margin:var(--space-11) auto 0;padding:var(--space-9);
  background:var(--surface-card-alpha);border:2px solid var(--border-card);
  border-radius:var(--radius-2xl);box-shadow:var(--shadow-card)}
.ws-founder__photo{width:84px;height:84px;border-radius:var(--radius-full);object-fit:cover;
  object-position:center top;flex:none}
.ws-founder__copy{display:flex;flex-direction:column;gap:var(--space-3)}
@media (max-width:809.98px){ .ws-founder{flex-direction:column;text-align:center} }

/* ============================================================
   11 · FINAL CTA  (echoes the hero scanner)
   ============================================================ */
.ws-final{position:relative;overflow:hidden;background:var(--surface-card);
  padding:var(--space-15) var(--gutter);text-align:center}
.ws-final__glow{position:absolute;top:0;left:0;right:0;height:4px;
  background:linear-gradient(90deg,rgba(var(--accent-rgb),.7) 0%,var(--lx-ice) 51%,rgba(var(--accent-rgb),.7) 100%)}
.ws-final__inner{position:relative;max-width:760px;margin-inline:auto;
  display:flex;flex-direction:column;align-items:center;gap:var(--space-7)}
.ws-final__brand img{width:132px;height:auto}
.ws-final__legal{margin-top:var(--space-5);color:var(--text-subtle);
  font-size:var(--fs-h5-sm);line-height:var(--lh-body);text-align:center;max-width:60ch}

/* ============================================================
   FOOTER (simplified) + legal dialog
   ============================================================ */
.ws-footer{position:relative;background:var(--lx-deep);
  padding:var(--space-12) var(--gutter);
  display:flex;flex-direction:column;align-items:center;gap:var(--space-8)}
.ws-footer__brand img{width:132px;height:auto}
.ws-footer__tag{color:var(--text-muted);text-align:center;max-width:52ch}
.ws-footer__links{display:flex;flex-wrap:wrap;justify-content:center;
  gap:var(--space-6);align-items:center}
.ws-footer__links a,.ws-footer__links button{color:var(--text-muted);cursor:pointer;
  transition:color var(--dur-fast) var(--ease-out)}
.ws-footer__links a:hover,.ws-footer__links button:hover{color:var(--lx-ice)}
.ws-footer__rule{width:100%;max-width:var(--content-max);height:1px;
  background:var(--border-hairline)}
.ws-footer__legal{color:var(--text-subtle);font-size:var(--fs-h5-sm);text-align:center}

/* sticky Analyze banner — appears once the hero scanner scrolls out of view */
.ws-sticky-cta{position:fixed;left:0;right:0;bottom:24px;margin-inline:auto;z-index:60;
  width:min(680px,calc(100vw - 48px));
  display:flex;align-items:center;gap:var(--space-4);
  padding:var(--space-4);
  background:var(--surface-card);border:1px solid var(--border-accent);
  border-radius:var(--radius-2xl);
  transform:translateY(24px);opacity:0;pointer-events:none;
  transition:transform var(--dur-base) var(--ease-out),opacity var(--dur-base) var(--ease-out)}
.ws-sticky-cta.is-visible{transform:translateY(0);opacity:1;pointer-events:auto}
/* inline scanner — a compact .ws-scanner that fills the floating bar */
.ws-sticky-cta__scanner{flex:1 1 auto;min-width:0;max-width:none;margin:0;gap:var(--space-2)}
/* keep the compact bar a single row at every width (override the scanner's mobile stacking) */
.ws-sticky-cta__scanner .ws-scanner__form{gap:var(--space-3);align-items:stretch;flex-direction:row}
.ws-sticky-cta__scanner .ws-scanner__submit{width:auto}
/* input fills the row height (the form stretches the field) so input + button line up */
.ws-sticky-cta__scanner .ws-scanner__input{height:100%;min-height:46px;padding:0 14px 0 42px;font-size:15px}
/* centre the leading icon explicitly so it doesn't depend on the field's alignment */
.ws-sticky-cta__scanner .ws-scanner__field svg{left:14px;top:50%;transform:translateY(-50%);width:18px;height:18px}
.ws-sticky-cta__scanner .ws-scanner__status{margin:0;font-size:12px;text-align:left;padding-left:2px}
.ws-sticky-cta__scanner .ws-scanner__status:empty{display:none}
.ws-sticky-cta__btn{flex:none}
@media (max-width:559.98px){
  .ws-sticky-cta{width:calc(100vw - 24px);bottom:12px;padding:var(--space-3);gap:var(--space-3)}
  .ws-sticky-cta__scanner .ws-scanner__input{padding:12px 12px 12px 38px;font-size:14px}
  .ws-sticky-cta__scanner .ws-scanner__field svg{left:12px;width:16px;height:16px}
  .ws-sticky-cta__btn{padding-inline:var(--space-4)}
  .ws-sticky-cta__btn .btn__icon{display:none}
}
@media (prefers-reduced-motion:reduce){
  .ws-sticky-cta{transform:none;transition:opacity var(--dur-base) var(--ease-out)}
}

.ws-dialog{width:min(560px,calc(100vw - 32px));border:2px solid var(--border-card);
  border-radius:var(--radius-2xl);background:var(--lx-indigo);color:var(--text-body);
  box-shadow:var(--shadow-glow-card);padding:0}
.ws-dialog::backdrop{background:rgba(1,16,20,.72);backdrop-filter:blur(4px)}
.ws-dialog__inner{display:flex;flex-direction:column;gap:var(--space-6);padding:var(--space-9)}
.ws-dialog__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-6)}
.ws-dialog__body{display:flex;flex-direction:column;gap:var(--space-5);
  max-height:60vh;overflow:auto}
.ws-dialog__body p{color:var(--text-body);line-height:var(--lh-body)}
.ws-dialog__close{width:36px;height:36px;border-radius:var(--radius-full);flex:none;
  display:flex;align-items:center;justify-content:center;color:var(--text-muted);
  background:var(--surface-raised);border:1px solid var(--border-input);cursor:pointer}
.ws-dialog__close:hover{color:var(--lx-ice)}

/* ============================================================
   ROUTE-GATED NAV SIMPLIFICATION
   Only affects the funnel page — the attribute is set on <html>
   by router.js show(). Fully backward-compatible elsewhere.
   ============================================================ */
.nav__lp-cta{display:none}
/* /website-score uses the standard global header (links + burger + Book a call),
   same as every other page — no route-scoped simplification here.
   The multi-step funnel (/website-score/step*) still hides the nav entirely below. */
/* funnel page stays distraction-free — hide the global Luxito chat widget here only */
:root[data-route="/website-score"] .chat{display:none}

/* a mid-page CTA scrolls to the scanner — pulse the field so arrival never reads as a mis-fire */
.ws-scanner__input.is-flash{animation:wsFlash 1.2s var(--ease-out)}
@keyframes wsFlash{
  0%{box-shadow:0 0 0 0 rgba(var(--accent-rgb),0)}
  22%{box-shadow:0 0 0 3px rgba(var(--accent-rgb),.6)}
  100%{box-shadow:0 0 0 0 rgba(var(--accent-rgb),0)}
}

/* ── How-It-Works step cards: illustration media ── */
.tiles--media .tile-card{gap:var(--space-4)}
.tiles--media .tile-card__media{
  position:relative;display:flex;align-items:center;justify-content:center;
  width:100%;aspect-ratio:16/9;margin-bottom:var(--space-2);
  border-radius:var(--radius-lg);border:1px solid var(--border-card);
  background:
    radial-gradient(120% 120% at 50% -10%, rgba(var(--accent-rgb),.10) 0%, rgba(var(--accent-rgb),0) 58%),
    rgba(255,255,255,.02);
  overflow:hidden;
  transition:border-color var(--dur-base) var(--ease-out);
}
.tiles--media .tile-card__media::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(70% 60% at 50% 118%, rgba(var(--accent-rgb),.10), rgba(var(--accent-rgb),0) 70%);
}
.tiles--media .tile-card__media svg{
  position:relative;z-index:1;width:52px;height:52px;color:var(--lx-ice);
  filter:drop-shadow(0 0 10px rgba(var(--accent-rgb),.45));
}
.tiles--media .tile-card:hover .tile-card__media{border-color:var(--border-accent)}
@media (max-width:640px){
  .tiles--media .tile-card__media{aspect-ratio:2/1}
  .tiles--media .tile-card__media svg{width:46px;height:46px}
}

/* ── analysing overlay (stepped progress, shown while /api/analyze runs) ── */
.ws-analyzing{position:fixed;inset:0;z-index:320;display:none;
  align-items:center;justify-content:center;padding:var(--gutter);
  background:rgba(1,16,20,.72);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.ws-analyzing.is-open{display:flex}
/* no group container — elements sit directly on the blurred overlay */
.ws-analyzing__card{width:min(520px,100%);
  padding:0;background:none;border:0;border-radius:0;box-shadow:none;
  display:flex;flex-direction:column;gap:var(--space-7);text-align:center}
.ws-analyzing__title{color:var(--text-on-dark);text-transform:none}
.ws-analyzing__bar{height:8px;border-radius:var(--radius-full);
  background:var(--surface-hover);overflow:hidden}
.ws-analyzing__fill{display:block;height:100%;width:0;border-radius:inherit;
  background:linear-gradient(90deg,rgba(var(--accent-rgb),.65),var(--lx-ice));
  transition:width var(--dur-slow,.5s) var(--ease-out)}
.ws-analyzing__note{color:var(--text-muted);font-size:var(--fs-h5-sm)}
.ws-analyzing__steps{display:flex;flex-direction:column;gap:var(--space-5);
  text-align:left;align-self:center;margin-top:var(--space-2)}
.ws-astep{display:flex;align-items:center;gap:var(--space-4);
  color:var(--text-subtle);transition:color var(--dur-base) var(--ease-out)}
.ws-astep__ic{width:22px;height:22px;flex:none;border-radius:50%;
  border:2px solid var(--border-card);display:flex;align-items:center;justify-content:center;
  transition:background var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out)}
.ws-astep__ic svg{width:12px;height:12px;opacity:0;transition:opacity var(--dur-base) var(--ease-out)}
.ws-astep__label{font-size:var(--fs-body)}
.ws-astep.is-active{color:var(--text-on-dark)}
.ws-astep.is-active .ws-astep__label{font-weight:600}
.ws-astep.is-active .ws-astep__ic{border-style:dashed;border-color:var(--lx-ice);
  animation:wsSpin 1.1s linear infinite}
.ws-astep.is-done{color:var(--text-body)}
.ws-astep.is-done .ws-astep__ic{background:var(--lx-ice);border-color:var(--lx-ice);animation:none}
.ws-astep.is-done .ws-astep__ic svg{opacity:1;color:var(--lx-deep)}
@media (prefers-reduced-motion:reduce){
  .ws-astep.is-active .ws-astep__ic{animation:none}
}

/* ============================================================
   v2 CRO REPORT — context, breakdown, opportunities, issues
   ============================================================ */
/* score header side column (beside the gauge) */
.ws-score__side{display:flex;flex-direction:column;gap:var(--space-4);justify-content:center;min-width:0}
.ws-score__side .ws-detected,
.ws-score__side .ws-benchmark,
.ws-score__side .ws-prelim{text-align:left;justify-content:flex-start;margin:0}
.ws-benchmark:empty{display:none}

/* analysis confidence */
.ws-confidence{display:flex;flex-direction:column;gap:var(--space-2)}
.ws-conf__chip{align-self:flex-start;display:inline-flex;align-items:center;gap:var(--space-2);
  font-family:var(--font-mono);font-size:12px;letter-spacing:.02em;
  padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);
  background:var(--surface-accent-dim);border:1px solid var(--border-card);color:var(--text-muted)}
.ws-conf__chip::before{content:"";width:8px;height:8px;border-radius:var(--radius-full);background:var(--ws-mid)}
.ws-conf__chip[data-level=High]::before{background:var(--ws-good)}
.ws-conf__chip[data-level=Low]::before{background:var(--ws-warn)}
/* collapsible "why this score" — keeps the model's long note/benchmark out of the default view */
.ws-score__why{margin:0}
.ws-score__why > summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:var(--space-2);
  font-size:12px;color:var(--text-subtle);padding:var(--space-1) 0;user-select:none;
  transition:color var(--dur-base) var(--ease-out)}
.ws-score__why > summary::-webkit-details-marker{display:none}
.ws-score__why > summary::before{content:"";flex:none;width:0;height:0;border-left:5px solid currentColor;
  border-top:4px solid transparent;border-bottom:4px solid transparent;transition:transform var(--dur-base) var(--ease-out)}
.ws-score__why[open] > summary::before{transform:rotate(90deg)}
.ws-score__why > summary:hover{color:var(--text-muted)}
.ws-confidence__note{font-size:13px;color:var(--text-subtle);line-height:1.55;margin:var(--space-3) 0 0;max-width:68ch}
.ws-score__why .ws-benchmark{font-size:13px;color:var(--text-subtle);line-height:1.55;margin:var(--space-3) 0 0}
@media (prefers-reduced-motion:reduce){.ws-score__why > summary::before{transition:none}}

/* website context */
.ws-context__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4)}
.ws-ctx{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-4);
  background:var(--surface-accent-dim);border:1px solid var(--border-card);border-radius:var(--radius-lg)}
.ws-ctx__k{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;
  font-size:11px;color:var(--text-subtle)}
.ws-ctx__v{color:var(--text-on-dark);font-size:var(--fs-body);line-height:1.4}
.ws-ctx--warn{border-color:var(--ws-warn-line);background:var(--ws-warn-dim)}
.ws-ctx--warn .ws-ctx__v{color:var(--ws-warn)}
.ws-context__vp{color:var(--text-body);font-size:var(--fs-body);line-height:1.6}
.ws-context__vp b{color:var(--text-on-dark);font-weight:600}
.ws-context__objections{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}
.ws-ctx__objlabel{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;
  font-size:11px;color:var(--text-subtle);margin-right:var(--space-2)}
.ws-objchip{display:inline-flex;padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);
  background:var(--surface-accent-dim);border:1px solid var(--border-card);
  color:var(--text-muted);font-size:13px}

/* score breakdown rows */
.ws-breakdown{display:flex;flex-direction:column;gap:var(--space-5)}
.ws-brk{display:flex;flex-direction:column;gap:var(--space-2)}
.ws-brk__head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4)}
.ws-brk__name{color:var(--text-on-dark);font-size:var(--fs-body);font-weight:500}
.ws-brk__val{font-family:var(--font-mono);font-size:13px;color:var(--text-muted);flex:none}
.ws-brk__track{display:block;height:8px;border-radius:var(--radius-full);
  background:var(--surface-accent-dim);overflow:hidden}
.ws-brk__fill{display:block;height:100%;width:calc(var(--v,0) * 1%);border-radius:var(--radius-full);
  background:var(--ws-mid);transition:width 900ms var(--ease-out)}
.ws-brk[data-band=low]  .ws-brk__fill{background:var(--ws-warn)}
.ws-brk[data-band=low]  .ws-brk__val{color:var(--ws-warn)}
.ws-brk[data-band=mid]  .ws-brk__fill{background:var(--ws-mid)}
.ws-brk[data-band=high] .ws-brk__fill{background:var(--ws-good)}
.ws-brk[data-band=high] .ws-brk__val{color:var(--lx-ice)}
.ws-brk__sum{color:var(--text-subtle);font-size:13px;line-height:1.5;margin:0}
@media (prefers-reduced-motion:reduce){.ws-brk__fill{transition:none}}

/* severity + quick-win badges */
.ws-badge--sev{border:1px solid var(--border-card);color:var(--text-muted);background:var(--surface-accent-dim);text-transform:capitalize}
.ws-badge--sev[data-sev=Critical]{background:var(--ws-warn-dim);border-color:var(--ws-warn-line);color:var(--ws-warn);font-weight:600}
.ws-badge--sev[data-sev=High]{background:var(--ws-warn-dim);border-color:var(--ws-warn-line);color:var(--ws-warn)}
.ws-badge--sev[data-sev=Medium]{color:var(--ws-mid);border-color:rgba(255,207,138,.38)}
.ws-badge--sev[data-sev=Low]{color:var(--lx-ice)}
.ws-badge--qw{background:rgba(var(--accent-rgb),.10);border:1px solid rgba(var(--accent-rgb),.28);color:var(--lx-ice)}

/* opportunity / issue card extras */
.ws-finding__loc{font-size:13px;color:var(--text-subtle);margin:0}
.ws-finding__loc b,.ws-finding__why b{color:var(--text-muted);font-weight:600}
.ws-finding__why{color:var(--text-body);font-size:var(--fs-body);line-height:1.6;margin:0}
.ws-finding__example{margin:var(--space-2) 0 0;padding:var(--space-3) var(--space-4);
  border-left:2px solid var(--border-card);background:var(--surface-accent-dim);
  border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--text-body);font-size:13px;line-height:1.55}
.ws-finding__example span{display:block;font-family:var(--font-mono);text-transform:uppercase;
  letter-spacing:.06em;font-size:10px;color:var(--text-subtle);margin-bottom:var(--space-1)}
.ws-finding--qw{gap:var(--space-3)}
.ws-finding--teaser .ws-finding__title{margin:0}
.ws-finding--test .ws-finding__title{color:var(--text-on-dark)}

/* locked summary line */
.ws-locked__summary{color:var(--text-body);font-size:var(--fs-body);line-height:1.6;margin:0 0 var(--space-6)}

/* unlocked sections */
.ws-section{display:flex;flex-direction:column;gap:var(--space-5)}
.ws-section + .ws-section{margin-top:var(--space-9);padding-top:var(--space-9);border-top:1px solid var(--border-card)}
.ws-section__title{font-family:var(--font-display);font-size:var(--fs-h5);color:var(--text-on-dark);
  letter-spacing:-.01em;margin:0}
.ws-plainlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}
.ws-plainlist li{position:relative;padding-left:var(--space-6);color:var(--text-body);line-height:1.6}
.ws-plainlist li::before{content:"";position:absolute;left:0;top:.6em;width:7px;height:7px;
  border-radius:var(--radius-full);background:var(--ws-mid)}
.ws-plainlist li b{color:var(--text-on-dark);font-weight:600}
.ws-plainlist--good li::before{background:var(--ws-good)}
.ws-catgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--space-5)}
.ws-catnote{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);
  background:var(--surface-accent-dim);border:1px solid var(--border-card);border-radius:var(--radius-lg)}
.ws-catnote__k{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;
  font-size:11px;color:var(--lx-ice)}
.ws-catnote__v{color:var(--text-body);font-size:13px;line-height:1.55;margin:0}
@media (max-width:640px){
  .ws-context__grid,.ws-catgrid{grid-template-columns:1fr}
}

/* ---------- multi-step intake wizard (one choice-question per page) ---------- */
/* keep the step pages focused — hide the global nav, sticky CTA + chat bubble */
:root[data-route^="/website-score/step"] .nav,
:root[data-route^="/website-score/step"] .ws-sticky-cta,
:root[data-route^="/website-score/step"] .chat{display:none}
.ws-wiz{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;
  padding:var(--space-12) var(--gutter)}
.ws-wiz__inner{width:min(760px,100%);display:flex;flex-direction:column;gap:var(--space-5)}
.ws-wiz__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}
.ws-wiz__back{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--text-subtle);
  font-size:var(--fs-body);text-decoration:none;transition:color var(--dur-base) var(--ease-out)}
.ws-wiz__back svg{width:18px;height:18px}
.ws-wiz__back:hover{color:var(--text-on-dark)}
.ws-wiz__count{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;font-size:12px;color:var(--text-subtle)}
.ws-wiz__progress{display:flex;gap:var(--space-2)}
.ws-wiz__progress span{flex:1;height:4px;border-radius:var(--radius-full);background:var(--surface-hover);
  transition:background var(--dur-base) var(--ease-out)}
.ws-wiz__progress span.is-done{background:rgba(var(--accent-rgb),.5)}
.ws-wiz__progress span.is-active{background:var(--lx-ice)}
.ws-wiz__url{margin:0;font-size:12px;color:var(--text-subtle)}
.ws-wiz__url b{color:var(--text-on-dark);font-weight:600}
.ws-wiz__q{margin:0;color:var(--text-on-dark);text-transform:none}
.ws-wiz__hint{margin:0;color:var(--text-body);font-size:var(--fs-lead);line-height:1.5}
.ws-wiz__choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--space-4);margin-top:var(--space-3)}
.ws-wiz__choices--wide{grid-template-columns:1fr}
.ws-choice{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);text-align:left;cursor:pointer;
  padding:var(--space-5) var(--space-6);border:1px solid var(--border-card);border-radius:var(--radius-lg);
  background:var(--surface-accent-dim);color:var(--text-on-dark);font:inherit;font-size:var(--fs-h5-sm);font-weight:500;
  transition:border-color var(--dur-base) var(--ease-out),background var(--dur-base) var(--ease-out)}
.ws-choice__label{min-width:0}
.ws-choice__chev{flex:none;width:20px;height:20px;color:var(--lx-ice);opacity:0;transform:translateX(-4px);
  transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out)}
.ws-choice:hover{border-color:var(--lx-ice);background:var(--surface-hover)}
.ws-choice:hover .ws-choice__chev{opacity:1;transform:translateX(0)}
.ws-choice:focus-visible{outline:none;border-color:var(--lx-ice);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.15)}
.ws-choice.is-selected{border-color:var(--lx-ice);background:linear-gradient(180deg,rgba(var(--accent-rgb),.08),transparent)}
.ws-choice.is-selected .ws-choice__chev{opacity:1;transform:translateX(0)}
.ws-wiz__skip{align-self:center;margin-top:var(--space-2);appearance:none;background:transparent;border:0;cursor:pointer;
  color:var(--text-subtle);font-size:13px;text-decoration:underline;text-underline-offset:3px;padding:var(--space-2)}
.ws-wiz__skip:hover{color:var(--text-on-dark)}
.ws-wiz__skip:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--accent-rgb),.2);border-radius:var(--radius-sm)}
@media (prefers-reduced-motion:reduce){.ws-choice,.ws-choice__chev{transition:none}}
@media (max-width:640px){.ws-wiz{padding:var(--space-9) var(--gutter)}.ws-wiz__choices{grid-template-columns:1fr}}

/* ---------- fintech funnel view ---------- */
.ws-fintech__scores{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-5)}
.ws-fscore{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-5);
  background:var(--surface-accent-dim);border:1px solid var(--border-card);border-radius:var(--radius-lg)}
.ws-fscore__head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}
.ws-fscore__name{color:var(--text-on-dark);font-size:var(--fs-body);font-weight:500}
.ws-fscore__val{font-family:var(--font-mono);font-size:var(--fs-h5);color:var(--text-on-dark);font-weight:600}
.ws-fscore__val i{font-style:normal;font-size:12px;color:var(--text-subtle);font-weight:400}
.ws-fscore__track{display:block;height:8px;border-radius:var(--radius-full);background:rgba(255,255,255,.06);overflow:hidden}
.ws-fscore__fill{display:block;height:100%;width:calc(var(--v,0) * 1%);border-radius:var(--radius-full);
  background:var(--ws-mid);transition:width 900ms var(--ease-out)}
.ws-fscore[data-band=low]  .ws-fscore__fill{background:var(--ws-warn)}
.ws-fscore[data-band=low]  .ws-fscore__val{color:var(--ws-warn)}
.ws-fscore[data-band=mid]  .ws-fscore__fill{background:var(--ws-mid)}
.ws-fscore[data-band=high] .ws-fscore__fill{background:var(--ws-good)}
.ws-fscore[data-band=high] .ws-fscore__val{color:var(--lx-ice)}
.ws-fscore__desc{color:var(--text-subtle);font-size:12px;line-height:1.5;margin:0}
@media (prefers-reduced-motion:reduce){.ws-fscore__fill{transition:none}}
.ws-fintech__biz{color:var(--text-body);font-size:var(--fs-body);line-height:1.6;margin:var(--space-6) 0 0}
.ws-fintech__biz b{color:var(--text-on-dark);font-weight:600}
.ws-fintech__layers{color:var(--text-subtle)}
.ws-fintech__funnel{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-top:var(--space-5)}
.ws-fintech__funlabel{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;
  font-size:11px;color:var(--text-subtle);margin-right:var(--space-2);width:100%}
.ws-funstep{display:inline-flex;padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);
  border:1px solid var(--border-card);background:var(--surface-accent-dim);color:var(--text-muted);
  font-size:13px;white-space:nowrap}
.ws-funstep[data-observed="1"]{border-color:rgba(var(--accent-rgb),.32);color:var(--lx-ice);background:rgba(var(--accent-rgb),.08)}
.ws-funstep[data-observed="0"]{opacity:.5;border-style:dashed}
.ws-funsep{color:var(--text-subtle);font-size:13px}
.ws-fintech__note{color:var(--text-subtle);font-size:12px;line-height:1.55;margin:var(--space-4) 0 0;max-width:80ch}
/* the [hidden] attribute must beat .ws-report__block{display:flex} (fintech/other hidden blocks) */
.ws-report__block[hidden]{display:none}
