  :root{
    --cream: #FFFFFF;
    --sage: #14B8A6;
    --sage-deep: #0D9488;
    --sage-pale: #CCFBF1;
    --honey: #FFB020;
    --honey-deep: #F59E0B;
    --ink: #1F2937;
    --ink-soft: #5B6B72;
    --line: #D9F2EE;
    --white: #FFFFFF;
    --coral: #FF6B6B;
  }

  *{ box-sizing: border-box; margin:0; padding:0; }

  html{ scroll-behavior: smooth; }

  body{
    background: var(--cream);
    color: var(--ink);
    font-family: 'Work Sans', sans-serif;
    font-size: 17px;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
  }

  h1, h2, h3, .display{
    font-family: 'Fraunces', serif;
    color: var(--ink);
    line-height: 1.12;
    font-weight: 600;
  }

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

  img, svg{ display:block; max-width:100%; }

  .wrap{
    max-width: 1120px;
    margin: 0 auto;
    padding: 0 32px;
  }

  section{ padding: 96px 0; }

  @media (max-width: 640px){
    section{ padding: 64px 0; }
    .wrap{ padding: 0 20px; }
  }

  /* ---------- Nav ---------- */
  .nav{
    position: sticky;
    top: 0;
    z-index: 50;
    background: rgba(251,248,242,0.92);
    backdrop-filter: blur(6px);
    border-bottom: 1px solid var(--line);
  }
  .nav .wrap{
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding-top: 18px;
    padding-bottom: 18px;
  }
  .brand{
    font-family:'Fraunces', serif;
    font-weight: 600;
    font-size: 1.28rem;
    color: var(--sage-deep);
    display:flex;
    align-items:center;
    gap:10px;
  }
  .brand .mark{
    width: 30px; height:30px;
    flex-shrink:0;
  }
  .nav-links{
    display:flex;
    gap: 30px;
    font-size: 0.96rem;
    font-weight:500;
  }
  .nav-links a{ color: var(--ink-soft); transition: color .15s ease; }
  .nav-links a:hover{ color: var(--sage-deep); }
  .nav-phone{
    font-weight:600;
    color: var(--sage-deep);
    white-space: nowrap;
  }
  .nav-toggle{
    display:none;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    width: 34px;
    height: 34px;
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
    flex-shrink: 0;
  }
  .nav-toggle span{
    display:block;
    width:100%;
    height:2px;
    background: var(--sage-deep);
    border-radius: 2px;
    transition: transform .2s ease, opacity .2s ease;
  }
  .nav-toggle.open span:nth-child(1){ transform: translateY(7px) rotate(45deg); }
  .nav-toggle.open span:nth-child(2){ opacity:0; }
  .nav-toggle.open span:nth-child(3){ transform: translateY(-7px) rotate(-45deg); }
  @media (max-width: 800px){
    .nav{ position: relative; }
    .nav-toggle{ display:flex; }
    .nav-links{
      display:none;
      position: absolute;
      top: 100%;
      left:0; right:0;
      flex-direction: column;
      gap: 0;
      background: var(--cream);
      border-bottom: 1px solid var(--line);
      box-shadow: 0 12px 24px rgba(43,43,38,0.08);
    }
    .nav-links.open{ display:flex; }
    .nav-links a{
      padding: 16px 32px;
      border-bottom: 1px solid var(--line);
    }
    .nav-links a:last-child{ border-bottom:none; }
  }

  /* ---------- Scroll reveal ---------- */
  .reveal{
    opacity: 0;
    transform: translateY(28px);
    transition: opacity .7s ease, transform .7s ease;
  }
  .reveal.is-visible{
    opacity: 1;
    transform: none;
  }
  @media (prefers-reduced-motion: reduce){
    .reveal{ opacity:1; transform:none; transition:none; }
  }

  /* ---------- Hero entrance + living details ---------- */
  .hero .wrap > div:first-child{
    animation: heroFadeUp .8s ease both;
  }
  .hero-art{
    animation: heroFadeUp .8s ease .15s both;
  }
  @keyframes heroFadeUp{
    from{ opacity:0; transform: translateY(20px); }
    to{ opacity:1; transform:none; }
  }
  .sparkle-anim{
    animation: sparkleTwinkle 2.6s ease-in-out infinite;
    transform-origin: center;
  }
  .sparkle-anim.delay1{ animation-delay: .5s; }
  .sparkle-anim.delay2{ animation-delay: 1s; }
  @keyframes sparkleTwinkle{
    0%, 100%{ opacity: .55; transform: scale(0.85); }
    50%{ opacity: 1; transform: scale(1.1); }
  }
  .mist-anim{
    animation: mistFloat 3.2s ease-in-out infinite;
  }
  .mist-anim.delay1{ animation-delay: .6s; }
  .mist-anim.delay2{ animation-delay: 1.2s; }
  @keyframes mistFloat{
    0%{ opacity: 0; transform: translateY(6px); }
    40%{ opacity: .9; }
    100%{ opacity: 0; transform: translateY(-14px); }
  }
  @media (prefers-reduced-motion: reduce){
    .hero .wrap > div:first-child, .hero-art{ animation:none; }
    .sparkle-anim, .mist-anim{ animation:none; }
  }

  /* ---------- Hero ---------- */
  .hero{
    padding: 88px 0 72px;
    position: relative;
    overflow: hidden;
  }
  .hero::before{
    content:"";
    position:absolute;
    top:-140px; right:-180px;
    width:560px; height:560px;
    border-radius:50%;
    background: radial-gradient(circle at 32% 32%, rgba(255,176,32,0.32), rgba(255,176,32,0) 68%);
    z-index:0;
  }
  .hero::after{
    content:"";
    position:absolute;
    bottom:-220px; left:-140px;
    width:420px; height:420px;
    border-radius:50%;
    background: radial-gradient(circle at 50% 50%, rgba(20,184,166,0.16), rgba(20,184,166,0) 70%);
    z-index:0;
  }
  .hero .wrap{
    position:relative;
    z-index:1;
    display:grid;
    grid-template-columns: 1.05fr 0.85fr;
    gap: 56px;
    align-items:center;
  }
  .badge-stamp{
    position:absolute;
    top: 18px;
    right: 18px;
    background: var(--sage-deep);
    color: var(--cream);
    font-family:'Fraunces', serif;
    font-weight:600;
    font-size: 0.82rem;
    padding: 10px 16px;
    border-radius: 999px;
    transform: rotate(6deg);
    box-shadow: 0 6px 16px rgba(13,148,136,0.25);
    z-index:2;
  }
  @media (max-width: 640px){
    .badge-stamp{ display:none; }
  }
  @media (max-width: 860px){
    .hero .wrap{ grid-template-columns: 1fr; }
    .hero{ padding-top: 56px; }
  }

  /* ---------- Hero with contained photo card ---------- */
  .hero-split-wrap{
    display: grid;
    grid-template-columns: 1.05fr 0.85fr;
    gap: 56px;
    align-items: center;
  }
  @media (max-width: 860px){
    .hero-split-wrap{ grid-template-columns: 1fr; }
  }
  .hero-categories-dark{
    color: var(--sage-deep);
    font-weight: 700;
    letter-spacing: 0.02em;
    margin-top: 14px;
    font-size: 1.02rem;
  }
  .hero-photo-card{
    border-radius: 20px;
    overflow: hidden;
    box-shadow: 0 20px 44px rgba(43,43,38,0.14);
  }
  .hero-photo-card img{
    width: 100%;
    aspect-ratio: 4/5;
    object-fit: cover;
    display: block;
    transition: transform .5s ease;
  }
  .hero-photo-card:hover img{ transform: scale(1.04); }
  .eyebrow-plain{
    font-size: 0.98rem;
    color: var(--sage-deep);
    font-weight: 600;
    margin-bottom: 18px;
  }
  .hero h1{
    font-size: clamp(2.4rem, 4.6vw, 3.6rem);
    letter-spacing: -0.01em;
  }
  .hero p.lede{
    margin-top: 22px;
    font-size: 1.16rem;
    color: var(--ink-soft);
    max-width: 46ch;
  }
  .hero-ctas{
    margin-top: 34px;
    display:flex;
    gap: 16px;
    flex-wrap: wrap;
  }
  .btn{
    display:inline-block;
    padding: 14px 26px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 0.98rem;
    transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
  }
  .btn-primary{
    background: var(--sage);
    color: var(--white);
    box-shadow: 0 8px 20px rgba(20,184,166,0.28);
  }
  .btn-primary:hover{ background: var(--sage-deep); transform: translateY(-2px); box-shadow: 0 12px 24px rgba(20,184,166,0.32); }
  .btn-ghost{
    border: 1.5px solid var(--sage);
    color: var(--sage-deep);
  }
  .btn-ghost:hover{ background: var(--sage-pale); }

  .hero-note{
    margin-top: 20px;
    font-size: 0.92rem;
    color: var(--ink-soft);
  }

  .hero-art{
    position: relative;
  }

  /* ---------- Trust strip ---------- */
  .trust{
    border-top: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
    background: var(--sage-pale);
  }
  .trust .wrap{
    display:flex;
    flex-wrap: wrap;
    gap: 28px 44px;
    padding: 26px 32px;
    justify-content: space-between;
  }
  .trust-item{
    display:flex;
    align-items:center;
    gap: 12px;
    font-size: 0.95rem;
    font-weight: 500;
    color: var(--sage-deep);
  }
  .trust-item .icon-dot{
    width: 34px; height:34px;
    border-radius:50%;
    background: var(--honey);
    display:flex; align-items:center; justify-content:center;
    flex-shrink:0;
  }
  .trust-item:nth-child(2) .icon-dot{ background: var(--sage); }
  .trust-item:nth-child(3) .icon-dot{ background: var(--coral); }
  .trust-item:nth-child(4) .icon-dot{ background: var(--sage-deep); }
  .trust-item .icon-dot svg{ width:18px; height:18px; color: var(--white); }

  /* ---------- Section heads ---------- */
  .section-head{
    max-width: 60ch;
    margin-bottom: 52px;
  }
  .section-head h2{
    font-size: clamp(1.8rem, 3vw, 2.3rem);
  }
  .section-head p{
    margin-top: 14px;
    color: var(--ink-soft);
    font-size: 1.06rem;
  }
  .section-head.center{
    margin-left:auto;
    margin-right:auto;
    text-align:center;
  }

  /* ---------- Promo / coupon ---------- */
  .promo{
    background: var(--sage-pale);
  }
  .promo-card{
    display:grid;
    grid-template-columns: 1.1fr 0.9fr;
    gap: 48px;
    align-items:center;
  }
  @media (max-width: 860px){
    .promo-card{ grid-template-columns: 1fr; }
  }
  .promo-copy h2{
    font-size: clamp(1.7rem, 2.8vw, 2.15rem);
    margin-top: 10px;
  }
  .promo-copy p{
    margin-top: 16px;
    color: var(--ink-soft);
    font-size: 1.03rem;
    max-width: 46ch;
  }
  .promo-copy .btn{ margin-top: 26px; }

  .coupon{
    background: var(--white);
    border: 2px dashed var(--honey-deep);
    border-radius: 16px;
    position: relative;
    padding: 30px 30px 22px;
  }
  .coupon::before, .coupon::after{
    content:"";
    position:absolute;
    width: 26px; height: 26px;
    background: var(--sage-pale);
    border-radius: 50%;
    left: 50%;
    transform: translateX(-50%);
  }
  .coupon::before{ top: -13px; }
  .coupon::after{ bottom: -13px; }
  .coupon-top{
    display:flex;
    flex-direction: column;
    align-items:center;
    text-align:center;
    padding-bottom: 20px;
  }
  .coupon-label{
    font-size: 0.86rem;
    font-weight: 600;
    color: var(--sage-deep);
    margin-bottom: 10px;
  }
  .coupon-amount{
    font-family: 'Fraunces', serif;
    font-size: 2.6rem;
    font-weight: 700;
    color: var(--honey-deep);
    line-height: 1;
  }
  .coupon-sub{
    margin-top: 8px;
    font-size: 0.94rem;
    color: var(--ink-soft);
    font-weight: 500;
  }
  .coupon-perf{
    border-top: 2px dashed var(--line);
  }
  .coupon-bottom{
    padding-top: 18px;
    text-align:center;
  }
  .coupon-note{
    font-size: 0.85rem;
    color: var(--ink-soft);
  }

  .rewards-block{
    margin-top: 64px;
    padding-top: 56px;
    border-top: 1px solid rgba(43,43,38,0.1);
  }
  .rewards-steps{
    display:grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 30px;
    margin-bottom: 48px;
  }
  @media (max-width: 800px){
    .rewards-steps{ grid-template-columns: 1fr; gap: 26px; }
  }
  .rewards-step .num{
    font-family:'Fraunces', serif;
    font-size: 1.4rem;
    color: var(--honey-deep);
    display:block;
    margin-bottom: 10px;
  }
  .rewards-step h3{ font-size: 1.08rem; margin-bottom: 6px; }
  .rewards-step p{ font-size: 0.95rem; color: var(--ink-soft); }

  .tier-grid{
    display:grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
  }
  @media (max-width: 900px){
    .tier-grid{ grid-template-columns: repeat(2, 1fr); }
  }
  @media (max-width: 560px){
    .tier-grid{ grid-template-columns: 1fr; }
  }
  .tier-card{
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 14px;
    padding: 26px 22px;
    text-align:center;
  }
  .tier-card.featured{
    background: linear-gradient(135deg, var(--honey) 0%, var(--honey-deep) 100%);
    border-color: var(--honey-deep);
  }
  .tier-card.featured h3, .tier-card.featured .tier-points{ color: var(--white); }
  .tier-card.featured p{ color: rgba(255,255,255,0.92); }
  .tier-points{
    display:inline-block;
    font-size: 0.82rem;
    font-weight: 700;
    color: var(--honey-deep);
    background: var(--sage-pale);
    padding: 5px 14px;
    border-radius: 999px;
    margin-bottom: 14px;
  }
  .tier-card.featured .tier-points{ background: rgba(251,248,242,0.15); }
  .tier-card h3{ font-size: 1.15rem; margin-bottom: 8px; }
  .tier-card p{ font-size: 0.9rem; color: var(--ink-soft); }

  /* ---------- Gallery ---------- */
  .gallery-grid{
    display:grid;
    grid-template-columns: 1.3fr 1fr;
    gap: 24px;
  }
  @media (max-width: 800px){
    .gallery-grid{ grid-template-columns: 1fr; }
  }
  .gallery-item{
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 14px;
    overflow: hidden;
  }
  .gallery-item img{
    width: 100%;
    height: 320px;
    object-fit: cover;
    display: block;
    transition: transform .5s ease;
  }
  .gallery-item:hover img{ transform: scale(1.05); }
  .gallery-item.large img{ height: 400px; }
  @media (max-width: 800px){
    .gallery-item.large img{ height: 320px; }
  }
  .gallery-item figcaption{
    padding: 16px 20px;
    font-size: 0.92rem;
    color: var(--ink-soft);
  }

  /* ---------- Team ---------- */
  .team-block{
    display:grid;
    grid-template-columns: 0.85fr 1.15fr;
    gap: 52px;
    align-items:center;
  }
  @media (max-width: 800px){
    .team-block{ grid-template-columns: 1fr; }
  }
  .team-photo{ overflow: hidden; border-radius: 18px; }
  .team-photo img{
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border-radius: 18px;
    display:block;
    transition: transform .5s ease;
  }
  .team-photo:hover img{ transform: scale(1.05); }
  .photo-caption{
    margin-top: 10px;
    font-size: 0.85rem;
    color: var(--ink-soft);
    text-align: center;
  }
  .team-copy h2{ font-size: clamp(1.7rem, 2.8vw, 2.15rem); margin-top:10px; }
  .team-copy p{ margin-top:16px; color: var(--ink-soft); font-size: 1.03rem; max-width: 48ch; }

  /* ---------- Services ---------- */
  .lot-grid{
    display:grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
  }
  @media (max-width: 1000px){
    .lot-grid{ grid-template-columns: repeat(2, 1fr); }
  }
  @media (max-width: 560px){
    .lot-grid{ grid-template-columns: 1fr; }
  }
  .lot-card{
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 14px;
    overflow: hidden;
    display:flex;
    flex-direction:column;
  }
  .lot-photo{
    aspect-ratio: 4/3;
    overflow: hidden;
  }
  .lot-photo img{
    width:100%;
    height:100%;
    object-fit: cover;
    display:block;
    transition: transform .5s ease;
  }
  .lot-card:hover .lot-photo img{ transform: scale(1.06); }
  .lot-card > *:not(.lot-photo){ padding-left: 22px; padding-right: 22px; }
  .lot-label{
    margin-top: 18px;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--honey-deep);
  }
  .lot-card:nth-child(1) .lot-label{ color: var(--honey-deep); }
  .lot-card:nth-child(2) .lot-label{ color: var(--coral); }
  .lot-card:nth-child(3) .lot-label{ color: var(--sage-deep); }
  .lot-card:nth-child(4) .lot-label{ color: #7C3AED; }
  .lot-card h3{
    font-size: 1.15rem;
    margin-top: 6px;
  }
  .lot-card p{
    margin-top: 8px;
    font-size: 0.92rem;
    color: var(--ink-soft);
    flex-grow: 1;
  }
  .lot-tags{
    margin-top: 14px;
    margin-bottom: 20px;
    font-size: 0.82rem;
    color: var(--sage-deep);
    font-weight: 600;
    border-top: 1px solid var(--line);
    padding-top: 12px;
  }

  .services-grid{
    display:grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 2px;
    background: var(--line);
    border: 1px solid var(--line);
    border-radius: 14px;
    overflow:hidden;
  }
  @media (max-width: 720px){
    .services-grid{ grid-template-columns: 1fr; }
  }
  .service-card{
    background: var(--white);
    padding: 40px 38px;
    transition: transform .18s ease, box-shadow .18s ease;
  }
  .service-card:hover{
    transform: translateY(-4px);
    box-shadow: 0 14px 30px rgba(43,43,38,0.08);
    position: relative;
    z-index: 1;
  }
  .service-card .tag{
    font-size: 0.86rem;
    font-weight: 600;
    color: var(--honey-deep);
    margin-bottom: 12px;
  }
  .service-card h3{
    font-size: 1.4rem;
    margin-bottom: 12px;
  }
  .service-card p{
    color: var(--ink-soft);
    font-size: 0.99rem;
  }
  .service-card .checklist{
    list-style:none;
    padding:0;
    margin:0;
    display:flex;
    flex-direction:column;
    gap: 10px;
  }
  .service-card .checklist li{
    position:relative;
    padding-left: 26px;
    font-size: 0.95rem;
    color: var(--ink-soft);
  }
  .service-card .checklist li::before{
    content:"";
    position:absolute;
    left:0; top:3px;
    width:16px; height:16px;
    border-radius:4px;
    background: var(--sage-pale);
    border: 1.5px solid var(--sage);
  }
  .service-card .checklist li::after{
    content:"";
    position:absolute;
    left:4px; top:6px;
    width:8px; height:4px;
    border-left: 2px solid var(--sage-deep);
    border-bottom: 2px solid var(--sage-deep);
    transform: rotate(-45deg);
  }
  .service-card .checklist li .note{
    color: var(--ink-soft);
    font-style: italic;
    font-size: 0.87rem;
  }

  .feature-strip{
    margin-top: 44px;
    display:grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px;
  }
  @media (max-width: 720px){
    .feature-strip{ grid-template-columns: 1fr; }
  }
  .feature-item{
    display:flex;
    gap: 18px;
    background: var(--sage-pale);
    border-radius: 14px;
    padding: 26px;
  }
  .feature-item .icon{
    width: 44px; height:44px;
    border-radius: 10px;
    background: var(--white);
    display:flex; align-items:center; justify-content:center;
    flex-shrink:0;
  }
  .feature-item .icon svg{ width:22px; height:22px; color: var(--sage-deep); }
  .feature-item h3{ font-size: 1.05rem; margin-bottom: 6px; }
  .feature-item p{ font-size: 0.92rem; color: var(--ink-soft); }

  /* ---------- Process ---------- */
  .process{
    background: linear-gradient(135deg, var(--sage) 0%, var(--sage-deep) 55%, var(--honey-deep) 130%);
    color: var(--white);
  }
  .process .section-head h2, .process .section-head p{ color: var(--white); }
  .process .section-head p{ color: rgba(255,255,255,0.85); }
  .process-list{
    display:grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 40px;
  }
  @media (max-width: 800px){
    .process-list{ grid-template-columns: 1fr; gap: 36px; }
  }
  .process-step{
    border-top: 2px solid rgba(255,255,255,0.35);
    padding-top: 22px;
  }
  .process-step .num{
    font-family:'Fraunces', serif;
    font-size: 1.5rem;
    color: var(--white);
    margin-bottom: 14px;
    display:block;
  }
  .process-step h3{
    color: var(--white);
    font-size: 1.2rem;
    margin-bottom: 10px;
  }
  .process-step p{
    color: rgba(255,255,255,0.9);
    font-size: 0.98rem;
  }

  /* ---------- Why us ---------- */
  .why-block{
    display:grid;
    grid-template-columns: 1fr 0.85fr;
    gap: 56px;
    align-items:center;
    margin-bottom: 44px;
  }
  @media (max-width: 860px){
    .why-block{ grid-template-columns: 1fr; }
  }
  .why-copy p{ margin-top: 14px; color: var(--ink-soft); font-size: 1.02rem; }
  .fact-list{
    list-style:none;
    padding:0;
    margin: 26px 0 0;
    display:flex;
    flex-direction:column;
    gap: 14px;
  }
  .fact-list li{
    position:relative;
    padding-left: 22px;
    font-size: 0.98rem;
    color: var(--ink);
  }
  .fact-list li::before{
    content: "—";
    position:absolute;
    left:0;
    color: var(--sage-deep);
    font-weight:700;
  }
  .why-photo{
    border-radius: 18px;
    overflow: hidden;
  }
  .why-photo img{
    width:100%;
    aspect-ratio: 4/5;
    object-fit: cover;
    display:block;
    transition: transform .5s ease;
  }
  .why-photo:hover img{ transform: scale(1.05); }

  .quote-block{
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 14px;
    padding: 40px;
  }
  .quote-block blockquote{
    font-family:'Fraunces', serif;
    font-size: 1.32rem;
    line-height: 1.45;
    color: var(--ink);
    margin-bottom: 18px;
  }
  .quote-block cite{
    font-style: normal;
    font-size: 0.92rem;
    color: var(--ink-soft);
    font-weight: 500;
  }
  .quote-divider{
    height:1px;
    background: var(--line);
    margin: 28px 0;
  }

  /* ---------- Service area ---------- */
  .area{
    background: var(--honey);
    color: var(--ink);
  }
  .area .wrap{
    display:grid;
    grid-template-columns: 1fr 1fr;
    gap: 48px;
    align-items:center;
  }
  @media (max-width: 800px){
    .area .wrap{ grid-template-columns: 1fr; }
  }
  .area h2{ font-size: clamp(1.8rem, 3vw, 2.2rem); }
  .area p{ margin-top: 16px; color: #5C4416; font-size: 1.03rem; max-width: 48ch; }
  .town-list{
    display:flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 26px;
  }
  .town-pill{
    background: rgba(43,43,38,0.08);
    border: 1px solid rgba(43,43,38,0.18);
    padding: 8px 16px;
    border-radius: 999px;
    font-size: 0.92rem;
    font-weight: 600;
  }

  /* ---------- Contact / CTA ---------- */
  .contact-grid{
    display:grid;
    grid-template-columns: 1fr 1fr;
    gap: 56px;
  }
  @media (max-width: 860px){
    .contact-grid{ grid-template-columns: 1fr; }
  }
  .contact-info h2{ font-size: clamp(1.8rem, 3vw, 2.2rem); }
  .contact-info p{ margin-top: 16px; color: var(--ink-soft); max-width: 46ch; }
  .contact-line{
    margin-top: 28px;
    display:flex;
    flex-direction: column;
    gap: 14px;
  }
  .contact-line a, .contact-line span{
    display:flex;
    align-items:center;
    gap: 12px;
    font-weight: 600;
    color: var(--sage-deep);
  }
  .contact-line svg{ width:20px; height:20px; }

  form{
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 14px;
    padding: 36px;
  }
  .field{ margin-bottom: 18px; }
  .field label{
    display:block;
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--ink);
    margin-bottom: 7px;
  }
  .field input, .field select, .field textarea{
    width:100%;
    padding: 12px 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    font-family: inherit;
    font-size: 0.97rem;
    background: var(--cream);
    color: var(--ink);
  }
  .field input:focus, .field select:focus, .field textarea:focus{
    outline: 2px solid var(--sage);
    outline-offset: 1px;
  }
  .field textarea{ resize: vertical; min-height: 90px; }
  .field-check{
    display:flex;
    align-items:flex-start;
    gap: 10px;
    margin-bottom: 22px;
  }
  .field-check input{
    width: 18px; height: 18px;
    margin-top: 2px;
    accent-color: var(--sage);
    flex-shrink:0;
  }
  .field-check label{
    font-size: 0.88rem;
    font-weight: 500;
    color: var(--ink-soft);
  }
  form .btn{ width:100%; text-align:center; border:none; cursor:pointer; }

  /* ---------- Footer ---------- */
  footer{
    background: var(--sage-deep);
    color: #E0FBF7;
    padding: 56px 0 32px;
  }
  .footer-top{
    display:flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 30px;
    padding-bottom: 34px;
    border-bottom: 1px solid rgba(255,255,255,0.18);
  }
  .footer-brand{
    font-family:'Fraunces', serif;
    font-size: 1.2rem;
    color: var(--white);
    display:flex;
    align-items:center;
    gap:10px;
  }
  .footer-brand .mark{ width:26px; height:26px; }
  .footer-tagline{
    margin-top: 8px;
    font-size: 0.92rem;
    color: #B8EDE4;
    max-width: 34ch;
  }
  .footer-links{
    display:flex;
    gap: 44px;
    flex-wrap: wrap;
  }
  .footer-col h4{
    font-size: 0.82rem;
    color: #B8EDE4;
    font-weight: 600;
    margin-bottom: 12px;
  }
  .footer-col a, .footer-col span{
    display:block;
    font-size: 0.92rem;
    color: #E0FBF7;
    margin-bottom: 9px;
  }
  .footer-col a:hover{ color: var(--honey); }
  .footer-bottom{
    padding-top: 24px;
    font-size: 0.85rem;
    color: #9DDFD3;
    display:flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
  }

  .sr-only{
    position:absolute; width:1px; height:1px;
    padding:0; margin:-1px; overflow:hidden;
    clip:rect(0,0,0,0); white-space:nowrap; border:0;
  }

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

  /* ---------- Nav right / auth / booking message ---------- */
  .auth-btn{
    background: var(--sage);
    color: var(--white);
    font-weight:600;
    font-size: 0.92rem;
    padding: 10px 18px;
    border-radius: 8px;
    border:none;
    cursor:pointer;
    font-family: inherit;
  }
  .auth-btn:hover{ background: var(--sage-deep); }
  .account-chip{
    display:flex;
    align-items:center;
    gap: 10px;
    background: var(--sage-pale);
    border-radius: 999px;
    padding: 8px 16px;
    cursor:pointer;
    font-size: 0.9rem;
    font-weight:600;
    color: var(--sage-deep);
  }
  .modal-overlay{
    display:none;
    position: fixed;
    inset:0;
    background: rgba(31,41,55,0.5);
    z-index: 100;
    align-items:center;
    justify-content:center;
    padding: 20px;
  }
  .modal-overlay.open{ display:flex; }
  .modal-box{
    background: var(--white);
    border-radius: 16px;
    padding: 36px;
    max-width: 420px;
    width:100%;
    max-height: 88vh;
    overflow-y:auto;
    position:relative;
  }
  .modal-close{
    position:absolute;
    top: 16px; right: 16px;
    background:none;
    border:none;
    font-size: 1.3rem;
    color: var(--ink-soft);
    cursor:pointer;
    line-height:1;
  }
  .modal-tabs{
    display:flex;
    gap: 6px;
    background: var(--sage-pale);
    border-radius: 10px;
    padding: 4px;
    margin-bottom: 24px;
  }
  .modal-tab{
    flex:1;
    text-align:center;
    padding: 9px 0;
    border-radius: 8px;
    font-size: 0.92rem;
    font-weight:600;
    color: var(--ink-soft);
    cursor:pointer;
    background:none;
    border:none;
    font-family:inherit;
  }
  .modal-tab.active{ background: var(--white); color: var(--sage-deep); }
  .modal-panel{ display:none; }
  .modal-panel.active{ display:block; }
  .account-panel h3{ font-size: 1.3rem; margin-bottom: 4px; }
  .account-panel .since{ color: var(--ink-soft); font-size: 0.9rem; margin-bottom: 8px; }
  .my-booking-row{
    background: var(--sage-pale);
    border-radius: 10px;
    padding: 12px 14px;
    margin-bottom: 10px;
    font-size: 0.88rem;
  }
  .my-booking-row .status{
    display:inline-block;
    font-size: 0.72rem;
    font-weight:700;
    text-transform: uppercase;
    padding: 2px 8px;
    border-radius: 999px;
    margin-left: 8px;
  }
  .status-pending{ background: var(--honey); color: var(--white); }
  .status-confirmed{ background: var(--sage); color: var(--white); }
  .nav-right{ display:flex; align-items:center; gap: 18px; }
  .modal-msg{
    font-size: 0.88rem;
    border-radius: 8px;
    padding: 10px 12px;
    margin-bottom: 16px;
    display:none;
  }
  .modal-msg.show{ display:block; }
  .modal-msg.error{ background:#FBE7DF; color:#9A3B1F; }
  .modal-msg.success{ background: var(--sage-pale); color: var(--sage-deep); }
  .send-options{
    display:flex;
    gap: 12px;
    margin-bottom: 16px;
  }
  @media (max-width: 480px){
    .send-options{ flex-direction: column; }
  }
  .send-btn{
    flex:1;
    display:flex;
    align-items:center;
    justify-content:center;
    gap: 8px;
    text-align:center;
    font-size: 0.92rem;
  }
  .send-btn svg{ width:18px; height:18px; flex-shrink:0; }

  /* ---------- Calendar picker ---------- */
  .calendar-field{ margin-bottom: 22px; }
  .calendar{
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 18px;
  }
  .calendar-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    margin-bottom: 12px;
  }
  .calendar-head .month-label{
    font-family:'Fraunces', serif;
    font-weight:600;
    font-size: 1.02rem;
  }
  .calendar-nav{
    display:flex;
    gap: 6px;
  }
  .calendar-nav button{
    width: 30px; height:30px;
    border-radius: 8px;
    border: 1px solid var(--line);
    background: var(--cream);
    cursor:pointer;
    font-size: 0.95rem;
    color: var(--sage-deep);
  }
  .calendar-nav button:disabled{ opacity:0.35; cursor:not-allowed; }
  .calendar-grid{
    display:grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 4px;
    text-align:center;
  }
  .calendar-grid .dow{
    font-size: 0.72rem;
    font-weight:600;
    color: var(--ink-soft);
    padding-bottom: 6px;
  }
  .calendar-day{
    aspect-ratio: 1;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius: 8px;
    font-size: 0.88rem;
    cursor:pointer;
    border: 1px solid transparent;
    background:none;
    font-family:inherit;
    color: var(--ink);
  }
  .calendar-day:hover:not(.disabled):not(.empty){ background: var(--sage-pale); }
  .calendar-day.disabled{ color: var(--line); cursor:not-allowed; text-decoration: line-through; }
  .calendar-day.empty{ cursor:default; }
  .calendar-day.selected{ background: var(--sage); color: var(--white); font-weight:600; }
  .calendar-note{
    margin-top: 12px;
    font-size: 0.85rem;
    color: var(--ink-soft);
  }
  .calendar-note strong{ color: var(--sage-deep); }

  /* ---------- Multi-page additions ---------- */
  .nav-links a.active-link{ color: var(--sage-deep); font-weight: 700; }

  .page-header{
    padding: 64px 0 12px;
    text-align: center;
  }
  .page-header .eyebrow-plain{
    text-align: center;
    color: var(--honey-deep);
  }
  .page-header h1{
    font-size: clamp(2rem, 4vw, 2.8rem);
    max-width: 32ch;
    margin: 0 auto;
  }
  .page-header .page-lede{
    margin: 16px auto 0;
    max-width: 52ch;
    color: var(--ink-soft);
    font-size: 1.08rem;
  }

  .page-header.split{
    text-align: left;
    padding: 56px 0 8px;
  }
  .page-header.split .wrap{
    display:grid;
    grid-template-columns: 1.1fr 0.9fr;
    gap: 40px;
    align-items:center;
  }
  .page-header.split .eyebrow-plain,
  .page-header.split .page-lede{
    text-align:left;
    margin-left:0;
  }
  .page-header.split h1{ margin-left:0; }
  @media (max-width: 800px){
    .page-header.split .wrap{ grid-template-columns: 1fr; }
    .page-header.split{ text-align:center; }
    .page-header.split .eyebrow-plain,
    .page-header.split .page-lede{ text-align:center; margin-left:auto; margin-right:auto; }
    .page-header.split h1{ margin-left:auto; margin-right:auto; }
    .page-header.split .header-art{ order:-1; max-width:280px; margin:0 auto; }
  }
  .header-art svg{ width:100%; height:auto; display:block; }
  .header-art img{
    width:100%;
    aspect-ratio: 4/3;
    object-fit: cover;
    border-radius: 18px;
    display:block;
  }

  /* ---------- Photo zoom on hover (real photos) ---------- */
  .photo-frame{
    border-radius: 18px;
    overflow: hidden;
  }
  .photo-frame img{
    transition: transform .5s ease;
    display:block;
    width:100%;
  }
  .photo-frame:hover img{ transform: scale(1.05); }

  /* ---------- Homepage compact meet-the-owners strip ---------- */
  #meet-strip{
    background: var(--sage-pale);
    padding: 36px 0;
  }
  .meet-strip-inner{
    display:flex;
    align-items:center;
    justify-content:center;
    gap: 18px;
    flex-wrap: wrap;
    text-align:center;
  }
  .meet-strip-photo{
    width: 56px;
    height: 56px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink:0;
  }
  .meet-strip-inner p{
    font-size: 0.98rem;
    color: var(--ink);
    margin:0;
  }
  .meet-strip-inner a{
    font-weight: 700;
    color: var(--sage-deep);
    white-space: nowrap;
  }
  .meet-strip-inner a:hover{ color: var(--honey-deep); }

  .explore-grid{
    display:grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
  }
  @media (max-width: 860px){
    .explore-grid{ grid-template-columns: repeat(2, 1fr); }
  }
  @media (max-width: 560px){
    .explore-grid{ grid-template-columns: 1fr; }
  }
  .explore-card{
    display:block;
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 14px;
    padding: 28px 24px;
    transition: transform .18s ease, box-shadow .18s ease;
  }
  .explore-card:hover{
    transform: translateY(-4px);
    box-shadow: 0 14px 30px rgba(43,43,38,0.08);
  }
  .explore-card h3{ font-size: 1.15rem; margin-bottom: 8px; color: var(--sage-deep); }
  .explore-card p{ font-size: 0.94rem; color: var(--ink-soft); }


  /* ===== Header (clean, one line on every screen) ===== */
  .nav .wrap{ gap: 20px; padding-top: 12px; padding-bottom: 12px; min-height: 68px; }
  .brand{ font-size: 1.22rem; white-space: nowrap; min-width: 0; flex-shrink: 1; overflow: hidden; }
  .brand-name{ overflow: hidden; text-overflow: ellipsis; }
  .brand .mark{ width: 34px; height: 34px; }
  .nav-links{ gap: 26px; flex: 1; justify-content: center; white-space: nowrap; }
  .nav-links a{ white-space: nowrap; }
  .nav-menu-extra{ display: none; }
  .nav-right{ gap: 12px; flex-shrink: 0; }
  .nav-phone{ display: inline-flex; align-items: center; gap: 8px; font-size: .95rem; }
  .nav-phone svg{ flex-shrink: 0; }
  .auth-btn{ background: transparent; color: var(--sage-deep); border: 1.5px solid var(--sage-pale); padding: 9px 16px; border-radius: 999px; white-space: nowrap; }
  .auth-btn:hover{ background: var(--sage-pale); }
  .account-chip{ white-space: nowrap; padding: 9px 16px; }
  .nav-book{ background: var(--sage-deep); color: #fff; font-weight: 700; font-size: .92rem; padding: 10px 18px; border-radius: 999px; white-space: nowrap; transition: background .15s ease; }
  .nav-book:hover{ background: var(--sage); }
  .nav-toggle{ width: 40px; height: 40px; padding: 9px; border-radius: 10px; }
  .nav-toggle:hover{ background: var(--sage-pale); }
  .nav-toggle.open span:nth-child(1){ transform: translateY(7px) rotate(45deg); }
  .nav-toggle.open span:nth-child(3){ transform: translateY(-7px) rotate(-45deg); }

  /* The phone is a round call button (the number is in the menu and all over the page) */
  .nav-phone-num{ position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .nav-phone{ width: 40px; height: 40px; justify-content: center; border-radius: 999px; border: 1.5px solid var(--sage-pale); }
  .nav-phone:hover{ background: var(--sage-pale); }
  @media (min-width: 641px){ .brand{ flex-shrink: 0; overflow: visible; } }
  @media (max-width: 1240px){ .nav-links{ gap: 20px; } }
  /* Tablets and phones: links move into the menu */
  @media (max-width: 1060px){
    .nav{ position: sticky; }
    .nav-toggle{ display: flex; }
    .nav-links{
      display: none; position: absolute; top: 100%; left: 0; right: 0; flex-direction: column; gap: 0;
      background: #fff; border-bottom: 1px solid var(--line); box-shadow: 0 16px 30px rgba(31,41,55,.10); padding: 6px 0 14px;
    }
    .nav-links.open{ display: flex; }
    .nav-links a{ padding: 14px 24px; border-bottom: 1px solid var(--line); font-size: 1rem; }
    .nav-menu-extra{ display: flex; flex-direction: column; gap: 10px; padding: 14px 24px 0; }
    .nav-menu-extra a, .nav-menu-extra button{ border: 0; text-align: center; padding: 13px 16px; border-radius: 999px; font: 600 1rem 'Work Sans', sans-serif; cursor: pointer; }
    .menu-call{ background: var(--sage-pale); color: var(--sage-deep) !important; }
    .menu-auth{ background: #fff; color: var(--sage-deep); border: 1.5px solid var(--sage-pale) !important; }
    .menu-book{ background: var(--sage-deep); color: #fff !important; }
  }
  @media (max-width: 640px){
    .nav .wrap{ gap: 10px; min-height: 60px; }
    .brand{ font-size: 1.08rem; gap: 8px; }
    .brand .mark{ width: 30px; height: 30px; }
    .auth-btn, .account-chip, .nav-book{ display: none !important; }
  }
  @media (max-width: 360px){ .brand-rest{ display: none; } }

  /* Booking calendar: full days, legend, next open day */
  .calendar-day.is-full{ background: #FDECEC; color: #B4464B; text-decoration: none; }
  .calendar-day.is-closed{ text-decoration: line-through; }
  .calendar-day.is-soon, .calendar-day.is-far{ text-decoration: none; opacity: .45; }
  .cal-legend{ display:flex; flex-wrap:wrap; gap: 6px 16px; margin-top: 12px; font-size: .8rem; color: var(--ink-soft); }
  .cal-legend span{ display:inline-flex; align-items:center; gap:6px; }
  .cal-legend .lg{ width: 14px; height: 14px; border-radius: 4px; display:inline-block; border: 1px solid var(--line); }
  .cal-legend .lg.open{ background:#fff; }
  .cal-legend .lg.full{ background:#FDECEC; border-color:#F5C2C2; }
  .cal-legend .lg.closed{ background: repeating-linear-gradient(135deg,#fff,#fff 3px,var(--line) 3px,var(--line) 5px); }
  .cal-next{ margin-top: 8px; font-size: .88rem; color: var(--ink-soft); }
  .cal-next button{ background:none; border:0; padding:0; font: 700 .88rem 'Work Sans', sans-serif; color: var(--sage-deep); text-decoration: underline; cursor:pointer; }
  .calendar-nav button:disabled{ opacity:.35; cursor:default; }

  /* =========================================================
     v6: shorter page + 3-step booking panel
     ========================================================= */
  section{ padding: 72px 0; }
  @media (max-width: 640px){ section{ padding: 48px 0; } }
  .section-head{ margin-bottom: 32px; }

  /* hero trust line (replaces the separate strip) */
  .hero-trust{ list-style:none; display:flex; flex-wrap:wrap; gap:8px 18px; margin-top:22px; font-size:.9rem; font-weight:600; color:var(--sage-deep); }
  .hero-trust li{ display:inline-flex; align-items:center; gap:7px; }
  .hero-trust li::before{ content:""; width:16px; height:16px; border-radius:50%; background:var(--sage) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E") center/10px no-repeat; }

  /* services: compact cards that book directly */
  .svc-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
  @media (max-width: 1000px){ .svc-grid{ grid-template-columns:repeat(2,1fr); } }
  @media (max-width: 560px){ .svc-grid{ grid-template-columns:1fr; gap:10px; } }
  .svc-card{ display:flex; flex-direction:column; text-align:left; background:#fff; border:1px solid var(--line); border-radius:14px; overflow:hidden; padding:0; cursor:pointer; font:inherit; color:inherit; transition:transform .15s, box-shadow .15s, border-color .15s; }
  .svc-card:hover, .svc-card:focus-visible{ transform:translateY(-3px); box-shadow:0 12px 26px rgba(13,148,136,.14); border-color:var(--sage); }
  .svc-photo{ display:block; aspect-ratio:16/10; overflow:hidden; }
  .svc-photo img{ width:100%; height:100%; object-fit:cover; }
  .svc-body{ display:flex; flex-direction:column; gap:6px; padding:16px 18px 18px; flex:1; }
  .svc-body b{ font-family:'Fraunces',serif; font-size:1.12rem; font-weight:600; }
  .svc-body span{ font-size:.9rem; color:var(--ink-soft); line-height:1.45; flex:1; }
  .svc-body em{ font-style:normal; font-weight:700; font-size:.88rem; color:var(--sage-deep); margin-top:4px; }
  @media (max-width: 560px){
    .svc-card{ flex-direction:row; }
    .svc-photo{ width:108px; flex-shrink:0; aspect-ratio:auto; }
    .svc-body{ padding:12px 14px; gap:3px; }
    .svc-body span{ font-size:.85rem; }
  }
  .included{ margin-top:18px; border:1px solid var(--line); border-radius:14px; background:#fff; }
  .included summary{ list-style:none; cursor:pointer; padding:16px 20px; display:flex; align-items:center; justify-content:space-between; gap:14px; }
  .included summary::-webkit-details-marker{ display:none; }
  .included summary > span{ display:flex; flex-direction:column; }
  .included summary small{ font-size:.86rem; color:var(--ink-soft); }
  .included summary::after{ content:"+"; font:600 1.4rem/1 'Work Sans',sans-serif; color:var(--sage-deep); width:34px; height:34px; border-radius:50%; background:var(--sage-pale); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
  .included[open] summary::after{ content:"\2212"; }
  .included .services-grid{ padding:0 20px; margin-top:0; }
  .included .service-card{ padding:18px; }
  .included-extras{ padding:16px 20px 20px; font-size:.92rem; color:var(--ink-soft); }
  .included-extras b{ color:var(--ink); }

  /* booking panel */
  .book{ background:linear-gradient(180deg,var(--sage-pale) 0,#F3FCFA 100%); }
  .book-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:12px 24px; flex-wrap:wrap; margin-bottom:22px; }
  .book-head h2{ font-size:clamp(1.8rem,3vw,2.3rem); }
  .book-head p{ color:var(--ink-soft); margin-top:6px; }
  .book-call{ font-size:.95rem; color:var(--ink-soft); }
  .book-call b{ color:var(--sage-deep); }
  form.bform{ display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,1fr); gap:0; padding:0; overflow:hidden; box-shadow:0 18px 40px rgba(13,148,136,.10); }
  .bform .bstep{ padding:26px 28px; }
  .bform .bstep[data-step="1"]{ border-right:1px solid var(--line); }
  .bform .bstep[data-step="2"]{ border-bottom:1px solid var(--line); }
  .bstep-t{ display:flex; align-items:center; gap:10px; font-size:1.12rem; margin-bottom:14px; }
  .bstep-t span{ width:26px; height:26px; border-radius:50%; background:var(--sage); color:#fff; font:700 .82rem/26px 'Work Sans',sans-serif; text-align:center; flex-shrink:0; }
  .blabel{ font-size:.88rem; font-weight:600; margin:0 0 8px; }
  .opt{ font-weight:400; color:var(--ink-soft); }
  .chips{ display:flex; flex-wrap:wrap; gap:8px; }
  .chip{ border:1.5px solid var(--line); background:#fff; color:var(--ink); border-radius:999px; padding:8px 14px; font:600 .88rem 'Work Sans',sans-serif; cursor:pointer; line-height:1.2; transition:background .12s, border-color .12s; }
  .chip:hover:not(:disabled){ border-color:var(--sage); }
  .chip[aria-checked="true"]{ background:var(--sage); border-color:var(--sage); color:#fff; }
  .chip:disabled{ opacity:.45; cursor:not-allowed; text-decoration:line-through; }
  .chip small{ display:block; font-weight:500; font-size:.76rem; opacity:.85; margin-top:1px; }
  .svc-chips{ margin-bottom:14px; }
  .bform .calendar{ padding:14px; }
  .bform .calendar-day{ aspect-ratio:auto; height:38px; }
  .win-box{ margin-top:14px; }
  .win-box .chip{ flex:1; min-width:120px; text-align:center; border-radius:12px; padding:9px 10px; }
  .bform .calendar-note{ margin-top:10px; }
  .bform .field{ margin-bottom:14px; }
  .bform .field textarea{ min-height:64px; }
  #sizeChips{ margin-bottom:16px; }
  .brow{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
  .who-box{ background:var(--sage-pale); border-radius:10px; padding:12px 14px; font-size:.93rem; margin-bottom:14px; display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px; }
  .who-box[hidden]{ display:none; }
  .who-box #whoContact{ color:var(--ink-soft); }
  .who-box button{ margin-left:auto; background:none; border:0; color:var(--sage-deep); font:700 .85rem 'Work Sans',sans-serif; text-decoration:underline; cursor:pointer; }
  .bform .field-check{ margin-bottom:14px; }
  .bsummary{ font-size:.9rem; color:var(--ink-soft); margin-bottom:12px; }
  .bsummary b{ color:var(--ink); }
  .bnav{ display:flex; gap:10px; margin-top:6px; }
  .bnav .btn{ flex:1; text-align:center; border:none; cursor:pointer; padding:13px 18px; }
  .bnav .btn-ghost{ border:1.5px solid var(--sage); background:#fff; flex:0 0 auto; }
  .bstep[data-step="1"] .bnav, .bstep[data-step="2"] .bnav, .bnav .bback{ display:none; }
  .bprog{ display:none; }
  @media (max-width: 860px){
    form.bform{ display:block; }
    .bside{ display:contents; }
    .bform .bstep{ display:none; padding:20px 18px; border:0 !important; }
    .bform .bstep.cur{ display:block; }
    .bstep[data-step="1"] .bnav, .bstep[data-step="2"] .bnav, .bnav .bback{ display:flex; }
    .bnav .bback{ display:inline-block; }
    .bprog{ display:flex; list-style:none; gap:6px; padding:14px 18px 0; counter-reset:s; }
    .bprog li{ flex:1; font-size:.74rem; font-weight:600; color:var(--ink-soft); padding-top:8px; border-top:4px solid var(--line); counter-increment:s; }
    .bprog li::before{ content:counter(s) ". "; }
    .bprog li.on{ border-color:var(--sage); color:var(--sage-deep); }
    .bstep-t{ display:none; }
    .brow{ grid-template-columns:1fr; gap:0; }
  }

  /* work + reviews */
  .work-grid{ display:grid; grid-template-columns:1.4fr 1fr; grid-template-rows:auto auto; gap:16px; }
  .work-grid .gallery-item.large{ grid-row:1 / span 2; }
  .work-grid .gallery-item.large img{ height:100%; min-height:360px; }
  .work-grid .gallery-item img{ height:220px; }
  .quotes{ display:flex; flex-direction:column; gap:12px; }
  .quotes blockquote{ background:var(--sage-pale); border-radius:14px; padding:16px 18px; font-family:'Fraunces',serif; font-size:1.02rem; line-height:1.45; }
  .quotes cite{ display:block; margin-top:8px; font:600 .82rem 'Work Sans',sans-serif; color:var(--sage-deep); font-style:normal; }
  @media (max-width: 800px){
    .work-grid{ grid-template-columns:1fr; }
    .work-grid .gallery-item.large{ grid-row:auto; }
    .work-grid .gallery-item.large img{ min-height:0; height:260px; }
    .work-grid .gallery-item:not(.large){ display:none; }
  }

  /* about + area */
  .about-block{ display:grid; grid-template-columns:.85fr 1fr; gap:48px; align-items:center; }
  .about-block .team-photo img{ height:420px; aspect-ratio:auto; }
  .town-note{ font-size:.88rem !important; margin-top:10px !important; }
  @media (max-width: 800px){
    .about-block{ grid-template-columns:1fr; gap:24px; }
    .about-block .team-photo img{ height:280px; }
  }

  /* slim rewards band */
  .rewards-band{ padding:40px 0 64px; }
  .rb{ display:grid; grid-template-columns:1.1fr 1.4fr auto; gap:24px; align-items:center; background:linear-gradient(120deg,#FFF6E0,#FFEFCC); border:1px solid #FBE3A6; border-radius:18px; padding:26px 30px; }
  .rb-tag{ font-size:.78rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--honey-deep); }
  .rb h2{ font-size:1.5rem; margin-top:4px; }
  .rb-copy p:last-child{ font-size:.92rem; color:var(--ink-soft); margin-top:6px; }
  .rb-tiers{ list-style:none; display:grid; grid-template-columns:repeat(4,1fr); gap:8px; }
  .rb-tiers li{ background:#fff; border-radius:12px; padding:10px; text-align:center; font-size:.78rem; color:var(--ink-soft); }
  .rb-tiers b{ font-family:'Fraunces',serif; font-size:1.2rem; color:var(--ink); }
  .rb-tiers span{ display:block; font-weight:600; color:var(--sage-deep); font-size:.82rem; }
  @media (max-width: 960px){
    .rb{ grid-template-columns:1fr; padding:22px 18px; gap:16px; }
    .rb-tiers{ grid-template-columns:repeat(2,1fr); }
    .rb-btn{ text-align:center; }
  }
  .calendar-note.err{ color:#9A3B1F; font-weight:600; }
  .bform [hidden]{ display:none !important; }
  .bnav .btn{ width:auto; }
  .chip:disabled{ text-decoration:none; }
  .chip.full{ text-decoration:line-through; }
  .win-box .chip{ min-width:0; }
  .chip{ padding:8px 12px; }

/* Real photo badge on the hero, and icon tiles for services (no stock photos) */
.hero-photo-card{ position:relative; }
.hero-photo-tag{ position:absolute; left:14px; bottom:14px; background:rgba(255,255,255,.94); color:var(--ink); font-size:.8rem; font-weight:600; padding:7px 12px; border-radius:999px; box-shadow:0 4px 14px rgba(0,0,0,.12); }
.svc-icon{ display:flex; align-items:center; justify-content:center; background:linear-gradient(135deg,var(--sage-pale),#F0FDFA); }
.svc-icon svg{ width:56px; height:56px; fill:none; stroke:var(--sage-deep); stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
@media (max-width: 640px){ .svc-icon svg{ width:40px; height:40px; } }
.footer-col a[href^="tel:"], .footer-col a[href^="mailto:"]{ word-break:break-word; }

/* Booking without an account */
.guest-save{ background:#F0FDFA; border:1px solid var(--line); border-radius:12px; padding:14px 16px; margin:10px 0; }
.guest-save p{ margin:0 0 10px; font-size:.9rem; color:var(--ink); }
.guest-save-row{ display:flex; gap:8px; flex-wrap:wrap; }
.guest-save-row input{ flex:1 1 200px; min-width:0; padding:11px 12px; border:1px solid var(--line); border-radius:10px; font:inherit; }
.guest-save-msg{ margin:8px 0 0 !important; font-size:.85rem !important; color:var(--coral) !important; }
.guest-save-msg:empty{ display:none; }

/* Photos carry their real size (so the page doesn't jump while loading); CSS still decides the shape. */
.hero-photo-card img, .team-photo img{ height:auto; }
.gallery-item picture, .team-photo picture{ display:contents; }

/* Booking popups */
.pop-wrap{ position:fixed; inset:0; z-index:3000; display:flex; align-items:center; justify-content:center; padding:20px; background:rgba(31,41,55,.28); opacity:0; pointer-events:none; transition:opacity .18s; }
.pop-wrap.open{ opacity:1; pointer-events:auto; }
.pop-wrap.step{ background:transparent; pointer-events:none; }
.pop-wrap.step.open .pop-card{ pointer-events:auto; }
.pop-card{ background:#fff; border-radius:18px; box-shadow:0 20px 50px rgba(15,23,42,.22); padding:22px 22px 18px; width:min(360px,100%); text-align:center; transform:translateY(8px) scale(.98); transition:transform .18s; }
.pop-wrap.open .pop-card{ transform:none; }
.pop-icon{ display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:50%; font-weight:800; font-size:1.2rem; margin-bottom:8px; background:var(--sage-pale); color:var(--sage-deep); }
.pop-wrap.ok .pop-icon{ background:var(--sage-deep); color:#fff; }
.pop-wrap.error .pop-icon{ background:#FDE8E8; color:#C2410C; }
.pop-title{ display:block; font-family:'Fraunces',Georgia,serif; font-size:1.15rem; color:var(--ink); }
.pop-text{ margin:6px 0 0; font-size:.95rem; color:var(--ink-soft); line-height:1.45; }
.pop-ok{ margin-top:14px; width:100%; border:none; cursor:pointer; }
.pop-wrap.step .pop-ok{ display:none; }
