/* =============================================================
   Chaitus Media — main.css
   Editorial, gallery-like layout. Generous whitespace, restrained
   type, slow transitions. Mobile-first; responsive overrides
   live in responsive.css.
============================================================= */

/* ---------- FOUC guard ----------
   header.php / static <head> sets `html{visibility:hidden}` inline so
   the browser doesn't paint raw unstyled HTML before this stylesheet
   downloads. The rule below cancels that the moment main.css parses,
   so the page reveals fully styled instead of flashing through an
   editorial layout's worst-looking moment. A 2.5s JS failsafe in
   <head> also strips the guard if main.css fails to load. */
html { visibility: visible; }

/* ---------- Mobile polish (touch + iOS) ---------- */

/* Suppress the gray flash on iOS Safari when tapping links/buttons. */
a, button, [role="button"], summary, .cm-films__card, .cm-reels__card, .cm-portfolio__card {
  -webkit-tap-highlight-color: transparent;
}

/* Buttons on touch devices need a comfortable minimum tap area. */
button, .cm-btn, .cm-films__card, .cm-reels__card {
  -webkit-touch-callout: none;
}

/* iOS Safari clamps body width to viewport; protect against any rogue
   wide elements bleeding past on mobile. */
html, body {
  overflow-x: clip;
}

/* ---------- Layout primitives ---------- */

.cm-container {
  width: 100%;
  max-width: var(--cm-container);
  margin-inline: auto;
  padding-inline: var(--cm-gutter);
}

.cm-container--narrow { max-width: var(--cm-container-narrow); }

.cm-section {
  padding-block: clamp(4rem, 10vw, 9rem);
  position: relative;
}

.cm-section--dark {
  background: var(--cm-night);
  color: var(--cm-paper);
}

.cm-grid {
  display: grid;
  gap: clamp(2rem, 5vw, 5rem);
}

.cm-grid--2 {
  grid-template-columns: 1fr 1.6fr;
  align-items: start;
}

@media (max-width: 768px) {
  .cm-grid--2 { grid-template-columns: 1fr; }
}

/* ---------- Typography ---------- */

.cm-eyebrow {
  display: inline-block;
  font-family: var(--cm-font-body);
  font-size: var(--cm-text-xs);
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cm-ink-faint);
  margin-bottom: var(--cm-space-md);
}

.cm-eyebrow--light { color: rgba(250, 248, 245, 0.65); }

.cm-display {
  font-family: var(--cm-font-display);
  font-weight: 400;
  font-size: var(--cm-text-3xl);
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: inherit;
  margin: 0;
  text-wrap: balance;
}

.cm-display--md { font-size: var(--cm-text-2xl); }
.cm-display--xl { font-size: var(--cm-text-4xl); }

.cm-prose {
  font-size: var(--cm-text-lg);
  line-height: 1.7;
  color: var(--cm-ink-soft);
  max-width: 60ch;
  margin: var(--cm-space-md) 0 0;
}

.cm-prose--lead {
  font-size: var(--cm-text-xl);
  line-height: 1.5;
  color: var(--cm-ink-soft);
  font-weight: 300;
}

.cm-prose--center { margin-inline: auto; text-align: center; }
.cm-prose--light  { color: rgba(250, 248, 245, 0.78); }

.cm-prose--page p { margin: 0 0 1.4em; }
.cm-prose--page h2,
.cm-prose--page h3 {
  font-family: var(--cm-font-display);
  font-weight: 500;
  letter-spacing: -0.01em;
  margin: 2.2em 0 0.6em;
  line-height: 1.2;
}
.cm-prose--page h2 { font-size: var(--cm-text-2xl); }
.cm-prose--page h3 { font-size: var(--cm-text-xl); }
.cm-prose--page a {
  color: var(--cm-accent-deep);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}

/* ---------- Section heading lockup ---------- */

.cm-section-heading {
  margin-bottom: clamp(2rem, 6vw, 5rem);
  max-width: 60ch;
}
.cm-section-heading--center {
  text-align: center;
  margin-inline: auto;
}
.cm-section-heading--center .cm-prose { margin-inline: auto; }

/* ---------- Buttons ---------- */

.cm-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.65rem;
  padding: 0.95rem 1.6rem;
  font-family: var(--cm-font-body);
  font-size: var(--cm-text-sm);
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-decoration: none;
  border: 1px solid transparent;
  border-radius: 0;
  cursor: pointer;
  transition:
    transform var(--cm-dur-base) var(--cm-ease-out),
    background-color var(--cm-dur-base) var(--cm-ease-out),
    color var(--cm-dur-base) var(--cm-ease-out),
    border-color var(--cm-dur-base) var(--cm-ease-out);
  will-change: transform;
}

.cm-btn:focus-visible {
  outline: 2px solid var(--cm-accent);
  outline-offset: 4px;
}

.cm-btn__arrow { transition: transform var(--cm-dur-base) var(--cm-ease-out); }
.cm-btn:hover .cm-btn__arrow { transform: translateX(4px); }

.cm-btn--primary {
  background: var(--cm-ink);
  color: var(--cm-paper);
  border-color: var(--cm-ink);
}
.cm-btn--primary:hover { background: var(--cm-night); border-color: var(--cm-night); }

.cm-btn--primary-light {
  background: var(--cm-paper);
  color: var(--cm-ink);
  border-color: var(--cm-paper);
}
.cm-btn--primary-light:hover { background: var(--cm-paper-deep); border-color: var(--cm-paper-deep); }

.cm-btn--ghost {
  background: transparent;
  color: var(--cm-ink);
  border-color: var(--cm-ink);
}
.cm-btn--ghost:hover { background: var(--cm-ink); color: var(--cm-paper); }

.cm-btn--ghost-light {
  background: transparent;
  color: var(--cm-paper);
  border-color: rgba(250, 248, 245, 0.4);
}
.cm-btn--ghost-light:hover { background: var(--cm-paper); color: var(--cm-ink); border-color: var(--cm-paper); }

/* Header CTA — visible on top of the dark hero. White text/border, fills white on hover. */
.cm-btn--header-light {
  background: transparent;
  color: var(--cm-paper);
  border-color: rgba(250, 248, 245, 0.5);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.cm-btn--header-light:hover {
  background: var(--cm-paper);
  color: var(--cm-ink);
  border-color: var(--cm-paper);
}
/* When the header transitions to its scrolled state (dark bar over light page), invert. */
.cm-header.is-scrolled .cm-btn--header-light {
  border-color: rgba(250, 248, 245, 0.5);
  color: var(--cm-paper);
}
body:not(.has-3d-hero) .cm-header:not(.is-scrolled) .cm-btn--header-light {
  color: var(--cm-ink);
  border-color: var(--cm-ink);
}
body:not(.has-3d-hero) .cm-header:not(.is-scrolled) .cm-btn--header-light:hover {
  background: var(--cm-ink);
  color: var(--cm-paper);
}

/* ---------- Header ---------- */

.cm-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: var(--cm-z-header);
  padding-block: 1.4rem;
  transition: background-color var(--cm-dur-base) var(--cm-ease-out),
              backdrop-filter var(--cm-dur-base) var(--cm-ease-out),
              padding-block var(--cm-dur-base) var(--cm-ease-out);
  color: var(--cm-paper);
}
.cm-header.is-scrolled {
  padding-block: 0.85rem;
  background: rgba(13, 10, 7, 0.85);
  backdrop-filter: saturate(150%) blur(14px);
  -webkit-backdrop-filter: saturate(150%) blur(14px);
}

.has-3d-hero .cm-header { color: var(--cm-paper); }
body:not(.has-3d-hero) .cm-header { color: var(--cm-ink); }
body:not(.has-3d-hero) .cm-header.is-scrolled { color: var(--cm-paper); }

.cm-header__inner {
  display: grid;
  grid-template-columns: auto 1fr auto auto;
  align-items: center;
  gap: clamp(1rem, 3vw, 2.5rem);
}

.cm-brand {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  color: inherit;
  text-decoration: none;
  /* Same lift as the menu toggle so the wordmark stays tappable
     when the mobile menu is open. */
  position: relative;
  z-index: 51;
}
.cm-brand picture { display: block; line-height: 0; }
.cm-brand__logo {
  display: block;
  height: 38px;
  width: auto;
  max-width: 200px;
  object-fit: contain;
}
.cm-brand--footer .cm-brand__logo { height: 44px; max-width: 220px; }

.cm-nav__list {
  display: flex;
  align-items: center;
  gap: clamp(1rem, 2.5vw, 2.4rem);
  list-style: none;
  padding: 0;
  margin: 0;
}
.cm-nav__list a {
  font-size: var(--cm-text-sm);
  font-weight: 500;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  text-decoration: none;
  color: inherit;
  position: relative;
  padding-block: 0.4rem;
  transition: color var(--cm-dur-fast) var(--cm-ease-out);
}
.cm-nav__list a::after {
  content: '';
  position: absolute;
  left: 0; right: 0;
  bottom: 0;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: right;
  transition: transform var(--cm-dur-base) var(--cm-ease-out);
}
.cm-nav__list a:hover::after,
.cm-nav__list .current-menu-item > a::after,
.cm-nav__list a:focus-visible::after { transform: scaleX(1); transform-origin: left; }

.cm-header__cta { display: flex; align-items: center; gap: 1.2rem; }
.cm-header__btn { padding: 0.65rem 1.1rem; font-size: var(--cm-text-xs); }

.cm-menu-toggle {
  display: none;
  width: 44px; height: 44px;
  background: transparent;
  border: 0;
  cursor: pointer;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  padding: 0;
  /* When the mobile menu opens it covers the header. The toggle
     needs to ride above the menu so the user can tap it to close. */
  position: relative;
  z-index: 51;
  transition: color var(--cm-dur-fast) var(--cm-ease-out);
}
/* When the menu is open, force the toggle bars to paper white so
   they remain visible against the dark menu background — regardless
   of whether the page sits over a dark hero or a light page hero. */
.cm-menu-toggle.is-open { color: var(--cm-paper); }
.cm-menu-toggle__bar {
  display: block;
  width: 24px;
  height: 1px;
  background: currentColor;
  transition: transform var(--cm-dur-base) var(--cm-ease-out),
              opacity var(--cm-dur-fast) var(--cm-ease-out);
  margin-inline: auto;
}
.cm-menu-toggle.is-open .cm-menu-toggle__bar:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.cm-menu-toggle.is-open .cm-menu-toggle__bar:nth-child(2) { opacity: 0; }
.cm-menu-toggle.is-open .cm-menu-toggle__bar:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

.cm-mobile-menu {
  position: fixed;
  inset: 0;
  /* Use small-viewport height so the menu fits inside the visible
     area when iOS Safari's address bar is showing — 100vh would
     extend past it on first paint and cause the footer to be cut. */
  min-height: 100svh;
  height: 100svh;
  background: var(--cm-night);
  color: var(--cm-paper);
  /* Top: room for the header logo. Bottom: respect the home-bar
     safe area on notched devices. */
  padding: 5.5rem 1.75rem max(2rem, env(safe-area-inset-bottom)) 1.75rem;
  display: flex;
  flex-direction: column;
  /* Below the toggle button (51) but above all page content. The
     header itself has z-index 50; this matches so the menu replaces
     the header chrome visually while the toggle stays tappable. */
  z-index: 50;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--cm-dur-base) var(--cm-ease-out);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.cm-mobile-menu.is-open {
  opacity: 1;
  pointer-events: auto;
}
.cm-mobile-menu__nav {
  /* Fill the remaining space so the footer sits at the bottom and
     the items breathe within the available area. */
  flex: 1;
  display: flex;
  align-items: center;
}
.cm-mobile-menu__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  /* Belt-and-suspenders: explicitly set both flex-direction and the
     shorthand flex-flow, so a stray inline style or cached CSS can't
     accidentally lay items out horizontally. */
  flex-direction: column;
  flex-flow: column nowrap;
  gap: 1.6rem;
  width: 100%;
}
.cm-mobile-menu__list li {
  /* Hairline between items for an editorial menu feel. */
  border-bottom: 1px solid rgba(250, 248, 245, 0.08);
  padding-bottom: 1.6rem;
}
.cm-mobile-menu__list li:last-child { border-bottom: 0; padding-bottom: 0; }
.cm-mobile-menu__list a {
  font-family: var(--cm-font-display);
  font-size: clamp(1.75rem, 7vw, 2.4rem);
  font-weight: 400;
  letter-spacing: -0.01em;
  color: var(--cm-paper);
  text-decoration: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  /* Add a chevron arrow on each item via ::after for that "next page"
     affordance — pure CSS, no extra markup. */
}
.cm-mobile-menu__list a::after {
  content: '→';
  font-family: var(--cm-font-body);
  font-size: 1.1rem;
  color: rgba(250, 248, 245, 0.4);
  transition: transform var(--cm-dur-fast) var(--cm-ease-out), color var(--cm-dur-fast) var(--cm-ease-out);
}
.cm-mobile-menu__list a:hover::after,
.cm-mobile-menu__list a:active::after {
  transform: translateX(4px);
  color: var(--cm-paper);
}
.cm-mobile-menu__footer {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding-top: 1.5rem;
  border-top: 1px solid rgba(250, 248, 245, 0.15);
  flex-shrink: 0;
}
.cm-mobile-menu__email {
  font-size: var(--cm-text-base);
  color: rgba(250, 248, 245, 0.8);
  text-decoration: none;
  letter-spacing: 0.01em;
}
.cm-mobile-menu__email:hover { color: var(--cm-paper); }

/* ---------- Main ---------- */

.cm-main { padding-top: 0; }
body:not(.has-3d-hero) .cm-main { padding-top: 6rem; }

/* ---------- Career / Work With Us page ---------- */

.cm-page-hero--career {
  background: var(--cm-paper-deep);
  padding-block: clamp(7rem, 12vw, 10rem) clamp(2rem, 5vw, 4rem);
}

.cm-career-hero {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  gap: clamp(2rem, 5vw, 5rem);
  align-items: center;
}
.cm-career-hero__media {
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--cm-line);
}
.cm-career-hero__media > picture {
  display: block;
  width: 100%;
  height: 100%;
}
.cm-career-hero__media img {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center 40%;
}
.cm-career-hero__align {
  font-family: var(--cm-font-display);
  font-style: italic;
  font-size: var(--cm-text-xl);
  line-height: 1.4;
  color: var(--cm-accent-deep);
  margin: 1.5rem 0 0;
  max-width: 50ch;
}
.cm-career-hero__cta { margin-top: 2.5rem; padding: 1.05rem 2.2rem; font-size: 0.85rem; }

@media (max-width: 880px) {
  .cm-career-hero { grid-template-columns: 1fr; }
  .cm-career-hero__media {
    aspect-ratio: 4 / 5;
    max-width: 480px;
    margin-inline: auto;
  }
}

/* Vision pull-quote */
.cm-section--vision { padding-block: clamp(4rem, 9vw, 7rem); }
.cm-career-vision {
  margin: 0;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.5rem;
}
.cm-career-vision__mark {
  width: 32px; height: 24px;
  color: var(--cm-accent);
}
.cm-career-vision p {
  font-family: var(--cm-font-display);
  font-style: italic;
  font-weight: 300;
  font-size: clamp(1.6rem, 4vw, 2.4rem);
  line-height: 1.35;
  letter-spacing: -0.005em;
  color: var(--cm-paper);
  margin: 0;
  max-width: 24ch;
}
.cm-career-vision footer {
  font-size: var(--cm-text-xs);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(250, 248, 245, 0.55);
}

/* Roles grid */
.cm-roles {
  list-style: none;
  padding: 0; margin: 0;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  background: var(--cm-line);
  border: 1px solid var(--cm-line);
}
.cm-roles__item {
  background: var(--cm-paper);
  padding: clamp(2rem, 4vw, 3rem);
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
/* Make the last item span full width when there are 5 (so the row
   doesn't end with a half-empty cell). */
.cm-roles__item:last-child:nth-child(odd) {
  grid-column: span 2;
}
.cm-roles__num {
  font-family: var(--cm-font-mono);
  font-size: var(--cm-text-xs);
  letter-spacing: 0.08em;
  color: var(--cm-accent-deep);
}
.cm-roles__title {
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-xl);
  font-weight: 500;
  letter-spacing: -0.005em;
  margin: 0;
  line-height: 1.2;
}
.cm-roles__item p {
  margin: 0;
  font-size: var(--cm-text-base);
  color: var(--cm-ink-soft);
  line-height: 1.6;
  max-width: 50ch;
}
@media (max-width: 768px) {
  .cm-roles { grid-template-columns: 1fr; }
  .cm-roles__item:last-child:nth-child(odd) { grid-column: span 1; }
}

/* Apply form shell — same treatment as the appointment calendar */
.cm-section--apply { padding-block: clamp(3rem, 7vw, 6rem); }
.cm-apply-form {
  background: var(--cm-paper);
  border: 1px solid var(--cm-line);
  padding: clamp(1.5rem, 4vw, 2.5rem);
  margin-top: 2rem;
}
.cm-apply-form > *:first-child { margin-top: 0; }
.cm-apply-form > *:last-child { margin-bottom: 0; }

/* ---------- Legal pages (privacy, terms, refund, shipping) ---------- */

.cm-page--legal .cm-page-hero { padding-bottom: clamp(1rem, 3vw, 2rem); }

.cm-section--legal-body { padding-block: clamp(2rem, 5vw, 4rem) clamp(4rem, 8vw, 6rem); }

.cm-page--legal .cm-prose--page h2 {
  margin-top: 2.4em;
  font-size: clamp(1.4rem, 3.2vw, 1.8rem);
  border-top: 1px solid var(--cm-line);
  padding-top: 1.4em;
  font-weight: 500;
}
.cm-page--legal .cm-prose--page h2:first-of-type { border-top: 0; padding-top: 0; margin-top: 0; }
.cm-page--legal .cm-prose--page h3 {
  margin-top: 1.6em;
  font-size: clamp(1.1rem, 2.5vw, 1.35rem);
  font-weight: 500;
}
.cm-page--legal .cm-prose--page ul {
  padding-left: 1.4em;
  margin: 0 0 1.4em;
}
.cm-page--legal .cm-prose--page li {
  margin-bottom: 0.6em;
  line-height: 1.55;
}
.cm-page--legal .cm-prose--page strong { color: var(--cm-ink); }

.cm-legal__close {
  margin-top: 3rem;
  padding-top: 1.6rem;
  border-top: 1px solid var(--cm-line);
  font-size: var(--cm-text-base);
  color: var(--cm-ink-faint);
  font-style: italic;
}

/* ---------- Page hero (sub-pages) ---------- */

.cm-page-hero {
  padding: clamp(7rem, 12vw, 11rem) 0 clamp(3rem, 6vw, 5rem);
  background: var(--cm-paper);
}
.cm-page-hero--editorial {
  padding-bottom: clamp(2rem, 5vw, 4rem);
}

.cm-page__media {
  margin-bottom: clamp(3rem, 6vw, 5rem);
  aspect-ratio: 16 / 9;
  overflow: hidden;
}
.cm-page__thumb { width: 100%; height: 100%; object-fit: cover; }

/* ---------- Stats ---------- */

.cm-section--stats {
  padding-block: clamp(3rem, 7vw, 6rem);
  border-block: 1px solid var(--cm-line);
}
.cm-stats {
  list-style: none;
  padding: 0; margin: 0;
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 1px;
  background: var(--cm-line);
}
.cm-stats--four { grid-template-columns: repeat(4, 1fr); }
.cm-stats__item {
  background: var(--cm-paper);
  padding: clamp(1.4rem, 3vw, 2.4rem) 1rem;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
.cm-stats__value {
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-3xl);
  font-weight: 400;
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--cm-ink);
  font-feature-settings: 'tnum';
}
.cm-stats__suffix { color: var(--cm-accent); }
.cm-stats__label {
  font-size: var(--cm-text-xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--cm-ink-faint);
}

@media (max-width: 960px) {
  .cm-stats { grid-template-columns: repeat(3, 1fr); }
  .cm-stats--four { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
  .cm-stats { grid-template-columns: repeat(2, 1fr); }
  .cm-stats--four { grid-template-columns: repeat(2, 1fr); }
}

/* ---------- Services grid ---------- */

.cm-services {
  list-style: none;
  padding: 0; margin: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--cm-line);
  border: 1px solid var(--cm-line);
}
.cm-services__item { background: var(--cm-paper); }
.cm-services__card {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding: clamp(2rem, 4vw, 3.5rem);
  height: 100%;
  text-decoration: none;
  color: var(--cm-ink);
  position: relative;
  transition: background-color var(--cm-dur-base) var(--cm-ease-out);
}
.cm-services__card:hover {
  background: var(--cm-paper-deep);
}
.cm-services__num {
  font-family: var(--cm-font-mono);
  font-size: var(--cm-text-xs);
  letter-spacing: 0.08em;
  color: var(--cm-ink-faint);
  margin-bottom: 1rem;
}
.cm-services__icon {
  margin-bottom: 1.5rem;
  color: var(--cm-accent-deep);
}
.cm-services__title {
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-xl);
  font-weight: 500;
  letter-spacing: -0.005em;
  margin: 0;
  line-height: 1.2;
}
.cm-services__desc {
  font-size: var(--cm-text-base);
  color: var(--cm-ink-soft);
  margin: 0;
  line-height: 1.55;
}
.cm-services__more {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin-top: auto;
  padding-top: 2rem;
  font-size: var(--cm-text-xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--cm-ink);
  transition: gap var(--cm-dur-base) var(--cm-ease-out);
}
.cm-services__card:hover .cm-services__more { gap: 0.7rem; }

@media (max-width: 960px) { .cm-services { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .cm-services { grid-template-columns: 1fr; } }

/* ---------- Our Clicks (wedding photo gallery) ---------- */

.cm-section--clicks { background: var(--cm-paper-deep); }

.cm-clicks {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  grid-auto-rows: 220px;
  grid-auto-flow: dense;
  gap: clamp(0.6rem, 1.4vw, 1.25rem);
  margin-top: clamp(2rem, 5vw, 4rem);
}

.cm-clicks__cell {
  margin: 0;
  position: relative;
  overflow: hidden;
  background: var(--cm-line);
  grid-column: span 2;
  grid-row: span 1;
}
.cm-clicks__cell--span2 { grid-column: span 4; }
.cm-clicks__cell--portrait { grid-column: span 2; grid-row: span 2; }
.cm-clicks__cell--rowspan2 { grid-row: span 2; }
.cm-clicks__cell--landscape { grid-column: span 2; }

.cm-clicks__cell picture,
.cm-clicks__cell img {
  display: block;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.cm-clicks__cell img {
  transition: transform 1.2s var(--cm-ease-out), filter 0.6s var(--cm-ease-out);
  filter: saturate(0.95);
}
.cm-clicks__cell:hover img {
  transform: scale(1.04);
  filter: saturate(1.1);
}

.cm-clicks__cta { text-align: center; margin-top: clamp(2.5rem, 5vw, 4rem); }

@media (max-width: 1024px) {
  .cm-clicks {
    grid-template-columns: repeat(4, 1fr);
    grid-auto-rows: 180px;
  }
  .cm-clicks__cell { grid-column: span 2; }
  .cm-clicks__cell--span2 { grid-column: span 4; }
  .cm-clicks__cell--portrait { grid-column: span 2; grid-row: span 2; }
}
@media (max-width: 600px) {
  .cm-clicks {
    grid-template-columns: repeat(2, 1fr);
    grid-auto-rows: 160px;
  }
  .cm-clicks__cell,
  .cm-clicks__cell--span2,
  .cm-clicks__cell--portrait,
  .cm-clicks__cell--landscape {
    grid-column: span 2;
    grid-row: span 1;
  }
  .cm-clicks__cell--portrait,
  .cm-clicks__cell--rowspan2 {
    grid-row: span 2;
  }
}

/* ---------- Films ---------- */

.cm-films {
  list-style: none;
  padding: 0; margin: 0;
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: clamp(1.5rem, 3vw, 2.5rem);
}
.cm-films__item { grid-column: span 3; }
.cm-films__item--feature { grid-column: span 3; }
.cm-films__card {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  width: 100%;
  background: transparent;
  border: 0;
  padding: 0;
  cursor: pointer;
  text-align: left;
  color: inherit;
}
.cm-films__poster {
  position: relative;
  overflow: hidden;
  aspect-ratio: 16 / 9;
}
.cm-films__poster .cm-placeholder,
.cm-films__poster .cm-films__thumb {
  position: absolute;
  inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform var(--cm-dur-slow) var(--cm-ease-out);
}
.cm-films__card:hover .cm-films__poster .cm-placeholder,
.cm-films__card:hover .cm-films__poster .cm-films__thumb { transform: scale(1.04); }

.cm-films__play {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 78px; height: 78px;
  border-radius: 50%;
  background: rgba(250, 248, 245, 0.9);
  color: var(--cm-ink);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: transform var(--cm-dur-base) var(--cm-ease-out);
}
.cm-films__card:hover .cm-films__play { transform: translate(-50%, -50%) scale(1.08); }
.cm-films__play svg { margin-left: 4px; }

.cm-films__cat {
  display: block;
  font-size: var(--cm-text-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cm-ink-faint);
}
.cm-films__title {
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-xl);
  font-weight: 400;
  letter-spacing: -0.005em;
  margin: 0.4rem 0 0;
  line-height: 1.2;
}
.cm-films__cta { text-align: center; margin-top: clamp(2rem, 5vw, 4rem); }

@media (max-width: 768px) {
  .cm-films { grid-template-columns: 1fr; }
  .cm-films__item, .cm-films__item--feature { grid-column: span 1; }
}

/* ---------- Testimonials ---------- */

.cm-section--testimonials {
  background: var(--cm-paper-deep);
}
.cm-testimonials {
  position: relative;
  margin-top: clamp(2rem, 5vw, 4rem);
}
.cm-testimonials__track {
  position: relative;
  min-height: 280px;
}
.cm-testimonials__slide {
  position: absolute;
  inset: 0;
  max-width: 760px;
  margin-inline: auto;
  text-align: center;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity var(--cm-dur-slow) var(--cm-ease-out),
              transform var(--cm-dur-slow) var(--cm-ease-out);
  pointer-events: none;
}
.cm-testimonials__slide.is-active {
  opacity: 1;
  transform: translateY(0);
  position: relative;
  pointer-events: auto;
}
.cm-testimonials__quote {
  margin: 0;
  padding: 0;
  border: 0;
}
.cm-testimonials__mark {
  width: 32px; height: 24px;
  color: var(--cm-accent);
  margin: 0 auto 1.5rem;
}
.cm-testimonials__quote p {
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-2xl);
  font-weight: 400;
  font-style: italic;
  line-height: 1.4;
  letter-spacing: -0.005em;
  color: var(--cm-ink);
  margin: 0;
}
.cm-testimonials__attr {
  margin-top: 2rem;
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  align-items: center;
}
.cm-testimonials__author {
  font-style: normal;
  font-size: var(--cm-text-base);
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--cm-ink);
}
.cm-testimonials__role {
  font-size: var(--cm-text-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cm-ink-faint);
}

.cm-testimonials__controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  margin-top: 2.5rem;
}
.cm-testimonials__btn {
  width: 44px; height: 44px;
  border-radius: 50%;
  border: 1px solid var(--cm-line);
  background: var(--cm-paper);
  color: var(--cm-ink);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background-color var(--cm-dur-fast) var(--cm-ease-out),
              border-color var(--cm-dur-fast) var(--cm-ease-out);
}
.cm-testimonials__btn:hover { background: var(--cm-ink); color: var(--cm-paper); border-color: var(--cm-ink); }

.cm-testimonials__dots {
  display: flex;
  gap: 0.5rem;
}
.cm-testimonials__dot {
  /* Visual is the 8px circle; the actual hit area is 36×36 (set via
     padding) so it's tappable on touch devices. The padding is
     transparent — only the inner background shows as the dot. */
  width: 36px; height: 36px;
  border-radius: 50%;
  border: 0;
  background: transparent;
  cursor: pointer;
  padding: 0;
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: transform var(--cm-dur-fast) var(--cm-ease-out);
}
.cm-testimonials__dot::before {
  content: '';
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--cm-line);
  transition: background-color var(--cm-dur-fast) var(--cm-ease-out),
              transform var(--cm-dur-fast) var(--cm-ease-out);
}
.cm-testimonials__dot.is-active::before { background: var(--cm-ink); transform: scale(1.3); }
.cm-studio-grid__item .cm-placeholder { flex: 1; min-height: 220px; }

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

.cm-caption {
  font-size: var(--cm-text-sm);
  font-style: italic;
  color: var(--cm-ink-faint);
}

/* ---------- Testimonials page — featured review video ---------- */

.cm-section--featured-review {
  padding-top: clamp(2rem, 5vw, 4rem);
  padding-bottom: clamp(3rem, 6vw, 5rem);
}
.cm-review-feature {
  display: block;
  width: 100%;
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
  cursor: pointer;
  text-align: left;
}
.cm-review-feature .cm-films__poster {
  position: relative;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--cm-night);
}
.cm-films__play--xl {
  width: 96px; height: 96px;
}

/* ---------- Vertical Shorts grid (reaction reels) ---------- */

.cm-section--reels { background: var(--cm-paper-deep); }

.cm-reels {
  list-style: none;
  padding: 0; margin: 0;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: clamp(1rem, 2.5vw, 2rem);
}

.cm-reels__item { display: flex; }
.cm-reels__card {
  display: flex;
  flex-direction: column;
  width: 100%;
  background: transparent;
  border: 0;
  padding: 0;
  cursor: pointer;
  text-align: left;
  color: inherit;
}

.cm-reels__poster {
  position: relative;
  aspect-ratio: 9 / 16;
  overflow: hidden;
  background: var(--cm-night);
  margin-bottom: 1rem;
}
.cm-reels__thumb {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--cm-dur-slow) var(--cm-ease-out);
}
.cm-reels__card:hover .cm-reels__thumb { transform: scale(1.06); }

.cm-reels__play {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 60px; height: 60px;
  border-radius: 50%;
  background: rgba(250, 248, 245, 0.88);
  color: var(--cm-ink);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: transform var(--cm-dur-base) var(--cm-ease-out);
}
.cm-reels__play svg { margin-left: 3px; }
.cm-reels__card:hover .cm-reels__play { transform: translate(-50%, -50%) scale(1.08); }

.cm-reels__meta {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
.cm-reels__num {
  font-family: var(--cm-font-mono);
  font-size: var(--cm-text-xs);
  letter-spacing: 0.08em;
  color: var(--cm-ink-faint);
}
.cm-reels__title {
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-lg);
  font-weight: 500;
  letter-spacing: -0.005em;
  margin: 0;
  line-height: 1.25;
}
.cm-reels__caption {
  margin: 0;
  font-size: var(--cm-text-sm);
  color: var(--cm-ink-soft);
  line-height: 1.5;
}

/* When iframe replaces the poster, keep aspect ratio. */
.cm-reels__poster iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

@media (max-width: 1024px) {
  .cm-reels { grid-template-columns: repeat(3, 1fr); }
  .cm-reels__item:nth-child(n+4) { display: none; }
  /* But still render all 5 with horizontal scroll on tablet/mobile. */
}

@media (max-width: 880px) {
  .cm-reels {
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: 70%;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-padding: var(--cm-gutter);
    padding-bottom: 1rem;
    margin-inline: calc(var(--cm-gutter) * -1);
    padding-inline: var(--cm-gutter);
    -webkit-overflow-scrolling: touch;
  }
  .cm-reels__item { scroll-snap-align: start; display: flex; }
  .cm-reels__item:nth-child(n+4) { display: flex; }
}

@media (max-width: 480px) {
  .cm-reels { grid-auto-columns: 78%; }
}

/* ---------- Written review quotes (testimonials page) ---------- */

.cm-review-quotes {
  list-style: none;
  padding: 0; margin: clamp(2rem, 5vw, 4rem) 0 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(1.5rem, 3vw, 2.5rem);
}
.cm-review-quotes__item {
  background: var(--cm-paper);
  border: 1px solid var(--cm-line);
  padding: clamp(1.6rem, 3vw, 2.4rem);
  display: flex;
  flex-direction: column;
  gap: 1.2rem;
}
.cm-review-quotes__mark {
  width: 28px; height: 21px;
  color: var(--cm-accent);
}
.cm-review-quotes__item blockquote {
  margin: 0;
  font-family: var(--cm-font-display);
  font-style: italic;
  font-size: var(--cm-text-lg);
  line-height: 1.5;
  color: var(--cm-ink);
}
.cm-review-quotes__item blockquote p { margin: 0; }
.cm-review-quotes__item footer {
  margin-top: auto;
  padding-top: 0.6rem;
  border-top: 1px solid var(--cm-line);
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}
.cm-review-quotes__item cite {
  font-style: normal;
  font-size: var(--cm-text-sm);
  font-weight: 600;
  color: var(--cm-ink);
}
.cm-review-quotes__item span {
  font-size: var(--cm-text-xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--cm-ink-faint);
}
@media (max-width: 880px) { .cm-review-quotes { grid-template-columns: 1fr; } }

/* ---------- Booking glimpse (homepage) ---------- */

.cm-section--booking { padding-block: clamp(4rem, 9vw, 8rem); }

.cm-booking {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: clamp(2rem, 6vw, 6rem);
}

.cm-booking__media {
  position: relative;
  aspect-ratio: 4 / 5;
  max-width: 560px;
  margin-inline: auto;
  width: 100%;
}
.cm-booking__photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.cm-booking__photo--accent {
  width: 50%;
  height: 50%;
  inset: auto -2rem -2rem auto;
  border: 8px solid var(--cm-paper);
  display: none;
}

.cm-booking__content { max-width: 560px; }

.cm-booking__list {
  list-style: none;
  padding: 0;
  margin: 2rem 0 2.4rem;
  display: grid;
  gap: 0.8rem;
}
.cm-booking__list li {
  display: flex;
  gap: 0.8rem;
  align-items: flex-start;
  font-size: var(--cm-text-base);
  color: var(--cm-ink-soft);
  line-height: 1.5;
}
.cm-booking__check {
  flex-shrink: 0;
  color: var(--cm-accent);
  margin-top: 0.15em;
}

.cm-booking__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1.2rem 2rem;
  margin-top: 1rem;
}
.cm-booking__secondary {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: var(--cm-text-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cm-ink);
  border-bottom: 1px solid var(--cm-ink);
  padding-bottom: 0.4rem;
  transition: gap var(--cm-dur-base) var(--cm-ease-out);
}
.cm-booking__secondary:hover { gap: 0.8rem; }

@media (min-width: 1024px) {
  .cm-booking__photo--accent { display: block; }
}
@media (max-width: 880px) {
  .cm-booking { grid-template-columns: 1fr; }
  .cm-booking__media { aspect-ratio: 4 / 3; max-width: 100%; }
  .cm-booking__content { max-width: 100%; }
}

/* ---------- Appointment page — trust strip ---------- */

.cm-trust-strip {
  background: var(--cm-ink);
  color: var(--cm-paper);
  padding-block: clamp(1.5rem, 3vw, 2rem);
}
.cm-trust-strip__list {
  list-style: none;
  margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem;
  text-align: center;
}
.cm-trust-strip__list li {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.3rem;
}
.cm-trust-strip__list strong {
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-2xl);
  font-weight: 400;
  letter-spacing: -0.02em;
  color: var(--cm-paper);
  font-feature-settings: 'tnum';
}
.cm-trust-strip__list strong.cm-trust-strip__text {
  font-style: italic;
  letter-spacing: -0.005em;
}
.cm-trust-strip__list span {
  font-size: var(--cm-text-xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(250, 248, 245, 0.65);
}
@media (max-width: 768px) {
  .cm-trust-strip__list { grid-template-columns: repeat(2, 1fr); gap: 1.25rem; }
  .cm-trust-strip__list strong { font-size: var(--cm-text-xl); }
}

/* ---------- Appointment hero CTAs ---------- */
.cm-appt-hero__cta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem 2rem;
  margin-top: 2rem;
}
.cm-appt-hero__primary { padding: 1.05rem 2.2rem; font-size: 0.85rem; }

.cm-appt-hero__proof {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin: 1.5rem 0 0;
  padding: 0.5rem 0.9rem;
  background: rgba(184, 149, 106, 0.12);
  border: 1px solid rgba(184, 149, 106, 0.3);
  font-size: var(--cm-text-xs);
  letter-spacing: 0.04em;
  color: var(--cm-accent-deep);
}
.cm-appt-hero__proof svg { color: var(--cm-accent); flex-shrink: 0; }

/* ---------- Why us ---------- */
.cm-why {
  list-style: none;
  padding: 0; margin: 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--cm-line);
  border: 1px solid var(--cm-line);
}
.cm-why__item {
  background: var(--cm-paper);
  padding: clamp(2rem, 4vw, 3rem);
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.cm-why__num {
  font-family: var(--cm-font-mono);
  font-size: var(--cm-text-xs);
  letter-spacing: 0.08em;
  color: var(--cm-accent-deep);
}
.cm-why__title {
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-xl);
  font-weight: 500;
  letter-spacing: -0.005em;
  margin: 0;
  line-height: 1.2;
}
.cm-why__item p {
  margin: 0;
  font-size: var(--cm-text-base);
  color: var(--cm-ink-soft);
  line-height: 1.55;
}
@media (max-width: 1024px) { .cm-why { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px)  { .cm-why { grid-template-columns: 1fr; } }

/* ---------- Recent work proof grid (smaller variant of clicks) ---------- */
.cm-section--proof { background: var(--cm-paper-deep); }
.cm-proof-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  grid-auto-rows: 220px;
  gap: clamp(0.6rem, 1.4vw, 1.25rem);
  margin-top: clamp(2rem, 5vw, 4rem);
}
.cm-proof-grid__cell {
  margin: 0;
  position: relative;
  overflow: hidden;
  background: var(--cm-line);
  grid-column: span 2;
}
.cm-proof-grid__cell--span2     { grid-column: span 4; }
.cm-proof-grid__cell--rowspan2  { grid-row: span 2; }
.cm-proof-grid__cell--portrait  { grid-column: span 2; grid-row: span 2; }
.cm-proof-grid__cell--landscape { grid-column: span 2; }
.cm-proof-grid__cell picture,
.cm-proof-grid__cell img {
  display: block;
  position: absolute;
  inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
}
.cm-proof-grid__cell img {
  transition: transform 1s var(--cm-ease-out);
}
.cm-proof-grid__cell:hover img { transform: scale(1.04); }
.cm-proof__cta { text-align: center; margin-top: clamp(2rem, 5vw, 3.5rem); }

@media (max-width: 1024px) {
  .cm-proof-grid { grid-template-columns: repeat(4, 1fr); grid-auto-rows: 180px; }
  .cm-proof-grid__cell { grid-column: span 2; }
  .cm-proof-grid__cell--span2 { grid-column: span 4; }
  .cm-proof-grid__cell--portrait { grid-column: span 2; grid-row: span 2; }
}
@media (max-width: 600px) {
  .cm-proof-grid { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 160px; }
  .cm-proof-grid__cell,
  .cm-proof-grid__cell--span2,
  .cm-proof-grid__cell--portrait,
  .cm-proof-grid__cell--landscape {
    grid-column: span 2;
    grid-row: span 1;
  }
  .cm-proof-grid__cell--portrait,
  .cm-proof-grid__cell--rowspan2 { grid-row: span 2; }
}

/* ---------- Section variant: soft dark (between bright sections) ---------- */
.cm-section--dark-soft {
  background: var(--cm-night-soft);
  color: var(--cm-paper);
}
.cm-section--dark-soft .cm-display,
.cm-section--dark-soft h2 { color: var(--cm-paper); }
.cm-section--dark-soft .cm-eyebrow--light { color: rgba(250, 248, 245, 0.65); }

/* ---------- Process steps ---------- */
.cm-process {
  list-style: none;
  padding: 0; margin: clamp(2rem, 5vw, 4rem) 0 0;
  counter-reset: step;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(1.5rem, 3vw, 2.5rem);
}
.cm-process__step {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding: clamp(1.6rem, 3vw, 2.4rem);
  background: var(--cm-paper);
  border-top: 1px solid var(--cm-ink);
  position: relative;
}
.cm-process__num {
  width: 44px; height: 44px;
  border-radius: 50%;
  background: var(--cm-ink);
  color: var(--cm-paper);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--cm-font-display);
  font-size: 1.4rem;
  font-weight: 500;
  position: absolute;
  top: -22px;
  left: clamp(1.6rem, 3vw, 2.4rem);
}
.cm-process__step h3 {
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-xl);
  font-weight: 500;
  margin: 0.6rem 0 0;
  letter-spacing: -0.005em;
  line-height: 1.2;
}
.cm-process__step p {
  margin: 0;
  font-size: var(--cm-text-base);
  color: var(--cm-ink-soft);
  line-height: 1.55;
}
@media (max-width: 768px) { .cm-process { grid-template-columns: 1fr; } }

/* ---------- FAQ ---------- */
.cm-faq {
  margin-top: clamp(2rem, 5vw, 3.5rem);
  border-top: 1px solid var(--cm-line);
}
.cm-faq__item {
  border-bottom: 1px solid var(--cm-line);
  padding: 0;
}
.cm-faq__item summary {
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: 1.4rem 0;
  cursor: pointer;
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-lg);
  font-weight: 500;
  letter-spacing: -0.005em;
  color: var(--cm-ink);
  transition: color var(--cm-dur-fast) var(--cm-ease-out);
}
.cm-faq__item summary:hover { color: var(--cm-accent-deep); }
.cm-faq__item summary::-webkit-details-marker { display: none; }
.cm-faq__item summary svg {
  flex-shrink: 0;
  color: var(--cm-ink-faint);
  transition: transform var(--cm-dur-base) var(--cm-ease-out);
}
.cm-faq__item[open] summary svg { transform: rotate(180deg); }
.cm-faq__item p {
  margin: 0;
  padding: 0 0 1.6rem;
  font-size: var(--cm-text-base);
  color: var(--cm-ink-soft);
  line-height: 1.65;
  max-width: 60ch;
}
.cm-faq__item p a {
  color: var(--cm-accent-deep);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ---------- Appointment page ---------- */

.cm-page-hero--appointment {
  background: var(--cm-paper-deep);
  padding-block: clamp(7rem, 12vw, 10rem) clamp(2rem, 5vw, 4rem);
}
.cm-appt-hero {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  gap: clamp(2rem, 5vw, 5rem);
  align-items: center;
}
.cm-appt-hero__media {
  aspect-ratio: 3 / 4;
  overflow: hidden;
  background: var(--cm-line);
}
/* The <picture> element wraps the <img>. By default it's inline,
   so an inner `height: 100%` resolves against the picture (which
   has auto height = content height) instead of the container —
   breaking object-fit. Forcing picture to block + 100% × 100%
   makes the IMG correctly fill the container. */
.cm-appt-hero__media > picture {
  display: block;
  width: 100%;
  height: 100%;
}
.cm-appt-hero__media img {
  width: 100%; height: 100%;
  object-fit: cover;
  /* Source photo is a tall portrait (5366×8045) with the subject's
     face in the upper-third. Bias the crop toward the top so the
     face stays in frame at every aspect-ratio. */
  object-position: center 25%;
}
.cm-appt-hero__list {
  list-style: none;
  padding: 0;
  margin: 1.5rem 0 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.9rem 1.4rem;
}
.cm-appt-hero__list li {
  display: flex;
  gap: 0.6rem;
  align-items: flex-start;
  font-size: var(--cm-text-sm);
  color: var(--cm-ink-soft);
}
.cm-appt-hero__list svg {
  flex-shrink: 0;
  color: var(--cm-accent);
  margin-top: 0.2em;
}

@media (max-width: 880px) {
  .cm-appt-hero { grid-template-columns: 1fr; }
  /* Stay portrait on mobile so the tall source photo doesn't get
     letter-cropped down to a strip. 4:5 keeps the subject visible
     while staying compact enough not to dominate the page. */
  .cm-appt-hero__media { aspect-ratio: 4 / 5; max-width: 480px; margin-inline: auto; }
  .cm-appt-hero__list { grid-template-columns: 1fr; }
}

/* Calendar shell — Fluent Booking output sits inside this card. */
.cm-section--calendar { padding-block: clamp(3rem, 7vw, 6rem); }
.cm-appt-calendar {
  background: var(--cm-paper);
  border: 1px solid var(--cm-line);
  padding: clamp(1.5rem, 4vw, 2.5rem);
  margin-top: 2rem;
}
.cm-appt-calendar > *:first-child { margin-top: 0; }
.cm-appt-calendar > *:last-child { margin-bottom: 0; }

.cm-appt-calendar__missing {
  text-align: center;
  padding: 2rem;
  border: 1px dashed var(--cm-accent);
  background: var(--cm-paper-deep);
  font-size: var(--cm-text-sm);
  color: var(--cm-ink-soft);
}
.cm-appt-calendar__missing code {
  font-family: var(--cm-font-mono);
  background: var(--cm-paper);
  padding: 0.2em 0.4em;
  border: 1px solid var(--cm-line);
  font-size: 0.9em;
}

/* Explore Our Works — two-card promo on the appointment page. */
.cm-section--explore { background: var(--cm-paper-deep); }
.cm-appt-explore {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1.5rem, 3vw, 2.5rem);
  margin-top: clamp(2rem, 4vw, 3rem);
}
.cm-appt-explore__card {
  display: flex;
  flex-direction: column;
  background: var(--cm-paper);
  text-decoration: none;
  color: var(--cm-ink);
  overflow: hidden;
  transition: transform var(--cm-dur-base) var(--cm-ease-out),
              box-shadow var(--cm-dur-base) var(--cm-ease-out);
}
.cm-appt-explore__card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 32px var(--cm-shadow);
}
.cm-appt-explore__media {
  aspect-ratio: 16 / 10;
  overflow: hidden;
}
.cm-appt-explore__media > picture {
  display: block;
  width: 100%;
  height: 100%;
}
.cm-appt-explore__media img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform var(--cm-dur-slow) var(--cm-ease-out);
}
.cm-appt-explore__card:hover .cm-appt-explore__media img { transform: scale(1.04); }
.cm-appt-explore__body {
  padding: clamp(1.4rem, 3vw, 2rem);
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  flex: 1;
}
.cm-appt-explore__title {
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-xl);
  font-weight: 500;
  margin: 0.2rem 0 0;
  letter-spacing: -0.005em;
}
.cm-appt-explore__body p {
  margin: 0;
  color: var(--cm-ink-soft);
  font-size: var(--cm-text-base);
  line-height: 1.55;
}
.cm-appt-explore__more {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin-top: auto;
  padding-top: 1rem;
  font-size: var(--cm-text-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cm-ink);
  transition: gap var(--cm-dur-base) var(--cm-ease-out);
}
.cm-appt-explore__card:hover .cm-appt-explore__more { gap: 0.8rem; }

@media (max-width: 768px) {
  .cm-appt-explore { grid-template-columns: 1fr; }
}

/* ---------- Final CTA ---------- */

.cm-cta { text-align: center; }
.cm-cta__actions {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 1rem;
  justify-content: center;
  margin-top: 2.5rem;
}

/* ---------- Approach (about page) ---------- */

.cm-approach {
  list-style: none;
  padding: 0; margin: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(2rem, 4vw, 4rem);
}
.cm-approach__item {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  border-top: 1px solid var(--cm-ink);
  padding-top: 1.5rem;
}
.cm-approach__num {
  font-family: var(--cm-font-mono);
  font-size: var(--cm-text-xs);
  letter-spacing: 0.08em;
  color: var(--cm-ink-faint);
}
.cm-approach__title {
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-xl);
  margin: 0;
  font-weight: 500;
  letter-spacing: -0.005em;
}
.cm-approach__item p {
  margin: 0;
  font-size: var(--cm-text-base);
  color: var(--cm-ink-soft);
  line-height: 1.6;
}
@media (max-width: 768px) { .cm-approach { grid-template-columns: 1fr; } }

/* Recognition list */
.cm-recognition {
  list-style: none;
  padding: 0; margin: clamp(2rem, 5vw, 3rem) 0 0;
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-2xl);
  line-height: 1.4;
  color: var(--cm-ink);
}
.cm-recognition li {
  display: flex;
  gap: 1rem;
  align-items: baseline;
  padding-block: 1rem;
  border-bottom: 1px solid var(--cm-line);
}
.cm-recognition__bullet { color: var(--cm-accent); font-size: 2rem; line-height: 1; }

/* ---------- Service detail blocks ---------- */

.cm-service-block {
  display: grid;
  grid-template-columns: auto 1fr 1fr;
  gap: clamp(2rem, 5vw, 5rem);
  align-items: start;
  padding-block: clamp(3rem, 6vw, 5rem);
  border-top: 1px solid var(--cm-line);
}
.cm-service-block:first-of-type { border-top: 0; }
.cm-service-block__num {
  font-family: var(--cm-font-mono);
  font-size: var(--cm-text-sm);
  color: var(--cm-ink-faint);
  letter-spacing: 0.08em;
}
.cm-service-block__media .cm-placeholder { aspect-ratio: 4 / 5; }
.cm-service-block__content h2 { margin: 0 0 1rem; }
.cm-service-block__cta {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin-top: 1.6rem;
  font-size: var(--cm-text-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cm-ink);
  text-decoration: none;
  border-bottom: 1px solid var(--cm-ink);
  padding-bottom: 0.4rem;
  transition: gap var(--cm-dur-base) var(--cm-ease-out);
}
.cm-service-block__cta:hover { gap: 0.8rem; }

@media (max-width: 768px) {
  .cm-service-block {
    grid-template-columns: 1fr;
  }
}

/* ---------- Portfolio ---------- */

.cm-filters {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-bottom: clamp(2rem, 5vw, 4rem);
  justify-content: center;
}
.cm-filters__btn {
  background: transparent;
  border: 1px solid var(--cm-line);
  padding: 0.7rem 1.3rem;
  font-size: var(--cm-text-xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  cursor: pointer;
  color: var(--cm-ink);
  transition: background-color var(--cm-dur-fast) var(--cm-ease-out),
              border-color var(--cm-dur-fast) var(--cm-ease-out),
              color var(--cm-dur-fast) var(--cm-ease-out);
}
.cm-filters__btn:hover,
.cm-filters__btn.is-active {
  background: var(--cm-ink);
  color: var(--cm-paper);
  border-color: var(--cm-ink);
}

.cm-portfolio {
  list-style: none;
  padding: 0; margin: 0;
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  grid-auto-flow: dense;
  gap: clamp(0.5rem, 1.5vw, 1.25rem);
}

.cm-portfolio__item.is-hidden { display: none; }

.cm-portfolio__card {
  position: relative;
  width: 100%; height: 100%;
  background: transparent;
  border: 0;
  padding: 0;
  cursor: pointer;
  overflow: hidden;
}
.cm-portfolio__card .cm-placeholder {
  width: 100%; height: 100%;
  transition: transform var(--cm-dur-slow) var(--cm-ease-out);
}
.cm-portfolio__card:hover .cm-placeholder { transform: scale(1.04); }

.cm-portfolio__overlay {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 1.5rem;
  background: linear-gradient(180deg, transparent 30%, rgba(13, 10, 7, 0.7) 100%);
  color: var(--cm-paper);
  opacity: 0;
  transition: opacity var(--cm-dur-base) var(--cm-ease-out);
}
.cm-portfolio__card:hover .cm-portfolio__overlay,
.cm-portfolio__card:focus-visible .cm-portfolio__overlay { opacity: 1; }

.cm-portfolio__cat {
  font-size: var(--cm-text-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  opacity: 0.85;
}
.cm-portfolio__title {
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-xl);
  margin-top: 0.4rem;
  font-weight: 400;
}

.cm-portfolio__more { text-align: center; margin-top: clamp(2rem, 5vw, 4rem); }

@media (max-width: 960px) {
}
@media (max-width: 600px) {
  .cm-portfolio { grid-template-columns: 1fr; }
  .cm-portfolio__item--tall, .cm-portfolio__item--wide, .cm-portfolio__item--square {
    grid-column: span 1;
  }
}

/* Lightbox */
.cm-lightbox {
  position: fixed;
  inset: 0;
  background: rgba(13, 10, 7, 0.94);
  z-index: var(--cm-z-modal);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem;
  color: var(--cm-paper);
}
.cm-lightbox[hidden] { display: none; }
.cm-lightbox__close {
  position: absolute;
  top: 1.5rem; right: 1.5rem;
  width: 44px; height: 44px;
  border-radius: 50%;
  background: rgba(250, 248, 245, 0.1);
  border: 1px solid rgba(250, 248, 245, 0.3);
  color: var(--cm-paper);
  cursor: pointer;
}
.cm-lightbox__inner {
  display: grid;
  gap: 1.5rem;
  max-width: 1100px;
  width: 100%;
}
.cm-lightbox__media {
  aspect-ratio: 16 / 10;
  background: rgba(250, 248, 245, 0.05);
  display: flex;
  align-items: center;
  justify-content: center;
}
.cm-lightbox__cat {
  font-size: var(--cm-text-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  opacity: 0.7;
}
.cm-lightbox__title {
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-2xl);
  font-weight: 400;
  margin: 0.4rem 0 0;
}

/* ---------- Contact ---------- */

.cm-grid--contact {
  grid-template-columns: 0.9fr 1.4fr;
  align-items: start;
  gap: clamp(2rem, 6vw, 6rem);
}
@media (max-width: 960px) {
  .cm-grid--contact { grid-template-columns: 1fr; }
}

.cm-contact-info { position: sticky; top: 6rem; }
.cm-contact-info__list { margin: 2rem 0; padding: 0; }
.cm-contact-info__row {
  display: flex;
  gap: 1.5rem;
  align-items: baseline;
  padding-block: 1rem;
  border-bottom: 1px solid var(--cm-line);
}
.cm-contact-info__row dt {
  flex: 0 0 6rem;
  font-size: var(--cm-text-xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--cm-ink-faint);
}
.cm-contact-info__row dd {
  margin: 0;
  font-size: var(--cm-text-base);
  color: var(--cm-ink);
  line-height: 1.5;
}
.cm-contact-info__link { color: var(--cm-ink); border-bottom: 1px solid var(--cm-line); }
.cm-contact-info__social { padding-top: 2rem; border-top: 1px solid var(--cm-line); }

.cm-form { display: flex; flex-direction: column; gap: 1.5rem; margin-top: 2rem; }
.cm-form__row { display: grid; gap: 1.5rem; }
.cm-form__row--two { grid-template-columns: 1fr 1fr; }
@media (max-width: 600px) { .cm-form__row--two { grid-template-columns: 1fr; } }

.cm-form__field {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
.cm-form__label {
  font-size: var(--cm-text-xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--cm-ink-faint);
}
.cm-form__req { color: var(--cm-accent); }
.cm-form__field input,
.cm-form__field select,
.cm-form__field textarea {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--cm-line);
  padding: 0.7rem 0;
  font-size: var(--cm-text-base);
  color: var(--cm-ink);
  border-radius: 0;
  font-family: inherit;
  transition: border-color var(--cm-dur-fast) var(--cm-ease-out);
}
.cm-form__field input:focus,
.cm-form__field select:focus,
.cm-form__field textarea:focus {
  outline: 0;
  border-bottom-color: var(--cm-ink);
}
.cm-form__field textarea { resize: vertical; min-height: 120px; }
.cm-form__submit { align-self: flex-start; }

.cm-section--map { padding-block: 0; }
.cm-map { aspect-ratio: 16 / 6; }
.cm-map iframe {
  width: 100%; height: 100%; border: 0;
}
.cm-map__placeholder {
  width: 100%; height: 100%;
  background: var(--cm-paper-deep);
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 2rem;
}

/* ---------- Posts (blog) ---------- */

.cm-posts {
  display: flex;
  flex-direction: column;
  gap: 4rem;
  margin-top: clamp(2rem, 5vw, 4rem);
}
.cm-posts--grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(2rem, 4vw, 3rem);
}
@media (max-width: 960px) { .cm-posts--grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .cm-posts--grid { grid-template-columns: 1fr; } }

.cm-post-card { display: flex; flex-direction: column; gap: 1rem; }
.cm-post-card__media { display: block; aspect-ratio: 16 / 10; overflow: hidden; }
.cm-post-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--cm-dur-slow) var(--cm-ease-out); }
.cm-post-card__media:hover img { transform: scale(1.04); }
.cm-meta__date {
  font-size: var(--cm-text-xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--cm-ink-faint);
}
.cm-post-card__title {
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-xl);
  font-weight: 500;
  letter-spacing: -0.005em;
  margin: 0;
}
.cm-post-card__title a { text-decoration: none; color: inherit; }
.cm-post-card__title a:hover { color: var(--cm-accent-deep); }

.cm-pagination { margin-top: 4rem; text-align: center; }
.cm-pagination .nav-links { display: inline-flex; gap: 0.5rem; }
.cm-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  height: 44px;
  padding: 0 1rem;
  text-decoration: none;
  color: var(--cm-ink);
  border: 1px solid var(--cm-line);
}
.cm-pagination .page-numbers.current { background: var(--cm-ink); color: var(--cm-paper); border-color: var(--cm-ink); }

/* ---------- Footer ---------- */

.cm-footer {
  background: var(--cm-night);
  color: var(--cm-paper);
  padding-block: clamp(4rem, 8vw, 7rem) 2.5rem;
}
.cm-footer__lockup {
  padding-bottom: clamp(3rem, 6vw, 5rem);
  border-bottom: 1px solid rgba(250, 248, 245, 0.15);
  margin-bottom: clamp(3rem, 6vw, 5rem);
  display: flex;
  flex-direction: column;
  gap: 2rem;
  align-items: flex-start;
}
.cm-footer__display {
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-3xl);
  font-weight: 400;
  letter-spacing: -0.02em;
  line-height: 1.05;
  margin: 0;
  max-width: 18ch;
  text-wrap: balance;
}
.cm-footer__cta { padding: 1rem 2rem; }
.cm-footer__cta.cm-btn--primary { background: var(--cm-paper); color: var(--cm-ink); border-color: var(--cm-paper); }
.cm-footer__cta.cm-btn--primary:hover { background: var(--cm-paper-deep); border-color: var(--cm-paper-deep); }

.cm-footer__grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1.3fr;
  gap: clamp(2rem, 4vw, 3.5rem);
}
.cm-footer__grid--three { grid-template-columns: 1.4fr 1fr 1.3fr; }
@media (max-width: 960px) {
  .cm-footer__grid,
  .cm-footer__grid--three { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
  .cm-footer__grid,
  .cm-footer__grid--three { grid-template-columns: 1fr; }
}

.cm-footer__col .cm-brand { color: var(--cm-paper); }

.cm-footer__heading {
  font-family: var(--cm-font-body);
  font-size: var(--cm-text-xs);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(250, 248, 245, 0.55);
  margin: 0 0 1.4rem;
  font-weight: 500;
}
.cm-footer__heading--gap { margin-top: 2rem; }
.cm-footer__credit {
  margin: 0;
  font-size: var(--cm-text-xs);
  letter-spacing: 0.04em;
  color: rgba(250, 248, 245, 0.45);
  font-style: italic;
}
.cm-footer__menu,
.cm-footer__contact {
  list-style: none;
  padding: 0; margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.8rem;
  font-size: var(--cm-text-base);
}
.cm-footer__menu a,
.cm-footer__contact a {
  color: rgba(250, 248, 245, 0.8);
  text-decoration: none;
  transition: color var(--cm-dur-fast) var(--cm-ease-out);
}
.cm-footer__menu a:hover,
.cm-footer__contact a:hover { color: var(--cm-paper); }

.cm-footer__tagline {
  margin: 1rem 0 0.5rem;
  font-style: italic;
  color: var(--cm-paper);
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-lg);
}
.cm-footer__about { color: rgba(250, 248, 245, 0.65); margin: 0 0 1.5rem; max-width: 30ch; }

.cm-footer__bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 1rem;
  margin-top: clamp(3rem, 5vw, 4rem);
  padding-top: 2rem;
  border-top: 1px solid rgba(250, 248, 245, 0.15);
  font-size: var(--cm-text-xs);
  color: rgba(250, 248, 245, 0.55);
  letter-spacing: 0.04em;
}
.cm-footer__copy { margin: 0; }

/* ---------- Social icons ---------- */

.cm-social {
  list-style: none;
  display: flex;
  gap: 0.75rem;
  margin: 0; padding: 0;
}
.cm-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px; height: 36px;
  border: 1px solid currentColor;
  border-radius: 50%;
  color: inherit;
  opacity: 0.65;
  transition: opacity var(--cm-dur-fast) var(--cm-ease-out),
              transform var(--cm-dur-fast) var(--cm-ease-out);
}
.cm-social a:hover { opacity: 1; transform: translateY(-2px); }
.cm-social--lg a { width: 44px; height: 44px; }

/* ---------- Placeholders ---------- */

.cm-placeholder {
  background:
    linear-gradient(135deg, var(--cm-paper-deep) 0%, var(--cm-line) 100%),
    repeating-linear-gradient(45deg, transparent 0 8px, rgba(0,0,0,0.02) 8px 16px);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
}
.cm-placeholder::after {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 30% 30%, rgba(184, 149, 106, 0.15), transparent 60%);
  pointer-events: none;
}
.cm-placeholder__label {
  font-family: var(--cm-font-mono);
  font-size: var(--cm-text-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cm-ink-faint);
  padding: 0.4rem 0.8rem;
  background: rgba(250, 248, 245, 0.85);
  border: 1px solid var(--cm-line);
  z-index: 1;
}
.cm-placeholder--portrait  { aspect-ratio: 3 / 4; }

/* ---------- Reveal-on-scroll utility ---------- */

/* Failsafe: if JS never adds .is-visible (script blocked, slow CDN,
   adblocker etc.) the page would otherwise sit with hidden content
   forever. After 3s of no JS, this animation force-reveals everything
   over 0.6s so the site never looks broken. The .is-visible path
   cancels the animation, so the normal scroll-driven reveal still
   wins when JS is healthy. */
@keyframes cm-reveal-failsafe {
  to { opacity: 1; transform: none; }
}

[data-cm-reveal] {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 1s var(--cm-ease-out), transform 1s var(--cm-ease-out);
  transition-delay: var(--cm-reveal-delay, 0s);
  animation: cm-reveal-failsafe 0.6s 3s var(--cm-ease-out) forwards;
}
[data-cm-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
  animation: none;
}

[data-cm-reveal-stagger] > * {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.9s var(--cm-ease-out), transform 0.9s var(--cm-ease-out);
  animation: cm-reveal-failsafe 0.6s 3s var(--cm-ease-out) forwards;
}
[data-cm-reveal-stagger].is-visible > * {
  opacity: 1;
  transform: translateY(0);
  animation: none;
}
[data-cm-reveal-stagger].is-visible > *:nth-child(2) { transition-delay: 0.08s; }
[data-cm-reveal-stagger].is-visible > *:nth-child(3) { transition-delay: 0.16s; }
[data-cm-reveal-stagger].is-visible > *:nth-child(4) { transition-delay: 0.24s; }
[data-cm-reveal-stagger].is-visible > *:nth-child(5) { transition-delay: 0.32s; }
[data-cm-reveal-stagger].is-visible > *:nth-child(6) { transition-delay: 0.40s; }
[data-cm-reveal-stagger].is-visible > *:nth-child(n+7) { transition-delay: 0.48s; }

/* ---------- 404 ---------- */

.cm-404 { text-align: center; padding-block: clamp(4rem, 10vw, 8rem); }
.cm-404__actions {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 1rem;
  justify-content: center;
  margin-top: 2rem;
}
.cm-404__search { margin-top: 3rem; }

/* ---------- Search form ---------- */

.cm-search {
  display: flex;
  border-bottom: 1px solid var(--cm-line);
  max-width: 480px;
  margin-inline: auto;
}
.cm-search__input {
  flex: 1;
  border: 0;
  background: transparent;
  padding: 0.8rem 0;
  font-size: var(--cm-text-base);
  color: var(--cm-ink);
}
.cm-search__input:focus { outline: 0; }
.cm-search__btn {
  background: transparent;
  border: 0;
  cursor: pointer;
  padding: 0.5rem 0.8rem;
  color: var(--cm-ink);
}

/* ---------- Single post extras ---------- */

.cm-single__hero {
  margin-bottom: clamp(2rem, 6vw, 5rem);
}
.cm-single__hero-img { width: 100%; height: auto; max-height: 80vh; object-fit: cover; }
.cm-single__meta {
  display: flex;
  gap: 1rem;
  align-items: center;
  margin-bottom: 1rem;
  font-size: var(--cm-text-xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--cm-ink-faint);
}
.cm-single__cat a { color: var(--cm-accent-deep); text-decoration: none; }
.cm-post-tags { font-size: var(--cm-text-sm); color: var(--cm-ink-faint); }
.cm-post-tags a { color: var(--cm-ink); text-decoration: underline; text-underline-offset: 3px; }
.cm-post-nav {
  display: flex;
  justify-content: space-between;
  gap: 2rem;
  margin-top: 2rem;
  padding-top: 2rem;
  border-top: 1px solid var(--cm-line);
  font-family: var(--cm-font-display);
  font-size: var(--cm-text-lg);
}
.cm-post-nav a { text-decoration: none; color: inherit; }
.cm-post-nav a:hover { color: var(--cm-accent-deep); }

/* Section variants */
.cm-section--statement { padding-block: clamp(5rem, 12vw, 10rem); }
.cm-section--statement .cm-display { margin-top: 1rem; }

/* Fluent Booking shortcode renders inside .cm-appt-calendar with its
   own bundled CSS (calendar grid, time slots, form fields, country
   selector, timezone picker). We deliberately do NOT theme any of
   it — past attempts to override the Svelte select components and
   form chrome caused recurring bugs (blank country flag, broken
   timezone dropdown, hidden phone digits). Bookings are the primary
   lead source so we trust the plugin's defaults. */

/* Quick-contact strip below the calendar — soft cream card with a
   WhatsApp / email pair. Some couples won't book a slot but will
   message; this catches them. */
.cm-appt-quickcontact {
  margin-top: 1.5rem;
  padding: 1.25rem 1.5rem;
  background: var(--cm-paper-deep);
  border: 1px solid var(--cm-line);
  border-radius: 6px;
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 2rem;
  align-items: center;
  justify-content: center;
  font-size: var(--cm-text-sm);
  color: var(--cm-ink-soft);
  text-align: center;
}
.cm-appt-quickcontact__label {
  font-family: var(--cm-font-display);
  font-style: italic;
  color: var(--cm-ink);
}
.cm-appt-quickcontact a {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--cm-ink);
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 4px;
  text-decoration-color: var(--cm-line);
  transition: color 180ms var(--cm-ease-out),
              text-decoration-color 180ms var(--cm-ease-out);
}
.cm-appt-quickcontact a:hover {
  color: var(--cm-accent-deep);
  text-decoration-color: var(--cm-accent);
}
.cm-appt-quickcontact svg { width: 18px; height: 18px; flex-shrink: 0; }

/* ============================================================
 * Floating WhatsApp button — sticky bottom-right on every page.
 *
 * For Indian wedding leads this is the single highest-leverage
 * conversion element: many couples won't fill a calendar form
 * but WILL tap WhatsApp. Built without JS so it never delays.
 * Hidden when no number is configured (see footer.php).
 * ============================================================ */
.cm-whatsapp-fab {
  position: fixed;
  right: clamp(1rem, 3vw, 1.5rem);
  bottom: clamp(1rem, 3vw, 1.5rem);
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: #25D366;
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 8px 20px rgba(37, 211, 102, 0.35),
              0 2px 6px rgba(0, 0, 0, 0.15);
  z-index: var(--cm-z-overlay);
  transition: transform 220ms var(--cm-ease-out),
              box-shadow 220ms var(--cm-ease-out);
  text-decoration: none;
}
.cm-whatsapp-fab:hover,
.cm-whatsapp-fab:focus-visible {
  transform: translateY(-2px) scale(1.04);
  box-shadow: 0 12px 28px rgba(37, 211, 102, 0.45),
              0 4px 10px rgba(0, 0, 0, 0.2);
  outline: none;
}
.cm-whatsapp-fab svg { width: 30px; height: 30px; fill: currentColor; }
.cm-whatsapp-fab__sr { position: absolute; left: -9999px; }

/* Subtle pulse so the button catches the eye on first scroll without
   being annoying. Disabled for users who prefer reduced motion. */
@media (prefers-reduced-motion: no-preference) {
  .cm-whatsapp-fab::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 50%;
    box-shadow: 0 0 0 0 rgba(37, 211, 102, 0.55);
    animation: cm-wa-pulse 2.4s var(--cm-ease-out) infinite;
  }
}
@keyframes cm-wa-pulse {
  0%   { box-shadow: 0 0 0 0   rgba(37, 211, 102, 0.55); }
  70%  { box-shadow: 0 0 0 18px rgba(37, 211, 102, 0); }
  100% { box-shadow: 0 0 0 0   rgba(37, 211, 102, 0); }
}

/* ============================================================
 * Appointment landing — distraction-free mode (opt-in).
 * When the Customizer toggle is on, body gets cm-appt-focused
 * which hides the global nav + footer and lets the booking page
 * stand on its own. The logo + "Book Now" button stay visible
 * so visitors aren't trapped.
 * ============================================================ */
body.cm-appt-focused .cm-nav,
body.cm-appt-focused .cm-menu-toggle,
body.cm-appt-focused .cm-footer__grid,
body.cm-appt-focused .cm-footer__lockup { display: none !important; }
body.cm-appt-focused .cm-footer { padding-block: 1.5rem; }
body.cm-appt-focused .cm-footer__bar {
  border-top: 0;
  padding-top: 0;
}

/* ============================================================
 * Mobile-only reorder for appointment landing (≤ 880px).
 *
 * Lead-conversion priority on phones is different from desktop.
 * The hero photo is too tall — it pushes the calendar below the
 * second screen of scroll. Same for the stats trust-strip:
 * couples need to SEE work + book a slot before stats matter.
 *
 * New mobile order:
 *   1. Hero (text + CTA only — image hidden on phone)
 *   2. Calendar          ← booked here
 *   3. Recent Work       ← visual proof
 *   4. Reaction Reels    ← emotional proof
 *   5. Trust strip       ← credibility refresher
 *   6. Why Us
 *   7. Process (what happens after you book)
 *   8. Explore (galleries + films CTA pair)
 *   9. FAQ
 *  10. Final CTA
 *
 * Implementation: make the article a flex column on mobile and
 * use `order` per child. Desktop layout is untouched.
 * ============================================================ */
@media (max-width: 880px) {
  /* Hide the hero photo on phones. The same image (and many more)
     reappears in the Recent Work gallery further down. */
  .cm-page--appointment .cm-appt-hero__media { display: none !important; }

  /* Reduce hero top padding now that there's no portrait beside the
     copy — the calendar can sit closer to the headline. */
  .cm-page--appointment .cm-page-hero--appointment {
    padding-block: clamp(5rem, 14vw, 7rem) clamp(1.5rem, 5vw, 3rem);
  }

  /* Make the article a flex column so child sections can be
     reordered with `order`. Each section is already a full-width
     block, so going flex doesn't visually change anything besides
     enabling the reorder. */
  .cm-page--appointment {
    display: flex;
    flex-direction: column;
  }

  /* Direct-child selectors so nested sections aren't affected. */
  .cm-page--appointment > .cm-page-hero--appointment   { order: 1; }
  .cm-page--appointment > .cm-section--calendar        { order: 2; }
  .cm-page--appointment > .cm-section--proof           { order: 3; }
  .cm-page--appointment > .cm-section--reels           { order: 4; }
  .cm-page--appointment > .cm-trust-strip              { order: 5; }
  .cm-page--appointment > .cm-section--why             { order: 6; }
  .cm-page--appointment > .cm-section--process         { order: 7; }
  .cm-page--appointment > .cm-section--explore         { order: 8; }
  .cm-page--appointment > .cm-section--faq             { order: 9; }
  .cm-page--appointment > .cm-section--cta             { order: 10; }

  /* Tighten section spacing on mobile so the lead doesn't have to
     scroll through huge whitespace between sections. */
  .cm-page--appointment > .cm-section--calendar { padding-block: clamp(2rem, 6vw, 3rem); }
  .cm-page--appointment > .cm-section--proof    { padding-block: clamp(2.5rem, 7vw, 3.5rem); }
  .cm-page--appointment > .cm-section--reels    { padding-block: clamp(2.5rem, 7vw, 3.5rem); }
  .cm-page--appointment > .cm-trust-strip       { padding-block: 2rem; }
}
