:root {
    --ink: #0A0A0A;
    --ink-700: #404040;
    --ink-600: #525252;
    --ink-500: #737373;
    --ink-400: #A3A3A3;
    --ink-300: #D4D4D4;
    --ink-200: #E5E5E5;
    --ink-100: #F5F5F5;
    --ink-50: #FAFAFA;
  }
  * { box-sizing: border-box; margin: 0; padding: 0; }
  html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
  body {
    background: white; color: var(--ink);
    font-family: 'Inter', system-ui, sans-serif;
    line-height: 1.5;
    font-feature-settings: 'cv11', 'ss01', 'ss03';
    text-rendering: optimizeLegibility;
  }
  ::selection { background: var(--ink); color: white; }
  h1, h2, h3, h4 { font-family: 'Inter', sans-serif; font-weight: 500; letter-spacing: -0.025em; }
  a { color: inherit; text-decoration: none; }

  .container { max-width: 1200px; margin: 0 auto; padding: 0 2rem; }
  .container-narrow { max-width: 720px; margin: 0 auto; padding: 0 2rem; }

  /* Nav */
  /* Nav: full-width, fixed at top, transparent over hero. Smart-header behavior:
     hides on scroll-down, reappears on scroll-up. JS toggles .is-scrolled & .is-hidden. */
  .nav {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    z-index: 50;
    background: transparent;
    border-bottom: 1px solid transparent;
    transform: translateY(0);
    transition:
      transform 0.35s cubic-bezier(0.4, 0, 0.2, 1),
      background 0.3s ease,
      border-color 0.3s ease,
      backdrop-filter 0.3s ease;
    will-change: transform;
  }
  .nav.is-hidden {
    transform: translateY(-100%);
  }
  .nav.is-scrolled {
    background: rgba(255, 255, 255, 0.78);
    backdrop-filter: blur(20px) saturate(160%);
    -webkit-backdrop-filter: blur(20px) saturate(160%);
    border-bottom-color: rgba(10, 10, 10, 0.06);
  }
  .nav-inner {
    display: flex;
    height: 64px;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    /* container class handles max-width 1200px + horizontal centering */
  }
  /* Nav links: white over hero, dark when scrolled */
  .nav .nav-link { color: rgba(255, 255, 255, 0.85); transition: color 0.3s; }
  .nav .nav-link:hover { color: white; }
  .nav.is-scrolled .nav-link { color: var(--ink-600); }
  .nav.is-scrolled .nav-link:hover { color: var(--ink); }
  /* Sign in: plain text, no chrome */
  .nav-signin { font-size: 0.875rem; line-height: 1; }
  /* CTA: glass pill on dark hero, dark pill when scrolled */
  .nav .nav-cta {
    color: white !important;
    background: rgba(255, 255, 255, 0.10);
    backdrop-filter: blur(14px) saturate(150%);
    -webkit-backdrop-filter: blur(14px) saturate(150%);
    border: 1px solid rgba(255, 255, 255, 0.25);
    border-radius: 9999px;
    padding: 0.5rem 1rem;
    font-size: 0.875rem;
    line-height: 1;
    font-weight: 500;
    transition: background 0.3s, border-color 0.3s, color 0.3s;
  }
  .nav .nav-cta:hover {
    background: rgba(255, 255, 255, 0.18);
    border-color: rgba(255, 255, 255, 0.4);
  }
  .nav.is-scrolled .nav-cta {
    background: var(--ink-50) !important;
    color: var(--ink) !important;
    border-color: var(--ink-200);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
  .nav.is-scrolled .nav-cta:hover {
    background: var(--ink-100) !important;
    border-color: var(--ink-300);
  }

  .nav-right { display: flex; align-items: center; gap: 1rem; }
  .nav-signin {
    color: rgba(255, 255, 255, 0.85) !important;
    font-size: 0.875rem;
    line-height: 1;
    transition: color 0.3s;
  }
  .nav-signin:hover { color: white !important; }
  .nav.is-scrolled .nav-signin {
    color: var(--ink-600) !important;
  }
  .nav.is-scrolled .nav-signin:hover { color: var(--ink) !important; }


  /* Logo: white over hero, switches via JS */
  .nav .wordmark img { transition: filter 0.3s; }
  .nav.is-scrolled .wordmark img { filter: brightness(0); }
  .wordmark {
    display: inline-flex;
    align-items: center;
    color: var(--ink);
    line-height: 0;
  }
  .wordmark img {
    height: 30px;
    width: auto;
    display: block;
  }
  .footer-brand .wordmark img {
    height: 26px;
  }
  .nav-links { display: flex; align-items: center; gap: 2rem; }
  .nav-link { font-size: 0.875rem; line-height: 1; color: var(--ink-600); transition: color 0.15s; }
  .nav-link:hover { color: var(--ink); }

  /* Buttons - very clean */
  .btn-primary {
    display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
    border-radius: 0.625rem;
    background: var(--ink); color: white;
    padding: 0.625rem 1.125rem;
    font-size: 0.875rem; font-weight: 500;
    transition: all 0.15s; cursor: pointer; border: none;
  }
  .btn-primary:hover { background: var(--ink-700); }
  .btn-secondary {
    display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
    border-radius: 0.625rem;
    background: white; color: var(--ink);
    border: 1px solid var(--ink-200);
    padding: 0.625rem 1.125rem;
    font-size: 0.875rem; font-weight: 500;
    transition: all 0.15s; cursor: pointer;
  }
  .btn-secondary:hover { border-color: var(--ink); }
  .btn-large { padding: 0.75rem 1.5rem; font-size: 0.9375rem; }
  .btn-ghost {
    display: inline-flex; align-items: center; gap: 0.375rem;
    font-size: 0.875rem; font-weight: 500; color: var(--ink-700);
    transition: color 0.15s;
  }
  .btn-ghost:hover { color: var(--ink); }

  /* Eyebrow */
  .eyebrow {
    font-size: 0.75rem; font-weight: 500;
    text-transform: uppercase; letter-spacing: 0.12em;
    color: var(--ink-500);
  }

  /* Display sizes - bigger and lighter */
  .display-2xl { font-size: clamp(2.25rem, 5vw, 3.75rem); line-height: 1.05; letter-spacing: -0.035em; font-weight: 500; }
  .display-xl { font-size: clamp(1.625rem, 3.25vw, 2.5rem); line-height: 1.1; letter-spacing: -0.03em; font-weight: 500; }
  .display-lg { font-size: clamp(1.5rem, 2.5vw, 2rem); line-height: 1.15; letter-spacing: -0.025em; font-weight: 500; }
  .display-md { font-size: clamp(1.25rem, 2vw, 1.625rem); line-height: 1.2; letter-spacing: -0.02em; font-weight: 500; }


  /* Powered by Claude pill */
  .powered-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    background: var(--ink-100);
    border-radius: 9999px;
    padding: 0.3rem 0.8rem 0.3rem 0.75rem;
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--ink);
  }
  .powered-text { color: var(--ink); line-height: 1; }
  .claude-logo {
    height: 13px;
    width: auto;
    display: inline-flex;
    align-items: center;
  }
  .claude-logo svg {
    height: 13px;
    width: auto;
    display: block;
  }

  /* Hero - massive whitespace */
  .hero {
    position: relative;
    overflow: hidden;
    background: #0a0d12; /* deep navy fallback so layout never flashes white */
    isolation: isolate;
    min-height: 100vh;
    display: flex;
    align-items: center;
    padding: 7rem 0 3rem;
  }
  @media (min-width: 1024px) {
    .hero { padding: 8rem 0 4rem; }
  }
  /* Override the standard .container constraints inside the hero so its content
     edges line up exactly with the nav pill's inner content edges (Lanten wordmark / Book a demo). */
  .hero > .container {
    width: calc(100% - 2rem);
    max-width: 1180px;
    padding: 0 1.25rem;
  }

  /* Background video — covers entire hero, behind everything */
  .hero-bg-video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 1;             /* sit ABOVE the fallback gradient once loaded */
    /* Slightly desaturated + dimmed so bubbles read clearly */
    filter: brightness(0.8) saturate(0.95);
  }

  /* Fallback gradient — always rendered behind the video (visible if video fails or while loading).
     Moody warm/teal scene that suggests depth + atmosphere, looks intentional on its own. */
  .hero-bg-fallback {
    position: absolute;
    inset: 0;
    z-index: 0;             /* below the video — only visible while it loads or if it fails */
    background: linear-gradient(135deg, #2a2520 0%, #3d3530 50%, #4a3f38 100%);
    background-size: cover;
    background-position: center;
    /* Slight desaturate + dim so bubbles + headline read clearly without losing the image's mood */
    filter: brightness(0.8) saturate(0.95);
  }

  /* Dark overlay on top of video, biased to the left where the headline sits */
  .hero-bg-overlay {
    position: absolute;
    inset: 0;
    z-index: 2;             /* above the video so its dimming applies */
    background:
      linear-gradient(90deg, rgba(8, 10, 14, 0.75) 0%, rgba(8, 10, 14, 0.42) 45%, rgba(8, 10, 14, 0.18) 100%),
      linear-gradient(180deg, rgba(8, 10, 14, 0.32) 0%, transparent 25%, transparent 75%, rgba(8, 10, 14, 0.38) 100%);
    pointer-events: none;
  }

  /* Make the grid sit above the bg layers */
  .hero-grid {
    position: relative;
    z-index: 3;            /* above the dimming overlay (which is z-index: 2) */
  }

  .hero h1 { margin-top: 1.25rem; max-width: 900px; color: white; }
  .hero h1 .muted-light { color: rgba(255, 255, 255, 0.55); }
  .hero-sub-light {
    margin-top: 1.5rem;
    font-size: 1.0625rem;
    color: rgba(255, 255, 255, 0.78);
    max-width: 540px;
    line-height: 1.55;
    font-weight: 400;
  }
  .hero-ctas { margin-top: 2rem; display: flex; flex-wrap: wrap; gap: 0.625rem; align-items: center; }
  .hero-meta-light {
    margin-top: 2.5rem;
    display: flex; flex-wrap: wrap; align-items: center; gap: 1.25rem;
    font-size: 0.875rem; color: rgba(255, 255, 255, 0.65);
  }
  .hero-divider-light { width: 1px; height: 12px; background: rgba(255, 255, 255, 0.25); }

  /* Powered-by-Claude pill — glass style on dark */
  .powered-pill-dark {
    background: rgba(255, 255, 255, 0.08);
    backdrop-filter: blur(16px) saturate(140%);
    -webkit-backdrop-filter: blur(16px) saturate(140%);
    border: 1px solid rgba(255, 255, 255, 0.18);
    color: white;
  }
  .powered-pill-dark .powered-text { color: rgba(255, 255, 255, 0.85); }
  .powered-pill-dark .claude-logo { filter: brightness(0) invert(1); }

  /* Primary CTA on dark — inverted to white background */
  .btn-primary-light {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    background: white;
    color: var(--ink);
    padding: 0.75rem 1.25rem;
    border-radius: 9999px;
    font-weight: 500;
    font-size: 0.9375rem;
    transition: transform 0.15s, background 0.15s;
    border: 1px solid white;
  }
  .btn-primary-light:hover { background: rgba(255, 255, 255, 0.92); transform: translateY(-1px); }

  /* Secondary "glass" CTA — translucent over video */
  .btn-glass {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    background: rgba(255, 255, 255, 0.08);
    backdrop-filter: blur(16px) saturate(140%);
    -webkit-backdrop-filter: blur(16px) saturate(140%);
    color: white;
    padding: 0.75rem 1.25rem;
    border-radius: 9999px;
    font-weight: 500;
    font-size: 0.9375rem;
    border: 1px solid rgba(255, 255, 255, 0.22);
    transition: background 0.15s, border-color 0.15s, transform 0.15s;
  }
  .btn-glass:hover {
    background: rgba(255, 255, 255, 0.14);
    border-color: rgba(255, 255, 255, 0.35);
    transform: translateY(-1px);
  }

  /* Hero grid layout */
  .hero-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 4rem;
    align-items: center;
  }
  @media (min-width: 1024px) {
    .hero-grid {
      grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
      gap: 3rem;
      align-items: stretch;
    }
    /* Center the headline content within the left column even though the right
       column now stretches to full hero height. align-items: flex-start prevents
       children (like the Powered by Claude pill) from stretching to full column width. */
    .hero-left { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; }
  }
  .hero-left { position: relative; z-index: 2; }

  /* Right column — outer wrapper. Stretches with the grid row but its own
     content (the inner fixed-height stream) doesn't grow, so bubble add/remove
     can't shift the hero's layout. */
  .hero-right {
    position: relative;
    height: 100%;
    min-height: 540px;
    display: flex;
    align-items: flex-end;
    justify-content: flex-end;
    /* Don't let any descendant push the row taller than expected. */
    min-width: 0;
  }

  /* Inner stage — bubbles flow within this fixed-height frame, stacked from
     the bottom upward and softly fading at the top. */
  .hero-bubble-stream {
    position: relative;
    width: 100%;
    height: 540px;
    max-height: 100%;
    display: flex;
    flex-direction: column-reverse;
    justify-content: flex-start;
    align-items: flex-end;
    gap: 0.75rem;
    overflow: hidden;
    padding-top: 1.5rem;
    -webkit-mask-image: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.4) 18%, black 38%, black 100%);
            mask-image: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.4) 18%, black 38%, black 100%);
    /* Tell the browser this element's size is independent of its content,
       so bubble layout changes can't bubble up to the hero grid. */
    contain: layout size;
  }

  /* Glass bubble — width auto so each one sizes to its own content */
  .hero-bubble {
    position: relative;
    background: rgba(255, 255, 255, 0.10);
    backdrop-filter: blur(18px) saturate(150%);
    -webkit-backdrop-filter: blur(18px) saturate(150%);
    border: 1px solid rgba(255, 255, 255, 0.20);
    border-radius: 1.125rem;
    padding: 0.75rem 1rem 0.875rem;
    width: auto;
    max-width: 88%;
    color: white;
    box-shadow:
      0 1px 0 rgba(255, 255, 255, 0.12) inset,
      0 8px 32px -4px rgba(0, 0, 0, 0.4);
    flex: none;

    /* Default visible state */
    opacity: 1;
    transform: translateY(0);
    transition:
      opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1),
      transform 0.55s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: transform, opacity;
  }
  /* Just-arrived: starts off-screen below + invisible, then animates in */
  .hero-bubble.is-entering {
    opacity: 0;
    transform: translateY(50px);
  }
  /* Faded: topmost visible bubble at half opacity once we hit steady-state of 3 */
  .hero-bubble.is-faded {
    opacity: 0.4;
  }
  /* Leaving: oldest bubble fades out before being removed */
  .hero-bubble.is-leaving {
    opacity: 0;
    transform: translateY(-8px);
  }
  .bubble-meta {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.6875rem;
    color: rgba(255, 255, 255, 0.7);
    margin-bottom: 0.375rem;
    letter-spacing: 0.02em;
  }
  .bubble-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.125rem;
    height: 1.125rem;
    border-radius: 50%;
    color: white;
    font-size: 0.625rem;
    font-weight: 600;
    flex: none;
  }
  .bubble-text {
    font-size: 0.875rem;
    line-height: 1.45;
    color: white;
  }

  

  /* Trust strip */
  .trust { padding: 3rem 0; border-top: 1px solid var(--ink-200); border-bottom: 1px solid var(--ink-200); }
  .trust-inner { display: flex; flex-direction: column; gap: 1.5rem; align-items: center; justify-content: space-between; }
  @media (min-width: 768px) { .trust-inner { flex-direction: row; gap: 2rem; } }
  .trust-label { font-size: 0.8125rem; color: var(--ink-500); }
  .trust-logos { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem 2rem; font-size: 0.9375rem; font-weight: 500; color: var(--ink-700); }
  .trust-divider { color: var(--ink-300); }

  /* Sections - massive whitespace */
  section { padding: 6rem 0; }
  @media (min-width: 768px) { section.tall { padding: 7rem 0; } }

  /* Problem - asymmetric layout */
  .problem-grid { display: grid; gap: 3rem; }
  @media (min-width: 768px) {
    .problem-grid { grid-template-columns: repeat(12, 1fr); gap: 4rem; }
    .problem-left { grid-column: span 5; }
    .problem-right { grid-column: 7 / span 6; }
  }
  .problem-right p { font-size: 1rem; color: var(--ink-600); line-height: 1.7; margin-bottom: 1rem; }
  .problem-right p:last-child { color: var(--ink); font-weight: 500; margin-bottom: 0; }

  /* How it works - just three columns, no backgrounds */
  .how { border-top: 1px solid var(--ink-200); }
  .how-header { max-width: 720px; margin-bottom: 3.5rem; }
  .how-header h2 { margin-top: 0.875rem; }
  .how-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 3rem;
  }
  @media (min-width: 768px) { .how-grid { grid-template-columns: repeat(3, 1fr); gap: 3rem; } }
  .how-step { padding-top: 2rem; border-top: 1px solid var(--ink); }
  .how-step-num { font-size: 0.875rem; font-weight: 500; color: var(--ink); }
  .how-step h3 { margin-top: 1.5rem; font-size: 1.25rem; line-height: 1.3; }
  .how-step p { margin-top: 0.875rem; font-size: 0.9375rem; color: var(--ink-600); line-height: 1.65; }
  .how-cta { margin-top: 4rem; }

  /* Testimonial - centered, restrained */
  .testimonial { text-align: center; }
  .testimonial-eyebrow { font-size: 0.75rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.12em; color: var(--ink-500); }
  .testimonial blockquote {
    margin-top: 1.5rem;
    font-size: clamp(1.25rem, 2.25vw, 1.75rem);
    line-height: 1.25;
    letter-spacing: -0.025em;
    font-weight: 500;
    color: var(--ink);
  }
  .testimonial-attribution {
    margin-top: 2.5rem;
    font-size: 0.875rem;
    color: var(--ink-600);
  }
  .testimonial-name { color: var(--ink); font-weight: 500; }

  /* Pricing teaser */
  .pricing-teaser { border-top: 1px solid var(--ink-200); }
  .pricing-grid { display: grid; gap: 4rem; align-items: center; }
  @media (min-width: 768px) { .pricing-grid { grid-template-columns: repeat(12, 1fr); } }
  .pricing-text { grid-column: span 6; }
  .pricing-card-wrap { grid-column: span 6; }
  .pricing-text p { margin-top: 1.25rem; font-size: 1rem; color: var(--ink-600); line-height: 1.7; }
  .pricing-ctas { margin-top: 2rem; display: flex; flex-wrap: wrap; gap: 0.625rem; align-items: center; }
  .price-card {
    border: 1px solid var(--ink-200);
    border-radius: 1rem;
    padding: 2rem;
    background: white;
  }
  .price-row { display: flex; align-items: baseline; gap: 0.5rem; }
  .price-big { font-size: 3rem; font-weight: 500; line-height: 1; letter-spacing: -0.04em; color: var(--ink); }
  .price-suffix { color: var(--ink-500); font-size: 0.9375rem; }
  .price-meta { margin-top: 0.5rem; font-size: 0.875rem; color: var(--ink-500); }
  .feature-list { margin-top: 2rem; list-style: none; }
  .feature-list li { display: flex; align-items: flex-start; gap: 0.75rem; font-size: 0.9375rem; color: var(--ink-700); margin-bottom: 0.875rem; }
  .feature-list li:last-child { margin-bottom: 0; }
  .feature-check { margin-top: 4px; flex: none; color: var(--ink); }

  /* Final CTA - just text and button */
  .final-cta { padding: 6rem 0; text-align: center; border-top: 1px solid var(--ink-200); }
  .final-cta h2 { max-width: 800px; margin: 0 auto; }
  .final-cta p {
    margin-top: 1.25rem;
    font-size: 1rem;
    color: var(--ink-600);
    max-width: 36rem;
    margin-left: auto; margin-right: auto;
    line-height: 1.6;
  }
  .final-cta-btn { margin-top: 2.5rem; }

  /* Footer - LIGHT, minimal */
  .footer { border-top: 1px solid var(--ink-200); background: white; }
  .footer-inner { padding: 4rem 0 4rem; }
  
/* Problem & Pricing sections — clean two-column with eyebrow + big display headline */
.problem-section,
.pricing-section {
  padding: 5rem 0;
  background: white;
}
.problem-section { border-top: 1px solid var(--ink-200); }

.two-col {
  display: grid;
  gap: 3rem;
  grid-template-columns: 1fr;
}
@media (min-width: 900px) {
  .two-col {
    grid-template-columns: 1fr 1fr;
    gap: 5rem;
  }
}
.two-col-right p {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--ink-700);
  margin: 0 0 1.25rem;
}
.two-col-right p:last-child { margin-bottom: 0; }
.two-col-right .emphasis {
  color: var(--ink);
  font-weight: 500;
  margin-top: 1.5rem;
}
.eyebrow {
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-500);
  margin-bottom: 1rem;
}

/* Pricing-specific */
.pricing-sub {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--ink-700);
  margin: 1.25rem 0 2rem;
  max-width: 32rem;
}
.pricing-actions {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  flex-wrap: wrap;
}
.pricing-link {
  color: var(--ink);
  font-size: 0.9375rem;
  font-weight: 500;
  transition: color 0.15s;
}
.pricing-link:hover { color: var(--ink-600); }

/* Pricing card on the right */
.pricing-card {
  background: var(--ink-50);
  border: 1px solid var(--ink-200);
  border-radius: 1.25rem;
  padding: 2.25rem;
}
.pricing-price {
  display: flex;
  align-items: baseline;
  gap: 0.625rem;
  margin-bottom: 0.5rem;
}
.pricing-amount {
  font-size: 3rem;
  font-weight: 600;
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--ink);
}
.pricing-unit {
  font-size: 1rem;
  color: var(--ink-600);
}
.pricing-annual {
  font-size: 0.875rem;
  color: var(--ink-500);
  margin-bottom: 1.75rem;
}
.pricing-features {
  list-style: none;
  padding: 0;
  margin: 0;
  border-top: 1px solid var(--ink-200);
  padding-top: 1.5rem;
}
.pricing-features li {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0;
  font-size: 0.9375rem;
  color: var(--ink);
}
.pricing-features svg {
  color: var(--ink);
  flex: none;
}

@media (max-width: 899px) {
  .problem-section, .pricing-section { padding: 4rem 0; }
  .pricing-card { padding: 1.75rem; }
  .pricing-amount { font-size: 2.75rem; }
}

.footer-grid { display: grid; gap: 3rem; }
  @media (min-width: 768px) { .footer-grid { grid-template-columns: 2fr repeat(5, 1fr); gap: 3rem; } }
  @media (min-width: 768px) and (max-width: 1099px) {
    .footer-grid { grid-template-columns: repeat(3, 1fr); gap: 2.5rem; }
    .footer-grid .footer-brand { grid-column: 1 / -1; }
  }
  .footer-brand .wordmark { display: block; margin-bottom: 1rem; }
  .footer-tagline { font-size: 0.875rem; color: var(--ink-500); max-width: 18rem; line-height: 1.6; }
  .footer-col-title { font-size: 0.8125rem; font-weight: 500; color: var(--ink); margin-bottom: 1rem; }
  .footer-col li { list-style: none; margin-bottom: 0.75rem; }
  .footer-col a { font-size: 0.875rem; color: var(--ink-500); transition: color 0.15s; }
  .footer-col a:hover { color: var(--ink); }
  .footer-bottom {
    margin-top: 2.25rem; padding-top: 1.5rem;
    border-top: 1px solid var(--ink-200);
    display: flex; flex-direction: column; gap: 0.5rem;
    justify-content: space-between; align-items: center;
    font-size: 0.8125rem; color: var(--ink-500);
  }
  @media (min-width: 640px) { .footer-bottom { flex-direction: row; } }

  /* Hide hamburger on desktop — shown only on screens ≤1023px via the mobile media query below */
.nav .nav-hamburger { display: none !important; }

@media (max-width: 1023px) {
  .nav .nav-hamburger { display: flex !important; }
}

@media (max-width: 1023px) { .nav-links { display: none; } }



  /* Stagger */
  @keyframes fadeUp { 0% { opacity: 0; transform: translateY(12px); } 100% { opacity: 1; transform: translateY(0); } }
  .stagger > * { opacity: 0; animation: fadeUp 0.7s cubic-bezier(0.16, 1, 0.3, 1) forwards; }
  .stagger > *:nth-child(1) { animation-delay: 0.05s; }
  .stagger > *:nth-child(2) { animation-delay: 0.15s; }
  .stagger > *:nth-child(3) { animation-delay: 0.25s; }
  .stagger > *:nth-child(4) { animation-delay: 0.35s; }
  .stagger > *:nth-child(5) { animation-delay: 0.45s; }

/* ============================================================
   MOBILE — Sierra-style: stacked, image-bleed hero, glass bubbles
   below the headline, hamburger nav, tighter nav pill.
   ============================================================ */
@media (max-width: 1023px) {
  /* Nav: flush to the top of the viewport (no floating gap), smaller logo,
     hamburger replaces full menu */
  .nav { top: 0; }
  .nav-inner { height: 56px; padding: 0 0.875rem 0 1rem; }
  .wordmark img { height: 26px; }
  .nav-cta { font-size: 0.8125rem; padding: 0.5rem 0.875rem; }

  .nav-hamburger {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 5px;
    width: 40px;
    height: 40px;
    margin-left: 0.25rem;
    background: transparent;
    border: none;
    cursor: pointer;
    padding: 0;
    border-radius: 999px;
  }
  .nav-hamburger:hover { background: rgba(10, 10, 10, 0.04); }
  .nav-hamburger span {
    width: 20px;
    height: 1.75px;
    background: var(--ink);
    border-radius: 2px;
    display: block;
  }

  /* Hero — let the image breathe and content stack vertically */
  .hero {
    padding: 6rem 0 3rem;
    min-height: auto;
    display: block;
  }
  .hero > .container { padding: 0 1.25rem; }

  .display-2xl {
    font-size: clamp(2.25rem, 7vw, 3rem);
    line-height: 1.05;
  }
  .hero-sub-light {
    font-size: 1rem;
    margin-top: 1.25rem;
  }
  .hero-ctas { margin-top: 1.75rem; gap: 0.5rem; }
  .btn-primary-light, .btn-glass {
    font-size: 0.875rem;
    padding: 0.625rem 1rem;
  }
  .hero-meta-light {
    margin-top: 2rem;
    gap: 0.875rem;
    font-size: 0.8125rem;
    flex-wrap: wrap;
  }

  /* On mobile, the stream is capped to 2 bubbles by the JS (1 visible +
     1 faded above) so the hero stays compact and doesn't run long. The
     frame height is sized to comfortably fit those two. */
  .hero-right {
    min-height: 0;
    margin-top: 2rem;
  }
  .hero-bubble-stream {
    height: 200px;
    gap: 0.625rem;
    padding-top: 0.75rem;
  }
  .hero-bubble {
    max-width: 92%;
    padding: 0.625rem 0.875rem 0.75rem;
  }
  .bubble-text { font-size: 0.875rem; }
}


/* ========== Block 2 (page-specific styles, kept site-wide for now) ========== */



/* HERO + SCROLLY FRAME — the parent that allows position:sticky on the travel bubble */


/* Step 3 — bubble drops down into chat as the first message */
/* Spacer that reserves room where the dropped bubble visually overlays */
.msg-spacer {
  height: 70px;
  flex: none;
}

/* Chat messages — built progressively */
.chat-msg {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  margin-bottom: 0.4rem;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 0.45s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.45s cubic-bezier(0.16, 1, 0.3, 1);
  flex: none;
}
.chat-msg.is-shown { opacity: 1; transform: translateY(0); }
.chat-msg .msg-inner {
  display: inline-block;
  padding: 0.5rem 0.75rem;
  font-size: 0.8125rem;
  line-height: 1.45;
  border-radius: 1rem;
  max-width: 85%;
  word-wrap: break-word;
}
.chat-msg.tenant { align-items: flex-start; }
.chat-msg.tenant .msg-inner {
  background: var(--ink-100);
  color: var(--ink);
  border-bottom-left-radius: 0.25rem;
}
.chat-msg.lanten { align-items: flex-end; }
.chat-msg.lanten .msg-inner {
  background: var(--ink);
  color: white;
  border-bottom-right-radius: 0.25rem;
}
.msg-photo-tag {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.6875rem;
  background: var(--ink-100);
  color: var(--ink-700);
  padding: 0.1875rem 0.5rem;
  border-radius: 0.375rem;
  align-self: flex-start;
}

/* Chat body — overflow hidden blocks user scrolling but allows programmatic auto-scroll. */
.sv2-chat-body {
  display: flex;
  flex-direction: column;
  position: relative;
  overflow: hidden;
  scroll-behavior: smooth;
}

/* Status chip below chat */
.status-chip {
  position: absolute;
  bottom: 4px;          /* sits on the same baseline as .sv2-controls */
  left: 0;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.75rem;
  color: var(--ink-600);
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 9999px;
  padding: 0.375rem 0.75rem;
  transition: opacity 0.4s, transform 0.4s;
  z-index: 2;
}
.chip-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #D97757;
  animation: chipPulse 1.6s ease-in-out infinite;
}
@keyframes chipPulse {
  0%, 100% { opacity: 0.6; }
  50% { opacity: 1; }
}
.status-chip.is-issue .chip-dot {
  background: var(--ink);
  animation: none;
}

/* Issue card — initially hidden, slides in at end of step 2 */
.issue-card {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1rem;
  overflow: hidden;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.5) inset,
    0 12px 40px -12px rgba(99, 130, 220, 0.18),
    0 4px 16px -4px rgba(10, 10, 10, 0.08);
  opacity: 0;
  transform: translateY(20px) scale(0.97);
  pointer-events: none;
  transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
  z-index: 4;
}
.issue-card.is-shown {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}
.issue-card-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding: 1rem 1.125rem;
  border-bottom: 1px solid var(--ink-200);
  background: var(--ink-50);
}
.issue-id {
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--ink);
}
.issue-sub {
  font-size: 0.6875rem;
  color: var(--ink-500);
  margin-top: 0.125rem;
}
.issue-priority {
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  background: rgba(217, 119, 87, 0.15);
  color: #B25A3C;
  padding: 0.25rem 0.5rem;
  border-radius: 9999px;
  white-space: nowrap;
}
.issue-card-body {
  padding: 1rem 1.125rem;
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
}
.issue-row {
  display: grid;
  grid-template-columns: 90px 1fr;
  gap: 0.75rem;
  align-items: start;
  font-size: 0.8125rem;
}
.issue-label {
  font-size: 0.6875rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--ink-500);
  padding-top: 2px;
}
.issue-value {
  color: var(--ink);
  line-height: 1.5;
}
.status-badge {
  display: inline-block;
  padding: 0.1875rem 0.5rem;
  background: var(--ink);
  color: white;
  border-radius: 0.375rem;
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.04em;
}

/* Generic .panel pattern — all right-side templates share this base */
.panel {
  position: absolute;
  top: 0; left: 0; right: 0;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1rem;
  overflow: hidden;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.5) inset,
    0 12px 40px -12px rgba(99, 130, 220, 0.15),
    0 4px 16px -4px rgba(10, 10, 10, 0.06);
  opacity: 0;
  transform: translateY(20px) scale(0.97);
  pointer-events: none;
  transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
  z-index: 2;
}
.panel.is-shown {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
  z-index: 3;
}

/* Common panel header (used by contractor panel) */
.panel-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 1rem 1.125rem;
  border-bottom: 1px solid var(--ink-200);
}
.panel-avatar {
  width: 2.25rem; height: 2.25rem;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-weight: 600; font-size: 0.8125rem;
  color: white;
}
.contractor-avatar { background: #6B7C8A; }
.panel-name { font-size: 0.875rem; font-weight: 600; color: var(--ink); }
.panel-sub { font-size: 0.75rem; color: var(--ink-500); margin-top: 1px; }
.panel-body { padding: 1.125rem; }

/* Contractor message panel */
.contractor-msg { display: flex; flex-direction: column; gap: 0.5rem; }
.cmsg-from { font-size: 0.6875rem; color: var(--ink-500); font-weight: 500; letter-spacing: 0.04em; text-transform: uppercase; }
.cmsg-bubble {
  background: var(--ink);
  color: white;
  padding: 0.625rem 0.875rem;
  border-radius: 1rem 1rem 0.25rem 1rem;
  font-size: 0.8125rem;
  line-height: 1.45;
  align-self: flex-end;
  max-width: 85%;
}
.cmsg-job {
  background: var(--ink-50);
  border: 1px solid var(--ink-200);
  border-radius: 0.625rem;
  padding: 0.75rem 0.875rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  font-size: 0.75rem;
  align-self: stretch;
}
.crow { display: grid; grid-template-columns: 70px 1fr; gap: 0.625rem; line-height: 1.4; }
.clabel { font-size: 0.6875rem; color: var(--ink-500); text-transform: uppercase; letter-spacing: 0.04em; padding-top: 1px; }
.urgent-pill {
  background: rgba(217, 119, 87, 0.15);
  color: #B25A3C;
  padding: 0.125rem 0.5rem;
  border-radius: 9999px;
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.06em;
}

/* Landlord approval panel */
.landlord-panel { padding: 0; display: flex; flex-direction: column; }
.quote-incoming {
  padding: 1rem 1.125rem;
  background: var(--ink-50);
  border-bottom: 1px dashed var(--ink-200);
}
.qi-header { display: flex; justify-content: space-between; font-size: 0.6875rem; color: var(--ink-500); margin-bottom: 0.5rem; }
.qi-from { font-weight: 500; color: var(--ink-700); }
.qi-body { font-size: 0.8125rem; line-height: 1.5; color: var(--ink); margin-bottom: 0.5rem; }
.qi-amount { font-size: 1rem; font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; }
.landlord-notif { padding: 1rem 1.125rem; }
.ln-header { display: flex; align-items: center; gap: 0.625rem; margin-bottom: 0.875rem; }
.ln-icon { font-size: 1.125rem; }
.ln-title { font-size: 0.875rem; font-weight: 600; color: var(--ink); }
.ln-sub { font-size: 0.6875rem; color: var(--ink-500); margin-top: 1px; }
.ln-rows { display: flex; flex-direction: column; gap: 0.4rem; margin-bottom: 1rem; font-size: 0.8125rem; }
.ln-row { display: flex; justify-content: space-between; }
.ln-label { color: var(--ink-500); }
.ln-quote { font-weight: 600; font-variant-numeric: tabular-nums; }
.ln-actions { display: flex; gap: 0.5rem; }
.ln-btn {
  flex: 1;
  padding: 0.5rem 0.625rem;
  border-radius: 0.5rem;
  font-size: 0.75rem;
  font-weight: 500;
  cursor: pointer;
  transition: transform 0.15s, background 0.15s;
  border: 1px solid var(--ink-200);
  background: white;
  color: var(--ink-700);
}
.ln-btn:hover { transform: translateY(-1px); }
.ln-approve { background: var(--ink); color: white; border-color: var(--ink); }
.ln-decline {}
.ln-query {}

/* Job sheet — formal document feel */
.job-sheet {
  background: #FBFAF7;  /* off-white paper */
  padding: 1.125rem 1.25rem;
  position: relative;
}
.js-watermark {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%) rotate(-12deg);
  font-size: 5rem;
  font-weight: 800;
  color: var(--ink-100);
  opacity: 0.5;
  letter-spacing: 0.1em;
  pointer-events: none;
  z-index: 0;
}
.js-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 1rem;
  padding-bottom: 0.875rem;
  border-bottom: 1px solid var(--ink-300);
  position: relative; z-index: 1;
}
.js-title { font-family: ui-monospace, "SF Mono", monospace; font-size: 0.6875rem; letter-spacing: 0.12em; color: var(--ink-500); font-weight: 500; }
.js-id { font-size: 1.125rem; font-weight: 600; color: var(--ink); margin-top: 2px; font-variant-numeric: tabular-nums; }
.js-stamp {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  color: #2E7D52;
  border: 2px solid #2E7D52;
  padding: 0.25rem 0.625rem;
  border-radius: 0.25rem;
  transform: rotate(-2deg);
}
.js-body { display: flex; flex-direction: column; gap: 0.5rem; position: relative; z-index: 1; }
.js-row { display: grid; grid-template-columns: 100px 1fr; gap: 1rem; font-size: 0.8125rem; padding: 0.4rem 0; border-bottom: 1px dashed var(--ink-200); }
.js-row:last-child { border-bottom: none; }
.js-label { font-size: 0.6875rem; color: var(--ink-500); text-transform: uppercase; letter-spacing: 0.04em; padding-top: 2px; }
.js-amount { font-weight: 600; font-variant-numeric: tabular-nums; }
.js-footer { font-size: 0.6875rem; color: var(--ink-500); text-align: center; padding-top: 1rem; margin-top: 0.875rem; border-top: 1px solid var(--ink-200); position: relative; z-index: 1; }

/* Dashboard panel */
.dashboard-panel { padding: 1.125rem; }
.dash-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 1rem; padding-bottom: 0.875rem; border-bottom: 1px solid var(--ink-200); }
.dash-title { font-family: ui-monospace, "SF Mono", monospace; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.04em; }
.dash-sub { font-size: 0.6875rem; color: var(--ink-500); margin-top: 2px; }
.dash-status {
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  background: var(--ink);
  color: white;
  padding: 0.25rem 0.625rem;
  border-radius: 0.375rem;
}
.dash-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-bottom: 1rem; }
.dash-metric { background: var(--ink-50); border-radius: 0.5rem; padding: 0.625rem 0.75rem; }
.dm-label { font-size: 0.625rem; color: var(--ink-500); text-transform: uppercase; letter-spacing: 0.06em; }
.dm-value { font-size: 0.9375rem; font-weight: 600; color: var(--ink); margin-top: 2px; }
.dash-divider { height: 1px; background: var(--ink-200); margin: 0.5rem 0 1rem; }
.dp-title { font-size: 0.6875rem; color: var(--ink-500); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 0.625rem; }
.dp-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.625rem; }
.dp-stat { text-align: center; padding: 0.5rem; background: var(--ink-50); border-radius: 0.375rem; }
.dps-num { font-size: 1.125rem; font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; }
.dps-label { font-size: 0.5625rem; color: var(--ink-500); text-transform: uppercase; letter-spacing: 0.04em; margin-top: 2px; }

/* Mobile fallback for travel bubble */




/* Bridge section between hero and storyboard */
.story-intro {
  padding: 2.5rem 0 1.25rem;
  text-align: center;
  background: white;
}
.story-intro-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
}
.story-intro-eyebrow {
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 0.75rem;
  color: var(--ink-500);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.story-intro-headline {
  font-size: clamp(1.5rem, 2.5vw, 2.125rem);
  font-weight: 500;
  letter-spacing: -0.02em;
  color: var(--ink);
  line-height: 1.15;
}
.story-intro-arrow {
  margin-top: 1rem;
  font-size: 1.25rem;
  color: var(--ink-400);
  animation: introArrow 2s ease-in-out infinite;
}
@keyframes introArrow {
  0%, 100% { transform: translateY(0); opacity: 0.6; }
  50% { transform: translateY(6px); opacity: 1; }
}

.sv2-section { position: relative; }
.sv2-section .container {
  width: 100%;
}
/* Storyboard is now a normal block — content auto-plays in place rather than
   being driven by scroll position, so we no longer need a sticky stage or
   8x-viewport-height trigger spacers. */
.sv2-stage {
  position: relative;
  display: block;
  padding: 0.5rem 0 2rem;
}
.sv2-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 4rem;
  width: 100%;
  align-items: start;
}
@media (min-width: 1024px) {
  .sv2-grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 5rem;
  }
}
/* Scroll trigger spacers from the previous scroll-driven version — no longer
   used; the storyboard now auto-plays via timer once it enters the viewport. */
.sv2-trigger { display: none; }

/* LEFT — explainer (padding-top matches chat's top offset for vertical alignment) */
/* Left column — all 8 steps stacked in the same place; only the active one is visible.
   This keeps the column the same height as the right and avoids the chat being pushed below the fold. */
.sv2-left {
  position: relative;
  height: 500px;
  padding-top: 0;
}
.sv2-step {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  padding-top: 1.25rem;
  border-top: 1px solid var(--ink-200);
  opacity: 0;
  transform: translateY(12px);
  pointer-events: none;
  transition: opacity 0.55s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.55s cubic-bezier(0.16, 1, 0.3, 1);
}
.sv2-step.is-active {
  opacity: 1;
  transform: translateY(0);
  border-top-color: var(--ink);
  pointer-events: auto;
}

/* Storyboard player controls + left-side status chip
   Sits at the bottom of .sv2-left, below the absolutely-positioned step content. */
.sv2-controls {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}
.sv2-ctrl-group {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 9999px;
  padding: 4px;
}
.sv2-ctrl {
  width: 32px;
  height: 32px;
  border-radius: 9999px;
  border: none;
  background: transparent;
  color: var(--ink-500);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: color 0.15s, background 0.15s;
}
.sv2-ctrl:hover {
  color: var(--ink);
  background: var(--ink-50);
}
.sv2-ctrl-play {
  color: var(--ink) !important;
}
.sv2-ctrl-play:hover {
  background: var(--ink-100);
}

/* Status chip mirroring the right-side one, styled for the left column */
.sv2-step-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.75rem;
  color: var(--ink-600);
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 9999px;
  padding: 0.4rem 0.75rem;
}
.sv2-step-chip-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #D97757;
  animation: chipPulse 1.6s ease-in-out infinite;
  flex: none;
}
.sv2-step-chip.is-issue .sv2-step-chip-dot {
  background: var(--ink);
  animation: none;
}

/* Instagram-story-style progress bar above the active step on desktop.
   Each segment fills progressively over its step's duration — JS sets a
   --seg-duration custom property on the active segment to drive the
   transition. Past segments stay filled; future segments stay empty. */
.sv2-progress {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  display: flex;
  gap: 4px;
  z-index: 5;
}
.sv2-progress-seg {
  flex: 1;
  height: 3px;
  background: var(--ink-200);
  border-radius: 2px;
  position: relative;
  overflow: hidden;
}
.sv2-progress-seg::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 0;
  background: var(--ink);
  border-radius: 2px;
}
.sv2-progress-seg.is-past::after {
  width: 100%;
}
.sv2-progress-seg.is-active::after {
  /* Use a CSS animation (not a transition) so the JS can pause it
     mid-fill via `animation-play-state: paused` when the user hits pause. */
  animation: sv2SegFill var(--seg-duration, 5s) linear forwards;
}
.sv2-progress.is-paused .sv2-progress-seg.is-active::after {
  animation-play-state: paused;
}
@keyframes sv2SegFill {
  from { width: 0; }
  to   { width: 100%; }
}

/* When the progress bar is shown, the per-step border is redundant.
   The progress bar itself is the visual demarcation. */
@media (min-width: 1024px) {
  .sv2-step { border-top-color: transparent; }
  .sv2-step.is-active { border-top-color: transparent; }
}
.sv2-num {
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--ink-500);
  letter-spacing: 0.06em;
}
.sv2-step h3 {
  margin-top: 0.5rem;
  font-size: 1.25rem;
  font-weight: 500;
  letter-spacing: -0.025em;
  line-height: 1.25;
}
.sv2-step p {
  margin-top: 0.625rem;
  font-size: 0.9375rem;
  color: var(--ink-600);
  line-height: 1.65;
}

/* RIGHT — fixed-height stage where bubble & chat live */
.sv2-right {
  position: relative;
  height: 500px;       /* matches .sv2-left so the controls + status pill align */
  width: 100%;
}

/* CHAT SHELL — top portion of stage */
.sv2-chat {
  /* position handled by .panel base — only needs height + chat-specific styling */
  height: 460px;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1rem;
  overflow: hidden;
  z-index: 1;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.5) inset,
    0 12px 40px -12px rgba(99, 130, 220, 0.15),
    0 4px 16px -4px rgba(10, 10, 10, 0.06);
}
.sv2-chat-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 1rem 1.125rem;
  border-bottom: 1px solid var(--ink-200);
  background: var(--ink-50);
  height: 4.25rem;
  box-sizing: border-box;
}
.sv2-avatar {
  width: 2rem; height: 2rem; border-radius: 50%;
  background: linear-gradient(135deg, #94B49F, #5C8268);
  color: white;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.8125rem; font-weight: 600;
  flex: none;
}
.sv2-meta { flex: 1; min-width: 0; }
.sv2-name { font-size: 0.875rem; font-weight: 600; color: var(--ink); line-height: 1.2; }
.sv2-loc { font-size: 0.75rem; color: var(--ink-500); margin-top: 0.125rem; }
.sv2-chat-body {
  padding: 1rem 1.125rem;
  height: calc(100% - 4.25rem);
}


/* Footer "Request an AI summary" — hover icons for natural brand color, click for pre-filled prompt */
/* Standalone AI summary section, sits between page content and the footer. */
.ai-summary-section {
  background: var(--ink-50);
  border-top: 1px solid var(--ink-200);
  border-bottom: 1px solid var(--ink-200);
  padding: 3rem 0;
}
@media (max-width: 768px) {
  .ai-summary-section { padding: 2.5rem 0 3rem; }
}
@media (max-width: 640px) {
  .ai-summary-section { padding: 2.25rem 0 2.75rem; }
}

/* Legacy class kept in case any older markup still uses it */
.ai-summary {
  margin-top: 3rem;
  padding-top: 2.5rem;
  border-top: 1px solid var(--ink-200);
}

/* "All systems operational" pill — sits under the brand tagline in the footer */
.status-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.4rem 0.875rem 0.4rem 0.75rem;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 9999px;
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--ink) !important;
  transition: border-color 0.15s ease, background 0.15s ease;
}
.status-pill:hover {
  border-color: var(--ink-300);
  background: var(--ink-50);
}
.status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #22C55E;
  box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.18);
  flex: none;
  animation: statusPulse 1.8s ease-in-out infinite;
}
@keyframes statusPulse {
  0%, 100% { box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.18); }
  50%      { box-shadow: 0 0 0 5px rgba(34, 197, 94, 0.10); }
}

/* When placed inside .footer-brand the pill sits under the tagline. */
.footer-status-pill {
  margin-top: 1.25rem;
}

/* Social icons row inside .footer-bottom-right */
.footer-socials {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin-right: 0.5rem;
}
.footer-social {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 0.5rem;
  color: var(--ink-500) !important;
  transition: color 0.15s ease, background 0.15s ease, transform 0.15s ease;
}
.footer-social:hover {
  color: var(--ink) !important;
  background: var(--ink-100);
  transform: translateY(-1px);
}
.ai-summary-inner {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  align-items: flex-start;
}
.ai-summary-title {
  font-size: 1.125rem;
  font-weight: 500;
  color: var(--ink);
  margin: 0;
  letter-spacing: -0.01em;
}
.ai-summary-sub {
  font-size: 0.875rem;
  color: var(--ink-600);
  margin: 0.375rem 0 0;
  line-height: 1.5;
  max-width: 480px;
}
.ai-summary-icons {
  display: flex;
  gap: 0.625rem;
  flex-wrap: wrap;
}
.ai-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 0.625rem;
  color: var(--ink-400);
  transition: color 0.2s ease, transform 0.2s ease, background 0.2s ease;
  background: transparent;
}
.ai-icon:hover {
  transform: translateY(-2px);
  background: var(--ink-50);
}
/* Brand colors on hover — each icon's natural identity */
.ai-icon-chatgpt:hover    { color: #10A37F; }
.ai-icon-claude:hover     { color: #D97757; }
.ai-icon-perplexity:hover { color: #20808D; }
.ai-icon-gemini:hover     { color: #4285F4; }
.ai-icon-grok:hover       { color: #000000; }

@media (min-width: 768px) {
  .ai-summary-inner {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    gap: 3rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .sv2-chat, .sv2-step { transition: none; }
}

/* ============================================================
   Mega-menu nav dropdowns
   ============================================================ */

.nav-item.has-mega { position: relative; }
.nav-trigger {
  background: transparent;
  border: none;
  padding: 0;
  /* Match the rest of the nav text exactly — using `font: inherit` here
     would overwrite the .nav-link font-size with the parent's (~16px). */
  font-family: inherit;
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1;
  color: inherit;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
.nav-trigger svg { transition: transform 0.2s; opacity: 0.7; }
.nav-item.is-open .nav-trigger svg { transform: rotate(180deg); }

.mega-menu {
  position: absolute;
  top: calc(100% + 1.25rem);
  left: 50%;
  transform: translateX(-50%) translateY(-4px);
  min-width: 540px;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 0.875rem;
  box-shadow:
    0 2px 6px rgba(10, 10, 10, 0.03),
    0 14px 32px -10px rgba(10, 10, 10, 0.10);
  padding: 1.125rem;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.25rem;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
  z-index: 100;
}
.mega-menu-narrow {
  grid-template-columns: 1fr;
  min-width: 320px;
}
/* Resources mega — 2 columns, with the right side as a Kiwi-branded
   standout card linking to the live demo. */
.mega-menu-resources {
  grid-template-columns: minmax(0, 1fr) minmax(0, 0.95fr);
  min-width: 640px;
  padding: 0.875rem;
  gap: 0.625rem;
}
.mega-col-feature {
  display: flex;
  align-items: stretch;
}
.mega-feature-kiwi {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  height: 100%;
  background-color: #0E2C20;
  background-image: url('../kiwi-demo-banner.jpg');
  background-size: cover;
  background-position: center;
  border-radius: 0.875rem;
  padding: 1.25rem 1.25rem 1.125rem;
  color: white !important;
  position: relative;
  overflow: hidden;
  text-decoration: none;
  transition: transform 0.18s ease, box-shadow 0.18s ease;
  isolation: isolate;
}
.mega-feature-kiwi:hover {
  transform: translateY(-1px);
  box-shadow: 0 18px 40px -22px rgba(0, 0, 0, 0.45);
}
/* Layer 1 — dark gradient overlay above the JPEG so white text reads */
.mega-feature-kiwi::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(155deg, rgba(14, 44, 32, 0.45) 0%, rgba(14, 44, 32, 0.82) 100%);
  z-index: 0;
  pointer-events: none;
}
/* Layer 2 — subtle fern watermark sits above overlay, below text */
.mega-feature-kiwi::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url('../kiwi-properties-fern.svg');
  background-repeat: no-repeat;
  background-position: 115% 130%;
  background-size: 240px;
  opacity: 0.16;
  z-index: 0;
  pointer-events: none;
}
/* Make sure all text content sits above both overlays */
.mega-feature-kiwi > * { position: relative; z-index: 1; }
.mega-feature-kiwi-eyebrow {
  font-size: 0.625rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #66D9A0;
  font-weight: 600;
}
.mega-feature-kiwi-brand {
  display: inline-flex;
  align-items: baseline;
  gap: 0.4rem;
  margin-top: 0.125rem;
}
.mega-feature-kiwi-brand-name {
  font-size: 0.875rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: white;
}
.mega-feature-kiwi-brand-sub {
  font-size: 0.6875rem;
  letter-spacing: 0.16em;
  color: rgba(255, 255, 255, 0.55);
  text-transform: uppercase;
}
.mega-feature-kiwi-title {
  font-size: 1.0625rem;
  font-weight: 500;
  letter-spacing: -0.01em;
  line-height: 1.25;
  color: white;
  margin: 0.4rem 0 0.1rem;
}
.mega-feature-kiwi-sub {
  font-size: 0.8125rem;
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.75);
  margin: 0;
}
.mega-feature-kiwi-cta {
  margin-top: auto;
  padding-top: 0.625rem;
  font-size: 0.8125rem;
  font-weight: 500;
  color: white;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}
.mega-feature-kiwi-cta::after {
  content: "→";
  transition: transform 0.18s ease;
}
.mega-feature-kiwi:hover .mega-feature-kiwi-cta::after {
  transform: translateX(3px);
}
.nav-item.is-open .mega-menu {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateX(-50%) translateY(0);
}

/* Blurred backdrop shown behind the nav while a mega-menu is open.
   Sits below the fixed nav (z 50) and below the mega-menu (z 100), but
   above all page content, so the page reads as softly blurred. */
.nav-backdrop {
  position: fixed;
  inset: 0;
  z-index: 40;
  background: rgba(10, 10, 10, 0.04);
  backdrop-filter: blur(6px) saturate(110%);
  -webkit-backdrop-filter: blur(6px) saturate(110%);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}
.nav-backdrop.is-active {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.mega-eyebrow {
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-500);
  margin-bottom: 0.625rem;
}

.mega-item {
  display: block;
  padding: 0.625rem 0.75rem;
  margin: 0 -0.5rem;
  border-radius: 0.5rem;
  transition: background 0.15s;
  color: var(--ink) !important;
}
.mega-item:hover { background: var(--ink-50); }
.mega-item-title {
  font-size: 0.9375rem;
  font-weight: 500;
  color: var(--ink);
  margin-bottom: 0.125rem;
}
.mega-item-sub {
  font-size: 0.8125rem;
  color: var(--ink-600);
  line-height: 1.45;
}

@media (max-width: 1023px) {
  .mega-menu { display: none; }  /* mobile menu handled separately */
}

/* ============================================================
   Inner-page hero (used on all non-home pages)
   ============================================================ */

.inner-hero {
  padding: 8rem 0 1rem;
  background: white;
}
/* When a content section follows the inner hero directly, tighten its top
   padding so the eyebrow/headline don't sit miles below the hero. */
.inner-hero + .content-section { padding-top: 3rem; }
.inner-hero-inner {
  max-width: 56rem;
}
.inner-hero .eyebrow {
  margin-bottom: 1rem;
}
.inner-hero h1 {
  font-size: clamp(2rem, 4.25vw, 3.25rem);
  line-height: 1.05;
  letter-spacing: -0.035em;
  font-weight: 500;
  margin: 0 0 1.5rem;
  color: var(--ink);
}
.inner-hero-sub {
  font-size: 1.125rem;
  line-height: 1.55;
  color: var(--ink-600);
  margin: 0 0 2rem;
  max-width: 44rem;
}
.inner-hero-actions {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  align-items: center;
}

@media (max-width: 768px) {
  .inner-hero { padding: 6rem 0 3rem; }
}

/* ============================================================
   Generic content sections used across pages
   ============================================================ */

.content-section {
  padding: 6rem 0;
  background: white;
}
/* Only collapse the top padding when consecutive sections share the SAME
   background — otherwise a gray section after a white one (or vice versa)
   would have its content slammed against the colour boundary. */
.content-section:not(.alt) + .content-section:not(.alt) { padding-top: 0; }
.content-section.alt + .content-section.alt { padding-top: 0; }
.content-section.alt { background: var(--ink-50); }

@media (max-width: 768px) {
  .content-section { padding: 4rem 0; }
}

/* Three-column feature grid */
.feature-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
  margin-top: 3rem;
}
@media (min-width: 768px) {
  .feature-grid { grid-template-columns: repeat(3, 1fr); }
}
.feature-card-lite h3 {
  font-size: 1.0625rem;
  font-weight: 500;
  margin: 0 0 0.5rem;
  color: var(--ink);
}
.feature-card-lite p {
  font-size: 0.9375rem;
  color: var(--ink-600);
  line-height: 1.55;
  margin: 0;
}
.feature-card-lite .feature-icon {
  width: 36px;
  height: 36px;
  border-radius: 0.5rem;
  background: var(--ink-50);
  border: 1px solid var(--ink-200);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ink);
  margin-bottom: 1rem;
}

/* Numbered step list — used on feature pages */
.step-list {
  list-style: none;
  padding: 0;
  margin: 3rem 0 0;
  counter-reset: step;
  display: grid;
  gap: 2rem;
}
.step-list li {
  counter-increment: step;
  padding-left: 4rem;
  position: relative;
}
.step-list li::before {
  content: counter(step, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: 0.125rem;
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  color: var(--ink-500);
}
.step-list h3 {
  font-size: 1.125rem;
  font-weight: 500;
  margin: 0 0 0.5rem;
  color: var(--ink);
}
.step-list p {
  font-size: 0.9375rem;
  color: var(--ink-600);
  line-height: 1.6;
  margin: 0;
}

/* Outcome stats — big number + label */
.outcome-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
  margin-top: 3rem;
}
@media (min-width: 768px) {
  .outcome-grid { grid-template-columns: repeat(3, 1fr); }
}
.outcome-stat {
  border-top: 1px solid var(--ink-200);
  padding-top: 1.5rem;
}
.outcome-number {
  font-size: 2.5rem;
  font-weight: 500;
  letter-spacing: -0.025em;
  color: var(--ink);
  margin-bottom: 0.5rem;
  line-height: 1;
}
.outcome-label {
  font-size: 0.9375rem;
  color: var(--ink-600);
  line-height: 1.5;
}

/* Related-cards section — used at bottom of feature pages */
.related-cards {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  margin-top: 3rem;
}
@media (min-width: 768px) {
  .related-cards { grid-template-columns: repeat(3, 1fr); }
}
.related-card {
  display: block;
  padding: 1.75rem;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1rem;
  transition: border-color 0.15s, transform 0.15s;
  color: var(--ink) !important;
}
.related-card:hover {
  border-color: var(--ink-400);
  transform: translateY(-2px);
}
.related-card-eyebrow {
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-500);
  margin-bottom: 0.5rem;
}
.related-card-title {
  font-size: 1rem;
  font-weight: 500;
  color: var(--ink);
}

/* CTA strip — used at bottom of inner pages */
.cta-strip {
  position: relative;
  padding: 5rem 0;
  background: var(--ink);
  color: white;
  text-align: center;
  isolation: isolate;
  overflow: hidden;
}
/* Optional gradient image background (set via .cta-strip-{variant}). The image
   sits behind everything; a darken overlay above it ensures white text is
   always legible regardless of which gradient is used. */
.cta-strip-img::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: var(--cta-bg-image);
  background-size: cover;
  background-position: center;
  z-index: -2;
}
.cta-strip-img::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(10, 10, 10, 0.72), rgba(10, 10, 10, 0.45));
  z-index: -1;
}
/* Variant palettes — pick one per page for visual variety. Paths are
   relative to this CSS file at /assets/css/site.css, so ../ reaches /assets/. */
.cta-strip-aurora  { --cta-bg-image: url('../cta-bg-aurora.jpg'); }
.cta-strip-violet  { --cta-bg-image: url('../cta-bg-violet.jpg'); }
.cta-strip-sky     { --cta-bg-image: url('../cta-bg-sky.jpg'); }
/* Sky gradient is lighter — strengthen the overlay */
.cta-strip-sky::after {
  background: linear-gradient(135deg, rgba(10, 10, 10, 0.78), rgba(10, 10, 10, 0.55));
}

.cta-strip h2 {
  font-size: clamp(1.625rem, 3.25vw, 2.5rem);
  line-height: 1.1;
  font-weight: 500;
  letter-spacing: -0.03em;
  margin: 0 0 1rem;
  color: white;
  position: relative;
  z-index: 1;
}
.cta-strip p {
  font-size: 1.0625rem;
  color: rgba(255, 255, 255, 0.78);
  margin: 0 0 2rem;
  position: relative;
  z-index: 1;
}
.cta-strip .btn-primary-light {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  position: relative;
  z-index: 1;
}


/* Pages without a dark hero — nav starts in white state and stays there */
.nav.is-static-light {
  background: rgba(255, 255, 255, 0.85);
  backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  border-bottom-color: rgba(10, 10, 10, 0.06);
}


/* ============================================================
   Form controls — used on book-a-demo, contact, contractor partner
   ============================================================ */

.form-grid {
  display: grid;
  gap: 1.25rem;
  max-width: 32rem;
  margin: 2.5rem 0;
}
.form-grid.cols-2 {
  grid-template-columns: 1fr 1fr;
  max-width: 40rem;
}
.form-field {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
.form-field.full { grid-column: 1 / -1; }
.form-field label {
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--ink-700);
}
.form-field input,
.form-field textarea,
.form-field select {
  width: 100%;
  padding: 0.75rem 0.875rem;
  border: 1px solid var(--ink-200);
  border-radius: 0.5rem;
  background: white;
  font: inherit;
  font-size: 0.9375rem;
  color: var(--ink);
  transition: border-color 0.15s, box-shadow 0.15s;
}
.form-field input:focus,
.form-field textarea:focus,
.form-field select:focus {
  outline: none;
  border-color: var(--ink-700);
  box-shadow: 0 0 0 3px rgba(10, 10, 10, 0.06);
}
.form-field textarea { min-height: 7rem; resize: vertical; }
.form-field-help {
  font-size: 0.75rem;
  color: var(--ink-500);
}
.form-actions { margin-top: 0.5rem; }

@media (max-width: 640px) {
  .form-grid.cols-2 { grid-template-columns: 1fr; }
}

/* ============================================================
   Pricing page table
   ============================================================ */

.pricing-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 3rem;
  font-size: 0.9375rem;
}
.pricing-table th, .pricing-table td {
  padding: 1rem 1.25rem;
  text-align: left;
  border-bottom: 1px solid var(--ink-200);
}
.pricing-table th {
  font-weight: 500;
  color: var(--ink-700);
  font-size: 0.8125rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  border-bottom: 2px solid var(--ink-300);
}
.pricing-table td:first-child { color: var(--ink-700); }
.pricing-table td.check { text-align: center; color: var(--ink); }
.pricing-table tr:hover td { background: var(--ink-50); }

.pricing-tiers {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  margin-top: 3rem;
}
@media (min-width: 768px) {
  .pricing-tiers { grid-template-columns: repeat(2, 1fr); }
}
.pricing-tier {
  background: var(--ink-50);
  border: 1px solid var(--ink-200);
  border-radius: 1.25rem;
  padding: 2rem;
}
.pricing-tier.featured {
  background: white;
  border-color: var(--ink);
  box-shadow: 0 12px 32px -8px rgba(10, 10, 10, 0.1);
}
.pricing-tier-name {
  font-size: 0.8125rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-600);
  font-weight: 500;
  margin-bottom: 1rem;
}
.pricing-tier-price {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  margin-bottom: 0.25rem;
}
.pricing-tier-amount {
  font-size: 2.5rem;
  font-weight: 600;
  letter-spacing: -0.02em;
  line-height: 1;
}
.pricing-tier-period {
  font-size: 0.9375rem;
  color: var(--ink-600);
}
.pricing-tier-note {
  font-size: 0.8125rem;
  color: var(--ink-500);
  margin-bottom: 1.5rem;
}
.pricing-tier-features {
  list-style: none;
  padding: 1.25rem 0 0;
  margin: 0;
  border-top: 1px solid var(--ink-200);
}
.pricing-tier-features li {
  display: flex;
  align-items: flex-start;
  gap: 0.625rem;
  padding: 0.5rem 0;
  font-size: 0.9375rem;
}
.pricing-tier-features li svg {
  color: var(--ink);
  flex: none;
  margin-top: 2px;
}
.pricing-tier-cta { margin-top: 1.5rem; }
.pricing-tier .btn-primary,
.pricing-tier .btn-outline { width: 100%; justify-content: center; display: flex; }
.btn-outline {
  background: white;
  color: var(--ink) !important;
  border: 1px solid var(--ink-300);
  padding: 0.75rem 1.5rem;
  border-radius: 9999px;
  font-weight: 500;
  font-size: 0.9375rem;
  transition: border-color 0.15s, background 0.15s;
}
.btn-outline:hover {
  border-color: var(--ink);
  background: var(--ink-50);
}

/* ============================================================
   Kiwi Properties demo agency card (AI Triage page)
   ============================================================ */

:root {
  --kiwi-green: #1F4A36;
  --kiwi-green-deep: #163528;
  --kiwi-green-50: #EEF3F0;
}

.kiwi-card {
  margin-top: 3rem;
  border: 1px solid var(--ink-200);
  border-radius: 1.5rem;
  overflow: hidden;
  background: white;
  box-shadow: 0 12px 36px -16px rgba(31, 74, 54, 0.18);
}

/* Branded header — dark green panel with logo + agency meta */
.kiwi-header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 2rem;
  align-items: center;
  padding: 2.25rem 2.5rem;
  background:
    radial-gradient(ellipse 60% 70% at 18% 20%, rgba(255,255,255,0.06) 0%, transparent 60%),
    linear-gradient(135deg, var(--kiwi-green) 0%, var(--kiwi-green-deep) 100%);
  color: white;
}
.kiwi-brand {
  display: flex;
  align-items: center;
  gap: 1.25rem;
}
.kiwi-fern {
  width: 56px;
  height: 40px;
  display: inline-flex;
  color: white;
  flex: none;
}
.kiwi-fern svg { width: 100%; height: 100%; display: block; }
.kiwi-wordmark {
  display: flex;
  flex-direction: column;
  line-height: 1;
}
.kiwi-name {
  font-size: 1.875rem;
  font-weight: 500;
  letter-spacing: 0.32em;
  color: white;
}
.kiwi-sub {
  font-size: 0.6875rem;
  font-weight: 400;
  letter-spacing: 0.32em;
  color: rgba(255, 255, 255, 0.78);
  margin-top: 0.45rem;
}
.kiwi-meta {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.25rem;
  text-align: right;
}
.kiwi-meta-eyebrow {
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.65);
}
.kiwi-meta-line {
  font-size: 0.875rem;
  color: rgba(255, 255, 255, 0.92);
}
.kiwi-powered {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin-top: 0.5rem;
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.7);
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 9999px;
  padding: 0.3rem 0.7rem 0.3rem 0.65rem;
}
.kiwi-powered strong { color: white; font-weight: 600; }
.kiwi-powered-logo {
  height: 14px;
  width: auto;
  display: inline-block;
  vertical-align: -2px;
}

/* Three intake channels inside the Kiwi card */
.kiwi-channels {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.kiwi-channel {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  padding: 1.75rem 1.75rem;
  background: white;
  color: var(--ink) !important;
  text-decoration: none;
  border-right: 1px solid var(--ink-200);
  position: relative;
  transition: background 0.15s ease, transform 0.15s ease;
}
.kiwi-channel:last-child { border-right: none; }
.kiwi-channel:hover {
  background: var(--kiwi-green-50);
}
.kiwi-channel:hover .kiwi-channel-cta { color: var(--kiwi-green); }
.kiwi-channel:hover .kiwi-channel-icon { color: var(--kiwi-green); border-color: rgba(31, 74, 54, 0.25); }
.kiwi-channel-top {
  display: flex;
  align-items: center;
  gap: 0.625rem;
}
.kiwi-channel-icon {
  width: 36px;
  height: 36px;
  border-radius: 0.5rem;
  background: var(--ink-50);
  border: 1px solid var(--ink-200);
  color: var(--ink);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  transition: color 0.15s ease, border-color 0.15s ease;
}
.kiwi-channel-label {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-500);
}
.kiwi-channel-target {
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 0.9375rem;
  font-weight: 500;
  color: var(--ink);
  word-break: break-all;
  line-height: 1.35;
}
.kiwi-channel-cta {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--ink);
  margin-top: 0.25rem;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  transition: color 0.15s ease, gap 0.15s ease;
}
.kiwi-channel:hover .kiwi-channel-cta { gap: 0.6rem; }

/* Responsive */
@media (max-width: 900px) {
  .kiwi-header {
    grid-template-columns: 1fr;
    gap: 1.25rem;
    text-align: left;
  }
  .kiwi-meta {
    align-items: flex-start;
    text-align: left;
  }
  .kiwi-channels {
    grid-template-columns: 1fr;
  }
  .kiwi-channel {
    border-right: none;
    border-bottom: 1px solid var(--ink-200);
  }
  .kiwi-channel:last-child { border-bottom: none; }
}
@media (max-width: 480px) {
  .kiwi-header { padding: 1.75rem 1.5rem; }
  .kiwi-channel { padding: 1.5rem; }
}


/* ============================================================
   Workflow steps — a 2x3 grid that mirrors a Kanban's columns,
   used on Live Issue Tracking to explain every stage in detail.
   ============================================================ */

.workflow-steps {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 2rem 2rem;
  margin-top: 1rem;
}
@media (max-width: 1023px) {
  .workflow-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.75rem; }
}
@media (max-width: 640px) {
  .workflow-steps { grid-template-columns: 1fr; gap: 1.5rem; }
}
.workflow-step {
  border-top: 1px solid var(--ink);
  padding-top: 1.25rem;
}
.workflow-step-num {
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  color: var(--ink-500);
  text-transform: uppercase;
}
.workflow-step-title {
  font-size: 1.0625rem;
  font-weight: 500;
  color: var(--ink);
  margin: 0.5rem 0 0.625rem;
  line-height: 1.3;
}
.workflow-step-desc {
  font-size: 0.9375rem;
  color: var(--ink-600);
  line-height: 1.6;
  margin: 0;
}


/* ============================================================
   Interactive Kanban dashboard demo (Live Issue Tracking page)
   ============================================================ */

.kanban-demo-section {
  background: var(--ink-50);
  padding: 4rem 0 5rem;
}
.kanban-demo-intro {
  max-width: 50rem;
  margin: 0 auto 2.5rem;
  text-align: center;
  padding: 0 1.5rem;
}
.kanban-demo-intro .eyebrow { margin-bottom: 0.875rem; }

.kanban-demo-shell {
  max-width: 1500px;
  margin: 0 auto;
  padding: 0 1.5rem;
}

.kanban-demo-frame {
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1.25rem;
  padding: 1.25rem;
  box-shadow: 0 24px 64px -28px rgba(10, 10, 10, 0.12);
  overflow: hidden;
}

/* Toolbar at the top of the dashboard */
.kanban-demo-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.5rem 0.5rem 1rem;
  margin-bottom: 1rem;
  border-bottom: 1px solid var(--ink-100);
  font-size: 0.8125rem;
  color: var(--ink-600);
  flex-wrap: wrap;
}
.kanban-demo-crumbs {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--ink-500);
}
.kanban-demo-crumbs svg { color: var(--ink-700); }
.kanban-demo-crumb-link { color: var(--ink-500); }
.kanban-demo-crumb-sep { color: var(--ink-300); }
.kanban-demo-crumb-current { color: var(--ink); font-weight: 500; }

.kanban-demo-tools {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.kanban-demo-search {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.4rem 0.75rem;
  border: 1px solid var(--ink-200);
  border-radius: 0.5rem;
  color: var(--ink-500);
  font-size: 0.75rem;
}
.kanban-demo-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.4rem 0.75rem;
  border: 1px solid transparent;
  border-radius: 0.5rem;
  color: var(--ink-700);
  font-size: 0.75rem;
  background: var(--ink-50);
}
.kanban-demo-pill strong {
  color: var(--ink);
  font-weight: 500;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 0.375rem;
  padding: 0.1rem 0.4rem;
}
.kanban-demo-caret { color: var(--ink-400); font-size: 0.625rem; }
.kanban-demo-cta {
  display: inline-flex;
  align-items: center;
  padding: 0.5rem 0.875rem;
  background: var(--ink);
  color: white;
  border-radius: 0.5rem;
  font-size: 0.75rem;
  font-weight: 500;
}

/* Board */
.kanban {
  display: grid;
  grid-template-columns: repeat(6, minmax(240px, 1fr));
  gap: 0.625rem;
}
.kanban-col {
  background: var(--ink-50);
  border: 1px solid var(--ink-200);
  border-radius: 0.875rem;
  padding: 0.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
  min-height: 280px;
  transition: background 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}
.kanban-col.is-drop-target {
  background: rgba(199, 110, 78, 0.06);
  border-color: rgba(199, 110, 78, 0.4);
  box-shadow: 0 0 0 3px rgba(199, 110, 78, 0.10) inset;
}
.kanban-col-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 0.75rem;
  letter-spacing: 0.04em;
  color: var(--ink-700);
  padding: 0 0.25rem;
}
.kanban-col-name { font-weight: 500; }
.kanban-col-count {
  color: var(--ink-500);
  font-variant-numeric: tabular-nums;
  font-weight: 500;
}
.kanban-col-body {
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
  flex: 1;
  min-height: 0;
}

/* Cards */
.kanban-card {
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 0.625rem;
  padding: 0.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  cursor: default;
  transition: border-color 0.15s ease, box-shadow 0.15s ease,
              opacity 0.7s ease, transform 0.7s ease;
}
.kanban-card:hover {
  border-color: var(--ink-300);
  box-shadow: 0 4px 14px -6px rgba(10, 10, 10, 0.08);
}
/* Auto-flow animation — card fades out of source column, then materializes in target */
.kanban-card.is-flow-out {
  opacity: 0;
  transform: translateX(10px) scale(0.985);
  pointer-events: none;
}
.kanban-card.is-flow-in {
  animation: kanbanFlowIn 0.7s ease both;
}
@keyframes kanbanFlowIn {
  from { opacity: 0; transform: translateY(-8px) scale(0.99); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.kanban-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}
.kanban-card-id {
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 0.625rem;
  color: var(--ink-500);
  letter-spacing: 0.04em;
}

/* Priority badges */
.kanban-pri {
  font-size: 0.625rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  padding: 0.15rem 0.45rem;
  border-radius: 0.3rem;
  border: 1px solid;
  white-space: nowrap;
}
.kanban-pri-urgent {
  color: #C2741A;
  border-color: rgba(194, 116, 26, 0.4);
  background: rgba(194, 116, 26, 0.06);
}
.kanban-pri-routine {
  color: #2C7CC2;
  border-color: rgba(44, 124, 194, 0.4);
  background: rgba(44, 124, 194, 0.06);
}
.kanban-pri-emergency {
  color: #C23232;
  border-color: rgba(194, 50, 50, 0.4);
  background: rgba(194, 50, 50, 0.06);
}

.kanban-card-title {
  font-size: 0.8125rem;
  font-weight: 500;
  line-height: 1.35;
  color: var(--ink);
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.kanban-card-meta {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  font-size: 0.6875rem;
  color: var(--ink-500);
}
.kanban-meta-row {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.kanban-meta-row svg { color: var(--ink-400); flex: none; }

.kanban-card-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  flex-wrap: wrap;
  font-size: 0.625rem;
  color: var(--ink-500);
}
.kanban-cat {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.15rem 0.45rem;
  border-radius: 0.3rem;
  font-weight: 500;
}
.kanban-cat-heating  { color: #C76E4E; background: rgba(199, 110, 78, 0.10); }
.kanban-cat-plumbing { color: #2C7CC2; background: rgba(44, 124, 194, 0.10); }
.kanban-cat-locks    { color: #6B5DD6; background: rgba(107, 93, 214, 0.10); }
.kanban-card-time { white-space: nowrap; }

.kanban-empty {
  font-size: 0.75rem;
  color: var(--ink-400);
  text-align: center;
  padding: 2rem 0;
}

/* Tablet — narrower columns, allow horizontal scroll */
@media (max-width: 1200px) {
  .kanban {
    grid-template-columns: repeat(6, 220px);
    overflow-x: auto;
    padding-bottom: 0.5rem;
    -webkit-overflow-scrolling: touch;
  }
}

/* Mobile — make cards non-draggable, scroll columns horizontally */
@media (max-width: 900px) {
  .kanban-demo-section { padding: 3rem 0 3.5rem; }
  .kanban-demo-frame { padding: 1rem; border-radius: 1rem; }
  .kanban-demo-toolbar { display: none; }
  .kanban {
    grid-template-columns: repeat(6, 240px);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
  }
  .kanban-col { scroll-snap-align: start; }
  .kanban-card { cursor: default; }
}


/* ============================================================
   Calendar view — week strip showing scheduled jobs by day,
   each tagged with contractor + property/unit. Mirrors the
   kanban demo's framing.
   ============================================================ */

.calendar-section { padding-top: 4rem; padding-bottom: 5rem; }
.calendar-section .section-lede { margin-bottom: 2rem; }

.calendar-shell {
  max-width: 1240px;
  margin: 0 auto;
}
.calendar-frame {
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1.125rem;
  overflow: hidden;
  box-shadow: 0 24px 48px -28px rgba(10, 10, 10, 0.10);
}

/* Toolbar */
.calendar-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.875rem 1.125rem;
  border-bottom: 1px solid var(--ink-200);
  background: var(--ink-50);
  flex-wrap: wrap;
}
.calendar-month {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--ink);
}
.calendar-month-label {
  letter-spacing: -0.005em;
  min-width: 5.5rem;
  text-align: center;
}
.calendar-nav-btn {
  width: 26px; height: 26px;
  border: 1px solid var(--ink-200);
  background: white;
  border-radius: 0.4rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--ink-600);
  cursor: default;
  transition: border-color 0.15s ease, color 0.15s ease;
}
.calendar-nav-btn:hover { border-color: var(--ink-300); color: var(--ink); }

.calendar-tools {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  flex-wrap: wrap;
}
.calendar-pill {
  font-size: 0.6875rem;
  letter-spacing: 0.02em;
  padding: 0.3rem 0.6rem;
  border-radius: 0.4rem;
  border: 1px solid var(--ink-200);
  background: white;
  color: var(--ink-600);
  font-weight: 500;
}
.calendar-pill-active {
  background: var(--ink);
  color: white;
  border-color: var(--ink);
}
.calendar-cta {
  font-size: 0.6875rem;
  letter-spacing: 0.02em;
  padding: 0.35rem 0.7rem;
  border-radius: 0.4rem;
  background: var(--ink);
  color: white;
  font-weight: 500;
}

/* Week grid */
.calendar-week {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
}
.calendar-day {
  border-right: 1px solid var(--ink-200);
  background: white;
  display: flex;
  flex-direction: column;
  min-height: 320px;
}
.calendar-day:last-child { border-right: none; }

.calendar-day-today { background: rgba(199, 110, 78, 0.025); }

.calendar-day-head {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  padding: 0.875rem 0.875rem 0.625rem;
  border-bottom: 1px solid var(--ink-100);
  position: sticky;
  top: 0;
  background: inherit;
}
.calendar-day-name {
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--ink-500);
  font-weight: 500;
}
.calendar-day-num {
  font-size: 1rem;
  font-weight: 500;
  color: var(--ink);
  letter-spacing: -0.01em;
}
.calendar-today-pill {
  margin-left: auto;
  font-size: 0.5625rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #C76E4E;
  padding: 0.15rem 0.4rem;
  border: 1px solid rgba(199, 110, 78, 0.4);
  border-radius: 0.3rem;
}

/* Day body — list of jobs */
.calendar-day-body {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 0.625rem 0.625rem 1rem;
}

/* Individual job card */
.calendar-job {
  position: relative;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 0.5rem;
  padding: 0.5rem 0.625rem 0.5rem 0.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  font-size: 0.6875rem;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.calendar-job::before {
  content: "";
  position: absolute;
  inset: 0.35rem auto 0.35rem 0;
  width: 3px;
  border-radius: 2px;
  background: var(--ink-300);
}
.calendar-job:hover {
  border-color: var(--ink-300);
  box-shadow: 0 4px 12px -6px rgba(10,10,10,0.08);
}

.calendar-job-time {
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 0.625rem;
  color: var(--ink-500);
  letter-spacing: 0.02em;
}
.calendar-job-title {
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--ink);
  margin: 0;
  line-height: 1.3;
}
.calendar-job-contractor {
  color: var(--ink-700);
  font-weight: 500;
}
.calendar-job-loc {
  color: var(--ink-500);
}

/* Trade-coloured left accent + tinted background */
.calendar-job-heating::before    { background: #C76E4E; }
.calendar-job-heating            { background: rgba(199, 110, 78, 0.04); }
.calendar-job-plumbing::before   { background: #2C7CC2; }
.calendar-job-plumbing           { background: rgba(44, 124, 194, 0.04); }
.calendar-job-locks::before      { background: #6B5DD6; }
.calendar-job-locks              { background: rgba(107, 93, 214, 0.04); }
.calendar-job-electrical::before { background: #C2741A; }
.calendar-job-electrical         { background: rgba(194, 116, 26, 0.04); }

/* Tablet — keep all 5 days but tighten */
@media (max-width: 1100px) {
  .calendar-week { grid-template-columns: repeat(5, minmax(170px, 1fr)); overflow-x: auto; }
  .calendar-day { min-width: 170px; }
}

/* Mobile — horizontal scroll, narrower day columns */
@media (max-width: 900px) {
  .calendar-section { padding: 2.5rem 0 3rem; }
  .calendar-frame { border-radius: 0.875rem; }
  .calendar-toolbar { padding: 0.75rem; gap: 0.5rem; }
  .calendar-tools { flex: 1 1 100%; justify-content: flex-start; }
  .calendar-week {
    grid-template-columns: repeat(5, 200px);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .calendar-day { min-height: 260px; }
}


/* ============================================================
   Solutions pages — hero visuals + trust strip + pricing card
   + compliance callout. Per-audience visual panel on the right.
   ============================================================ */

/* Hero — two-column with visual on the right */
.solutions-hero { padding-top: 7.5rem; padding-bottom: 4rem; }
.solutions-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  gap: 4rem;
  align-items: center;
}
.solutions-hero-grid .inner-hero-inner { padding: 0; }
.solutions-hero-grid h1 { margin-top: 0.4rem; }

/* Hero visual frame — tinted card with subtle gradient + soft border */
.sol-vis {
  position: relative;
  border-radius: 1.25rem;
  padding: 1.5rem;
  border: 1px solid var(--ink-200);
  background: white;
  box-shadow: 0 24px 56px -32px rgba(10, 10, 10, 0.18);
  min-height: 380px;
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
  overflow: hidden;
}
.sol-vis::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--sol-vis-bg, linear-gradient(135deg, rgba(199,110,78,0.06), rgba(44,124,194,0.04)));
  pointer-events: none;
}
.sol-vis > * { position: relative; z-index: 1; }

/* Per-audience tints */
.sol-vis-pm { --sol-vis-bg: linear-gradient(135deg, rgba(199,110,78,0.07), rgba(199,110,78,0.02) 60%); }
.sol-vis-ll { --sol-vis-bg: linear-gradient(135deg, rgba(44,124,194,0.07),  rgba(44,124,194,0.02) 60%); }
.sol-vis-tn { --sol-vis-bg: linear-gradient(135deg, rgba(60,158,86,0.07),   rgba(60,158,86,0.02) 60%); }
.sol-vis-cn { --sol-vis-bg: linear-gradient(135deg, rgba(107,93,214,0.07),  rgba(107,93,214,0.02) 60%); }

.sol-vis-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 0.75rem;
  color: var(--ink-600);
  letter-spacing: 0.02em;
  font-weight: 500;
}
.sol-vis-tag {
  font-size: 0.625rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-500);
  padding: 0.2rem 0.5rem;
  border: 1px solid var(--ink-200);
  border-radius: 0.3rem;
  background: white;
}

/* Generic card row used inside hero visuals */
.sol-vis-row {
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 0.625rem;
  padding: 0.625rem 0.75rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  font-size: 0.8125rem;
}
.sol-vis-row-label {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--ink-700);
  font-weight: 500;
}
.sol-vis-row-dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: #3C9E56;
}
.sol-vis-row-num {
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}

/* Highlight strip inside hero visual */
.sol-vis-callout {
  margin-top: auto;
  padding: 0.75rem 0.875rem;
  background: rgba(255,255,255,0.7);
  backdrop-filter: blur(4px);
  border: 1px solid var(--ink-200);
  border-radius: 0.625rem;
  font-size: 0.75rem;
  color: var(--ink-700);
  line-height: 1.4;
}
.sol-vis-callout strong { color: var(--ink); font-weight: 500; }

/* WhatsApp-style chat for tenants visual */
.sol-vis-chat { display: flex; flex-direction: column; gap: 0.5rem; }
.sol-vis-bubble {
  max-width: 78%;
  padding: 0.5rem 0.75rem;
  border-radius: 0.875rem;
  font-size: 0.75rem;
  line-height: 1.4;
  color: var(--ink);
  background: white;
  border: 1px solid var(--ink-200);
}
.sol-vis-bubble.from-tenant {
  align-self: flex-start;
  background: white;
  border-bottom-left-radius: 0.25rem;
}
.sol-vis-bubble.from-lanten {
  align-self: flex-end;
  background: rgba(60,158,86,0.10);
  border-color: rgba(60,158,86,0.25);
  border-bottom-right-radius: 0.25rem;
}

/* Job card for contractors visual */
.sol-vis-job-id {
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 0.625rem;
  color: var(--ink-500);
  letter-spacing: 0.04em;
}
.sol-vis-job-title {
  font-size: 1rem;
  font-weight: 500;
  margin: 0.25rem 0 0;
  color: var(--ink);
  letter-spacing: -0.01em;
}
.sol-vis-job-loc {
  font-size: 0.75rem;
  color: var(--ink-500);
  margin-top: 0.15rem;
}
.sol-vis-job-list {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  margin: 0.5rem 0 0;
  padding: 0;
  list-style: none;
}
.sol-vis-job-list li {
  font-size: 0.75rem;
  color: var(--ink-700);
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.sol-vis-job-list svg { color: #3C9E56; flex: none; }
.sol-vis-job-cta {
  margin-top: auto;
  padding: 0.55rem 0.875rem;
  background: var(--ink);
  color: white;
  border-radius: 0.5rem;
  text-align: center;
  font-size: 0.8125rem;
  font-weight: 500;
}

/* Trust strip — small ground bar under the hero */
.solutions-trust {
  border-top: 1px solid var(--ink-100);
  border-bottom: 1px solid var(--ink-100);
  padding: 1rem 0;
  background: var(--ink-50);
}
.solutions-trust-inner {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0.5rem 2rem;
  font-size: 0.8125rem;
  color: var(--ink-600);
}
.solutions-trust-item {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}
.solutions-trust-item svg { color: var(--ink-400); flex: none; }
.solutions-trust-sep {
  width: 4px; height: 4px;
  border-radius: 50%;
  background: var(--ink-200);
}

/* Step list — number badges + lighter borders */
.solutions-steps {
  list-style: none;
  counter-reset: solStep;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.25rem;
}
.solutions-steps li {
  counter-increment: solStep;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1rem;
  padding: 1.5rem 1.5rem 1.625rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.solutions-steps li::before {
  content: counter(solStep, decimal-leading-zero);
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 0.625rem;
  letter-spacing: 0.08em;
  color: var(--ink-500);
  font-weight: 500;
}
.solutions-steps h3 {
  font-size: 1rem;
  font-weight: 500;
  margin: 0;
  color: var(--ink);
  letter-spacing: -0.005em;
}
.solutions-steps p {
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.55;
  color: var(--ink-600);
}

/* Compliance callout card */
.solutions-callout {
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1.25rem;
  padding: 2rem 2rem 2.125rem;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr);
  gap: 2.5rem;
  position: relative;
  overflow: hidden;
}
.solutions-callout::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(60,158,86,0.05), rgba(60,158,86,0) 60%);
  pointer-events: none;
}
.solutions-callout > * { position: relative; }
.solutions-callout-eyebrow {
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  color: var(--ink-500);
  text-transform: uppercase;
  font-weight: 500;
  margin: 0 0 0.5rem;
}
.solutions-callout-title {
  font-size: clamp(1.4rem, 2.2vw, 1.75rem);
  font-weight: 500;
  letter-spacing: -0.015em;
  margin: 0;
  color: var(--ink);
  line-height: 1.2;
}
.solutions-callout-body p {
  margin: 0 0 0.75rem;
  font-size: 0.9375rem;
  line-height: 1.6;
  color: var(--ink-700);
}
.solutions-callout-body p:last-child { margin-bottom: 0; }

/* Pricing card — proper card replacing stat grid on letting-agents */
.solutions-price-card {
  max-width: 580px;
  margin: 0 auto;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1.125rem;
  padding: 2rem 2rem 1.75rem;
  text-align: center;
  position: relative;
  box-shadow: 0 24px 48px -28px rgba(10, 10, 10, 0.10);
}
.solutions-price-amount {
  font-size: clamp(2.5rem, 4.4vw, 3.25rem);
  font-weight: 500;
  letter-spacing: -0.025em;
  line-height: 1;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.solutions-price-amount-unit {
  font-size: 0.9375rem;
  font-weight: 400;
  color: var(--ink-500);
  margin-left: 0.25rem;
}
.solutions-price-sub {
  margin: 0.5rem 0 1.25rem;
  font-size: 0.875rem;
  color: var(--ink-600);
}
.solutions-price-list {
  list-style: none;
  padding: 0;
  margin: 0 0 1.25rem;
  display: grid;
  gap: 0.5rem;
  text-align: left;
  border-top: 1px solid var(--ink-100);
  padding-top: 1.25rem;
}
.solutions-price-list li {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.875rem;
  color: var(--ink-700);
}
.solutions-price-list svg { color: #3C9E56; flex: none; }
.solutions-price-actions {
  display: flex;
  gap: 0.625rem;
  justify-content: center;
  flex-wrap: wrap;
}

/* Section spacing tweaks for solutions pages */
.solutions-page .content-section { padding: 4.5rem 0; }
.solutions-page .content-section + .content-section { padding-top: 0; }
.solutions-page .content-section.alt + .content-section.alt { padding-top: 0; }
.solutions-page .content-section + .content-section.alt,
.solutions-page .content-section.alt + .content-section { padding-top: 4.5rem; }

/* Mobile / tablet */
@media (max-width: 980px) {
  .solutions-hero { padding-top: 6rem; padding-bottom: 2rem; }
  .solutions-hero-grid {
    grid-template-columns: 1fr;
    gap: 2.5rem;
  }
  .sol-vis { min-height: 320px; }
  .solutions-steps { grid-template-columns: 1fr; gap: 0.875rem; }
  .solutions-callout {
    grid-template-columns: 1fr;
    gap: 1.25rem;
    padding: 1.5rem;
  }
  .solutions-trust-inner { gap: 0.5rem 1.25rem; font-size: 0.75rem; }
  .solutions-page .content-section { padding: 3rem 0; }
}


/* ============================================================
   Refer page — anyone-can-refer card grid with share buttons
   per audience.
   ============================================================ */

.refer-hero { padding-bottom: 2rem; }
.refer-prize {
  display: inline-flex;
  align-items: baseline;
  gap: 0.4rem;
  padding: 0.4rem 0.75rem;
  border: 1px solid var(--ink-200);
  border-radius: 0.5rem;
  background: var(--ink-50);
  font-size: 0.875rem;
  color: var(--ink-700);
  margin-top: 1rem;
  font-weight: 500;
}
.refer-prize strong {
  color: var(--ink);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.refer-tips-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.25rem;
  margin-top: 2rem;
}
.refer-tip {
  position: relative;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1.125rem;
  padding: 1.75rem 1.625rem 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  overflow: hidden;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.refer-tip::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 4px;
  background: var(--refer-accent, var(--ink-300));
}
.refer-tip:hover { box-shadow: 0 16px 36px -22px rgba(10,10,10,0.12); }

.refer-tip-pm { --refer-accent: #C76E4E; }
.refer-tip-ll { --refer-accent: #2C7CC2; }
.refer-tip-tn { --refer-accent: #3C9E56; }
.refer-tip-cn { --refer-accent: #6B5DD6; }

.refer-tip-eyebrow {
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--refer-accent, var(--ink-500));
  font-weight: 600;
  margin: 0;
}
.refer-tip-title {
  font-size: 1.125rem;
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0;
  line-height: 1.3;
}
.refer-tip-text {
  font-size: 0.9375rem;
  color: var(--ink-700);
  line-height: 1.55;
  margin: 0;
}
.refer-tip-link {
  font-size: 0.8125rem;
  color: var(--ink-700);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-weight: 500;
  border-bottom: 1px solid var(--ink-200);
  padding-bottom: 0.875rem;
  margin-bottom: 0.25rem;
}
.refer-tip-link:hover { color: var(--ink); }

.refer-tip-share {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.4rem;
  margin-top: auto;
}
.refer-share-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  padding: 0.45rem 0.4rem;
  border: 1px solid var(--ink-200);
  border-radius: 0.5rem;
  font-size: 0.75rem;
  color: var(--ink-700);
  background: white;
  text-decoration: none;
  font-weight: 500;
  transition: border-color 0.15s, color 0.15s, background 0.15s;
}
.refer-share-btn:hover {
  border-color: var(--ink);
  color: var(--ink);
  background: var(--ink-50);
}
.refer-share-btn svg { color: var(--ink-500); flex: none; }
.refer-share-btn:hover svg { color: var(--ink); }

/* Inline refer callout — placed at the bottom of solutions pages */
.refer-callout {
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1rem;
  padding: 1.25rem 1.5rem;
  display: flex;
  align-items: center;
  gap: 1.25rem;
  flex-wrap: wrap;
  justify-content: space-between;
  max-width: 760px;
  margin: 0 auto;
}
.refer-callout-text {
  font-size: 0.9375rem;
  color: var(--ink-700);
  line-height: 1.5;
  margin: 0;
}
.refer-callout-text strong { color: var(--ink); font-weight: 500; }
.refer-callout-cta {
  font-size: 0.875rem;
  color: var(--ink);
  font-weight: 500;
  text-decoration: none;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
.refer-callout-cta:hover { color: var(--ink-700); }

@media (max-width: 800px) {
  .refer-tips-grid { grid-template-columns: 1fr; }
  .refer-tip { padding: 1.5rem 1.375rem 1.25rem; }
  .refer-tip-share { grid-template-columns: repeat(2, 1fr); }
  .refer-callout { flex-direction: column; align-items: flex-start; gap: 0.625rem; }
}


/* ============================================================
   Book-a-demo page — soft grey background, single centered
   card containing the form. Brand icon at the top-left.
   ============================================================ */

.demo-page {
  background: var(--ink-50);
  padding: 9rem 1.5rem 2.5rem;
}
.demo-page-inner {
  max-width: 1100px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 4rem;
  align-items: start;
}

/* LEFT — brand mark + copy */
.demo-left {
  display: flex;
  flex-direction: column;
  gap: 1.75rem;
}
.demo-left-icon {
  width: 44px;
  height: 44px;
  display: block;
}
.demo-left-copy .eyebrow {
  margin-bottom: 0.75rem;
}
.demo-left-title {
  font-size: clamp(1.875rem, 3.25vw, 2.5rem);
  font-weight: 500;
  letter-spacing: -0.025em;
  line-height: 1.1;
  color: var(--ink);
  margin: 0;
}
.demo-left-sub {
  font-size: 1rem;
  color: var(--ink-600);
  line-height: 1.55;
  margin: 1rem 0 0;
  max-width: 32rem;
}
.demo-left-list {
  list-style: none;
  padding: 0;
  margin: 1.25rem 0 0;
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
  font-size: 0.9375rem;
  color: var(--ink-700);
}
.demo-left-list li {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
}

/* WhatsApp / phone contact card — sits under the trust list on the contact page */
.demo-wa-card {
  display: flex;
  align-items: center;
  gap: 0.875rem;
  margin-top: 1.5rem;
  padding: 0.875rem 1rem;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 0.75rem;
  text-decoration: none;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
  max-width: 22rem;
}
.demo-wa-card:hover {
  border-color: var(--ink-400);
  box-shadow: 0 12px 28px -18px rgba(10, 10, 10, 0.12);
  transform: translateY(-1px);
}
.demo-wa-icon {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: rgba(37, 211, 102, 0.12);
  color: #25D366;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
}
.demo-wa-text {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  flex: 1;
  min-width: 0;
}
.demo-wa-text-label {
  font-size: 0.75rem;
  color: var(--ink-500);
  letter-spacing: 0.02em;
}
.demo-wa-text-num {
  font-size: 0.9375rem;
  font-weight: 500;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.demo-wa-arrow {
  color: var(--ink-500);
  font-size: 1rem;
  flex: none;
}
.demo-wa-card:hover .demo-wa-arrow { color: var(--ink); }

/* Wider partner form — accommodate ~8 fields without becoming spindly */
.demo-page-partner .demo-page-inner { grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr); }
@media (max-width: 980px) {
  .demo-page-partner .demo-page-inner { grid-template-columns: 1fr; }
}

/* In-product preview chip — chat conversation in a frosted glass card */
.demo-preview {
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1rem;
  padding: 1rem 1.125rem 1.125rem;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.5) inset,
    0 12px 32px -16px rgba(10, 10, 10, 0.08);
  max-width: 26rem;
}
.demo-preview-head {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--ink-100);
  margin-bottom: 0.875rem;
}
.demo-preview-avatar {
  width: 1.875rem;
  height: 1.875rem;
  border-radius: 50%;
  background: linear-gradient(135deg, #94B49F, #5C8268);
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.75rem;
  font-weight: 600;
  flex: none;
}
.demo-preview-name {
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.2;
}
.demo-preview-loc {
  font-size: 0.6875rem;
  color: var(--ink-500);
  margin-top: 1px;
}
.demo-preview-msg {
  display: inline-block;
  font-size: 0.8125rem;
  line-height: 1.4;
  padding: 0.45rem 0.7rem;
  border-radius: 0.875rem;
  margin-bottom: 0.4rem;
  max-width: 85%;
  clear: both;
}
.demo-preview-msg-tenant {
  background: var(--ink-100);
  color: var(--ink);
  border-bottom-left-radius: 0.25rem;
  float: left;
}
.demo-preview-msg-lanten {
  background: var(--ink);
  color: white;
  border-bottom-right-radius: 0.25rem;
  float: right;
}
.demo-preview-status {
  clear: both;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin-top: 0.625rem;
  font-size: 0.6875rem;
  color: var(--ink-500);
  background: var(--ink-50);
  border: 1px solid var(--ink-200);
  border-radius: 9999px;
  padding: 0.25rem 0.625rem;
}
.demo-preview-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #D97757;
  animation: chipPulse 1.6s ease-in-out infinite;
}

/* RIGHT — form card */
.demo-card {
  width: 100%;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1.5rem;
  padding: 2.25rem 2.25rem 2rem;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.6) inset,
    0 24px 56px -24px rgba(10, 10, 10, 0.10),
    0 6px 16px -8px rgba(10, 10, 10, 0.05);
}

.demo-form {
  display: grid;
  gap: 1rem;
}
.demo-form .form-field { margin: 0; }
.demo-form .form-field label {
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--ink-700);
}
.demo-label-optional {
  color: var(--ink-400);
  font-weight: 400;
}
.demo-form input,
.demo-form textarea {
  border: 1px solid var(--ink-200);
  border-radius: 0.625rem;
  padding: 0.7rem 0.875rem;
  font-family: inherit;
  font-size: 0.9375rem;
  color: var(--ink);
  background: white;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.demo-form input:hover,
.demo-form textarea:hover {
  border-color: var(--ink-300);
}
.demo-form input:focus,
.demo-form textarea:focus {
  outline: none;
  border-color: var(--ink);
  box-shadow: 0 0 0 3px rgba(10, 10, 10, 0.06);
}
.demo-form textarea {
  min-height: 6rem;
  resize: vertical;
}

.demo-form-actions {
  margin-top: 0.5rem;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.75rem;
}
.demo-form-submit {
  width: 100%;
  justify-content: center;
  padding: 0.875rem 1.25rem;
  font-size: 0.9375rem;
  border-radius: 0.625rem;
}
.demo-form-fineprint {
  font-size: 0.8125rem;
  color: var(--ink-500);
  text-align: center;
  margin: 0;
}

.demo-page-trust {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.5rem 1.25rem;
  font-size: 0.8125rem;
  color: var(--ink-500);
}
.demo-page-trust li {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
}
.demo-trust-icon {
  width: 18px;
  height: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--ink-100);
  color: var(--ink);
}

@media (max-width: 960px) {
  .demo-page-inner {
    grid-template-columns: 1fr;
    gap: 2.5rem;
    max-width: 560px;
  }
  .demo-left { gap: 1.25rem; }
}
@media (max-width: 600px) {
  .demo-page { padding: 7rem 1rem 2rem; }
  .demo-card { padding: 1.75rem 1.5rem 1.5rem; border-radius: 1.25rem; }
  .demo-left-icon { width: 40px; height: 40px; }
}


/* ============================================================
   Section lede — centered, compact intro that sits directly
   below a hero. Distinct visual rhythm from the hero's split
   layout (which uses .two-col / .feature-hero-grid).
   ============================================================ */

.section-lede {
  max-width: 50rem;
  margin: 0 auto 3rem;
  text-align: center;
}
.section-lede .eyebrow {
  margin-bottom: 0.875rem;
}
.section-lede-headline {
  font-size: clamp(1.625rem, 3vw, 2.25rem);
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -0.025em;
  color: var(--ink);
  margin: 0;
}
.section-lede-sub {
  font-size: 1.0625rem;
  color: var(--ink-600);
  line-height: 1.55;
  max-width: 38rem;
  margin: 1.25rem auto 0;
}
@media (max-width: 768px) {
  .section-lede {
    margin-bottom: 2.25rem;
    text-align: left;
  }
  .section-lede-sub { margin-left: 0; margin-right: 0; }
}


/* ============================================================
   Channel cards & "Try it yourself" cards (AI Triage feature page)
   ============================================================ */

.channel-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
  margin-top: 3rem;
}
@media (max-width: 768px) {
  .channel-grid { grid-template-columns: 1fr; gap: 0.75rem; }
}

.channel-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.75rem;
  padding: 1.75rem;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1rem;
}
.channel-card-icon {
  width: 40px;
  height: 40px;
  border-radius: 0.625rem;
  background: var(--ink-50);
  border: 1px solid var(--ink-200);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--ink);
  flex: none;
}
.channel-card-title {
  font-size: 1.0625rem;
  font-weight: 500;
  color: var(--ink);
  margin: 0;
}
.channel-card-body {
  font-size: 0.9375rem;
  color: var(--ink-600);
  line-height: 1.55;
  margin: 0;
}

/* "Try it yourself" — clickable variant of the channel card */
.try-card {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  padding: 1.75rem;
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1rem;
  color: var(--ink) !important;
  text-decoration: none;
  transition: border-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}
.try-card:hover {
  border-color: var(--ink);
  transform: translateY(-2px);
  box-shadow: 0 12px 28px -10px rgba(10, 10, 10, 0.10);
}
.try-card-label {
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-500);
  font-weight: 500;
  margin-top: 0.125rem;
}
.try-card-target {
  font-size: 1rem;
  font-weight: 500;
  color: var(--ink);
  font-family: ui-monospace, "SF Mono", monospace;
  word-break: break-all;
  line-height: 1.35;
}
.try-card-cta {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--ink);
  margin-top: 0.5rem;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  transition: gap 0.15s ease;
}
.try-card:hover .try-card-cta { gap: 0.7rem; }


/* ============================================================
   Pricing calculator (pricing page) — interactive 2-column card
   ============================================================ */

.pricing-calc {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border: 1px solid var(--ink-200);
  border-radius: 1.5rem;
  overflow: hidden;
  background: white;
}

.pricing-calc-left {
  padding: 3rem 3rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.pricing-calc-q {
  font-size: clamp(1.5rem, 2.4vw, 2rem);
  font-weight: 500;
  letter-spacing: -0.025em;
  color: var(--ink);
  line-height: 1.2;
  margin: 0 0 1.5rem;
}
.pricing-calc-input {
  width: 100%;
  height: 64px;
  padding: 0 1.25rem;
  font-family: inherit;
  font-size: 1.5rem;
  font-weight: 500;
  color: var(--ink);
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 0.75rem;
  outline: none;
  transition: border-color 0.15s, box-shadow 0.15s;
  -moz-appearance: textfield;
}
.pricing-calc-input:hover { border-color: var(--ink-300); }
.pricing-calc-input:focus {
  border-color: var(--ink);
  box-shadow: 0 0 0 3px rgba(10, 10, 10, 0.06);
}
.pricing-calc-input::-webkit-outer-spin-button,
.pricing-calc-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.pricing-calc-help {
  font-size: 0.875rem;
  color: var(--ink-500);
  margin: 0.875rem 0 0;
}

.pricing-calc-right {
  padding: 2.25rem 2.5rem;
  background: var(--ink-50);
  border-left: 1px solid var(--ink-200);
  display: flex;
  flex-direction: column;
}

/* Monthly / Annual toggle */
.pricing-calc-toggle {
  display: inline-flex;
  align-self: flex-end;
  background: rgba(255, 255, 255, 0.6);
  border: 1px solid var(--ink-200);
  border-radius: 9999px;
  padding: 4px;
  margin-bottom: 1.75rem;
}
.pct-btn {
  padding: 0.5rem 1rem;
  border: none;
  background: transparent;
  font-family: inherit;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-500);
  border-radius: 9999px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  transition: color 0.15s, background 0.15s, box-shadow 0.15s;
}
.pct-btn:hover { color: var(--ink); }
.pct-btn.active {
  background: white;
  color: var(--ink);
  box-shadow: 0 0 0 0.5px var(--ink-200), 0 1px 2px rgba(10, 10, 10, 0.05);
}
.pct-save {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: #5B7CFF;
  background: rgba(91, 124, 255, 0.10);
  border-radius: 9999px;
  padding: 0.15rem 0.4rem;
}

/* Live price display */
.pricing-calc-display {
  margin-bottom: 1.75rem;
}
.pricing-calc-amount-row {
  display: flex;
  align-items: baseline;
  gap: 0.4rem;
}
.pricing-calc-amount {
  font-size: clamp(2.75rem, 5vw, 3.75rem);
  font-weight: 600;
  letter-spacing: -0.04em;
  line-height: 1;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.pricing-calc-period {
  font-size: 1rem;
  color: var(--ink-500);
}
.pricing-calc-unit-rate {
  font-size: 0.9375rem;
  color: var(--ink-700);
  margin-top: 0.625rem;
}
.pricing-calc-billing-note {
  font-size: 0.875rem;
  color: var(--ink-500);
  margin-top: 0.25rem;
}

/* Feature list with check chips */
.pricing-calc-features {
  list-style: none;
  padding: 0;
  margin: 0 0 1.5rem;
}
.pricing-calc-features li {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.45rem 0;
  font-size: 0.9375rem;
  color: var(--ink);
  line-height: 1.4;
}
.pricing-calc-features li::before {
  content: '';
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background-color: var(--ink-100);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'><path d='M3.5 8.5l3 3 6-6.5' stroke='%230A0A0A' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 14px 14px;
  flex: none;
}

/* CTAs */
.pricing-calc-ctas {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.875rem;
}
.pricing-calc-cta {
  width: 100%;
  justify-content: center;
  display: flex;
  padding: 0.875rem 1.25rem;
  font-size: 0.9375rem;
  border-radius: 0.625rem;
}
/* Secondary "Calculate savings" link — plain text + arrow, centered under the
   primary button. Matches the .pricing-link / hero secondary pattern. */
.pricing-calc-link {
  font-size: 0.9375rem;
  font-weight: 500;
  color: var(--ink);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.25rem 0.5rem;
}
.pricing-calc-link:hover { color: var(--ink-600); }

.pricing-calc-footnote {
  font-size: 0.8125rem;
  color: var(--ink-500);
  text-align: center;
  margin: 1rem 0 0;
}

/* Responsive — stack on tablet/phone */
@media (max-width: 900px) {
  .pricing-calc { grid-template-columns: 1fr; }
  .pricing-calc-left { padding: 2.25rem 2rem 1.5rem; }
  .pricing-calc-right {
    padding: 2rem;
    border-left: none;
    border-top: 1px solid var(--ink-200);
  }
}
@media (max-width: 480px) {
  .pricing-calc-left,
  .pricing-calc-right { padding: 1.75rem 1.25rem; }
  .pricing-calc-toggle { align-self: stretch; justify-content: center; }
}


/* ============================================================
   ROI calculator
   ============================================================ */

.calc-shell {
  display: grid;
  grid-template-columns: 1fr;
  gap: 3rem;
}
@media (min-width: 900px) {
  .calc-shell {
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1fr);
    gap: 5rem;
  }
}

.calc-toggle {
  display: inline-flex;
  background: var(--ink-50);
  border-radius: 9999px;
  padding: 4px;
  margin-bottom: 2rem;
  border: 1px solid var(--ink-200);
}
.calc-toggle button {
  padding: 0.5rem 1rem;
  border: none;
  background: transparent;
  font: inherit;
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-500);
  border-radius: 9999px;
  cursor: pointer;
  transition: background 0.2s, color 0.2s;
}
.calc-toggle button.active {
  background: white;
  color: var(--ink);
  box-shadow: 0 1px 2px rgba(10, 10, 10, 0.05);
}

.calc-inputs {
  display: grid;
  gap: 1.25rem;
}
.calc-input-group label {
  display: block;
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-500);
  margin-bottom: 0.5rem;
}
.calc-input-group label .info {
  display: inline-flex;
  width: 14px;
  height: 14px;
  margin-left: 0.25rem;
  border: 1px solid var(--ink-300);
  border-radius: 50%;
  align-items: center;
  justify-content: center;
  font-size: 9px;
  color: var(--ink-500);
  cursor: help;
  vertical-align: 1px;
}
.calc-input-wrap {
  position: relative;
  display: flex;
  align-items: center;
}
.calc-input-wrap input[type="number"] {
  width: 100%;
  padding: 0.75rem 0.875rem;
  border: 1px solid var(--ink-200);
  border-radius: 0.5rem;
  font: inherit;
  font-size: 1rem;
  color: var(--ink);
  background: white;
  -moz-appearance: textfield;
}
.calc-input-wrap input[type="number"]::-webkit-outer-spin-button,
.calc-input-wrap input[type="number"]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.calc-input-wrap .prefix,
.calc-input-wrap .suffix {
  position: absolute;
  font-size: 0.875rem;
  color: var(--ink-500);
  pointer-events: none;
}
.calc-input-wrap .prefix { left: 0.875rem; }
.calc-input-wrap .suffix { right: 0.875rem; }
.calc-input-wrap.has-prefix input { padding-left: 1.75rem; }
.calc-input-wrap.has-suffix input { padding-right: 2.25rem; }

.calc-slider-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 0.5rem;
}
.calc-slider-value {
  font-size: 0.9375rem;
  font-weight: 500;
  color: var(--ink);
}
.calc-slider {
  width: 100%;
  -webkit-appearance: none;
  appearance: none;
  background: transparent;
  height: 24px;
}
.calc-slider::-webkit-slider-runnable-track {
  height: 4px;
  background: var(--ink-200);
  border-radius: 2px;
}
.calc-slider::-moz-range-track {
  height: 4px;
  background: var(--ink-200);
  border-radius: 2px;
}
.calc-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--ink);
  margin-top: -6px;
  cursor: pointer;
}
.calc-slider::-moz-range-thumb {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--ink);
  cursor: pointer;
  border: none;
}
.calc-slider-labels {
  display: flex;
  justify-content: space-between;
  font-size: 0.75rem;
  color: var(--ink-500);
  margin-top: 0.25rem;
}

.calc-output {
  display: grid;
  gap: 2rem;
}
.calc-headline {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  margin-bottom: 1rem;
}
@media (max-width: 600px) {
  .calc-headline { grid-template-columns: 1fr; }
}
.calc-headline-block .label {
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-500);
  margin-bottom: 0.5rem;
}
.calc-headline-block .number {
  font-size: clamp(2rem, 4vw, 2.75rem);
  font-weight: 500;
  letter-spacing: -0.025em;
  line-height: 1;
  color: var(--ink);
  margin-bottom: 0.5rem;
}
.calc-headline-block .sub {
  font-size: 0.875rem;
  color: var(--ink-500);
}

.calc-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.9375rem;
}
.calc-table thead th {
  font-weight: 500;
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-500);
  padding: 0 0 0.875rem;
  text-align: right;
}
.calc-table thead th:first-child { text-align: left; }
.calc-table tbody tr { border-top: 1px solid var(--ink-200); }
.calc-table td {
  padding: 1rem 0;
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.calc-table td:first-child {
  text-align: left;
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-500);
  font-weight: 500;
}

/* ============================================================
   Blog list & post
   ============================================================ */

/* Blog toolbar — filter pills + sort dropdown */
.blog-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding-bottom: 1.25rem;
  border-bottom: 1px solid var(--ink-100);
  margin-bottom: 0;
}
.blog-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
.blog-filter-pill {
  padding: 0.45rem 0.85rem;
  border: 1px solid var(--ink-200);
  border-radius: 0.5rem;
  background: white;
  font-size: 0.8125rem;
  color: var(--ink-600);
  font-weight: 500;
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s, background 0.15s;
  font-family: inherit;
}
.blog-filter-pill:hover {
  border-color: var(--ink-400);
  color: var(--ink);
}
.blog-filter-pill.is-active {
  background: var(--ink);
  color: white;
  border-color: var(--ink);
}
.blog-sort {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.8125rem;
  color: var(--ink-600);
}
.blog-sort label {
  font-weight: 500;
  letter-spacing: 0.01em;
}
.blog-sort select {
  padding: 0.4rem 1.75rem 0.4rem 0.7rem;
  border: 1px solid var(--ink-200);
  border-radius: 0.5rem;
  background: white;
  font-size: 0.8125rem;
  color: var(--ink);
  font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  appearance: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10' fill='none'><path d='M2.5 4l2.5 2.5L7.5 4' stroke='%230f0f0d' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat: no-repeat;
  background-position: right 0.5rem center;
}

.blog-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.75rem;
  margin-top: 2.5rem;
}
@media (min-width: 768px) {
  .blog-grid { grid-template-columns: repeat(2, 1fr); gap: 1.5rem; }
}
@media (min-width: 1100px) {
  .blog-grid { grid-template-columns: repeat(3, 1fr); }
}
.blog-card {
  display: block;
  padding: 1.5rem 1.625rem;
  border: 1px solid var(--ink-200);
  border-radius: 1rem;
  transition: border-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
  color: var(--ink) !important;
  background: white;
  position: relative;
  overflow: hidden;
}
.blog-card::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 3px;
  background: var(--blog-accent, transparent);
  transition: width 0.15s ease;
}
.blog-card:hover {
  border-color: var(--ink-400);
  transform: translateY(-2px);
  box-shadow: 0 16px 32px -22px rgba(10, 10, 10, 0.10);
}
.blog-card:hover::before { width: 4px; }

/* Per-category accent and chip colors */
.blog-card[data-category="industry"]    { --blog-accent: #C76E4E; }
.blog-card[data-category="comparisons"] { --blog-accent: #2C7CC2; }
.blog-card[data-category="operations"]  { --blog-accent: #6B5DD6; }
.blog-card[data-category="playbooks"]   { --blog-accent: #C2741A; }
.blog-card[data-category="compliance"]  { --blog-accent: #3C9E56; }
.blog-card[data-category="business"]    { --blog-accent: var(--ink); }

.blog-card-meta {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  font-size: 0.75rem;
  color: var(--ink-500);
  margin-bottom: 0.875rem;
  letter-spacing: 0;
  text-transform: none;
  flex-wrap: wrap;
}
.blog-card-tag {
  display: inline-flex;
  align-items: center;
  padding: 0.2rem 0.5rem;
  border-radius: 0.3rem;
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.blog-card-tag-industry    { color: #C76E4E; background: rgba(199, 110, 78, 0.10); }
.blog-card-tag-comparisons { color: #2C7CC2; background: rgba(44, 124, 194, 0.10); }
.blog-card-tag-operations  { color: #6B5DD6; background: rgba(107, 93, 214, 0.10); }
.blog-card-tag-playbooks   { color: #C2741A; background: rgba(194, 116, 26, 0.10); }
.blog-card-tag-compliance  { color: #3C9E56; background: rgba(60, 158, 86, 0.10); }
.blog-card-tag-business    { color: var(--ink); background: var(--ink-100); }
/* New category tags from CSV migration */
.blog-card-tag-product   { color: #6B5DD6; background: rgba(107, 93, 214, 0.10); }
.blog-card-tag-research  { color: #2C7CC2; background: rgba(44, 124, 194, 0.10); }
.blog-card-tag-company   { color: #C2741A; background: rgba(194, 116, 26, 0.10); }
.blog-card[data-category="product"]   { --blog-accent: #6B5DD6; }
.blog-card[data-category="research"]  { --blog-accent: #2C7CC2; }
.blog-card[data-category="company"]   { --blog-accent: #C2741A; }

.blog-card-date {
  font-variant-numeric: tabular-nums;
  font-size: 0.75rem;
}
.blog-card-title {
  font-size: 1.0625rem;
  font-weight: 500;
  line-height: 1.3;
  margin: 0 0 0.5rem;
  color: var(--ink);
  letter-spacing: -0.005em;
}
.blog-card-excerpt {
  font-size: 0.875rem;
  line-height: 1.5;
  color: var(--ink-600);
  margin: 0;
}

/* Featured card — first card on each page */
.blog-card.is-featured {
  grid-column: 1 / -1;
  padding: 2.25rem 2.5rem 2rem;
  background: linear-gradient(135deg, var(--ink-50), white 60%);
  border-color: var(--ink-300);
}
.blog-card.is-featured::before { width: 4px; }
.blog-card.is-featured .blog-card-title {
  font-size: clamp(1.4rem, 2.4vw, 1.875rem);
  letter-spacing: -0.02em;
  line-height: 1.2;
  margin: 0.625rem 0 0.75rem;
  max-width: 38rem;
}
.blog-card.is-featured .blog-card-excerpt {
  font-size: 1rem;
  line-height: 1.55;
  color: var(--ink-700);
  max-width: 44rem;
}
.blog-card.is-featured .blog-card-meta {
  margin-bottom: 0.5rem;
}
.blog-card.is-featured .blog-card-meta::after {
  content: "Featured";
  margin-left: auto;
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-500);
  padding: 0.2rem 0.5rem;
  border: 1px solid var(--ink-200);
  border-radius: 0.3rem;
  background: white;
}

/* Filter / page hidden states */
.blog-card.is-filtered-out,
.blog-card.is-paged-out { display: none !important; }

/* Empty state */
.blog-empty {
  text-align: center;
  padding: 3rem 0;
  color: var(--ink-500);
  font-size: 0.9375rem;
}

/* Pagination */
.blog-pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  margin-top: 2.5rem;
  flex-wrap: wrap;
}
.blog-pagination-btn {
  padding: 0.5rem 0.85rem;
  border: 1px solid var(--ink-200);
  border-radius: 0.5rem;
  background: white;
  font-size: 0.8125rem;
  color: var(--ink-700);
  font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  font-variant-numeric: tabular-nums;
  min-width: 38px;
  transition: border-color 0.15s, color 0.15s, background 0.15s;
}
.blog-pagination-btn:hover:not(:disabled):not(.is-active) {
  border-color: var(--ink-400);
  color: var(--ink);
}
.blog-pagination-btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.blog-pagination-btn.is-active {
  background: var(--ink);
  color: white;
  border-color: var(--ink);
}

@media (max-width: 800px) {
  .blog-toolbar { flex-direction: column; align-items: stretch; gap: 0.875rem; }
  .blog-filter { justify-content: flex-start; }
  .blog-card.is-featured { padding: 1.75rem 1.5rem 1.5rem; }
}

/* Blog post body */
.blog-post {
  max-width: 44rem;
  margin: 0 auto;
}
.blog-post h2 {
  font-size: 1.5rem;
  font-weight: 500;
  margin: 3rem 0 1rem;
  letter-spacing: -0.02em;
}
.blog-post h3 {
  font-size: 1.125rem;
  font-weight: 500;
  margin: 2rem 0 0.75rem;
}
.blog-post p {
  font-size: 1rem;
  line-height: 1.7;
  color: var(--ink-700);
  margin: 0 0 1.25rem;
}
.blog-post ul, .blog-post ol {
  font-size: 1rem;
  line-height: 1.7;
  color: var(--ink-700);
  margin: 0 0 1.25rem;
  padding-left: 1.5rem;
}
.blog-post li { margin-bottom: 0.4rem; }
.blog-post blockquote {
  margin: 2rem 0;
  padding: 0 1.5rem;
  border-left: 3px solid var(--ink);
  color: var(--ink);
  font-size: 1.125rem;
  font-style: italic;
}

/* ============================================================
   FAQ accordion
   ============================================================ */

.faq-list {
  max-width: 48rem;
  margin: 3rem auto 0;
}
.faq-item {
  border-bottom: 1px solid var(--ink-200);
}
.faq-question {
  width: 100%;
  text-align: left;
  background: transparent;
  border: none;
  padding: 1.5rem 0;
  font: inherit;
  font-size: 1rem;
  font-weight: 500;
  color: var(--ink);
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
}
.faq-question::after {
  content: '+';
  font-size: 1.25rem;
  color: var(--ink-500);
  transition: transform 0.2s;
}
.faq-item.is-open .faq-question::after {
  content: '−';
}
.faq-answer {
  display: none;
  padding: 0 0 1.5rem;
  color: var(--ink-600);
  line-height: 1.6;
  font-size: 0.9375rem;
}
.faq-item.is-open .faq-answer { display: block; }

/* ============================================================
   Comparison table (compare/* pages)
   ============================================================ */

.compare-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 3rem;
  font-size: 0.9375rem;
}
.compare-table th, .compare-table td {
  padding: 1rem 1.25rem;
  text-align: left;
  border-bottom: 1px solid var(--ink-200);
}
.compare-table th {
  font-weight: 500;
  font-size: 0.8125rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ink-700);
  background: var(--ink-50);
}
.compare-table th.highlight { background: #efe9e1; }
.compare-table td.check-yes { color: var(--ink); font-weight: 500; }
.compare-table td.check-no { color: var(--ink-400); }

/* ============================================================
   Compact 404 + simple page styles
   ============================================================ */

.error-page {
  min-height: 70vh;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 5rem 1.5rem;
}
.error-code {
  font-size: clamp(4rem, 12vw, 8rem);
  font-weight: 500;
  letter-spacing: -0.04em;
  line-height: 1;
  color: var(--ink);
  margin-bottom: 1rem;
}

/* Long-prose legal pages */
.prose {
  max-width: 44rem;
  margin: 0 auto;
}
.prose h2 {
  font-size: 1.25rem;
  font-weight: 500;
  margin: 2.5rem 0 1rem;
  letter-spacing: -0.02em;
}
.prose p, .prose li {
  font-size: 0.9375rem;
  line-height: 1.7;
  color: var(--ink-700);
  margin-bottom: 1rem;
}
.prose ul, .prose ol { padding-left: 1.5rem; }


/* Powered by Anthropic — wordmark in the hero pill */
.anthropic-logo {
  height: 11px;
  width: auto;
  display: inline-block;
  vertical-align: -1px;
}


/* ============================================================
   ============================================================
   RESPONSIVE: comprehensive mobile + tablet polish.
   Added below all desktop rules so these specifically override.
   Breakpoints used:
     1023px — tablet/desktop boundary (mobile menu, stacked layouts)
      768px — phablets and below (tighter type, single columns)
      640px — phones (further compression, full-width CTAs)
      400px — very small phones (last-resort tightening)
   ============================================================
   ============================================================ */


/* ---------- Mobile menu drawer (built by mega-menu.js) ----------
   Full-height slide-in panel from the right with a sticky internal
   header (logo + close button). On phones it takes the full screen
   so the menu feels purposeful instead of a flimsy popover. */

.mobile-menu {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  width: min(440px, 100vw);
  max-width: 100vw;
  background: white;
  z-index: 200;
  transform: translateX(100%);
  transition: transform 0.32s cubic-bezier(0.32, 0.72, 0, 1);
  display: flex;
  flex-direction: column;
  box-shadow: -24px 0 48px -16px rgba(10, 10, 10, 0.18);
  overflow: hidden;
  pointer-events: none;
}
.mobile-menu.is-open {
  transform: translateX(0);
  pointer-events: auto;
}

.mobile-menu-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(10, 10, 10, 0.45);
  backdrop-filter: blur(6px) saturate(110%);
  -webkit-backdrop-filter: blur(6px) saturate(110%);
  z-index: 150;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.25s ease, visibility 0.25s ease;
}
.mobile-menu-backdrop.is-active {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

/* Lock body scroll while drawer is open */
body.mobile-menu-open {
  overflow: hidden;
  touch-action: none;
}

/* Sticky drawer header — Lanten wordmark on the left, close (X) on the right.
   Stays visible while the user scrolls the menu list below. */
.mobile-menu-header {
  flex: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 1.25rem;
  border-bottom: 1px solid var(--ink-100);
  background: white;
  min-height: 64px;
}
.mobile-menu-logo {
  display: inline-flex;
  align-items: center;
}
.mobile-menu-logo img {
  height: 26px;
  width: auto;
  display: block;
}
.mobile-menu-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 999px;
  border: 1px solid var(--ink-200);
  background: white;
  color: var(--ink);
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, transform 0.15s;
}
.mobile-menu-close:hover {
  background: var(--ink-50);
  border-color: var(--ink-300);
}
.mobile-menu-close:active { transform: scale(0.96); }

.mobile-menu-panel {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 1rem 1.25rem 1.5rem;
  gap: 0.125rem;
}

.mm-link {
  display: block;
  padding: 1rem 0.25rem;
  font-size: 1.0625rem;
  font-weight: 500;
  color: var(--ink) !important;
  border-bottom: 1px solid var(--ink-100);
}

.mm-group {
  border-bottom: 1px solid var(--ink-100);
}
.mm-group-trigger {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: transparent;
  border: none;
  padding: 1rem 0.25rem;
  font: inherit;
  font-size: 1.0625rem;
  font-weight: 500;
  color: var(--ink);
  cursor: pointer;
  text-align: left;
}
.mm-group-trigger svg {
  transition: transform 0.2s;
  opacity: 0.55;
}
.mm-group.is-open .mm-group-trigger svg {
  transform: rotate(180deg);
}
.mm-group-body {
  display: none;
  padding: 0 0.25rem 1rem;
}
.mm-group.is-open .mm-group-body {
  display: block;
}
.mm-eyebrow {
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-500);
  padding: 0.875rem 0 0.5rem;
}
.mm-eyebrow:first-child {
  padding-top: 0.25rem;
}
.mm-item {
  display: block;
  padding: 0.625rem 0;
  color: var(--ink) !important;
}
.mm-item-title {
  font-size: 0.9375rem;
  font-weight: 500;
  color: var(--ink);
}
.mm-item-sub {
  font-size: 0.8125rem;
  color: var(--ink-600);
  margin-top: 0.125rem;
  line-height: 1.45;
}

.mm-footer {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 1.25rem;
  border-top: 1px solid var(--ink-200);
  background: var(--ink-50);
  /* Stick to the bottom of the panel so the CTAs are always reachable */
  position: sticky;
  bottom: 0;
  margin: auto -1.25rem -1.5rem;
}
.mm-signin {
  text-align: center;
  padding: 0.75rem 1rem;
  font-size: 0.9375rem;
  font-weight: 500;
  color: var(--ink) !important;
  border: 1px solid var(--ink-200);
  border-radius: 0.625rem;
  background: white;
}
.mm-cta {
  text-align: center;
  padding: 0.875rem 1rem;
  font-size: 0.9375rem;
  font-weight: 500;
  color: white !important;
  background: var(--ink);
  border-radius: 0.625rem;
}


/* ---------- Hamburger button: 3-bar icon that animates to an X ----------
   The button has 3 spans. When .is-active is added, the top + bottom
   bars rotate to form an X and the middle bar fades out. */

.nav-hamburger {
  position: relative;
  z-index: 201;  /* sit above the drawer so it stays clickable */
  transition: transform 0.2s;
}
.nav-hamburger span {
  transition: transform 0.25s ease, opacity 0.2s ease, background 0.25s ease;
  transform-origin: center;
}
/* When over a dark hero, hamburger needs to be white */
.nav:not(.is-scrolled):not(.is-static-light) .nav-hamburger span {
  background: white;
}
/* When the drawer is open, force the bars to ink so they sit against white panel */
body.mobile-menu-open .nav-hamburger span {
  background: var(--ink);
}
/* Animate to X when open. Top bar rotates down, bottom bar rotates up,
   middle bar fades out. Distances assume 5px gap between bars. */
.nav-hamburger.is-active span:nth-child(1) {
  transform: translateY(6px) rotate(45deg);
}
.nav-hamburger.is-active span:nth-child(2) {
  opacity: 0;
  transform: scaleX(0.4);
}
.nav-hamburger.is-active span:nth-child(3) {
  transform: translateY(-6px) rotate(-45deg);
}

/* While the mobile menu is open, the underlying nav looks light so the logo
   stays visible. Apply this regardless of scroll state. */
body.mobile-menu-open .nav {
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  border-bottom-color: rgba(10, 10, 10, 0.06);
}
body.mobile-menu-open .nav .wordmark img { filter: brightness(0); }
/* Once the drawer is open, hide the page-level hamburger so users only see
   the explicit close X inside the drawer header — no double affordance. */
body.mobile-menu-open .nav-hamburger {
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.18s;
}


/* ---------- Storyboard fallback for mobile ---------- */
/* sv2-section uses sticky scrolly + absolutely positioned panels — that breaks
   on small screens. We replace it with a simple stacked list of all 8 steps
   and hide the right-column demo panels entirely. */
@media (max-width: 1023px) {
  .sv2-section { padding: 1rem 0 4rem; }
  .sv2-stage {
    position: static;
    min-height: 0;
    padding: 0;
    display: block;
  }
  .sv2-trigger { display: none; }
  .sv2-grid { display: block; gap: 0; }

  .sv2-left {
    position: static;
    height: auto;
    padding-top: 0;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
  }
  .sv2-step {
    position: static;
    opacity: 1;
    transform: none;
    pointer-events: auto;
    padding-top: 1.25rem;
    border-top-color: var(--ink-200);
  }
  .sv2-step.is-active { border-top-color: var(--ink); }

  .sv2-right { display: none; }
  .sv2-progress { display: none; }
  .sv2-controls { display: none; }
  .story-intro { padding: 4rem 0 2rem; }
  .story-intro-headline { font-size: clamp(1.375rem, 5.5vw, 1.75rem); }
}


/* ---------- Tables: scroll horizontally on small screens ---------- */
@media (max-width: 768px) {
  .pricing-table,
  .compare-table,
  .calc-table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    white-space: nowrap;
  }
  .pricing-table th, .pricing-table td,
  .compare-table th, .compare-table td {
    padding: 0.75rem 0.875rem;
    font-size: 0.8125rem;
  }
  .compare-table {
    white-space: normal;
    min-width: 0;
  }
  .compare-table th, .compare-table td {
    white-space: normal;
  }
}


/* ---------- Container + section padding tightening ---------- */
@media (max-width: 768px) {
  .container,
  .container-narrow { padding: 0 1.5rem; }

  /* Section verticals */
  section { padding: 4rem 0; }
  section.tall { padding: 5rem 0; }
  .final-cta { padding: 4rem 0; }
  /* Footer needs explicit horizontal padding (its container provides it,
     but we belt-and-brace it here to guarantee no flush-to-edge content
     on any phone). Top padding is generous so the Lanten logo doesn't
     jam up against whatever section sits above the footer (especially
     the AI summary band). The safe-area-inset handles iPhone notches. */
  .footer-inner {
    padding-top: 4rem;
    padding-bottom: 2rem;
    padding-left: max(1.5rem, env(safe-area-inset-left));
    padding-right: max(1.5rem, env(safe-area-inset-right));
  }
  /* Belt-and-brace: the footer itself gets the same horizontal safe area
     so any element inside (including the bottom bar) can never run flush
     to the device edge. */
  .footer {
    padding-left: env(safe-area-inset-left);
    padding-right: env(safe-area-inset-right);
  }

  /* Footer breaks into two columns rather than four for compactness */
  .footer-grid { grid-template-columns: 1fr; gap: 2.5rem; }
  /* Make sure no footer column or bottom row leaks past the gutter */
  .footer-bottom { width: 100%; }
  .footer-llm-list { padding-left: 0; }
  .footer-llm-list li { word-break: break-word; }

  /* Tighter type for inner-page heroes */
  .inner-hero h1 { font-size: clamp(1.75rem, 7.5vw, 2.5rem); }
  .inner-hero-sub { font-size: 1rem; }

  /* Pricing teaser stacks */
  .pricing-grid { gap: 2.5rem; }
  .price-card,
  .pricing-card { padding: 1.5rem; }
  .price-big,
  .pricing-amount { font-size: 2.25rem; }

  /* Final CTA */
  .final-cta h2 { font-size: clamp(1.5rem, 6vw, 2rem); }

  /* Generic content section — reduce top space when stacked */
  .content-section { padding: 4rem 0; }
  .content-section:not(.alt) + .content-section:not(.alt) { padding-top: 0; }
  .content-section.alt + .content-section.alt { padding-top: 0; }

  /* Step list: looser left padding on mobile so the number doesn't crowd text */
  .step-list { gap: 1.5rem; }

  /* Forms */
  .form-grid,
  .form-grid.cols-2 { max-width: 100%; }

  /* Pricing tiers card padding */
  .pricing-tier { padding: 1.5rem; }
  .pricing-tier-amount { font-size: 2rem; }

  /* CTA strip */
  .cta-strip { padding: 4rem 0; }
  .cta-strip h2 { font-size: clamp(1.5rem, 6vw, 2rem); }

  /* Two-col grid on problem/pricing sections */
  .two-col { gap: 2rem; }

  /* AI summary block — give it more breathing room when stacked */
  .ai-summary { margin-top: 2rem; padding-top: 2rem; }
}


/* ---------- Phone: ≤640px ---------- */
@media (max-width: 640px) {
  /* Tighter container gutters on phones — but keep a real gutter so the
     content never sits flush to the device edge. */
  .container,
  .container-narrow { padding: 0 1.25rem; }
  .hero > .container { padding: 0 1.25rem; }
  .footer-inner {
    padding-left: max(1.25rem, env(safe-area-inset-left));
    padding-right: max(1.25rem, env(safe-area-inset-right));
  }

  /* Hide the inline "Sign in" link on phones — it lives in the drawer instead */
  .nav-signin { display: none; }

  /* Drop the section vertical rhythm a touch */
  section { padding: 3.5rem 0; }
  /* Keep generous top padding so the Lanten logo isn't jammed against
     the section above (e.g. the AI summary band). Horizontal padding
     is set on the rule above. */
  .footer-inner {
    padding-top: 3.5rem;
    padding-bottom: 1.75rem;
  }

  /* Hero meta wrap nicely; hide the divider lines so wrapped meta reads cleanly */
  .hero-meta-light { gap: 0.5rem 0.875rem; }
  .hero-divider-light { display: none; }

  /* Hero CTAs — make primary fill width for thumb-friendly tap */
  .hero-ctas { gap: 0.5rem; }
  .hero-ctas .btn-primary-light,
  .hero-ctas .btn-glass {
    flex: 1 1 auto;
    justify-content: center;
    min-width: 0;
  }

  /* Inner-hero CTAs go full width */
  .inner-hero-actions { flex-direction: column; align-items: stretch; }
  .inner-hero-actions .btn-primary,
  .inner-hero-actions .btn-secondary,
  .inner-hero-actions .btn-outline {
    width: 100%;
    justify-content: center;
  }

  /* Pricing actions stack */
  .pricing-actions { flex-direction: column; align-items: flex-start; }
  .pricing-actions .btn-primary { width: 100%; justify-content: center; }

  /* Footer bottom line — center alignment looks better stacked */
  .footer-bottom { gap: 0.75rem; align-items: flex-start; }
  .footer-bottom-left,
  .footer-bottom-right {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 0.75rem;
  }

  /* Pricing card small adjustments */
  .pricing-amount { font-size: 2rem; }

  /* Outcome stats stack with a little space between each */
  .outcome-grid { gap: 2rem; }

  /* AI summary icons should be tappable, not overflowing */
  .ai-summary-icons { gap: 0.5rem; }
  .ai-icon { width: 40px; height: 40px; }

  /* Story intro arrow smaller */
  .story-intro { padding: 3rem 0 1.5rem; }
}


/* ---------- Very small phones: ≤400px ---------- */
@media (max-width: 400px) {
  .container,
  .container-narrow,
  .hero > .container { padding: 0 0.875rem; }

  .nav-cta { padding: 0.5rem 0.75rem; font-size: 0.8125rem; }
  .wordmark img { height: 24px; }

  .display-2xl { font-size: clamp(2rem, 9vw, 2.625rem); }

  /* Hero sub slightly smaller so it doesn't crowd a 360px viewport */
  .hero-sub-light { font-size: 0.9375rem; }

  /* Hero bubbles can run a touch wider */
  .hero-bubble { max-width: 96%; padding: 0.5rem 0.75rem 0.625rem; }
  .bubble-text { font-size: 0.8125rem; }

  /* Inner-hero h1 a bit tighter */
  .inner-hero h1 { font-size: 1.625rem; }

  /* Drawer takes the full screen width comfortably */
  .mobile-menu { width: 100vw; }
}


/* ---------- Honor reduced motion preference ---------- */
@media (prefers-reduced-motion: reduce) {
  .mobile-menu { transition: none; }
  .nav-hamburger span { transition: none; }
}


/* ============================================================
   Homepage features summary — Sierra-style colored cards
   ============================================================ */

.features-summary {
  padding: 5rem 0 4rem;
  background: white;
}
.features-summary-header {
  max-width: 48rem;
  margin: 0 0 2.5rem;
}
.features-summary-header h2 {
  margin-top: 0.875rem;
}

.features-summary-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
}
.features-card-large {
  grid-column: 1 / -1;
}

.features-card {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-height: 320px;
  padding: 1.75rem;
  border-radius: 1.5rem;
  color: white !important;
  overflow: hidden;
  isolation: isolate;
  transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1),
              box-shadow 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  text-decoration: none;
}
.features-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 18px 36px -12px rgba(10, 10, 10, 0.18);
}
.features-card-large { min-height: 460px; padding: 2.25rem; }

/* Very subtle grain — just enough texture to feel premium, not enough to
   compete with the gradient or the content above it. */
.features-card::before,
.feature-hero-visual::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.95' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  background-size: 240px 240px;
  opacity: 0.18;
  mix-blend-mode: overlay;
  pointer-events: none;
  z-index: 0;
}
.features-card > * { position: relative; z-index: 1; }

/* Card palettes — refined 2-tone diagonal gradients with a single soft
   accent blob in the upper corner. Calm, on-brand, not "lava lamp". */
.features-card-ink,
.feature-hero-visual-ink {
  background-color: #2A3F36;
  background-image:
    radial-gradient(ellipse 60% 50% at 85% 15%, rgba(255, 255, 255, 0.10) 0%, transparent 60%),
    linear-gradient(155deg, #2F4940 0%, #16201D 100%);
}
.features-card-blue,
.feature-hero-visual-blue {
  background-color: #2F548A;
  background-image:
    radial-gradient(ellipse 60% 50% at 85% 15%, rgba(255, 255, 255, 0.12) 0%, transparent 60%),
    linear-gradient(155deg, #3A6098 0%, #1B355C 100%);
}
.features-card-clay,
.feature-hero-visual-clay {
  background-color: #B36046;
  background-image:
    radial-gradient(ellipse 60% 50% at 85% 15%, rgba(255, 255, 255, 0.10) 0%, transparent 60%),
    linear-gradient(155deg, #C16C50 0%, #6E3526 100%);
}
.features-card-sage,
.feature-hero-visual-sage {
  background-color: #5E7359;
  background-image:
    radial-gradient(ellipse 60% 50% at 85% 15%, rgba(255, 255, 255, 0.10) 0%, transparent 60%),
    linear-gradient(155deg, #647A5E 0%, #2F3D2C 100%);
}

/* Photo variants — each feature page sets --bg-image on the panel. The
   shared SVG-noise overlay is suppressed in favour of a soft dark wash so
   the chat / quote / kanban / log content reads with extra contrast. */
.feature-hero-visual-photo {
  background-color: #1a1a1a;
  background-image: var(--bg-image);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.feature-hero-visual-photo::before {
  display: block;
  background-image: linear-gradient(160deg, rgba(0, 0, 0, 0.18) 0%, rgba(0, 0, 0, 0.32) 100%);
  background-size: cover;
  opacity: 1;
  mix-blend-mode: normal;
}

.feature-hero-visual-photo-triage     { --bg-image: url('../ai-triage-hero-bg.jpg'); }
.feature-hero-visual-photo-dispatch   { --bg-image: url('../contractor-dispatch-hero-bg.jpg'); }
.feature-hero-visual-photo-tracking   { --bg-image: url('../live-issue-tracking-hero-bg.jpg'); }
.feature-hero-visual-photo-audit      { --bg-image: url('../audit-trail-hero-bg.jpg'); }

/* Homepage feature cards — same photo treatment, mirrored modifiers */
.features-card-photo {
  background-color: #1a1a1a;
  background-image: var(--bg-image);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.features-card-photo::before {
  display: block;
  background-image: linear-gradient(160deg, rgba(0, 0, 0, 0.18) 0%, rgba(0, 0, 0, 0.32) 100%);
  background-size: cover;
  opacity: 1;
  mix-blend-mode: normal;
}
.features-card-photo-triage     { --bg-image: url('../ai-triage-hero-bg.jpg'); }
.features-card-photo-dispatch   { --bg-image: url('../contractor-dispatch-hero-bg.jpg'); }
.features-card-photo-tracking   { --bg-image: url('../live-issue-tracking-hero-bg.jpg'); }
.features-card-photo-audit      { --bg-image: url('../audit-trail-hero-bg.jpg'); }

.features-card-top { display: flex; flex-direction: column; gap: 0.5rem; }
.features-card-eyebrow {
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.6);
}
.features-card-title {
  font-size: 1.5rem;
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -0.02em;
  color: white;
  margin: 0;
}
.features-card-large .features-card-title {
  font-size: clamp(1.75rem, 3vw, 2.25rem);
}

.features-card-foot {
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
  margin-top: 1rem;
}
.features-card-body {
  font-size: 0.9375rem;
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.85);
  max-width: 32rem;
}
.features-card-large .features-card-body { font-size: 1.0625rem; }
.features-card-link {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.875rem;
  font-weight: 500;
  color: white;
  letter-spacing: 0.01em;
}
.features-card-link svg { transition: transform 0.2s; }
.features-card:hover .features-card-link svg { transform: translateX(3px); }

/* Card "visual" container — centered, decorative */
.features-card-visual {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.25rem 0;
  min-height: 0;
}

/* ---- AI Triage card visuals: floating glass chat bubbles ---- */
.features-card-large .features-card-visual {
  flex-direction: column;
  align-items: stretch;
  gap: 0.5rem;
  max-width: 28rem;
  margin: 0 auto;
}
.fcv-msg {
  font-size: 0.875rem;
  padding: 0.625rem 0.875rem;
  border-radius: 0.875rem;
  max-width: 80%;
  line-height: 1.45;
  backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
}
.fcv-msg-tenant {
  align-self: flex-start;
  background: rgba(255, 255, 255, 0.16);
  border: 1px solid rgba(255, 255, 255, 0.20);
  color: white;
  border-bottom-left-radius: 0.25rem;
}
.fcv-msg-lanten {
  align-self: flex-end;
  background: rgba(255, 255, 255, 0.92);
  color: var(--ink);
  border-bottom-right-radius: 0.25rem;
}

/* ---- Contractor Dispatch: quote card ---- */
.fcv-quote {
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.22);
  backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
  border-radius: 1rem;
  padding: 1rem 1.125rem;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  width: 100%;
  max-width: 16rem;
}
.fcv-quote-from {
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.7);
  letter-spacing: 0.04em;
}
.fcv-quote-amount {
  font-size: 2rem;
  font-weight: 500;
  letter-spacing: -0.02em;
  color: white;
  font-variant-numeric: tabular-nums;
}
.fcv-quote-meta {
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.65);
}

/* ---- Live Issue Tracking: kanban preview ---- */
.fcv-kanban {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.5rem;
  width: 100%;
  max-width: 18rem;
}
.fcv-kcol {
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 0.625rem;
  padding: 0.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
  min-height: 7rem;
}
.fcv-kchip {
  font-size: 0.625rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.7);
  font-weight: 500;
}
.fcv-kcard {
  background: rgba(255, 255, 255, 0.18);
  border-radius: 0.375rem;
  height: 1.25rem;
}

/* ---- Audit Trail: log rows ---- */
.fcv-log {
  width: 100%;
  max-width: 18rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  font-family: ui-monospace, "SF Mono", monospace;
}
.fcv-log-row {
  display: flex;
  align-items: center;
  gap: 0.875rem;
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.85);
  padding: 0.4rem 0.625rem;
  background: rgba(255, 255, 255, 0.08);
  border-left: 2px solid rgba(255, 255, 255, 0.4);
  border-radius: 0.25rem;
}
.fcv-log-time {
  color: rgba(255, 255, 255, 0.55);
  font-variant-numeric: tabular-nums;
}

/* Mobile / tablet adjustments */
@media (max-width: 1023px) {
  .features-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .features-card-large { grid-column: 1 / -1; }
}
@media (max-width: 640px) {
  .features-summary { padding: 3.5rem 0 3rem; }
  .features-summary-header { margin-bottom: 2rem; }
  .features-summary-grid { grid-template-columns: 1fr; gap: 0.875rem; }
  .features-card { min-height: 260px; padding: 1.5rem; }
  .features-card-large { min-height: 360px; padding: 1.75rem; }
  .features-card-title { font-size: 1.375rem; }
  .features-card-large .features-card-title { font-size: 1.625rem; }
  .features-card-body { font-size: 0.9375rem; }
  .features-card-large .features-card-body { font-size: 1rem; }
}


/* ============================================================
   Feature page hero — split layout with a colored illustration
   panel that mirrors the matching homepage feature card.
   ============================================================ */

.feature-hero {
  padding: 8rem 0 3rem;
}
.feature-hero + .content-section { padding-top: 3rem; }
.feature-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 4rem;
  align-items: center;
}
.feature-hero .inner-hero-inner {
  max-width: 36rem;
}

.feature-hero-visual {
  position: relative;
  border-radius: 1.5rem;
  padding: 2.25rem;
  min-height: 380px;
  color: white !important;
  overflow: hidden;
  isolation: isolate;
  display: flex;
  align-items: center;
  justify-content: center;
}
/* Note: .feature-hero-visual::before is shared with .features-card::before above
   (grainy noise overlay), and the .feature-hero-visual-* palettes are also
   defined alongside the homepage card palettes for a single source of truth. */
.feature-hero-visual > * { position: relative; z-index: 1; width: 100%; }

/* Chat preview (AI Triage) */
.fhv-chat {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  width: 100%;
  max-width: 26rem;
  margin: 0 auto;
}
.fhv-chat .fcv-msg { font-size: 0.9375rem; padding: 0.7rem 0.95rem; }

/* Contractor Dispatch — name strip + quote + action buttons */
.fhv-stack {
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
  width: 100%;
  max-width: 22rem;
  margin: 0 auto;
}
.fhv-contact-row {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}
.fhv-avatar {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.18);
  border: 1px solid rgba(255, 255, 255, 0.28);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  font-size: 0.9375rem;
  color: white;
}
.fhv-name {
  font-size: 0.9375rem;
  font-weight: 500;
  color: white;
  line-height: 1.2;
}
.fhv-meta {
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.7);
  margin-top: 2px;
}
.fhv-actions {
  display: flex;
  gap: 0.5rem;
}
.fhv-btn {
  flex: 1;
  text-align: center;
  font-size: 0.8125rem;
  font-weight: 500;
  padding: 0.55rem 0.75rem;
  border-radius: 0.5rem;
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.22);
  color: rgba(255, 255, 255, 0.95);
  letter-spacing: 0.01em;
}
.fhv-btn-primary {
  background: white;
  color: var(--ink);
  border-color: white;
}

/* Kanban (Live Issue Tracking) */
.fhv-kanban {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.625rem;
  width: 100%;
  max-width: 26rem;
  margin: 0 auto;
}
.fhv-kcol {
  background: rgba(255, 255, 255, 0.10);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 0.75rem;
  padding: 0.625rem;
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  min-height: 11rem;
}
.fhv-kchip {
  font-size: 0.6875rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.78);
  font-weight: 500;
  padding-bottom: 0.125rem;
}
.fhv-kcard {
  background: rgba(255, 255, 255, 0.18);
  border-radius: 0.5rem;
  padding: 0.5rem 0.625rem;
  min-height: 2.25rem;
}
.fhv-kcard-id {
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 0.625rem;
  color: rgba(255, 255, 255, 0.7);
  letter-spacing: 0.04em;
}
.fhv-kcard-title {
  font-size: 0.75rem;
  color: white;
  font-weight: 500;
  margin-top: 0.15rem;
  line-height: 1.3;
}
.fhv-kcard-priority {
  display: inline-block;
  font-size: 0.5625rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  background: rgba(255, 255, 255, 0.22);
  color: white;
  padding: 0.125rem 0.375rem;
  border-radius: 9999px;
  margin-top: 0.4rem;
}

/* Log (Audit Trail) */
.fhv-log {
  width: 100%;
  max-width: 26rem;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  font-family: ui-monospace, "SF Mono", monospace;
}
.fhv-log-row {
  display: flex;
  align-items: center;
  gap: 0.875rem;
  font-size: 0.8125rem;
  color: rgba(255, 255, 255, 0.92);
  padding: 0.5rem 0.75rem;
  background: rgba(255, 255, 255, 0.10);
  border-left: 2px solid rgba(255, 255, 255, 0.55);
  border-radius: 0.25rem;
}
.fhv-log-time {
  color: rgba(255, 255, 255, 0.6);
  font-variant-numeric: tabular-nums;
  flex: none;
  width: 3.25rem;
}

/* Responsive — stack illustration below text on tablet/phone */
@media (max-width: 1023px) {
  .feature-hero { padding: 7rem 0 3.5rem; }
  .feature-hero-grid {
    grid-template-columns: 1fr;
    gap: 2.5rem;
  }
  .feature-hero-visual { min-height: 320px; padding: 1.75rem; }
  .feature-hero .inner-hero-inner { max-width: 100%; }
}
@media (max-width: 640px) {
  .feature-hero { padding: 6rem 0 3rem; }
  .feature-hero-visual { min-height: 280px; padding: 1.5rem; border-radius: 1.25rem; }
  .fhv-chat { max-width: 100%; }
  .fhv-chat .fcv-msg { font-size: 0.875rem; }
  .fhv-kanban { gap: 0.4rem; }
  .fhv-kcol { padding: 0.5rem; min-height: 9rem; }
  .fhv-log-row { font-size: 0.75rem; }
}


/* ---------- Global safety nets ---------- */

/* Stop oversized images / video / inline SVG from blowing out a layout */
img, video, svg, iframe {
  max-width: 100%;
}
img, video {
  height: auto;
}

/* Allow long words / URLs in copy to wrap rather than overflow on phones */
@media (max-width: 768px) {
  h1, h2, h3, h4, p {
    overflow-wrap: break-word;
  }
  /* Don't let any descendant blow past the viewport */
  html, body { overflow-x: hidden; }
}
/* Final 5-category taxonomy tags */
.blog-card-tag-ai-tools   { color: #2C7CC2; background: rgba(44, 124, 194, 0.10); }
.blog-card[data-category="ai-tools"]  { --blog-accent: #2C7CC2; }
.blog-card-tag-maintenance { color: #C76E4E; background: rgba(199, 110, 78, 0.10); }
.blog-card[data-category="maintenance"] { --blog-accent: #C76E4E; }

/* Footer "LLM Resources" collapsible dropdown */
.footer-llm {
  margin: 1.25rem 0 0.875rem;
  padding-bottom: 0.875rem;
  border-bottom: 1px solid var(--ink-200);
  max-width: 16rem;
}
.footer-llm-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background: none;
  border: 0;
  padding: 0;
  font-family: inherit;
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--ink);
  cursor: pointer;
  letter-spacing: -0.005em;
}
.footer-llm-chevron {
  display: inline-block;
  font-size: 0.625rem;
  color: var(--ink-500);
  transition: transform 0.18s ease;
}
.footer-llm.is-open .footer-llm-chevron { transform: rotate(180deg); }
.footer-llm-list {
  display: none;
  flex-direction: column;
  gap: 0.4rem;
  margin: 0.625rem 0 0;
  padding: 0;
  list-style: none;
}
.footer-llm.is-open .footer-llm-list { display: flex; }
.footer-llm-list a {
  font-size: 0.8125rem;
  color: var(--ink-600);
  text-decoration: none;
  transition: color 0.15s ease;
}
.footer-llm-list a:hover { color: var(--ink); }

/* FAQ page — accordion-style question/answer blocks */
.faq-section { padding: 3rem 0 4rem; }
.faq-section + .faq-section { padding-top: 0; }
.faq-section-title {
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-500);
  margin: 0 0 1rem;
  padding-bottom: 0.625rem;
  border-bottom: 1px solid var(--ink-200);
}
.faq-block {
  border-bottom: 1px solid var(--ink-100);
}
.faq-block:last-child { border-bottom: 0; }
.faq-q {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 0;
  background: none;
  border: 0;
  text-align: left;
  font-family: inherit;
  font-size: 1rem;
  font-weight: 500;
  color: var(--ink);
  cursor: pointer;
  letter-spacing: -0.005em;
  line-height: 1.4;
}
.faq-q-icon {
  flex: none;
  width: 18px;
  height: 18px;
  position: relative;
}
.faq-q-icon::before,
.faq-q-icon::after {
  content: "";
  position: absolute;
  background: var(--ink-600);
  transition: transform 0.18s ease, opacity 0.18s ease;
}
.faq-q-icon::before { top: 8px; left: 0; width: 18px; height: 2px; }
.faq-q-icon::after  { left: 8px; top: 0; height: 18px; width: 2px; }
.faq-block.is-open .faq-q-icon::after { opacity: 0; transform: rotate(90deg); }
.faq-a {
  display: none;
  padding: 0 0 1.125rem;
  color: var(--ink-700);
  font-size: 0.9375rem;
  line-height: 1.6;
  max-width: 56rem;
}
.faq-block.is-open .faq-a { display: block; }
.faq-a p { margin: 0 0 0.625rem; }
.faq-a p:last-child { margin: 0; }
.faq-a a { color: var(--ink); border-bottom: 1px solid var(--ink-300); text-decoration: none; }
.faq-a a:hover { border-bottom-color: var(--ink); }

/* Back-to-blog link on individual posts */
.back-to-blog {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--ink-600);
  text-decoration: none;
  margin-bottom: 1.25rem;
  padding: 0.4rem 0.7rem 0.4rem 0.5rem;
  border-radius: 0.4rem;
  border: 1px solid var(--ink-200);
  background: white;
  transition: border-color 0.15s ease, color 0.15s ease, transform 0.15s ease;
}
.back-to-blog:hover {
  border-color: var(--ink-400);
  color: var(--ink);
  transform: translateX(-2px);
}


/* ============================================================
   ============================================================
   MOBILE SWEEP — final responsive polish across all pages.
   This block runs LAST so it overrides anything earlier.
   ============================================================
   ============================================================ */

/* Global guard: nothing should ever overflow horizontally on mobile */
@media (max-width: 1023px) {
  html, body { overflow-x: hidden; max-width: 100vw; }
  img, video, iframe, svg { max-width: 100%; height: auto; }
  pre, code { white-space: pre-wrap; word-wrap: break-word; }
}

/* ---- Tablet/phablet (≤900px): grids collapse, generous gutters ---- */
@media (max-width: 900px) {
  /* Comparison hero / inner-hero */
  .compare-hero, .feature-hero, .solutions-hero {
    text-align: left;
  }
  .compare-hero h1, .feature-hero h1, .solutions-hero h1 {
    font-size: clamp(1.875rem, 6vw, 2.625rem);
    line-height: 1.1;
  }

  /* Two-up content sections collapse cleanly */
  .feature-grid,
  .solutions-grid,
  .pillar-grid,
  .audience-grid {
    grid-template-columns: 1fr !important;
    gap: 1.5rem !important;
  }
}

/* ---- ≤768px: phablets/large phones ---- */
@media (max-width: 768px) {
  /* Blog post typography — comfortable reading on phones */
  .blog-post { padding: 0; }
  .blog-post h2 { font-size: 1.3125rem; margin: 2.25rem 0 0.875rem; }
  .blog-post h3 { font-size: 1.0625rem; margin: 1.5rem 0 0.625rem; }
  .blog-post p,
  .blog-post ul, .blog-post ol { font-size: 0.9375rem; line-height: 1.65; }
  .blog-post blockquote {
    font-size: 1rem;
    padding: 0 1rem;
    margin: 1.5rem 0;
  }
  .blog-post img { width: 100%; border-radius: 0.75rem; }
  .blog-post table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
  }

  /* Blog index cards */
  .blog-grid { grid-template-columns: 1fr !important; gap: 1.25rem; }
  .blog-card { padding: 1.25rem !important; }
  .blog-card.is-featured h3 { font-size: 1.25rem !important; }
  .blog-toolbar { padding: 0.75rem 0 !important; }
  .blog-filter {
    flex-wrap: wrap;
    gap: 0.5rem;
  }
  .blog-filter button,
  .blog-filter a { font-size: 0.8125rem; padding: 0.4rem 0.75rem; }

  /* FAQ page */
  .faq-section { padding: 0 !important; }
  .faq-block { padding: 1rem 0; }
  .faq-q {
    font-size: 0.9375rem;
    line-height: 1.4;
    gap: 0.75rem;
  }
  .faq-a { font-size: 0.9375rem; }

  /* Forms — full width inputs, comfortable tap targets */
  .form-grid input,
  .form-grid textarea,
  .form-grid select,
  form input[type="text"],
  form input[type="email"],
  form input[type="tel"],
  form input[type="number"],
  form textarea,
  form select {
    width: 100%;
    box-sizing: border-box;
    font-size: 16px; /* prevents iOS zoom-on-focus */
  }
  .form-grid label { width: 100%; }

  /* Pricing sections — let the right card stack below the copy */
  .pricing-grid > * { min-width: 0; }
  .pricing-card { width: 100%; box-sizing: border-box; }

  /* Stats / outcome blocks */
  .outcome-grid,
  .stat-grid,
  .metric-grid {
    grid-template-columns: 1fr 1fr !important;
    gap: 1.25rem !important;
  }
  .outcome-stat { font-size: 1.75rem; }

  /* Home features summary cards: 1 column on phones */
  .features-summary-grid { grid-template-columns: 1fr !important; gap: 0.875rem; }
  .features-card,
  .features-card-large {
    min-height: 240px;
    padding: 1.5rem;
  }
  .features-card-large { min-height: 280px; padding: 1.75rem; }

  /* Compare table on phones — keep readable, don't force horizontal scroll */
  .compare-table th, .compare-table td {
    font-size: 0.8125rem;
    padding: 0.625rem 0.5rem;
  }

  /* Cards / sections with internal padding */
  .price-card, .pillar-card, .audience-card,
  .feature-card, .solution-card { padding: 1.25rem; }

  /* Status pill wraps cleanly on tiny screens */
  .status-pill {
    font-size: 0.75rem;
    padding: 0.375rem 0.625rem;
  }

  /* Footer LLM dropdown — tighter type at narrow widths */
  .footer-llm-toggle {
    font-size: 0.8125rem;
  }
  .footer-llm-list a {
    font-size: 0.8125rem;
  }

  /* Final CTA */
  .final-cta-actions {
    flex-direction: column;
    align-items: stretch;
    gap: 0.625rem;
  }
  .final-cta-actions .btn-primary,
  .final-cta-actions .btn-secondary,
  .final-cta-actions .btn-outline {
    width: 100%;
    justify-content: center;
  }
}

/* ---- ≤640px phones ---- */
@media (max-width: 640px) {
  /* Solutions hero stacks left-aligned, nice phone scale */
  .solutions-hero h1,
  .compare-hero h1,
  .feature-hero h1,
  .inner-hero h1 {
    font-size: clamp(1.625rem, 7vw, 2.125rem);
  }

  /* CTA rows wrap to full width buttons */
  .cta-row,
  .hero-actions,
  .feature-cta-row {
    flex-direction: column;
    align-items: stretch;
    gap: 0.625rem;
  }
  .cta-row .btn-primary,
  .cta-row .btn-secondary,
  .cta-row .btn-outline,
  .hero-actions .btn-primary,
  .hero-actions .btn-secondary,
  .hero-actions .btn-outline {
    width: 100%;
    justify-content: center;
  }

  /* Pricing tier cards: full width with comfortable padding */
  .pricing-tier { padding: 1.25rem; }
  .pricing-tier-amount { font-size: 1.875rem; }

  /* ROI calculator: inputs/outputs in a single column */
  .calc-inputs,
  .calc-outputs {
    grid-template-columns: 1fr !important;
    gap: 0.875rem !important;
  }
  .calc-table {
    display: block;
    overflow-x: auto;
    font-size: 0.8125rem;
  }

  /* Stats blocks: 1 column at very small widths to avoid cramped numbers */
  .outcome-grid,
  .stat-grid,
  .metric-grid {
    grid-template-columns: 1fr !important;
  }

  /* Footer bottom — tidier wrap */
  .footer-bottom {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 1rem;
  }
  .footer-socials {
    flex-wrap: wrap;
    gap: 0.5rem;
  }

  /* Featured blog card */
  .blog-card.is-featured h3 { font-size: 1.125rem !important; }
}

/* ---- ≤400px tiny phones ---- */
@media (max-width: 400px) {
  .blog-post h2 { font-size: 1.1875rem; }
  .blog-post h3 { font-size: 1rem; }
  .blog-post blockquote { padding: 0 0.75rem; }

  /* Inner hero — squeeze a touch more */
  .inner-hero { padding: 5rem 0 2.5rem; }

  /* Footer columns */
  .footer-col-title { font-size: 0.75rem; }
  .footer-col a { font-size: 0.8125rem; }

  /* Mobile drawer items: reduce horizontal padding so titles don't clip */
  .mobile-menu-panel { padding: 0.875rem 1rem 1.25rem; }
  .mobile-menu-header { padding: 0.875rem 1rem; }
}

/* ---- Mobile-only: drawer takes full width on phones ---- */
@media (max-width: 540px) {
  .mobile-menu { width: 100vw; max-width: 100vw; }
}

/* ---- Make sure the drawer feels right with the new internal header ---- */
@media (max-width: 1023px) {
  /* The drawer has its own internal header now, so the panel padding-top
     can be normal. (The earlier 5rem was reserving space for the page nav,
     which we no longer need now that the drawer has its own logo + close.) */
  .mobile-menu-panel { padding-top: 1rem; }
}


/* ============================================================
   Footer socials row — sits ABOVE the divider line, right-aligned
   on desktop and stacked on mobile.
   ============================================================ */
.footer-socials-row {
  display: flex;
  justify-content: flex-end;
  margin-top: 2rem;
}
@media (max-width: 640px) {
  .footer-socials-row {
    justify-content: flex-start;
    margin-top: 1.5rem;
  }
}


/* ============================================================
   Cookie consent banner — small, bottom-right card.
   Loaded by assets/js/consent.js. Tracking scripts are gated
   behind this until the visitor accepts.
   ============================================================ */
.cookie-banner {
  position: fixed;
  bottom: 1.25rem;
  right: 1.25rem;
  width: min(380px, calc(100vw - 2.5rem));
  background: white;
  border: 1px solid var(--ink-200);
  border-radius: 1rem;
  padding: 1rem 1.125rem 1.125rem;
  box-shadow: 0 16px 36px -8px rgba(10, 10, 10, 0.18);
  z-index: 1000;
  font-size: 0.875rem;
  line-height: 1.5;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 0.25s ease, transform 0.25s ease;
}
.cookie-banner.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.cookie-banner-text {
  margin: 0 0 0.875rem;
  color: var(--ink-700);
}
.cookie-banner-text a {
  color: var(--ink);
  text-decoration: underline;
  text-decoration-color: var(--ink-300);
  text-underline-offset: 3px;
}
.cookie-banner-text a:hover {
  text-decoration-color: var(--ink);
}
.cookie-banner-actions {
  display: flex;
  gap: 0.5rem;
  justify-content: flex-end;
}
.cookie-banner-btn {
  font: inherit;
  font-size: 0.8125rem;
  font-weight: 500;
  padding: 0.5rem 0.875rem;
  border-radius: 0.5rem;
  cursor: pointer;
  border: 1px solid var(--ink-200);
  background: white;
  color: var(--ink);
  transition: border-color 0.15s, background 0.15s, transform 0.1s;
}
.cookie-banner-btn:hover { border-color: var(--ink-400); }
.cookie-banner-btn:active { transform: scale(0.98); }
.cookie-banner-accept {
  background: var(--ink);
  color: white;
  border-color: var(--ink);
}
.cookie-banner-accept:hover { background: #000; border-color: #000; }

@media (max-width: 640px) {
  .cookie-banner {
    bottom: 0.875rem;
    right: 0.875rem;
    left: 0.875rem;
    width: auto;
    max-width: none;
    padding: 0.875rem 1rem 1rem;
  }
}


/* ============================================================
   GDPR compliant badge — bottom-right of the footer
   ============================================================ */
.footer-gdpr-badge {
  height: 36px;
  width: auto;
  max-width: 120px;
  display: block;
  opacity: 0.95;
  transition: opacity 0.15s ease;
}
.footer-gdpr-badge:hover { opacity: 1; }

/* The .footer-bottom row already flexes left/right at ≥640px (set
   above by the existing rule). We just need to make sure the right
   side aligns the badge cleanly. */
.footer-bottom .footer-bottom-right {
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

@media (max-width: 640px) {
  /* On phones, bottom row stacks. Push the badge to its own line so it
     sits cleanly under the copyright. */
  .footer-bottom .footer-bottom-right {
    justify-content: flex-start;
  }
  .footer-gdpr-badge { height: 32px; }
}
