
  :root {
    --cream: #F2EBDD;
    --cream-2: #E9DFCA;
    --paper: #FAF6EC;
    --ink: #1C1810;
    --ink-soft: #3A3326;
    --muted: #6F6552;
    --cedar: #8A5A37;
    --cedar-deep: #6B4326;
    --sage: #4A5D4F;
    --sage-deep: #344037;
    --terracotta: #BB5E3C;
    --ochre: #D6A45D;
    --leaf: #738B5F;
    --line: rgba(28, 24, 16, 0.14);
    --line-strong: rgba(28, 24, 16, 0.32);
    --display: "Fraunces", "Times New Roman", serif;
    --sans: "Manrope", -apple-system, sans-serif;
  }
  * { box-sizing: border-box; margin: 0; padding: 0; }
  html { scroll-behavior: smooth; }
  body { font-family: var(--sans); background: var(--cream); color: var(--ink); font-size: 16px; line-height: 1.55; -webkit-font-smoothing: antialiased; }
  img { display: block; max-width: 100%; }
  a { color: inherit; text-decoration: none; }
  button { font: inherit; cursor: pointer; border: none; background: none; color: inherit; }

  .wrap { width: min(1280px, 92vw); margin-inline: auto; }
  .eyebrow { font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; font-weight: 600; color: var(--cedar-deep); }

  /* ====== header ====== */
  header {
    position: sticky; top: 0; z-index: 50;
    background: rgba(242, 235, 221, 0.94);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-bottom: 1px solid var(--line);
  }
  .nav { display: flex; align-items: center; justify-content: space-between; padding: 18px 0; }
  .logo { display: flex; align-items: center; gap: 10px; font-family: var(--display); font-size: 22px; font-weight: 500; letter-spacing: -0.01em; }
  .logo svg { width: 26px; height: 26px; }
  .nav-links { display: flex; gap: 22px; font-size: 13.5px; font-weight: 500; }
  .nav-links a { padding: 6px 0; color: var(--ink-soft); }
  .nav-links a:hover { color: var(--ink); }
  .nav-cta { display: flex; gap: 10px; align-items: center; }
  /* ===== mobile / tablet nav dropdown ===== */
  @media (max-width:1024px){header .nav-cta .btn-cedar{display:none !important;}}
  .nav-toggle { display: none; width: 42px; height: 42px; border: none; background: transparent; cursor: pointer; padding: 0; align-items: center; justify-content: center; flex-direction: column; gap: 5px; }
  .nav-toggle-bar { display: block; width: 22px; height: 2px; background: var(--ink); border-radius: 2px; transition: transform 0.3s ease, opacity 0.2s ease; }
  .nav-toggle.open .nav-toggle-bar:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .nav-toggle.open .nav-toggle-bar:nth-child(2) { opacity: 0; }
  .nav-toggle.open .nav-toggle-bar:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
  .mobile-nav {
    position: fixed; left: 0; right: 0; top: var(--header-h, 72px);
    background: var(--paper); border-top: 1px solid var(--line);
    box-shadow: 0 24px 40px -16px rgba(28,24,16,0.28);
    max-height: 0; overflow: hidden; z-index: 80;
    transition: max-height 0.35s ease, opacity 0.25s ease, visibility 0.35s;
    opacity: 0; visibility: hidden;
  }
  .mobile-nav.open { max-height: calc(100vh - var(--header-h, 72px)); opacity: 1; visibility: visible; overflow-y: auto; }
  .mobile-nav-inner { padding: 22px 24px 30px; display: flex; flex-direction: column; gap: 22px; }
  .mnav-group { display: flex; flex-direction: column; gap: 2px; }
  .mnav-label { font-size: 10.5px; letter-spacing: 0.18em; text-transform: uppercase; font-weight: 700; color: var(--cedar); margin-bottom: 8px; }
  .mobile-nav a { color: var(--ink-soft); font-family: var(--display); font-size: 20px; font-weight: 400; padding: 9px 0; border-bottom: 1px solid var(--line); transition: color 0.2s ease; }
  .mnav-group a:last-child { border-bottom: none; }
  .mobile-nav a:hover { color: var(--cedar); }
  .mnav-cta { display: flex; flex-direction: column; gap: 10px; margin-top: 4px; }
  .mnav-cta .btn { width: 100%; text-align: center; justify-content: center; }
  .mnav-cta .btn-ghost { border: 1px solid var(--line-strong); }
  .mnav-cta .btn-ghost:hover { border-color: var(--ink); background: rgba(28,24,16,0.06); }
  @media (max-width: 1024px) {
    .nav-toggle { display: inline-flex; }
    /* Sign in hidden on tablet/mobile — it lives in the dropdown menu */
    .nav-cta .sg-auth-slot { display: none; }
  }
  @media (max-width: 640px) {
    .nav-cta .btn-cedar { padding: 9px 16px; font-size: 13px; }
    .nav-cta { gap: 10px; }
  }

  .sg-auth-slot { display: inline-flex; align-items: center; gap: 10px; }
  .sg-auth-name { font-size: 13.5px; font-weight: 600; color: var(--ink); padding: 6px 0; }
  .sg-auth-name:hover { color: var(--cedar); }
  .sg-auth-signout { background: none; border: none; cursor: pointer; font-size: 13px; color: var(--muted); font-family: var(--sans); padding: 6px 4px; }
  .sg-auth-signout:hover { color: var(--ink); text-decoration: underline; }
  .sg-auth-link { font-size: 13.5px; color: var(--ink-soft); padding: 6px 4px; }
  .sg-auth-cta { font-size: 13.5px; font-weight: 600; color: var(--cedar); padding: 6px 4px; }
  .btn { padding: 10px 18px; border-radius: 999px; font-size: 13px; font-weight: 600; transition: all 0.2s ease; display: inline-flex; align-items: center; gap: 6px; }
  .btn-ghost { color: var(--ink); }
  .btn-ghost:hover { background: rgba(28, 24, 16, 0.06); }  .btn-outline { border: 1px solid var(--ink); }
  .btn-outline:hover { background: var(--ink); color: var(--cream); }
  .btn-cedar {
    background: var(--cedar);
    color: var(--cream);
  }
  .btn-cedar:hover { background: var(--cedar-deep); transform: translateY(-1px); }

  /* ====== breadcrumb ====== */
  .breadcrumb {
    padding: 20px 0 0;
    font-size: 12.5px;
    color: var(--muted);
    display: flex; gap: 8px; align-items: center;
  }
  .breadcrumb a { color: var(--muted); }
  .breadcrumb a:hover { color: var(--ink); }
  .breadcrumb .sep { color: var(--line-strong); }
  /* the page you're on is the last step, in bold */
  .breadcrumb > :last-child, .breadcrumb #bcName { font-weight: 700; color: var(--ink); }
  .breadcrumb #bcName { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  /* ====== title block ====== */
  .title-block {
    padding: 24px 0 30px;
    display: flex; justify-content: space-between; align-items: flex-end;
    gap: 40px;
  }
  /* Tablet/mobile: keep the share/report buttons on the right but in view
     (long names were pushing them off the screen edge). */
  @media (max-width: 1024px) {
    .title-block { gap: 16px; }
    .title-block > div:first-child { min-width: 0; }
  }
  @media (max-width: 520px) {
    .title-block { gap: 10px; }
    .title-actions { gap: 8px; }
    .icon-btn { width: 38px; height: 38px; }
  }
  .title-block h1 {
    font-family: var(--display);
    font-weight: 400;
    font-size: clamp(40px, 5.4vw, 76px);
    line-height: 0.96;
    letter-spacing: -0.025em;
    font-variation-settings: "opsz" 144, "SOFT" 50;
    max-width: 820px;
  }
  .title-block h1 em { font-style: italic; color: var(--cedar); font-variation-settings: "opsz" 144, "SOFT" 100; }
  .title-meta {
    margin-top: 14px;
    display: flex; gap: 18px; align-items: center; flex-wrap: wrap;
    font-size: 14px;
    color: var(--ink-soft);
  }
  .title-meta .pill {
    background: var(--sage); color: var(--paper);
    padding: 5px 10px; border-radius: 999px;
    font-size: 11px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase;
    display: inline-flex; align-items: center; gap: 4px;
  }
  .title-meta .pill svg { width: 11px; height: 11px; }
  .name-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
  .claim-pill.resource-pill { background: var(--sage, #4A5D4F) !important; color: #fff !important; border-color: var(--sage, #4A5D4F) !important; cursor: default; }
  .res-card .res-note { margin: 12px 0 0; font-size: 12.5px; line-height: 1.5; color: var(--muted, #6F6552); }
  .res-card .res-note b { color: var(--ink, #1C1810); }
  .claim-pill {
    background: var(--ochre); color: var(--ink);
    padding: 6px 12px; border-radius: 999px;
    font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
    display: inline-flex; align-items: center; gap: 5px;
    vertical-align: middle; margin-left: 14px; white-space: nowrap;
    text-decoration: none; cursor: pointer;
    transition: filter 0.15s ease;
  }
  .claim-pill svg { width: 12px; height: 12px; }
  .claim-pill:hover { filter: brightness(1.06); }
  .title-meta .dot { width: 4px; height: 4px; background: var(--line-strong); border-radius: 50%; }
  .title-meta .rating { font-weight: 600; color: var(--ink); display: inline-flex; align-items: center; gap: 5px; }
  .title-meta .rating svg { width: 14px; height: 14px; color: var(--ochre); }

  .title-actions { display: flex; gap: 10px; flex-shrink: 0; }
  .hero-loc { display: inline-flex; align-items: center; gap: 5px; }
  .hero-loc-pin { width: 14px; height: 14px; color: var(--cedar-deep); flex-shrink: 0; }
  .icon-btn {
    width: 42px; height: 42px;
    border: 1px solid var(--line);
    border-radius: 50%;
    background: var(--paper);
    display: flex; align-items: center; justify-content: center;
    transition: all 0.2s;
  }
  .icon-btn:hover { border-color: var(--ink); background: var(--ink); color: var(--paper); }
  .icon-btn svg { width: 16px; height: 16px; }
  .icon-btn-report { color: #B43A2E; border-color: rgba(180, 58, 46, 0.35); }
  .icon-btn-report:hover { background: #B43A2E; border-color: #B43A2E; color: var(--paper); }

  /* ====== gallery — story panel ====== */
  .gallery.story-gallery {
    display: grid;
    grid-template-columns: 1.5fr 1fr;
    grid-template-rows: 1fr 1fr 1fr;
    gap: 8px;
    height: 540px;
    border-radius: 14px;
    overflow: hidden;
  }
  .gallery .g-item {
    position: relative;
    overflow: hidden;
    cursor: pointer;
    background: var(--cream-2);
  }
  .gallery .g1 { grid-row: 1 / 4; grid-column: 1; }
  /* adapt the mosaic when a listing has fewer than 4 photos (no repeated photos) */
  .gallery.story-gallery[data-count="1"] { grid-template-columns: 1fr; grid-template-rows: 1fr; }
  .gallery.story-gallery[data-count="1"] .g1 { grid-row: 1; }
  .gallery.story-gallery[data-count="2"] { grid-template-rows: 1fr; }
  .gallery.story-gallery[data-count="2"] .g1 { grid-row: 1; }
  .gallery.story-gallery[data-count="3"] { grid-template-rows: 1fr 1fr; }
  .gallery.story-gallery[data-count="3"] .g1 { grid-row: 1 / 3; }
  .gallery .g-item img,
  .gallery .g-item video { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s ease; display: block; }
  .gallery .g-item:hover img,
  .gallery .g-item:hover video { transform: scale(1.04); }

  /* gradient caption overlay — only visible when there's a caption */
  .gallery .g-caption {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    padding: 24px 18px 14px;
    background: linear-gradient(to top, rgba(28,24,16,0.75) 0%, rgba(28,24,16,0.4) 60%, transparent 100%);
    color: var(--cream);
    font-family: var(--display);
    font-size: 13.5px;
    font-weight: 500;
    line-height: 1.35;
    letter-spacing: -0.005em;
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 0.28s ease, transform 0.28s ease;
    pointer-events: none;
  }
  .gallery .g1 .g-caption { font-size: 16px; padding: 36px 22px 20px; }
  .gallery .g-item:hover .g-caption,
  .gallery .g-item:focus .g-caption { opacity: 1; transform: translateY(0); }
  .gallery .g-caption.has-caption { opacity: 0.92; transform: translateY(0); }
  .gallery .g-item:hover .g-caption.has-caption { opacity: 1; }

  /* small badges in top-right (video glyph, photo count) */
  .gallery .g-badge {
    position: absolute;
    top: 12px; right: 12px;
    display: inline-flex; align-items: center; gap: 5px;
    background: rgba(28,24,16,0.66);
    backdrop-filter: blur(4px);
    color: var(--cream);
    font-size: 10.5px; font-weight: 700;
    letter-spacing: 0.06em; text-transform: uppercase;
    padding: 5px 10px;
    border-radius: 999px;
    pointer-events: none;
  }
  .gallery .g-badge svg { width: 11px; height: 11px; }

  /* "View all" mini-mosaic pill — stacked circular thumbnails + count, sits on last tile */
  .gallery .view-all {
    position: absolute;
    bottom: 14px; right: 14px;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: var(--paper);
    padding: 6px 14px 6px 6px;
    border-radius: 999px;
    box-shadow: 0 8px 24px -8px rgba(28,24,16,0.4), 0 2px 6px -2px rgba(28,24,16,0.15);
    transition: transform 0.25s cubic-bezier(0.34, 1.4, 0.64, 1), box-shadow 0.25s;
    cursor: pointer;
  }
  .gallery .view-all:hover {
    transform: translateY(-3px) scale(1.02);
    box-shadow: 0 14px 32px -10px rgba(28,24,16,0.5), 0 3px 8px -2px rgba(28,24,16,0.2);
  }
  .gallery .va-mosaic {
    display: inline-flex;
    align-items: center;
  }
  .gallery .va-thumb {
    width: 30px; height: 30px;
    border-radius: 50%;
    background-size: cover;
    background-position: center;
    border: 2px solid var(--paper);
    box-shadow: 0 2px 4px -1px rgba(28,24,16,0.25);
    background-color: var(--cream-2);
  }
  .gallery .va-thumb + .va-thumb { margin-left: -12px; }
  .gallery .va-text {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-family: var(--sans);
    font-size: 12.5px;
    font-weight: 600;
    color: var(--ink);
    letter-spacing: -0.005em;
  }
  .gallery .va-text b {
    font-family: var(--display);
    font-size: 16px;
    font-weight: 500;
    color: var(--cedar-deep);
    letter-spacing: -0.01em;
  }
  .gallery .va-text svg {
    width: 11px; height: 11px;
    color: var(--cedar);
    margin-left: 2px;
    transition: transform 0.25s;
  }
  .gallery .view-all:hover .va-text svg { transform: translate(2px, -2px); }
  /* mosaic-only variant when fewer thumbs available */
  .gallery .va-mosaic:empty { display: none; }
  .gallery .va-mosaic:empty + .va-text { padding-left: 6px; }

  /* ====== lightbox ====== */
  .lightbox {
    position: fixed; inset: 0;
    background: rgba(20, 16, 10, 0.88);
    backdrop-filter: blur(8px);
    z-index: 300;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 40px 80px;
  }
  .lightbox.open { display: flex; animation: lb-fade-in 0.22s ease; }@keyframes lb-fade-in{ from { opacity: 0; } to { opacity: 1; } }
  .lb-close {
    position: absolute; top: 20px; right: 20px;
    width: 40px; height: 40px;
    border-radius: 50%;
    background: rgba(242,235,221,0.14);
    color: var(--cream);
    display: flex; align-items: center; justify-content: center;
    transition: background 0.2s;
    z-index: 2;
  }
  .lb-close:hover { background: rgba(242,235,221,0.25); }
  .lb-close svg { width: 18px; height: 18px; }
  .lb-nav {
    position: absolute;
    top: 50%; transform: translateY(-50%);
    width: 48px; height: 48px;
    border-radius: 50%;
    background: rgba(242,235,221,0.14);
    color: var(--cream);
    display: flex; align-items: center; justify-content: center;
    transition: background 0.2s, transform 0.2s;
    z-index: 2;
  }
  .lb-prev { left: 24px; }
  .lb-next { right: 24px; }
  .lb-nav:hover { background: rgba(242,235,221,0.28); }
  .lb-nav svg { width: 22px; height: 22px; }
  .lb-stage {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 18px;
    max-width: 92vw;
    max-height: 100%;
    width: auto;
  }
  .lb-media {
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 0;
    width: 100%;
    max-height: calc(100vh - 220px);
  }
  .lb-media img,
  .lb-media video {
    max-width: 100%;
    max-height: 100%;
    width: auto;
    height: auto;
    border-radius: 8px;
    box-shadow: 0 30px 80px -20px rgba(0,0,0,0.6);
    object-fit: contain;
  }
  .lb-caption-card {
    background: var(--paper);
    border-radius: 12px;
    padding: 18px 22px 16px;
    width: min(640px, 92vw);
    color: var(--ink);
    position: relative;
  }
  .lb-counter {
    font-size: 10.5px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--muted);
    font-weight: 700;
    margin-bottom: 6px;
  }
  .lb-caption {
    font-family: var(--display);
    font-size: 17px;
    line-height: 1.4;
    font-weight: 500;
    color: var(--ink);
    letter-spacing: -0.005em;
    margin: 0;
  }
  .lb-caption.empty { color: var(--muted); font-style: italic; font-weight: 400; }
  .lb-caption-edit-row { margin-top: 10px; display: none; }
  body.owner .lb-caption-edit-row { display: block; }
  .lb-edit {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: 12px;
    color: var(--cedar);
    font-weight: 600;
    border-bottom: 1px solid transparent;
    transition: border-color 0.2s;
  }
  .lb-edit:hover { border-bottom-color: var(--cedar); }
  .lb-edit svg { width: 12px; height: 12px; }
  .lb-caption-editor {
    margin-top: 12px;
  }
  .lb-caption-editor textarea {
    width: 100%;
    padding: 12px 14px;
    background: var(--cream);
    border: 1px solid var(--line);
    border-radius: 9px;
    font-family: var(--sans);
    font-size: 14px;
    color: var(--ink);
    resize: vertical;
    min-height: 80px;
  }
  .lb-caption-editor textarea:focus {
    outline: none;
    border-color: var(--ink);
    background: var(--paper);
  }
  .lb-editor-actions { margin-top: 10px; display: flex; gap: 8px; justify-content: flex-end; }
  .lb-editor-cancel {
    padding: 8px 16px;
    color: var(--muted);
    font-size: 13px; font-weight: 600;
    border-radius: 999px;
  }
  .lb-editor-cancel:hover { color: var(--ink); }
  .lb-editor-save {
    padding: 8px 16px;
    background: var(--ink);
    color: var(--cream);
    border-radius: 999px;
    font-size: 13px; font-weight: 600;
  }
  .lb-editor-save:hover { background: var(--cedar-deep); }
  .lb-editor-hint {
    margin-top: 8px;
    font-size: 11.5px;
    color: var(--muted);
    line-height: 1.5;
  }

  /* ====== main grid ====== */
  .main-grid {
    display: grid;
    grid-template-columns: 1fr 400px;
    gap: 80px;
    padding: 60px 0 40px;
    align-items: start;
  }
  .col-main > section { padding: 36px 0; border-bottom: 1px solid var(--line); }
  .col-main > section:first-child { padding-top: 0; padding-bottom: 18px; border-bottom: none; }
  .col-main > section:nth-child(2) { padding-top: 12px; }
  .col-main > section:last-child { border-bottom: none; }
  /* right-column sidebar — sticky as a unit on desktop so availability + contact info follow scroll */
  @media (min-width: 1025px) {
    .main-grid > aside {
      position: sticky;
      top: 100px;
      align-self: start;
    }
  }
  .section-title {
    font-family: var(--display);
    font-weight: 400;
    font-size: 32px;
    line-height: 1.05;
    letter-spacing: -0.02em;
    margin-bottom: 24px;
    font-variation-settings: "opsz" 144, "SOFT" 70;
  }
  .section-title em { font-style: italic; color: var(--cedar); font-variation-settings: "opsz" 144, "SOFT" 100; }

  /* ====== practitioner block ====== */
  .practitioner-block {
    display: flex; gap: 24px; align-items: flex-start;
    margin-bottom: 0;
  }
  .practitioner-avatar {
    width: 96px; height: 96px;
    border-radius: 50%;
    flex-shrink: 0;
    position: relative;
    background: var(--paper);
  }
  /* the photo itself, with a clean cream rim */
  .practitioner-avatar img {
    width: 100%; height: 100%;
    object-fit: cover;
    border-radius: 50%;
    border: 3px solid var(--paper);
    background: var(--cream);
    position: relative;
    z-index: 2;
    box-shadow: 0 8px 20px -8px rgba(28, 24, 16, 0.3);
  }
  /* soft rainbow aura that expands and contracts behind the photo */
  .practitioner-avatar { isolation: isolate; background: transparent; }
  .practitioner-avatar::before {
    content: "";
    position: absolute;
    inset: -10px;
    border-radius: 50%;
    background: conic-gradient(from 0deg,
      #BB5E3C, #D6A45D, #E1C85A, #738B5F, #4A5D4F, #6E8CB4, #966EAA, #BB5E3C);
    filter: blur(7px);
    opacity: 0.85;
    z-index: 0;
    pointer-events: none;
    /* solid glow band just OUTSIDE the photo, feathering out at the edge */
    -webkit-mask: radial-gradient(circle closest-side, transparent 70%, #000 80%, #000 90%, transparent 100%);
    mask: radial-gradient(circle closest-side, transparent 70%, #000 80%, #000 90%, transparent 100%);
    animation: avatar-aura-pulse 5s ease-in-out infinite, avatar-aura-spin 12s linear infinite;
  }@keyframes avatar-aura-pulse{
    0%, 100% { inset: -9px;  opacity: 0.7; }
    50%      { inset: -14px; opacity: 0.95; }
  }@keyframes avatar-aura-spin{
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
  }@media (prefers-reduced-motion: reduce){
    .practitioner-avatar::before { animation: none; inset: -10px; opacity: 0.8; }
  }
  /* no logo/headshot yet: show the listing's initial inside the aura */
  .practitioner-avatar.avatar-initial::after {
    content: attr(data-initial);
    position: absolute; inset: 0; z-index: 2;
    display: flex; align-items: center; justify-content: center;
    border-radius: 50%;
    border: 3px solid var(--paper);
    background: var(--cedar); color: var(--cream);
    font-family: var(--display); font-size: 40px; font-weight: 500;
    box-shadow: 0 8px 20px -8px rgba(28, 24, 16, 0.3);
  }
  .practitioner-info h3 {
    font-family: var(--display);
    font-weight: 500;
    font-size: 26px;
    letter-spacing: -0.01em;
    display: flex; align-items: center; gap: 8px;
  }
  .verified-check {
    width: 22px; height: 22px;
    background: var(--sage); color: var(--paper);
    border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    position: relative;
    cursor: help;
  }
  .verified-check svg { width: 12px; height: 12px; }
  .verified-check .verify-tip {
    position: absolute;
    bottom: calc(100% + 10px);
    left: 50%;
    transform: translateX(-50%) translateY(4px);
    background: var(--ink);
    color: var(--cream);
    font-family: var(--sans);
    font-size: 12px;
    line-height: 1.4;
    font-weight: 500;
    letter-spacing: 0;
    text-transform: none;
    padding: 9px 12px;
    border-radius: 8px;
    width: 220px;
    text-align: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease, transform 0.2s ease;
    z-index: 50;
    white-space: normal;
    box-shadow: 0 10px 24px -10px rgba(28, 24, 16, 0.45);
  }
  .verified-check .verify-tip::after {
    content: "";
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    border: 5px solid transparent;
    border-top-color: var(--ink);
  }
  .verified-check:hover .verify-tip,
  .verified-check:focus .verify-tip,
  .verified-check:focus-within .verify-tip {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
  }
  /* phones: the verified tooltip opens toward the left, so it never pushes the page sideways */
  @media (max-width: 640px) {
    .verified-check .verify-tip { left: auto; right: -10px; transform: translateY(4px); max-width: calc(100vw - 40px); }
    .verified-check .verify-tip::after { left: auto; right: 14px; transform: none; }
    .verified-check:hover .verify-tip, .verified-check:focus .verify-tip, .verified-check:focus-within .verify-tip { transform: translateY(0); }
  }
  .practitioner-handle {
    font-size: 14px;
    color: var(--muted);
    margin-top: 4px;
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
  }
  .practitioner-handle .ph-handle,
  .practitioner-handle .ph-website {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    color: var(--ink-soft);
    font-weight: 500;
    border-bottom: 1px solid transparent;
    transition: all 0.2s;
  }
  .practitioner-handle .ph-handle:hover,
  .practitioner-handle .ph-website:hover {
    color: var(--cedar-deep);
    border-bottom-color: var(--cedar-deep);
  }
  .practitioner-handle .ph-at {
    color: var(--cedar);
    font-weight: 700;
  }
  .practitioner-handle .ph-website svg {
    width: 13px;
    height: 13px;
    color: var(--cedar);
  }
  .practitioner-handle .ph-sep {
    color: var(--line-strong);
  }
  .practitioner-sub {
    font-size: 13px;
    color: var(--muted);
    margin-top: 4px;
  }
  .practitioner-credentials {
    margin-top: 12px;
    display: flex; flex-wrap: wrap; gap: 6px;
  }
  .cred-tag {
    font-size: 11px; padding: 4px 10px;
    background: var(--cream-2);
    border-radius: 999px;
    font-weight: 600;
    color: var(--ink-soft);
  }
  /* ====== live signal — replaces the static stat bar with present-moment context near the booking CTA ====== */
  .live-signal {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-top: 14px;
    padding: 12px 14px;
    background: linear-gradient(180deg, rgba(74,93,79,0.07), rgba(74,93,79,0));
    border: 1px solid rgba(74,93,79,0.18);
    border-radius: 10px;
    font-size: 12.5px;
    line-height: 1.45;
    color: var(--ink-soft);
  }
  .live-dot {
    width: 9px; height: 9px;
    border-radius: 50%;
    background: var(--leaf);
    flex-shrink: 0;
    margin-top: 5px;
    box-shadow: 0 0 0 0 rgba(115,139,95,0.6);
    animation: live-dot-pulse 2.2s ease-out infinite;
  }@keyframes live-dot-pulse{
    0% { box-shadow: 0 0 0 0 rgba(115,139,95,0.55); }
    70% { box-shadow: 0 0 0 8px rgba(115,139,95,0); }
    100% { box-shadow: 0 0 0 0 rgba(115,139,95,0); }
  }@media (prefers-reduced-motion: reduce){
    .live-dot { animation: none; box-shadow: 0 0 0 3px rgba(115,139,95,0.18); }
  }
  .live-signal .live-text { flex: 1; }
  .live-signal .live-text b { color: var(--ink); font-weight: 700; }
  .live-signal .live-sub {
    display: block;
    font-size: 11.5px;
    color: var(--muted);
    margin-top: 3px;
    line-height: 1.4;
  }
  /* compact variant — fits inside the narrow desktop sidebar */
  .live-signal.live-signal-compact {
    padding: 9px 12px;
    margin-top: 14px;
    font-size: 11.5px;
    align-items: center;
    gap: 8px;
  }
  .live-signal.live-signal-compact .live-dot { margin-top: 0; }

  /* ====== about ====== */
  .about-text {
    font-size: 16.5px;
    line-height: 1.7;
    color: var(--ink-soft);
    max-width: 720px;
  }

  /* ====== vibes / amenities ====== */
  .vibes-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
  }
  .vibe-item {
    display: flex; gap: 12px; align-items: center;
    padding: 16px 18px;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: 10px;
  }
  .vibe-item svg { width: 20px; height: 20px; color: var(--sage); flex-shrink: 0; }
  .vibe-item span { font-size: 14px; font-weight: 500; }

  /* ====== services ====== */
  .service-list { display: flex; flex-direction: column; gap: 0; }
  .service {
    display: grid;
    grid-template-columns: 1fr 100px 100px;
    gap: 24px;
    padding: 22px 0;
    border-bottom: 1px solid var(--line);
    align-items: center;
  }
  .service:first-child { border-top: 1px solid var(--line); }
  .service:last-child { border-bottom: none; }
  .service.has-img { grid-template-columns: 56px 1fr 100px 100px; }
  .service-img { width: 56px; height: 56px; border-radius: 12px; object-fit: cover; background: var(--cream-2); display: block; }
  .service-name { font-family: var(--display); font-size: 19px; font-weight: 500; letter-spacing: -0.01em; }
  .service-desc { font-size: 14px; color: var(--muted); margin-top: 4px; }
  .service-desc::before { content: "— "; color: var(--muted); }
  .service-duration { font-size: 13px; color: var(--ink-soft); text-align: right; }
  .service-price { font-family: var(--display); font-size: 22px; font-weight: 500; text-align: right; }
  .service-price small { font-size: 13px; color: var(--muted); margin-left: 3px; font-family: var(--sans); }

  /* ====== availability calendar ====== */
  .cal-week {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 8px;
    margin-top: 20px;
  }
  .cal-day {
    aspect-ratio: 1;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--paper);
    padding: 10px 8px;
    display: flex; flex-direction: column;
    text-align: center;
    transition: all 0.2s;
    cursor: pointer;
  }
  .cal-day:hover { border-color: var(--ink); transform: translateY(-2px); }
  .cal-day.full { background: var(--cream-2); color: var(--muted); cursor: not-allowed; }
  .cal-day.full:hover { transform: none; border-color: var(--line); }
  .cal-day.selected { background: var(--ink); color: var(--paper); border-color: var(--ink); }
  .cal-dow { font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 600; opacity: 0.6; }
  .cal-num { font-family: var(--display); font-size: 22px; font-weight: 500; margin-top: 6px; line-height: 1; }
  .cal-slots { font-size: 10.5px; margin-top: auto; font-weight: 600; }
  .cal-slots .open { color: var(--leaf); }
  .cal-day.selected .cal-slots .open { color: var(--ochre); }

  .cal-time-slots {
    margin-top: 20px;
    display: flex; flex-wrap: wrap; gap: 8px;
  }
  .time-slot {
    padding: 10px 16px;
    border: 1px solid var(--line);
    background: var(--paper);
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    transition: all 0.2s;
  }
  .time-slot:hover { border-color: var(--ink); }
  .time-slot.unavailable { color: var(--muted); text-decoration: line-through; cursor: not-allowed; opacity: 0.5; }

  /* ====== location ====== */
  .map-card {
    position: relative;
    aspect-ratio: 16/8;
    border-radius: 12px;
    overflow: hidden;
    background: linear-gradient(135deg, #E2D5B7 0%, #C9B888 50%, #A89968 100%);
    border: 1px solid var(--line-strong);
  }
  .map-bg {
    position: absolute; inset: 0;
    background-image:
      radial-gradient(circle at 25% 30%, rgba(74, 93, 79, 0.22) 0%, transparent 28%),
      radial-gradient(circle at 75% 65%, rgba(74, 93, 79, 0.2) 0%, transparent 32%),
      radial-gradient(circle at 60% 20%, rgba(115, 139, 95, 0.15) 0%, transparent 22%);
  }
  .map-grid-lines {
    position: absolute; inset: 0;
    background-image:
      linear-gradient(rgba(28, 24, 16, 0.06) 1px, transparent 1px),
      linear-gradient(90deg, rgba(28, 24, 16, 0.06) 1px, transparent 1px);
    background-size: 48px 48px;
  }
  .map-pin-here {
    position: absolute;
    top: 48%; left: 50%;
    width: 56px; height: 56px;
    transform: translate(-50%, -50%);
    background: var(--terracotta);
    border: 3px solid var(--paper);
    color: var(--paper);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 22px;
    box-shadow: 0 8px 24px rgba(28, 24, 16, 0.4);
  }
  .map-pin-here::after {
    content: ""; position: absolute;
    width: 100%; height: 100%;
    border-radius: 50%;
    background: var(--terracotta);
    opacity: 0.3;
    animation: ping 2s ease infinite;
  }@keyframes ping{ 0% { transform: scale(1); opacity: 0.3; } 100% { transform: scale(2.5); opacity: 0; } }
  .location-details {
    margin-top: 18px;
    font-size: 14px;
    line-height: 1.6;
    color: var(--ink-soft);
    display: flex;
    align-items: flex-start;
    gap: 12px;
  }
  .location-details b { color: var(--ink); }
  .location-details .loc-pin { width: 22px; height: 22px; color: var(--cedar-deep); flex-shrink: 0; margin-top: 2px; }
  .location-details .loc-text { flex: 1; min-width: 0; }
  .location-details .loc-privacy {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin-top: 10px;
    padding: 8px 12px;
    background: var(--cream-2);
    border-radius: 8px;
    font-size: 13px;
    color: var(--ink);
    line-height: 1.4;
  }
  .location-details .loc-privacy svg { width: 14px; height: 14px; color: var(--cedar-deep); flex-shrink: 0; }
  .location-details .loc-privacy b { color: var(--ink); font-weight: 600; }

  /* ====== reviews ====== */

  /* pull-quote at top of reviews section */
  .review-pull {
    display: grid;
    grid-template-columns: 1fr 200px;
    gap: 40px;
    align-items: center;
    margin-bottom: 36px;
    padding: 28px 32px 28px 28px;
    background: linear-gradient(180deg, var(--cream-2) 0%, transparent 100%);
    border-radius: 16px;
    position: relative;
  }
  .review-pull-text { position: relative; }
  .review-pull-mark {
    position: absolute;
    top: -22px; left: -8px;
    font-family: var(--display);
    font-size: 110px;
    line-height: 1;
    color: var(--cedar);
    opacity: 0.18;
    font-weight: 500;
    pointer-events: none;
  }
  .review-pull-quote {
    font-family: var(--display);
    font-size: 25px;
    line-height: 1.32;
    font-weight: 500;
    color: var(--ink);
    letter-spacing: -0.01em;
    margin: 0;
    position: relative;
    z-index: 1;
  }
  .review-pull-quote em {
    font-style: italic;
    color: var(--cedar);
  }
  .review-pull-cite {
    font-style: normal;
    font-size: 12.5px;
    color: var(--muted);
    margin-top: 14px;
    display: block;
    letter-spacing: 0.02em;
  }
  .review-pull-stat {
    text-align: center;
    border-left: 1px solid var(--line);
    padding-left: 30px;
  }
  .review-pull-num {
    font-family: var(--display);
    font-size: 52px;
    line-height: 1;
    font-weight: 500;
    letter-spacing: -0.025em;
    color: var(--ochre);
  }
  .review-pull-label {
    font-size: 10.5px;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--muted);
    font-weight: 600;
    margin-top: 10px;
  }

  /* warmth descriptors (replaces business-school category bars) */
  .review-warmth {
    margin-bottom: 36px;
  }
  .review-warmth-head {
    font-family: var(--display);
    font-size: 15px;
    color: var(--muted);
    margin-bottom: 14px;
    letter-spacing: 0.02em;
  }
  .review-warmth-head em {
    font-style: italic;
    color: var(--sage);
    font-size: 16px;
  }
  .review-warmth-list {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
  }
  .warmth-item {
    display: flex;
    flex-direction: column;
    gap: 8px;
  }
  .warmth-label {
    font-family: var(--display);
    font-size: 16px;
    color: var(--sage-deep);
    font-weight: 500;
    letter-spacing: -0.005em;
  }
  .warmth-bar {
    display: block;
    height: 5px;
    background: var(--cream-2);
    border-radius: 999px;
    overflow: hidden;
  }
  .warmth-fill {
    display: block;
    height: 100%;
    background: linear-gradient(90deg, var(--leaf), var(--sage));
    border-radius: 999px;
  }
  .warmth-num {
    font-size: 11px;
    font-weight: 700;
    color: var(--sage);
    letter-spacing: 0.04em;
  }

  /* scrapbook review cards — subtle tonal variation, slight asymmetry */
  .review-cards.review-scrapbook { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
  .review {
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 24px 24px 20px;
    transition: transform 0.2s, box-shadow 0.2s;
  }
  .review:hover { transform: translateY(-2px); box-shadow: 0 18px 36px -22px rgba(28,24,16,0.2); }
  /* three subtle background tones — feels like a scrapbook rather than a database */
  .review-tone-1 { background: var(--paper); }
  .review-tone-2 { background: var(--cream); }
  .review-tone-3 { background: var(--cream-2); }
  .review-head {
    display: flex; gap: 12px; align-items: center;
    margin-bottom: 14px;
  }
  /* review avatars get a soft breathing rainbow aura — same brand language as the main practitioner avatar, smaller scale */
  .review-avatar.avatar-ring {
    width: 44px; height: 44px;
    border-radius: 50%;
    position: relative;
    background: var(--paper);
    flex-shrink: 0;
  }
  .review-avatar.avatar-ring::before {
    content: "";
    position: absolute;
    inset: -4px;
    border-radius: 50%;
    background: conic-gradient(from 0deg,
      #BB5E3C, #D6A45D, #E1C85A, #738B5F, #4A5D4F, #6E8CB4, #966EAA, #BB5E3C);
    filter: blur(6px);
    opacity: 0.55;
    z-index: 1;
    -webkit-mask: radial-gradient(circle closest-side, transparent 80%, #000 100%);
    mask: radial-gradient(circle closest-side, transparent 80%, #000 100%);
    animation: avatar-aura-spin 14s linear infinite;
  }
  /* offset timing per card so the four auras don't pulse in unison */
  .review-tone-2 .review-avatar.avatar-ring::before { animation-delay: -1.2s, -3s; }
  .review-tone-3 .review-avatar.avatar-ring::before { animation-delay: -2.4s, -6s; }
  .review:nth-child(4) .review-avatar.avatar-ring::before { animation-delay: -3.6s, -9s; }@keyframes review-aura-pulse{
    0%, 100% { inset: -3px; opacity: 0.45; }
    50%      { inset: -6px; opacity: 0.7; }
  }@media (prefers-reduced-motion: reduce){
    .review-avatar.avatar-ring::before { animation: none; inset: -4px; opacity: 0.5; }
  }
  .review-avatar.avatar-ring > span {
    display: flex; align-items: center; justify-content: center;
    width: 100%; height: 100%;
    border-radius: 50%;
    background: var(--cedar);
    color: var(--paper);
    font-family: var(--display);
    font-weight: 500;
    font-size: 17px;
    border: 2px solid var(--paper);
    position: relative;
    z-index: 2;
  }
  .review-avatar.avatar-ring.sage > span { background: var(--sage); }
  .review-avatar.avatar-ring.terracotta > span { background: var(--terracotta); }
  .review-meta b { display: block; font-size: 14px; font-weight: 600; }
  .review-meta small { font-size: 11.5px; color: var(--muted); }
  .review-meta .rv-vc { color: var(--sage, #4A5D4F); font-weight: 700; }
  .review-meta .rv-pin { color: var(--cedar, #8A5A37); font-weight: 700; }
  /* small sun glyphs replace generic stars — your brand sun motif */
  .review-stars {
    display: flex; gap: 2px; margin-left: auto;
    color: var(--ochre);
  }
  .review-stars svg { width: 13px; height: 13px; }
  .review-body {
    font-size: 14.5px;
    line-height: 1.6;
    color: var(--ink-soft);
  }
  .review-foot {
    margin-top: 16px;
    padding-top: 14px;
    border-top: 1px dashed var(--line);
    display: flex; justify-content: space-between; align-items: center;
    gap: 12px;
  }
  .review-reply { margin-top: 14px; padding: 12px 14px; background: rgba(74,93,79,0.06); border-left: 3px solid var(--sage, #4A5D4F); border-radius: 0 10px 10px 0; }
  .review-reply-head { font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--sage, #4A5D4F); margin-bottom: 4px; }
  .review-reply-body { margin: 0; font-size: 14px; line-height: 1.55; color: var(--ink-soft, #4a443b); white-space: pre-wrap; }
  .review-owner-tools { margin-top: 12px; }
  .rv-reply-btn { background: none; border: 1px solid var(--line); color: var(--cedar-deep, #3a463c); border-radius: 8px; padding: 6px 14px; font: inherit; font-size: 13px; cursor: pointer; }
  .rv-reply-btn:hover { background: rgba(74,93,79,0.06); }
  .rv-reply-editor { margin-top: 12px; }
  .rv-reply-input { width: 100%; padding: 10px 12px; border: 1px solid var(--line); border-radius: 9px; background: var(--cream, #F4F1EA); font: inherit; font-size: 14px; color: var(--ink, #2e2a24); resize: vertical; }
  .rv-reply-actions { margin-top: 8px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
  .rv-reply-save { background: var(--sage, #4A5D4F); color: #fff; border: none; border-radius: 8px; padding: 7px 16px; font: inherit; font-size: 13px; cursor: pointer; }
  .rv-reply-cancel, .rv-reply-delete { background: none; border: none; color: var(--muted, #9a9286); font: inherit; font-size: 13px; cursor: pointer; text-decoration: underline; }
  .rv-reply-delete { color: var(--terracotta, #bb5e3c); }
  .rv-reply-msg { font-size: 12.5px; color: var(--muted, #9a9286); }
  /* asymmetric handwritten-feeling badge */
  .review-badge {
    font-size: 11.5px;
    color: var(--sage-deep);
    font-weight: 600;
    background: rgba(74,93,79,0.08);
    padding: 4px 10px;
    border-radius: 999px;
    transform: rotate(-1deg);
    display: inline-block;
  }
  .review-tone-2 .review-badge { transform: rotate(0.5deg); background: rgba(187,94,60,0.08); color: var(--cedar-deep); }
  .review-tone-3 .review-badge { transform: rotate(-0.5deg); background: rgba(214,164,93,0.14); color: var(--cedar-deep); }
  .review-date { font-size: 11px; color: var(--muted); }

  /* ====== rules / cancellation ====== */
  .info-block {
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: 10px;
    padding: 24px 28px;
    margin-bottom: 16px;
  }
  .info-block h4 {
    font-family: var(--display);
    font-size: 19px;
    font-weight: 500;
    letter-spacing: -0.01em;
    margin-bottom: 12px;
  }
  .info-block p, .info-block li {
    font-size: 14px;
    color: var(--ink-soft);
    line-height: 1.6;
  }
  .info-block ul { padding-left: 18px; }
  .info-block li { margin-bottom: 6px; }

  /* ====== sticky booking card ====== */
  .booking-card {
    position: sticky;
    top: 100px;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: 14px;
    padding: 28px;
    box-shadow: 0 30px 60px -30px rgba(28, 24, 16, 0.3);
  }
  .booking-card.booking-card-inline {
    position: static;
    margin-top: 28px;
    box-shadow: 0 20px 40px -28px rgba(28, 24, 16, 0.25);
  }
  .booking-price {
    display: flex; align-items: baseline; gap: 8px;
    margin-bottom: 6px;
  }
  .booking-price .num {
    font-family: var(--display);
    font-size: 32px;
    font-weight: 500;
    letter-spacing: -0.01em;
  }
  .booking-price .from { font-size: 13px; color: var(--muted); }
  .booking-rating {
    font-size: 13px;
    color: var(--muted);
    margin-bottom: 22px;
  }
  .booking-rating b { color: var(--ink); }
  .booking-rating svg { width: 13px; height: 13px; color: var(--ochre); vertical-align: middle; }

  .booking-form-field {
    border: 1px solid var(--line);
    border-radius: 10px;
    padding: 12px 16px;
    margin-bottom: 8px;
    cursor: pointer;
    transition: border 0.2s;
  }
  .booking-form-field:hover { border-color: var(--ink); }
  .booking-form-field label {
    display: block;
    font-size: 10px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--muted);
    font-weight: 600;
  }
  .booking-form-field .val {
    font-size: 14px;
    margin-top: 3px;
    color: var(--ink);
    font-weight: 500;
  }

  .booking-verified {
    display: flex; align-items: center; gap: 7px;
    margin-top: 14px; padding: 9px 12px;
    background: rgba(74,93,79,0.08);
    color: var(--sage, #4A5D4F);
    border-radius: 9px;
    font-size: 12.5px; font-weight: 600;
  }
  .booking-cta {
    width: 100%;
    background: var(--ink);
    color: var(--cream);
    padding: 14px;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    margin-top: 14px;
    display: flex; align-items: center; justify-content: center; gap: 6px;
    transition: background 0.2s;
  }
  .booking-cta:hover { background: var(--cedar-deep); }

  .booking-secondary {
    width: 100%;
    border: 1px solid var(--line);
    padding: 12px;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 600;
    margin-top: 10px;
    color: var(--ink-soft);
  }
  .booking-secondary:hover { border-color: var(--ink); color: var(--ink); }

  .booking-divider {
    height: 1px; background: var(--line);
    margin: 20px 0;
  }
  .booking-breakdown {
    display: flex; flex-direction: column; gap: 10px;
    font-size: 13.5px;
  }
  .booking-breakdown .line { display: flex; justify-content: space-between; color: var(--ink-soft); }
  .booking-breakdown .line.total {
    color: var(--ink); font-weight: 700; padding-top: 12px;
    border-top: 1px solid var(--line); margin-top: 4px;
  }
  .booking-passport-promo {
    background: var(--sage); color: var(--paper);
    border-radius: 10px;
    padding: 16px;
    margin-top: 20px;
    display: flex; gap: 12px; align-items: center;
  }
  .booking-passport-promo .icon {
    width: 36px; height: 36px; border-radius: 50%;
    background: var(--ochre); color: var(--ink);
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
  }
  .booking-passport-promo .icon svg { width: 18px; height: 18px; }
  .booking-passport-promo .text { font-size: 12.5px; line-height: 1.45; }
  .booking-passport-promo .text b { color: var(--ochre); }

  /* ====== find them online sidebar card ====== */
  .connect-card {
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: 14px;
    padding: 22px 22px 18px;
  }
  .connect-card.connect-card-sidebar {
    padding: 16px 18px 14px;
  }
  .connect-card.connect-card-sidebar .connect-title {
    font-size: 14.5px;
    margin-bottom: 10px;
    padding-bottom: 8px;
  }
  .connect-card.connect-card-sidebar .connect-list { gap: 0; }
  .connect-card.connect-card-sidebar .connect-list li a { padding: 7px 0; gap: 10px; }
  .connect-card.connect-card-sidebar .connect-ico { width: 28px; height: 28px; }
  .connect-card.connect-card-sidebar .connect-ico svg { width: 13px; height: 13px; }
  .connect-card.connect-card-sidebar .connect-label { font-size: 9.5px; letter-spacing: 0.12em; }
  .connect-card.connect-card-sidebar .connect-value { font-size: 12.5px; margin-top: 1px; }
  .connect-title {
    font-family: var(--display);
    font-size: 16px;
    font-weight: 500;
    letter-spacing: -0.01em;
    color: var(--ink);
    margin-bottom: 14px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--line);
  }
  .connect-list {
    list-style: none;
    margin: 0; padding: 0;
    display: flex; flex-direction: column;
    gap: 2px;
  }
  .connect-list li a {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 0;
    color: var(--ink-soft);
    transition: color 0.2s;
  }
  .connect-list li a:hover { color: var(--cedar-deep); }
  .connect-list li .connect-static {
    display: flex; align-items: center; gap: 12px;
    padding: 10px 0; color: var(--ink-soft);
  }
  .connect-li-address .connect-ico svg path { fill: var(--terracotta, #BB5E3C); }
  .connect-li-hours .connect-ico svg path { fill: var(--ochre, #D6A45D); }
  .connect-li-hours .connect-value { white-space: pre-line; line-height: 1.4; }
  .connect-card.connect-card-sidebar .connect-list li .connect-static { padding: 7px 0; gap: 10px; }
  .connect-ico {
    width: 36px; height: 36px;
    border-radius: 50%;
    background: var(--cream-2);
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
    transition: background 0.2s, transform 0.2s;
  }
  .connect-ico svg { width: 19px; height: 19px; }
  .connect-list li a:hover .connect-ico {
    background: var(--cream);
    transform: scale(1.06);
  }
  /* per-channel glyph fill colors — branded color glyphs on cream-2 circles */
  .connect-li-instagram .connect-ico svg path { fill: url(#igFillGrad); }
  .connect-li-facebook .connect-ico svg path { fill: #1877F2; }
  .connect-li-website .connect-ico svg path { fill: #2978b5; }
  .connect-li-phone .connect-ico svg path { fill: var(--sage); }
  .connect-li-email .connect-ico svg path { fill: var(--cedar); }
  .connect-text {
    display: flex; flex-direction: column;
    line-height: 1.25;
    min-width: 0;
    overflow: hidden;
  }
  .connect-label {
    font-size: 10.5px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    font-weight: 700;
    color: var(--muted);
  }
  .connect-value {
    font-size: 13.5px;
    margin-top: 2px;
    color: var(--ink);
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .connect-value .ph-at {
    color: var(--cedar);
    font-weight: 700;
  }

  /* ====== booking calendar ====== */
  .col-main { min-width: 0; }
  #bookCalSection { min-width: 0; max-width: 100%; }
  #bookCalSection .bc-sub { color: var(--muted); font-size: 15px; margin: -4px 0 16px; line-height: 1.5; }
  .bc-month { font-size: 12px; letter-spacing: .16em; text-transform: uppercase; font-weight: 700; color: var(--cedar-deep, #6b4426); margin-bottom: 8px; min-height: 1em; }
  .bc-days { display: flex; gap: 8px; overflow-x: auto; padding: 2px 2px 8px; scrollbar-width: none; }
  .bc-days::-webkit-scrollbar { display: none; }
  .bc-day { flex: 0 0 74px; display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 10px 6px; border-radius: 14px;
            border: 1px solid var(--line); background: var(--paper); color: var(--ink); cursor: pointer; font: inherit; }
  .bc-day .d1 { font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); font-weight: 700; }
  .bc-day .d2 { font-family: var(--display); font-size: 24px; line-height: 1.1; }
  .bc-day .d3 { font-size: 11px; font-weight: 600; color: var(--sage); }
  .bc-day[disabled] { opacity: .45; cursor: default; }
  .bc-day[disabled] .d3 { color: var(--muted); }
  .bc-day[aria-selected="true"] { background: var(--ink); border-color: var(--ink); color: var(--paper); }
  .bc-day[aria-selected="true"] .d1, .bc-day[aria-selected="true"] .d3 { color: var(--ochre); }
  .bc-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 8px; margin-top: 12px; }
  .bc-slot { padding: 11px 8px; border-radius: 999px; border: 1px solid var(--line-strong, rgba(28,24,16,.22)); background: var(--paper);
             font: inherit; font-size: 14px; font-weight: 600; color: var(--ink); cursor: pointer; }
  .bc-slot:hover { border-color: var(--ink); background: var(--cream); }
  .bc-empty { color: var(--muted); font-size: 14.5px; grid-column: 1 / -1; }
  .bc-note { font-size: 12.5px; color: var(--muted); margin-top: 12px; }
  .rv-gate { text-align: left; max-width: 600px; margin: 0 auto; font-size: 14.5px; line-height: 1.55; color: var(--ink-soft, #3a3328); background: var(--cream); border: 1px solid var(--line); border-radius: 14px; padding: 14px 16px; }
  .rv-gate .rv-gate-btns { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
  .rv-gate button, .rv-gate a.rv-gate-a { border: 0; border-radius: 999px; padding: 9px 16px; font: inherit; font-size: 13.5px; font-weight: 600; cursor: pointer; background: var(--ink); color: var(--paper); text-decoration: none; }
  .rv-gate .rv-gate-msg { display: block; font-size: 13px; color: #8F3F22; margin-top: 8px; }

  /* ====== booking request modal ====== */
  .booking-modal {
    position: fixed; inset: 0;
    background: rgba(28, 24, 16, 0.55);
    backdrop-filter: blur(6px);
    z-index: 9500;
    display: none;
    align-items: flex-start;
    justify-content: center;
    padding: 60px 20px 40px;
    overflow-y: auto;
  }
  .booking-modal.open { display: flex; animation: bm-fade-in 0.2s ease; }@keyframes bm-fade-in{ from { opacity: 0; } to { opacity: 1; } }
  .booking-modal-card {
    background: var(--paper);
    border-radius: 16px;
    max-width: 540px;
    width: 100%;
    padding: 36px 36px 32px;
    position: relative;
    box-shadow: 0 30px 80px -20px rgba(28, 24, 16, 0.6);
    animation: bm-slide-up 0.28s ease;
  }@keyframes bm-slide-up{ from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
  .booking-modal-close {
    position: absolute; top: 16px; right: 16px;
    width: 36px; height: 36px;
    border-radius: 50%;
    background: var(--cream-2);
    color: var(--ink);
    display: flex; align-items: center; justify-content: center;
    transition: background 0.2s;
  }
  .booking-modal-close:hover { background: var(--cream); }
  .booking-modal-close svg { width: 18px; height: 18px; }
  .booking-modal-head { margin-bottom: 22px; }
  .booking-modal-head .eyebrow {
    font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase;
    font-weight: 700; color: var(--cedar-deep);
  }
  .booking-modal-head h3 {
    font-family: var(--display);
    font-size: 26px; font-weight: 500;
    letter-spacing: -0.01em;
    margin-top: 8px;
  }
  .booking-modal-sub {
    font-size: 13.5px;
    color: var(--muted);
    margin-top: 8px;
    line-height: 1.5;
  }
  .booking-modal-form { display: flex; flex-direction: column; gap: 14px; }
  .bm-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
  .bm-field { display: flex; flex-direction: column; gap: 6px; }
  .bm-field label {
    font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase;
    color: var(--muted); font-weight: 700;
  }
  .bm-field input,
  .bm-field select,
  .bm-field textarea {
    padding: 12px 14px;
    background: var(--cream);
    border: 1px solid var(--line);
    border-radius: 9px;
    font-family: var(--sans);
    font-size: 14px;
    color: var(--ink);
    transition: border-color 0.2s;
  }
  .bm-field input:focus,
  .bm-field select:focus,
  .bm-field textarea:focus {
    outline: none;
    border-color: var(--ink);
    background: var(--paper);
  }
  .bm-field textarea { resize: vertical; min-height: 88px; font-family: var(--sans); }
  .bm-verify { margin-top: 4px; }
  .bm-check {
    display: flex; align-items: center; gap: 10px;
    cursor: pointer;
    padding: 12px 14px;
    background: var(--cream);
    border: 1px solid var(--line);
    border-radius: 9px;
    transition: all 0.2s;
  }
  .bm-check:hover { border-color: var(--line-strong); }
  .bm-check input[type="checkbox"] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
  }
  .bm-check-circle {
    width: 20px; height: 20px;
    border-radius: 50%;
    border: 1.8px solid var(--line-strong);
    background: var(--paper);
    flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    transition: all 0.2s;
  }
  .bm-check input:checked ~ .bm-check-circle {
    background: var(--sage);
    border-color: var(--sage);
  }
  .bm-check input:checked ~ .bm-check-circle::after {
    content: "";
    width: 10px; height: 6px;
    border-left: 2px solid var(--cream);
    border-bottom: 2px solid var(--cream);
    transform: rotate(-45deg) translate(1px, -1px);
  }
  .bm-check-text { font-size: 13.5px; color: var(--ink-soft); }
  .booking-modal-submit {
    margin-top: 8px;
    padding: 14px 22px;
    background: var(--ink);
    color: var(--cream);
    border-radius: 999px;
    font-size: 14px; font-weight: 600;
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    transition: all 0.2s;
  }
  .booking-modal-submit:not(:disabled):hover { background: var(--cedar-deep); }
  .booking-modal-submit:disabled {
    opacity: 0.45;
    cursor: not-allowed;
  }
  .booking-modal-submit svg { width: 14px; height: 14px; }@media (max-width: 540px){
    .booking-modal { padding: 20px 12px; }
    .booking-modal-card { padding: 28px 22px 24px; }
    .bm-row { grid-template-columns: 1fr; }
  }

  /* Contact info always lives inline under About (no longer sticky in sidebar) */
  .connect-card-sidebar { display: none; }
  .connect-card-inline-resp { display: block; position: static; margin-top: 14px; }
  /* responsive visibility for Live availability: sidebar on desktop, inline on tablet/mobile */
  .availability-sidebar-resp { display: none; }@media (min-width: 1025px){
    .availability-inline-resp { display: none; }
    .availability-sidebar-resp { display: block; }
  }

  /* compact sidebar version of the availability calendar */
  .availability-sidebar-resp {
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: 14px;
    padding: 28px 26px 24px;
    margin-bottom: 18px;
  }
  .avail-sidebar-title {
    font-family: var(--display);
    font-size: 18px;
    font-weight: 500;
    letter-spacing: -0.01em;
    color: var(--ink);
    margin-bottom: 4px;
  }
  .avail-sidebar-title em {
    font-style: italic;
    color: var(--cedar);
  }
  .avail-sidebar-sub {
    font-size: 12px;
    color: var(--muted);
    line-height: 1.45;
    margin-bottom: 16px;
  }
  /* compact 7-day grid */
  .cal-week.cal-week-compact {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 5px;
    margin: 0 0 22px;
  }
  .cal-week.cal-week-compact .cal-day {
    padding: 12px 2px 12px;
    min-height: auto;
  }
  .cal-week.cal-week-compact .cal-dow {
    font-size: 9.5px;
    letter-spacing: 0.06em;
  }
  .cal-week.cal-week-compact .cal-num {
    font-size: 18px;
    margin: 4px 0;
  }
  .cal-week.cal-week-compact .cal-slots {
    font-size: 9.5px;
    line-height: 1.2;
  }
  /* compact time slots — two columns to show more slots in the same height */
  .cal-time-slots.cal-time-slots-compact {
    margin-top: 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 7px;
  }
  .cal-time-slots.cal-time-slots-compact .time-slot {
    padding: 11px 12px;
    font-size: 12.5px;
    text-align: center;
  }
  .avail-sidebar-foot {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid var(--line);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
  }
  .avail-sidebar-price {
    font-size: 13px;
    color: var(--muted);
  }
  .avail-sidebar-price b {
    font-family: var(--display);
    font-size: 18px;
    font-weight: 500;
    color: var(--ink);
    margin-right: 2px;
  }
  .avail-sidebar-price small {
    font-size: 11px;
  }
  .avail-sidebar-cta {
    padding: 9px 16px;
    background: var(--ink);
    color: var(--cream);
    border-radius: 999px;
    font-size: 13px;
    font-weight: 600;
    transition: background 0.2s;
  }
  .avail-sidebar-cta:hover {
    background: var(--cedar-deep);
  }

  /* ====== My Events ====== */
  .my-events-section { margin-top: 8px; }
  .my-events-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
  .my-events-grid.is-empty { display: block; }
  .my-events-empty {
    text-align: center; padding: 44px 24px;
    border: 1.5px dashed var(--line-strong); border-radius: 16px;
    background: var(--paper); color: var(--muted);
  }
  .my-events-empty svg { width: 30px; height: 30px; color: var(--cedar); opacity: 0.6; margin-bottom: 12px; }
  .my-events-empty p { font-family: var(--display); font-size: 19px; color: var(--ink-soft); font-weight: 500; margin: 0; }
  .my-events-empty small { display: block; margin-top: 6px; font-size: 13px; color: var(--muted); }
  @media (max-width: 860px) { .my-events-grid { grid-template-columns: repeat(2, 1fr); } }
  .event-card {
    background: var(--paper); border: 1px solid var(--line); border-radius: 14px;
    overflow: hidden; display: flex; flex-direction: column; transition: transform .25s ease, box-shadow .25s ease;
  }
  .event-card:hover { transform: translateY(-4px); box-shadow: 0 20px 40px -20px rgba(28,24,16,0.25); }
  .event-card-img { height: 150px; background: var(--cream-2); overflow: hidden; }
  .event-card-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
  .event-card-body { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 6px; }
  .event-card-date { font-size: 12px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--cedar); }
  .event-card-body h4 { font-family: var(--display); font-size: 17px; font-weight: 500; color: var(--ink); line-height: 1.25; }
  .event-card-meta { font-size: 13px; color: var(--muted); margin-top: 2px; }
  .event-card-cta { margin-top: 10px; font-size: 13px; font-weight: 600; color: var(--cedar); text-decoration: none; }
  .event-card-cta:hover { text-decoration: underline; }
  @media (max-width: 600px) {
    .my-events-grid { gap: 10px; }
    .event-card-img { height: 88px; }
    .event-card-body { padding: 10px 11px 12px; gap: 4px; }
    .event-card-body h4 { font-size: 14px; line-height: 1.2; }
    .event-card-date { font-size: 10.5px; }
    .event-card-meta { font-size: 12px; }
    .event-card-cta { font-size: 12px; }
    .vibe-item { padding: 11px 12px; gap: 9px; }
    .vibe-item span { font-size: 13px; }
    .vibe-item svg { width: 17px; height: 17px; }
  }

  /* ====== report this listing ====== */
  .report-row { max-width: 1200px; margin: 0 auto; padding: 24px; text-align: center; }
  .report-link { background: none; border: none; cursor: pointer; font-family: var(--sans); font-size: 13px; color: var(--muted); text-decoration: underline; text-underline-offset: 3px; }
  .report-link:hover { color: var(--terracotta); }
  .report-modal-backdrop {
    position: fixed; inset: 0; background: rgba(28,24,16,0.5); z-index: 9500;
    display: flex; align-items: center; justify-content: center; padding: 20px;
  }
  .report-modal {
    background: var(--paper); border-radius: 16px; max-width: 440px; width: 100%;
    padding: 28px; box-shadow: 0 30px 80px -20px rgba(28,24,16,0.5);
  }
  .report-modal h3 { font-family: var(--display); font-size: 22px; font-weight: 400; color: var(--ink); margin-bottom: 6px; }
  .report-modal p { font-size: 13.5px; color: var(--muted); line-height: 1.55; margin-bottom: 16px; }
  .report-modal label { display: block; font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; font-weight: 600; color: var(--muted); margin-bottom: 7px; }
  .report-modal select, .report-modal textarea {
    width: 100%; padding: 11px 14px; border: 1px solid var(--line); border-radius: 9px;
    background: var(--cream); font-family: var(--sans); font-size: 14px; color: var(--ink); margin-bottom: 14px;
  }
  .report-modal textarea { min-height: 84px; resize: vertical; }
  .report-modal-actions { display: flex; gap: 10px; justify-content: flex-end; }
  .report-modal-actions button { padding: 11px 22px; border-radius: 999px; font-size: 13.5px; font-weight: 600; cursor: pointer; font-family: var(--sans); border: none; }
  .report-cancel { background: transparent; color: var(--muted); }
  .report-cancel:hover { color: var(--ink); }
  .report-send { background: var(--ink); color: var(--cream); }
  .report-send:hover { background: var(--cedar-deep); }
  .report-hp { position: absolute; left: -9999px; top: -9999px; width: 1px; height: 1px; overflow: hidden; }

  /* ====== write-a-review ====== */
  .rv-write-btn { background: var(--ink); color: var(--cream); border: none; border-radius: 999px; padding: 13px 26px; font-family: var(--sans); font-size: 14px; font-weight: 600; cursor: pointer; }
  .rv-write-btn:hover { background: var(--cedar-deep); }
  .rv-signin-note { color: var(--muted); font-size: 14px; }
  .rv-modal-stars { display: flex; gap: 6px; margin-bottom: 14px; }
  .rv-star { width: 32px; height: 32px; cursor: pointer; color: var(--line-strong); transition: color .12s ease; }
  .rv-star.on { color: var(--ochre); }
  .rv-date { color: var(--muted); }

  /* ====== similar listings ====== */
  .similar-section {
    background: var(--paper);
    border-top: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
    padding: 50px 0 60px;
  }
  .similar-head {
    display: flex; justify-content: space-between; align-items: flex-end;
    margin-bottom: 36px;
    gap: 40px;
  }
  .similar-head h2 {
    font-family: var(--display);
    font-weight: 400;
    font-size: clamp(32px, 4vw, 52px);
    line-height: 1;
    letter-spacing: -0.025em;
  }
  .similar-head h2 em { font-style: italic; color: var(--cedar); }
  .similar-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
  .similar-card {
    background: var(--cream);
    border: 1px solid var(--line);
    border-radius: 8px;
    overflow: hidden;
    transition: all 0.3s;
    display: block;
    color: inherit;
    text-decoration: none;
  }
  .similar-card:hover { transform: translateY(-4px); box-shadow: 0 20px 40px -20px rgba(28, 24, 16, 0.25); }
  .similar-img { aspect-ratio: 16/10; overflow: hidden; }
  .similar-img img { width: 100%; height: 100%; object-fit: cover; }
  .similar-body { padding: 18px 20px 20px; }
  .similar-mod { font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--cedar-deep); font-weight: 700; }
  .similar-card h4 { font-family: var(--display); font-size: 19px; font-weight: 500; letter-spacing: -0.01em; margin-top: 6px; line-height: 1.15; }
  .similar-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    font-size: 12.5px;
    color: var(--muted);
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--line);
  }
  .similar-meta > span { display: inline-flex; align-items: center; gap: 4px; }
  .similar-meta .sm-right {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-left: auto;
  }
  .similar-meta .sm-right > span + span::before {
    content: "·";
    color: var(--line-strong);
    margin-right: 6px;
    font-weight: 700;
  }
  .similar-meta .sm-price { color: var(--ink); font-weight: 600; }
  .similar-meta .sm-price b { color: var(--ink); font-weight: 700; }
  .similar-meta .sm-rating { color: var(--ink-soft); font-weight: 600; }
  .similar-meta .sm-loc { color: var(--ink-soft); font-weight: 700; display: inline-flex; align-items: center; }
  .similar-meta .sm-view {
    font-size: 10.5px; font-weight: 700; letter-spacing: 0.09em; text-transform: uppercase;
    color: var(--cedar-deep);
    border: 1px solid var(--cedar);
    border-radius: 999px; padding: 5px 15px;
    transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
  }
  .similar-card:hover .sm-view { background: var(--cedar); color: var(--paper); border-color: var(--cedar); }
  .similar-meta b { color: var(--ink); }
  .similar-pin { width: 15px; height: 15px; color: var(--cedar, #8A5A37); vertical-align: -2px; margin-right: 5px; display: inline-block; }

  /* ====== footer ====== */
  /* ====== footer ====== */
  
    /* ===== footer breath row — quiet box-breath invitation ===== */
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  @media (max-width: 640px){
    
    
    
    
  }@media (prefers-reduced-motion: reduce){
    
    
  }
  
  /* full-width newsletter band — "breath aura" treatment, ties to the breath-circle motif */
  
  
  /* soft rainbow aura glowing behind the headline (same conic palette as the breath circle) */
  
  
  @keyframes news-aura-breathe {
    0%, 100% { transform: translateX(-50%) scale(0.92); opacity: 0.2; }
    50%      { transform: translateX(-50%) scale(1.06); opacity: 0.32; }
  }
  /* little breath dot above the headline */
  
  
  @keyframes news-dot-pulse { 0%,100% { transform: scale(0.8); opacity: 0.65; } 50% { transform: scale(1); opacity: 1; } }
  
  
  
  
  /* pill field with the Send arrow tucked inside as a circle */
  
  
  
  
  
  
  
  
  
  
  @media (prefers-reduced-motion: reduce) {
    
  }
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  @media (max-width: 1024px){
    
    
    
    
    
    
    /* center the link columns on tablet to match the brand block */
    
    
    
  }@media (max-width: 640px){
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  }@media (max-width: 420px){
    
    
    
  }


  /* ====== responsive ====== */
  @media (max-width: 1024px) {
    .main-grid { grid-template-columns: 1fr; gap: 40px; }
    .booking-card { position: relative; top: 0; }
    .gallery.story-gallery { grid-template-columns: 1fr 1fr; grid-template-rows: 220px 220px; height: auto; }
    .gallery .g1 { grid-column: 1 / -1; grid-row: 1; }
    .gallery .g-item:nth-child(n+5) { display: none; }
    .gallery.story-gallery[data-count="1"] { grid-template-columns: 1fr; grid-template-rows: 300px; }
    .gallery.story-gallery[data-count="2"] { grid-template-rows: 260px; }
    .gallery.story-gallery[data-count="2"] .g1 { grid-column: 1; grid-row: 1; }
    .gallery.story-gallery[data-count="3"] { grid-template-rows: 220px 220px; }
    .gallery.story-gallery[data-count="3"] .g1 { grid-column: 1 / -1; grid-row: 1; }
    .review-cards, .similar-grid { grid-template-columns: 1fr; }
    .vibes-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; }
    .my-events-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; }
    .event-card-img { height: 116px; }
    .practitioner-credentials { justify-content: center; }
    .nav-links { display: none; }
    .review-pull { grid-template-columns: 1fr; gap: 24px; padding: 24px; }
    .review-pull-stat { border-left: none; border-top: 1px solid var(--line); padding-left: 0; padding-top: 20px; }
    .review-warmth-list { grid-template-columns: 1fr 1fr; gap: 18px; }
    .review-cards.review-scrapbook { grid-template-columns: 1fr; }
    .cal-week { grid-template-columns: repeat(4, 1fr); }
  }
  /* logo monogram — SS coin on light circular backdrop so it pops on any bg */
  .logo-mark {
    width: 40px; height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
  }
  .logo-mark img {
    width: 100%; height: 100%;
    object-fit: contain;
    display: block;
    /* logo file is already the banner's espresso brown */
  }
  /* breath circle enhancements: idle pulse, rainbow aura, rainbow play hint */
  
  
  @keyframes breath-pulse {
    0%   { transform: scale(0.62); opacity: 0; }
    22%  { opacity: 0.7; }
    100% { transform: scale(1.3); opacity: 0; }
  }
  
  
  
  
  @keyframes breath-hue {
    from { filter: blur(8px) hue-rotate(0deg); }
    to   { filter: blur(8px) hue-rotate(360deg); }
  }
  
  
  
  @media (prefers-reduced-motion: reduce) {
    
    
  }

  
  
  
  
  @media (max-width: 760px) {   }

  /* ===== accessibility helpers (skip link, main focus, legible fine print, map credits) ===== */
  .sg-skip { position: absolute; left: 12px; top: -80px; z-index: 10000; padding: 12px 18px; border-radius: 10px;
    background: #1C1810; color: #FBF7EE !important; font: 600 14px/1.2 var(--sans, 'Manrope', sans-serif); text-decoration: none; transition: top .15s ease; }
  .sg-skip:focus, .sg-skip:focus-visible { top: 12px; outline: 3px solid #EAC894; outline-offset: 2px; }
  main#main:focus { outline: none; }
  
  .leaflet-control-attribution a { color: #005f85 !important; }

  /* motion safety net: honour "reduce motion" everywhere, pause drifting rows on hover/focus */
  @media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
  }
  .marquee:hover .marquee-track, .test-marquee:hover .test-row, .test-marquee:focus-within .test-row { animation-play-state: paused; }

  
  

  /* trust line under the name: what's been checked, when, and how fast they reply */
  .trust-line { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; margin-top: 14px; font-size: 13.5px; color: var(--ink-soft, #3a3328); }
  .title-meta .next-open { order: 6; }
  .title-meta .tl-item { order: 5; display: inline-flex; align-items: center; gap: 7px; padding: 5px 12px 5px 9px; border-radius: 999px; border: 1px solid var(--line, rgba(28,24,16,.14)); background: rgba(255,255,255,.45); line-height: 1.2; font-size: 13.5px; font-weight: 400; color: var(--ink-soft, #3a3328); }
  .title-meta .tl-item svg { width: 16px; height: 16px; flex: none; }
  .title-meta .tl-item b { font-weight: 600; color: var(--ink, #1c1810); }
  .title-meta .tl-item small { font-size: inherit; color: var(--muted, #6F6552); }
  .title-meta .tl-verified { border-color: rgba(74,93,79,.4); background: rgba(74,93,79,.08); }
  .title-meta .tl-verified svg { color: var(--sage, #4A5D4F); }
  .title-meta .tl-claimed svg, .title-meta .tl-listed svg { color: var(--cedar, #8A5A37); }
  html.sg-dark .title-meta .tl-item { background: rgba(241,232,216,.05); border-color: rgba(241,232,216,.16); color: #D9CDB8; }
  html.sg-dark .title-meta .tl-item b { color: #F2EBDD; }
  html.sg-dark .title-meta .tl-item small { color: #B5A992; }
  html.sg-dark .title-meta .tl-verified { background: rgba(124,155,131,.14); border-color: rgba(124,155,131,.4); }
  html.sg-dark .title-meta .tl-verified svg { color: #9DBBA3; }
  .trust-line .tl-item { display: inline-flex; align-items: center; gap: 7px; padding: 6px 12px 6px 9px; border-radius: 999px; border: 1px solid var(--line, rgba(28,24,16,.14)); background: rgba(255,255,255,.45); line-height: 1.2; }
  .trust-line .tl-item svg { width: 16px; height: 16px; flex: none; }
  .trust-line .tl-item b { font-weight: 600; color: var(--ink, #1c1810); }
  .trust-line .tl-item small { font-size: inherit; color: var(--muted, #6F6552); }
  .trust-line .tl-verified { border-color: rgba(74,93,79,.4); background: rgba(74,93,79,.08); }
  .trust-line .tl-verified svg { color: var(--sage, #4A5D4F); }
  .trust-line .tl-claimed svg, .trust-line .tl-listed svg { color: var(--cedar, #8A5A37); }
  .trust-line .tl-replies svg { color: var(--sage, #4A5D4F); }
  .trust-line .tl-how { color: var(--ink-soft, #3a3328); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; padding: 6px 2px; }
  .trust-line .tl-how:hover { color: var(--cedar, #8A5A37); }
  html.sg-dark .trust-line { color: #D9CDB8; }
  html.sg-dark .trust-line .tl-item { background: rgba(241,232,216,.05); border-color: rgba(241,232,216,.16); }
  html.sg-dark .trust-line .tl-item b { color: #F2EBDD; }
  html.sg-dark .trust-line .tl-item small { color: #B5A992; }
  html.sg-dark .trust-line .tl-verified { background: rgba(124,155,131,.14); border-color: rgba(124,155,131,.4); }
  html.sg-dark .trust-line .tl-verified svg, html.sg-dark .trust-line .tl-replies svg { color: #9DBBA3; }
  html.sg-dark .trust-line .tl-how { color: #D9CDB8; }
  @media (max-width: 767px) { .trust-line { font-size: 13px; gap: 6px 8px; } .trust-line .tl-item { padding: 5px 10px 5px 8px; } }

  /* gift card in the booking form */
  .bm-gift { margin: 4px 0 14px; border: 1px solid var(--line); border-radius: 14px; padding: 10px 14px; background: rgba(255,255,255,.4); }
  .bm-gift summary { cursor: pointer; font-size: 14px; font-weight: 600; color: var(--ink-soft, #3a3328); }
  .bm-gift[open] summary { margin-bottom: 8px; }
  .bm-gift-row { display: grid; grid-template-columns: 1fr 110px; gap: 10px; }
  .bm-gift-row .bm-field { margin: 0; }
  #bm-gift-code { letter-spacing: .05em; text-transform: uppercase; }
  .bm-gift-note { font-size: 12.5px; color: var(--muted); margin: 8px 0 2px; line-height: 1.5; }
  .bm-gift-note.err { color: #8A3A22; }

  /* private first-visit form in the booking form */
  .bm-intake { margin: 4px 0 14px; border: 1px solid var(--line); border-radius: 14px; padding: 12px 14px 4px; background: rgba(255,255,255,.4); min-width: 0; }
  .bm-intake legend { padding: 0 6px; margin-left: -6px; font-size: 14px; font-weight: 600; color: var(--ink-soft, #3a3328); }
  .bm-intake-note { font-size: 12.5px; color: var(--muted); margin: 0 0 10px; line-height: 1.5; }
  .bm-intake textarea { resize: vertical; }
  html.sg-dark .bm-intake { background: rgba(241,232,216,.04); border-color: rgba(241,232,216,.16); }
  html.sg-dark .bm-intake legend { color: #E9DFCC; }

  /* in person or online */
  .bm-where { margin: 0 0 14px; border: 0; padding: 0; display: flex; gap: 8px; flex-wrap: wrap; min-width: 0; }
  .bm-where legend {
    font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase;
    color: var(--muted); font-weight: 700; margin-bottom: 8px; padding: 0; }
  .bm-where-opt { position: relative; display: inline-flex; }
  .bm-where-opt input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
  .bm-where-opt span { display: inline-block; padding: 8px 14px; border-radius: 999px; border: 1px solid var(--line-strong, rgba(28,24,16,.25)); font-size: 14px; background: rgba(255,255,255,.5); }
  .bm-where-opt input:checked + span { background: var(--ink); color: var(--paper, #FBF7EE); border-color: var(--ink); }
  .bm-where-opt input:focus-visible + span { outline: 2px solid var(--ochre, #C9973F); outline-offset: 2px; }
  .bm-where-note { font-size: 13px; color: var(--muted); margin: -4px 0 14px; }
  html.sg-dark .bm-where-opt span { background: rgba(241,232,216,.04); border-color: rgba(241,232,216,.25); color: #E9DFCC; }
  html.sg-dark .bm-where-opt input:checked + span { background: #E9DFCC; color: #1C1810; }
  html.sg-dark .bm-where legend { color: #E9DFCC; }

  /* calendar waitlist */
  .bc-day.full, .bc-day.closed { opacity: .62; }
  .bc-day.full[aria-selected="true"] { opacity: 1; }
  .bc-wait { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin-top: 10px; grid-column: 1 / -1; }
  #bcSlots .bc-empty { grid-column: 1 / -1; }
  .bc-wait span { font-size: 13px; color: var(--muted); }
  .bc-wait-btn { font: inherit; font-weight: 700; font-size: 14px; padding: 11px 18px; border-radius: 999px; border: 1px solid var(--ink); background: var(--ink); color: #FBF7EE; cursor: pointer; }
  .bc-wait-btn[aria-pressed="true"] { background: rgba(74,93,79,.1); border-color: rgba(74,93,79,.45); color: var(--sage-deep, #344037); cursor: default; }
  .bc-wait-off { font: inherit; font-size: 13px; background: none; border: 0; color: var(--muted); text-decoration: underline; cursor: pointer; }
.bm-field[hidden]{display:none!important}

  /* readable small text on the tinted review cards (WCAG AA) */
  .review-tone-3 .review-meta small, .review-tone-3 .review-date { color: #594F40; }
  html.sg-dark .review-tone-3 .review-meta small, html.sg-dark .review-tone-3 .review-date { color: #CFC3AD; }
  /* links inside sentences are underlined, not told apart by colour alone */
  .booking-modal p a:not(.btn), .booking-modal label a, .bm-check-text a, .booking-modal .hint a { text-decoration: underline; text-underline-offset: 2px; }
  .msg-consent a { text-decoration: underline; text-underline-offset: 2px; }
  .bm-fine { margin: 2px 0 12px; font-size: 12.5px; line-height: 1.5; color: var(--muted, #6F6552); }
  .bm-fine a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
  html.sg-dark .bm-fine { color: #B5A992; }

  /* What clients mention (from the reviews' own words) */
  .rv-themes { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 18px 0 6px; }
  .rv-themes-h { font-size: 13px; font-weight: 600; color: var(--muted); margin-right: 4px; }
  .rv-theme { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 999px; background: rgba(255,255,255,.55); border: 1px solid var(--line); font-size: 14px; }
  .rv-theme b { font-weight: 700; font-size: 12px; color: var(--muted); }
  html.sg-dark .rv-theme { background: rgba(241,232,216,.05); border-color: rgba(241,232,216,.16); color: #E9DFCC; }
  /* "Is this your practice? Claim this listing" strip (unclaimed listings) */
  .claim-cta { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 18px 0 6px; padding: 14px 18px; border: 1px dashed var(--line-strong, rgba(28,24,16,.3)); border-radius: 16px; background: rgba(255,255,255,.45); }
  .claim-cta > svg { width: 20px; height: 20px; flex: none; color: #8A5A37; }
  .claim-cta p { flex: 1 1 260px; margin: 0; font-size: 14.5px; line-height: 1.5; color: var(--ink-soft, #3A3328); }
  .claim-cta p b { color: var(--ink); }
  .claim-cta-btn { flex: none; display: inline-flex; align-items: center; padding: 10px 18px; border-radius: 999px; background: var(--ink, #1C1810); color: var(--paper, #FBF7EE); font-weight: 600; font-size: 14px; text-decoration: none; }
  .claim-cta-btn:hover { background: #3A3328; }
  .claim-cta-btn:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
  html.sg-dark .claim-cta { background: rgba(241,232,216,.04); border-color: rgba(241,232,216,.25); }
  html.sg-dark .claim-cta p { color: #D9CFBD; }
  html.sg-dark .claim-cta p b { color: #F1E8D8; }
  html.sg-dark .claim-cta-btn { background: #F1E8D8; color: #1C1810; }
  html.sg-dark .claim-cta > svg { color: #E2B98C; }
  @media (max-width: 600px) { .claim-cta-btn { width: 100%; justify-content: center; } }
  /* keep the line breaks and blank lines people type in their bio */
  #pAboutText { white-space: pre-line; }
  /* a longer "what to expect" point gets the full width instead of a narrow column */
  #vibesGrid .vibe-item.vibe-long { grid-column: 1 / -1; }
