/* ============================================================
   cutco-guy-site · shared design system
   assets/styles.css
   All pages link this file. Do not add page-specific rules here.
   ============================================================ */

/* --- 0. Fonts (non-blocking via font-display:swap) -------- */
/* Pages should also add <link rel="preconnect" href="https://fonts.googleapis.com">
   and <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
   in <head> before this stylesheet for fastest load. */

/* --- 1. Design Tokens ------------------------------------- */
:root {
  /* Palette — dark premium brand theme.

     ⚠ Section 16 at the bottom of this file contains a SECOND :root block. Custom
     properties cascade by declaration order at equal specificity, so whatever is
     declared there wins document-wide — including for rules written above it.
     These tokens live in Section 16 and must be edited there, not here:
       --mut  --gold  --radius  --ease  --fs-base  --fs-lg  --fs-h3  --fs-h2  --fs-h1
     They were previously duplicated here with stale values that never rendered. */
  --bg:      #070b14;
  --panel:   #0b1626;
  --panel-2: #11203a;
  --line:    #1b2c48;
  --ink:     #e8eef7;
  --cyan:    #22d3ee;
  --blue:    #3b82f6;
  --teal:    #5eead4;

  /* Type scale — the rest of the scale is in Section 16 */
  --fs-sm:   .875rem;

  /* Spacing scale */
  --space-1: .5rem;
  --space-2: .75rem;
  --space-3: 1rem;
  --space-4: 1.5rem;
  --space-5: 2rem;
  --space-6: 3rem;
  --space-7: 4rem;
  --space-8: 6rem;

  /* Layout */
  --pad-section: clamp(3rem, 6vw, 6rem);
  --measure:     68ch;

  /* Component */
  --radius: 14px;
  --dur:    .25s;
  --ease:   cubic-bezier(.2,.7,.2,1);
}

/* --- 2. Base Layer ---------------------------------------- */
*, *::before, *::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto,
               Helvetica, Arial, sans-serif;
  font-size: var(--fs-base);
  line-height: 1.6;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}

a {
  color: inherit;
  text-decoration: none;
}

p {
  max-width: var(--measure);
  margin-block: 0 1em;
}

h1, h2, h3, h4, h5, h6 {
  font-family: "Sora", ui-sans-serif, system-ui, sans-serif;
  font-weight: 700;
  line-height: 1.15;
  margin-block: 0 .5em;
  color: var(--ink);
}

h1 { font-size: var(--fs-h1); }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); }

img, video {
  max-width: 100%;
  height: auto;
}

/* --- 3. Layout Utilities ---------------------------------- */

.container {
  max-width: 1080px;
  margin-inline: auto;
  padding-inline: clamp(1rem, 4vw, 2rem);
}

.section {
  padding-block: var(--pad-section);
}

/* --- 4. Buttons ------------------------------------------- */

.btn {
  position: relative;
  overflow: hidden;
  /* inline-flex + min-height keeps every button a 44px touch target regardless of
     the inline padding a page happens to set. Applied unconditionally rather than
     inside a mobile media query, so buttons do not change layout mode at 900px. */
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: .7em 1.4em;
  border: 0;
  border-radius: var(--radius);
  font-size: var(--fs-base);
  font-weight: 800;
  line-height: 1;
  text-align: center;
  cursor: pointer;
  text-decoration: none;
  transition: transform var(--dur) var(--ease),
              box-shadow var(--dur) var(--ease),
              filter var(--dur) var(--ease);
}

.btn:hover  { filter: brightness(1.08); }
.btn:active { transform: scale(.95); }

/* Shine-sweep reveal on hover */
.btn::after {
  content: "";
  position: absolute;
  top: 0;
  left: -130%;
  width: 55%;
  height: 100%;
  transform: skewX(-20deg);
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.4), transparent);
  transition: left .6s ease;
  pointer-events: none;
}
.btn:hover::after { left: 150%; }

/* Primary — cyan→blue gradient */
.btn-primary {
  color: #fff;
  background: linear-gradient(135deg, var(--cyan), var(--blue));
  background-size: 180% 180%;
  box-shadow: 0 12px 30px -10px rgba(34,211,238,.55);
}
.btn-primary:hover {
  box-shadow: 0 16px 38px -10px rgba(34,211,238,.75);
}

/* Ghost — outline only */
.btn-ghost {
  color: var(--ink);
  border: 1px solid var(--line);
  background: transparent;
}
.btn-ghost:hover {
  background: rgba(255,255,255,.06);
  border-color: rgba(255,255,255,.2);
}

/* Gradient primary CTA (premium emphasis) */
.btn-grad {
  background: linear-gradient(135deg, var(--cyan), var(--blue));
  color: #06121f;
  border-color: transparent;
  font-weight: 700;
}
.btn-grad:hover { filter: brightness(1.07); transform: translateY(-1px); }

/* Gold accent button */
.btn-gold {
  background: var(--gold);
  color: #241a02;
  border-color: transparent;
  font-weight: 700;
}
.btn-gold:hover { filter: brightness(1.05); transform: translateY(-1px); }

/* --- 5. Card ---------------------------------------------- */

.card {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: var(--space-5);
}

/* --- 6. Site Header --------------------------------------- */

.site-header {
  position: sticky;
  top: 0;
  z-index: 30;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  background: rgba(7,11,20,.78);
  border-bottom: 1px solid var(--line);
}

.site-header__inner {
  height: 60px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.site-header__logo {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-family: "Sora", ui-sans-serif, system-ui, sans-serif;
  font-weight: 700;
  font-size: var(--fs-lg);
  color: var(--ink);
}

.site-header__logo img {
  width: 28px;
  height: 28px;
  border-radius: 6px;
}

.site-header__nav {
  display: flex;
  gap: var(--space-4);
  align-items: center;
  font-size: var(--fs-sm);
  color: var(--mut);
}

.site-header__nav a:hover { color: #fff; }

@media (max-width: 760px) {
  .site-header__nav {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    padding: var(--space-2) var(--space-4) var(--space-4);
    background: rgba(7,11,20,.96);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--line);
    visibility: hidden;
    opacity: 0;
    transform: translateY(-8px);
    transition: opacity .18s ease, transform .18s ease, visibility 0s linear .18s;
  }
  .site-header__nav[data-open] {
    visibility: visible;
    opacity: 1;
    transform: translateY(0);
    transition: opacity .22s ease, transform .22s ease;
  }
  .site-header__nav a:not(.btn) {
    display: flex;
    align-items: center;
    min-height: 44px;
    padding-inline: var(--space-2);
    border-bottom: 1px solid var(--line);
    font-size: 1rem;
  }
  .site-header__nav a:not(.btn):last-of-type { border-bottom: 0; }
}

@media (min-width: 761px) {
  [data-burger] { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .site-header__nav { transition: none; }
}

/* --- 7. Site Footer --------------------------------------- */

.site-footer {
  padding-block: var(--space-6);
  text-align: center;
  border-top: 1px solid var(--line);
  background: var(--panel);
  color: var(--mut);
  font-size: var(--fs-sm);
  line-height: 1.8;
}

.site-footer a:hover { color: var(--ink); }

/* --- 8. Trust Bar ----------------------------------------- */

.trust-bar {
  overflow: hidden;
  white-space: nowrap;
  background: var(--panel);
  border-block: 1px solid var(--line);
  padding-block: var(--space-2);
  font-size: var(--fs-sm);
  color: var(--mut);
  user-select: none;
}

.trust-bar__track {
  display: inline-block;
  animation: trustmarquee 28s linear infinite;
}

@keyframes trustmarquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* --- 9. Book Bar (sticky mobile CTA) ---------------------- */

.book-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 80;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
  background: rgba(7,11,20,.94);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-top: 1px solid var(--line);
}
.book-bar > a {
  min-height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.04);
  color: var(--ink);
  font-weight: 800;
  line-height: 1;
}
.book-bar > a:first-child {
  border-color: transparent;
  /* Heritage repaint. --cyan/--blue are repurposed to oxblood by the final :root,
     so the old gradient + dark ink turned this into oxblood-on-oxblood (~1.0:1).
     Solid brand fill with light ink instead. */
  color: var(--brand-ink, #fbf7ee);
  background: var(--brand);
  box-shadow: 0 12px 26px -16px rgba(166,58,40,.7);
}
@media (min-width: 761px) {
  .book-bar { display: none; }
}

/* --- 10. Focus Visible ------------------------------------ */

:focus-visible {
  outline: 2px solid var(--cyan);
  outline-offset: 3px;
  border-radius: 3px;
}

/* --- 11. Reduced Motion ----------------------------------- */

@media (prefers-reduced-motion: reduce) {
  * {
    animation: none !important;
    transition: none !important;
  }
}

/* --- 12. Assistant (find page) ----------------------------- */

/* Screen-reader-only utility */
.asst-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;
}

/* Chat window */
.asst-box {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
}

/* Scrollable message log */
.asst-log {
  min-height: 160px;
  max-height: 340px;
  overflow-y: auto;
  padding: 20px 18px 8px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  scroll-behavior: smooth;
}

/* Chat bubbles */
.asst-msg {
  max-width: 84%;
  padding: 10px 14px;
  border-radius: 12px;
  font-size: var(--fs-sm);
  line-height: 1.6;
}

.asst-msg a {
  color: var(--cyan);
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* User bubble — right-aligned */
.asst-msg--user {
  align-self: flex-end;
  background: rgba(34,211,238,.10);
  border: 1px solid rgba(34,211,238,.25);
  color: var(--ink);
  border-bottom-right-radius: 4px;
}

/* Bot bubble — left-aligned */
.asst-msg--bot {
  align-self: flex-start;
  background: var(--panel-2);
  border: 1px solid var(--line);
  color: var(--ink);
  border-bottom-left-radius: 4px;
}

.asst-msg--error {
  border-color: rgba(251,191,36,.35);
  background: rgba(251,191,36,.06);
}

/* Typing indicator (three animated dots) */
.asst-typing {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 12px 16px;
}

.asst-dot {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--mut);
  animation: asst-bounce .9s ease-in-out infinite;
}
.asst-dot:nth-child(2) { animation-delay: .18s; }
.asst-dot:nth-child(3) { animation-delay: .36s; }

@keyframes asst-bounce {
  0%, 80%, 100% { transform: translateY(0); opacity: .5; }
  40%            { transform: translateY(-6px); opacity: 1; }
}

/* Product recommendation links inside bot messages */
.asst-recs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}

.asst-rec {
  display: inline-block;
  padding: 7px 12px;
  min-height: 36px;
  font-size: 12px;
  font-weight: 600;
  border: 1px solid rgba(34,211,238,.35);
  border-radius: 8px;
  background: rgba(34,211,238,.06);
  color: var(--cyan) !important;
  text-decoration: none !important;
  transition: background var(--dur) var(--ease), border-color var(--dur) var(--ease);
  cursor: pointer;
}
.asst-rec:hover {
  background: rgba(34,211,238,.14);
  border-color: var(--cyan);
}

/* Book nudge at bottom of each bot reply */
.asst-nudge {
  font-size: 12px;
  color: var(--mut);
  margin: 10px 0 0;
  max-width: none;
}
.asst-nudge a {
  color: var(--cyan);
}

/* Suggested-question chips (empty state) */
.asst-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 10px 18px 14px;
  border-top: 1px solid var(--line);
}
.asst-chips[hidden] { display: none; }

.asst-chip {
  padding: 8px 14px;
  min-height: 44px;
  font-size: 13px;
  font-weight: 500;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: transparent;
  color: var(--mut);
  cursor: pointer;
  transition: border-color var(--dur) var(--ease),
              color var(--dur) var(--ease),
              background var(--dur) var(--ease);
  text-align: left;
}
.asst-chip:hover,
.asst-chip:focus-visible {
  border-color: var(--cyan);
  color: var(--ink);
  background: rgba(34,211,238,.06);
}

/* Input row */
.asst-form {
  display: flex;
  gap: 8px;
  padding: 12px 16px;
  border-top: 1px solid var(--line);
  background: var(--panel-2);
}

.asst-input {
  flex: 1;
  min-width: 0;
  padding: 10px 14px;
  min-height: 44px;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 10px;
  color: var(--ink);
  font-size: var(--fs-base); /* 16px floor: prevents iOS Safari focus-zoom */
  transition: border-color var(--dur) var(--ease);
}
.asst-input::placeholder { color: var(--mut); }
.asst-input:focus {
  outline: 2px solid var(--cyan);
  outline-offset: 2px;
  border-color: var(--cyan);
}

.asst-send {
  padding: 10px 18px;
  min-height: 44px;
  min-width: 60px;
  font-size: var(--fs-sm);
  white-space: nowrap;
}

/* Disclaimer tip below the widget */
.asst-tip {
  font-size: 12px;
  color: var(--mut);
  text-align: center;
  padding: 10px 18px;
  margin: 0;
  max-width: none;
  border-top: 1px solid var(--line);
}

/* Mobile: full-width chips, larger hit targets */
@media (max-width: 480px) {
  .asst-chip {
    width: 100%;
  }
  .asst-msg {
    max-width: 96%;
  }
}

/* ============================================================
   13. Personality layer — shared components, reveal & fun FX
   Gives /find and /index full styling + animation parity.
   Page-local <style> blocks (meet/reviews) still override these.
   ============================================================ */

/* --- Reveal on scroll (engine in app.js) --- */
.reveal { opacity: 0; transform: translateY(16px); transition: opacity .6s var(--ease), transform .6s var(--ease); }
.reveal.in { opacity: 1; transform: none; }
.stagger > * { opacity: 0; }
.stagger.in > * { animation: revealRise .55s var(--ease) both; }
.stagger.in > *:nth-child(2){animation-delay:.07s}
.stagger.in > *:nth-child(3){animation-delay:.14s}
.stagger.in > *:nth-child(4){animation-delay:.21s}
.stagger.in > *:nth-child(5){animation-delay:.28s}
.stagger.in > *:nth-child(6){animation-delay:.35s}
@keyframes revealRise { from{opacity:0;transform:translateY(16px)} to{opacity:1;transform:none} }
/* No-JS / safety net: never leave content hidden */
html:not(.js) .reveal, html:not(.js) .stagger > * { opacity:1 !important; transform:none !important; }

/* --- Eyebrow + sub (find/index parity) --- */
.eyebrow { font-size:.75rem; font-weight:800; letter-spacing:.16em; text-transform:uppercase; color:var(--teal); margin-bottom:var(--space-2); }
.sub { color:var(--mut); font-size:1rem; line-height:1.65; max-width:640px; margin-inline:auto; }

/* --- Animated gradient ink text --- */
.grad-ink { background:linear-gradient(120deg,#67e8f9,#a5b4fc,#67e8f9); background-size:200% auto; -webkit-background-clip:text; background-clip:text; color:transparent; animation:gradInk 7s linear infinite; }
@keyframes gradInk { to { background-position:200% center; } }

/* --- Grid utilities --- */
.grid { display:grid; gap:var(--space-3); }
@media (min-width:640px){ .grid-2{grid-template-columns:repeat(2,1fr)} .grid-3{grid-template-columns:repeat(3,1fr)} .grid-4{grid-template-columns:repeat(4,1fr)} }

/* --- Pills / tags / chips / cta-row --- */
.pill { display:inline-block; font-size:.72rem; font-weight:700; padding:.4em .9em; border-radius:99px; background:var(--panel); border:1px solid var(--line); color:var(--mut); }
.pill-gold { color:var(--gold); border-color:rgba(251,191,36,.35); background:rgba(251,191,36,.08); }
.tags { display:flex; flex-wrap:wrap; gap:var(--space-2); margin-top:var(--space-4); }
.chips { display:flex; flex-wrap:wrap; gap:var(--space-2); list-style:none; padding:0; margin:0; }
.cta-row { display:flex; gap:var(--space-3); flex-wrap:wrap; justify-content:center; margin-top:var(--space-5); }

/* --- Icon badge (find "What I help with") --- */
.iconbadge { width:52px; height:52px; border-radius:14px; display:inline-flex; align-items:center; justify-content:center; margin-bottom:14px; background:linear-gradient(150deg,rgba(34,211,238,.16),rgba(99,102,241,.15)); border:1px solid rgba(34,211,238,.28); transition:transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease); }
.iconbadge svg { width:26px; height:26px; stroke:#8bedf9; stroke-width:1.7; fill:none; stroke-linecap:round; stroke-linejoin:round; }
.card:hover .iconbadge, .tilt:hover .iconbadge { transform:translateY(-3px) scale(1.06); box-shadow:0 12px 26px -12px rgba(34,211,238,.55); border-color:rgba(34,211,238,.5); }

/* --- Feature box + decorative orb + float --- */
.feature { position:relative; overflow:hidden; border:1px solid var(--line); border-radius:24px; padding:clamp(1.5rem,4vw,2.5rem); background:radial-gradient(120% 140% at 0% 0%, var(--panel-2), var(--panel) 55%, var(--bg)); }
.orb { position:absolute; border-radius:50%; filter:blur(46px); pointer-events:none; }
.float { animation:floatY 6s ease-in-out infinite; }
@keyframes floatY { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-10px)} }

/* --- Card hover lift + animated rainbow border on hover --- */
@property --rbw { syntax:"<angle>"; inherits:false; initial-value:0deg; }
.card, .path-card { transition:transform var(--dur) var(--ease), border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease); }
.card:hover, .path-card:hover, .tilt:hover { transform:translateY(-4px); box-shadow:0 22px 48px -24px rgba(0,0,0,.6); }
.rainbow, .tilt, .path-card, .refer-prompt { position:relative; }
.rainbow::after, .tilt::after, .path-card::after, .refer-prompt::after {
  content:""; position:absolute; inset:0; border-radius:inherit; padding:1.5px;
  background:conic-gradient(from var(--rbw), #22d3ee,#5eead4,#a855f7,#f472b6,#fbbf24,#22d3ee);
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite:xor; mask-composite:exclude;
  opacity:0; transition:opacity .3s; pointer-events:none; animation:rbwSpin 6s linear infinite;
}
.rainbow:hover::after, .tilt:hover::after, .path-card:hover::after, .refer-prompt:hover::after { opacity:.9; }
@keyframes rbwSpin { to { --rbw:360deg; } }

/* --- Product explorer (big, clear controls) --- */
.exp-tools { display:flex; flex-wrap:wrap; gap:12px; max-width:760px; margin:0 auto 8px; }
.exp-search { position:relative; flex:1 1 280px; }
.exp-search svg { position:absolute; left:16px; top:50%; transform:translateY(-50%); width:20px; height:20px; stroke:#8295ad; stroke-width:2; fill:none; stroke-linecap:round; }
.exp-search input { width:100%; min-height:54px; background:var(--panel-2); border:1px solid var(--line); border-radius:14px; padding:14px 16px 14px 46px; color:var(--ink); font:inherit; font-size:1rem; transition:border-color .2s, box-shadow .2s; }
.exp-search input:focus { outline:none; border-color:var(--cyan); box-shadow:0 0 0 3px rgba(34,211,238,.15); }
.exp-select { flex:1 1 280px; min-height:54px; background:var(--panel-2); border:1px solid var(--line); border-radius:14px; padding:14px 44px 14px 16px; color:var(--ink); font:inherit; font-size:1rem; font-weight:600; cursor:pointer; appearance:none; -webkit-appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2322d3ee' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 16px center; transition:border-color .2s, box-shadow .2s; }
.exp-select:hover { border-color:rgba(34,211,238,.5); }
.exp-select:focus { outline:none; border-color:var(--cyan); box-shadow:0 0 0 3px rgba(34,211,238,.15); }
.exp-select option { background:#0a1018; color:var(--ink); }
.exp-count { text-align:center; color:#94a3b8; font-size:.8rem; margin:10px 0 14px; }
.exp-grid { display:grid; gap:16px; grid-template-columns:1fr; }
@media (min-width:580px){ .exp-grid{grid-template-columns:1fr 1fr} }
@media (min-width:1080px){ .exp-grid{grid-template-columns:1fr 1fr 1fr} }
.exp-pricenote { text-align:center; color:#94a3b8; font-size:.72rem; max-width:560px; margin:14px auto 0; }

/* --- Cursor spotlight glow (desktop) --- */
.cursor-spot { position:fixed; inset:0; z-index:5; pointer-events:none; mix-blend-mode:screen; background:radial-gradient(420px circle at var(--mx,-200px) var(--my,-200px), rgba(34,211,238,.10), rgba(168,85,247,.05) 42%, transparent 66%); }

/* --- Font polish --- */
body { text-rendering:optimizeLegibility; -moz-osx-font-smoothing:grayscale; }
h1,h2,h3 { letter-spacing:-.01em; }


/* ===== Section 14 — Product Explorer (ported from single-page) ===== */

  @keyframes spin{to{transform:rotate(360deg)}}

  @keyframes spin{to{--ang:360deg}}

  @keyframes addpulse{0%{transform:scale(1)}40%{transform:scale(1.06)}100%{transform:scale(1)}}

  @keyframes slideIn{from{transform:translateX(100%)}to{transform:none}}

  .person .pic{flex:0 0 auto;width:46px;height:46px;border-radius:12px;display:grid;place-items:center;font-size:24px;background:radial-gradient(120% 140% at 0% 0%,#11203a,#0b1626);border:1px solid var(--line)}

  .exp-quick{display:flex;flex-wrap:wrap;gap:7px;justify-content:center}

  .exp-quick button{border:1px dashed var(--line);background:none;color:var(--mut);border-radius:999px;padding:7px 13px;font:inherit;font-size:12.5px;cursor:pointer;transition:all .2s}

  .exp-quick button:hover{border-style:solid;border-color:rgba(34,211,238,.5);color:#fff}

  .exp-count{text-align:center;color:#94a3b8;font-size:12.5px;margin:6px 0 16px}

  .exp-more{grid-column:1/-1;justify-self:center;margin-top:8px;border:1px solid rgba(34,211,238,.4);background:rgba(34,211,238,.08);color:#bff3fb;border-radius:12px;padding:12px 24px;font:inherit;font-size:13.5px;font-weight:700;cursor:pointer;transition:background .18s}

  .exp-more:hover{background:rgba(34,211,238,.18)}

  .pcard{animation:cardIn .5s cubic-bezier(.22,1,.36,1) both}

  .pcard .pic img{transition:transform .55s cubic-bezier(.22,1,.36,1)}

  .pcard:hover .pic img{transform:scale(1.07)}

  @media(prefers-reduced-motion:reduce){
.pcard{animation:none}
.pcard .pic img,.shot img,.gallery img,.crew img{transition:none}
}

  .pcard{position:relative;display:flex;flex-direction:column;border:1px solid var(--line);background:var(--panel);border-radius:18px;padding:17px;transition:transform .2s,border-color .2s,box-shadow .2s}

  .pcard:hover{transform:translateY(-3px);border-color:rgba(34,211,238,.35);box-shadow:0 14px 34px -18px rgba(34,211,238,.5)}

  .pcard .pic{position:relative;height:172px;border-radius:14px;overflow:hidden;background:linear-gradient(150deg,rgba(34,211,238,.12),rgba(99,102,241,.12));display:flex;align-items:center;justify-content:center;margin-bottom:13px;border:1px solid rgba(255,255,255,.06)}

  .pcard .pic img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#0b121c}

  .pcard .pic svg{width:52px;height:52px;stroke:#8bedf9;stroke-width:1.4;fill:none;stroke-linecap:round;stroke-linejoin:round}

  .pcard{--ang:0deg}

  .pcard::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.6px;background:conic-gradient(from var(--ang),#22d3ee,#5eead4,#34d399,#a855f7,#f472b6,#fb7185,#fbbf24,#5eead4,#22d3ee);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.55;pointer-events:none;animation:spin 7s linear infinite;z-index:2;transition:opacity .3s}

  .pcard::before{content:"";position:absolute;inset:-2px;border-radius:20px;background:conic-gradient(from var(--ang),#22d3ee,#5eead4,#a855f7,#f472b6,#fbbf24,#22d3ee);filter:blur(13px);opacity:0;pointer-events:none;z-index:0;transition:opacity .35s;animation:spin 7s linear infinite}

  .pcard:hover::after{opacity:1}

  .pcard:hover::before{opacity:.35}

  .pcard>*{position:relative;z-index:1}

  @media(prefers-reduced-motion:reduce){
.pcard::after,.pcard::before{animation:none}
}

  .pcard .ptag{position:absolute;top:10px;right:10px;z-index:3;font-size:9.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#3a2a00;background:linear-gradient(120deg,#fbbf24,#fde68a);border-radius:999px;padding:4px 9px;box-shadow:0 4px 12px -3px rgba(0,0,0,.55)}

  .pcard .pprice{font-weight:800;font-size:15px;color:#86efc4;margin:0 0 9px;letter-spacing:.2px}

  .pcard .pprice .pfrom{font-weight:600;font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.04em;margin-right:1px}

  .pcard .pvalue{font-size:11px;color:#94a3b8;margin:0 0 1px;line-height:1.3;text-decoration:line-through;text-decoration-color:rgba(148,163,184,.55)}

  .pcard .psave{font-weight:700;font-size:11px;color:#fcd34d;margin-left:6px;letter-spacing:0}

  .pcard .peasy{font-size:11px;color:#aebfd4;margin:-2px 0 11px;line-height:1.45}

  .pcard .peasy strong{color:#86efc4;font-weight:700}

  .pcard .settag{position:absolute;top:10px;left:10px;z-index:3;font-size:9.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#04121a;background:linear-gradient(120deg,#a5b4fc,#7dd3fc);border-radius:999px;padding:4px 9px;box-shadow:0 4px 12px -3px rgba(0,0,0,.5)}

  .pcard.is-set{background:linear-gradient(160deg,rgba(99,102,241,.12),rgba(34,211,238,.05))}

  .pcard.is-set .pprice{color:#bcc6ff}

  .pcard.is-set::after{opacity:.72}

  .exp-pricenote{text-align:center;color:#94a3b8;font-size:11.5px;line-height:1.5;max-width:580px;margin:16px auto 0}

  .exp-pricenote a{color:#7dd3fc}

  .pcard .addbtn.added{animation:addpulse .35s ease}

  .toast{position:fixed;left:50%;bottom:96px;transform:translate(-50%,20px);z-index:90;background:linear-gradient(120deg,#0e2a2f,#14203a);border:1px solid rgba(34,211,238,.4);color:#d7f5fb;font-weight:700;font-size:14px;padding:12px 20px;border-radius:14px;box-shadow:0 14px 34px -10px rgba(0,0,0,.6);opacity:0;pointer-events:none;transition:opacity .25s,transform .25s}

  .toast.show{opacity:1;transform:translate(-50%,0)}

  @media(min-width:760px){
.toast{bottom:88px}
}

  .saved-note{font-size:12px;color:#86efc4;background:rgba(52,211,153,.08);border:1px solid rgba(52,211,153,.2);border-radius:10px;padding:9px 12px;margin:2px 0 12px;text-align:center}

  .drawer-mini{display:flex;gap:8px;margin-top:4px}

  .mini-btn{flex:1;background:rgba(255,255,255,.04);border:1px solid var(--line);color:var(--mut);border-radius:10px;padding:10px;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;transition:all .18s}

  .mini-btn:hover{border-color:rgba(34,211,238,.4);color:#fff}

  .mini-btn.danger:hover{border-color:#fb7185;color:#fb7185}

  .witem .wp{color:#86efc4;font-weight:700;font-size:12px;margin-left:6px}

  .cart-total{background:linear-gradient(150deg,rgba(34,211,238,.1),rgba(99,102,241,.1));border:1px solid rgba(34,211,238,.25);border-radius:14px;padding:13px 15px;margin-bottom:4px}

  .cart-total .ct-row{display:flex;justify-content:space-between;align-items:baseline;font-size:14px;color:var(--mut)}

  .cart-total .ct-row strong{font-size:21px;color:#fff;font-family:"Fraunces",Georgia,serif;font-weight:600}

  .cart-total .ct-easy{font-size:12.5px;color:#aebfd4;margin-top:5px}

  .cart-total .ct-easy strong{color:#86efc4}

  .cart-total .ct-save{font-size:12px;color:#fcd34d;font-weight:700;margin-top:6px}

  .cart-total .ct-note{font-size:11px;color:#7e8ca0;margin-top:6px;line-height:1.4}

  .pcard h4{margin:0 0 5px;font-size:15.5px;font-weight:700;letter-spacing:-.01em}

  .pcard .pdesc{margin:0 0 13px;color:var(--mut);font-size:13px;line-height:1.5;flex:1}

  .pcard .pacts{display:flex;gap:8px;align-items:center}

  .pcard .addbtn{flex:1;border:1px solid rgba(34,211,238,.4);background:rgba(34,211,238,.08);color:#bff3fb;border-radius:10px;padding:9px 10px;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;transition:all .18s}

  .pcard .addbtn:hover{background:rgba(34,211,238,.18)}

  .pcard .addbtn.added{background:linear-gradient(120deg,var(--cyan),var(--blue));color:#04121a;border-color:transparent}

  .pcard .viewbtn{border:1px solid var(--line);color:var(--mut);border-radius:10px;padding:9px 11px;font-size:12.5px;font-weight:600;white-space:nowrap}

  .pcard .viewbtn:hover{border-color:rgba(34,211,238,.4);color:#fff}

  .exp-empty{grid-column:1/-1;text-align:center;color:var(--mut);padding:34px 20px;border:1px dashed var(--line);border-radius:16px;line-height:1.6}

  /* wishlist */
  .cartfab{position:fixed;right:18px;bottom:84px;z-index:45;display:flex;align-items:center;gap:9px;background:linear-gradient(120deg,var(--cyan),var(--blue));color:#04121a;border:none;border-radius:999px;padding:13px 18px;font:inherit;font-weight:800;font-size:14px;cursor:pointer;box-shadow:0 12px 30px -8px rgba(34,211,238,.6);transform:translateY(140px);opacity:0;transition:transform .3s,opacity .3s}

  .cartfab.show{transform:none;opacity:1}

  .cartfab .cnt{background:#04121a;color:#7dd3fc;border-radius:999px;min-width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;padding:0 6px}

  @media(min-width:760px){
.cartfab{bottom:24px}
}

  .drawer{position:fixed;inset:0;z-index:80;display:none}

  .drawer.open{display:block}

  .drawer-back{position:absolute;inset:0;background:rgba(2,6,12,.6);backdrop-filter:blur(3px)}

  .drawer-panel{position:absolute;right:0;top:0;height:100%;width:min(420px,92vw);background:#0a1018;border-left:1px solid var(--line);display:flex;flex-direction:column;animation:slideIn .3s cubic-bezier(.22,1,.36,1)}

  .drawer-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--line)}

  .drawer-head h3{margin:0;font-size:17px;font-family:"Fraunces",Georgia,serif;font-weight:600}

  .drawer-x{background:none;border:none;color:var(--mut);font-size:24px;cursor:pointer;line-height:1}

  .drawer-body{flex:1;overflow-y:auto;padding:8px 20px}

  .witem{display:flex;align-items:flex-start;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}

  .witem .wn{flex:1;font-size:14px;line-height:1.4}

  .witem .wrm{background:none;border:none;color:#fb7185;cursor:pointer;font-size:18px;line-height:1;padding:0}

  .drawer-foot{padding:16px 20px;border-top:1px solid var(--line);display:grid;gap:9px}

  .drawer-empty{color:var(--mut);text-align:center;padding:40px 14px;line-height:1.7}

/* ===== Section 15 — Mobile sticky CTA (Book + Text) & helpers ===== */
.mobile-cta{position:fixed;left:0;right:0;bottom:0;z-index:80;display:none;gap:10px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:rgba(7,11,20,.93);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line)}
.mobile-cta .btn{flex:1;text-align:center;padding:14px 10px;font-size:1rem}
@media (max-width:760px){.mobile-cta{display:flex}body{padding-bottom:86px}}
.card-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.intro-box{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:clamp(18px,3vw,26px)}
.intro-box textarea{width:100%;min-height:120px;background:rgba(0,0,0,.25);border:1px solid var(--line);border-radius:12px;color:var(--ink);padding:14px;font:inherit;line-height:1.55;resize:vertical}
.qr-card{display:inline-block;background:#fff;padding:14px;border-radius:16px;line-height:0}
.qr-card img{width:220px;height:220px;display:block}

/* ============================================================
   Section 16 — Premium polish: type, color, motion
   (North Shore Cutco concierge — Fraunces display + Inter body,
    steel-cyan + champagne-gold, orchestrated motion)
   ============================================================ */
/* This block is the EFFECTIVE source of truth for every token it declares — it wins
   over the :root at the top of the file. Edit brand gold, muted text, radius, easing
   and the type scale here. */
:root{
  --font-display:"Fraunces",Georgia,"Times New Roman",serif;
  --font-body:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-ui:"Sora",var(--font-body);
  --mut:#b9c5da;                 /* lighter muted text for contrast on dark */
  --gold:#ecc885;                /* champagne gold accent */
  --gold-deep:#d4a955;
  --radius:18px;
  --ease:cubic-bezier(.22,1,.36,1);
  --glow-cyan:0 18px 54px -20px rgba(34,211,238,.55);
  --glow-gold:0 18px 54px -20px rgba(236,200,133,.45);
  /* bigger, more confident type scale */
  --fs-base:1.03rem;
  --fs-lg:clamp(1.12rem,1.02rem + .55vw,1.34rem);
  --fs-h3:clamp(1.4rem,1.1rem + 1.2vw,1.85rem);
  --fs-h2:clamp(2.05rem,1.5rem + 2.7vw,3.2rem);
  --fs-h1:clamp(2.8rem,2rem + 4.8vw,4.7rem);
}
body{font-family:var(--font-body);letter-spacing:-.005em;background:radial-gradient(1200px 640px at 50% -8%, #0e1d36 0%, rgba(14,29,54,0) 58%), var(--bg);background-attachment:fixed}
h1,h2{font-family:var(--font-display);font-weight:600;letter-spacing:-.02em;line-height:1.05}
h3,h4{font-family:var(--font-ui);font-weight:700;letter-spacing:-.01em;line-height:1.2}
.lead,.hero-lead{font-size:var(--fs-lg);color:var(--mut)}

/* Eyebrows / labels — champagne gold with a meaningful hairline */
.eyebrow,.section-eyebrow,.hero-eyebrow{font-family:var(--font-ui);font-weight:700;letter-spacing:.2em;text-transform:uppercase;font-size:.72rem;color:var(--gold);display:inline-flex;align-items:center;gap:.65em}
.eyebrow::before,.section-eyebrow::before,.hero-eyebrow::before{content:"";width:26px;height:1px;background:linear-gradient(90deg,transparent,var(--gold))}

/* Headline sheen — light catching steel, drifting to champagne */
.hero-gradient,.grad-ink{
  background:linear-gradient(105deg,var(--cyan) 0%,#a5b4fc 38%,var(--gold) 66%,var(--cyan) 100%);
  background-size:240% auto;-webkit-background-clip:text;background-clip:text;color:transparent;
  animation:sheen 9s linear infinite;
}
@keyframes sheen{to{background-position:240% center}}

/* Scroll reveal — clean fade + rise (no blur = smoother on mobile) */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.reveal.in{opacity:1;transform:none}

/* Orchestrated hero load sequence */
.hero-section .hero-eyebrow,.hero-section .hero-h1,.hero-section .hero-lead,.hero-section .hero-banner,.hero-section .hero-cta-row{animation:heroIn .9s var(--ease) both}
.hero-section .hero-h1{animation-delay:.07s}
.hero-section .hero-lead{animation-delay:.16s}
.hero-section .hero-banner{animation-delay:.24s}
.hero-section .hero-cta-row{animation-delay:.34s}
@keyframes heroIn{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}

/* Cards — gradient hairline + soft lift */
.card,.path-card{border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.012))}
.card:hover,.path-card:hover{transform:translateY(-5px);border-color:rgba(34,211,238,.42);box-shadow:0 26px 64px -28px rgba(34,211,238,.42)}

/* CTA hierarchy — primary dominant, secondary quiet, bigger tap targets */
.btn{padding:.84em 1.65em;font-size:1.02rem;border-radius:13px}
.btn-primary{color:#04121a;background:linear-gradient(135deg,var(--cyan),var(--blue));box-shadow:var(--glow-cyan)}
.btn-primary:hover{filter:brightness(1.06);transform:translateY(-2px);box-shadow:0 22px 60px -18px rgba(34,211,238,.8)}
.btn-grad{color:#04121a}
.btn-ghost{color:var(--ink);background:rgba(255,255,255,.045);border:1px solid var(--line);font-weight:600}
.btn-ghost:hover{background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.24)}

/* Sections breathe a little more */
.section{padding-block:clamp(3.5rem,7vw,6.5rem)}
.section-alt{background:linear-gradient(180deg,rgba(255,255,255,.025),transparent)}

/* Visible keyboard focus everywhere */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;border-radius:6px}

@media (prefers-reduced-motion: reduce){
  .hero-gradient,.grad-ink{animation:none}
  /* .stagger > * is opacity:0 by default and is only revealed by the revealRise
     animation — which the global reduced-motion reset kills with
     `* { animation: none !important }`. Without this line, users who ask for
     reduced motion get permanently invisible content. */
  .reveal,.stagger > *{opacity:1;transform:none;filter:none;transition:none}
  .hero-section .hero-eyebrow,.hero-section .hero-h1,.hero-section .hero-lead,.hero-section .hero-banner,.hero-section .hero-cta-row{animation:none;opacity:1;transform:none;filter:none}
}

/* ===== Section 17 — "Before we meet" prep list (was unstyled) ===== */
.prep{display:grid;gap:12px;max-width:760px;margin:var(--space-4) auto 0}
.prep .q{display:flex;gap:14px;align-items:center;background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.012));border:1px solid var(--line);border-radius:14px;padding:14px 16px;text-align:left}
.prep .q .n{flex:0 0 auto;width:30px;height:30px;display:grid;place-items:center;border-radius:9px;font-weight:800;font-size:.95rem;color:#04121a}
.prep .q .t{color:var(--ink);line-height:1.5}

/* ===== Section 18 — Find quiz result (premium ranked recommendation) ===== */
@property --rb { syntax: '<angle>'; inherits: false; initial-value: 0deg; }
@keyframes rbspin { to { --rb: 360deg; } }
@keyframes rec-glow-pulse { 0%,100%{ box-shadow:0 0 0 0 rgba(236,200,133,0) } 45%{ box-shadow:0 0 42px -6px rgba(236,200,133,.55) } }
@keyframes rec-confetti-fall {
  0%   { transform: translateY(-10px) translateX(0) rotate(0); opacity: 0; }
  12%  { opacity: 1; }
  100% { transform: translateY(230px) translateX(var(--dx,0)) rotate(var(--rot,180deg)); opacity: 0; }
}

/* Result container: solid dark panel with a SUBTLE animated rainbow RIM only.
   Gradient-border trick — dark padding-box painted over a rainbow border-box —
   so the rainbow lives only in the 2px border band and text always sits on dark. */
.rec-result-card{
  position:relative; max-width:660px; margin:0 auto;
  padding:clamp(20px,3.5vw,32px);
  border:2px solid transparent; border-radius:24px;
  background:
    linear-gradient(180deg,#0c1a30,#0a1424) padding-box,
    conic-gradient(from var(--rb), #22d3ee,#6366f1,#a855f7,#ec4899,#f59e0b,#34d399,#22d3ee) border-box;
  box-shadow:0 40px 100px -55px rgba(0,0,0,.85);
}
@supports (background: conic-gradient(from 0deg, red, blue)){
  .rec-result-card{ animation: rbspin 20s linear infinite; }
  .rec-result-card::after{                 /* restrained outside glow */
    content:""; position:absolute; inset:-16px; border-radius:inherit; z-index:-1; pointer-events:none;
    background: conic-gradient(from var(--rb), #22d3ee,#6366f1,#a855f7,#ec4899,#f59e0b,#34d399,#22d3ee);
    filter:blur(30px); opacity:.12; animation: rbspin 20s linear infinite;
  }
}

.rec-head{ text-align:center; margin-bottom:clamp(16px,3vw,22px); }
.rec-fit-eyebrow{ font-family:var(--font-ui,"Sora"); font-weight:800; letter-spacing:.2em; text-transform:uppercase; font-size:.8rem; color:var(--gold); }
.rec-fit-label{ font-family:var(--font-display,serif); font-size:clamp(2rem,1.4rem + 3vw,2.9rem); line-height:1.05; margin:.12em 0 .18em; }
.rec-fit-diagnosis{ color:var(--ink); font-size:var(--fs-lg); line-height:1.5; max-width:40ch; margin:0 auto .45em; }
.rec-based{ color:var(--mut); font-size:.78rem; letter-spacing:.14em; text-transform:uppercase; margin:0; opacity:.85; }

/* #1 hero pick — slightly larger rainbow rim marks it as the emphasized card */
.ranked-pick-card.is-top-pick{
  display:block; position:relative; border:3px solid transparent; border-radius:20px;
  padding:clamp(16px,3vw,22px); margin-bottom:16px;
  background:
    linear-gradient(180deg,#12233f,#0b1526) padding-box,
    conic-gradient(from var(--rb), #22d3ee,#6366f1,#a855f7,#ec4899,#f59e0b,#34d399,#22d3ee) border-box;
}
@supports (background: conic-gradient(from 0deg, red, blue)){
  .ranked-pick-card.is-top-pick{ animation: rbspin 24s linear infinite; }
}
.rpc-badge{ display:inline-block; font-family:var(--font-ui,"Sora"); font-weight:800; font-size:.74rem; letter-spacing:.08em; text-transform:uppercase; color:var(--mut); background:rgba(255,255,255,.05); border:1px solid var(--line); border-radius:99px; padding:5px 12px; margin-bottom:12px; }
.rpc-badge.is-strong{ color:#04121a; background:linear-gradient(135deg,var(--gold),#f6dfae); border-color:transparent; }
.rpc-top{ display:flex; gap:16px; align-items:center; }
.rpc-photo{ width:104px; height:104px; flex:0 0 auto; object-fit:contain; background:#fff; border-radius:14px; padding:6px; }
.rpc-headline{ min-width:0; }
.rpc-kicker{ font-family:var(--font-ui,"Sora"); font-weight:700; font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--cyan); }
.rpc-name{ font-family:var(--font-display,serif); font-size:clamp(1.35rem,1rem + 1.8vw,1.8rem); line-height:1.15; margin:2px 0 5px; color:var(--ink); }
.rpc-uses{ font-size:.98rem; color:var(--ink); line-height:1.5; margin:14px 0 4px; }
.rpc-uses span{ color:var(--gold); font-weight:700; }
.rpc-why{ font-size:.98rem; color:var(--mut); line-height:1.6; margin:8px 0 14px; }
.rpc-why strong{ color:var(--ink); }
.rpc-actions{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.rpc-add{ font-size:.95rem; padding:10px 16px; }
.rec-ask{ font:inherit; font-weight:700; font-size:.92rem; color:var(--cyan); text-decoration:none; padding:9px 6px; min-height:40px; display:inline-flex; align-items:center; }
.rec-ask:hover{ color:#7de7f5; text-decoration:underline; }

/* Supporting picks (#2, #3) — plain dark cards */
.rec-support-label{ text-align:center; font-family:var(--font-ui,"Sora"); font-weight:700; font-size:.76rem; letter-spacing:.12em; text-transform:uppercase; color:var(--mut); margin:6px 0 10px; }
.rec-picks{ list-style:none; margin:0; padding:0; display:grid; gap:12px; }
.ranked-pick-card{ display:grid; grid-template-columns:auto 64px 1fr; gap:14px; align-items:center; padding:12px 14px; border:1px solid var(--line); border-radius:14px; background:rgba(255,255,255,.02); text-align:left; }
.rec-rank{ width:28px; height:28px; display:grid; place-items:center; border-radius:8px; font-weight:800; font-size:.95rem; color:#04121a; background:linear-gradient(135deg,var(--cyan),var(--blue)); }
.rec-pic{ width:64px; height:64px; object-fit:contain; background:#fff; border-radius:10px; padding:4px; }
.rec-info{ min-width:0; }
.rec-name{ font-weight:700; font-size:1.02rem; color:var(--ink); line-height:1.25; }
.rec-why{ color:var(--mut); font-size:.9rem; line-height:1.5; margin:3px 0 8px; }
.rec-add{ font:inherit; font-weight:700; font-size:.88rem; cursor:pointer; border:1px solid rgba(34,211,238,.5); background:rgba(34,211,238,.1); color:#7de7f5; border-radius:10px; padding:8px 14px; min-height:40px; }
.rec-add:hover{ background:rgba(34,211,238,.18); }
.rec-add.added{ border-color:rgba(52,211,153,.5); background:rgba(52,211,153,.12); color:#a7f3d0; cursor:default; }
.rec-actions{ display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin-top:clamp(16px,3vw,22px); }
.rec-note{ text-align:center; color:var(--mut); font-size:.82rem; line-height:1.5; margin-top:14px; }

/* Confetti — pointer-events:none + clipped so it can never block a button */
.rec-confetti{ position:absolute; inset:0 0 auto 0; height:62%; overflow:hidden; border-radius:22px 22px 0 0; pointer-events:none; z-index:4; }
.rec-confetti i{ position:absolute; top:-10px; left:var(--x,50%); width:8px; height:11px; opacity:0; will-change:transform,opacity; animation:rec-confetti-fall 1200ms var(--delay,0ms) cubic-bezier(.25,.75,.35,1) forwards; }

@media (max-width:520px){
  .rec-result-card{ padding:18px 14px; }
  .rpc-top{ gap:12px; }
  .rpc-photo{ width:84px; height:84px; }
  .ranked-pick-card{ grid-template-columns:auto 52px 1fr; gap:10px; }
  .rec-pic{ width:52px; height:52px; }
  .rec-actions .btn{ width:100%; }
}

@media (prefers-reduced-motion: reduce){
  .rec-result-card, .rec-result-card::after, .ranked-pick-card.is-top-pick{ animation:none; }
  .animated-gradient-text{ animation:none; }
  .rec-confetti{ display:none; }
  .rec-celebrate-glow{ animation:rec-glow-pulse 1400ms ease-out 1; }
}

/* ===== Section 20 — price status microcopy (honest pricing) ===== */
.psnap{font-size:.72rem;color:var(--mut);margin-top:2px;line-height:1.35}
.pask{font-size:.85rem;color:var(--mut);font-weight:600;margin:2px 0}
.pofficial{display:inline-block;font-size:.78rem;font-weight:700;color:var(--cyan);margin-top:4px}
.pofficial:hover{color:#7de7f5}
.ranked-pick-card:not(.is-top-pick) .psnap,.ranked-pick-card:not(.is-top-pick) .pask{font-size:.7rem}
.ranked-pick-card .pprice{font-weight:800;color:#86efc4}
.is-top-pick .pprice{font-size:1.15rem}
.ct-note{font-size:.78rem;color:var(--mut);line-height:1.45;margin-top:6px}
.ct-easy{font-size:.78rem;color:var(--mut);margin-top:4px}

/* ===== Section 21 — premium heading kit + Book page demo cards ===== */

/* Reusable, opt-in premium heading classes (do NOT restyle the whole site) */
.eyebrow-premium{ font-family:var(--font-ui,"Sora"); font-weight:800; letter-spacing:.2em; text-transform:uppercase; font-size:.78rem; color:var(--gold); display:inline-block; }
.section-heading-premium{ font-family:var(--font-display,serif); font-size:var(--fs-h2); line-height:1.06; margin:.1em 0 .3em; }
@keyframes gradient-slide{ 0%,100%{ background-position:0% center } 50%{ background-position:100% center } }
.animated-gradient-text{
  background:linear-gradient(100deg,#eaf4ff 0%,var(--cyan) 30%,var(--gold) 55%,#eaf4ff 80%);
  background-size:220% auto; -webkit-background-clip:text; background-clip:text;
  color:transparent; -webkit-text-fill-color:transparent;
  animation:gradient-slide 8s ease-in-out infinite;
}
.heading-underline-glow{ position:relative; display:inline-block; }
.heading-underline-glow::after{
  content:""; position:absolute; left:8%; right:8%; bottom:-.32em; height:2px; border-radius:2px;
  background:linear-gradient(90deg,transparent,var(--gold),var(--cyan),transparent);
  box-shadow:0 0 14px -2px var(--gold);
}
.premium-cta-row{ gap:12px; margin-top:clamp(18px,3.5vw,26px); }

/* Book page — premium demo cards (Full Experience primary, Quick 20 secondary) */
.demo-grid{ display:grid; grid-template-columns:1.12fr 1fr; gap:clamp(16px,3vw,26px); align-items:stretch; }
.premium-demo-card{ position:relative; display:flex; flex-direction:column; background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.008)); border:1px solid var(--line); border-radius:20px; padding:clamp(22px,4vw,32px); }
.premium-demo-card .demo-len{ font-family:var(--font-ui,"Sora"); font-weight:800; font-size:.8rem; letter-spacing:.1em; text-transform:uppercase; color:var(--mut); }
.premium-demo-card h2{ font-family:var(--font-display,serif); font-size:clamp(1.5rem,1.1rem + 1.8vw,2rem); line-height:1.1; margin:.15em 0 .2em; }
.demo-badge{ display:inline-block; align-self:flex-start; font-family:var(--font-ui,"Sora"); font-weight:700; font-size:.74rem; letter-spacing:.04em; color:var(--mut); background:rgba(255,255,255,.05); border:1px solid var(--line); border-radius:99px; padding:5px 12px; margin-bottom:14px; }
.premium-demo-card p{ color:var(--mut); line-height:1.65; font-size:var(--fs-base); margin:0 0 16px; }
.demo-includes{ list-style:none; margin:0 0 20px; padding:0; display:grid; gap:9px; }
.demo-includes li{ position:relative; padding-left:26px; color:var(--ink); line-height:1.5; font-size:.98rem; }
.demo-includes li::before{ content:"✓"; position:absolute; left:0; top:0; color:var(--cyan); font-weight:800; }
.premium-demo-card .btn{ margin-top:auto; width:100%; }
.demo-card-primary{ border-color:rgba(236,200,133,.5); background:linear-gradient(180deg,rgba(236,200,133,.09),rgba(236,200,133,.02)); box-shadow:var(--glow-gold); }
.demo-card-primary .demo-badge{ color:#04121a; background:linear-gradient(135deg,var(--gold),#f6dfae); border-color:transparent; font-weight:800; }
.demo-card-primary .demo-len,.demo-card-primary h2{ color:var(--ink); }
.demo-card-primary .demo-includes li::before{ color:var(--gold); }

/* "Why book" comparison */
.vs{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(14px,3vw,22px); }
.vs .col{ border:1px solid var(--line); border-radius:18px; padding:clamp(18px,3vw,26px); background:rgba(255,255,255,.015); }
.vs .col.me{ border-color:rgba(34,211,238,.4); background:linear-gradient(180deg,rgba(34,211,238,.06),transparent); }
.vs .col h3{ font-size:1.15rem; margin:0 0 14px; }
.vs .col ul{ list-style:none; margin:0; padding:0; display:grid; gap:11px; }
.vs .col li{ display:flex; gap:10px; align-items:flex-start; color:var(--ink); line-height:1.5; font-size:.98rem; }
.vs .yes{ color:#34d399; font-weight:800; flex:0 0 auto; }
.vs .no{ color:#ff6b86; font-weight:800; flex:0 0 auto; }

@media (max-width:720px){
  .demo-grid{ grid-template-columns:1fr; }
  .vs{ grid-template-columns:1fr; }
}

/* ===== Section 22 — AI sidekick premium polish + reply CTAs/chips ===== */
.asst-box{ max-width:920px; margin:0 auto; background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.008)); border:1px solid rgba(236,200,133,.22); border-radius:22px; box-shadow:0 34px 90px -55px rgba(0,0,0,.85), 0 0 60px -40px rgba(236,200,133,.35); }
.asst-log{ max-height:480px; }
.asst-msg{ font-size:1.02rem; line-height:1.65; max-width:92%; }

/* ── Willow header ── */
.asst-head{ display:flex; align-items:center; gap:14px; padding:14px 18px 12px; border-bottom:1px solid var(--line); background:linear-gradient(180deg,rgba(236,200,133,.05),transparent); }
.asst-head-id{ display:flex; flex-direction:column; line-height:1.25; }
.asst-head-name{ font-family:'Fraunces',serif; font-size:1.35rem; font-weight:600; color:var(--ink); letter-spacing:.01em; }
.asst-head-sub{ font-size:.78rem; color:var(--mut); letter-spacing:.04em; }
.asst-voice{ margin-left:auto; background:var(--panel-2); border:1px solid var(--line); border-radius:99px; width:42px; height:42px; font-size:1.1rem; cursor:pointer; transition:border-color .2s, transform .2s; }
.asst-voice:hover{ border-color:rgba(236,200,133,.4); transform:scale(1.06); }

/* ── Willow — the cat herself (real photo + layered animation) ── */
.willow-wrap{ position:relative; width:72px; height:72px; flex:0 0 auto; border-radius:30%; overflow:hidden; border:2px solid rgba(236,200,133,.45); box-shadow:0 6px 18px rgba(0,0,0,.45), inset 0 0 12px rgba(0,0,0,.25); transform-style:preserve-3d; transition:transform .18s ease-out, box-shadow .3s; will-change:transform; }
.asst-head{ perspective:520px; }
.willow-photo{ display:block; width:100%; height:100%; object-fit:cover; }
.willow-lids{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.willow-lid{ animation:willow-blink 5.4s infinite; }
.willow-lid--r{ animation-delay:.04s; }
@keyframes willow-blink{ 0%,93.5%,100%{ ry:0; } 95.5%,97.5%{ ry:4.4; } }
.asst--curious .willow-wrap{ transform:rotate(-5deg) scale(1.05); box-shadow:0 8px 22px rgba(0,0,0,.5), 0 0 26px -8px rgba(236,200,133,.55); }
.asst--curious .willow-lid{ animation-duration:2.6s; }
.asst--talking .willow-wrap{ animation:willow-bob 1.05s ease-in-out infinite; }
@keyframes willow-bob{ 0%,100%{ transform:rotate(0) translateY(0); } 28%{ transform:rotate(-2.4deg) translateY(-1.5px); } 66%{ transform:rotate(1.9deg) translateY(.5px); } }
@media (prefers-reduced-motion: reduce){ .willow-lid, .asst--talking .willow-wrap, .asst--curious .willow-wrap{ animation:none; transform:none; } }
.asst-msg--bot{ background:linear-gradient(180deg,#12203a,#0e1a30); border-color:var(--line); }

/* Action CTAs under a bot reply */
.asst-ctas{ display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; }
.asst-cta{ display:inline-flex; align-items:center; min-height:38px; padding:8px 14px; font-size:.86rem; font-weight:700; border-radius:10px; border:1px solid var(--line); background:rgba(255,255,255,.03); color:var(--ink) !important; text-decoration:none !important; cursor:pointer; transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease); font-family:inherit; }
.asst-cta:hover,.asst-cta:focus-visible{ border-color:var(--cyan); background:rgba(34,211,238,.08); }
.asst-cta--primary{ color:#04121a !important; background:linear-gradient(135deg,var(--gold),#f6dfae); border-color:transparent; }
.asst-cta--primary:hover{ filter:brightness(1.04); }

/* Follow-up quick chips under a bot reply */
.asst-followups{ display:flex; flex-wrap:wrap; gap:7px; margin-top:12px; }
.asst-chip--sm{ min-height:34px; padding:6px 12px; font-size:12px; border-radius:999px; }

@media (max-width:480px){
  .asst-cta{ width:100%; justify-content:center; }
  .asst-chip--sm{ width:auto; }
}

/* Finder progress + reset control */
.rec-quiz-head{ display:flex; align-items:center; gap:12px; margin-bottom:16px; }
.rec-progress{ flex:1; height:7px; border-radius:99px; background:rgba(255,255,255,.08); overflow:hidden; }
.rec-progress-fill{ display:block; height:100%; width:0; border-radius:99px; background:linear-gradient(90deg,var(--cyan),var(--gold)); transition:width .3s var(--ease); }
.rec-progress-txt{ font-size:.78rem; color:var(--mut); font-variant-numeric:tabular-nums; white-space:nowrap; }
.rec-reset{ font:inherit; font-size:.82rem; font-weight:700; color:var(--mut); background:transparent; border:1px solid var(--line); border-radius:99px; padding:6px 14px; min-height:36px; cursor:pointer; white-space:nowrap; transition:border-color var(--dur) var(--ease), color var(--dur) var(--ease); }
.rec-reset:hover,.rec-reset:focus-visible{ border-color:var(--cyan); color:var(--ink); }
@media (prefers-reduced-motion: reduce){ .rec-progress-fill{ transition:none; } }

/* /find — premium hero trust strip + finder panel (concierge feel) */
.find-trust{ color:var(--mut); font-size:.86rem; letter-spacing:.01em; margin:18px 0 0; line-height:1.6; }
.finder-panel{ max-width:680px; margin:0 auto; background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.008)); border:1px solid var(--line); border-radius:22px; padding:clamp(18px,3.5vw,30px); box-shadow:0 30px 80px -55px rgba(0,0,0,.8); }
@media (max-width:520px){ .finder-panel{ padding:16px 12px; } }

/* ===== Sales OS additions (2026-07) ===== */

/* Sticky bar hides while forms/Calendly are on screen (never covers inputs) */
.mobile-cta{ transition:transform .25s var(--ease); }
.mobile-cta--hidden{ transform:translateY(120%); }

/* Challenger insight card — one per page, teach → route */
.insight-card{ max-width:680px; margin:0 auto; padding:clamp(16px,3vw,24px) clamp(18px,3.5vw,28px); border:1px solid rgba(236,200,133,.3); border-left:3px solid var(--gold); border-radius:var(--radius); background:linear-gradient(180deg,rgba(236,200,133,.06),rgba(255,255,255,.01)); }
.insight-card .eyebrow{ color:var(--gold); }
.insight-card p{ margin:.35em 0 0; color:var(--ink); font-size:var(--fs-lg); line-height:1.55; }
.insight-card .insight-actions{ display:flex; flex-wrap:wrap; gap:10px; margin-top:14px; }

/* "Start with your situation" path grid */
.path-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:14px; margin-top:var(--space-4); }
.situation-card{ display:block; text-align:left; padding:16px 18px; border:1px solid var(--line); border-radius:14px; background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.008)); color:var(--ink); text-decoration:none; transition:transform var(--dur) var(--ease), border-color var(--dur) var(--ease); cursor:pointer; font:inherit; width:100%; }
.situation-card:hover,.situation-card:focus-visible{ transform:translateY(-3px); border-color:rgba(34,211,238,.45); }
.situation-card .sit-t{ display:block; font-weight:700; font-family:var(--font-ui); font-size:.98rem; margin-bottom:4px; }
.situation-card .sit-d{ display:block; color:var(--mut); font-size:.86rem; line-height:1.5; }
.situation-card .sit-go{ display:inline-block; margin-top:8px; color:var(--cyan); font-size:.85rem; font-weight:600; }

/* Product card "skip if" line (sets only) */
.pskip{ color:var(--mut); font-size:.78rem; line-height:1.45; margin:6px 0 0; padding-top:6px; border-top:1px dashed var(--line); }

/* Copyable text blocks (referral intros, stats drafts) */
.copy-block{ border:1px solid var(--line); border-radius:12px; background:rgba(255,255,255,.02); padding:14px 16px; }
.copy-block p{ margin:0 0 10px; color:var(--ink); font-size:.95rem; line-height:1.55; }
.copy-block .copy-src{ color:var(--mut); font-size:.8rem; margin-bottom:8px; }
.copy-btn{ font:600 .85rem var(--font-ui); color:var(--cyan); background:rgba(34,211,238,.08); border:1px solid rgba(34,211,238,.35); border-radius:8px; padding:7px 14px; cursor:pointer; min-height:32px; }
.copy-btn:hover,.copy-btn:focus-visible{ background:rgba(34,211,238,.16); }
.copy-btn.copied{ color:var(--teal); border-color:rgba(94,234,212,.4); }

/* Demo Preview Theater on /book */
.theater{ display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:14px; margin-top:var(--space-4); counter-reset:step; }
.theater .step{ border:1px solid var(--line); border-radius:14px; padding:16px 18px; background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.006)); }
.theater .step::before{ counter-increment:step; content:counter(step); display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; border-radius:50%; border:1px solid rgba(236,200,133,.5); color:var(--gold); font:700 .85rem var(--font-ui); margin-bottom:10px; }
.theater .step h3{ font-size:1rem; margin:0 0 6px; }
.theater .step p{ color:var(--mut); font-size:.88rem; line-height:1.55; margin:0; }

/* Referred-by greeting */
.ref-hello{ display:inline-block; padding:.45em 1.1em; border-radius:99px; border:1px solid rgba(236,200,133,.4); background:rgba(236,200,133,.08); color:var(--gold); font:600 .95rem var(--font-ui); margin-bottom:var(--space-3); }


/* ── Multi-referral rows ── */
.refer-row{ position:relative; }
.refer-row .row-x{ position:absolute; top:8px; right:8px; background:none; border:1px solid var(--line); color:var(--mut); border-radius:8px; width:28px; height:28px; line-height:1; cursor:pointer; font-size:1rem; }
.refer-row .row-x:hover{ color:var(--ink); border-color:rgba(251,191,36,.4); }
.ref-add-row{ display:flex; align-items:center; gap:12px; margin:0 0 var(--space-4); flex-wrap:wrap; }
.ref-count{ font-size:.85rem; color:var(--mut); }
.refer-prompt{ cursor:pointer; }
.refer-prompt:focus-visible{ outline:2px solid var(--cyan); outline-offset:2px; }


/* Truthful proof badges near conversion CTAs */
.proof-badges{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px;color:var(--mut);font-size:.82rem}
.proof-badges span{display:inline-flex;align-items:center;min-height:32px;padding:.35rem .72rem;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.035)}
.proof-badges span:nth-child(3),.proof-badges span:nth-child(4){border-color:rgba(251,191,36,.28);color:#f6d28a;background:rgba(251,191,36,.07)}
@media(max-width:520px){.proof-badges{justify-content:flex-start}.hero-section .proof-badges,.section[style*="text-align:center"] .proof-badges{justify-content:center}}

/* --- Touch devices: neutralize hover-lift effects (prevents iOS sticky first-tap) --- */
@media (hover: none) {
  .path-card:hover,
  .shot:hover,
  .famphoto:hover { transform: none; box-shadow: none; }
}

/* --- Page-to-page View Transitions (progressive enhancement) --- */
@view-transition { navigation: auto; }
@media (prefers-reduced-motion: reduce) {
  @view-transition { navigation: none; }
}

/* --- Scroll progress "knife edge" (scroll-driven; no-ops where unsupported) --- */
@supports (animation-timeline: scroll()) {
  body::before {
    content: "";
    position: fixed;
    top: 0; left: 0; right: 0;
    height: 3px;
    z-index: 99;
    pointer-events: none;
    background: linear-gradient(90deg, var(--cyan), #a5b4fc, var(--gold));
    transform-origin: 0 50%;
    transform: scaleX(0);
    animation: cutco-progress linear both;
    animation-timeline: scroll(root);
  }
  @keyframes cutco-progress { to { transform: scaleX(1); } }
  @media (prefers-reduced-motion: reduce) {
    body::before { display: none; }
  }
}
.qr-card img{max-width:min(220px,70vw);height:auto}

/* ============================================================
   Section 19 — HERITAGE REDESIGN (warm paper / craftsman's card)
   The final :root wins for tokens, so this flips the whole palette
   from the old dark-neon theme to a warm, editorial, non-templated
   identity: cream paper, espresso ink, oxblood red, hunter green,
   brass. Overrides the loud "tech" rules (gradient text, cyan glow,
   cursor spotlight, rainbow borders). Page-level inline <style> may
   still re-override on individual pages — sweep those per page.
   ============================================================ */
:root{
  --bg:#f4eee2;            /* warm cream paper (matches the brand banner) */
  --ink:#221c15;           /* warm espresso — main text */
  --mut:#6f6455;           /* warm stone — muted text */
  --line:#e3d8c4;          /* warm hairline border */
  --panel:#fbf7ee;         /* lifted cream — card surface */
  --panel-2:#eee5d4;       /* secondary surface */
  --cyan:#a63a28;          /* REPURPOSED → brand oxblood red (all old cyan refs turn red) */
  --blue:#8a3122;          /* REPURPOSED → deep red */
  --teal:#2e4a3a;          /* REPURPOSED → hunter green (eyebrows / secondary) */
  --gold:#a9812c;          /* brass (was champagne) */
  --gold-deep:#8a6a22;
  --forest:#223a2c;        /* deep hunter-green surface (footer) */
  --brand:#a63a28;
  --brand-ink:#fbf3e6;     /* cream text on red */
  --font-mono:ui-monospace,"SFMono-Regular","Cascadia Code",Menlo,Consolas,monospace;
  --radius:12px;
  --glow-cyan:0 20px 44px -24px rgba(60,40,20,.28);
  --glow-gold:0 20px 44px -24px rgba(120,90,40,.24);
}

/* base surface — kill the dark radial gradient */
html{background:var(--bg)}
body{
  background:radial-gradient(1100px 520px at 50% -12%, #fbf6ec, rgba(251,246,236,0) 60%), var(--bg) !important;
  background-attachment:scroll !important;
  color:var(--ink);
}
::selection{background:rgba(166,58,40,.18);color:var(--ink)}

/* headings — Fraunces carries the personality */
h1,h2{color:var(--ink)}
h3,h4{font-family:var(--font-display);font-weight:600;color:var(--ink);letter-spacing:-.01em}

/* eyebrows → typed spec-tag labels (mono), hunter green with a brass tick */
.eyebrow,.section-eyebrow,.hero-eyebrow,.rec-fit-eyebrow,.rec-support-label{
  font-family:var(--font-mono);font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  font-size:.72rem;color:var(--teal);
}
.eyebrow::before,.section-eyebrow::before,.hero-eyebrow::before{display:none}

/* kill gradient text → solid oxblood
   .animated-gradient-text is live on the /find quiz-result headline; two of its
   gradient stops are near-white, so on cream it was near-invisible. */
.hero-gradient,.grad-ink,.animated-gradient-text{
  background:none !important;-webkit-background-clip:border-box !important;background-clip:border-box !important;
  -webkit-text-fill-color:var(--brand) !important;color:var(--brand) !important;animation:none !important;
}
/* kill cursor spotlight + rainbow hover border */
.cursor-spot{display:none !important}
.rainbow::after,.tilt::after,.path-card::after,.refer-prompt::after{display:none !important}

/* cards — cream, warm hairline, quiet warm shadow, red hover */
.card,.path-card{
  background:var(--panel) !important;border:1px solid var(--line) !important;border-radius:var(--radius);
  box-shadow:0 1px 2px rgba(120,90,40,.05);
}
.card:hover,.path-card:hover,.tilt:hover{
  transform:translateY(-3px);border-color:rgba(166,58,40,.42) !important;
  box-shadow:0 20px 40px -26px rgba(60,40,20,.5) !important;
}
.path-cta,.rec-ask,.rpc-kicker{color:var(--brand) !important}

/* buttons */
.btn::after{display:none !important}   /* kill shimmer sweep */
.btn{border-radius:11px;font-family:var(--font-body);font-weight:700}
.btn-primary,.btn-grad{
  color:var(--brand-ink) !important;background:var(--brand) !important;
  border:1px solid rgba(120,30,20,.35);box-shadow:0 12px 26px -16px rgba(166,58,40,.7) !important;
}
.btn-primary:hover,.btn-grad:hover{filter:none;transform:translateY(-1px);background:#8f3122 !important}
.btn-ghost{color:var(--ink) !important;background:rgba(255,255,255,.5) !important;border:1px solid var(--line) !important;font-weight:600}
.btn-ghost:hover{background:rgba(255,255,255,.85) !important;border-color:var(--gold) !important}
.btn-gold{color:#2a2110 !important;background:var(--gold) !important}

/* header — cream, translucent, warm hairline */
.site-header{background:rgba(246,241,231,.86) !important;border-bottom:1px solid var(--line) !important;backdrop-filter:saturate(1.1) blur(10px);-webkit-backdrop-filter:saturate(1.1) blur(10px)}
.site-header__logo{color:var(--ink) !important;font-family:var(--font-display);font-weight:600;letter-spacing:-.01em}
.site-header__nav a{color:var(--mut) !important;font-weight:600}
.site-header__nav a:hover,.site-header__nav a[aria-current]{color:var(--brand) !important}

/* footer — deep hunter-green surface (the one dark moment, on purpose) */
.site-footer{background:var(--forest) !important;color:#d8e1d2 !important;border-top:3px solid var(--gold)}
.site-footer a{color:#f3eee1 !important}
.site-footer a:hover{color:#fff !important}
.site-footer strong{color:#fff}

/* trust bar — quiet cream marquee */
.trust-bar{background:var(--panel-2) !important;border-block:1px solid var(--line) !important;color:var(--mut) !important}
.trust-bar__track span{color:var(--mut)}

/* alternating sections — warm tint band */
.section-alt{background:linear-gradient(180deg,#efe7d7,transparent) !important;border-block:1px solid var(--line)}

/* sticky mobile bars — cream */
.book-bar,.mobile-cta{background:rgba(251,247,238,.95) !important;border-top:1px solid var(--line) !important;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
/* :not(:first-child) — the first link is the filled primary button and needs
   light text on oxblood, not oxblood text. Without this exclusion the rule below
   painted the sticky "Book" label the same colour as its own background. */
.book-bar > a:not(:first-child),a.book-bar{color:var(--brand) !important;font-weight:800}

/* form controls — white fields, warm border, red focus */
.exp-search input,.exp-select,.asst-input,.intro-box textarea{background:#fff !important;border:1px solid var(--line) !important;color:var(--ink) !important}
.exp-search input:focus,.exp-select:focus,.asst-input:focus,.intro-box textarea:focus{border-color:var(--brand) !important;box-shadow:0 0 0 3px rgba(166,58,40,.15) !important}
.intro-box{background:var(--panel) !important;border:1px solid var(--line) !important}
.exp-select option{background:#fff;color:var(--ink)}
.exp-count,.exp-pricenote,.rec-based{color:var(--mut) !important}
:focus-visible{outline-color:var(--brand) !important}

/* icon badge + pills */
.iconbadge{background:linear-gradient(150deg,#f4e7cf,#efe6d4) !important;border:1px solid var(--line) !important}
.iconbadge svg{stroke:var(--brand) !important}
.card:hover .iconbadge,.tilt:hover .iconbadge{box-shadow:0 12px 24px -14px rgba(166,58,40,.4) !important;border-color:rgba(166,58,40,.4) !important}
.pill{background:var(--panel) !important;border:1px solid var(--line) !important;color:var(--mut) !important}
.pill-gold{color:var(--gold-deep) !important;border-color:rgba(169,129,44,.4) !important;background:rgba(169,129,44,.1) !important}

/* misc surfaces that hardcoded dark values */
.feature{background:linear-gradient(160deg,#fbf7ee,#f1e8d8) !important;border:1px solid var(--line) !important}
.insight-card,.rec-result-card{background:var(--panel) !important;border:1px solid var(--line) !important}
.prep .q{background:var(--panel) !important;border:1px solid var(--line) !important}
.prep .q .n,.rec-rank{color:var(--brand-ink) !important;background:var(--brand) !important}
.rpc-badge.is-strong{color:#2a2110 !important;background:var(--gold) !important}
.ranked-pick-card{background:#fff !important;border:1px solid var(--line) !important}
.ranked-pick-card.is-top-pick{background:#fbf7ee !important;border-color:rgba(166,58,40,.35) !important}
.rpc-photo,.rec-pic{background:#fff !important}
.rpc-uses span{color:var(--gold-deep) !important}

/* ── Signature marks: maker's seal + hand-drawn knife rule ── */
.knife-rule{display:flex;align-items:center;justify-content:center;gap:16px;color:var(--gold);margin:0 auto}
.knife-rule::before,.knife-rule::after{content:"";height:1px;flex:1;max-width:220px;background:linear-gradient(90deg,transparent,var(--line))}
.knife-rule::after{background:linear-gradient(90deg,var(--line),transparent)}
.seal{--sz:104px;width:var(--sz);height:var(--sz);flex:0 0 auto;color:var(--gold)}
.seal svg{width:100%;height:100%;display:block}

/* ── Section 19b: fix dark stragglers from the old "premium polish" blocks ── */
/* Willow (AI sidekick) chat — was navy bubbles with now-dark text */
.asst-box{background:var(--panel) !important;border:1px solid var(--line) !important;box-shadow:0 24px 60px -42px rgba(60,40,20,.4) !important}
.asst-msg--bot{background:#fff !important;border:1px solid var(--line) !important;color:var(--ink)}
.asst-msg--user{background:rgba(46,74,58,.08) !important;border:1px solid rgba(46,74,58,.22) !important;color:var(--ink)}
.asst-head{background:linear-gradient(180deg,rgba(169,129,44,.06),transparent) !important}
.willow-wrap{border-color:rgba(169,129,44,.5) !important;box-shadow:0 6px 16px rgba(60,40,20,.28) !important}
.asst-cta{background:#fff !important;border:1px solid var(--line) !important;color:var(--ink) !important}
.asst-cta:hover,.asst-cta:focus-visible{border-color:var(--brand) !important;background:rgba(166,58,40,.07) !important}
.asst-cta--primary{color:#2a2110 !important;background:linear-gradient(135deg,var(--gold),#e6c98a) !important}
.asst-rec{border-color:rgba(166,58,40,.35) !important;background:rgba(166,58,40,.06) !important}
.asst-rec:hover{background:rgba(166,58,40,.14) !important;border-color:var(--brand) !important}
.asst-chip:hover,.asst-chip:focus-visible{border-color:var(--brand) !important;background:rgba(166,58,40,.06) !important;color:var(--ink) !important}
.finder-panel{background:var(--panel) !important;box-shadow:0 30px 70px -52px rgba(60,40,20,.5) !important}
.rec-progress{background:rgba(60,40,20,.1) !important}
.rec-progress-fill{background:linear-gradient(90deg,var(--brand),var(--gold)) !important}

/* "vs" comparison, situation cards, copy blocks, referral prompts */
.vs .col.me{border-color:rgba(166,58,40,.42) !important;background:linear-gradient(180deg,rgba(166,58,40,.06),transparent) !important}
.vs .yes{color:var(--teal) !important}
.vs .no{color:var(--brand) !important}
.situation-card{background:var(--panel) !important;border:1px solid var(--line) !important}
.situation-card:hover,.situation-card:focus-visible{border-color:rgba(166,58,40,.45) !important}
.situation-card .sit-go{color:var(--brand) !important}
.copy-block{background:#fff !important;border:1px solid var(--line) !important}
.copy-btn{color:var(--brand) !important;background:rgba(166,58,40,.08) !important;border:1px solid rgba(166,58,40,.35) !important}
.copy-btn:hover,.copy-btn:focus-visible{background:rgba(166,58,40,.16) !important}
.ref-hello{border-color:rgba(169,129,44,.45) !important;background:rgba(169,129,44,.1) !important;color:var(--gold-deep) !important}
.theater .step{background:var(--panel) !important;border:1px solid var(--line) !important}
.theater .step::before{border-color:rgba(169,129,44,.5) !important;color:var(--gold-deep) !important}

/* proof badges — unified typed spec-tags, readable on cream, brass accents legible */
.proof-badges{display:flex;flex-wrap:wrap;gap:8px 10px;justify-content:center;margin-top:var(--space-5);color:var(--mut)}
.proof-badges span{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.03em;text-transform:uppercase;color:var(--mut);background:var(--panel) !important;border:1px solid var(--line) !important;border-radius:999px;padding:6px 12px}
.proof-badges span:nth-child(3),.proof-badges span:nth-child(4){border-color:rgba(169,129,44,.42) !important;color:var(--gold-deep) !important;background:rgba(169,129,44,.1) !important}

/* remove the old decorative glow-orbs (a hallmark of the AI-glow look) */
.orb{display:none !important}

/* ── Section 19d: neutralize page-level hero glow left in inner-page inline <style> ── */
.hero-section::before{background:radial-gradient(52% 62% at 50% 0%, rgba(169,129,44,.05), transparent 70%) !important}
.hero-portrait{box-shadow:0 0 0 1px var(--line), 0 22px 46px -20px rgba(60,40,20,.45) !important}
.final-cta-section{background:radial-gradient(60% 90% at 50% 100%, rgba(169,129,44,.08), transparent 72%), var(--panel-2) !important}
/* bare single-link book bar (owners/referred/what-to-expect): center it on mobile */
@media(max-width:760px){a.book-bar{display:flex;align-items:center;justify-content:center;min-height:48px;font-weight:800;text-align:center}}

/* ── Section 20: mobile legibility + touch targets ─────────────────────────────
   Measured with Playwright at 375/390/430px. Two problems showed up site-wide:
   descriptive card copy rendered at 14px, and several buttons came out 40px tall.
   Both are below the thresholds we hold ourselves to on iPhone (16px body text,
   44px touch targets), so they are fixed at the token/component level here rather
   than patched per page. */

/* Card body copy is prose, not a label — it needs to be readable, not small.
   Eyebrows are excluded by selector rather than re-sized afterwards: an earlier
   version of this block "protected" them by setting font-size:var(--fs-sm), which
   actually enlarged .eyebrow (.75rem) and .proof-badges span (.66rem) instead of
   leaving them alone. Excluding them keeps the heritage sizes untouched. */
.path-desc,
.rec-note,
.card p:not(.eyebrow):not(.section-eyebrow):not(.hero-eyebrow):not(.path-desc){font-size:1rem;line-height:1.6}

/* Touch targets are handled on the base .btn rule (see top of file), not here,
   so there is one source of truth for button sizing rather than a mobile-only
   override layer. */

/* ── Section 21: finish the heritage repaint on the product explorer ───────────
   Section 14 (the /find explorer, ~L700-880) predates the warm-heritage redesign
   and was never repainted, so it still carried dark-theme literals. On cream that
   produced genuinely unreadable UI — worst of all the wish-list drawer, a
   near-black panel (#0a1018) whose text inherits the heritage espresso ink.
   These override the Section 14 literals rather than editing them in place,
   matching how 19/19b/19d were applied, so the explorer's layout rules stay
   untouched and this repaint can be reverted as one block. */

/* Wish-list drawer: cream panel, warm scrim, ink text. */
.drawer-panel{background:var(--panel) !important;color:var(--ink) !important}
.drawer-back{background:rgba(60,40,20,.45) !important}
.drawer-head,.drawer-foot{border-color:var(--line) !important}
.cart-total{color:var(--ink) !important}

/* Floating cart button + its counter: brand fill, light ink (was near-black ink
   on an oxblood gradient, and a neon-blue counter). */
.cartfab{background:var(--brand) !important;color:var(--brand-ink, #fbf7ee) !important;
         box-shadow:0 12px 28px -10px rgba(166,58,40,.6) !important}
.cartfab .cnt{background:rgba(0,0,0,.28) !important;color:var(--brand-ink, #fbf7ee) !important}

/* "Added" state on a product card. */
.pcard .addbtn.added{background:var(--brand) !important;color:var(--brand-ink, #fbf7ee) !important}

/* Set badge: brass on cream instead of the indigo/cyan gradient. */
.pcard .settag{background:rgba(169,129,44,.16) !important;color:var(--gold-deep, #6d5318) !important;
               box-shadow:none !important;border:1px solid rgba(169,129,44,.4)}

/* Toast: dark ink card with cream text reads fine, but it was teal/navy with a
   cyan border — repainted to the heritage dark surface. */
.toast{background:var(--ink) !important;border-color:rgba(169,129,44,.45) !important;
       color:var(--paper, #f4eee2) !important}

/* Product image placeholder sat on a navy swatch while images load. */
.pcard .pic img{background:var(--panel-2, #efe7d8) !important}

/* Product-card text still carried dark-theme neon values, measured on the live
   page at 1280px against the cream card (#fbf7ee):
     .pprice   rgb(134,239,196) mint   → 1.30:1   ← this is the PRICE
     .addbtn   rgb(191,243,251) cyan   → 1.50:1
     .exp-more rgb(191,243,251) cyan   → 1.50:1
     .peasy    rgb(174,191,212) blue   → 1.75:1
   All four are below the 4.5:1 AA threshold and the price was effectively
   invisible. Repainted to heritage ink/brand. */
.pcard .pprice{color:var(--ink) !important}
.pcard .peasy{color:var(--mut) !important}
.pcard .addbtn,.exp-more{
  color:var(--brand) !important;
  background:rgba(166,58,40,.07) !important;
  border-color:rgba(166,58,40,.32) !important;
}

/* Small brass labels sat between 3.35:1 and 3.96:1 on cream — under AA for text
   this size. --gold (#a9812c) and --gold-deep (#8a6a22) are both too light at
   11px; this darker brass measures 5.5:1 on cream and 4.9:1 on the tinted badge
   fill while still reading as brass, not brown. */
.announcement__label,
.start-step,
.proof-badges span:nth-child(3),
.proof-badges span:nth-child(4){color:#7a5c1c !important}

/* Inline text links inside prose get vertical room without breaking line flow. */
@media(max-width:900px){
  .site-footer nav a,
  .site-footer p a{display:inline-block;padding-block:10px}
}
