/* ============================================================================
   FRS Retirement Estimate Calculator — page styles
   Built on the site design system (style.css :root). Only calculator-specific
   tokens (chart palette, step-dot states, field bg, cream, toggle) are new.
   Scope: body.frs-page. Component classes are .frs-*.
   ============================================================================ */
.frs-page {
  --frs-field-bg: #fcfbf8;
  --frs-cream: #fbf7ee;
  --frs-cream-border: #eadfc6;
  --frs-error: #a23b2e;
  --frs-approved: #2f7d4f;
  --frs-line: rgba(7,55,99,.12);
  --frs-line-strong: rgba(7,55,99,.18);
  /* charts */
  --frs-pension: var(--navy-900);
  --frs-pension-onnavy: #5b7cb8;
  --frs-his: var(--gold-500);
  --frs-ss: #8492a8;
  --frs-ss-onnavy: #9fb0c9;
  /* step dots */
  --frs-step-idle: #ece6d6;
  background: var(--white);
}

.frs-wrap { max-width: var(--container); margin: 0 auto; padding: 0 clamp(20px,5vw,56px); }
.frs-sec { padding: clamp(54px,7vw,92px) 0; }
.frs-eyebrow { display:inline-flex; align-items:center; gap:9px; font-family:var(--font-sans); font-weight:600;
  font-size:12.5px; text-transform:uppercase; letter-spacing:.17em; color:var(--gold-700); }
.frs-eyebrow::before { content:""; width:26px; height:1px; background:var(--accent); }
.frs-em { font-style:italic; font-weight:500; }

/* ── hero ──────────────────────────────────────────────────── */
.frs-hero { background:var(--paper); border-bottom:1px solid rgba(7,55,99,.08); }
/* Breadcrumb: the shared .breadcrumbs is styled for dark hero photos (light
   gold text); on this light hero, use brand navy links so it reads clearly. */
.frs-page .breadcrumbs { margin:0 0 6px; }
.frs-page .breadcrumbs a { color:var(--navy-800); font-weight:600; }
.frs-page .breadcrumbs a:hover { color:var(--gold-700); }
.frs-page .breadcrumbs span:not(.sep) { color:var(--ink-500); opacity:1; }
.frs-page .breadcrumbs .sep { color:var(--ink-300); opacity:1; }
.frs-hero-grid { display:grid; grid-template-columns:1.02fr .98fr; gap:clamp(36px,5vw,68px); align-items:center; }
.frs-h1 { font-family:var(--font-serif); font-weight:500; font-size:clamp(34px,4.4vw,54px); line-height:1.08;
  letter-spacing:-.012em; color:var(--navy-900); margin:18px 0 0; text-wrap:balance; }
.frs-sub { font-family:var(--font-sans); font-weight:400; font-size:clamp(17px,1.9vw,19.5px); line-height:1.6;
  color:var(--ink-700); margin:20px 0 0; max-width:46ch; text-wrap:pretty; }
.frs-note { font-family:var(--font-sans); font-size:14.5px; line-height:1.55; color:var(--ink-500); margin:16px 0 0; max-width:48ch; }
.frs-cta-row { display:flex; flex-wrap:wrap; align-items:center; gap:16px; margin-top:30px; }
.frs-textbtn { background:none; border:0; cursor:pointer; font-family:var(--font-sans); font-weight:600; font-size:14.5px;
  color:var(--navy-800); display:inline-flex; align-items:center; gap:8px; padding:6px 2px; }
.frs-textbtn:hover { color:var(--gold-700); }

/* hero sample preview card (static, illustrative) */
.frs-preview { background:var(--white); border:1px solid var(--frs-line); border-radius:16px;
  padding:clamp(24px,3vw,32px); box-shadow:0 28px 60px -30px rgba(7,55,99,.42); }
.frs-preview-eyebrow { font-family:var(--font-sans); font-weight:600; font-size:11.5px; text-transform:uppercase;
  letter-spacing:.14em; color:var(--ink-400); }
.frs-preview-big { font-family:var(--font-serif); font-weight:500; font-size:clamp(38px,5vw,50px); line-height:1;
  letter-spacing:-.02em; color:var(--navy-900); margin:6px 0 2px; }
.frs-preview-big .per { font-family:var(--font-sans); font-size:16px; font-weight:500; color:var(--ink-500); letter-spacing:0; }
.frs-preview-rows { display:grid; gap:12px; margin:22px 0 0; }
.frs-preview-row { display:flex; align-items:center; gap:10px; font-family:var(--font-sans); font-size:14.5px; color:var(--ink-700); }
.frs-preview-row .frs-sw { width:11px; height:11px; border-radius:3px; flex-shrink:0; }
.frs-preview-row .v { margin-left:auto; font-weight:600; color:var(--navy-900); }
.frs-minibar { display:flex; height:10px; border-radius:999px; overflow:hidden; margin:20px 0 0; }
.frs-preview-foot { font-family:var(--font-sans); font-size:12px; color:var(--ink-400); margin:14px 0 0; line-height:1.5; }

/* ── trust bar ─────────────────────────────────────────────── */
.frs-trust { background:var(--navy-900); }
.frs-trust-grid { display:flex; flex-wrap:wrap; gap:24px clamp(20px,4vw,56px); padding:26px 0; justify-content:space-between; }
.frs-trust-item { display:flex; align-items:center; gap:12px; font-family:var(--font-sans); font-weight:500;
  font-size:14.5px; color:#dce2ec; }
.frs-trust-item svg { width:22px; height:22px; flex-shrink:0; stroke:var(--gold-400); }

/* ── calculator intro ──────────────────────────────────────── */
.frs-calc { background:var(--white); }
.frs-calc-intro { text-align:center; max-width:680px; margin:0 auto; }
.frs-calc-intro .frs-eyebrow { justify-content:center; }
.frs-h2 { font-family:var(--font-serif); font-weight:500; font-size:clamp(28px,3.4vw,40px); line-height:1.14;
  letter-spacing:-.01em; color:var(--navy-900); margin:14px 0 0; text-wrap:balance; }
.frs-calc-intro p { font-family:var(--font-sans); font-size:16px; line-height:1.6; color:var(--ink-700); margin:14px 0 0; }
.frs-privacy-pill { display:inline-flex; align-items:center; gap:10px; margin:24px auto 0; padding:10px 18px;
  background:var(--gold-50); border:1px solid var(--frs-cream-border); border-radius:999px;
  font-family:var(--font-sans); font-size:13.5px; color:var(--ink-700); }
.frs-privacy-pill svg { width:15px; height:15px; stroke:var(--gold-700); flex-shrink:0; }

/* ── panel ─────────────────────────────────────────────────── */
.frs-panel { max-width:760px; margin:34px auto 0; background:var(--white); border:1px solid var(--frs-line);
  border-radius:16px; box-shadow:var(--shadow-card); overflow:hidden; }

/* progress */
.frs-prog { display:flex; align-items:center; gap:0; padding:22px clamp(22px,3vw,36px); background:var(--frs-field-bg);
  border-bottom:1px solid var(--frs-line); }
.frs-step { display:flex; align-items:center; gap:12px; }
.frs-dot { width:32px; height:32px; border-radius:999px; flex-shrink:0; display:grid; place-items:center;
  font-family:var(--font-sans); font-weight:700; font-size:14px; background:var(--frs-step-idle); color:var(--ink-400);
  transition:background .3s var(--ease), color .3s var(--ease); }
.frs-step.is-active .frs-dot { background:var(--navy-900); color:var(--gold-400); }
.frs-step.is-done .frs-dot { background:var(--gold-500); color:var(--navy-900); }
.frs-step-label { display:flex; flex-direction:column; line-height:1.2; }
.frs-step-label .k { font-family:var(--font-sans); font-weight:600; font-size:11px; text-transform:uppercase;
  letter-spacing:.12em; color:var(--ink-400); }
.frs-step-label .t { font-family:var(--font-sans); font-weight:600; font-size:13.5px; color:var(--navy-900); }
.frs-conn { flex:1; height:2px; background:var(--frs-step-idle); margin:0 14px; min-width:18px; }
.frs-conn.is-done { background:var(--gold-500); }

/* step body + fields */
.frs-step-body { padding:clamp(26px,3.4vw,40px); }
.frs-step-title { font-family:var(--font-serif); font-weight:500; font-size:23px; color:var(--navy-900); margin:0 0 22px; }
.frs-field { margin:0 0 18px; }
.frs-label { display:flex; align-items:center; gap:7px; font-family:var(--font-sans); font-weight:600; font-size:14px;
  color:var(--navy-900); margin:0 0 7px; }
.frs-label .opt { font-weight:400; color:var(--ink-400); }
.frs-ctrl { width:100%; font-family:var(--font-sans); font-size:16px; color:var(--ink-900); background:var(--frs-field-bg);
  border:1.5px solid var(--frs-line-strong); border-radius:9px; padding:12px 14px; transition:border-color .2s var(--ease), box-shadow .2s var(--ease); }
.frs-ctrl::placeholder { color:var(--ink-300); }
.frs-ctrl:hover { border-color:var(--gold-600); }
.frs-ctrl:focus { outline:none; border-color:var(--gold-500); box-shadow:0 0 0 3px rgba(221,195,108,.28); }
select.frs-ctrl { appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%235b6470' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 14px center; padding-right:40px; }
.frs-money-wrap { position:relative; }
.frs-money-wrap .pfx { position:absolute; left:14px; top:50%; transform:translateY(-50%); font-family:var(--font-sans);
  font-size:16px; color:var(--ink-500); pointer-events:none; }
.frs-money-wrap .frs-ctrl { padding-left:28px; }
.frs-sfx { position:absolute; right:14px; top:50%; transform:translateY(-50%); font-family:var(--font-sans); font-size:15px; color:var(--ink-500); pointer-events:none; }
.frs-two { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.frs-help { font-family:var(--font-sans); font-size:13px; line-height:1.5; color:var(--ink-400); margin:7px 0 0; }
.frs-err { display:none; align-items:flex-start; gap:6px; font-family:var(--font-sans); font-size:13px; line-height:1.45;
  color:var(--frs-error); margin:7px 0 0; }
.frs-err svg { width:14px; height:14px; flex-shrink:0; margin-top:1px; stroke:var(--frs-error); }
.frs-field.has-error .frs-err { display:flex; }
.frs-field.has-error .frs-ctrl { border-color:var(--frs-error); }

/* tooltip */
.frs-tip { position:relative; display:inline-flex; }
.frs-tip-btn { position:relative; width:18px; height:18px; border-radius:999px; border:1.5px solid var(--gold-600); background:none; color:var(--gold-700);
  font-family:var(--font-sans); font-weight:700; font-size:11px; line-height:1; cursor:help; display:grid; place-items:center; padding:0; }
.frs-tip-btn::after { content:""; position:absolute; inset:-13px; } /* ≥44px touch target without changing the visual size */
.frs-tip-btn:focus-visible { outline:2px solid var(--gold-500); outline-offset:2px; }
/* Visible gold focus ring on the buttons that drive the wizard + results
   (the shared .btn / text buttons otherwise fall back to the UA default). */
.frs-page .btn:focus-visible, .frs-page .frs-textbtn:focus-visible { outline:2px solid var(--gold-500); outline-offset:2px; border-radius:8px; }
.frs-pop { position:absolute; bottom:calc(100% + 10px); left:50%; transform:translateX(-50%); width:248px; z-index:20;
  background:var(--navy-900); color:#e7eaf0; font-family:var(--font-sans); font-weight:400; font-size:12.5px; line-height:1.5;
  padding:12px 14px; border-radius:10px; opacity:0; visibility:hidden; transition:opacity .18s var(--ease); pointer-events:none; }
.frs-pop::after { content:""; position:absolute; top:100%; left:50%; transform:translateX(-50%); border:6px solid transparent; border-top-color:var(--navy-900); }
.frs-tip:hover .frs-pop, .frs-tip:focus-within .frs-pop { opacity:1; visibility:visible; }

/* radio cards */
.frs-radio-row { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.frs-radio { position:relative; display:block; cursor:pointer; }
.frs-radio input { position:absolute; opacity:0; width:0; height:0; }
.frs-radio .box { display:flex; flex-direction:column; justify-content:center; border:1.5px solid var(--frs-line-strong); border-radius:10px; padding:14px 16px; background:var(--frs-field-bg);
  font-family:var(--font-sans); font-weight:600; font-size:14.5px; color:var(--navy-900); transition:border-color .2s var(--ease), box-shadow .2s var(--ease); }
.frs-radio .box small { display:block; font-weight:400; font-size:12.5px; color:var(--ink-500); margin-top:3px; }
.frs-radio:hover .box { border-color:var(--gold-600); }
.frs-radio input:checked + .box { border-color:var(--gold-500); box-shadow:0 0 0 3px rgba(221,195,108,.22); background:var(--gold-50); }
.frs-radio input:focus-visible + .box { outline:2px solid var(--gold-500); outline-offset:2px; }

/* sub-card / caution / explainer */
.frs-subcard { background:var(--frs-cream); border:1px solid var(--frs-cream-border); border-radius:12px; padding:18px 20px; margin:14px 0 0; }
.frs-caution { background:var(--frs-cream); border:1px solid var(--frs-cream-border); border-radius:12px; padding:14px 18px; margin:14px 0 0;
  font-family:var(--font-sans); font-size:13.5px; line-height:1.55; color:var(--ink-700); }
.frs-explainer { background:linear-gradient(160deg, var(--navy-700), var(--navy-900)); color:#dbe2ee; border-radius:12px;
  padding:20px 22px; margin:0 0 20px; font-family:var(--font-sans); font-size:14px; line-height:1.6; }
.frs-explainer b { color:#fff; }

/* toggle */
.frs-toggle { display:flex; align-items:flex-start; gap:14px; margin:16px 0 0; }
.frs-switch { position:relative; width:46px; height:26px; flex-shrink:0; }
.frs-switch input { position:absolute; opacity:0; width:0; height:0; }
.frs-switch .track { position:absolute; inset:0; background:var(--frs-step-idle); border-radius:999px; transition:background .2s var(--ease); }
.frs-switch .track::before { content:""; position:absolute; top:3px; left:3px; width:20px; height:20px; background:#fff; border-radius:999px; transition:transform .2s var(--ease); box-shadow:0 1px 3px rgba(0,0,0,.2); }
.frs-switch input:checked + .track { background:var(--gold-500); }
.frs-switch input:checked + .track::before { transform:translateX(20px); }
.frs-switch input:focus-visible + .track { outline:2px solid var(--gold-500); outline-offset:2px; }
.frs-toggle-text { font-family:var(--font-sans); font-size:14px; color:var(--navy-900); }
.frs-toggle-text small { display:block; font-size:12.5px; color:var(--ink-500); margin-top:2px; line-height:1.5; }

/* step nav */
.frs-nav { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:20px clamp(22px,3vw,40px);
  border-top:1px solid var(--frs-line); background:var(--frs-field-bg); }
.frs-nav .spacer { flex:1; }

/* ── results ───────────────────────────────────────────────── */
.frs-results { padding:clamp(26px,3.4vw,40px); }
.frs-res-head { display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:16px; margin:0 0 26px; }
.frs-res-head h2 { font-family:var(--font-serif); font-weight:500; font-size:clamp(24px,3vw,34px); color:var(--navy-900); margin:0; }
.frs-res-head p { font-family:var(--font-sans); font-size:14.5px; color:var(--ink-500); margin:6px 0 0; }
.frs-res-actions { display:flex; flex-wrap:wrap; gap:10px; }
.frs-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:16px; }
.frs-rcard { grid-column:span 3; background:var(--white); border:1px solid var(--frs-line); border-radius:14px; padding:22px 24px; }
.frs-rcard.feature { grid-column:span 6; background:linear-gradient(155deg, var(--navy-700), var(--navy-900)); color:#e7eaf0; border:0; }
.frs-rc-eyebrow { display:flex; align-items:center; gap:9px; font-family:var(--font-sans); font-weight:600; font-size:12px;
  text-transform:uppercase; letter-spacing:.1em; color:var(--ink-400); margin:0 0 10px; }
.frs-rc-eyebrow svg { width:16px; height:16px; stroke:var(--gold-700); }
.frs-rcard.feature .frs-rc-eyebrow { color:var(--gold-400); }
.frs-rcard.feature .frs-rc-eyebrow svg { stroke:var(--gold-400); }
.frs-rc-value { font-family:var(--font-serif); font-weight:500; font-size:clamp(30px,3.6vw,40px); line-height:1; letter-spacing:-.02em;
  color:var(--navy-900); display:flex; align-items:baseline; gap:8px; }
.frs-rcard.feature .frs-rc-value { color:#fff; font-size:clamp(38px,5vw,52px); }
.frs-rc-value .per { font-family:var(--font-sans); font-size:16px; font-weight:500; color:var(--ink-500); letter-spacing:0; }
.frs-rcard.feature .frs-rc-value .per { color:var(--navy-200); }
.frs-rc-sub { font-family:var(--font-sans); font-size:13.5px; line-height:1.5; color:var(--ink-500); margin:8px 0 0; }
.frs-rcard.feature .frs-rc-sub { color:var(--navy-200); }
.frs-tag { display:inline-block; font-family:var(--font-sans); font-weight:600; font-size:11px; padding:4px 10px; border-radius:5px; margin:12px 0 0;
  background:var(--gold-50); color:var(--gold-700); border:1px solid var(--frs-cream-border); }
.frs-tag.est { background:#fbeee9; color:var(--frs-error); border-color:#e7cabf; }
.frs-rc-meta { font-family:var(--font-sans); font-size:12.5px; color:var(--ink-400); margin:10px 0 0; line-height:1.5; }

/* feature combined bar */
.frs-feat-grid { display:grid; grid-template-columns:1fr 1.1fr; gap:clamp(24px,3vw,44px); align-items:center; }
.frs-stack { display:flex; height:16px; border-radius:999px; overflow:hidden; margin:0 0 16px; }
.frs-stack span { display:block; height:100%; }
.frs-legend { display:grid; gap:10px; }
.frs-fl-row { display:flex; align-items:center; gap:10px; font-family:var(--font-sans); font-size:14px; color:#cfd7e4; }
.frs-fl-row .sw { width:11px; height:11px; border-radius:3px; flex-shrink:0; }
.frs-fl-row .fl-v { margin-left:auto; font-weight:600; color:#fff; }
.frs-feat-note { font-family:var(--font-sans); font-size:12.5px; line-height:1.55; color:var(--navy-200); margin:16px 0 0; }

/* SS mini compare */
.frs-mini { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin:14px 0 0; }
.frs-mini-cell { text-align:center; padding:10px 6px; border-radius:8px; background:var(--frs-field-bg); border:1px solid var(--frs-line); }
.frs-mini-cell.sel { background:var(--navy-900); border-color:var(--navy-900); }
.frs-mini-cell .l { font-family:var(--font-sans); font-size:11px; text-transform:uppercase; letter-spacing:.08em; color:var(--ink-400); }
.frs-mini-cell .v { font-family:var(--font-sans); font-weight:600; font-size:14px; color:var(--navy-900); margin-top:3px; }
.frs-mini-cell.sel .l { color:var(--gold-400); }
.frs-mini-cell.sel .v { color:#fff; }

/* charts */
.frs-charts { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:16px 0 0; }
.frs-chart { background:var(--white); border:1px solid var(--frs-line); border-radius:14px; padding:22px 24px; }
.frs-chart-title { font-family:var(--font-sans); font-weight:600; font-size:13.5px; color:var(--navy-900); margin:0 0 14px; }
.frs-chart svg { width:100%; height:auto; display:block; }
.frs-scen { display:grid; gap:12px; }
.frs-scen-row { font-family:var(--font-sans); font-size:13px; color:var(--ink-700); }
.frs-scen-row .scen-top { display:flex; justify-content:space-between; margin-bottom:5px; }
.frs-scen-row .scen-v { font-weight:600; color:var(--navy-900); }
.frs-scen-bar { height:18px; border-radius:6px; background:var(--navy-900); width:0; transition:width .6s cubic-bezier(.4,0,.2,1); }
.frs-scen-row.fra .scen-bar { background:var(--gold-500); }
.frs-fade { opacity:0; transform:translateY(10px); animation:frsFadeUp .5s var(--ease) forwards; }
@keyframes frsFadeUp { to { opacity:1; transform:none; } }

/* save / email */
.frs-save { margin:20px 0 0; background:var(--frs-field-bg); border:1px solid var(--frs-line); border-radius:14px; padding:22px 24px; }
.frs-save h3 { font-family:var(--font-serif); font-weight:500; font-size:20px; color:var(--navy-900); margin:0 0 4px; }
.frs-save .lead { font-family:var(--font-sans); font-size:13.5px; color:var(--ink-500); margin:0 0 16px; }
.frs-save-row { display:grid; grid-template-columns:1fr 1fr auto; gap:12px; align-items:end; }
.frs-check { display:flex; align-items:flex-start; gap:10px; margin:16px 0 0; font-family:var(--font-sans); font-size:12.5px; line-height:1.5; color:var(--ink-700); }
.frs-check input { width:18px; height:18px; margin-top:1px; flex-shrink:0; accent-color:var(--gold-600); }
.frs-check.has-error { color:var(--frs-error); }
.frs-privacy-line { display:flex; align-items:flex-start; gap:7px; font-family:var(--font-sans); font-size:12px; color:var(--ink-400); margin:12px 0 0; line-height:1.5; }
.frs-privacy-line svg { width:13px; height:13px; stroke:var(--gold-700); flex-shrink:0; margin-top:1px; }
.frs-save-success { display:none; font-family:var(--font-sans); font-size:14.5px; color:var(--frs-approved); font-weight:600; padding:8px 0; }

/* estimate disclosure under results */
.frs-estdisc { margin:20px 0 0; background:var(--frs-cream); border:1px solid var(--frs-cream-border); border-radius:12px;
  padding:14px 18px; font-family:var(--font-sans); font-size:12.5px; line-height:1.6; color:var(--ink-700); }

/* ── CTA ───────────────────────────────────────────────────── */
.frs-cta-sec { background:var(--paper); }
.frs-cta-grid { display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(32px,5vw,64px); align-items:center; }
.frs-cta-card { background:var(--frs-cream); border:1px solid var(--frs-cream-border); border-radius:16px; padding:clamp(24px,3vw,34px); }
.frs-cta-card h3 { font-family:var(--font-serif); font-weight:500; font-size:21px; color:var(--navy-900); margin:0 0 16px; }
.frs-checklist { list-style:none; margin:0; padding:0; display:grid; gap:13px; }
.frs-checklist li { display:flex; gap:12px; align-items:flex-start; font-family:var(--font-sans); font-size:14.5px; line-height:1.5; color:var(--ink-700); }
.frs-checklist svg { width:18px; height:18px; flex-shrink:0; margin-top:1px; stroke:var(--gold-700); }

/* ── disclosures body section ──────────────────────────────── */
.frs-disc-section { background:var(--white); border-top:1px solid var(--frs-line); }
.frs-disc-card { background:var(--frs-cream); border:1px solid var(--frs-cream-border); border-radius:16px; padding:clamp(26px,3.4vw,40px); }
.frs-disc-head { font-family:var(--font-serif); font-weight:500; font-size:22px; color:var(--navy-900); margin:0 0 18px; }
.frs-disc-grid { columns:2; column-gap:40px; }
.frs-disc-grid p { font-family:var(--font-sans); font-size:12.5px; line-height:1.65; color:var(--ink-700); margin:0 0 14px; break-inside:avoid; }
.frs-disc-grid p strong { color:var(--navy-900); }
.frs-disc-meta { display:flex; flex-wrap:wrap; gap:10px 24px; align-items:center; margin:18px 0 0; padding:16px 0 0;
  border-top:1px solid var(--frs-cream-border); font-family:var(--font-sans); font-size:12.5px; color:var(--ink-500); }
/* print-only summary header (hidden on screen) */
.frs-print-only { display:none; }

/* ── responsive ────────────────────────────────────────────── */
@media (max-width: 920px) {
  .frs-hero-grid, .frs-cta-grid, .frs-feat-grid { grid-template-columns:1fr; }
  .frs-charts { grid-template-columns:1fr; }
  .frs-grid { grid-template-columns:repeat(2,1fr); }
  .frs-rcard, .frs-rcard.feature { grid-column:span 2; }
}
@media (max-width: 700px) {
  .frs-disc-grid { columns:1; }
}
@media (max-width: 600px) {
  .frs-two, .frs-radio-row, .frs-save-row { grid-template-columns:1fr; }
  .frs-grid { grid-template-columns:1fr; }
  .frs-rcard, .frs-rcard.feature { grid-column:span 1; }
  .frs-step-label { display:none; }
  .frs-mini { grid-template-columns:1fr; }
  /* Long CTA labels (e.g. "Schedule an Educational FRS Review") otherwise stay
     nowrap and force horizontal overflow on phones. Let buttons wrap and stack
     the CTA actions full-width so they read as intentional. */
  .frs-page .btn { white-space:normal; }
  .frs-cta-row { flex-direction:column; align-items:stretch; }
  .frs-cta-row .btn { justify-content:center; }
}
/* tap targets */
.frs-ctrl, .frs-textbtn, .frs-tip-btn, .frs-radio .box, .frs-switch { min-height:44px; }
.frs-tip-btn { min-height:0; }
select.frs-ctrl, input.frs-ctrl { min-height:46px; }

@media (prefers-reduced-motion: reduce) {
  .frs-fade { animation:none; opacity:1; transform:none; }
  .frs-scen-bar { transition:none; }
  .frs-dot, .frs-conn, .frs-ctrl, .frs-switch .track::before { transition:none; }
}

/* ── print ─────────────────────────────────────────────────── */
@media print {
  body.frs-page .utility-bar, body.frs-page .site-header, body.frs-page .menu-overlay,
  body.frs-page .frs-hero, body.frs-page .frs-trust, body.frs-page .frs-calc-intro,
  body.frs-page .frs-prog, body.frs-page .frs-nav, body.frs-page .frs-cta-sec,
  body.frs-page .site-footer, body.frs-page .frs-save, body.frs-page .frs-res-actions,
  body.frs-page .skip-link { display:none !important; }
  body.frs-page .frs-print-only { display:block; margin:0 0 18px; }
  body.frs-page .frs-print-only img { height:46px; width:auto; }
  body.frs-page .frs-print-only .pt { font-family:var(--font-serif); font-size:20px; color:#000; margin-top:8px; }
  body.frs-page .frs-print-only .pd { font-family:var(--font-sans); font-size:12px; color:#444; }
  body.frs-page .frs-panel { box-shadow:none; border:0; max-width:none; }
  body.frs-page .frs-rcard.feature { -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  body.frs-page .frs-sec { padding:0; }
  body.frs-page .frs-disc-section { border:0; }
}
