/* Funnel UI kit — layout + component styles (composes on colors_and_type.css).
   Brand-agnostic: colors reference --accent*, set by body.brand-* class. */

*{box-sizing:border-box;}
html,body{margin:0;}
html{-webkit-text-size-adjust:100%;}
body{background:var(--paper);font-family:var(--font-sans);color:var(--ink);min-height:100vh;min-height:100dvh;overflow-x:hidden;}
/* touch base: no 300ms delay, no grey flash, no accidental long-press selection on controls */
button,a,label,[role="button"]{-webkit-tap-highlight-color:transparent;touch-action:manipulation;}
.fn-card,.fn-row,.fn-chip,.fn-back,.fn-cta,.fn-ghost{-webkit-user-select:none;user-select:none;}

/* ---------- chrome ---------- */
.fn-topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:18px 28px;background:rgba(247,244,238,.82);backdrop-filter:saturate(140%) blur(10px);-webkit-backdrop-filter:saturate(140%) blur(10px);}
.fn-logo{height:26px;display:block;}
.fn-help{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;}
.fn-help .q{color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em;}
.fn-help .ph{color:var(--accent);}

/* segmented progress — one segment per phase */
.fn-progress{display:flex;gap:6px;height:5px;margin:0 28px;}
.fn-progress .seg{flex:1;background:rgba(0,0,0,.06);border-radius:var(--r-pill);overflow:hidden;}
.fn-progress .seg .bar{height:100%;background:var(--accent);border-radius:var(--r-pill);transition:width 420ms var(--ease);}

.fn-stage{max-width:560px;margin:0 auto;padding:8px 24px 60px;}
.fn-back{display:inline-flex;align-items:center;gap:7px;background:none;border:none;cursor:pointer;font-family:var(--font-sans);font-weight:600;font-size:15px;color:var(--ink);padding:22px 14px 12px 0;margin-left:-2px;min-height:48px;}
.fn-back:hover{color:var(--accent);}
.fn-back svg{width:18px;height:18px;}

/* screen enter animation */
.fn-screen{animation:fnIn 320ms var(--ease);}
@keyframes fnIn{from{opacity:.35;transform:translateY(8px);}to{opacity:1;transform:none;}}
@keyframes fnPick{0%{transform:scale(1);}45%{transform:scale(.975);}100%{transform:scale(1);}}

.fn-q{margin:18px 0 6px;}
.fn-help-line{margin:0 0 26px;font-size:17px;color:var(--ink-2);line-height:1.5;}

/* ---------- option cards (multi/single icon select) ---------- */
.fn-cardgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.fn-card{position:relative;min-height:118px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-sm);padding:24px 14px 20px;text-align:center;cursor:pointer;transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur) var(--ease),background var(--dur) var(--ease);}
.fn-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-2);transform:translateY(-1px);}
.fn-card.sel{background:var(--accent-tint);border:1.5px solid var(--accent);box-shadow:none;animation:fnPick 240ms var(--ease);}
.fn-card .ic{color:var(--ink);}
.fn-card.sel .ic{color:var(--accent);}
.fn-card .t{font-weight:600;font-size:16px;margin-top:12px;color:var(--ink);}
.fn-tick{position:absolute;top:14px;right:14px;width:20px;height:20px;border-radius:50%;border:2px solid var(--field-border);transition:all var(--dur) var(--ease);}
.fn-card.sel .fn-tick{border-color:var(--accent);background:var(--accent);box-shadow:inset 0 0 0 3px #fff;}

/* ---------- option rows (single select list) ---------- */
.fn-rows{display:flex;flex-direction:column;gap:11px;}
.fn-row{display:flex;align-items:center;min-height:56px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);padding:16px 18px;font-size:16px;font-weight:500;cursor:pointer;box-shadow:var(--shadow-xs);transition:all var(--dur) var(--ease);text-align:left;color:var(--ink);}
.fn-row:hover{border-color:var(--border-2);box-shadow:var(--shadow-sm);}
.fn-row.sel{background:var(--accent-tint);border:1.5px solid var(--accent);color:var(--accent-dark);animation:fnPick 240ms var(--ease);}

/* ---------- chips ---------- */
.fn-chips{display:flex;gap:10px;flex-wrap:wrap;}
.fn-chip{display:inline-flex;align-items:center;justify-content:center;min-height:48px;min-width:64px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-pill);padding:12px 24px;font-weight:600;font-size:16px;cursor:pointer;transition:all var(--dur) var(--ease);color:var(--ink);}
.fn-chip:hover{border-color:var(--border-2);}
.fn-chip.sel{background:var(--ink);border-color:var(--ink);color:#fff;animation:fnPick 240ms var(--ease);}

/* ---------- slider ---------- */
.fn-amount-label{font-size:15px;color:var(--ink-2);}
.fn-amount{font-family:var(--font-display);font-weight:600;font-size:clamp(28px,8vw,34px);margin:2px 0 12px;color:var(--ink);}
.fn-slider{display:block;width:100%;-webkit-appearance:none;appearance:none;height:44px;margin:0;padding:0;background:transparent;outline:none;cursor:pointer;touch-action:pan-y;}
.fn-slider::-webkit-slider-runnable-track{height:6px;border-radius:var(--r-pill);background:linear-gradient(to right,var(--accent) 0 var(--fill,0%),var(--paper-2) var(--fill,0%) 100%);}
.fn-slider::-webkit-slider-thumb{-webkit-appearance:none;width:30px;height:30px;margin-top:-12px;border-radius:50%;background:var(--accent);border:3px solid #fff;box-shadow:var(--shadow-md);cursor:grab;}
.fn-slider:active::-webkit-slider-thumb{cursor:grabbing;transform:scale(1.06);}
.fn-slider::-moz-range-track{height:6px;border-radius:var(--r-pill);background:var(--paper-2);}
.fn-slider::-moz-range-progress{height:6px;border-radius:var(--r-pill);background:var(--accent);}
.fn-slider::-moz-range-thumb{width:30px;height:30px;border:3px solid #fff;border-radius:50%;background:var(--accent);box-shadow:var(--shadow-md);cursor:grab;}
.fn-slider:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 5px var(--focus-ring);}
.fn-slider:focus-visible::-moz-range-thumb{box-shadow:0 0 0 5px var(--focus-ring);}
.fn-ends{display:flex;justify-content:space-between;font-size:13px;color:var(--ink-3);margin-top:6px;}

/* ---------- text fields ---------- */
.fn-fields2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px;}
.fn-field{margin-bottom:18px;}
.fn-label{display:block;font-size:15px;font-weight:500;color:var(--ink-2);margin-bottom:8px;}
.fn-inputwrap{position:relative;}
.fn-input{width:100%;min-height:52px;font-family:var(--font-sans);font-size:16px;padding:15px 44px 15px 16px;border:1.5px solid var(--field-border);border-radius:var(--r-sm);background:#fff;color:var(--ink);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);}
.fn-input::placeholder{color:var(--ink-3);}
.fn-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--focus-ring);}
.fn-lock{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--ink-3);pointer-events:none;}
.fn-secnote{display:flex;align-items:center;gap:7px;font-size:14px;color:var(--ink-3);margin-top:-2px;}

/* ---------- info callout ---------- */
.fn-callout{display:flex;gap:12px;align-items:flex-start;background:var(--accent-tint);border:1px solid var(--accent-tint-2);border-radius:var(--r-sm);padding:15px 16px;margin:22px 0;}
.fn-callout .cic{flex:none;width:34px;height:34px;border-radius:9px;background:#fff;display:grid;place-items:center;color:var(--accent);}
.fn-callout p{margin:0;font-size:15px;line-height:1.45;color:var(--accent-dark);}

/* ---------- primary CTA ---------- */
.fn-cta{width:100%;min-height:56px;margin-top:30px;font-family:var(--font-sans);font-weight:600;font-size:17px;border:none;border-radius:var(--r-sm);padding:17px 24px;background:var(--ink);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:9px;transition:transform var(--dur) var(--ease),background var(--dur) var(--ease);}
.fn-cta:hover:not(:disabled){background:#0e1527;}
.fn-cta:active:not(:disabled){transform:scale(.985);}
.fn-cta:disabled{background:#C8CBD4;cursor:not-allowed;}
.fn-ghost{background:none;border:none;cursor:pointer;font-family:var(--font-sans);font-size:14px;font-weight:600;color:var(--ink-3);text-decoration:underline;text-underline-offset:3px;margin-top:18px;padding:12px 4px;min-height:44px;}
.fn-ghost:hover{color:var(--ink);}

/* ---------- consent + disclaimer ---------- */
.fn-consent{font-size:12px;line-height:1.55;color:var(--ink-3);margin:20px 0 -8px;}
.fn-disclaim{max-width:560px;margin:44px auto 0;font-size:11.5px;line-height:1.55;color:var(--ink-3);text-align:center;opacity:.85;}

/* ---------- interstitial pieces ---------- */
.fn-phases{display:flex;flex-direction:column;gap:0;margin:8px 0 26px;}
.fn-phase{display:flex;gap:16px;align-items:flex-start;padding:16px 0;border-bottom:1px solid var(--border);}
.fn-phase:last-child{border-bottom:none;}
.fn-phase .num{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:15px;background:var(--paper-2);color:var(--ink-3);}
.fn-phase.active .num{background:var(--accent);color:#fff;}
.fn-phase.done .num{background:var(--success);color:#fff;}
.fn-phase .pt{font-weight:600;font-size:16px;color:var(--ink);}
.fn-phase .pd{font-size:14px;color:var(--ink-3);margin-top:2px;}

.fn-quote{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:22px;box-shadow:var(--shadow-sm);margin-top:8px;}
.fn-quote .stars{color:var(--clay);display:flex;gap:2px;margin-bottom:10px;}
.fn-quote .qt{font-family:var(--font-display);font-size:clamp(18px,5vw,20px);line-height:1.4;color:var(--ink);font-style:italic;}
.fn-quote .by{font-size:14px;color:var(--ink-3);margin-top:12px;font-weight:600;}

.fn-eyebrow{display:block;}
.fn-protect{background:var(--paper-2);border-radius:var(--r-md);padding:22px 18px;display:flex;flex-wrap:wrap;gap:22px 28px;justify-content:center;margin:10px 0 4px;}
.fn-protect .pi{text-align:center;color:var(--accent);}
.fn-protect .pi .pl{font-size:14px;font-weight:600;color:var(--ink);margin-top:8px;}

.fn-benefit{display:flex;gap:16px;padding:18px 0;border-bottom:1px solid var(--border);}
.fn-benefit:last-child{border-bottom:none;}
.fn-benefit .bic{flex:none;color:var(--accent);}
.fn-benefit .bt{font-weight:600;font-size:16px;color:var(--ink);}
.fn-benefit .bd{font-size:14px;color:var(--ink-2);margin-top:3px;line-height:1.45;}

.fn-stat{background:var(--paper-2);border-radius:var(--r-md);padding:26px 24px;text-align:center;margin:8px 0 20px;}
.fn-stat .big{font-family:var(--font-display);font-weight:600;font-size:clamp(36px,11vw,46px);line-height:1;color:var(--accent);}
.fn-stat .lbl{font-weight:600;font-size:15px;color:var(--ink);margin-top:8px;}
.fn-stat .note{font-size:13px;color:var(--ink-3);margin-top:6px;}

/* ---------- redirect / partner match ---------- */
.fn-searching{text-align:center;padding:70px 0;}
.fn-spin{width:46px;height:46px;border-radius:50%;border:4px solid var(--accent-tint-2);border-top-color:var(--accent);margin:0 auto 26px;animation:fnSpin .8s linear infinite;}
@keyframes fnSpin{to{transform:rotate(360deg);}}

.fn-done{text-align:center;padding:40px 0 10px;}
.fn-done .big{width:64px;height:64px;border-radius:50%;background:var(--success-tint);color:var(--success);display:grid;place-items:center;margin:0 auto 22px;}

.fn-partner{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-md);padding:24px;margin:28px 0 0;text-align:left;}
.fn-partner .ph{display:flex;align-items:center;flex-wrap:wrap;gap:12px 14px;}
.fn-partner .plogo{flex:none;width:48px;height:48px;border-radius:12px;background:var(--accent-tint);color:var(--accent);display:grid;place-items:center;}
.fn-partner .pn{font-family:var(--font-display);font-weight:600;font-size:21px;color:var(--ink);}
.fn-partner .ptag{font-size:13px;color:var(--ink-3);margin-top:1px;}
.fn-partner .pbadge{margin-left:auto;flex:none;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--success);background:var(--success-tint);border-radius:var(--r-pill);padding:5px 10px;}
.fn-partner .pb{list-style:none;margin:18px 0 0;padding:14px 0 0;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:9px;}
.fn-partner .pb li{display:flex;align-items:center;gap:9px;font-size:15px;color:var(--ink-2);}
.fn-partner .pb li svg{color:var(--success);flex:none;}
.fn-partner .pnote{display:flex;align-items:center;justify-content:center;gap:6px;font-size:12.5px;color:var(--ink-3);margin-top:12px;}

/* ---------- touch devices: no sticky hover, real press feedback ---------- */
@media (hover:none){
  .fn-card:hover{box-shadow:var(--shadow-sm);border-color:var(--border);transform:none;}
  .fn-card.sel:hover{box-shadow:none;border-color:var(--accent);}
  .fn-row:hover{box-shadow:var(--shadow-xs);border-color:var(--border);}
  .fn-row.sel:hover{border-color:var(--accent);}
  .fn-chip:hover{border-color:var(--border);}
  .fn-chip.sel:hover{border-color:var(--ink);}
  .fn-back:hover,.fn-ghost:hover{color:inherit;}
}
.fn-card:active,.fn-row:active,.fn-chip:active{transform:scale(.982);}

/* ---------- tablet / small laptop ---------- */
@media (max-width:640px){
  .fn-stage{padding:4px 20px 56px;}
  .fn-help-line{font-size:16px;margin-bottom:22px;}
}

/* ---------- phone ---------- */
@media (max-width:520px){
  .fn-topbar{padding:12px 16px;}
  .fn-logo{height:23px;}
  .fn-progress{margin:0 16px;gap:5px;}
  .fn-stage{padding:2px 16px 48px;}
  .fn-back{padding:16px 14px 10px 0;font-size:14px;}
  .fn-q{margin:12px 0 6px;}
  .fn-fields2{grid-template-columns:1fr;gap:0;}
  .fn-help .q{display:none;}
  .fn-cardgrid{gap:11px;}
  .fn-card{min-height:112px;padding:22px 10px 18px;}
  .fn-card .t{font-size:15px;margin-top:10px;line-height:1.25;}
  .fn-tick{top:11px;right:11px;width:19px;height:19px;}
  .fn-chips{gap:9px;}
  .fn-chip{padding:12px 20px;flex:1 1 auto;}
  .fn-callout{margin:18px 0;padding:14px;}
  .fn-callout p{font-size:14px;}
  .fn-quote,.fn-partner{padding:20px 18px;}
  .fn-protect{gap:18px 22px;}
  .fn-partner .pbadge{margin-left:0;}
  .fn-searching{padding:56px 0;}
  .fn-consent{font-size:11.5px;}
  .fn-disclaim{margin-top:34px;padding:0 4px;}
}

/* ---------- small phone (<=375px) ---------- */
@media (max-width:380px){
  .fn-stage{padding:2px 14px 44px;}
  .fn-cardgrid{gap:9px;}
  .fn-card{min-height:104px;padding:18px 8px 15px;}
  .fn-card .t{font-size:14px;}
  .fn-row{padding:15px 15px;font-size:15px;}
  .fn-chip{padding:12px 16px;min-width:56px;font-size:15px;}
  .fn-phase{gap:12px;}
  .fn-protect{gap:16px;}
}

/* ---------- landscape phone: reclaim vertical space ---------- */
@media (max-height:520px) and (orientation:landscape){
  .fn-stage{padding-top:0;padding-bottom:32px;}
  .fn-back{padding-top:12px;}
  .fn-q{margin-top:6px;}
  .fn-cta{margin-top:20px;}
  .fn-searching,.fn-done{padding:28px 0;}
}

@media (prefers-reduced-motion:reduce){
  .fn-screen,.fn-card,.fn-row,.fn-chip,.fn-cta{animation:none!important;transition:none!important;}
  .fn-spin{animation-duration:1.6s;}
}
