/* ── Reset & Base ─────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

body {
  font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Helvetica, Arial, sans-serif;
  background: #fff;
  color: #1d1d1f;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
  -webkit-tap-highlight-color: transparent;   /* remove gray flash on iOS/Android tap */
}

.mini-nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 300;
  background: rgba(255,255,255,0.94);
  border-bottom: 1px solid rgba(0,0,0,0.08);
  transform: translateY(-100%);
  opacity: 0;
  transition: transform 0.22s ease, opacity 0.22s ease;
}

/* Blur only on richer profiles to avoid expensive full-width compositing. */
html.fx-rich .mini-nav {
  background: rgba(255,255,255,0.82);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
}

.mini-nav.visible {
  transform: translateY(0);
  opacity: 1;
}

.mini-nav-inner {
  max-width: 1120px;
  margin: 0 auto;
  padding: 9px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.mini-brand {
  color: #1d1d1f;
  text-decoration: none;
  font-size: 14px;
  font-weight: 600;
}

.mini-actions { display: flex; align-items: center; gap: 8px; }

.mini-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid #d2d2d7;
  background: #fff;
  color: #1d1d1f;
  border-radius: 980px;
  padding: 7px 12px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  text-decoration: none;
}

.mini-btn:hover { border-color: #b9b9be; }
.mini-primary { background: #0071e3; color: #fff; border-color: #0071e3; }
.mini-primary:hover { background: #0077ed; border-color: #0077ed; }

/* ── Scroll animations ────────────────────────────────────────── */
/* Default: content visible (no-JS / slow-JS safe) */
.fade-up {
  opacity: 1;
  transform: translateY(0);
  transition: opacity 0.65s ease, transform 0.65s ease;
}
/* JS adds .js-ready to <html> on load — only then do elements start hidden */
.js-ready .fade-up {
  opacity: 0;
  transform: translateY(28px);
}
.js-ready .fade-up.visible {
  opacity: 1;
  transform: translateY(0);
}

/* ── Hero ─────────────────────────────────────────────────────── */
.hero {
  min-height: 60vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 60px 24px 48px;
}


.hero h1 {
  font-size: 68px;
  font-weight: 700;
  letter-spacing: 0;
  line-height: 1.01;
  color: #1d1d1f;
  max-width: 1080px;
  margin-bottom: 26px;
  text-wrap: balance;
}

.hero-line { display: block; }
.hero-line-accent { color: #0071e3; }

.hero p {
  font-size: 20px;
  color: #6e6e73;
  max-width: 980px;
  line-height: 1.6;
  margin-bottom: 38px;
  text-wrap: balance;
}

.hero-trust {
  font-size: 14px;
  color: #6e6e73;
  margin-bottom: 16px;
  max-width: 920px;
  text-wrap: balance;
}

.hero-actions {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 12px;
}

/* ── Landing page prefill button (arrow → morphs on hover) ───────── */
.btn-prefill-morph {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  background: #0071e3;
  color: #fff;
  border: none;
  border-radius: 50%;
  width: 56px;
  height: 56px;
  padding: 0;
  cursor: pointer;
  font-family: inherit;
  overflow: hidden;
  white-space: nowrap;
  text-decoration: none;
  transition:
    width        0.45s cubic-bezier(0.34, 1.3, 0.64, 1),
    border-radius 0.38s ease,
    gap          0.3s  ease;
}

.btn-prefill-morph:hover {
  width: 220px;
  border-radius: 28px;
  gap: 10px;
}

.btn-prefill-morph .morph-label {
  font-size: 16px;
  font-weight: 500;
  max-width: 0;
  opacity: 0;
  overflow: hidden;
  transition: max-width 0.38s ease, opacity 0.22s ease 0.12s;
}

.btn-prefill-morph:hover .morph-label {
  max-width: 180px;
  opacity: 1;
}

.btn-prefill-morph .morph-icon {
  font-size: 26px;
  line-height: 1;
  flex-shrink: 0;
  transition: transform 0.3s ease 0.28s;  /* delay so it drops after the morph lands */
}

.btn-prefill-morph:hover .morph-icon {
  transform: translateY(5px);
}

/* On touch devices there's no hover — show the expanded pill + label by
   default so users can actually read what the button does before tapping. */
@media (hover: none) {
  .btn-prefill-morph {
    width: auto;
    min-width: 220px;
    border-radius: 28px;
    gap: 10px;
    padding: 0 22px;
  }
  .btn-prefill-morph .morph-label {
    max-width: 200px;
    opacity: 1;
  }
}

.btn-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: #0071e3;
  color: #fff;
  border: none;
  border-radius: 980px;
  min-height: 56px;
  padding: 0 32px;
  font-size: 16px;
  font-weight: 500;
  cursor: pointer;
  text-decoration: none;
  transition: background 0.2s, transform 0.15s, opacity 0.18s ease;
}
.btn-cta:hover { background: #0077ed; transform: scale(1.03); color: #fff; }

.mini-nav.visible + .hero .hero-start-btn {
  opacity: 0;
  pointer-events: none;
  transform: scale(0.98);
}

.btn-secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: #f5f5f7;
  color: #1d1d1f;
  border: 1.5px solid #e5e5ea;
  border-radius: 980px;
  min-height: 56px;
  padding: 0 32px;
  font-size: 16px;
  font-weight: 500;
  cursor: pointer;
  text-decoration: none;
  transition: background 0.2s, border-color 0.2s, transform 0.15s;
}
.btn-secondary:hover {
  background: #fff;
  border-color: #c7c7cc;
  transform: scale(1.02);
  color: #1d1d1f;
}

/* ── Use cases ────────────────────────────────────────────────── */
.use-cases {
  background: #f5f5f7;
  padding: 64px 24px;
  border-radius: 0 0 28px 28px;         /* rounded bottom — dark footer peeks through */
  position: relative;
  z-index: 1;                            /* paints above dark-reveal-zone bg */
  content-visibility: auto;             /* skip render until near viewport */
  contain-intrinsic-size: 0 900px;      /* reserves space so scrollbar doesn't jump */
}

.use-cases-inner {
  max-width: 1060px;
  margin: 0 auto;
  text-align: center;
}

.use-case-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  text-align: left;
}

.use-card {
  background: #fff;
  border: 1px solid #e5e5ea;
  border-radius: 16px;
  padding: 28px 24px;
  box-shadow: 0 2px 18px rgba(0,0,0,0.045);
}

.use-icon {
  width: 32px;
  height: 32px;
  border-radius: 9px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #f0f6ff;
  color: #0071e3;
  margin-bottom: 10px;
  font-size: 15px;
}

.use-card h3 {
  font-size: 17px;
  font-weight: 650;
  color: #1d1d1f;
  margin-bottom: 9px;
}

.use-card p {
  font-size: 14px;
  line-height: 1.55;
  color: #6e6e73;
}

/* ── Landing pages ────────────────────────────────────────────── */
.landing-hero {
  min-height: 90vh;
  display: flex;
  align-items: center;
  padding: 88px 24px 68px;
  text-align: center;
  background: #fff;
  box-sizing: border-box;
}

.landing-hero-inner {
  max-width: 860px;
  margin: 0 auto;
  width: 100%;
}

.landing-hero h1 {
  font-size: 58px;
  line-height: 1.04;
  font-weight: 700;
  letter-spacing: 0;
  color: #1d1d1f;
  margin-bottom: 22px;
  overflow-wrap: anywhere;
}

.landing-lede {
  font-size: 20px;
  line-height: 1.58;
  color: #6e6e73;
  max-width: 740px;
  margin: 0 auto 32px;
}

.landing-note {
  margin: 18px auto 0;
  max-width: 680px;
  color: #8e8e93;
  font-size: 13px;
  line-height: 1.5;
}

.landing-prefill-help {
  margin: 14px auto 0;
  max-width: 760px;
  color: #6e6e73;
  font-size: 14px;
  line-height: 1.5;
}

.landing-ready-msg {
  margin: 10px auto 0;
  max-width: 920px;
  padding: 10px 12px;
  background: #eef7ff;
  border: 1px solid #cce1ff;
  border-radius: 12px;
  color: #0059b3;
  font-size: 14px;
  line-height: 1.45;
}

.landing-sheet-fields {
  margin: 14px auto 0;
  max-width: 600px;
  background: #f8fafc;
  border: 1px solid #e5e5ea;
  border-radius: 16px;
  padding: 12px 16px;
  text-align: left;
}

.landing-sheet-fields ul {
  margin-top: 4px;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 4px 14px;
  padding-left: 18px;
}

.landing-sheet-fields li {
  color: #3a3a3c;
  font-size: 13px;
  line-height: 1.25;
  min-width: 0;
}

.landing-section {
  padding: 74px 24px;
  background: #fff;
}

.landing-muted {
  background: #f5f5f7;
}

.landing-grid {
  max-width: 1040px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 22px;
}

.landing-copy-block {
  border: 1px solid #e5e5ea;
  border-radius: 16px;
  padding: 30px 28px;
  background: #fff;
  box-shadow: 0 2px 18px rgba(0,0,0,0.045);
}

.landing-block-icon {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #f0f6ff;
  color: #0071e3;
  font-size: 17px;
  margin-bottom: 14px;
}

.landing-copy-block h2,
.landing-use-inner h2 {
  font-size: 28px;
  line-height: 1.18;
  font-weight: 700;
  letter-spacing: 0;
  color: #1d1d1f;
  margin-bottom: 14px;
}

.landing-copy-block p,
.landing-use-inner p {
  color: #6e6e73;
  font-size: 15px;
  line-height: 1.62;
}

.landing-use-inner {
  max-width: 1040px;
  margin: 0 auto;
  text-align: center;
}

.landing-use-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  margin-top: 28px;
  text-align: left;
}

.landing-use-copy {
  margin-top: 12px;
}

.landing-links {
  padding: 48px 24px;
  background: #fff;
}

.landing-links-inner {
  max-width: 1040px;
  margin: 0 auto;
  text-align: center;
}

.landing-link-row {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 9px;
  margin-top: 16px;
}

.landing-link-chip {
  color: #0071e3;
  background: #f0f6ff;
  border: 1px solid #cce1ff;
  border-radius: 980px;
  padding: 8px 14px;
  font-size: 13px;
  font-weight: 500;
  font-family: inherit;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}

.landing-link-chip:hover {
  background: #e8f4ff;
  border-color: #99c9ff;
}

/* ── Tool section ─────────────────────────────────────────────── */
.tool-section {
  background: #fff;                  /* full-width cover so sticky footer can't bleed through sides */
  position: relative;
  z-index: 1;
}

/* Only round the bottom on landing pages, where faq-section is the last card */
.dark-reveal-zone .faq-section {
  border-radius: 0 0 28px 28px;
}

.tool-wrap {
  padding: 56px 28px 44px;
  max-width: 1120px;
  margin: 0 auto;
  position: relative;
}

.tool-wrap::before {
  content: "";
  position: absolute;
  inset: 18px 0 0;
  border-radius: 28px;
  background:
    radial-gradient(1200px 260px at 50% -120px, rgba(0,113,227,0.07), transparent 65%),
    linear-gradient(180deg, #f8fafd 0%, #ffffff 100%);
  border: 1px solid #eef1f6;
  z-index: -1;
}

/* ── Example searches ─────────────────────────────────────────── */
.example-searches {
  border: 1px solid #e5e5ea;
  border-radius: 16px;
  padding: 28px 28px 30px;
  margin-bottom: 18px;
  background: #fbfbfd;
}

.example-heading {
  font-size: 24px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0;
  color: #1d1d1f;
  margin-bottom: 8px;
}

.example-copy {
  color: #6e6e73;
  font-size: 14px;
  line-height: 1.55;
  margin-bottom: 18px;
}

.example-chip-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}

@media (max-width: 980px) {
  .example-chip-row { grid-template-columns: repeat(3, 1fr); }
}

.example-chip {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  background: #fff;
  color: #1d1d1f;
  border: 1.5px solid #e5e5ea;
  border-radius: 12px;
  padding: 13px 16px;
  font-size: 13px;
  font-weight: 500;
  font-family: inherit;
  cursor: pointer;
  text-decoration: none;
  appearance: none;
  transition: border-color 0.15s, background 0.15s, color 0.15s, transform 0.15s;
}
.example-chip:hover {
  border-color: #0071e3;
  background: #f0f6ff;
  color: #0071e3;
  transform: translateY(-1px);
}

.step-helper {
  color: #6e6e73;
  font-size: 14px;
  line-height: 1.5;
  margin-top: -12px;
  margin-bottom: 20px;
}

.step-overlap-note {
  margin-top: 12px;
  margin-bottom: 0;
  padding: 11px 12px;
  border: 1px solid #dce8f8;
  border-radius: 10px;
  background: #f6faff;
  color: #475569;
  font-size: 13px;
  line-height: 1.45;
  display: flex;
  align-items: flex-start;
  gap: 8px;
}

.step-overlap-note i {
  color: #0071e3;
  margin-top: 1px;
  flex: 0 0 auto;
}

.section-eyebrow {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #0071e3;
  margin-bottom: 12px;
}

.section-heading {
  font-size: 42px;
  font-weight: 700;
  letter-spacing: 0;
  color: #1d1d1f;
  margin-bottom: 36px;
}

/* Step cards */
.step-card {
  background: #fff;
  border: 1px solid #e5e5ea;
  border-radius: 16px;
  padding: 28px 24px;
  margin-bottom: 18px;
  box-shadow: 0 2px 18px rgba(0,0,0,0.045);
}

/* Step 1 has an autocomplete dropdown that must escape its card */
.step-card:has(.autocomplete-wrapper) {
  position: relative;
  z-index: 10;
}

.step-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: #0071e3;
  color: #fff;
  font-size: 14px;
  font-weight: 600;
  margin-bottom: 14px;
}

.step-title {
  font-size: 20px;
  font-weight: 600;
  color: #1d1d1f;
  margin-bottom: 22px;
}

/* Location */
.btn-locate {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  background: #1d1d1f;
  color: #fff;
  border: none;
  border-radius: 980px;
  padding: 13px 26px;
  font-size: 15px;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.2s, transform 0.15s;
  margin-bottom: 6px;
}
.btn-locate:hover { background: #3a3a3c; transform: scale(1.02); }

.loc-status {
  font-size: 14px;
  color: #6e6e73;
  margin-top: 10px;
  margin-bottom: 20px;
  min-height: 20px;
}
.loc-status.ok  { color: #30b55a; }
.loc-status.err { color: #ff3b30; }

/* ── Location mode toggle ─────────────────────────────────────── */
.mode-toggle {
  display: flex;
  background: #e5e5ea;
  border-radius: 13px;
  padding: 4px;
  gap: 3px;
  margin-bottom: 24px;
}

.mode-btn {
  flex: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: transparent;
  border: none;
  border-radius: 10px;
  padding: 12px 20px;
  font-size: 15px;
  font-weight: 500;
  color: #6e6e73;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.18s, color 0.18s, box-shadow 0.18s;
}
.mode-btn.active {
  background: #fff;
  color: #1d1d1f;
  box-shadow: 0 2px 8px rgba(0,0,0,0.12);
}

/* ── Autocomplete ─────────────────────────────────────────────── */
.autocomplete-wrapper { position: relative; }

.autocomplete-dropdown {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  left: 0; right: 0;
  background: #fff;
  border: 1px solid #e5e5ea;
  border-radius: 16px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.12);
  overflow: hidden;
  z-index: 100;
}

.ac-item {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 13px 16px;
  cursor: pointer;
  border-bottom: 1px solid #f2f2f7;
  transition: background 0.12s;
}
.ac-item:last-child { border-bottom: none; }
.ac-item:hover      { background: #f5f5f7; }

.ac-item-icon { color: #aeaeb2; font-size: 15px; flex-shrink: 0; }
.ac-item-main { font-size: 14px; font-weight: 500; color: #1d1d1f; }
.ac-item-sub  { font-size: 12px; color: #6e6e73; margin-top: 2px; }

.ac-no-result {
  padding: 18px 16px;
  text-align: center;
  font-size: 14px;
  color: #aeaeb2;
}

/* ── Confirmed location badge ─────────────────────────────────── */
.loc-confirmed {
  display: flex;
  align-items: center;
  gap: 9px;
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  border-radius: 11px;
  padding: 11px 14px;
  margin-top: 10px;
  font-size: 14px;
  font-weight: 500;
  color: #15803d;
}

.loc-clear-btn {
  margin-left: auto;
  background: none;
  border: none;
  color: #6e6e73;
  cursor: pointer;
  font-size: 14px;
  padding: 2px 8px;
  border-radius: 6px;
  transition: background 0.15s;
  font-family: inherit;
}
.loc-clear-btn:hover { background: #dcfce7; }

/* Both mode panels stay the same height so the card doesn't jump on toggle */
#nearMePanel, #explorePanel { min-height: 135px; }

.a-input {
  width: 100%;
  background: #f5f5f7;
  border: 1.5px solid transparent;
  border-radius: 11px;
  padding: 13px 16px;
  font-size: 15px;
  color: #1d1d1f;
  outline: none;
  transition: border-color 0.2s, background 0.2s;
  font-family: inherit;
}
.a-input:focus { background: #fff; border-color: #0071e3; }
.a-input::placeholder { color: #aeaeb2; }

/* ── Category tabs ────────────────────────────────────────────── */
.cat-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 18px;
}

.cat-tab {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: transparent;
  border: 1.5px solid #e5e5ea;
  border-radius: 980px;
  padding: 7px 15px;
  font-size: 13px;
  font-weight: 500;
  color: #6e6e73;
  cursor: pointer;
  font-family: inherit;
  transition: border-color 0.15s, background 0.15s, color 0.15s;
}
.cat-tab:hover  { border-color: #c7c7cc; color: #3a3a3c; }
.cat-tab.active { background: #1d1d1f; border-color: #1d1d1f; color: #fff; }

/* Place type grid */
.type-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(108px, 1fr));
  gap: 10px;
}

.type-tile {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 16px 6px 14px;
  border-radius: 15px;
  border: 2px solid #e5e5ea;
  background: #fff;
  cursor: pointer;
  user-select: none;
  transition: transform 0.18s ease, box-shadow 0.18s ease,
              border-color 0.18s ease, background 0.18s ease;
}
.type-tile:hover {
  transform: scale(1.06);
  box-shadow: 0 6px 22px rgba(0,0,0,0.10);
  border-color: #c7c7cc;
}
.type-tile.chosen {
  border-color: #0071e3;
  background: #f0f6ff;
}

.tile-emoji { font-size: 28px; line-height: 1; margin-bottom: 7px; }

.tile-label {
  font-size: 11px;
  font-weight: 500;
  color: #3a3a3c;
  text-align: center;
  line-height: 1.3;
}
.type-tile.chosen .tile-label { color: #0071e3; }

/* ── Radius row (value + unit toggle) ─────────────────────────── */
.radius-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 14px;
}

.radius-value {
  font-size: 19px;
  font-weight: 700;
  color: #0071e3;
}

.unit-toggle {
  display: inline-flex;
  background: #e5e5ea;
  border-radius: 9px;
  padding: 3px;
  gap: 2px;
}

.unit-btn {
  background: transparent;
  border: none;
  border-radius: 7px;
  padding: 5px 14px;
  font-size: 13px;
  font-weight: 500;
  color: #6e6e73;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s, color 0.15s, box-shadow 0.15s;
}
.unit-btn.active {
  background: #fff;
  color: #1d1d1f;
  box-shadow: 0 1px 4px rgba(0,0,0,0.14);
}

input[type="range"] {
  width: 100%;
  -webkit-appearance: none;
  height: 4px;
  background: #e5e5ea;
  border-radius: 2px;
  outline: none;
  cursor: pointer;
}
input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #0071e3;
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(0,113,227,0.35);
  transition: transform 0.15s;
}
input[type="range"]::-webkit-slider-thumb:hover { transform: scale(1.18); }

.challenge-wrap {
  margin-top: 16px;
  border: 1px solid #dbe8fb;
  background: #f5f9ff;
  border-radius: 12px;
  padding: 12px;
}

.challenge-label {
  font-size: 13px;
  color: #1f3f70;
  margin-bottom: 8px;
}

.challenge-row {
  display: flex;
  align-items: center;
  gap: 8px;
}

.challenge-input {
  flex: 1;
  min-width: 0;
}

.btn-challenge-refresh {
  width: 38px;
  height: 38px;
  border: 1px solid #c7d9f5;
  background: #fff;
  color: #2d5ea9;
  border-radius: 10px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.btn-challenge-refresh:hover {
  background: #edf4ff;
}

.hp-input {
  position: absolute !important;
  left: -9999px !important;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

/* Search button */
.btn-search {
  width: 100%;
  background: #0071e3;
  color: #fff;
  border: none;
  border-radius: 16px;
  padding: 17px;
  font-size: 17px;
  font-weight: 600;
  cursor: pointer;
  margin-top: 30px;
  letter-spacing: 0;
  transition: background 0.2s, transform 0.15s;
}
.btn-search:hover   { background: #0077ed; }
.btn-search:active  { transform: scale(0.98); }
.btn-search:disabled { background: #aeaeb2; cursor: not-allowed; transform: none; }

.search-status {
  text-align: center;
  font-size: 13px;
  color: #aeaeb2;
  margin-top: 12px;
  min-height: 18px;
  transition: color 0.25s;
  font-variant-numeric: tabular-nums;
}
.search-status.warning  { color: #c07a00; }
.search-status.depleted { color: #c0392b; font-weight: 500; }

/* Loading */
.loading-wrap {
  display: none;
  text-align: center;
  padding: 64px 20px;
}
.spinner {
  width: 46px; height: 46px;
  border: 3.5px solid #e5e5ea;
  border-top-color: #0071e3;
  border-radius: 50%;
  animation: spin 0.75s linear infinite;
  margin: 0 auto 18px;
}
@keyframes spin { to { transform: rotate(360deg); } }
.loading-msg { font-size: 15px; color: #6e6e73; }

/* Error */
.error-wrap {
  background: #fff2f0;
  border: 1px solid #ffc5bf;
  border-radius: 14px;
  padding: 16px 20px;
  color: #c0392b;
  font-size: 15px;
  margin-top: 16px;
  display: none;
}

/* ── Results ──────────────────────────────────────────────────── */
.results-wrap {
  display: none;
  padding: 10px 24px 110px;
  max-width: 1140px;
  margin: 0 auto;
  background: #fff;                  /* opaque so sticky footer can't bleed through */
}

.results-bar {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: 14px;
  margin-bottom: 22px;
}

.results-title {
  font-size: 28px;
  font-weight: 700;
  letter-spacing: 0;
  color: #1d1d1f;
}
.results-sub {
  font-size: 14px;
  color: #6e6e73;
  margin-top: 4px;
}

.results-summary {
  color: #3a3a3c;
  font-size: 15px;
  line-height: 1.5;
  margin-top: 10px;
  max-width: 680px;
}

.dl-group { display: flex; gap: 10px; flex-wrap: wrap; }

.btn-dl {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 10px 20px;
  border-radius: 980px;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  border: none;
  text-decoration: none;
  transition: transform 0.15s, filter 0.15s;
}
.btn-dl:hover { transform: scale(1.03); filter: brightness(0.95); }
.btn-xlsx { background: #e8f4ff; color: #0071e3; }
.btn-csv  { background: #e9f9ed; color: #1a7f4b; }

/* ── Filter bar ───────────────────────────────────────────────── */
.filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  background: #f5f5f7;
  border-radius: 16px;
  padding: 13px 18px;
  margin-bottom: 22px;
}

.filter-eyebrow {
  font-size: 11.5px;
  font-weight: 600;
  color: #aeaeb2;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.filter-select {
  background: #fff;
  border: 1.5px solid #e5e5ea;
  border-radius: 9px;
  padding: 7px 28px 7px 12px;
  font-size: 13px;
  font-weight: 500;
  color: #1d1d1f;
  cursor: pointer;
  outline: none;
  font-family: inherit;
  -webkit-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236e6e73' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
  transition: border-color 0.15s;
}
.filter-select:focus { border-color: #0071e3; }

.filter-sep { width: 1px; height: 22px; background: #d1d1d6; }

.filter-check {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 13px;
  font-weight: 500;
  color: #3a3a3c;
  cursor: pointer;
}
.filter-check input[type="checkbox"] {
  width: 15px; height: 15px;
  accent-color: #0071e3;
  cursor: pointer;
}

/* Table */
.tbl-wrap {
  background: #fff;
  border: 1px solid #e5e5ea;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 2px 18px rgba(0,0,0,0.045);
  overflow-x: auto;
}

table { width: 100%; border-collapse: collapse; font-size: 14px; }

thead th {
  background: #f5f5f7;
  padding: 13px 16px;
  text-align: left;
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #6e6e73;
  border-bottom: 1px solid #e5e5ea;
  white-space: nowrap;
}

/* Sortable column headers */
thead th.sortable {
  cursor: pointer;
  user-select: none;
}
thead th.sortable:hover { color: #0071e3; }
thead th .sort-icon { margin-left: 4px; opacity: 0.4; font-size: 10px; }
thead th.sort-active { color: #0071e3; }
thead th.sort-active .sort-icon { opacity: 1; }

tbody tr {
  border-bottom: 1px solid #f2f2f7;
  transition: background 0.12s;
}
tbody tr:last-child { border-bottom: none; }
tbody tr:hover { background: #f9f9fb; }

td {
  padding: 14px 16px;
  color: #1d1d1f;
  vertical-align: middle;
}

/* Keep phone numbers readable and prevent awkward wraps */
thead th:nth-child(5),
tbody td:nth-child(5) {
  min-width: 92px;
  text-align: center;
}

thead th:nth-child(6),
tbody td:nth-child(6) {
  min-width: 170px;
}

tbody td:nth-child(6) {
  white-space: nowrap;
}

.rating-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: #fffbe6;
  border: 1px solid rgba(255,214,0,0.3);
  border-radius: 20px;
  padding: 4px 10px;
  font-size: 13px;
  font-weight: 600;
  color: #92640a;
  white-space: nowrap;
}

.btn-visit {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: #f5f5f7;
  color: #0071e3;
  border: none;
  border-radius: 20px;
  padding: 6px 14px;
  font-size: 13px;
  font-weight: 500;
  text-decoration: none;
  white-space: nowrap;
  transition: background 0.15s;
}
.btn-visit:hover { background: #ebebf0; }


.no-results-row td {
  text-align: center;
  padding: 48px 20px;
  color: #aeaeb2;
  font-size: 15px;
}

/* ── Excel preview section ───────────────────────────────────────── */
.preview-section {
  padding: 64px 24px;
  background: #fff;
}

/* Landing pages: tint the preview section so 3 white sections don't merge */
.preview-section-alt {
  background: #f5f5f7;
  min-height: 100vh;          /* match home page zoom-reveal height */
  display: flex;
  align-items: center;
  box-sizing: border-box;
}
.preview-section-alt .preview-inner {
  width: 100%;
}
.preview-section-alt .preview-fade {
  background: linear-gradient(to bottom, transparent, #f5f5f7);
}

/* 3-D scroll reveal on landing page preview card */
.preview-section-alt .preview-inner {
  perspective: 1200px;
}
.preview-section-alt .preview-wrap {
  transform-origin: top center;
  will-change: transform, opacity;
}

.preview-inner {
  max-width: 1100px;
  margin: 0 auto;
  text-align: center;
}

.preview-inner > .preview-sub {
  font-size: 18px;
  color: #6e6e73;
  max-width: 520px;
  margin: 0 auto 52px;
  line-height: 1.6;
}

.preview-wrap {
  position: relative;
}

.preview-window {
  border-radius: 16px;
  overflow: hidden;
  box-shadow:
    0 0 0 1px rgba(0,0,0,0.06),
    0 18px 38px rgba(0,0,0,0.26),       /* collapsed from 3 shadows → 1 — same look, ~3× cheaper to repaint */
    0 60px 50px rgba(0,0,0,0.10);
  text-align: left;
  contain: layout paint;                  /* tells browser this is an isolated paint context */
}

.preview-titlebar {
  background: #2c2c2e;
  padding: 11px 16px;
  display: flex;
  align-items: center;
  gap: 6px;
}

.prev-dot {
  width: 12px; height: 12px;
  border-radius: 50%;
  flex-shrink: 0;
}
.prev-dot:nth-child(1) { background: #ff5f57; }
.prev-dot:nth-child(2) { background: #febc2e; }
.prev-dot:nth-child(3) { background: #28c840; }

.prev-filename {
  font-size: 12px;
  color: #8e8e93;
  margin-left: 10px;
  font-family: 'SF Mono', 'Menlo', 'Monaco', monospace;
  letter-spacing: 0.01em;
}

.prev-banner {
  background: #f0f7ff;
  padding: 14px 20px 4px;
  font-size: 17px;
  font-weight: 700;
  color: #1d1d1f;
}

.prev-meta {
  background: #f0f7ff;
  padding: 3px 20px 13px;
  font-size: 11px;
  color: #6e6e73;
  border-bottom: 1px solid #dde6f0;
}

.preview-tbl-wrap { overflow-x: auto; }

/* iOS Safari auto-detects phone numbers, addresses, and emails and renders
   them as blue/underlined links. Neutralise that only inside the sample
   preview — the real results table still benefits from tap-to-call. */
.preview-tbl a[href^="tel:"],
.preview-tbl a[href^="mailto:"],
.preview-tbl a[href^="sms:"],
.preview-tbl a[href*="maps."],
.preview-tbl a[x-apple-data-detectors] {
  color: inherit !important;
  text-decoration: none !important;
  pointer-events: none !important;
  cursor: default !important;
}

.preview-tbl {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  background: #fff;
  min-width: 1160px;
}

.preview-tbl thead th {
  background: #0071e3;
  color: #fff;
  padding: 10px 16px;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  white-space: nowrap;
  text-align: center;
}
.preview-tbl thead th:first-child { text-align: center; padding-left: 16px; }

.preview-tbl tbody tr { border-bottom: 1px solid #dde6f0; }
.preview-tbl tbody tr:last-child { border-bottom: none; }

.preview-tbl tbody td {
  padding: 11px 16px;
  color: #3a3a3c;
  white-space: nowrap;
  text-align: center;
}

/* Give phone numbers a little more breathing room in the preview tables */
.preview-tbl thead th:nth-child(5),
.preview-tbl tbody td:nth-child(5) {
  min-width: 156px;
}

.prev-name {
  text-align: left;
  font-weight: 600;
  color: #1d1d1f;
  padding-left: 16px !important;
  border-left: 3.5px solid #0071e3;
}

.prev-rate-green { color: #1a7f4b; font-weight: 700; }
.prev-rate-blue  { color: #1a56c4; font-weight: 700; }
.prev-rate-amber { color: #c07a00; font-weight: 700; }

.prev-num  { color: #6e6e73; font-variant-numeric: tabular-nums; }
.prev-price {
  color: #3a3a3c;
  font-weight: 600;
  letter-spacing: 0.01em;
}
.prev-link { color: #0071e3; }
.prev-dim  { color: #aeaeb2; }

/* Gradient fade — implies more rows below */
.preview-fade {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 80px;
  background: linear-gradient(to bottom, transparent, #fff);
  border-radius: 0 0 16px 16px;
  pointer-events: none;
}

.preview-dl-hint {
  margin-top: 28px;
  font-size: 14px;
  color: #aeaeb2;
}
.preview-dl-hint a {
  color: #0071e3;
  text-decoration: none;
  font-weight: 500;
}
.preview-dl-hint a:hover { text-decoration: underline; }

/* ── Email footer ─────────────────────────────────────────────── */
.email-footer {
  border-top: 1px solid #f2f2f7;
  margin-top: 18px;
  padding-top: 18px;
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.email-footer-label {
  font-size: 13px;
  font-weight: 500;
  color: #6e6e73;
  white-space: nowrap;
}

.email-footer .a-input {
  flex: 1;
  min-width: 160px;
  max-width: 240px;
}

.attach-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: #f5f5f7;
  border: 1.5px solid #e5e5ea;
  border-radius: 980px;
  padding: 6px 13px;
  font-size: 13px;
  font-weight: 500;
  color: #3a3a3c;
  cursor: pointer;
  white-space: nowrap;
  transition: border-color 0.15s, background 0.15s;
}
.attach-pill:has(input:checked) {
  border-color: #0071e3;
  background: #f0f6ff;
  color: #0071e3;
}
.attach-pill input[type="checkbox"] {
  width: 13px; height: 13px;
  accent-color: #0071e3;
  cursor: pointer;
}

.btn-email-send {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  background: #0071e3;
  color: #fff;
  border: none;
  border-radius: 980px;
  padding: 10px 22px;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  white-space: nowrap;
  transition: background 0.2s;
}
.btn-email-send:hover    { background: #0077ed; }
.btn-email-send:disabled { background: #aeaeb2; cursor: not-allowed; }

.email-msg     { font-size: 13px; width: 100%; }
.email-msg.ok  { color: #30b55a; }
.email-msg.err { color: #ff3b30; }

/* ── Download modal ───────────────────────────────────────────── */
.dl-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.35);
  z-index: 500;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 20px;
  opacity: 0;
  transition: opacity 0.2s ease;
}
.dl-overlay.open { opacity: 1; }

.dl-modal {
  background: #fff;
  border-radius: 22px;
  padding: 32px 28px 26px;
  max-width: 360px;
  width: 100%;
  box-shadow: 0 24px 64px rgba(0,0,0,0.18);
  transform: scale(0.95) translateY(8px);
  transition: transform 0.2s ease;
}
.dl-overlay.open .dl-modal { transform: scale(1) translateY(0); }

.dl-modal-icon {
  width: 52px; height: 52px;
  border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  font-size: 26px;
  margin-bottom: 16px;
}
.dl-modal-icon.xlsx { background: #e8f4ff; }
.dl-modal-icon.csv  { background: #e9f9ed; }

.dl-modal-title {
  font-size: 19px;
  font-weight: 700;
  color: #1d1d1f;
  letter-spacing: 0;
  margin-bottom: 4px;
}

.dl-modal-filename {
  font-size: 13px;
  font-family: 'SF Mono', 'Menlo', 'Monaco', monospace;
  color: #6e6e73;
  margin-bottom: 10px;
}

.dl-modal-meta {
  font-size: 14px;
  color: #3a3a3c;
  line-height: 1.5;
  padding: 12px 14px;
  background: #f5f5f7;
  border-radius: 11px;
  margin-bottom: 22px;
}

.dl-modal-actions {
  display: flex;
  gap: 10px;
}

.btn-dl-cancel {
  flex: 1;
  background: #f5f5f7;
  color: #1d1d1f;
  border: none;
  border-radius: 11px;
  padding: 13px;
  font-size: 15px;
  font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s;
}
.btn-dl-cancel:hover { background: #e5e5ea; }

.btn-dl-confirm {
  flex: 2;
  background: #0071e3;
  color: #fff;
  border: none;
  border-radius: 11px;
  padding: 13px;
  font-size: 15px;
  font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  transition: background 0.15s;
}
.btn-dl-confirm:hover { background: #0077ed; }

/* ── Info modal (Privacy / About) ───────────────────────────────── */
.info-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.62);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  z-index: 1000;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 20px;
  opacity: 0;
  transition: opacity 0.2s ease;
}
.info-overlay.open { opacity: 1; }

.info-modal {
  background: #fff;
  border-radius: 22px;
  padding: 32px 28px 28px;
  max-width: 400px;
  width: 100%;
  box-shadow: 0 24px 64px rgba(0,0,0,0.18);
  transform: scale(0.95) translateY(8px);
  transition: transform 0.2s ease;
  position: relative;
}
.info-overlay.open .info-modal { transform: scale(1) translateY(0); }

.info-close {
  position: absolute;
  top: 12px;
  right: 12px;
  background: #f5f5f7;
  border: none;
  border-radius: 50%;
  width: 36px;
  height: 36px;
  font-size: 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #1d1d1f;
  font-family: inherit;
  transition: background 0.15s;
}
.info-close:hover { background: #e5e5ea; }

.info-modal-icon  { font-size: 34px; margin-bottom: 12px; }
.info-modal-title { font-size: 20px; font-weight: 700; color: #1d1d1f;
                    letter-spacing: 0; margin-bottom: 12px; }
.info-modal-body  { font-size: 14px; color: #3a3a3c; line-height: 1.65; }

/* ── Trust & About section ────────────────────────────────────── */
.trust-section {
  background: #f5f5f7;
  padding: 80px 24px;
}

.faq-section {
  background: #fff;
  padding: 64px 24px;
  content-visibility: auto;             /* skip render until near viewport */
  contain-intrinsic-size: 0 700px;      /* reserves space so scrollbar doesn't jump */
}

.faq-inner {
  max-width: 980px;
  margin: 0 auto;
  text-align: center;
}

.faq-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  text-align: left;
}

.faq-item {
  border: 1px solid #e5e5ea;
  border-radius: 16px;
  padding: 28px 24px;
  background: #fff;
  box-shadow: 0 2px 18px rgba(0,0,0,0.045);
}

.faq-item h3 {
  font-size: 16px;
  font-weight: 650;
  color: #1d1d1f;
  margin-bottom: 8px;
}

.faq-item p {
  font-size: 14px;
  color: #6e6e73;
  line-height: 1.55;
}

.trust-inner {
  max-width: 860px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 40px;
}

.trust-item h4 {
  font-size: 16px;
  font-weight: 600;
  color: #1d1d1f;
  margin-bottom: 10px;
}

.trust-item p {
  font-size: 14px;
  color: #6e6e73;
  line-height: 1.6;
}

.loc-trust {
  display: block;
  font-size: 12px;
  color: #aeaeb2;
  margin-top: 8px;
}

.email-trust {
  font-size: 12px;
  color: #aeaeb2;
  width: 100%;
  margin-top: 4px;
}

.results-attribution {
  margin: 10px 0 14px;
  color: #86868b;
  font-size: 12px;
  line-height: 1.5;
}

.results-attribution a {
  color: #6e6e73;
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* ── Dark reveal zone ─────────────────────────────────────────────── */
.dark-reveal-zone {
  background: #111;
}

/*
 * Every content section must be a positioned element with z-index > 0
 * so it paints ABOVE the sticky footer (z-index: 0).
 * Non-positioned elements paint below any positioned element regardless
 * of DOM order, which causes the footer to bleed through.
 */
main,
.hero,
.zoom-reveal-outer,
.faq-section,
.results-section,
.results-wrap {
  position: relative;
  z-index: 1;
}

/* Full-width white shield so sticky dark footer can't bleed through
   the sides of the centred results-wrap on wide screens */
.results-section {
  background: #fff;
}

/* ── Site footer ──────────────────────────────────────────────────── */
.site-footer {
  position: sticky;
  bottom: 0;
  z-index: 0;                            /* sits behind the content card above */
  background: #111;
  padding: 64px 48px 36px;
  color: rgba(255,255,255,0.5);
  font-size: 14px;
  contain: paint;
}


.footer-main {
  max-width: 1120px;
  margin: 0 auto;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding-bottom: 56px;
}

.footer-brand-col {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.footer-wordmark {
  font-size: 17px;
  font-weight: 700;
  color: #fff;
  letter-spacing: -0.3px;
}

.footer-tagline {
  font-size: 14px;
  color: rgba(255,255,255,0.38);
  line-height: 1.55;
}

.footer-nav {
  display: flex;
  gap: 72px;
}

.footer-nav-col {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.footer-nav-col a {
  font-size: 15px;
  color: rgba(255,255,255,0.72);
  text-decoration: none;
  transition: color 0.15s;
}

.footer-nav-col a:hover { color: #fff; }

.footer-divider {
  max-width: calc(100% - 96px);
  margin: 0 auto;
  border: none;
  border-top: 1px solid rgba(255,255,255,0.08);
}

.footer-bottom {
  max-width: 1120px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 24px 0 0;
  font-size: 12px;
  color: rgba(255,255,255,0.28);
}

.footer-bottom-links {
  display: flex;
  gap: 24px;
}

.footer-bottom-links a {
  color: rgba(255,255,255,0.28);
  text-decoration: none;
  transition: color 0.15s;
}

.footer-bottom-links a:hover { color: rgba(255,255,255,0.55); }

/* ── Policy pages ─────────────────────────────────────────────────── */
.policy-wrap {
  max-width: 1000px;
  margin: 0 auto;
  padding: 40px 20px 70px;
}

.policy-inner {
  max-width: 760px;
  margin: 0 auto;
  background: #fff;
  border: 1px solid #e5e5ea;
  border-radius: 16px;
  padding: 28px 26px;
}

.policy-inner h1 {
  margin: 0 0 14px;
  font-size: 34px;
}

.policy-inner h2 {
  margin: 26px 0 8px;
  font-size: 21px;
}

.policy-inner p {
  margin: 0 0 12px;
  color: #3a3a3c;
  line-height: 1.65;
}

@media (max-width: 780px) {
  .use-case-grid { grid-template-columns: repeat(2, 1fr); }
  .faq-grid { grid-template-columns: repeat(2, 1fr); }
  .landing-use-list { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 720px) {
  .policy-wrap { padding: 28px 16px 52px; }
  .policy-inner { padding: 20px 16px; }
  .policy-inner h1 { font-size: 29px; }
  .policy-inner h2 { font-size: 19px; }
}

/* Responsive */
@media (max-width: 600px) {
  .mini-nav-inner { padding: 8px 12px; }
  .mini-brand { font-size: 13px; }
  .mini-btn { padding: 6px 10px; font-size: 11px; }
  .coord-row { grid-template-columns: 1fr; }
  .hero h1 { font-size: 34px; line-height: 1.08; margin-bottom: 18px; }
  .landing-hero h1 { font-size: 34px; }
  .landing-lede { font-size: 17px; }
  .landing-section { padding: 48px 20px; }
  .landing-sheet-fields ul { grid-template-columns: 1fr 1fr; }
  .hero p { font-size: 17px; }
  .section-heading { font-size: 30px; }
  .preview-inner > .preview-sub { font-size: 15px; }
  .results-bar { flex-direction: column; }

  .example-searches { padding: 24px 20px; }
  .example-chip-row { grid-template-columns: repeat(2, 1fr); }
  .tool-wrap { padding: 42px 16px 32px; }
  .tool-wrap::before { inset: 14px 0 0; border-radius: 20px; }
  .hero { padding-top: 64px; }
  .hero-actions { align-items: stretch; }
  .btn-cta, .btn-secondary { justify-content: center; width: 100%; }
  .filter-sep { display: none; }
  .use-case-grid { grid-template-columns: 1fr; }
  .faq-grid { grid-template-columns: 1fr; }
  .landing-use-list { grid-template-columns: 1fr; }

  /* Hide Reviews column on small screens (col 3) */
  thead th:nth-child(3),
  tbody td:nth-child(3) { display: none; }

  /* Truncate long addresses so they don't blow out the layout */
  tbody td:nth-child(5) {
    max-width: 140px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
}


/* ══════════════════════════════════════════════════════════════════════
   GLOBE HERO
   ══════════════════════════════════════════════════════════════════════ */

/* Dark full-viewport hero ─────────────────────────────────────────── */
.hero-globe {
  position: relative;
  min-height: 100vh;
  background: linear-gradient(158deg, #060a12 0%, #0c1829 46%, #091623 100%);
  overflow: hidden;
  padding: 130px 24px 110px;
}

/* Override light-mode text colours */
.hero-globe h1                { color: #eef2ff; }
.hero-globe .hero-line-accent { color: #5b9cf6; }
.hero-globe p                 { color: rgba(200,215,255,0.62); }

/* Blue CTA to match dark palette */
.hero-globe .btn-cta       { background: #3b82f6; }
.hero-globe .btn-cta:hover { background: #2563eb; }


/* Globe canvas wrapper ────────────────────────────────────────────── */
.globe-wrap {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  z-index: 0;
  will-change: opacity, transform;
}
.globe-wrap canvas { opacity: 0.52; }

/* Soft radial vignette: blends globe into background */
.globe-vignette {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: radial-gradient(ellipse 74% 64% at 50% 50%,
    transparent 0%,
    rgba(6,10,18,0.55) 55%,
    #060a12 78%);
}


/* Text floats above globe ─────────────────────────────────────────── */
.hero-globe .hero-content {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  will-change: opacity, transform;
}

/* Pill eyebrow */
.hero-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 11.5px;
  font-weight: 500;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: rgba(140,170,255,0.72);
  border: 1px solid rgba(80,130,255,0.22);
  border-radius: 40px;
  padding: 5px 15px;
  margin-bottom: 28px;
}


/* Scroll hint ─────────────────────────────────────────────────────── */
.scroll-hint {
  position: absolute;
  bottom: 34px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  will-change: opacity;
}
.scroll-hint-dot {
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: rgba(130,160,255,0.5);
}
.scroll-hint-line {
  width: 1px;
  height: 42px;
  background: linear-gradient(to bottom, rgba(100,148,255,0.55), transparent);
  animation: scrollPulse 2.3s ease-in-out infinite;
}
@keyframes scrollPulse {
  0%, 100% { opacity: 0.38; transform: scaleY(1); }
  55%       { opacity: 0.9;  transform: scaleY(1.18); }
}


/* Mobile ──────────────────────────────────────────────────────────── */
@media (max-width: 600px) {
  /* min-height keeps enough vertical space for the 460px globe canvas
     (set in the cobe init JS) — collapsing the hero hides the globe. */
  .hero-globe   { padding: 72px 20px 64px; min-height: 78vh; }
  .hero-eyebrow { font-size: 10.5px; }
  .hero-globe p { font-size: 15px; margin-bottom: 26px; }
}

@media (prefers-reduced-motion: reduce) {
  .scroll-hint-line { animation: none; }
  .hero-rotate-anim { animation: none; }
}


/* ══════════════════════════════════════════════════════════════════════
   ROTATING PHRASE ANIMATION
   ══════════════════════════════════════════════════════════════════════ */

@keyframes phraseSlideIn {
  from {
    opacity:   0;
    transform: translateY(0.45em);
  }
  to {
    opacity:   1;
    transform: translateY(0);
  }
}

@keyframes phraseSlideInRich {
  from {
    opacity:   0;
    transform: translateY(0.45em);
    filter:    blur(6px);
  }
  to {
    opacity:   1;
    transform: translateY(0);
    filter:    blur(0);
  }
}

/* Applied and re-applied via JS to restart animation each cycle */
.hero-rotate-anim {
  display:   inline-block;
  animation: phraseSlideIn 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
}

html.fx-rich .hero-rotate-anim {
  animation-name: phraseSlideInRich;
}


/* ══════════════════════════════════════════════════════════════════════
   ZOOM-REVEAL BRIDGE  (hero → preview)
   ══════════════════════════════════════════════════════════════════════ */

.zoom-reveal-outer {
  background: #060a12;               /* matches hero vignette edge colour */
  min-height: 100vh;                 /* dark bg fills viewport so card looks full-size */
  contain:    layout paint;          /* outer's paint stays inside itself */
  /* No translateZ here — the card below is already its own GPU layer; */
  /* a second layer here just doubles GPU memory for no compositing win. */
}

.zoom-reveal-card {
  width:       100%;
  min-height:  100vh;                /* card fills viewport when fully open */
  contain:     layout paint;         /* isolate paint from outer document */
  clip-path:   inset(0 0 round 0);
}

/* Keep the expanding-box effect, but animate as a transition (no scroll scrubbing). */
.zoom-expand-enabled .zoom-reveal-card {
  clip-path:  inset(52px 68px round 26px);
  opacity: 1;
  transition:
    clip-path 720ms cubic-bezier(0.22, 1, 0.36, 1),
    opacity 220ms ease;
}

.zoom-expand-enabled .zoom-reveal-card.is-open {
  clip-path: inset(0 0 round 0);
}

.zoom-expand-enabled .zoom-reveal-card.is-animating {
  will-change: clip-path;
  transform: translateZ(0);
}

/* Very light reverse cue when scrolling back up (cheap compositor-only fade). */
.zoom-expand-enabled .zoom-reveal-card.is-reverse-cue {
  opacity: 0.94;
}

/* Smaller inset on phones so the framed card doesn't pinch to a sliver. */
@media (max-width: 600px) {
  .zoom-expand-enabled .zoom-reveal-card {
    clip-path: inset(28px 18px round 18px);
  }
}

/* Preview section inside the zoom card: stretch to fill the card */
#zoomRevealCard .preview-section {
  min-height:  100vh;
  display:     flex;
  align-items: center;
  box-sizing:  border-box;
}
#zoomRevealCard .preview-inner {
  width: 100%;
}
