/* Shared marketing-site components: mobile menu, booking CTAs, Copy email,
   sticky mobile CTA, proof strip, coming-soon labels. Page tokens
   (--ink, --paper, --orange, fonts) come from each page's :root. */

/* ---------- mobile menu ---------- */
/* Lines are absolutely placed (no flex gap) so they never collapse onto each other in WebKit. */
.menu-btn{display:none;position:relative;flex:none;width:44px;height:44px;
  background:transparent;border:2px solid var(--ink);padding:0;color:var(--ink)}
.menu-btn span{position:absolute;left:50%;top:50%;width:20px;height:2px;margin:-1px 0 0 -10px;background:currentColor;transition:transform .2s,opacity .2s}
.menu-btn span:nth-child(1){transform:translateY(-7px)}
.menu-btn span:nth-child(3){transform:translateY(7px)}
.menu-btn[aria-expanded="true"] span:nth-child(1){transform:rotate(45deg)}
.menu-btn[aria-expanded="true"] span:nth-child(2){opacity:0}
.menu-btn[aria-expanded="true"] span:nth-child(3){transform:rotate(-45deg)}
@media (prefers-reduced-motion:reduce){.menu-btn span{transition:none}}
@media(max-width:900px){.js .menu-btn{display:inline-flex}}
.mnav{position:absolute;left:0;right:0;top:100%;background:var(--paper);border-bottom:2px solid var(--ink);
  box-shadow:0 18px 40px rgba(19,18,17,.14);padding:8px var(--gutter) 22px;max-height:calc(100vh - 60px);overflow-y:auto}
.mnav[hidden]{display:none}
.mnav a:not(.btn){display:flex;align-items:center;min-height:52px;border-bottom:1px solid var(--line);
  font-family:var(--font-cond);font-weight:600;text-transform:uppercase;letter-spacing:.1em;font-size:16px;color:var(--ink);text-decoration:none}
.mnav a:not(.btn):hover{color:var(--orange)}
.mnav .btn{margin-top:18px;width:100%;justify-content:center}
@media(min-width:901px){.mnav{display:none!important}}

/* ---------- booking CTAs ---------- */
.cta-alt{display:flex;flex-wrap:wrap;align-items:center;gap:4px 18px;margin:-14px 0 26px;font-family:var(--font-mono);font-size:14px;color:inherit}
.cta-alt a,.cta-alt button{display:inline-flex;align-items:center;min-height:44px;background:none;border:none;padding:0;
  color:inherit;font:inherit;text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px;cursor:pointer}
.cta-alt a:hover,.cta-alt button:hover{color:var(--orange)}
.cta-alt .cta-addr{opacity:.85;user-select:all}
.copy-email.copied{color:var(--green);text-decoration:none}
html:not(.js) .copy-email{display:none}

/* inline Cal.com block (#book) */
.book-inline{border:2px solid var(--ink);background:var(--paper);min-height:220px;position:relative}
.book-cal{width:100%;min-height:0}
.book-live [data-cal-inline] .book-fallback{display:none}
.book-cal iframe{display:block;width:100%;height:640px;border:0;background:#fff}
/* Google booking popup */
.book-dialog{padding:0;border:2px solid var(--ink);background:var(--paper);width:min(960px,calc(100vw - 32px));height:min(780px,calc(100vh - 48px));max-width:none;max-height:none;margin:auto;flex-direction:column}
.book-dialog[open]{display:flex}
.book-dialog::backdrop{background:rgba(19,18,17,.72)}
.book-dialog-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 8px 8px 18px;border-bottom:2px solid var(--ink);
  font-family:var(--font-cond);font-weight:700;text-transform:uppercase;letter-spacing:.1em;font-size:13px;color:var(--ink)}
.book-dialog-close{min-height:44px;padding:0 16px;background:transparent;border:2px solid var(--ink);color:var(--ink);
  font-family:var(--font-cond);font-weight:600;text-transform:uppercase;letter-spacing:.1em;font-size:13px}
.book-dialog-close:hover{border-color:var(--orange);color:var(--orange)}
.book-dialog iframe{flex:1;width:100%;border:0;background:#fff}
@media(max-width:640px){.book-dialog{width:100vw;height:100dvh;border:none}}
.dialog-open body{overflow:hidden}
.dialog-open .sticky-cta{visibility:hidden}
.book-fallback{padding:clamp(24px,3vw,40px);display:flex;flex-direction:column;gap:16px;align-items:flex-start;color:var(--ink)}
.book-fallback .mono{color:var(--ink-mute);text-transform:uppercase;letter-spacing:.08em}
.book-fallback .addr{font-family:var(--font-display);font-weight:700;font-size:clamp(22px,2.6vw,34px);letter-spacing:-.01em;word-break:break-all;user-select:all}
.book-fallback .row{display:flex;flex-wrap:wrap;gap:16px}

/* ---------- inline text links: 44px tap area without moving the line ---------- */
.tl{display:inline-block;padding:10px 2px;margin:-10px -2px}

/* ---------- sticky mobile CTA ---------- */
.sticky-cta{display:none}
@media(max-width:900px){
  .js.has-sticky body{padding-bottom:84px}
  .sticky-cta{display:flex;gap:10px;align-items:center;position:fixed;left:0;right:0;bottom:0;z-index:1500;
    padding:12px var(--gutter) calc(12px + env(safe-area-inset-bottom));background:var(--paper);border-top:2px solid var(--ink);
    transform:translateY(110%);visibility:hidden;transition:transform .25s ease,visibility 0s linear .25s}
  .sticky-cta.show{transform:none;visibility:visible;transition:transform .25s ease}
  .sticky-cta .btn{flex:1;justify-content:center;padding:12px 16px;min-height:48px}
  .sticky-cta .copy-email{flex:none;min-height:48px;padding:0 14px;border:2px solid var(--ink);background:transparent;color:var(--ink);
    font-family:var(--font-cond);font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:13px}
}
@media (prefers-reduced-motion:reduce){.sticky-cta,.sticky-cta.show{transition:none}}
.menu-open .sticky-cta{visibility:hidden}

/* ---------- proof strip ---------- */
.proof-strip{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0 0 26px;padding-top:18px;border-top:1px solid var(--line)}
.proof-strip .ps-label{font-family:var(--font-mono);font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-mute)}
.proof-strip .ps-logo{display:inline-flex;align-items:center;line-height:0}
.proof-strip .ps-logo img{height:26px;width:auto;display:block}

/* ---------- coming-soon labels ---------- */
.soon-badge{font-family:var(--font-mono);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.1em;
  color:var(--ink-mute);border:1px solid var(--line);padding:3px 8px;white-space:nowrap;display:inline-block;line-height:1.4}
.soon-note{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:22px;min-height:44px;
  font-family:var(--font-mono);font-size:13.5px;color:var(--ink-soft);text-decoration:none}
.soon-note:hover{color:var(--orange)}
.soon-note u{text-underline-offset:4px}
