  :root {
    --ink: #24302a; --muted: #5e6b63; --line: #dcd9cd; --accent: #3f6b54; --accent-dark: #2f5341;
    --bg: #f7f4ec; --card: #fffdf8; --sand: #ece6d6;
    --serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
    --sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  }
  * { box-sizing: border-box; }
  html { scroll-behavior: smooth; }
  body { margin: 0; font-family: var(--sans); color: var(--ink); background: var(--bg); line-height: 1.55; }
  a { color: var(--accent-dark); }
  .wrap { max-width: 68rem; margin: 0 auto; padding: 0 1.25rem; }

  .topbar { background: var(--accent-dark); color: #eef3ef; font-size: .85rem; }
  .topbar .wrap { display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding-top: .4rem; padding-bottom: .4rem; }
  .topbar a { color: inherit; text-decoration: none; font-weight: 600; }

  header.site { background: var(--card); border-bottom: 1px solid var(--line); }
  header.site .wrap { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; padding-top: 1rem; padding-bottom: 1rem; }
  .brand { font-family: var(--serif); font-size: 1.35rem; text-decoration: none; color: var(--ink); line-height: 1.2; }
  .brand small { display: block; font-family: var(--sans); font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
  nav ul { list-style: none; display: flex; gap: 1.4rem; margin: 0; padding: 0; flex-wrap: wrap; align-items: center; }
  nav a { text-decoration: none; color: var(--ink); font-size: .95rem; }
  nav a:hover { color: var(--accent); }
  nav a.cta { background: var(--accent); color: #fff; padding: .45rem .9rem; border-radius: 999px; font-weight: 600; }

  .hero { padding: 2.5rem 0 3rem; }
  .hero .wrap { display: grid; grid-template-columns: 1fr 1.15fr; gap: 2.5rem; align-items: start; }
  @media (max-width: 54rem) { .hero .wrap { grid-template-columns: 1fr; } }
  h1, h2, h3 { font-family: var(--serif); font-weight: 600; line-height: 1.2; margin: 0; }
  h1 { font-size: clamp(2rem, 4vw, 2.7rem); margin-bottom: .75rem; }
  h2 { font-size: 1.6rem; margin-bottom: 1rem; }
  h3 { font-size: 1.1rem; margin-bottom: .3rem; }
  .lede { font-size: 1.08rem; color: var(--muted); margin: 0 0 1.5rem; }
  .facts { list-style: none; padding: 0; margin: 0 0 1.5rem; display: grid; gap: .7rem; }
  .facts li { padding-left: 1.5rem; position: relative; }
  .facts li::before { content: ""; position: absolute; left: 0; top: .55em; width: .55rem; height: .55rem; border-radius: 50%; background: var(--accent); }
  .hours { background: var(--sand); border-radius: 10px; padding: 1.1rem 1.25rem; }
  .hours dl { display: grid; grid-template-columns: auto 1fr; gap: .25rem 1.25rem; margin: .5rem 0 0; font-size: .95rem; }
  .hours dt { font-weight: 600; }
  .hours dd { margin: 0; }

  form { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 1.6rem; display: grid; gap: 1rem; box-shadow: 0 8px 24px rgba(36, 48, 42, .06); }
  form h2 { margin-bottom: 0; }
  form p.note { margin: 0; color: var(--muted); font-size: .92rem; }
  .row { display: grid; gap: 1rem; grid-template-columns: 1fr 1fr; }
  @media (max-width: 34rem) { .row { grid-template-columns: 1fr; } }
  label { display: grid; gap: .3rem; font-weight: 600; font-size: .92rem; }
  input, select, textarea { font: inherit; padding: .6rem .7rem; border: 1px solid #c9c5b6; border-radius: 6px; width: 100%; background: #fff; color: var(--ink); }
  input:focus, select:focus, textarea:focus { outline: 2px solid var(--accent); outline-offset: 1px; }
  fieldset { border: 0; padding: 0; margin: 0; }
  legend { font-weight: 600; font-size: .92rem; padding: 0; margin-bottom: .3rem; }
  .choices { display: flex; gap: 1.25rem; flex-wrap: wrap; }
  .choices label { display: flex; align-items: center; gap: .4rem; font-weight: 400; }
  .choices input { width: auto; }
  button { font: inherit; font-weight: 700; background: var(--accent); color: #fff; border: 0; border-radius: 6px; padding: .85rem 1.2rem; cursor: pointer; }
  button:hover { background: var(--accent-dark); }
  button:disabled { opacity: .6; cursor: default; }
  .consent { margin: 0; color: var(--muted); font-size: .8rem; }
  .field-alt { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

  section.band { padding: 3rem 0; border-top: 1px solid var(--line); }
  section.band.alt { background: var(--card); }
  .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: 1.25rem; }
  .card { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 1.2rem; }
  section.band.alt .card { background: var(--bg); }
  .card p { margin: 0; color: var(--muted); font-size: .95rem; }
  .card .price { display: block; margin-top: .6rem; color: var(--ink); font-weight: 600; font-size: .9rem; }
  .about { display: grid; grid-template-columns: 1.3fr 1fr; gap: 2.5rem; }
  @media (max-width: 54rem) { .about { grid-template-columns: 1fr; } }
  .about p { margin: 0 0 1rem; }
  blockquote { margin: 0; padding: 1.25rem 1.4rem; background: var(--sand); border-radius: 10px; font-family: var(--serif); font-size: 1.05rem; }
  blockquote footer { margin-top: .7rem; font-family: var(--sans); font-size: .85rem; color: var(--muted); }
  blockquote + blockquote { margin-top: 1rem; }
  address { font-style: normal; }

  footer.site { background: var(--accent-dark); color: #dfe8e2; padding: 2.25rem 0; font-size: .9rem; }
  footer.site .wrap { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: 1.5rem; }
  footer.site a { color: #fff; }
  footer.site strong { display: block; color: #fff; margin-bottom: .3rem; }
  footer.site p { margin: 0; }
  .legal { grid-column: 1 / -1; border-top: 1px solid rgba(255, 255, 255, .2); padding-top: 1rem; font-size: .8rem; color: #b9c8bf; }

  .home-hero { padding: 4rem 0 3.5rem; background: linear-gradient(160deg, #eef0e4 0%, var(--bg) 60%); }
  .home-hero .wrap { max-width: 50rem; text-align: center; }
  .home-hero h1 { font-size: clamp(2.2rem, 5vw, 3.3rem); }
  .home-hero .lede { font-size: 1.15rem; margin-bottom: 2rem; }
  .button { display: inline-block; font-weight: 700; background: var(--accent); color: #fff; border-radius: 6px; padding: .85rem 1.4rem; text-decoration: none; }
  .button:hover { background: var(--accent-dark); }
  .button.quiet { background: transparent; color: var(--accent-dark); border: 1px solid var(--accent); margin-left: .6rem; }
  .button.quiet:hover { background: var(--sand); }
  .card a { font-weight: 600; font-size: .9rem; }
  .steps { counter-reset: step; list-style: none; padding: 0; margin: 0; }
  .steps li { counter-increment: step; }
  .steps li::before { content: counter(step); display: inline-grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; background: var(--accent); color: #fff; font-weight: 700; margin-bottom: .6rem; }
  .cta-band { text-align: center; }
  .cta-band p { color: var(--muted); margin: 0 0 1.5rem; }

  .slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(5.4rem, 1fr)); gap: .45rem; }
  .slot { display: block; position: relative; font-weight: 600; font-size: .88rem; cursor: pointer; }
  .slot input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
  .slot span { display: block; text-align: center; padding: .5rem .2rem; border: 1px solid #c9c5b6; border-radius: 6px; background: #fff; }
  .slot:hover span { border-color: var(--accent); }
  .slot input:checked + span { background: var(--accent); border-color: var(--accent); color: #fff; }
  .slot input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 1px; }
  .slot.taken { cursor: default; }
  .slot.taken input { cursor: default; }
  .slot.taken span { background: var(--sand); border-color: var(--line); color: #9aa39d; text-decoration: line-through; }
