/* ==========================================================================
   North Oaks Family Dentistry — Shared Site Stylesheet
   Brand colors, typography, header/nav, footer, buttons, cards, and all
   homepage section styles. Link this file from any page on the site to
   keep a consistent look — e.g.:

   <link rel="preconnect" href="https://fonts.googleapis.com">
   <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
   <link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;600;700;800&family=Lato:wght@400;700&display=swap" rel="stylesheet">
   <link rel="stylesheet" href="styles.css">

   Note: some rules here (e.g. hero, router cards, review cards) are
   homepage-specific sections. That's fine to leave in — unused selectors
   on other pages just won't match anything. If the stylesheet grows, it's
   easy to split into base.css (colors/type/header/footer/buttons) +
   home.css (homepage-only sections) later.
   ========================================================================== */

  :root{
    --forest:#3D5140;
    --forest-dark:#2A3A2C;
    --forest-light:#516A54;
    --cream:#F2E8DC;
    --cream-alt:#E9DCC9;
    --terracotta:#BF7650;
    --terracotta-dark:#A35F3C;
    --sage:#8FA08A;
    --ink:#2A3A2C;
    --ink-soft:#5C6B57;
    --white:#FFFFFF;
    --logo-green:#3D5140;
    --border:rgba(61,81,64,0.16);
    --shadow: 0 12px 32px rgba(42,58,44,0.12);
    --radius: 4px;
  }
  *{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth;}
  body{
    font-family:'Lato', -apple-system, sans-serif;
    background:var(--cream);
    color:var(--ink);
    line-height:1.6;
    font-size:16px;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3{
    font-family:'Raleway', Georgia, sans-serif;
    font-weight:700;
    line-height:1.15;
    color:var(--forest-dark);
    letter-spacing:-0.01em;
  }
  a{color:inherit; text-decoration:none;}
  img{max-width:100%; display:block;}
  .wrap{max-width:1180px; margin:0 auto; padding:0 32px;}
  .eyebrow{
    font-size:0.72rem; letter-spacing:0.14em; text-transform:uppercase;
    color:var(--terracotta-dark); font-weight:600; margin-bottom:14px; display:block;
  }
  .btn{
    display:inline-flex; align-items:center; justify-content:center; gap:8px;
    padding:14px 28px; border-radius:2px; font-weight:600; font-size:0.95rem;
    border:1px solid transparent; cursor:pointer; transition:all .18s ease; white-space:nowrap;
  }
  .btn-primary{ background:var(--forest); color:var(--white); }
  .btn-primary:hover{ background:var(--forest-dark); }
  .btn-primary.on-dark{ background:var(--cream); color:var(--forest-dark); }
  .btn-primary.on-dark:hover{ background:var(--white); }
  .btn-ghost{
    background:transparent; color:var(--ink); border-color:rgba(34,48,42,0.3);
  }
  .btn-ghost:hover{ border-color:var(--forest); color:var(--forest-dark); }
  .btn-text{
    color:var(--terracotta-dark); font-weight:600; font-size:0.95rem;
    border-bottom:1px solid rgba(161,84,47,0.35); padding-bottom:2px;
  }
  .btn-text:hover{ border-color:var(--terracotta-dark); }

  /* ---------- Photo placeholder ---------- */
  .photo{
    position:relative; overflow:hidden; border-radius:var(--radius);
    background:linear-gradient(135deg,#c8d4c1 0%, #dcd2b8 55%, #b9c7b3 100%);
    display:flex; align-items:flex-end;
  }
  .photo::before{
    content:""; position:absolute; inset:0;
    background:
      radial-gradient(circle at 25% 30%, rgba(255,255,255,0.35), transparent 45%),
      radial-gradient(circle at 75% 70%, rgba(44,70,54,0.18), transparent 55%);
  }
  .photo-tag{
    position:relative; margin:14px; padding:7px 12px; background:rgba(34,48,42,0.72);
    color:var(--cream); font-size:0.72rem; border-radius:2px; display:flex; align-items:center; gap:7px;
    backdrop-filter:blur(2px);
  }
  .photo-tag svg{ width:14px; height:14px; flex:none; }
  img.photo{ display:block; width:100%; height:100%; object-fit:cover; }

  /* ---------- Transition banner ---------- */
  .banner{
    background:var(--forest-dark); color:var(--cream); text-align:center;
    font-size:0.85rem; padding:10px 44px 10px 16px; position:relative;
  }
  .banner a{ color:var(--sage); border-bottom:1px solid rgba(174,191,168,0.5); }
  .banner .close{
    position:absolute; right:14px; top:50%; transform:translateY(-50%);
    background:none; border:none; color:var(--cream); font-size:1.1rem; cursor:pointer; opacity:0.7; line-height:1;
  }
  .banner .close:hover{ opacity:1; }

  /* ---------- Header ---------- */
  header{
    background:var(--cream); border-bottom:1px solid var(--border);
    position:sticky; top:0; z-index:50;
  }
  .nav-row{ display:flex; align-items:center; justify-content:space-between; padding:18px 32px; gap:24px; }
  .logo{ display:flex; align-items:center; }
  /* object-fit guards the wordmark against distortion if the row ever
     squeezes it below its natural width */
  .logo-img{ height:52px; width:auto; display:block; object-fit:contain; object-position:left center; }

  nav.primary{ display:flex; align-items:center; gap:2px; }
  .navlink{ position:relative; }
  .navlink > a, .navlink > button{
    background:none; border:none; font:inherit; cursor:pointer;
    padding:10px 14px; font-size:0.92rem; font-weight:500; color:var(--ink); display:flex; align-items:center; gap:5px;
  }
  .navlink > a:hover, .navlink > button:hover{ color:var(--forest-dark); }
  .navlink svg{ width:10px; height:10px; opacity:0.6; }
  .dropdown{
    position:absolute; top:100%; left:0; background:var(--white); min-width:200px;
    box-shadow:var(--shadow); border-radius:2px; padding:8px; opacity:0; visibility:hidden;
    transform:translateY(6px); transition:all .16s ease; border:1px solid var(--border);
  }
  .navlink:hover .dropdown{ opacity:1; visibility:visible; transform:translateY(0); }
  .dropdown a{ display:block; padding:9px 12px; font-size:0.88rem; border-radius:2px; color:var(--ink-soft); }
  .dropdown a:hover{ background:var(--cream); color:var(--forest-dark); }

  .nav-actions{ display:flex; align-items:center; gap:18px; }
  .phone-link{ font-size:0.92rem; font-weight:600; color:var(--forest-dark); display:flex; align-items:center; gap:7px; }
  .phone-link svg{ width:16px; height:16px; stroke:var(--terracotta-dark); }
  .hamburger{ display:none; background:none; border:none; cursor:pointer; padding:6px; }
  .hamburger span{ display:block; width:22px; height:2px; background:var(--forest-dark); margin:5px 0; }

  /* ---------- Hero ---------- */
  .hero{ padding:56px 0 0; }
  .hero-inner{
    display:grid; grid-template-columns:1.05fr 0.95fr; gap:56px; align-items:center;
  }
  .hero h1{ font-size:clamp(2.1rem, 3.6vw, 3.15rem); margin-bottom:20px; }
  .hero .subhead{ font-size:1.13rem; color:var(--ink-soft); max-width:44ch; margin-bottom:32px; }
  .hero-ctas{ display:flex; align-items:center; gap:22px; flex-wrap:wrap; }
  .hero-photo{ aspect-ratio:4/5; }
  .hero-photo .photo-tag{ margin-top:auto; }

  /* ---------- Trust bar ---------- */
  .trustbar{ background:var(--cream-alt); border-top:1px solid var(--border); border-bottom:1px solid var(--border); margin-top:64px; }
  .trustbar .wrap{
    display:flex; flex-wrap:wrap; justify-content:space-between; gap:18px 32px; padding:22px 32px;
  }
  .trust-item{ display:flex; align-items:center; gap:10px; font-size:0.88rem; font-weight:600; color:var(--forest-dark); }
  .trust-item svg{ width:18px; height:18px; stroke:var(--terracotta-dark); flex:none; }

  /* ---------- Section shell ---------- */
  section{ padding:88px 0; }
  .section-head{ max-width:640px; margin:0 auto 52px; text-align:center; }
  .section-head h2{ font-size:clamp(1.7rem, 2.6vw, 2.35rem); }

  /* ---------- Promises ---------- */
  .promises{ background:var(--white); }
  .promise-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:44px; }
  .promise{ text-align:center; padding:0 12px; }
  .promise .icon{
    width:52px; height:52px; border:1.5px solid var(--forest); border-radius:50%;
    display:flex; align-items:center; justify-content:center; margin:0 auto 22px;
  }
  .promise .icon svg{ width:24px; height:24px; stroke:var(--forest); }
  .promise h3{ font-size:1.2rem; margin-bottom:10px; }
  .promise p{ color:var(--ink-soft); font-size:0.96rem; max-width:32ch; margin:0 auto; }

  /* ---------- Router cards ---------- */
  .router{ background:var(--cream); }
  .router-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
  .router-card{
    background:var(--white); border:1px solid var(--border); border-radius:var(--radius);
    overflow:hidden; display:flex; flex-direction:column; transition:box-shadow .18s ease, transform .18s ease;
  }
  .router-card:hover{ box-shadow:var(--shadow); transform:translateY(-3px); }
  .router-card .photo{ aspect-ratio:5/4; border-radius:0; }
  .router-card img.photo{ height:auto; width:100%; object-fit:cover; }
  .router-card .rc-body{ padding:22px 20px 24px; display:flex; flex-direction:column; gap:8px; flex:1; }
  .router-card h3{ font-size:1.05rem; }
  .router-card p{ color:var(--ink-soft); font-size:0.9rem; flex:1; }
  .router-card .btn-text{ font-size:0.86rem; margin-top:6px; }

  /* ---------- Doctor split ---------- */
  .doctor{ background:var(--white); }
  .doctor-inner{ display:grid; grid-template-columns:0.85fr 1.15fr; gap:64px; align-items:center; }
  .doctor-photo{ aspect-ratio:4/5; }
  .doctor h2{ font-size:clamp(1.6rem,2.4vw,2.15rem); margin-bottom:20px; }
  .doctor p{ color:var(--ink-soft); margin-bottom:18px; max-width:52ch; }
  .doctor .offclock{ font-style:italic; color:var(--ink-soft); border-left:2px solid var(--sage); padding-left:16px; margin:24px 0 28px; }

  /* ---------- Office band ---------- */
  .office{ background:var(--forest); color:var(--cream); }
  .office .section-head h2, .office .section-head p{ color:var(--cream); }
  .office .section-head p{ color:var(--sage); margin-top:10px; }
  .office-grid{ display:grid; grid-template-columns:1.3fr 1fr; grid-template-rows:1fr 1fr; gap:16px; height:520px; }
  .office-grid .photo:nth-child(1){ grid-row:1/3; }
  .office-grid .photo-tag{ background:rgba(0,0,0,0.4); }

  /* ---------- Reviews ---------- */
  .reviews{ background:var(--cream-alt); }
  .review-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:28px; }
  .review-card{
    background:var(--white); border-radius:var(--radius); padding:28px 26px; border:1px solid var(--border);
  }
  .stars{ color:var(--terracotta); font-size:0.95rem; margin-bottom:14px; letter-spacing:2px; }
  .review-card p{ color:var(--ink); font-size:0.95rem; margin-bottom:16px; }
  .review-card .who{ font-size:0.83rem; color:var(--ink-soft); font-weight:600; }
  .reviews-more{ text-align:center; margin-top:38px; }

  /* ---------- Practical strip ---------- */
  .practical{ background:var(--white); padding:64px 0; }
  .practical-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:32px; }
  .practical-item{ border-top:2px solid var(--forest); padding-top:18px; }
  .practical-item h3{ font-size:1.02rem; margin-bottom:8px; }
  .practical-item p{ color:var(--ink-soft); font-size:0.92rem; margin-bottom:10px; }

  /* ---------- Final CTA ---------- */
  .final-cta{ background:var(--forest); color:var(--cream); text-align:center; padding:96px 0; }
  .final-cta h2{ color:var(--cream); font-size:clamp(1.8rem,3vw,2.5rem); max-width:20ch; margin:0 auto 16px; }
  .final-cta .line{ color:var(--sage); max-width:46ch; margin:0 auto 36px; font-size:1.02rem; }
  .final-cta .ctas{ display:flex; justify-content:center; align-items:center; gap:24px; flex-wrap:wrap; }
  .final-cta .phone-link{ color:var(--cream); }
  .final-cta .phone-link svg{ stroke:var(--sage); }

  /* ---------- Footer ---------- */
  footer{ background:var(--forest-dark); color:var(--cream); padding:64px 0 28px; }
  .footer-grid{ display:grid; grid-template-columns:1.3fr 1fr 1fr 1.1fr; gap:40px; margin-bottom:48px; }
  footer h4{ font-size:0.78rem; letter-spacing:0.1em; text-transform:uppercase; color:var(--sage); margin-bottom:16px; font-weight:600; }
  footer .flogo{ margin-bottom:16px; }
  footer .flogo-img{ height:44px; width:auto; display:block; }
  footer .fdesc{ color:rgba(242,232,220,0.75); font-size:0.9rem; margin-bottom:18px; max-width:32ch; }
  footer .nap{ font-size:0.88rem; color:rgba(242,232,220,0.75); line-height:1.8; }
  footer ul{ list-style:none; }
  footer li{ margin-bottom:10px; }
  footer a{ color:rgba(242,232,220,0.82); font-size:0.9rem; }
  footer a:hover{ color:var(--cream); }
  footer .fbtn{ margin-bottom:16px; }
  .footer-bottom{
    border-top:1px solid rgba(242,232,220,0.15); padding-top:24px; display:flex; justify-content:space-between;
    flex-wrap:wrap; gap:12px; font-size:0.8rem; color:rgba(242,232,220,0.6);
  }
  .footer-bottom a{ color:rgba(242,232,220,0.6); margin-left:18px; }

  /* ---------- Mobile sticky bar ---------- */
  .sticky-mobile{
    display:none; position:fixed; bottom:0; left:0; right:0; z-index:60;
    box-shadow:0 -6px 20px rgba(0,0,0,0.12);
  }
  .sticky-mobile{ display:none; }
  .sticky-mobile a{
    flex:1; text-align:center; padding:14px 8px; font-weight:700; font-size:0.92rem;
    display:flex; align-items:center; justify-content:center; gap:6px; line-height:1.15;
  }
  .sticky-mobile a.call{ background:var(--terracotta); color:var(--white); }
  .sticky-mobile a.book{ background:var(--forest); color:var(--white); font-size:0.8rem; }

  /* ---------- Responsive ---------- */
  @media (max-width:980px){
    .hero-inner, .doctor-inner{ grid-template-columns:1fr; }
    .hero-photo, .doctor-photo{ order:-1; aspect-ratio:3/2; }
    /* Most hero images are portraits of people: bias the cover-crop toward
       the top so faces survive the wide mobile crop. The homepage doctor
       photo is the one exception (subjects at the bottom of the frame). */
    img.hero-photo{ object-position:center top; }
    img.doctor-photo{ object-position:center 80%; }
    .promise-grid{ grid-template-columns:1fr; gap:36px; }
    .router-grid{ grid-template-columns:repeat(2,1fr); }
    .office-grid{ grid-template-columns:1fr 1fr; height:auto; grid-template-rows:220px 220px; }
    .office-grid .photo:nth-child(1){ grid-row:auto; grid-column:1/3; height:260px; }
    .review-grid{ grid-template-columns:1fr; }
    .practical-grid{ grid-template-columns:1fr; gap:28px; }
    .footer-grid{ grid-template-columns:1fr 1fr; }
  }
  @media (max-width:760px){
    nav.primary, .nav-actions .phone-link, .nav-actions .btn-ghost{ display:none; }
    .hamburger{ display:block; }
    .logo-img{ height:40px; }
    /* The sticky bottom bar already carries Call + Request Appointment at
       these widths; dropping the header CTA frees the row so the logo keeps
       its natural width instead of being squeezed out of shape by flexbox. */
    .nav-actions .btn-primary{ display:none; }
    /* .wrap.nav-row (two classes) so the .wrap{padding:0 22px} rule below
       can't strip the header's vertical padding, which left the logo flush
       against the header edges */
    .wrap.nav-row{ padding:14px 22px; }
    .router-grid{ grid-template-columns:1fr; }
    .footer-grid{ grid-template-columns:1fr; gap:32px; }
    .sticky-mobile{ display:flex; }
    body{ padding-bottom:58px; }
    section{ padding:60px 0; }
    .trustbar .wrap{ flex-direction:column; gap:12px; padding:20px 32px; }
    .wrap{ padding:0 22px; }
  }

  /* ==========================================================================
     Contact page
     ========================================================================== */
  .contact-hero{ padding:56px 0 0; }
  .contact-intro{ max-width:640px; margin:0 auto 40px; text-align:center; }
  .contact-intro h1{ font-size:clamp(1.9rem, 3.2vw, 2.6rem); margin-bottom:14px; }
  .contact-intro p{ color:var(--ink-soft); font-size:1.05rem; margin-bottom:28px; }

  .contact-photo{ margin-bottom:8px; aspect-ratio:16/6; }

  /* Info card + map row */
  .info-grid{ display:grid; grid-template-columns:1fr 1fr; gap:32px; }
  .info-card{ background:var(--white); border:1px solid var(--border); border-radius:6px; padding:32px; }
  .info-card h3{ font-size:1.05rem; margin-bottom:18px; }
  .info-row{ display:flex; gap:14px; padding:12px 0; border-bottom:1px solid var(--border); font-size:0.95rem; }
  .info-row:last-child{ border-bottom:none; }
  .info-row svg{ width:19px; height:19px; stroke:var(--forest); flex:none; margin-top:2px; }
  .info-row .label{ font-weight:600; color:var(--forest-dark); display:block; margin-bottom:2px; }
  .info-row .value{ color:var(--ink-soft); }
  .info-row a.value:hover{ color:var(--terracotta-dark); }
  .hours-grid{ display:grid; grid-template-columns:auto 1fr; gap:2px 14px; }
  .hours-grid span:nth-child(odd){ color:var(--ink); }
  .hours-grid span:nth-child(even){ color:var(--ink-soft); text-align:right; }
  .parking-note{
    margin-top:16px; padding-top:16px; border-top:1px dashed var(--border);
    font-size:0.88rem; color:var(--ink-soft); font-style:italic;
  }
  .map-wrap{ border-radius:6px; overflow:hidden; border:1px solid var(--border); min-height:340px; }
  .map-wrap iframe{ width:100%; height:100%; min-height:340px; border:0; display:block; }

  /* "Let's work together" + request form */
  .contact-split{
    display:grid; grid-template-columns:0.85fr 1.15fr; gap:56px; align-items:center;
    background:var(--cream-alt); border-radius:8px; padding:56px;
  }
  .invite-icon{ width:30px; height:30px; margin-bottom:20px; }
  .invite-side h2{ font-size:clamp(1.6rem, 2.6vw, 2.1rem); margin-bottom:18px; }
  .invite-side p{ color:var(--ink-soft); font-size:1rem; margin-bottom:16px; }
  .invite-side p:last-of-type{ margin-bottom:0; }
  .invite-side .signoff{
    font-style:italic; color:var(--forest-dark); margin-top:24px; padding-top:20px;
    border-top:1px solid var(--border);
  }

  .form-card{ background:var(--white); border-radius:6px; padding:36px; }
  .form-card h2{ font-size:1.25rem; margin-bottom:8px; }
  .form-card .form-sub{ color:var(--ink-soft); font-size:0.92rem; margin-bottom:24px; }
  .field{ margin-bottom:16px; }
  .field label{ display:block; font-size:0.8rem; font-weight:600; color:var(--forest-dark); margin-bottom:6px; }
  .field input, .field select{
    width:100%; padding:12px 14px; border:1px solid var(--border); border-radius:3px;
    background:var(--cream); color:var(--ink); font-family:'Lato', sans-serif; font-size:0.95rem;
  }
  .field input:focus, .field select:focus{ outline:none; border-color:var(--forest); }
  .field-row{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
  .form-submit{
    width:100%; padding:14px 20px; border-radius:2px; border:none; cursor:pointer;
    background:var(--forest); color:var(--white); font-weight:600; font-size:0.95rem;
    font-family:'Lato', sans-serif; transition:background .18s ease;
  }
  .form-submit:hover{ background:var(--forest-dark); }
  .form-note{ text-align:center; font-size:0.8rem; color:var(--ink-soft); margin-top:12px; }
  .form-disclaimer{
    display:flex; gap:10px; align-items:flex-start; margin-bottom:20px;
    padding:12px 14px; background:var(--cream); border:1px solid var(--border); border-radius:4px;
  }
  .form-disclaimer svg{ width:17px; height:17px; flex:none; margin-top:2px; color:var(--terracotta-dark); }
  .form-disclaimer p{ font-size:0.8rem; line-height:1.5; color:var(--ink-soft); }
  .hidden-field{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
  .h-captcha{ margin-bottom:20px; max-width:100%; overflow:hidden; }
  .form-status{
    margin-top:16px; padding:12px 14px; border-radius:4px; font-size:0.88rem; line-height:1.5;
  }
  .form-status-success{ background:rgba(143,160,138,0.18); color:var(--forest-dark); }
  .form-status-notice{ background:var(--cream); border:1px solid var(--border); color:var(--ink); }
  .form-status-error{ background:rgba(191,118,80,0.14); color:var(--terracotta-dark); }
  .form-status-error a{ font-weight:600; text-decoration:underline; }

  @media (max-width:820px){
    .info-grid{ grid-template-columns:1fr; }
  }
  @media (max-width:900px){
    .contact-split{ grid-template-columns:1fr; padding:36px 24px; gap:32px; }
  }

  /* ==========================================================================
     Meet Dr. Grewal page
     ========================================================================== */
  .bio-copy{ max-width:700px; margin:0 auto; }
  .bio-copy p{ color:var(--ink-soft); font-size:1.05rem; line-height:1.75; margin-bottom:20px; }

  .practice-lines{ max-width:760px; margin:0 auto; text-align:center; }
  .practice-line{
    font-family:'Raleway', sans-serif; font-weight:700; color:var(--forest-dark);
    font-size:clamp(1.2rem, 2.1vw, 1.55rem); line-height:1.45;
    padding:28px 0; border-top:1px solid var(--border);
  }
  .practice-line:first-child{ border-top:none; }

  .bio-split{ display:grid; grid-template-columns:1fr 0.85fr; gap:56px; align-items:center; }
  .bio-split.reverse{ grid-template-columns:0.85fr 1fr; }
  .bio-split .photo{ aspect-ratio:4/5; }
  .bio-split h2{ font-size:clamp(1.6rem,2.4vw,2.15rem); margin-bottom:20px; }
  .bio-split p{ color:var(--ink-soft); margin-bottom:16px; max-width:52ch; }

  .bio-credentials{
    max-width:640px; margin:0 auto; text-align:center; padding-top:36px;
    border-top:1px solid var(--border); font-size:0.88rem; color:var(--ink-soft); line-height:2;
  }

  .bio-links{ text-align:center; color:var(--ink-soft); font-size:0.92rem; }
  .bio-links a{ color:var(--terracotta-dark); font-weight:600; }
  .bio-links a:hover{ border-bottom:1px solid var(--terracotta-dark); }

  /* FAQ accordion */
  .faq{ max-width:760px; margin:0 auto; }
  .faq-item{ border-bottom:1px solid var(--border); padding:18px 0; }
  .faq-item summary{
    cursor:pointer; font-weight:600; color:var(--forest-dark); font-family:'Raleway', sans-serif;
    list-style:none; display:flex; justify-content:space-between; align-items:center; gap:16px; font-size:1rem;
  }
  .faq-item summary::-webkit-details-marker{ display:none; }
  .faq-item summary .plus{ flex:none; width:20px; height:20px; position:relative; }
  .faq-item summary .plus::before, .faq-item summary .plus::after{
    content:""; position:absolute; background:var(--forest); transition:transform .18s ease;
  }
  .faq-item summary .plus::before{ left:0; top:9px; width:20px; height:2px; }
  .faq-item summary .plus::after{ left:9px; top:0; width:2px; height:20px; }
  .faq-item[open] summary .plus::after{ transform:rotate(90deg); opacity:0; }
  .faq-item[open] summary{ color:var(--terracotta-dark); }
  .faq-item p{ color:var(--ink-soft); margin-top:12px; font-size:0.95rem; max-width:64ch; }
  .faq-item p a{ color:var(--terracotta-dark); font-weight:600; }
  .faq-item p a:hover{ border-bottom:1px solid var(--terracotta-dark); }

  @media (max-width:980px){
    /* .reverse repeated so its two-class desktop rule can't outrank the collapse */
    .bio-split, .bio-split.reverse{ grid-template-columns:1fr; }
    .bio-split .photo{ order:-1; aspect-ratio:3/2; }
    .bio-split img.photo{ object-position:center 30%; }
  }
  /* ==========================================================================
     Meet the Team page
     ========================================================================== */
  .hero-link{ font-size:0.92rem; color:var(--ink-soft); }
  .hero-link a{ color:var(--terracotta-dark); font-weight:600; }
  .hero-link a:hover{ border-bottom:1px solid var(--terracotta-dark); }

  /* Our culture (still used by new-patients.html) */
  .culture-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:44px; }
  .culture-item{ text-align:center; padding:0 12px; }
  .culture-item .icon{
    width:52px; height:52px; border:1.5px solid var(--forest); border-radius:50%;
    display:flex; align-items:center; justify-content:center; margin:0 auto 22px;
  }
  .culture-item .icon svg{ width:24px; height:24px; stroke:var(--forest); }
  .culture-item p{
    font-family:'Raleway', sans-serif; font-weight:700; color:var(--forest-dark);
    font-size:1.05rem; line-height:1.4;
  }

  @media (max-width:980px){
    .culture-grid{ grid-template-columns:1fr; gap:36px; }
  }

  /* ---------- Team page: editorial opening ---------- */
  .team-open{ padding:64px 0 12px; }
  .team-statement{
    font-size:clamp(1.6rem, 3.4vw, 2.6rem); line-height:1.3; max-width:17ch;
    margin:0 auto; text-align:center;
  }
  .team-statement-sub{
    display:block; text-align:center; margin-top:8px;
    font-family:'Raleway', sans-serif; font-weight:700; color:var(--terracotta-dark);
    font-size:clamp(1.2rem, 2.3vw, 1.7rem); line-height:1.3;
  }

  /* ---------- Team page: one group photo, pinned beside the story ---------- */
  .team-feature{ display:grid; grid-template-columns:0.95fr 1.05fr; gap:64px; align-items:start; }
  .team-feature-photo{ position:sticky; top:100px; aspect-ratio:4/5; }
  .team-feature-text p{ color:var(--ink-soft); font-size:1.06rem; line-height:1.8; margin-bottom:22px; }
  .team-pullquote{
    font-family:'Raleway', sans-serif; font-weight:700; font-style:italic;
    color:var(--forest-dark); font-size:clamp(1.25rem, 2.2vw, 1.65rem); line-height:1.5;
    border-left:3px solid var(--terracotta); padding-left:24px; margin:34px 0 !important;
  }

  /* ---------- Team page: plain text list, no cards, no photos ---------- */
  .team-roles{ max-width:720px; margin:72px auto 0; }
  .team-roles > .eyebrow{ margin-bottom:28px; }
  .team-roles-item{
    display:grid; grid-template-columns:180px 1fr; gap:28px;
    padding:22px 0; border-top:1px solid var(--border);
  }
  .team-roles-item .role-name{ font-family:'Raleway', sans-serif; font-weight:700; color:var(--forest-dark); font-size:0.98rem; }
  .team-roles-item p{ color:var(--ink-soft); font-size:0.96rem; line-height:1.6; }

  @media (max-width:980px){
    .team-feature{ grid-template-columns:1fr; gap:32px; }
    .team-feature-photo{ position:static; aspect-ratio:16/9; }
    .team-roles-item{ grid-template-columns:1fr; gap:6px; padding:18px 0; }
  }

  /* ==========================================================================
     Our Approach page
     ========================================================================== */
  .approach-open{ padding:64px 0 12px; }
  .approach-statement{
    font-size:clamp(1.6rem, 3.4vw, 2.6rem); line-height:1.3; max-width:19ch;
    margin:0 auto; text-align:center;
  }
  .approach-statement-sub{
    display:block; text-align:center; margin-top:8px;
    font-family:'Raleway', sans-serif; font-weight:700; color:var(--terracotta-dark);
    font-size:clamp(1.2rem, 2.3vw, 1.7rem); line-height:1.3;
  }

  /* Journey timeline: replaces stacked cards with a connected sequence */
  .approach-journey{ position:relative; max-width:720px; margin:0 auto; }
  .approach-journey::before{
    content:""; position:absolute; left:27px; top:8px; bottom:8px; width:2px; background:var(--border);
  }
  .journey-stage{ position:relative; padding-left:80px; padding-bottom:56px; }
  .journey-stage:last-child{ padding-bottom:0; }
  .stage-marker{
    position:absolute; left:0; top:0; width:56px; height:56px; border-radius:50%;
    background:var(--forest); color:var(--cream); display:flex; align-items:center; justify-content:center;
    font-family:'Raleway', sans-serif; font-weight:700; font-size:1.15rem; flex:none;
  }
  .stage-label{
    display:block; font-size:0.76rem; text-transform:uppercase; letter-spacing:0.1em;
    color:var(--terracotta-dark); font-weight:600; margin-bottom:8px;
  }
  .journey-stage h3{ font-size:1.22rem; margin-bottom:10px; }
  .journey-stage p{ color:var(--ink-soft); font-size:1rem; line-height:1.7; max-width:56ch; }

  @media (max-width:640px){
    .approach-journey::before{ left:21px; }
    .journey-stage{ padding-left:60px; padding-bottom:44px; }
    .stage-marker{ width:44px; height:44px; font-size:1rem; }
  }

  /* ==========================================================================
     Services page
     ========================================================================== */

  /* ---------- Situation-first list, not photo cards ---------- */
  .services-body{ background:var(--white); }
  .services-list{ max-width:840px; margin:22px auto 0; }
  .services-category{
    font-family:'Raleway', sans-serif; font-weight:700; color:var(--forest-dark);
    font-size:0.8rem; text-transform:uppercase; letter-spacing:0.07em;
    margin:44px 0 4px; scroll-margin-top:110px;
  }
  .services-category:first-child{ margin-top:0; }

  /* ---------- Jump nav: lets a returning or decided visitor skip straight to a category ---------- */
  .services-jump{
    display:flex; flex-wrap:wrap; justify-content:center; gap:10px 26px;
    max-width:840px; margin:26px auto 0; padding-bottom:22px; border-bottom:1px solid var(--border);
  }
  .services-jump a{
    font-family:'Raleway', sans-serif; font-weight:600; font-size:0.85rem; color:var(--terracotta-dark);
    border-bottom:1px solid rgba(161,84,47,0.35); padding-bottom:2px;
  }
  .services-jump a:hover{ border-color:var(--terracotta-dark); }
  .service-row{
    display:grid; grid-template-columns:84px 1fr; gap:24px; align-items:start;
    padding:30px 0; border-top:1px solid var(--border);
  }
  .services-list .service-row:last-child{ border-bottom:1px solid var(--border); }
  .service-row .thumb{ width:84px; height:84px; flex:none; }
  .service-row .thumb .photo-tag{ margin:6px; padding:3px 6px; font-size:0.55rem; gap:0; }
  .service-row .thumb .photo-tag svg{ display:none; }
  .service-row .who{
    font-family:'Raleway', sans-serif; font-weight:700; color:var(--terracotta-dark);
    font-size:0.8rem; text-transform:uppercase; letter-spacing:0.07em; line-height:1.4;
    display:block; margin-bottom:8px;
  }
  .service-row h3{ font-size:1.32rem; margin-bottom:10px; }
  .service-row p{ color:var(--ink-soft); font-size:0.98rem; line-height:1.75; max-width:58ch; }
  .service-row p a{ color:var(--terracotta-dark); font-weight:600; border-bottom:1px solid rgba(161,84,47,0.35); }
  .service-row p a:hover{ border-color:var(--terracotta-dark); }

  /* ---------- Emergency callout, leads the section since it's the one time-sensitive case ---------- */
  .services-emergency{
    max-width:840px; margin:0 auto; background:var(--forest); border-left:4px solid var(--terracotta);
    border-radius:var(--radius); padding:32px 36px; display:flex; align-items:center;
    justify-content:space-between; gap:24px; flex-wrap:wrap;
  }
  .services-emergency .who{
    font-family:'Raleway', sans-serif; font-weight:700; font-size:0.8rem; color:var(--sage);
    text-transform:uppercase; letter-spacing:0.07em; display:block; margin-bottom:8px;
  }
  .services-emergency h2{ color:var(--cream); font-size:1.22rem; margin-bottom:6px; }
  .services-emergency p{ color:var(--sage); margin:0; }
  .services-emergency .phone-link{ color:var(--cream); flex:none; }
  .services-emergency .phone-link svg{ stroke:var(--sage); }

  .services-list-lead{
    max-width:840px; margin:44px auto 0; text-align:center; color:var(--ink-soft);
    font-family:'Raleway', sans-serif; font-weight:600; font-size:0.95rem;
  }

  /* ---------- Reassurance FAQ, a full-width section band matching the FAQ background on other service pages ---------- */
  .services-reassure-head p{ color:var(--ink-soft); font-size:1.02rem; margin-top:12px; }

  @media (max-width:980px){
    .services-emergency{ padding:28px 26px; }
  }
  @media (max-width:760px){
    .service-row{ grid-template-columns:64px 1fr; gap:16px; padding:24px 0; }
    .service-row .thumb{ width:64px; height:64px; }
  }

/* ==========================================================================
   Legal pages (Privacy, HIPAA Notice, Accessibility)
   ========================================================================== */
  .section-head h1{ font-size:clamp(1.9rem, 3vw, 2.6rem); margin-bottom:10px; }
  .legal-updated{ color:var(--ink-soft); font-size:0.92rem; }
  .legal-body{ max-width:700px; margin:0 auto; }
  .legal-body h2{ font-size:1.35rem; margin:40px 0 14px; }
  .legal-body h2:first-child{ margin-top:0; }
  .legal-body h3{ font-size:1.05rem; margin:24px 0 10px; }
  .legal-body p{ color:var(--ink-soft); font-size:1rem; line-height:1.75; margin-bottom:16px; }
  .legal-body ul{ color:var(--ink-soft); font-size:1rem; line-height:1.75; margin:0 0 16px 22px; }
  .legal-body li{ margin-bottom:6px; }
  .legal-body strong{ color:var(--forest-dark); }
  .legal-caps{
    font-family:'Raleway', sans-serif; font-weight:700; font-size:0.85rem; letter-spacing:0.02em;
    color:var(--forest-dark); background:var(--cream-alt); border-radius:4px; padding:16px 20px;
    margin-bottom:16px;
  }

  /* ==========================================================================
     Insurance plan pages (insurance/*) — placeholder plan badge until the
     official insurer logo asset is dropped in (.plan-logo replaces .plan-badge)
     ========================================================================== */
  .plan-badge{
    aspect-ratio:4/5; border-radius:var(--radius); border:1px solid var(--border);
    background:var(--white); display:flex; flex-direction:column;
    align-items:center; justify-content:center; gap:16px; text-align:center; padding:32px;
  }
  .plan-badge-check{
    width:56px; height:56px; border-radius:50%; background:var(--forest);
    color:var(--white); display:flex; align-items:center; justify-content:center;
  }
  .plan-badge-check svg{ width:28px; height:28px; }
  .plan-badge-name{
    font-family:'Raleway', sans-serif; font-weight:800; font-size:1.7rem;
    color:var(--forest-dark); letter-spacing:-0.01em;
  }
  .plan-badge-status{
    font-size:0.82rem; letter-spacing:0.08em; text-transform:uppercase;
    color:var(--terracotta-dark); font-weight:600;
  }
  .plan-logo{ aspect-ratio:4/5; width:100%; object-fit:contain; padding:32px;
    border:1px solid var(--border); border-radius:var(--radius); background:var(--white); }
