/* ==========================================
   TWENTYFIVE SOCIAL - CORE DESIGN SYSTEM
   ========================================== */

/* Custom Typography & Google Fonts
   Font files are requested from index.html / 404.html <head> via <link> plus
   preconnect. Keeping the @import here would re-introduce the render-blocking
   request chain it replaced. */

:root {
  /* Color Palette */
  --color-primary-blush: #d99ea6;
  --color-secondary-blush: #deabb2;

  /* Accessible blush for SMALL TEXT on light grounds only.
     #d99ea6 measures 2.06:1 on warm ivory, well under the 4.5:1 AA floor.
     This variant keeps the same hue (352deg) and saturation but drops lightness
     to 43%, measuring 6.0:1 on ivory and 5.3:1 on the darker packages band.
     The extra headroom above 4.5:1 is deliberate: these labels sit inside
     scroll-reveal wrappers whose opacity composites them, so they must still
     clear AA at the reveal's minimum opacity, not only at full strength. Decorative blush - borders, rules, large display numerals,
     fills, and blush text on the charcoal footer/CTA/marquee (already ~8.7:1) -
     deliberately keeps --color-primary-blush. */
  --color-blush-text: #9d3d4a;

  /* Soft blush for LARGE decorative numerals that still have to meet WCAG.
     The workflow 01/02/03 numerals are rendered text, so axe holds them to the
     3:1 large-text floor; the brand blush measured 2.03:1 on the workflow card.
     Same hue (352deg) and saturation as the brand blush, lightness dropped to
     58%, giving 3.45:1 against the card once the reveal's resting opacity is
     composited in. Deliberately far lighter than --color-blush-text so the
     numerals stay decorative rather than reading as body copy. */
  --color-blush-decor: #c36572;
  --color-primary-blush-light: rgba(217, 158, 166, 0.45);
  --color-primary-blush-transparent: rgba(217, 158, 166, 0.08);

  --color-charcoal: #0c0c0c;
  --color-charcoal-light: #141414;
  --color-charcoal-border: rgba(255, 255, 255, 0.08);

  --color-warm-ivory: #FAF5EE;          /* Rich warm parchment ivory */
  --color-warm-ivory-dark: #EFE9DE;     /* Support contrast shade */
  --color-warm-ivory-card: rgba(248, 245, 238, 0.7);
  --color-warm-ivory-border: rgba(217, 158, 166, 0.25);

  --color-text-dark: #121212;
  --color-text-muted: #3d3d3d;          /* Confident text contrast */
  --color-text-light: #ffffff;
  --color-text-light-muted: #cccccc;

  /* Font Families */
  --font-serif: 'Cormorant Garamond', serif;
  --font-sans: 'Plus Jakarta Sans', sans-serif;

  /* Transitions & Shadows */
  --transition-smooth: all 0.5s cubic-bezier(0.16, 1, 0.3, 1);
  --transition-fast: all 0.25s ease;
  --shadow-soft: 0 12px 32px rgba(217, 158, 166, 0.12);
  --shadow-editorial: 0 20px 40px rgba(12, 12, 12, 0.04);
}

/* Reset & Base Styles */
*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  background-color: var(--color-warm-ivory);
  overflow-x: clip;
}

body {
  font-family: var(--font-sans);
  color: var(--color-text-dark);
  line-height: 1.6;
  font-size: 1rem;
  overflow-x: clip;
  background: radial-gradient(circle at 10% 8%, rgba(222, 171, 178, 0.14) 0%, rgba(250, 245, 238, 0) 50%),
              radial-gradient(circle at 90% 20%, rgba(217, 158, 166, 0.16) 0%, rgba(250, 245, 238, 0) 50%),
              radial-gradient(circle at 15% 40%, rgba(222, 171, 178, 0.12) 0%, rgba(250, 245, 238, 0) 50%),
              radial-gradient(circle at 85% 60%, rgba(217, 158, 166, 0.15) 0%, rgba(250, 245, 238, 0) 50%),
              radial-gradient(circle at 20% 75%, rgba(222, 171, 178, 0.12) 0%, rgba(250, 245, 238, 0) 50%),
              radial-gradient(circle at 80% 90%, rgba(217, 158, 166, 0.14) 0%, rgba(250, 245, 238, 0) 50%),
              linear-gradient(180deg, var(--color-warm-ivory) 0%, #FAF6F0 50%, var(--color-warm-ivory) 100%);
}

/* ==========================================
   GRAIN ISOLATION & DYNAMIC BACKGROUND
   ========================================== */

/* Film Grain Overlay */
.film-grain {
  position: fixed;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  opacity: 0.022;               /* Subtle texture overlay */
  mix-blend-mode: overlay;
  pointer-events: none;
  z-index: 9999;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 250 250' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
  animation: grain-animation 8s steps(10) infinite;
}

@keyframes grain-animation {
  0%, 100% { transform: translate(0, 0); }
  10% { transform: translate(-0.5%, -0.5%); }
  20% { transform: translate(-1%, 0.5%); }
  30% { transform: translate(0.5%, -1%); }
  40% { transform: translate(-0.5%, 1.5%); }
  50% { transform: translate(-1%, 0.5%); }
  60% { transform: translate(0.5%, 1.5%); }
  70% { transform: translate(1.5%, -1%); }
  80% { transform: translate(-0.5%, -0.5%); }
  90% { transform: translate(1%, -1.5%); }
}

/* Isolation stack so buttons and text remain crisp */
.btn-glossy,
.btn-outline,
h1, h2, h3, h4,
.logo,
.nav-link,
.marquee-item {
  position: relative;
  z-index: 10000;
}

/* Background Glow - No multiply blending to preserve warm pink tones */
.bg-glow-container {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -2;
  overflow: hidden;
  pointer-events: none;
}

.bg-glow-sphere {
  position: absolute;
  border-radius: 50%;
  filter: blur(140px);
  pointer-events: none;
}

.bg-glow-1 {
  width: 55vw;
  height: 55vw;
  background: radial-gradient(circle, var(--color-primary-blush) 0%, rgba(217, 158, 166, 0) 70%);
  top: -10%;
  right: -5%;
  opacity: 0.65;
  animation: float-1 25s ease-in-out infinite alternate;
}

.bg-glow-2 {
  width: 60vw;
  height: 60vw;
  background: radial-gradient(circle, var(--color-secondary-blush) 0%, rgba(222, 171, 178, 0) 70%);
  bottom: -15%;
  left: -5%;
  opacity: 0.55;
  animation: float-2 30s ease-in-out infinite alternate;
}

.bg-glow-3 {
  width: 40vw;
  height: 40vw;
  background: radial-gradient(circle, rgba(217, 158, 166, 0.4) 0%, transparent 60%);
  top: 40%;
  left: 30%;
  opacity: 0.4;
  animation: float-3 20s ease-in-out infinite alternate;
}

@keyframes float-1 {
  0% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(4%, 4%) scale(1.05); }
  100% { transform: translate(-4%, -2%) scale(0.95); }
}

@keyframes float-2 {
  0% { transform: translate(0, 0) scale(0.95); }
  50% { transform: translate(-3%, 5%) scale(1.05); }
  100% { transform: translate(5%, -1%) scale(1); }
}

@keyframes float-3 {
  0% { transform: translate(0, 0) scale(1); }
  100% { transform: translate(3%, -3%) scale(1.08); }
}

/* Respect Reduced Motion */
@media (prefers-reduced-motion: reduce) {
  .film-grain {
    animation: none;
    top: 0; left: 0; width: 100%; height: 100%;
  }
  .bg-glow-1, .bg-glow-2, .bg-glow-3 {
    animation: none !important;
  }
}

/* ==========================================
   COMMON COMPONENTS & LAYOUT UTILITIES
   ========================================== */

.container {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 4%;
  position: relative;
}

/* Retain hero container at 1400px to keep hero visually unchanged */
.hero .container {
  max-width: 1400px;
}

section {
  padding: clamp(80px, 8vw, 120px) 0;
  position: relative;
  z-index: 10;
}

@media (max-width: 768px) {
  section {
    padding: clamp(55px, 6vw, 75px) 0;
  }
}

/* Headings */
h1, h2, h3, h4 {
  font-family: var(--font-serif);
  font-weight: 400;
  color: var(--color-charcoal);
  line-height: 1.15;
}

.section-tag {
  font-family: var(--font-sans);
  font-size: 0.8rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--color-blush-text);
  margin-bottom: 20px;
  display: block;
}

.section-title-wrapper {
  margin-bottom: 70px;
  max-width: 700px;
}

.section-title {
  font-size: 3.5rem;
  font-weight: 300;
}

.section-subtitle {
  font-family: var(--font-sans);
  font-size: 1.15rem;
  color: var(--color-text-muted);
  margin-top: 15px;
  max-width: 550px;
  font-weight: 300;
}

@media (max-width: 768px) {
  .section-title { font-size: 2.6rem; }
}

/* Premium Glossy Buttons - 100% Consistent Layout */
.btn-glossy {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 16px 36px;
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.85rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #ffffff;
  background: linear-gradient(180deg, #222222 0%, #080808 100%);
  border: 1px solid #000000;
  border-top-color: rgba(255, 255, 255, 0.18);
  border-bottom-color: rgba(0, 0, 0, 0.6);
  border-radius: 50px;
  cursor: pointer;
  overflow: hidden;
  transition: var(--transition-smooth);
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.35),
              inset 0 1px 1px rgba(255, 255, 255, 0.12);
  text-decoration: none;
  text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.8);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transform: translate3d(0, 0, 0);
  backface-visibility: hidden;
  will-change: transform;
}

.btn-glossy::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 50%;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.08) 0%, rgba(255, 255, 255, 0) 100%);
  pointer-events: none;
}

.btn-glossy::after {
  content: '';
  position: absolute;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  background: radial-gradient(circle, var(--color-primary-blush-light) 0%, transparent 60%);
  opacity: 0;
  transform: scale(0.5);
  transition: var(--transition-smooth);
  mix-blend-mode: screen;
  pointer-events: none;
}

.btn-glossy:hover {
  transform: translate3d(0, -2px, 0);
  border-color: rgba(217, 158, 166, 0.55);
  box-shadow: 0 6px 20px rgba(217, 158, 166, 0.28),
              inset 0 1px 1px rgba(255, 255, 255, 0.15);
  background: linear-gradient(180deg, #222222 0%, #080808 100%);
  color: #ffffff;
}

.btn-glossy:hover::after {
  opacity: 0.65;
  transform: scale(1);
}

.btn-glossy:active {
  transform: translate3d(0, 0, 0);
}

/* Secondary Button - Subtle blush border */
.btn-outline {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 14px 34px;
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.85rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-charcoal);
  background: rgba(248, 245, 238, 0.2);
  border: 1px solid rgba(217, 158, 166, 0.6);
  border-radius: 50px;
  cursor: pointer;
  overflow: hidden;
  transition: var(--transition-smooth);
  text-decoration: none;
  box-shadow: 0 2px 10px rgba(217, 158, 166, 0.05);
}

.btn-outline::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: var(--color-primary-blush-transparent);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
  z-index: -1;
}

.btn-outline:hover {
  color: var(--color-text-dark);
  border-color: var(--color-secondary-blush);
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(217, 158, 166, 0.15);
}

.btn-outline:hover::after {
  transform: scaleX(1);
  transform-origin: left;
}

/* ==========================================
   NAVIGATION BAR
   ========================================== */

.header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 10000;
  padding: 24px 0;
  background-color: transparent;
  border-bottom: 2px solid transparent;
  transition: var(--transition-smooth);
}

.header.scrolled {
  padding: 14px 0;
  background-color: #FAF5EE;
  border-bottom: 2px solid var(--color-primary-blush); /* Static pink line */
  box-shadow: 0 4px 20px rgba(217, 158, 166, 0.05);
}

.header-container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
}

.header-action {
  display: none;
}

@media (min-width: 992px) {
  .header-container {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    max-width: 100%;
    padding: 0 4%;
  }
  .logo {
    grid-column: 1;
    justify-self: start;
  }
  .nav {
    grid-column: 2;
    justify-self: center;
    display: flex;
    gap: 55px;
  }
  .header-action {
    grid-column: 3;
    justify-self: end;
    display: block;
  }
  .header-action .btn-book-call {
    padding: 11px 26px;
    font-size: 0.8rem;
  }
}

.logo {
  font-family: var(--font-serif);
  font-size: 1.95rem;
  font-weight: 300;
  font-style: italic; /* Entire logo italic */
  color: var(--color-charcoal);
  text-decoration: none;
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  line-height: 1;
  transition: opacity 0.3s ease;
}

.logo-word-primary {
  color: var(--color-text-dark);
  font-family: var(--font-serif);
  font-weight: 300;
  font-style: italic;
  transition: color 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

.logo-word-secondary {
  color: var(--color-primary-blush);
  font-family: var(--font-serif);
  font-weight: 300;
  font-style: italic;
  transition: color 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

.logo:hover .logo-word-primary {
  color: var(--color-primary-blush);
}

.logo:hover .logo-word-secondary {
  color: var(--color-text-dark);
}

.nav {
  display: flex;
  align-items: center;
  gap: 45px;
}

.nav-link {
  font-family: var(--font-sans);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--color-charcoal);
  text-decoration: none;
  position: relative;
  padding: 8px 0;
  transition: var(--transition-fast);
  opacity: 0.9;
}

.nav-link::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 1.5px;
  background-color: var(--color-primary-blush);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

/* Hover affordances are reserved for true mouse pointers so that a tap on a touch
   device cannot leave a link permanently coloured / underlined. */
@media (hover: hover) and (pointer: fine) {
  .nav-link:hover {
    opacity: 1;
    color: var(--color-primary-blush);
  }

  .nav-link:hover::after {
    transform: scaleX(1);
    transform-origin: left;
  }
}

.nav-link:focus-visible {
  opacity: 1;
  color: var(--color-primary-blush);
  outline: 2px solid var(--color-blush-text);
  outline-offset: 4px;
  border-radius: 4px;
}

.burger {
  display: none;
  flex-direction: column;
  justify-content: space-between;
  width: 26px;
  height: 18px;
  background: transparent;
  border: none;
  cursor: pointer;
  z-index: 10003;
}

.burger span {
  display: block;
  width: 100%;
  height: 2px;
  background-color: var(--color-charcoal);
  border-radius: 2px;
  transition: var(--transition-fast);
}

/* NOTE: the legacy <=991px side-drawer nav and the 3-line burger toggle rules that
   used to live here were removed. They fought the full-screen drawer defined in the
   "Responsive Scope: viewports up to 1279px" block and left
   `.burger.toggle span:nth-child(2) { opacity: 0 }` unopposed, which reduced the open
   state icon to a single hanging diagonal line. See the burger block below. */

/* ==========================================
   HERO SECTION & COLLAGE
   ========================================== */

.hero {
  min-height: 100vh;
  display: flex;
  align-items: center;
  padding-top: 130px;
  padding-bottom: 90px;
  overflow: hidden;
  position: relative;
}

.hero-grid {
  display: grid;
  grid-template-columns: 1.3fr 0.7fr;
  align-items: center;
  gap: 30px;
}

.hero-content {
  opacity: 0;
  transform: translateY(20px);
  animation: fade-settle 1.2s cubic-bezier(0.16, 1, 0.3, 1) 0.2s forwards;
}

.hero-tag {
  font-family: var(--font-sans);
  font-size: 0.8rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--color-blush-text);
  margin-bottom: 25px;
  display: block;
}

.hero-title {
  font-size: 5.6rem;
  font-weight: 300;
  line-height: 1.02;
  margin-bottom: 30px;
  letter-spacing: -0.03em;
}

.hero-title span.italic-brand {
  font-family: var(--font-serif);
  font-style: italic;
  color: var(--color-primary-blush);
}

.hero-text {
  font-size: 1.2rem;
  color: var(--color-text-muted);
  max-width: 580px;
  margin-bottom: 45px;
  font-weight: 300;
  line-height: 1.75;
}

/* Collage Container & Coordinates */
.hero-visual {
  position: relative;
  width: 100%;
  height: 540px;
  display: flex;
  justify-content: center;
  align-items: center;
  opacity: 0;
  transform: translateY(25px);
  margin-right: -40px; /* Shift right to bleed off-screen premium-style */
  animation: fade-settle 1.4s cubic-bezier(0.16, 1, 0.3, 1) 0.4s forwards;
}

.hero-collage {
  position: relative;
  width: 100%;
  height: 100%;
  max-width: 500px;
  transform: scale(1.12);
  transform-origin: center center;
}

/* Dotted path lines */
.collage-path-svg {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 1;
}

.path-node {
  position: absolute;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background-color: var(--color-primary-blush);
  box-shadow: 0 0 10px var(--color-primary-blush);
  z-index: 1;
}

.node-a { top: 150px; left: 50px; animation: pulse-glow 2s infinite alternate; }
.node-b { top: 140px; left: 430px; animation: pulse-glow 2s infinite alternate 0.6s; }
.node-c { top: 260px; left: 110px; animation: pulse-glow 2s infinite alternate 1.2s; }
.node-d { top: 380px; left: 280px; animation: pulse-glow 2s infinite alternate 0.4s; }
.node-e { top: 60px; left: 250px; animation: pulse-glow 2s infinite alternate 0.8s; }

@keyframes pulse-glow {
  0% { transform: scale(1); box-shadow: 0 0 5px var(--color-primary-blush); opacity: 0.7; }
  100% { transform: scale(1.3); box-shadow: 0 0 12px var(--color-primary-blush); opacity: 1; }
}

/* Floating Card Base Styles */
.collage-card {
  position: absolute;
  background: rgba(250, 245, 238, 0.65);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border: 1px solid rgba(217, 158, 166, 0.28);
  border-radius: 18px;
  padding: 16px;
  box-shadow: 0 12px 35px rgba(217, 158, 166, 0.08),
              inset 0 1px 2px rgba(255, 255, 255, 0.4);
  z-index: 2;
  will-change: transform;
  transition: border-color 0.3s ease, box-shadow 0.3s ease;
}

.collage-card:hover {
  border-color: rgba(217, 158, 166, 0.6);
  box-shadow: 0 20px 45px rgba(217, 158, 166, 0.16),
              inset 0 1px 2px rgba(255, 255, 255, 0.5);
  z-index: 10;
}

/* Card 1: Reach Analytics */
.card-reach {
  top: 20px;
  left: -10px;
  width: 190px;
}

.reach-header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
}

.reach-icon {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: rgba(217, 158, 166, 0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-primary-blush);
}

.reach-icon svg {
  width: 16px;
  height: 16px;
}

.reach-info {
  display: flex;
  flex-direction: column;
}

.reach-label {
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-text-muted);
}

.reach-val {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--color-charcoal);
  line-height: 1.1;
}

.reach-percentage {
  font-size: 0.72rem;
  font-weight: 700;
  color: #55b760;
  margin-left: auto;
}

.reach-chart {
  width: 100%;
  height: 42px;
  margin-top: 5px;
  overflow: visible;
}

/* Card 2: Editorial Quote Card (Dark Glassmorphic) */
.card-quote {
  top: -20px;
  right: 20px;
  width: 210px;
  padding: 24px;
  background: rgba(12, 12, 12, 0.85);
  border: 1px solid rgba(255, 255, 255, 0.1);
  color: #ffffff;
  box-shadow: 0 15px 35px rgba(0, 0, 0, 0.2), inset 0 1px 1px rgba(255, 255, 255, 0.12);
}

.card-quote:hover {
  border-color: rgba(217, 158, 166, 0.45);
  box-shadow: 0 20px 45px rgba(0, 0, 0, 0.3), inset 0 1px 1px rgba(255, 255, 255, 0.15);
}

.quote-mark {
  font-family: var(--font-serif);
  font-size: 3.5rem;
  line-height: 1;
  color: var(--color-primary-blush);
  display: block;
  margin-top: -15px;
  margin-bottom: -15px;
  opacity: 0.85;
}

.quote-text {
  font-family: var(--font-serif);
  font-size: 1.15rem;
  font-style: italic;
  line-height: 1.35;
  margin-bottom: 12px;
  font-weight: 300;
  letter-spacing: -0.01em;
}

.quote-author {
  font-family: var(--font-sans);
  font-size: 0.6rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  color: var(--color-primary-blush);
}

/* Card 3: Reel Video Preview Frame */
.card-reel {
  top: 140px;
  left: -50px;
  width: 160px;
  padding: 12px;
}

.reel-header {
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-text-muted);
  margin-bottom: 8px;
  padding-left: 4px;
}

.reel-video-container {
  position: relative;
  width: 100%;
  aspect-ratio: 0.72;
  border-radius: 12px;
  overflow: hidden;
  background: linear-gradient(135deg, #181515 0%, #0a0909 100%);
  border: 1px solid rgba(217, 158, 166, 0.15);
  box-shadow: inset 0 0 20px rgba(0, 0, 0, 0.6);
}

.reel-glass-art {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
}

.art-sphere-1 {
  position: absolute;
  top: 20%;
  left: 15%;
  width: 60px;
  height: 60px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--color-primary-blush) 20%, var(--color-secondary-blush) 100%);
  filter: blur(8px);
  opacity: 0.85;
}

.art-sphere-2 {
  position: absolute;
  bottom: 15%;
  right: 10%;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background: radial-gradient(circle, #FAF5EE 10%, var(--color-primary-blush) 100%);
  filter: blur(12px);
  opacity: 0.6;
}

.art-backdrop-blur {
  position: absolute;
  top: 10%;
  left: 10%;
  width: 80%;
  height: 80%;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.03);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255, 255, 255, 0.12);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3), inset 0 1px 1px rgba(255, 255, 255, 0.2);
  z-index: 2;
}

.art-shadow-box {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: radial-gradient(circle at 50% 50%, transparent 40%, rgba(0,0,0,0.4) 100%);
  z-index: 3;
  pointer-events: none;
}

.reel-play-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 4;
}

.reel-play-button {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: rgba(250, 245, 238, 0.95);
  border: none;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-charcoal);
  box-shadow: 0 6px 15px rgba(0,0,0,0.3);
  cursor: pointer;
  transition: var(--transition-fast);
}

.reel-play-button:hover {
  transform: scale(1.1);
  background: #ffffff;
  color: var(--color-primary-blush);
}

.reel-play-button svg {
  width: 16px;
  height: 16px;
  margin-left: 2px;
}

.reel-stats-bar {
  position: absolute;
  bottom: 10px;
  left: 0;
  width: 100%;
  display: flex;
  justify-content: space-between;
  padding: 0 12px;
  z-index: 4;
}

.stat-item {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 0.68rem;
  font-weight: 600;
  color: #ffffff;
  text-shadow: 0 1px 3px rgba(0,0,0,0.8);
}

.stat-item svg {
  width: 12px;
  height: 12px;
}

/* Card 4: Engagement Rate */
.card-engagement {
  top: 320px;
  left: -30px;
  width: 140px;
  text-align: center;
  padding: 16px;
}

.engagement-label {
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-text-muted);
  margin-bottom: 12px;
}

.engagement-circle-wrap {
  position: relative;
  width: 80px;
  height: 80px;
  margin: 0 auto 10px auto;
}

.engagement-ring {
  transform: rotate(-90deg);
  width: 100%;
  height: 100%;
}

.ring-bg {
  fill: none;
  stroke: rgba(217, 158, 166, 0.15);
}

.ring-progress {
  fill: none;
  stroke: var(--color-primary-blush);
  stroke-linecap: round;
}

.engagement-value {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--color-charcoal);
}

.engagement-subtext {
  font-size: 0.72rem;
  font-weight: 700;
  color: #55b760;
}

/* Card 5: Content Plan Card */
.card-plan {
  top: 80px;
  right: -40px;
  width: 245px;
}

.plan-header {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-text-muted);
  margin-bottom: 12px;
  border-bottom: 1px solid rgba(217, 158, 166, 0.15);
  padding-bottom: 8px;
}

.plan-icon {
  color: var(--color-primary-blush);
  width: 14px;
  height: 14px;
}

.plan-icon svg {
  width: 14px;
  height: 14px;
}

.plan-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}

.plan-day {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.day-name {
  font-size: 0.6rem;
  font-weight: 700;
  text-align: center;
  color: var(--color-text-muted);
  margin-bottom: 2px;
}

.plan-item {
  width: 100%;
  min-height: 24px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.item-glass-art {
  width: 100%;
  height: 24px;
  border-radius: 6px;
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.35);
}

.item-glass-art.art-blush {
  background: linear-gradient(135deg, rgba(217, 158, 166, 0.8) 0%, rgba(222, 171, 178, 0.4) 100%);
  box-shadow: 0 4px 10px rgba(217, 158, 166, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.3);
}

.item-glass-art.art-ivory {
  background: linear-gradient(135deg, rgba(250, 245, 238, 0.9) 0%, rgba(239, 233, 222, 0.5) 100%);
  border-color: rgba(217, 158, 166, 0.2);
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.03), inset 0 1px 0 rgba(255, 255, 255, 0.4);
}

.item-glass-art.art-charcoal {
  background: linear-gradient(135deg, rgba(12, 12, 12, 0.8) 0%, rgba(30, 30, 30, 0.5) 100%);
  border-color: rgba(255, 255, 255, 0.1);
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15);
}

.item-glass-art.art-blush-light {
  background: linear-gradient(135deg, rgba(217, 158, 166, 0.4) 0%, rgba(217, 158, 166, 0.15) 100%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2);
}

.item-glass-art.art-ivory-light {
  background: linear-gradient(135deg, rgba(250, 245, 238, 0.5) 0%, rgba(250, 245, 238, 0.15) 100%);
  border-color: rgba(217, 158, 166, 0.15);
}

.item-glass-art.art-charcoal-light {
  background: linear-gradient(135deg, rgba(12, 12, 12, 0.4) 0%, rgba(12, 12, 12, 0.15) 100%);
  border-color: rgba(255, 255, 255, 0.05);
}

.plan-item.item-text-accent {
  background: var(--color-primary-blush-transparent);
  border: 1px solid rgba(217, 158, 166, 0.25);
  font-size: 0.5rem;
  font-weight: 700;
  color: var(--color-primary-blush);
  text-align: center;
  line-height: 1.1;
  padding: 4px;
}

.plan-item.item-text-post {
  background: var(--color-charcoal);
  border: 1px solid rgba(255, 255, 255, 0.08);
  font-size: 0.45rem;
  font-weight: 700;
  color: var(--color-primary-blush);
  text-align: center;
  line-height: 1.1;
  padding: 4px;
}

/* Card 6: Audience Growth */
.card-growth {
  bottom: -15px;
  left: 15px;
  width: 210px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px;
}

.growth-info {
  display: flex;
  flex-direction: column;
}

.growth-label {
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-text-muted);
}

.growth-val {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--color-charcoal);
  line-height: 1.1;
}

.growth-chart {
  width: 90px;
  height: 30px;
  overflow: visible;
}

/* Card 7: Top Performing Post */
.card-top-post {
  bottom: -30px;
  right: 10px;
  width: 220px;
}

/* Card 6: Feed Grid Planner Card */
.card-grid-preview {
  top: 250px;
  right: -25px;
  width: 200px;
  padding: 14px;
}

.grid-preview-header {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-text-muted);
  margin-bottom: 12px;
  border-bottom: 1px solid rgba(217, 158, 166, 0.15);
  padding-bottom: 8px;
}

.grid-preview-header .grid-icon {
  color: var(--color-primary-blush);
  width: 14px;
  height: 14px;
}

.grid-preview-slots {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
}

.slot-item {
  aspect-ratio: 1;
  background: rgba(217, 158, 166, 0.08);
  border-radius: 8px;
  border: 1px solid rgba(217, 158, 166, 0.18);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  position: relative;
}

.slot-art {
  width: 60%;
  height: 60%;
  opacity: 0.85;
}

.slot-art.art-circle {
  border-radius: 50%;
  background: radial-gradient(circle, var(--color-primary-blush) 30%, var(--color-secondary-blush) 100%);
}

.slot-art.art-rect {
  border-radius: 3px;
  background: linear-gradient(135deg, var(--color-warm-ivory) 0%, var(--color-primary-blush) 100%);
}

.slot-art.art-tri {
  width: 0;
  height: 0;
  border-left: 12px solid transparent;
  border-right: 12px solid transparent;
  border-bottom: 20px solid var(--color-secondary-blush);
  background: none;
}

.slot-art.art-lines {
  display: flex;
  flex-direction: column;
  justify-content: space-around;
  width: 70%;
  height: 70%;
}

.slot-art.art-lines::before,
.slot-art.art-lines::after {
  content: '';
  height: 2px;
  width: 100%;
  background-color: var(--color-primary-blush);
  border-radius: 2px;
}

.slot-art.art-cross {
  position: relative;
}

.slot-art.art-cross::before,
.slot-art.art-cross::after {
  content: '';
  position: absolute;
  background-color: var(--color-primary-blush);
}

.slot-art.art-cross::before {
  top: 50%; left: 0; width: 100%; height: 2px; transform: translateY(-50%);
}

.slot-art.art-cross::after {
  left: 50%; top: 0; height: 100%; width: 2px; transform: translateX(-50%);
}

.slot-art.art-dots {
  display: flex;
  flex-wrap: wrap;
  gap: 3px;
  width: 80%;
  height: 80%;
  justify-content: center;
  align-content: center;
}

.slot-art.art-dots::before,
.slot-art.art-dots::after {
  content: '';
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background-color: var(--color-secondary-blush);
}

.top-post-header {
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-text-muted);
  margin-bottom: 12px;
}

.top-post-body {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-bottom: 12px;
}

.top-post-thumb {
  width: 75px;
  height: 55px;
  border-radius: 8px;
  overflow: hidden;
  position: relative;
  background: linear-gradient(45deg, #161213 0%, #2b1f21 100%);
  border: 1px solid rgba(217, 158, 166, 0.15);
  flex-shrink: 0;
}

.thumb-glass-art {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 0.02);
}

.thumb-glass-art::before {
  content: '';
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--color-primary-blush) 0%, transparent 70%);
  filter: blur(5px);
  position: absolute;
  top: 10px;
  left: 10px;
}

.thumb-glass-art::after {
  content: '';
  position: absolute;
  top: 15%;
  left: 15%;
  width: 70%;
  height: 70%;
  border-radius: 5px;
  background: rgba(250, 245, 238, 0.15);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border: 1px solid rgba(255, 255, 255, 0.15);
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.25);
}

.top-post-metrics {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.metric-item {
  display: flex;
  flex-direction: column;
}

.m-label {
  font-size: 0.52rem;
  font-weight: 700;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

.m-val {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--color-charcoal);
  line-height: 1.1;
}

.top-post-chart {
  width: 100%;
  height: 20px;
  overflow: visible;
  border-top: 1px solid rgba(217, 158, 166, 0.15);
  padding-top: 8px;
}

/* NOTE: the legacy responsive collage rules that used to live here were removed.
   They set arbitrary per-breakpoint `transform: scale(0.85 / 0.7 / 0.55)` values on
   `.hero-collage` (the element that now carries the decorative float transform) and
   hid `.hero-visual` outright below 421px. The collage stage/scale/motion layers are
   now defined once, in the "RESPONSIVE HERO COLLAGE ARCHITECTURE" block. */


/* ==========================================
   BRAND KEYWORD MARQUEE (ELEGANT BLACK BACKGROUND)
   ========================================== */

.marquee-section {
  padding: clamp(24px, 3vw, 36px) 0;
  border-top: 1px solid rgba(217, 158, 166, 0.22);
  border-bottom: 1px solid rgba(217, 158, 166, 0.22);
  overflow: hidden;
  background-color: var(--color-charcoal);              /* Turn black/charcoal */
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
}

.marquee-container {
  overflow: hidden;
  display: flex;
  width: 100%;
}

.marquee-content {
  display: flex;
  flex-shrink: 0;
  width: max-content;
  animation: marquee-scroll 32s linear infinite;
  will-change: transform;
}

.marquee-item {
  font-family: var(--font-serif);
  font-size: clamp(2.2rem, 3.5vw, 3.2rem);
  font-style: italic;
  font-weight: 300;
  color: var(--color-primary-blush);                   /* Primary Blush */
  padding: 0 clamp(20px, 3vw, 40px);
  display: inline-flex;
  align-items: center;
  letter-spacing: -0.01em;
}

.marquee-item:nth-child(even) {
  font-family: var(--font-sans);
  font-style: normal;
  font-weight: 300;
  text-transform: uppercase;
  font-size: clamp(1.4rem, 2vw, 2rem);
  letter-spacing: 0.18em;
  opacity: 0.85;
  color: var(--color-warm-ivory);                      /* Warm Ivory contrast */
}

.marquee-item::after {
  content: '•';
  margin-left: clamp(40px, 6vw, 80px);
  font-style: normal;
  font-family: var(--font-sans);
  color: var(--color-secondary-blush);
  opacity: 0.6;
}

@keyframes marquee-scroll {
  0% { transform: translate3d(0, 0, 0); }
  100% { transform: translate3d(-100%, 0, 0); }
}

/* Continuous horizontal motion with no pause affordance. Under reduced motion
   it renders statically; the duplicated second strip is hidden so the row does
   not read as repeated words sitting still. */
@media (prefers-reduced-motion: reduce) {
  .marquee-content {
    animation: none;
    transform: none;
    will-change: auto;
  }
  .marquee-content[aria-hidden="true"] {
    display: none;
  }
}

@media (max-width: 768px) {
  .marquee-item { font-size: 2rem; }
  .marquee-item:nth-child(even) { font-size: 1.4rem; letter-spacing: 0.12em; }
}

.values-section {
  background-color: #FAF5EE;                            /* Warm ivory background */
  color: var(--color-text-dark);
  padding: clamp(90px, 9.5vw, 140px) 0;
  overflow: visible;                                    /* Crucial to allow sticky positioning to function */
}

.values-layout-grid {
  display: grid;
  grid-template-columns: minmax(300px, 0.85fr) minmax(480px, 1.25fr);
  gap: clamp(40px, 6vw, 100px);
  align-items: start;
}

.values-sticky-col {
  position: -webkit-sticky;
  position: sticky;
  top: clamp(120px, 15vh, 180px);
  align-self: start;
  will-change: transform;
}

.values-sticky-col .section-title {
  max-width: 520px;
  font-size: clamp(40px, 4.2vw, 64px);
  line-height: 1.05;
  font-weight: 300;
  margin-top: 15px;
  color: var(--color-charcoal);
  letter-spacing: -0.02em;
}

.values-heading-decoration {
  width: 65px;
  height: 1.5px;
  background-color: var(--color-primary-blush);
  margin-top: 25px;
}

.values-panels-col {
  display: flex;
  flex-direction: column;
  gap: clamp(20px, 2.5vw, 32px);
}

/* Core Value Pillars Reveal Animations */
.values-reveal-heading,
.values-reveal-pillar {
  opacity: 1;
  transform: none;
}

.values-panel::before {
  transform: scaleX(1);
}

/* Reveal opacity is split by role.
   CSS opacity on a wrapper composites everything inside it, so the wrapper can
   never be more transparent than its least forgiving descendant. Measured
   against the rendered colours, the binding element is .section-tag
   (#a94250 on ivory = 5.4:1 at full strength): below 0.91 it drops under the
   4.5:1 AA floor. The old 0.35 resting value put every word in this section at
   roughly 1.7:1 while it was on screen.
   So readable content now fades only across a safe range, and the visible drama
   of the reveal is carried by the decorative layer below, which is free to fade
   from nothing. Movement, timing and reversibility are untouched. */
.motion-ready .values-reveal-heading,
.motion-ready .values-reveal-pillar {
  opacity: var(--values-opacity, 0.97);
  transform: translate3d(var(--values-translate-x, -40px), 0, 0);
  will-change: transform, opacity;
}

/* Decorative layer — no text-contrast obligation, so it keeps the full fade. */
.motion-ready .value-card-num {
  opacity: calc(0.45 * var(--values-decor-opacity, 0));
}

.motion-ready .values-heading-decoration {
  opacity: var(--values-decor-opacity, 0);
}

.motion-ready .values-panel::before {
  transform: scaleX(var(--pillar-line-scale, 0));
}

/* ========================================================
   VALUES PANELS DESIGN
   ======================================================== */
.values-panel {
  background-color: rgba(250, 246, 240, 0.72);
  border: 1px solid rgba(217, 158, 166, 0.32);
  border-radius: 12px;
  padding: clamp(36px, 4vw, 54px);
  position: relative;
}

/* Asymmetric editorial padding variations - max 6px variance */
#valueCard1 {
  padding: clamp(38px, 4.2vw, 56px) clamp(38px, 4.2vw, 56px) clamp(38px, 4.2vw, 56px) clamp(34px, 3.8vw, 50px);
  margin-left: 0;
  margin-right: 0;
}
#valueCard2 {
  padding: clamp(34px, 3.8vw, 50px) clamp(34px, 3.8vw, 50px) clamp(38px, 4.2vw, 56px) clamp(38px, 4.2vw, 56px);
  margin-left: 24px;
}
#valueCard3 {
  padding: clamp(38px, 4.2vw, 56px) clamp(36px, 4vw, 54px) clamp(34px, 3.8vw, 50px) clamp(36px, 4vw, 54px);
  margin-left: -12px;
  margin-right: 12px;
}

/* Thin blush accent line drawing on scroll */
.values-panel::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 1.5px;
  background-color: rgba(217, 158, 166, 0.45);
  transform-origin: left center;
  will-change: transform;
}

/* soft accent variation on pillar 02 */
.values-panel--accent {
  background-color: rgba(217, 158, 166, 0.07);
  border-color: rgba(217, 158, 166, 0.38);
}

.value-card-num {
  font-family: var(--font-serif);
  font-size: clamp(3.8rem, 5vw, 5rem);
  color: var(--color-primary-blush);
  opacity: 0.45;
  line-height: 1;
  margin-bottom: 20px;
  display: block;
}

.value-card-title {
  font-family: var(--font-serif);
  font-size: 1.8rem;
  font-weight: 400;
  margin-bottom: 12px;
  color: var(--color-charcoal);
}

.value-card-desc {
  font-size: 1.02rem;
  color: var(--color-text-dark);
  line-height: 1.75;
  font-weight: 300;
}

@media (max-width: 1200px) {
  .values-layout-grid {
    grid-template-columns: minmax(280px, 0.85fr) minmax(440px, 1.25fr);
    gap: 40px;
  }
}

@media (max-width: 991px) {
  .values-layout-grid {
    grid-template-columns: 1fr;
    gap: 45px;
  }
  .values-sticky-col {
    position: relative;
    top: auto;
  }
  .values-panels-col {
    gap: 30px;
  }
  #valueCard1, #valueCard2, #valueCard3 {
    padding: clamp(24px, 4vw, 36px);
    margin-left: 0;
    margin-right: 0;
  }
}

/* ==========================================
   SERVICES SECTION (UPGRADED EDITORIAL CARDS)
   ========================================== */

.services-section {
  background-color: #171414;                            /* Warm charcoal, premium dark look */
  padding-top: clamp(90px, 8vw, 125px);
  padding-bottom: clamp(70px, 7vw, 105px);
  overflow: visible;                                    /* Allow 3D card scale overflows */
  position: relative;
}

/* Restrained blush glow behind the carousel */
.services-section::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: min(600px, 80vw);
  height: min(400px, 60vh);
  background: radial-gradient(circle, rgba(217, 158, 166, 0.08) 0%, rgba(21, 19, 19, 0) 70%);
  pointer-events: none;
  z-index: 1;
}

/* Heading contrasts in dark section */
.services-section .section-tag {
  color: var(--color-primary-blush);
}

.services-section .section-title {
  color: var(--color-warm-ivory) !important;
}

/* Inactive cards styling on dark background */
.services-section .service-card:not([data-active="true"]) {
  background: rgba(28, 25, 25, 0.85) !important;
  border-color: rgba(217, 158, 166, 0.22) !important;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.3) !important;
}

.services-section .service-card:not([data-active="true"]) .service-card-title {
  color: var(--color-warm-ivory) !important;
}

.services-section .service-card:not([data-active="true"]) .service-card-number {
  color: rgba(217, 158, 166, 0.25) !important;
}

.services-section .service-card:not([data-active="true"]) .service-icon-wrapper svg {
  color: rgba(217, 158, 166, 0.7) !important;
}

.services-section .service-card:not([data-active="true"]) .service-card-graphic svg rect,
.services-section .service-card:not([data-active="true"]) .service-card-graphic svg line {
  stroke: rgba(217, 158, 166, 0.2) !important;
}

/* Active card stays cream */
.services-section .service-card[data-active="true"] {
  background-color: #FAF5EE !important;
  border-color: rgba(217, 158, 166, 0.65) !important;
  box-shadow: 0 25px 60px rgba(0, 0, 0, 0.45) !important;
}

/* Navigation controls contrast */
.services-section .carousel-nav-btn {
  background: rgba(28, 25, 25, 0.95);
  border: 1.5px solid rgba(217, 158, 166, 0.35);
  color: var(--color-warm-ivory);
}

.services-section .carousel-nav-btn:hover {
  background: var(--color-primary-blush);
  color: var(--color-charcoal);
  border-color: var(--color-primary-blush);
}

.services-section .carousel-dot {
  background-color: rgba(255, 255, 255, 0.22);
}

.services-section .carousel-dot.active {
  background-color: var(--color-primary-blush);
}

/* Services Coverflow Carousel Layout */
.services-carousel-wrapper {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  max-width: 1100px;
  margin: 40px auto 30px auto;
  perspective: 1200px;
  transition: opacity 0.8s cubic-bezier(0.25, 1, 0.5, 1), transform 0.8s cubic-bezier(0.25, 1, 0.5, 1);
}

.services-carousel-viewport {
  position: relative;
  width: 100%;
  height: clamp(540px, 48vh, 600px);
  overflow: visible;
}

.services-carousel-track {
  position: relative;
  width: 100%;
  height: 100%;
  transform-style: preserve-3d;
  cursor: grab;
}

.services-carousel-track:active {
  cursor: grabbing;
}

/* Service Card Core Styles */
.service-card {
  --offset: 0;
  --abs-offset: 0;
  --direction: 0;

  position: absolute;
  top: 50%;
  left: 50%;
  width: clamp(380px, 45vw, 550px);
  max-width: 90%;
  background: rgba(250, 246, 240, 0.95);
  border: 1.5px solid rgba(217, 158, 166, 0.3);
  border-radius: 24px;
  padding: 40px 35px;
  box-shadow: 0 12px 32px rgba(217, 158, 166, 0.05);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  display: flex;
  flex-direction: column;
  min-height: 180px;

  /* 3D transforms with responsive side spacing - active card scale(1.05) and adjacent cards closer */
  transform: translate(-50%, -50%)
             translate3d(calc(var(--offset) * clamp(120px, 13vw, 150px)), 0, calc(var(--abs-offset) * -150px))
             rotateY(calc(var(--offset) * -18deg))
             scale(calc(1.05 - var(--abs-offset) * 0.15));

  z-index: calc(10 - var(--abs-offset));
  opacity: var(--service-opacity, 1);

  transition: transform 0.6s cubic-bezier(0.25, 1, 0.5, 1),
              opacity 0.6s cubic-bezier(0.25, 1, 0.5, 1),
              z-index 0.6s cubic-bezier(0.25, 1, 0.5, 1),
              border-color 0.4s ease,
              box-shadow 0.4s ease,
              background-color 0.4s ease;

  cursor: pointer;
  user-select: none;
  overflow: hidden;
}

/* Inactive cards should hide far off ones completely */
.service-card[style*="--abs-offset: 3"],
.service-card[style*="--abs-offset: 4"],
.service-card[style*="--abs-offset: 5"] {
  opacity: 0;
  pointer-events: none;
}

/* Inactive cards hover treatment */
.service-card:not([data-active="true"]):hover {
  border-color: rgba(217, 158, 166, 0.5);
  background-color: #FAF5EE;
  box-shadow: 0 15px 35px rgba(217, 158, 166, 0.1);
}

/* Active State Card */
.service-card[data-active="true"] {
  border-color: rgba(217, 158, 166, 0.65);
  background-color: #FAF5EE;
  box-shadow: 0 25px 60px rgba(217, 158, 166, 0.18);
  cursor: default;
  pointer-events: auto;
}

.service-card-grain {
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.015'/%3E%3C/svg%3E");
  pointer-events: none;
  z-index: 1;
}

/* Compact layout inside cards */
.service-card-compact {
  display: flex;
  flex-direction: column;
  position: relative;
  z-index: 2;
}

.service-card-number {
  font-family: var(--font-serif);
  font-size: 3.5rem;
  line-height: 1;
  color: rgba(217, 158, 166, 0.25);
  font-weight: 300;
  margin-bottom: 5px;
  transition: color 0.4s ease;
}

.service-card[data-active="true"] .service-card-number {
  color: rgba(217, 158, 166, 0.55);
}

.service-icon-wrapper {
  margin-bottom: 20px;
  color: var(--color-primary-blush);
  background: rgba(217, 158, 166, 0.1);
  width: 54px;
  height: 54px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1.5px solid rgba(217, 158, 166, 0.4);
  box-shadow: 0 4px 12px rgba(217, 158, 166, 0.05);
  transition: var(--transition-smooth);
}

.service-card:hover .service-icon-wrapper {
  transform: scale(1.05);
  border-color: var(--color-primary-blush);
}

.service-icon-svg {
  width: 24px;
  height: 24px;
  stroke-width: 1.5;
  transition: var(--transition-smooth);
}

.service-card-compact .service-card-title {
  font-size: 1.8rem;
  font-weight: 400;
  letter-spacing: -0.01em;
  margin: 10px 0 0 0;
  color: var(--color-text-dark);
}

.service-card-compact .service-card-title::after {
  content: '';
  display: block;
  width: 40px;
  height: 1.5px;
  background-color: var(--color-primary-blush);
  margin-top: 15px;
  transition: var(--transition-smooth);
}

.service-card:hover .service-card-title::after {
  width: 60px;
}

.service-card[data-active="true"] .service-card-title::after {
  width: 75px;
  background-color: var(--color-secondary-blush);
}

/* Expanded layout (Active only) */
.service-card-expanded-wrapper {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.5s cubic-bezier(0.25, 1, 0.5, 1), opacity 0.5s cubic-bezier(0.25, 1, 0.5, 1);
  opacity: 0;
  position: relative;
  z-index: 2;
  overflow: hidden;
}

.service-card[data-active="true"] .service-card-expanded-wrapper {
  grid-template-rows: 1fr;
  opacity: 1;
}

.service-card-expanded {
  min-height: 0;
}

.service-card-desc {
  font-size: 0.98rem;
  color: var(--color-text-muted);
  font-weight: 300;
  line-height: 1.6;
  margin-top: 20px;
}

.service-benefits {
  list-style: none;
  padding: 0;
  margin: 20px 0 0 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.service-benefits li {
  font-size: 0.9rem;
  font-weight: 400;
  color: var(--color-text-dark);
  display: flex;
  align-items: center;
  gap: 10px;
}

.benefit-check {
  width: 14px;
  height: 14px;
  color: var(--color-primary-blush);
  flex-shrink: 0;
}

/* Abstract Graphic Accent */
.service-card-graphic {
  position: absolute;
  bottom: 25px;
  right: 25px;
  width: 100px;
  height: 100px;
  opacity: 0.15;
  transition: opacity 0.5s ease, transform 0.5s ease;
  pointer-events: none;
  z-index: 1;
}

.service-card[data-active="true"] .service-card-graphic {
  opacity: 0.45;
  transform: scale(1.05);
}

.abstract-graphic-svg {
  width: 100%;
  height: 100%;
}

.abstract-graphic-svg stroke {
  stroke: var(--color-primary-blush);
}

/* Subtle Card CTA */
/* Now a real <button> (it opens the dialog, it does not navigate), so the UA
   chrome is reset and vertical padding lifts the hit area from 20px to >=24px
   without moving the text: the 25px top margin absorbs the new padding. */
.btn-discuss-service {
  display: inline-flex;
  align-items: center;
  margin-top: 19px;
  padding: 6px 0;
  background: none;
  border: none;
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.8rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-blush-text);
  text-decoration: none;
  text-align: left;
  cursor: pointer;
  transition: var(--transition-fast);
}

.btn-discuss-service:hover {
  color: var(--color-text-dark);
}

/* Navigation Buttons styling - Closer to track */
.carousel-nav-btn {
  background: rgba(250, 246, 240, 0.9);
  border: 1.5px solid rgba(217, 158, 166, 0.35);
  color: var(--color-text-dark);
  width: 54px;
  height: 54px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.3s cubic-bezier(0.25, 1, 0.5, 1);
  box-shadow: 0 4px 15px rgba(217, 158, 166, 0.05);
  z-index: 20;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

.carousel-nav-btn:hover {
  background: var(--color-warm-ivory);
  border-color: var(--color-primary-blush);
  color: var(--color-primary-blush);
  box-shadow: 0 6px 20px rgba(217, 158, 166, 0.15);
}

.carousel-nav-btn.prev-btn {
  left: 20px; /* Moved closer */
}

.carousel-nav-btn.next-btn {
  right: 20px; /* Moved closer */
}

.nav-arrow-svg {
  width: 22px;
  height: 22px;
}

/* Indicators styling */
.carousel-dots-container {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 0;
  margin-top: 30px;
}

/* 8px painted dot inside a real 24x24 hit area (WCAG 2.5.8). Container gap
   drops to 0 so the added padding does not spread the row out. */
.carousel-dot {
  background: rgba(217, 158, 166, 0.25);
  background-clip: content-box;
  border: none;
  box-sizing: content-box;
  width: 8px;
  height: 8px;
  padding: 8px;
  border-radius: 50%;
  cursor: pointer;
  transition: background-color 0.4s cubic-bezier(0.25, 1, 0.5, 1),
              width 0.4s cubic-bezier(0.25, 1, 0.5, 1),
              border-radius 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

.carousel-dot.active {
  background: var(--color-primary-blush);
  background-clip: content-box;
  width: 24px;
  border-radius: 4px;
}

/* Keyboard accessibility */
.service-card:focus-visible,
.carousel-nav-btn:focus-visible,
.carousel-dot:focus-visible {
  outline: 2px solid var(--color-blush-text);
  outline-offset: 4px;
}

/* ==========================================
   MOBILE & TABLET RESPONSIVE CAROUSEL
   ========================================== */
@media (max-width: 991px) {
  .services-carousel-wrapper {
    max-width: 100%;
  }
  .carousel-nav-btn.prev-btn {
    left: 10px;
  }
  .carousel-nav-btn.next-btn {
    right: 10px;
  }
  .service-card {
    width: 440px;
  }
  .services-carousel-viewport {
    height: 520px;
  }
}

@media (max-width: 768px) {
  .services-section {
    padding: 60px 0;
  }

  .services-carousel-wrapper {
    perspective: none;
    margin: 30px auto 10px auto;
    max-width: 100%;
  }

  .services-carousel-viewport {
    height: auto;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    -ms-overflow-style: none;
  }

  .services-carousel-viewport::-webkit-scrollbar {
    display: none;
  }

  .services-carousel-track {
    display: flex;
    position: relative;
    width: auto;
    height: auto;
    transform: none !important;
    padding: 10px calc((100vw - 88vw) / 2);
    gap: 16px;
  }

  .service-card {
    position: relative;
    top: auto;
    left: auto;
    flex: 0 0 88vw;
    max-width: none;
    transform: none !important;
    opacity: 1 !important;
    cursor: default;
    scroll-snap-align: center;
    box-shadow: 0 10px 30px rgba(217, 158, 166, 0.08);
    pointer-events: auto;
    min-height: auto;
    padding: 28px 22px;
  }

  .service-card-desc {
    font-size: 0.95rem;
    line-height: 1.65;
  }

  .service-card-expanded-wrapper {
    grid-template-rows: 1fr;
    opacity: 1;
  }

  .carousel-nav-btn {
    display: none !important;
  }

  .services-section {
    padding-bottom: 40px;
  }
}

/* Services tablet card sizing */
@media (min-width: 769px) and (max-width: 1024px) {
  .service-card {
    width: clamp(420px, 55vw, 520px);
  }
}

/* Accessibility: respect prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
  .service-card,
  .service-card-expanded-wrapper,
  .carousel-nav-btn,
  .carousel-dot {
    transition: none !important;
  }
}

/* ==========================================
   ABOUT SECTION
   ========================================== */

.about-section {
  background-color: #F6EFE6;                            /* Warm beige, slightly lighter than Packages */
  border-top: 1px solid rgba(217, 158, 166, 0.22);
  border-bottom: 1px solid rgba(217, 158, 166, 0.22);
  padding: clamp(80px, 8vw, 120px) 0;
  position: relative;
}

.about-grid {
  display: grid;
  grid-template-columns: 0.44fr 0.56fr;
  gap: clamp(60px, 7vw, 110px);
  align-items: center;
  max-width: 1280px;
  margin: 0 auto;
}

.about-image-wrapper {
  position: relative;
  width: 100%;
  max-width: 440px;
  margin: 0 auto;
  transition: var(--transition-smooth);
}

.about-image-container {
  border-radius: 200px 200px 30px 30px;
  overflow: hidden;
  aspect-ratio: 0.8;
  position: relative;
  background-color: var(--color-primary-blush-light);
  border: 1px solid var(--color-warm-ivory-border);
  box-shadow: var(--shadow-editorial);
  z-index: 2;
  transition: var(--transition-smooth);
}

.about-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(10%) contrast(102%);
  transition: var(--transition-smooth);
}

.about-image-wrapper:hover .about-image {
  transform: scale(1.03);
  filter: grayscale(0%);
}

.about-frame-accent {
  position: absolute;
  top: 18px;
  left: -16px;
  width: 100%;
  height: 100%;
  border-radius: 200px 200px 30px 30px;
  border: 1px solid rgba(217, 158, 166, 0.55);          /* Slightly more subtle outline */
  z-index: 1;
  pointer-events: none;
  transition: var(--transition-smooth);
}

.about-image-wrapper:hover .about-frame-accent {
  transform: translate(8px, -8px);
  border-color: var(--color-secondary-blush);
}

.about-text-content {
  transition: var(--transition-smooth);
}

.about-quote {
  font-family: var(--font-serif);
  font-size: clamp(2.6rem, 3.5vw, 3.8rem);
  line-height: 1.08;
  font-weight: 300;
  color: var(--color-charcoal);
  margin-bottom: 28px;
  max-width: 650px;
}

.about-bio {
  font-size: clamp(1rem, 1.1vw, 1.1rem);
  color: var(--color-text-dark);
  font-weight: 300;
  line-height: 1.7;
  margin-bottom: 20px;
  max-width: 620px;
}

.about-bio + .about-bio {
  margin-bottom: 0;                                     /* Last paragraph has no bottom margin */
}

.about-details-list {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px 24px;
  margin-top: 30px;
  padding-top: 26px;
  border-top: 1px solid rgba(217, 158, 166, 0.3);       /* Subtle blush divider above highlights */
}

.about-list-item {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 0.95rem;
  color: var(--color-text-dark);
  font-weight: 500;
  line-height: 1.4;
}

.about-bullet {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background-color: var(--color-primary-blush);
  flex-shrink: 0;
}

/* ---- About Section Responsive ---- */
@media (max-width: 1024px) {
  .about-grid {
    gap: clamp(40px, 5vw, 60px);
  }
  .about-image-wrapper {
    max-width: 380px;
  }
  .about-quote {
    font-size: clamp(2.2rem, 3vw, 3rem);
  }
}

@media (max-width: 768px) {
  .about-grid {
    grid-template-columns: 1fr;
    gap: 40px;
  }
  .about-image-wrapper {
    max-width: 380px;
    margin: 0 auto;
  }
  .about-quote {
    font-size: clamp(2rem, 4.5vw, 2.5rem);
    line-height: 1.12;
    max-width: 100%;
  }
  .about-bio {
    max-width: 100%;
  }
  .about-details-list {
    grid-template-columns: repeat(2, 1fr);
    gap: 12px 20px;
  }
  .about-frame-accent {
    top: 14px;
    left: -12px;
  }
}

@media (max-width: 430px) {
  .about-section {
    padding: clamp(56px, 7vw, 80px) 0;
  }
  .about-image-wrapper {
    max-width: 320px;
  }
  .about-quote {
    font-size: 1.9rem;
    line-height: 1.14;
  }
  .about-bio {
    font-size: 0.98rem;
    line-height: 1.65;
  }
  .about-details-list {
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .about-list-item {
    font-size: 0.9rem;
  }
}

/* ==========================================
   PACKAGES SECTION (REDESIGNED EDITORIAL BENCHMARK)
   ========================================== */

.packages-section {
  background-color: #F1E7DA;                            /* Deeper stone beige background */
  border-top: 1px solid rgba(217, 158, 166, 0.2);       /* Subtle visual transition border */
  padding: clamp(90px, 9vw, 130px) 0;
}

.packages-section .section-title-wrapper {
  margin-bottom: clamp(35px, 4vw, 50px);
}

.packages-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(20px, 3vw, 40px);
  margin-bottom: 30px;
  align-items: stretch;
}

.package-card {
  background: rgba(250, 246, 240, 0.85);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(217, 158, 166, 0.35);
  border-radius: 24px;
  padding: 55px 42px;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  min-height: 640px;
  transition: var(--transition-smooth);
  box-shadow: 0 15px 35px rgba(217, 158, 166, 0.05);
  position: relative;
}

.package-card:hover {
  transform: translateY(-8px);
  border-color: rgba(217, 158, 166, 0.7);
  box-shadow: 0 25px 50px rgba(217, 158, 166, 0.16);
}

/* FEATURED PACKAGE CARD - DEEP BLACK */
.package-card.popular {
  background: var(--color-charcoal) !important;
  border: 2.2px solid var(--color-primary-blush) !important;
  box-shadow: 0 20px 45px rgba(0, 0, 0, 0.35);
  padding: 68px 42px 62px 42px;                         /* Greater vertical padding */
  top: -15px;                                           /* Elevated card position */
}

/* --------------------------------------------------------------------------
   DARK-GROUND EXCEPTIONS to --color-blush-text.
   The accessible blush is tuned for light surfaces. On charcoal it inverts:
   #a94250 falls to ~3.1:1 while the original #d99ea6 already sits at ~8.7:1.
   These two contexts therefore keep the lighter blush.
   -------------------------------------------------------------------------- */
.services-section .section-tag,
.package-card.popular .package-starting {
  color: var(--color-primary-blush);
}

.package-card.popular .package-name,
.package-card.popular .package-price {
  color: #ffffff !important;
}

.package-card.popular .package-feature-item {
  color: #dddddd !important;
  border-bottom-color: rgba(255, 255, 255, 0.08);       /* Custom border dividers in list */
}

/* Redesigned Popular Card Button - Consistent black with special border highlight */
.package-card.popular .btn-glossy {
  background: linear-gradient(180deg, #333333 0%, #111111 100%);
  border: 1px solid var(--color-primary-blush);
  box-shadow: 0 4px 20px rgba(217, 158, 166, 0.25),
              inset 0 1px 1px rgba(255, 255, 255, 0.15);
}

.package-card.popular .btn-glossy:hover {
  border-color: #ffffff;
  box-shadow: 0 6px 25px rgba(255, 255, 255, 0.3);
  background: linear-gradient(180deg, #333333 0%, #111111 100%);
  color: #ffffff;
}

.badge-popular {
  position: absolute;
  top: 25px;
  right: 25px;
  background-color: var(--color-primary-blush);
  color: var(--color-charcoal);
  font-family: var(--font-sans);
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  padding: 6px 14px;
  border-radius: 30px;
  font-weight: 700;
}

.package-header {
  margin-bottom: 25px;
}

.package-name {
  font-family: var(--font-serif);
  font-size: 2.2rem;
  font-weight: 400;
  color: var(--color-charcoal);
  margin-bottom: 5px;
}

.package-price-wrap {
  margin-top: 15px;
  display: flex;
  align-items: baseline;
  gap: 4px;
}

.package-starting {
  font-family: var(--font-sans);
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--color-blush-text);
  display: block;
  font-weight: 700;
  margin-bottom: 2px;
}

.package-price {
  font-family: var(--font-serif);
  font-size: clamp(2.8rem, 3.5vw, 3.4rem);
  color: var(--color-text-dark);
  font-weight: 300;
  line-height: 1;
}

.package-price span.period {
  font-family: var(--font-sans);
  font-size: 0.9rem;
  color: var(--color-text-muted);
  font-weight: 400;
  margin-left: 2px;
}

.package-card.popular .package-price span.period { color: #aaaaaa; }

/* Checklist Item with thin border separators */
.package-features {
  list-style: none;
  margin: 25px 0 35px 0;
  flex-grow: 1;                                         /* Fills space pushing CTA down */
  padding-top: 10px;
  border-top: none;
}

.package-feature-item {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: clamp(0.88rem, 0.9vw, 0.98rem);
  color: var(--color-text-muted);
  line-height: 1.45;
  font-weight: 300;
  padding: 12px 0;
  border-bottom: 1px solid rgba(217, 158, 166, 0.15);    /* Horizontal separator lines */
}

.package-feature-item:last-child {
  border-bottom: none;
}

.package-feature-item svg {
  width: 16px;
  height: 16px;
  stroke: var(--color-primary-blush);
  stroke-width: 2.5;
  flex-shrink: 0;
}

/* One-time audit block style */
.audit-container {
  margin-top: 30px;                                     /* Brought closer to packages */
  max-width: 900px;
  margin-left: auto;
  margin-right: auto;
  background: rgba(217, 158, 166, 0.06);
  border: 1px dashed rgba(217, 158, 166, 0.7);
  border-radius: 24px;
  padding: 50px 60px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 40px;
  transition: var(--transition-smooth);
}

.audit-info { max-width: 520px; }
.audit-title { font-size: 2.2rem; margin-bottom: 12px; }
.audit-desc { font-size: 0.98rem; color: var(--color-text-muted); font-weight: 300; line-height: 1.6; }

.audit-pricing { text-align: right; flex-shrink: 0; }
.audit-price { font-family: var(--font-serif); font-size: 3.5rem; font-weight: 300; line-height: 1; color: var(--color-text-dark); }
.audit-payment-term {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  /* Small readable text on a light ground — 12px blush measured 1.83:1. */
  color: var(--color-blush-text);
  margin-top: 5px;
  display: block;
}

.audit-pricing .btn-glossy { margin-top: 15px; }

@media (max-width: 1024px) {
  /* PACKAGES HORIZONTAL SNAP CAROUSEL — tablet and mobile */
  .packages-grid {
    display: flex;
    align-items: flex-start;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    -ms-overflow-style: none;
    gap: 16px;
    padding: 10px calc((100vw - 90vw) / 2);
    margin-bottom: 20px;
    -webkit-overflow-scrolling: touch;
  }
  .packages-grid::-webkit-scrollbar {
    display: none;
  }
  /* The flex item is the reveal wrapper; sizing .package-card alone had no
     effect, which is why the three cards rendered at different widths. */
  .packages-grid > .package-card-reveal {
    flex: 0 0 clamp(300px, 62vw, 440px);
    display: flex;
  }
  .package-card {
    width: 100%;
    min-height: auto;
    padding: clamp(35px, 5vw, 48px) clamp(24px, 4vw, 36px);
    scroll-snap-align: center;
  }
  .package-card.popular {
    top: 0;
    padding: clamp(35px, 5vw, 48px) clamp(24px, 4vw, 36px);
  }
  .audit-container {
    flex-direction: column;
    text-align: center;
    padding: 40px 30px;
    gap: 25px;
  }
  .audit-pricing { text-align: center; }
}

@media (max-width: 768px) {
  .packages-grid {
    padding: 10px calc((100vw - 90vw) / 2);
  }
  .packages-grid > .package-card-reveal {
    flex: 0 0 82vw;
  }
}

/* Packages Carousel Pagination Dots */
.packages-carousel-dots {
  display: none;
  justify-content: center;
  align-items: center;
  gap: 0;
  margin-top: 8px;
  margin-bottom: 16px;
}

@media (max-width: 1024px) {
  .packages-carousel-dots {
    display: flex;
  }
  /* JS sets [hidden] when the track cannot actually scroll, so the control is
     never shown when it would do nothing. Higher specificity than the rule
     above, so no !important is needed. */
  .packages-carousel-dots[hidden] {
    display: none;
  }
}

/* The painted dot stays 8px, but content-box padding gives the button a real
   24x24 hit area (WCAG 2.5.8) that measures correctly, instead of relying on a
   pseudo-element overhang. Container gap drops to 0 so the visual rhythm is
   effectively unchanged. */
.packages-dot {
  background: rgba(217, 158, 166, 0.25);
  background-clip: content-box;
  border: none;
  box-sizing: content-box;
  width: 8px;
  height: 8px;
  padding: 8px;
  border-radius: 50%;
  cursor: pointer;
  transition: background-color 0.4s cubic-bezier(0.25, 1, 0.5, 1),
              width 0.4s cubic-bezier(0.25, 1, 0.5, 1),
              border-radius 0.4s cubic-bezier(0.25, 1, 0.5, 1);
  position: relative;
}

.packages-dot.active {
  background: var(--color-primary-blush);
  background-clip: content-box;
  width: 24px;
  border-radius: 4px;
}

@media (prefers-reduced-motion: reduce) {
  .packages-dot {
    transition: none;
  }
}

/* ==========================================
   OUR WORKFLOW SECTION
   ========================================== */

.how-we-work-section {
  background-color: var(--color-warm-ivory, #FAF5EE);
  border-top: 1px solid rgba(217, 158, 166, 0.28);
  padding: clamp(48px, 5vw, 68px) 0;
  position: relative;
}

.workflow-grid-wrapper {
  position: relative;
  max-width: 1220px;
  margin: 28px auto 0 auto;
}

.workflow-connector-line {
  position: absolute;
  top: 110px;
  left: 6%;
  right: 6%;
  height: 1px;
  background: rgba(217, 158, 166, 0.45);
  z-index: 1;
  pointer-events: none;
  transform-origin: left center;
  transform: scaleX(var(--workflow-line-scale, 1));
  will-change: transform;
}

.workflow-cards-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px;
  position: relative;
  z-index: 2;
  align-items: stretch;
}

.workflow-card-reveal {
  display: flex;
  flex-direction: column;
  height: 100%;
  opacity: var(--workflow-card-opacity, 1);
  transform: translate3d(0, var(--workflow-card-translate-y, 0px), 0);
  will-change: transform, opacity;
}

.workflow-card {
  flex: 1;
  display: flex;
  flex-direction: column;
  background: #FAF6F0;                                   /* Opaque warm cream card - cleanly masks connector line behind it */
  border: 1px solid rgba(217, 158, 166, 0.28);
  padding: clamp(34px, 3.2vw, 42px) clamp(28px, 2.8vw, 36px);
  border-radius: 12px;
  min-height: 270px;
  box-shadow: none;
  transition: border-color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
}

.workflow-card:hover {
  border-color: rgba(217, 158, 166, 0.55);
  box-shadow: 0 15px 35px rgba(217, 158, 166, 0.12);
  transform: translateY(-4px);
}

.step-num {
  font-family: var(--font-serif);
  font-size: clamp(2.2rem, 3.2vw, 2.75rem);
  font-weight: 300;
  line-height: 1;
  color: var(--color-blush-decor);
  margin-bottom: 16px;
  display: block;
  background: transparent;
  padding: 0;
  border-radius: 0;
  letter-spacing: 0.02em;
  text-transform: none;
}

.step-title {
  font-family: var(--font-serif);
  font-size: clamp(1.55rem, 2.2vw, 1.75rem);
  font-weight: 400;
  margin-bottom: 14px;
  line-height: 1.25;
  color: var(--color-text-dark);
}

.step-desc {
  font-family: var(--font-sans);
  font-size: clamp(1rem, 1.1vw, 1.05rem);
  color: var(--color-text-muted);
  line-height: 1.6;
  font-weight: 300;
}

/* ==========================================
   FAQ SECTION (LIGHT BACKGROUND - REMOVED BLACK)
   ========================================== */

.faq-section {
  background-color: rgba(250, 245, 238, 0.55);          /* Semi-transparent ivory — body blush gradients show through like Hero */
  border-top: 1px solid rgba(217, 158, 166, 0.28);      /* Restrained border separator */
  color: var(--color-text-dark);
  padding: clamp(60px, 6vw, 85px) 0;
  position: relative;
}

.faq-section h2 {
  color: var(--color-charcoal) !important;
}

.faq-accordion-container {
  max-width: 950px;                                     /* Increased usable width */
  margin: 0 auto;
}

.faq-item {
  border-bottom: 1px solid rgba(217, 158, 166, 0.35);    /* Blush border accent */
  margin-bottom: 15px;
  transition: var(--transition-smooth);
}

.faq-trigger {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: none;
  border: none;
  text-align: left;
  padding: 26px 20px;                                   /* Larger clickable target height */
  cursor: pointer;
  outline: none;
}

.faq-question {
  font-family: var(--font-serif);
  font-size: clamp(1.08rem, 1.5vw, 1.3rem);             /* Responsive question sizing */
  font-weight: 400;
  color: var(--color-charcoal);                         /* Dark text */
  transition: var(--transition-fast);
}

.faq-icon {
  position: relative;
  width: 20px;
  height: 20px;
  transition: var(--transition-smooth);
}

.faq-icon::before, .faq-icon::after {
  content: '';
  position: absolute;
  background-color: var(--color-charcoal);              /* Dark icon lines */
  transition: var(--transition-smooth);
}

.faq-icon::before { top: 9px; left: 0; width: 20px; height: 2px; }
.faq-icon::after { top: 0; left: 9px; width: 2px; height: 20px; }

.faq-item.active .faq-icon { transform: rotate(180deg); }
.faq-item.active .faq-icon::after {
  transform: scaleY(0);                                 /* Plus turns into minus */
  opacity: 0;
}

.faq-item.active .faq-icon::before {
  background-color: var(--color-primary-blush);
}

.faq-item.active .faq-question {
  color: var(--color-primary-blush);
}

.faq-panel {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

/* Collapsed panels carry the `hidden` attribute so their answers leave the
   accessibility tree entirely rather than merely being clipped to 0 height.
   JS removes it before expanding and restores it once the collapse finishes,
   so the transition still runs. */
.faq-panel[hidden] {
  display: none;
}

@media (prefers-reduced-motion: reduce) {
  .faq-panel {
    transition: none;
  }
}

.faq-content {
  padding: 0 15px 25px 15px;
  font-size: 1.02rem;
  color: var(--color-text-dark);
  line-height: 1.7;
  font-weight: 300;
}

@media (max-width: 768px) {
  .faq-question { font-size: 1.15rem; }
}

/* ==========================================
   DARK CONTRAST CALL TO ACTION (CTA)
   ========================================== */

.final-cta {
  padding-top: clamp(44px, 5vw, 70px);
  padding-bottom: clamp(64px, 7vw, 96px);
  background-color: rgba(250, 245, 238, 0.55);          /* Semi-transparent ivory — body blush gradients show through like Hero */
}

.final-cta .container {
  max-width: 1240px;
}

/* Scroll-Reveal wrapper around CTA canvas */
.cta-reveal-wrapper {
  opacity: var(--cta-opacity, 1);
  transform: translate3d(0, var(--cta-translate-y, 0px), 0);
  will-change: transform, opacity;
}

.cta-canvas {
  background-color: var(--color-charcoal);
  border-radius: 30px;
  padding: clamp(56px, 6vw, 88px) 8%;
  text-align: center;
  position: relative;
  overflow: hidden;
  box-shadow: 0 30px 70px rgba(0, 0, 0, 0.25);
  border: 1px solid var(--color-charcoal-border);
  width: 100%;
  margin: 0 auto;
}

.cta-noise-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: radial-gradient(circle at 80% 20%, rgba(217, 158, 166, 0.12) 0%, transparent 60%);
  z-index: 1;
  pointer-events: none;
}

.cta-tag {
  font-family: var(--font-sans);
  color: var(--color-primary-blush);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  margin-bottom: 25px;
  display: block;
  z-index: 2;
  position: relative;
}

.cta-title {
  color: var(--color-text-light);
  font-size: clamp(2.4rem, 4vw, 4rem);
  font-weight: 300;
  line-height: 1.15;
  max-width: 800px;
  margin: 0 auto 25px auto;
  letter-spacing: -0.01em;
  z-index: 2;
  position: relative;
}

.cta-title span.italic-call {
  font-family: var(--font-serif);
  font-style: italic;
  color: var(--color-secondary-blush);
}

.cta-desc {
  color: var(--color-text-light-muted);
  font-size: clamp(1rem, 1.2vw, 1.15rem);
  max-width: 600px;
  margin: 0 auto 40px auto;
  font-weight: 300;
  line-height: 1.7;
  z-index: 2;
  position: relative;
}

.cta-actions {
  z-index: 2;
  position: relative;
}

@media (max-width: 768px) {
  .final-cta {
    padding: clamp(30px, 4vw, 45px) 0;
  }
  .cta-canvas {
    padding: 48px 24px;
    border-radius: 24px;
  }
  .cta-title {
    font-size: clamp(1.8rem, 5vw, 2.2rem);
  }
  .cta-desc {
    margin-bottom: 25px;
  }
}

/* ==========================================
   FOOTER
   ========================================== */

.footer {
  background-color: var(--color-charcoal);
  color: var(--color-text-light-muted);
  padding: 80px 0 40px 0;
  border-top: 1px solid var(--color-charcoal-border);
  font-weight: 300;
  font-size: 0.95rem;
  z-index: 10;
  position: relative;
}

.footer-grid {
  display: grid;
  grid-template-columns: 1.5fr 1.5fr 1fr;
  gap: 50px;
  margin-bottom: 60px;
}

.footer-logo-area {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.footer-logo {
  font-family: var(--font-serif);
  font-size: 1.8rem;
  color: var(--color-text-light);
  text-decoration: none;
  line-height: 0.95;
}

.footer-logo span.sub {
  font-family: var(--font-sans);
  font-size: 0.65rem;
  letter-spacing: 0.4em;
  color: var(--color-primary-blush);
  text-transform: uppercase;
  display: block;
  margin-top: 4px;
}

.footer-bio {
  max-width: 320px;
  line-height: 1.6;
  font-size: 0.9rem;
}

.footer-title {
  font-family: var(--font-serif);
  font-size: 1.3rem;
  color: var(--color-text-light);
  margin-bottom: 25px;
  font-weight: 400;
}

.footer-contact { list-style: none; }
.footer-contact-item { margin-bottom: 15px; display: flex; flex-direction: column; gap: 3px; }
.footer-contact-label {
  font-size: 0.7rem;
  font-family: var(--font-sans);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--color-primary-blush);
}

.footer-contact-value {
  color: var(--color-text-light-muted);
  text-decoration: none;
  font-size: 0.95rem;
  transition: var(--transition-fast);
}

.footer-contact-value:hover { color: var(--color-secondary-blush); }

.footer-links {
  list-style: none;
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
}

.footer-link-item a {
  color: var(--color-text-light-muted);
  text-decoration: none;
  transition: var(--transition-fast);
}

.footer-link-item a:hover {
  color: var(--color-primary-blush);
  padding-left: 4px;
}

.footer-bottom {
  border-top: 1px solid var(--color-charcoal-border);
  padding-top: 30px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 0.85rem;
}

.footer-bottom-links { display: flex; gap: 25px; align-items: center; flex-wrap: wrap; justify-content: center; }
.footer-bottom-links a {
  color: var(--color-text-light-muted);
  text-decoration: none;
  transition: var(--transition-fast);
  /* 23px -> 24px minimum target (WCAG 2.5.8) via inline-flex + min-height. */
  display: inline-flex;
  align-items: center;
  min-height: 24px;
}
.footer-bottom-links a:hover { color: var(--color-primary-blush); }

@media (max-width: 768px) {
  .footer-grid { grid-template-columns: 1fr; gap: 40px; }
  .footer-bottom { flex-direction: column; gap: 15px; text-align: center; }
}

/* ==========================================
   PREMIUM MODAL FORM & SUCCESS SCREEN
   ========================================== */

.modal {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 11000;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1);
  overflow-y: auto;                                     /* Enables scrolling overlay */
  padding: 20px 0;
}

.modal.active {
  opacity: 1;
  pointer-events: all;
}

.modal-backdrop {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(12, 12, 12, 0.6);
  backdrop-filter: blur(8px);
}

.modal-window {
  background-color: var(--color-warm-ivory);
  border: 1px solid rgba(217, 158, 166, 0.35);
  width: calc(100% - 28px);
  max-width: 520px;
  border-radius: 24px;
  box-shadow: 0 30px 60px rgba(0, 0, 0, 0.2);
  position: relative;
  z-index: 2;
  padding: clamp(28px, 5vw, 44px) clamp(18px, 4vw, 36px);
  transform: scale(0.9) translateY(20px);
  transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
  max-height: calc(100dvh - 32px);
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

.modal.active .modal-window { transform: scale(1) translateY(0); }

.modal-close {
  position: absolute;
  top: 16px;
  right: 16px;
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
  background: transparent;
  border: none;
  cursor: pointer;
  padding: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  z-index: 10;
  transition: background-color 0.2s ease;
}

.modal-close:active {
  background-color: rgba(217, 158, 166, 0.15);
}

.modal-close svg {
  width: 22px;
  height: 22px;
  stroke: var(--color-charcoal);
  transition: var(--transition-fast);
  stroke-width: 2;
}

.modal-close:hover svg {
  stroke: var(--color-primary-blush);
  transform: rotate(90deg);
}

.modal-header { margin-bottom: 20px; }
.modal-title { font-size: clamp(1.8rem, 5vw, 2.2rem); font-weight: 400; }
.modal-subtitle { font-size: 0.92rem; color: var(--color-text-muted); margin-top: 6px; font-weight: 300; }

.form-group { margin-bottom: 12px; }
.form-label {
  display: block;
  font-family: var(--font-sans);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-weight: 600;
  margin-bottom: 6px;
  color: var(--color-text-dark);
}

.form-control {
  width: 100%;
  background-color: rgba(248, 245, 238, 0.8);
  border: 1px solid rgba(217, 158, 166, 0.25);
  font-family: var(--font-sans);
  font-size: 0.95rem;
  padding: 12px 16px;
  border-radius: 12px;
  color: var(--color-text-dark);
  outline: none;
  transition: var(--transition-fast);
}

.form-control:focus {
  border-color: var(--color-primary-blush);
  background-color: #ffffff;
  box-shadow: 0 4px 15px rgba(217, 158, 166, 0.08);
}

.form-control.invalid {
  border-color: #c9302c;
  background-color: rgba(201, 48, 44, 0.02);
}

.error-msg {
  display: block;
  font-size: 0.74rem;
  color: #c9302c;
  margin-top: 3px;
  min-height: 0;
  font-family: var(--font-sans);
  font-weight: 500;
}

@media (max-height: 720px) {
  .modal-window {
    padding-bottom: 14px;
  }
  .form-actions {
    position: sticky;
    bottom: -1px;
    background: var(--color-warm-ivory);
    padding: 10px 0 calc(6px + env(safe-area-inset-bottom)) 0;
    margin-top: 12px;
    border-top: 1px solid rgba(217, 158, 166, 0.2);
    z-index: 5;
  }
}

.form-error-banner {
  background-color: rgba(201, 48, 44, 0.08);
  border: 1px solid #c9302c;
  border-radius: 8px;
  color: #c9302c;
  font-size: 0.85rem;
  padding: 12px 15px;
  margin-bottom: 20px;
  font-family: var(--font-sans);
  font-weight: 500;
  line-height: 1.5;
}

.form-error-banner a,
.error-email-link {
  color: #c9302c;
  text-decoration: underline;
  font-weight: 600;
}

.form-error-banner a:hover,
.error-email-link:hover {
  text-decoration: none;
}

textarea.form-control { resize: vertical; min-height: 90px; }
.form-actions { margin-top: 25px; }
.form-actions .btn-glossy { width: 100%; }

.modal-success-screen {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: var(--color-warm-ivory);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 45px;
  z-index: 3;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.4s ease;
}

.modal-success-screen.active { opacity: 1; pointer-events: all; }
.success-icon-svg { width: 64px; height: 64px; color: var(--color-primary-blush); margin-bottom: 25px; }

@media (max-width: 768px) {
  .modal-window { padding: 30px 20px; }
}

/* Active Nav Links Highlight Spy */
.nav-link.active-nav {
  color: var(--color-primary-blush) !important;
}
.nav-link.active-nav::after {
  transform: scaleX(1) !important;
}

/* Anchor Link Offset scroll pad.
   The header is not a fixed height. Measured in-browser: 122px up to 430px,
   128px from 768px to 1279px, 94px from 1280px up. A single 90px pad let
   section headings land underneath it at tablet and mid widths, so the value
   now tracks the breakpoints (measured height + ~12px breathing room). */
html {
  scroll-padding-top: 134px;
}

@media (min-width: 1025px) and (max-width: 1279px) {
  html { scroll-padding-top: 140px; }
}

@media (min-width: 1280px) {
  html { scroll-padding-top: 108px; }
}

/* ==========================================
   EDITORIAL BLOGS PAGE & READER OVERLAYS
   ========================================== */

.blog-hero {
  padding-top: 180px;
  padding-bottom: 60px;
  text-align: center;
}

.blog-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px;
  margin-bottom: 80px;
}

.blog-card {
  background: var(--color-warm-ivory-card);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(217, 158, 166, 0.28);
  border-radius: 20px;
  overflow: hidden;
  box-shadow: var(--shadow-editorial);
  display: flex;
  flex-direction: column;
  height: 100%;
  transition: var(--transition-smooth);
}

.blog-card-image-wrap {
  aspect-ratio: 1.5;
  width: 100%;
  overflow: hidden;
  position: relative;
  background-color: var(--color-primary-blush-light);
}

.blog-card-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: var(--transition-smooth);
}

.blog-card-meta {
  padding: 30px 30px 15px 30px;
  display: flex;
  gap: 15px;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 600;
}

.blog-card-category { color: var(--color-primary-blush); }
.blog-card-date { color: var(--color-text-muted); }

.blog-card-body {
  padding: 0 30px 30px 30px;
  flex-grow: 1;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.blog-card-title {
  font-size: 1.8rem;
  font-weight: 400;
  line-height: 1.25;
  margin-bottom: 15px;
  color: var(--color-text-dark);
}

.blog-card-title a { color: inherit; text-decoration: none; }
.blog-card-excerpt { font-size: 0.95rem; color: var(--color-text-muted); line-height: 1.6; font-weight: 300; margin-bottom: 25px; }

.blog-card-link {
  font-family: var(--font-sans);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--color-text-dark);
  text-decoration: none;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  transition: var(--transition-fast);
}

.blog-card-link svg { width: 14px; height: 14px; transition: var(--transition-smooth); stroke-width: 2.5; }

.blog-card:hover {
  transform: translateY(-8px);
  background-color: #ffffff;
  border-color: rgba(217, 158, 166, 0.45);
  box-shadow: 0 25px 50px rgba(217, 158, 166, 0.15);
}

.blog-card:hover .blog-card-image { transform: scale(1.05); }
.blog-card:hover .blog-card-link { color: var(--color-primary-blush); }
.blog-card:hover .blog-card-link svg { transform: translateX(5px); }

@media (max-width: 991px) {
  .blog-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 768px) {
  .blog-grid { grid-template-columns: 1fr; gap: 30px; }
  .blog-hero { padding-top: 140px; padding-bottom: 40px; }
}

/* Premium Blog Reader Drawer Overlay */
.blog-reader {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 12000;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1);
  display: flex;
  justify-content: flex-end;
}

.blog-reader.active { opacity: 1; pointer-events: all; }
.blog-reader-backdrop {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(12, 12, 12, 0.5);
  backdrop-filter: blur(8px);
}

.blog-reader-panel {
  width: 100%;
  max-width: 800px;
  height: 100%;
  background-color: var(--color-warm-ivory);
  box-shadow: -15px 0 40px rgba(0, 0, 0, 0.15);
  position: relative;
  z-index: 2;
  overflow-y: auto;
  padding: 80px 60px;
  transform: translate3d(100%, 0, 0);
  transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
  border-left: 1px solid var(--color-warm-ivory-border);
}

.blog-reader.active .blog-reader-panel { transform: translate3d(0, 0, 0); }

.blog-reader-close {
  position: absolute;
  top: 30px;
  left: 60px;
  background: none;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-sans);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--color-text-dark);
  font-weight: 600;
  transition: var(--transition-fast);
}

.blog-reader-close svg {
  width: 16px;
  height: 16px;
  stroke: var(--color-text-dark);
  transition: var(--transition-fast);
  stroke-width: 2.5;
}

.blog-reader-close:hover { color: var(--color-primary-blush); }
.blog-reader-close:hover svg { stroke: var(--color-primary-blush); transform: translateX(-4px); }

.blog-reader-content { margin-top: 50px; }
.blog-reader-meta { margin-bottom: 25px; font-size: 0.8rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em; }
.blog-reader-category { color: var(--color-primary-blush); }
.blog-reader-date { color: var(--color-text-muted); margin-left: 15px; }
.blog-reader-title { font-size: 3.5rem; font-weight: 300; line-height: 1.1; color: var(--color-text-dark); margin-bottom: 35px; }

.blog-reader-img-wrap {
  width: 100%;
  aspect-ratio: 1.8;
  border-radius: 20px;
  overflow: hidden;
  margin-bottom: 40px;
  background-color: var(--color-primary-blush-light);
  border: 1px solid var(--color-warm-ivory-border);
}

.blog-reader-img { width: 100%; height: 100%; object-fit: cover; }
.blog-reader-body { font-size: 1.1rem; color: var(--color-text-dark); line-height: 1.8; font-weight: 300; }
.blog-reader-body p { margin-bottom: 25px; }
.blog-reader-body h3 { font-size: 2rem; margin-top: 40px; margin-bottom: 20px; }

.blog-reader-body blockquote {
  font-family: var(--font-serif);
  font-size: 1.8rem;
  line-height: 1.3;
  color: var(--color-primary-blush);
  border-left: 2px solid var(--color-primary-blush);
  padding-left: 30px;
  margin: 35px 0;
  font-style: italic;
}

@media (max-width: 768px) {
  .blog-reader-panel { padding: 60px 30px; }
  .blog-reader-close { left: 30px; }
  .blog-reader-title { font-size: 2.4rem; }
}

@keyframes fade-settle {
  0% {
    opacity: 0;
    transform: translateY(20px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ========================================================
   HOMEPAGE SCROLL REVEAL WRAPPERS & RESOLVED VARIABLES
   ======================================================== */

/* Default State (without JS or prefers-reduced-motion): Fully Visible */
.services-header-reveal,
.services-carousel-reveal-wrapper,
.founder-image-reveal,
.founder-copy-reveal,
.packages-header-reveal,
.package-card-reveal,
.audit-reveal-wrapper,
.workflow-header-reveal,
.workflow-card-reveal,
.faq-header-reveal,
.faq-reveal-wrapper,
.cta-reveal-wrapper {
  opacity: 1;
  transform: none;
  transition: none;
}

.workflow-connector-line {
  transform: scaleX(var(--workflow-line-scale, 1));
}

/* Motion-Ready State (when JS confirms animation support) */
.motion-ready .services-header-reveal {
  opacity: var(--services-opacity, 0.97);
  transform: translate3d(var(--services-translate-x, -40px), var(--services-translate-y, 0px), 0);
  will-change: transform, opacity;
}

.motion-ready .services-carousel-reveal-wrapper {
  opacity: var(--services-carousel-opacity, 0.97);
  transform: translate3d(0, var(--services-carousel-translate-y, 40px), 0);
  will-change: transform, opacity;
}

.motion-ready .founder-image-reveal {
  opacity: var(--founder-image-opacity, 0.97);
  transform: translate3d(var(--founder-image-translate-x, -50px), 0, 0);
  will-change: transform, opacity;
}

.motion-ready .founder-copy-reveal {
  opacity: var(--founder-copy-opacity, 0.97);
  transform: translate3d(var(--founder-copy-translate-x, 50px), 0, 0);
  will-change: transform, opacity;
}

.motion-ready .packages-header-reveal {
  opacity: var(--packages-opacity, 0.97);
  transform: translate3d(0, var(--packages-translate-y, 30px), 0);
  will-change: transform, opacity;
}

.motion-ready .package-card-reveal {
  opacity: var(--package-opacity, 0.97);
  transform: translate3d(0, var(--package-translate-y, 40px), 0);
  will-change: transform, opacity;
}

.motion-ready .audit-reveal-wrapper {
  opacity: var(--audit-opacity, 0.97);
  transform: translate3d(0, var(--audit-translate-y, 30px), 0);
  will-change: transform, opacity;
}

.motion-ready .workflow-header-reveal {
  opacity: var(--workflow-opacity, 0.97);
  transform: translate3d(0, var(--workflow-translate-y, 30px), 0);
  will-change: transform, opacity;
}

.motion-ready .workflow-card-reveal {
  opacity: var(--workflow-card-opacity, 0.97);
  transform: translate3d(0, var(--workflow-card-translate-y, 30px), 0);
  will-change: transform, opacity;
}

.motion-ready .faq-header-reveal {
  opacity: var(--faq-opacity, 0.97);
  transform: translate3d(0, var(--faq-translate-y, 30px), 0);
  will-change: transform, opacity;
}

.motion-ready .faq-reveal-wrapper {
  opacity: var(--faq-item-opacity, 0.97);
  transform: translate3d(0, var(--faq-item-translate-y, 25px), 0);
  will-change: transform, opacity;
}

.motion-ready .cta-reveal-wrapper {
  opacity: var(--cta-opacity, 0.97);
  transform: translate3d(0, var(--cta-translate-y, 40px), 0);
  will-change: transform, opacity;
}

.motion-ready .workflow-connector-line {
  transform: scaleX(var(--workflow-line-scale, 0));
}

/* ==========================================
   MOBILE SCROLL REVEAL OVERRIDES
   Ensures transforms use Y-axis only on phones and reduced offsets on tablets.
   Values section: pure translateY, zero X throughout.
   ========================================== */

@media (max-width: 768px) {
  .motion-ready .values-reveal-heading,
  .motion-ready .values-reveal-pillar {
    transform: translate3d(0, var(--values-translate-y, 15px), 0);
  }

  .motion-ready .services-header-reveal {
    transform: translate3d(var(--services-translate-x, -15px), 0, 0);
  }

  .motion-ready .services-carousel-reveal-wrapper {
    transform: translate3d(0, var(--services-carousel-translate-y, 20px), 0);
  }

  .motion-ready .founder-image-reveal,
  .motion-ready .founder-copy-reveal {
    transform: translate3d(0, var(--founder-translate-y, 20px), 0);
  }

  .motion-ready .packages-header-reveal {
    transform: translate3d(0, var(--packages-translate-y, 15px), 0);
  }

  /* Package cards in carousel mode: no individual card transforms */
  .motion-ready .package-card-reveal {
    opacity: var(--package-opacity, 1);
    transform: none;
  }

  .motion-ready .audit-reveal-wrapper {
    transform: translate3d(0, var(--audit-translate-y, 15px), 0);
  }

  .motion-ready .workflow-header-reveal {
    transform: translate3d(0, var(--workflow-translate-y, 15px), 0);
  }

  .motion-ready .workflow-card-reveal {
    transform: translate3d(0, var(--workflow-card-translate-y, 12px), 0);
  }

  .motion-ready .faq-header-reveal {
    transform: translate3d(0, var(--faq-translate-y, 12px), 0);
  }

  .motion-ready .faq-reveal-wrapper {
    transform: translate3d(0, var(--faq-item-translate-y, 10px), 0);
  }

  .motion-ready .cta-reveal-wrapper {
    transform: translate3d(0, var(--cta-translate-y, 12px), 0);
  }
}

@media (min-width: 769px) and (max-width: 1024px) {
  .motion-ready .founder-image-reveal {
    transform: translate3d(var(--founder-image-translate-x, -15px), 0, 0);
  }

  .motion-ready .founder-copy-reveal {
    transform: translate3d(var(--founder-copy-translate-x, 15px), 0, 0);
  }

  .motion-ready .services-header-reveal {
    transform: translate3d(var(--services-translate-x, -20px), 0, 0);
  }

  /* Package cards in tablet carousel: no individual card transforms */
  .motion-ready .package-card-reveal {
    opacity: var(--package-opacity, 1);
    transform: none;
  }
}

/* ==========================================
   FORM RESPONSIVENESS & ACCESSIBILITY POLISH
   ========================================== */

.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 15px;
}

@media (max-width: 580px) {
  .form-row {
    grid-template-columns: 1fr;
    gap: 0;
  }
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 2px solid var(--color-blush-text);
  outline-offset: 3px;
}

/* ==========================================
   PHASE 1: DEDICATED MOBILE LAYOUT & COMPOSITION (320px - 1024px)
   ========================================== */

/* Global Mobile Typography & Word-wrap Safeguards */
@media (max-width: 1024px) {
  h1, h2, h3, h4 {
    text-wrap: balance;
    word-wrap: break-word;
    overflow-wrap: break-word;
  }
  p, li, span {
    text-wrap: pretty;
    word-wrap: break-word;
    overflow-wrap: break-word;
  }
  img, svg, video, canvas {
    max-width: 100%;
    height: auto;
  }
  .container {
    width: 100%;
    padding-left: clamp(16px, 4vw, 32px);
    padding-right: clamp(16px, 4vw, 32px);
  }
}

/* ==========================================
   PHASE 1: MOBILE & TABLET REWORK SYSTEM (Scoped <= 1279px)
   ========================================== */

/* Base container for collage wrapper - desktop pass-through */
.hero-collage-wrapper {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

/* Hide mobile-only drawer components on desktop */
.nav-mobile-top,
.nav-mobile-bottom {
  display: none;
}
.nav-links-wrapper {
  display: flex;
  align-items: center;
  gap: 32px;
}

/* Minimal 2-Line Burger Button */
.burger {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
  padding: 10px 8px;
  background: transparent;
  border: none;
  cursor: pointer;
  z-index: 10003;
  position: relative;
}

.burger span {
  display: block;
  width: 24px;
  height: 2px;
  background-color: var(--color-charcoal);
  border-radius: 2px;
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease;
  margin: 0 auto;
}

/* Hide 3rd span to create a clean 2-line icon */
.burger span:nth-child(3) {
  display: none !important;
}

.burger.toggle span:nth-child(1) {
  transform: translateY(4px) rotate(45deg);
}

.burger.toggle span:nth-child(2) {
  transform: translateY(-4px) rotate(-45deg);
}

/* ==========================================================================
   RESPONSIVE FOUNDATION — HEADER, MOBILE NAV, HERO, COLLAGE, MOTION, MARQUEE
   Scope: everything in this file region is gated to viewports up to 1279px.
   Desktop (>= 1280px) inherits none of it.

   COLLAGE COORDINATE SYSTEM
   -------------------------
   `.hero-collage` is authored as a 500 x 500 canvas, but the cards are deliberately
   hung off its edges with negative / oversized offsets. The composition's TRUE
   visual bounds, measured from the live card boxes, are:

       left   -50   (card-reel)          right   540   (card-plan)
       top    -20   (card-quote)         bottom  530   (card-top-post)

       => 590 x 550, i.e. 90px wider and 50px taller than the declared canvas,
          and origin-shifted by (-50, -20).

   Every number below derives from those four constants, exposed as custom
   properties so the geometry has exactly one source of truth.
   ========================================================================== */

:root {
  /* Authored canvas */
  --collage-canvas: 500;
  /* True composition bounds within that canvas */
  --collage-bleed-left: 50;
  --collage-bleed-top: 20;
  --collage-content-w: 590;
  --collage-content-h: 550;
  /* Clear space between the lowest collage card and the black marquee */
  --collage-to-marquee: 28px;
}

@media (max-width: 1279px) {
  .burger {
    display: flex;
  }

  .header-action {
    display: none;
  }

  .header-container {
    height: 78px;
    display: flex;
    align-items: center;
    justify-content: space-between;
  }

  /* ------------------------------------------------------------------
     MOBILE NAVIGATION — full-screen drawer
     The panel slides and fades as ONE unit. Opacity is only used at the
     very start of the curve, so the page is never revealed underneath
     while the menu text is still legible.
     ------------------------------------------------------------------ */
  .nav {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    height: 100vh;          /* fallback first */
    height: 100dvh;         /* then dynamic viewport where supported */
    background-color: var(--color-warm-ivory, #FAF5EE);
    box-shadow: none;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: calc(max(20px, env(safe-area-inset-top)) + 4px) 24px
             calc(max(24px, env(safe-area-inset-bottom)) + 4px) 24px;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translate3d(0, -100%, 0);
    transition: transform 320ms cubic-bezier(0.32, 0.72, 0, 1),
                opacity 160ms linear 160ms,
                visibility 0s linear 320ms;
    z-index: 10002;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }

  .nav.active {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translate3d(0, 0, 0);
    transition: transform 340ms cubic-bezier(0.32, 0.72, 0, 1),
                opacity 120ms linear,
                visibility 0s linear 0s;
  }

  /* The burger lives above the drawer (z-index 10003). Retiring it while the
     drawer is open is what removes the stray rotated line that used to sit
     next to the drawer's own close button. */
  .nav.active ~ .header-action,
  body.nav-open .burger {
    opacity: 0;
    pointer-events: none;
    visibility: hidden;
  }

  .nav-mobile-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    flex: 0 0 auto;
    min-height: 48px;
    border-bottom: 1px solid rgba(217, 158, 166, 0.2);
    padding-bottom: 10px;
  }

  /* Mirrors `.logo`, including its 6px inter-word gap — without the flex gap the
     drawer rendered the wordmark as "twentyfivesocial". */
  .nav-mobile-logo {
    font-family: var(--font-serif);
    font-size: 1.4rem;
    font-weight: 300;
    font-style: italic;
    color: var(--color-text-dark);
    text-decoration: none;
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    line-height: 1;
  }

  /* Close button: exactly two lines, dead-centred, 44x44 hit area, no motion
     on toggle (the icon is only ever rendered in one state). */
  .nav-close-btn {
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    color: var(--color-charcoal);
    cursor: pointer;
    padding: 10px;
    margin-right: -10px;
    border-radius: 50%;
    -webkit-tap-highlight-color: transparent;
    transition: background-color 0.2s ease;
  }
  .nav-close-btn svg {
    display: block;
    width: 24px;
    height: 24px;
    transform: none;
  }
  .nav-close-btn:active {
    background-color: rgba(217, 158, 166, 0.14);
  }
  .nav-close-btn:focus-visible {
    outline: 2px solid var(--color-blush-text);
    outline-offset: 2px;
  }

  .nav-links-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: clamp(14px, 3vh, 22px);
    flex: 1 1 auto;
    margin: clamp(16px, 2.5vh, 28px) 0;
    width: 100%;
  }

  .nav-link {
    font-family: var(--font-serif);
    font-size: clamp(1.65rem, 5.5vw, 2.15rem);
    font-weight: 400;
    color: var(--color-text-dark);
    letter-spacing: normal;
    text-transform: none;
    opacity: 1;
    min-height: 48px;
    padding: 6px 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    transition: color 0.2s ease, transform 0.15s ease;
  }

  /* Underline pseudo-element is a desktop affordance only — inside the drawer it
     produced the "several links stay underlined after tapping" artefact. */
  .nav-link::after {
    content: none;
  }

  /* Touch feedback is momentary and cannot persist after the finger lifts. */
  .nav-link:active {
    color: var(--color-primary-blush);
    transform: scale(0.97);
  }

  .nav-mobile-bottom {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(10px, 1.8vh, 14px);
    width: 100%;
    flex: 0 0 auto;
    padding-top: clamp(12px, 1.8vh, 16px);
    border-top: 1px solid rgba(217, 158, 166, 0.2);
  }

  .nav-mobile-cta {
    width: 100%;
    max-width: 290px;
    min-height: 48px;
    display: inline-flex;
    justify-content: center;
    align-items: center;
    padding: 14px 28px;
  }

  .nav-mobile-email {
    font-family: var(--font-sans);
    font-size: 0.95rem;
    color: var(--color-text-muted);
    text-decoration: underline;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    transition: color 0.2s ease;
  }
  .nav-mobile-email:active {
    color: var(--color-primary-blush);
  }

  .nav-mobile-brand {
    font-family: var(--font-sans);
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-primary-blush);
    opacity: 0.85;
    text-align: center;
    margin-top: -2px;
    display: block;
  }

  /* Short screens (landscape phones). Touch targets stay at their 44px minimum, so
     below roughly 430px of height the drawer genuinely cannot fit its contents; it
     scrolls internally rather than crushing or clipping them. Above that it packs
     down to fit. */
  @media (max-height: 520px) {
    .nav-links-wrapper {
      gap: 4px;
      margin: 8px 0;
      justify-content: flex-start;
    }
    .nav-link {
      font-size: 1.1rem;
      min-height: 40px;
      padding: 2px 8px;
    }
    .nav-mobile-bottom {
      padding-top: 10px;
    }
    .nav-mobile-cta {
      padding: 10px 24px;
    }
    .nav-mobile-email {
      font-size: 0.85rem;
      min-height: 28px;
    }
  }

  /* Landscape phones are wide but very short: laying the four links out on two rows
     recovers enough height for the whole drawer to fit without scrolling. */
  @media (max-height: 460px) and (min-width: 600px) and (orientation: landscape) {
    .nav-links-wrapper {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      column-gap: 24px;
      row-gap: 4px;
      align-content: center;
      justify-items: center;
      max-width: 460px;
      margin-inline: auto;
    }
  }

  /* ------------------------------------------------------------------
     HERO — content driven height, natural document flow
     No 100vh / 100dvh / fixed height / absolute marquee below 1280px.
     ------------------------------------------------------------------ */
  /* `!important` here is deliberate and defensive: a blanket
     `section { padding: ... !important }` rule exists for <= 991px, and the clear
     space between the lowest collage card and the marquee must stay deterministic. */
  .hero {
    height: auto;
    min-height: 0;
    display: block;
    overflow: visible;
    padding-bottom: var(--collage-to-marquee) !important;
  }

  .hero-grid {
    margin-bottom: 0;
  }

  /* Reveal animation lives on .hero-content / .hero-visual (opacity + translateY).
     Below 1280px it is disabled so it can never fight the collage stage or the
     scale / float transform layers. */
  .hero-content,
  .hero-visual {
    opacity: 1;
    visibility: visible;
    animation: none;
  }

  .hero-content {
    transform: none;
  }

  /* ------------------------------------------------------------------
     RESPONSIVE HERO COLLAGE ARCHITECTURE — three isolated layers

       .hero-visual           LAYOUT STAGE
                              flow position, responsive width, reserved height.
                              Uses width / aspect-ratio / margin. NO transform.

       .hero-collage-wrapper  UNIFORM SCALING LAYER
                              transform: translate() scale() only.
                              Scales the whole 590 x 550 composition as one unit
                              and shifts it so its true top-left bleed lands on
                              the stage's top-left corner.

       .hero-collage          DECORATIVE MOTION LAYER
                              transform: translate3d() only, driven by CSS
                              keyframes. Never touched by layout or scaling.

       .collage-card          INDIVIDUAL CARD LAYER
                              its own transform, unchanged and isolated.

     The stage reserves height via `aspect-ratio: 590 / 550`, so the correct box is
     reserved by CSS alone with zero layout shift, before JS resolves the exact
     --collage-scale for the measured stage width.
     ------------------------------------------------------------------ */
  .hero-visual {
    /* Fallback scale: sized for the narrowest supported stage so the composition
       can never overflow before JS refines it. */
    --collage-scale: 0.47;

    display: block;
    position: relative;
    width: 100%;
    max-width: var(--collage-stage-max, 440px);
    aspect-ratio: var(--collage-content-w) / var(--collage-content-h);
    height: auto;
    min-height: 0;
    margin: clamp(14px, 3.5vw, 26px) auto 0 auto;
    overflow: visible;
    transform: none;
  }

  .hero-collage-wrapper {
    position: absolute;
    top: 0;
    left: 0;
    width: calc(var(--collage-canvas) * 1px);
    height: calc(var(--collage-canvas) * 1px);
    display: block;
    transform-origin: 0 0;
    transform:
      translate(calc(var(--collage-bleed-left) * var(--collage-scale) * 1px),
                calc(var(--collage-bleed-top)  * var(--collage-scale) * 1px))
      scale(var(--collage-scale));
    overflow: visible;
  }

  .hero-collage {
    position: relative;
    width: calc(var(--collage-canvas) * 1px);
    height: calc(var(--collage-canvas) * 1px);
    max-width: none;
    min-width: 0;
    transform-origin: 50% 50%;
    /* Motion layer only. */
    transform: translate3d(0, 0, 0);
    opacity: 1;
    visibility: visible;
    overflow: visible;
    animation: collage-drift 9s ease-in-out infinite alternate;
  }

  /* Per-card counter-drift, staggered so the composition breathes instead of
     sliding rigidly. Wrapper 4px + card 3px => ~7px peak, inside the 4-8px budget.
     These are CSS-only below 1280px; the JS parallax never writes to these cards
     outside the desktop fine-pointer path. */
  .hero-collage .collage-card {
    animation: collage-card-drift 7.5s ease-in-out infinite alternate;
  }
  .hero-collage .collage-card:nth-of-type(2n)   { animation-delay: -1.1s; animation-duration: 8.4s; }
  .hero-collage .collage-card:nth-of-type(3n)   { animation-delay: -2.3s; animation-duration: 6.9s; }
  .hero-collage .collage-card:nth-of-type(4n+1) { animation-delay: -3.4s; animation-duration: 9.1s; }

  /* Paused off-screen and when the tab is hidden (set from JS). */
  .hero-visual.motion-paused .hero-collage,
  .hero-visual.motion-paused .collage-card {
    animation-play-state: paused;
  }

  /* Hover elevation on the cards is a mouse affordance; a tap must not leave a
     card stuck in its hovered state. */
  .collage-card:hover {
    border-color: rgba(217, 158, 166, 0.28);
    box-shadow: 0 12px 35px rgba(217, 158, 166, 0.08),
                inset 0 1px 2px rgba(255, 255, 255, 0.4);
    z-index: 2;
  }

  /* ------------------------------------------------------------------
     PHONE — up to 767px: centred stacked composition
     ------------------------------------------------------------------ */
  @media (max-width: 767px) {
    .header-container {
      height: 72px;
    }

    .logo {
      font-size: clamp(1.25rem, 5vw, 1.4rem);
    }

    .hero {
      padding-top: max(88px, calc(72px + env(safe-area-inset-top) + 8px)) !important;
    }

    .hero-grid {
      display: flex;
      flex-direction: column;
      align-items: center;
      text-align: center;
      padding-left: clamp(20px, 5vw, 24px);
      padding-right: clamp(20px, 5vw, 24px);
      gap: 0;
    }

    .hero-content {
      display: flex;
      flex-direction: column;
      align-items: center;
      text-align: center;
      max-width: 100%;
      margin-bottom: 0;
    }

    .hero-tag {
      font-size: 0.78rem;
      letter-spacing: 0.12em;
      margin-bottom: 12px;
    }

    .hero-title {
      font-size: clamp(2.1rem, 7vw, 2.65rem);
      line-height: 1.1;
      margin-bottom: 14px;
      text-align: center;
      max-width: 440px;
    }

    .hero-text {
      font-size: clamp(0.95rem, 3.8vw, 1.05rem);
      line-height: 1.6;
      margin-bottom: 18px;
      text-align: center;
      max-width: 440px;
    }

    .hero .btn-book-call {
      width: 100%;
      max-width: 300px;
      display: inline-flex;
      justify-content: center;
      align-items: center;
      box-shadow: 0 8px 24px rgba(217, 158, 166, 0.22);
    }

    .hero-visual {
      --collage-stage-max: min(92vw, 440px);
      margin: clamp(10px, 3vw, 20px) auto 0 auto;
    }

    /* Marquee — phone */
    .marquee-section {
      height: 60px;
      padding: 0 !important;
    }
    .marquee-container {
      height: 60px;
      align-items: center;
    }
    .marquee-content {
      align-items: center;
    }
    .marquee-item {
      font-size: 0.9rem;
      padding: 0 18px;
    }
    .marquee-item::after {
      margin-left: 18px;
    }
  }

  /* Small phone (< 480px) */
  @media (max-width: 479px) {
    .hero-title {
      font-size: clamp(1.95rem, 8vw, 2.3rem);
    }
    .hero-grid {
      padding-left: 20px;
      padding-right: 20px;
    }
  }

  /* ------------------------------------------------------------------
     TABLET PORTRAIT — 768px to 959px: centred stacked, wider text column
     ------------------------------------------------------------------ */
  @media (min-width: 768px) and (max-width: 959px) {
    .hero {
      padding-top: max(115px, calc(78px + env(safe-area-inset-top) + 25px)) !important;
    }

    .hero-grid {
      display: flex;
      flex-direction: column;
      align-items: center;
      text-align: center;
      gap: 0;
    }

    .hero-content {
      display: flex;
      flex-direction: column;
      align-items: center;
      text-align: center;
      max-width: 640px;
      margin-bottom: 0;
    }

    .hero-title {
      font-size: clamp(2.8rem, 5vw, 3.4rem);
      line-height: 1.1;
      margin-bottom: 18px;
    }

    .hero-text {
      font-size: 1.1rem;
      line-height: 1.6;
      margin-bottom: 26px;
      max-width: 620px;
    }

    .hero .btn-book-call {
      width: auto;
      min-width: 290px;
      max-width: 310px;
    }

    .hero-visual {
      --collage-stage-max: 560px;
      margin-top: clamp(20px, 3.5vw, 32px);
    }

    /* Marquee — tablet */
    .marquee-section {
      height: 68px;
      padding: 0 !important;
    }
    .marquee-container {
      height: 68px;
      align-items: center;
    }
    .marquee-item {
      font-size: 1rem;
      padding: 0 24px;
    }
    .marquee-item::after {
      margin-left: 24px;
    }
  }

  /* ------------------------------------------------------------------
     TABLET & SMALL LAPTOP — 960px to 1279px: dedicated two-column layout
     Text left, collage right. Explicit visual-column tracks keep the collage
     inside the 460-540px band and stop the grid from collapsing into the
     oversized empty block that used to appear around 1024px.
     ------------------------------------------------------------------ */
  @media (min-width: 960px) and (max-width: 1279px) {
    .hero {
      padding-top: max(120px, calc(78px + env(safe-area-inset-top) + 30px)) !important;
    }

    .hero-grid {
      display: grid;
      grid-template-columns: minmax(0, 1fr) 460px;
      gap: clamp(24px, 3vw, 44px);
      align-items: center;
      margin-bottom: 0;
    }

    .hero-content {
      display: flex;
      flex-direction: column;
      align-items: flex-start;
      text-align: left;
      max-width: 100%;
      margin-bottom: 0;
    }

    .hero-title {
      font-size: clamp(2.6rem, 3.9vw, 3.5rem);
      line-height: 1.08;
      text-align: left;
      margin-bottom: 18px;
    }

    .hero-text {
      font-size: 1.05rem;
      line-height: 1.65;
      text-align: left;
      margin: 0 0 28px 0;
      max-width: 100%;
    }

    .hero .btn-book-call {
      width: auto;
      min-width: 290px;
      max-width: 310px;
      margin: 0;
    }

    /* The stage is a grid item: it fills its track and the track owns the width,
       so the two columns stay aligned and the hero height is set by the taller
       of the two rather than by a hard-coded visual height. */
    .hero-visual {
      --collage-stage-max: 100%;
      width: 100%;
      margin: 0;
    }

    /* Marquee — tablet / small laptop */
    .marquee-section {
      height: 68px;
      padding: 0 !important;
    }
    .marquee-container {
      height: 68px;
      align-items: center;
    }
    .marquee-item {
      font-size: 1rem;
      padding: 0 24px;
    }
    .marquee-item::after {
      margin-left: 24px;
    }
  }

  @media (min-width: 1100px) and (max-width: 1279px) {
    .hero-grid {
      grid-template-columns: minmax(0, 1fr) 520px;
    }
  }

  /* Touch active feedback & tap-highlight removal.
     Kept scoped to <= 1279px: promoting `.btn-glossy:active { transform: scale(.97) }`
     to global scope would change desktop click behaviour. */
  .btn-glossy,
  .carousel-nav-btn,
  .faq-trigger,
  .burger,
  .modal-close,
  .nav-link,
  .footer-contact-value {
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }

  .btn-glossy:active {
    transform: scale(0.97);
    opacity: 0.94;
  }

  .carousel-nav-btn:active {
    transform: scale(0.92);
    background-color: var(--color-primary-blush);
    color: #ffffff;
  }

  .faq-trigger:active {
    background-color: rgba(217, 158, 166, 0.08);
  }
}

/* Decorative collage motion — transform + opacity only, no layout impact,
   amplitude well inside the 4-8px budget, and fully disabled under
   prefers-reduced-motion. */
@keyframes collage-drift {
  from { transform: translate3d(0, -4px, 0); }
  to   { transform: translate3d(0,  4px, 0); }
}

@keyframes collage-card-drift {
  from { transform: translate3d(0, -3px, 0); }
  to   { transform: translate3d(0,  3px, 0); }
}

/* Width-scoped on purpose: unscoped, `transform: translate3d(0,0,0) !important` on
   `.hero-collage` would also wipe the desktop composition's `scale(1.12)`. */
@media (prefers-reduced-motion: reduce) and (max-width: 1279px) {
  .hero-collage,
  .hero-collage .collage-card {
    animation: none !important;
    transform: translate3d(0, 0, 0) !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .nav {
    transition: opacity 120ms linear, visibility 0s linear 120ms !important;
    transform: none !important;
  }
  .nav.active {
    transition: opacity 120ms linear, visibility 0s linear 0s !important;
    transform: none !important;
  }
}

/* Value Pillars Mobile Composition */
@media (max-width: 991px) {
  .values-section {
    padding: clamp(50px, 7vw, 75px) 0;
  }
  .values-layout-grid {
    grid-template-columns: 1fr;
    gap: 30px;
  }
  .values-sticky-col {
    position: relative;
    top: 0;
    text-align: center;
  }
  .values-sticky-col .section-title {
    font-size: clamp(2.1rem, 6.5vw, 3rem);
    line-height: 1.12;
  }
  .values-heading-decoration {
    margin: 15px auto 0 auto;
  }
  .values-panels-col {
    gap: 16px;
  }
  .values-panel {
    padding: clamp(24px, 5vw, 32px) clamp(20px, 4.5vw, 28px);
    border-radius: 16px;
    margin-bottom: 0;
    width: 100%;
  }
  .value-card-num {
    font-size: clamp(2.2rem, 6vw, 2.8rem);
    margin-bottom: 10px;
    opacity: 0.55;
  }
  .value-card-title {
    font-size: clamp(1.5rem, 4.5vw, 1.75rem);
    margin-bottom: 10px;
  }
  .value-card-desc {
    font-size: 1rem;
    line-height: 1.7;
  }
}

/* ==========================================
   EDITORIAL MOBILE COMPOSITION PASS (320px - 991px)
   ========================================== */

@media (max-width: 991px) {
  /* Workflow stacks to single column on tablet */
  .workflow-cards-grid {
    grid-template-columns: 1fr;
    gap: 20px;
  }
  .workflow-connector-line {
    display: none;
  }
  .workflow-card {
    min-height: auto;
  }

  /* NOTE: the .hero padding-top/padding-bottom !important overrides that lived here
     were removed. Hero padding below 1280px is owned by the responsive foundation
     block so the 24-32px clear space above the marquee stays deterministic. */
  .hero-title {
    margin-bottom: 14px !important;
  }
  .hero-text {
    margin-bottom: 20px !important;
  }
  /* NOTE: `.hero-visual { height: clamp(210px, 48vw, 300px) !important }` removed.
     The collage stage now reserves its height from the composition's true aspect
     ratio; any hard height here re-introduces the clipped / marquee-overlapped
     collage. Vertical rhythm below the CTA is owned by `.hero-visual { margin-top }`
     in the collage architecture block. */

  /* Services Carousel Card Editorial Recomposition */
  .services-section {
    padding-top: clamp(48px, 6vw, 70px) !important;
    padding-bottom: clamp(40px, 5vw, 55px) !important;
  }
  .service-card {
    padding: clamp(20px, 4vw, 26px) clamp(16px, 3.5vw, 22px) !important;
    border-radius: 18px !important;
  }
  .service-icon-wrapper {
    margin-bottom: 12px !important;
  }
  .service-card-title {
    margin-bottom: 8px !important;
    font-size: clamp(1.4rem, 4.2vw, 1.7rem) !important;
  }
  .service-card-desc {
    margin-bottom: 14px !important;
    font-size: 0.9rem !important;
    line-height: 1.55 !important;
  }
  .service-features-list {
    margin-bottom: 16px !important;
  }
  .service-feature-item {
    margin-bottom: 6px !important;
    font-size: 0.88rem !important;
  }
  .service-card .btn-discuss-service {
    margin-top: 8px !important; /* Attached directly to content */
  }

  /* Carousel Indicators Softening */
  .services-carousel-dots {
    margin-top: 16px !important;
    gap: 8px !important;
  }
  .carousel-dot {
    width: 28px !important;
    height: 28px !important;
    min-width: 28px !important;
    min-height: 28px !important;
    opacity: 0.6;
  }
  .carousel-dot.active {
    opacity: 1;
  }
}

@media (max-width: 768px) {
  /* Packages Editorial Hierarchy */
  .packages-section {
    padding: clamp(44px, 6vw, 65px) 0 !important;
  }
  .packages-grid {
    gap: 18px !important;
  }
  .package-card {
    padding: clamp(22px, 4.5vw, 30px) clamp(18px, 4vw, 24px) !important;
    border-radius: 18px !important;
  }
  .badge-popular {
    top: -10px !important;
  }
  .package-feature-item {
    margin-bottom: 8px !important;
    font-size: 0.88rem !important;
  }
  .package-card .btn-book-call {
    margin-top: 16px !important;
  }

  /* Workflow Mobile Stacking — left-side vertical timeline */
  .how-we-work-section {
    padding: clamp(36px, 5vw, 50px) 0 !important;
  }
  .workflow-grid-wrapper {
    margin-top: 18px !important;
  }
  .workflow-connector-line {
    display: none !important;
  }
  .workflow-cards-grid {
    grid-template-columns: 1fr !important;
    gap: 0 !important;
    padding-left: 20px;
  }
  .workflow-card-reveal {
    position: relative;
    padding-left: 32px;
    padding-bottom: 16px;
  }
  /* Vertical timeline line */
  .workflow-card-reveal::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 1.5px;
    background: rgba(217, 158, 166, 0.4);
  }
  /* Hide line below the last step */
  .workflow-card-reveal:last-child::before {
    bottom: 50%;
  }
  /* Step marker dot */
  .workflow-card-reveal::after {
    content: '';
    position: absolute;
    left: -4px;
    top: 28px;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--color-primary-blush);
    border: 2px solid var(--color-warm-ivory, #FAF5EE);
    box-shadow: 0 0 0 2px rgba(217, 158, 166, 0.3);
  }
  .workflow-card {
    padding: 22px 20px !important;
    min-height: auto !important;
    border-radius: 12px !important;
  }
  .step-num {
    font-size: 2rem !important;
    margin-bottom: 8px !important;
  }
  .step-title {
    font-size: 1.35rem !important;
    margin-bottom: 8px !important;
  }
  .step-desc {
    font-size: 0.95rem !important;
    line-height: 1.58 !important;
  }

  /* FAQ Refinements */
  .faq-section {
    padding: clamp(44px, 6vw, 65px) 0 !important;
  }
  .faq-item {
    margin-bottom: 8px !important;
  }
  .faq-trigger {
    padding: 14px 10px !important;
    min-height: 48px !important;
  }
  .faq-icon {
    width: 20px !important;
    height: 20px !important;
    opacity: 0.75;
  }

  /* CTA Spacing Balance */
  .final-cta {
    padding: clamp(36px, 5vw, 55px) 0 !important;
  }
  .cta-canvas {
    padding: clamp(28px, 5vw, 42px) clamp(16px, 4vw, 24px) !important;
    border-radius: 20px !important;
  }

  /* Footer Editorial Grouping */
  .footer {
    padding: clamp(36px, 5vw, 50px) 0 20px 0 !important;
  }
  .footer-grid {
    gap: 24px !important;
  }
  .footer-contact-item {
    margin-bottom: 10px !important;
  }
  .footer-bottom {
    margin-top: 20px !important;
    padding-top: 16px !important;
    gap: 10px !important;
  }
}


/* Modal Window Small Screen Scrollability */
@media (max-width: 580px) {
  .modal-window {
    width: 94%;
    padding: 28px 18px;
    border-radius: 20px;
    max-height: 92vh;
  }
  .modal-title {
    font-size: 1.8rem;
  }
  .modal-subtitle {
    font-size: 0.88rem;
  }
  .modal-close {
    top: 18px;
    right: 18px;
    width: 36px;
    height: 36px;
  }
}

/* Ultra-compact screen adjustments (320px - 360px) */
@media (max-width: 360px) {
  .hero-title {
    font-size: 2.1rem;
  }
  .section-title {
    font-size: 1.95rem;
  }
  .package-price {
    font-size: 2.2rem;
  }
  .btn-glossy {
    padding: 14px 24px;
    font-size: 0.8rem;
  }
}

/* ==========================================
   PHASE 1.5: MOBILE VISUAL RHYTHM & COMPOSITION POLISH
   ========================================== */

@media (max-width: 991px) {
  /* NOTE: this blanket !important padding is what inflated the black marquee from
     its intended 60px to a measured 90px on phones (60px height + 2 x 44px padding
     under box-sizing: border-box). The selector is deliberately left at its original
     element-level specificity — narrowing it with :not() would raise it above the
     per-section rules that legitimately override it. `.hero` and `.marquee-section`
     instead opt out from the responsive foundation block, where a class selector
     (0,1,0) outranks this element selector (0,0,1). */
  section {
    padding: clamp(44px, 6.5vw, 64px) 0 !important;
  }
  .section-title-wrapper {
    margin-bottom: clamp(26px, 4.5vw, 36px) !important;
  }
  .section-tag {
    margin-bottom: 10px !important;
  }
  .section-subtitle {
    margin-top: 10px !important;
  }

  /* NOTE: duplicate .hero padding override removed - same reason as above. */
  .hero-title {
    margin-bottom: 14px !important;
  }
  .hero-text {
    margin-bottom: 24px !important;
  }
  /* NOTE: `.hero-visual { height: clamp(230px, 52vw, 320px) !important }` removed —
     same reason as the Phase 1 override above. The `opacity: 0.95` was also dropped so
     the collage renders at full strength. */
}

@media (max-width: 768px) {
  /* Card Padding Harmonization */
  .values-panel {
    padding: clamp(20px, 4.5vw, 28px) clamp(16px, 3.8vw, 24px) !important;
    margin-bottom: 14px !important;
  }
  .service-card {
    padding: clamp(22px, 4.5vw, 30px) clamp(18px, 4vw, 24px) !important;
  }
  .package-card {
    padding: clamp(24px, 5vw, 36px) clamp(18px, 4vw, 26px) !important;
  }
  .audit-container {
    padding: clamp(20px, 4.5vw, 28px) clamp(16px, 4vw, 22px) !important;
    gap: 12px !important;
  }
  .audit-title {
    font-size: clamp(1.5rem, 4.5vw, 1.85rem) !important;
    margin-bottom: 8px !important;
  }
  .audit-desc {
    font-size: 0.92rem !important;
    line-height: 1.55 !important;
  }
  .audit-price {
    font-size: clamp(2.4rem, 6vw, 2.8rem) !important;
  }
  .workflow-card {
    padding: clamp(18px, 4vw, 24px) clamp(16px, 3.5vw, 20px) !important;
  }
  .faq-item {
    margin-bottom: 8px !important;
  }
  .faq-trigger {
    padding: 16px 12px !important;
    min-height: 52px !important;
  }
  .faq-question {
    font-size: clamp(1.1rem, 3.8vw, 1.25rem) !important;
  }
  .cta-canvas {
    padding: clamp(32px, 5.5vw, 44px) clamp(16px, 4vw, 24px) !important;
  }

  /* Footer Vertical Compactness & Readability */
  .footer {
    padding: clamp(36px, 5vw, 50px) 0 24px 0 !important;
    font-size: 0.95rem !important;
  }
  .footer-bio {
    font-size: 0.92rem !important;
  }
  .footer-grid {
    gap: 24px !important;
  }
  .footer-contact-item {
    margin-bottom: 10px !important;
  }
  .footer-contact-value {
    font-size: 0.95rem !important;
    min-height: 36px;
    display: inline-flex;
    align-items: center;
  }
  .footer-link-item a {
    font-size: 0.95rem !important;
    min-height: 36px;
    display: inline-flex;
    align-items: center;
  }
  .footer-bottom {
    margin-top: 20px !important;
    padding-top: 16px !important;
    gap: 12px !important;
    font-size: 0.88rem !important;
  }
}

/* ==========================================
   PHASE 2: MOBILE INTERACTIONS & TOUCH FEEDBACK
   ========================================== */

/* iOS Auto-Zoom Prevention on Form Inputs */
@media (max-width: 768px) {
  .form-control,
  input[type="text"],
  input[type="email"],
  input[type="tel"],
  select,
  textarea {
    font-size: 16px !important; /* Prevents iOS Safari from auto-zooming page on focus */
  }
}

/* NOTE: the global touch-active feedback block that lived here was moved into the
   "RESPONSIVE FOUNDATION" @media (max-width: 1279px) block. At top level its
   pressed-state transform on .btn-glossy also fired for desktop mouse clicks; it only ever applied by accident, because this region of the file sat
   inside an unterminated @media (max-width: 1279px) block. */

/* ==========================================================================
   COOKIE CONSENT — banner, preference panel, toggles
   Non-blocking by design: the banner never dims the page, never traps scroll
   and never covers the viewport. Only the preference panel is modal.
   ========================================================================== */

.consent-banner {
  position: fixed;
  left: 50%;
  bottom: 0;
  z-index: 12000;
  padding: 0;
  width: min(1040px, calc(100% - 32px));
  transform: translate(-50%, calc(100% + 24px));
  opacity: 0;
  transition: transform 0.42s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.32s ease;
  margin-bottom: calc(16px + env(safe-area-inset-bottom, 0px));
  background: var(--color-warm-ivory);
  border: 1px solid rgba(217, 158, 166, 0.42);
  border-radius: 16px;
  box-shadow: 0 18px 48px rgba(12, 12, 12, 0.16), 0 2px 8px rgba(12, 12, 12, 0.06);
}

.consent-banner.is-visible {
  transform: translate(-50%, 0);
  opacity: 1;
}

.consent-banner-inner {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: clamp(16px, 2vw, 26px);
  padding: clamp(18px, 2.4vw, 24px) clamp(20px, 2.6vw, 28px);
}

.consent-banner-copy { flex: 1 1 360px; min-width: 0; }

.consent-banner-title {
  font-family: var(--font-serif);
  font-size: 1.35rem;
  font-weight: 400;
  line-height: 1.2;
  color: var(--color-charcoal);
  margin: 0 0 6px;
}

.consent-banner-text {
  font-family: var(--font-sans);
  font-size: 0.9rem;
  font-weight: 300;
  line-height: 1.55;
  color: var(--color-text-muted);
  margin: 0;
  max-width: 62ch;
}

.consent-banner-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 0 0 auto;
  flex-wrap: wrap;
}

/* Accept and Reject are deliberately the same weight — no dark pattern. */
.consent-btn {
  font-family: var(--font-sans);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  border-radius: 40px;
  padding: 13px 20px;
  min-height: 44px;
  cursor: pointer;
  white-space: nowrap;
  transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.consent-btn--primary {
  background: var(--color-charcoal);
  color: var(--color-text-light);
  border: 1px solid var(--color-charcoal);
}

.consent-btn--primary:hover {
  background: #262121;
  border-color: #262121;
}

.consent-btn--quiet {
  background: transparent;
  color: var(--color-blush-text);
  border: 1px solid rgba(157, 61, 74, 0.45);
}

.consent-btn--quiet:hover {
  background: rgba(157, 61, 74, 0.07);
  border-color: var(--color-blush-text);
}

/* -------------------------------------------------- preference panel -- */

.consent-panel-backdrop {
  position: fixed;
  inset: 0;
  z-index: 12500;
  /* Deliberately gentle: enough to signal modality, not an aggressive dim. */
  background: rgba(12, 12, 12, 0.28);
  opacity: 0;
  transition: opacity 0.26s ease;
}

.consent-panel-backdrop.is-open { opacity: 1; }

.consent-panel {
  position: fixed;
  z-index: 13000;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -46%);
  width: min(560px, calc(100% - 32px));
  max-height: min(84vh, 720px);
  overflow-y: auto;
  opacity: 0;
  transition: transform 0.32s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.24s ease;
  background: var(--color-warm-ivory);
  border: 1px solid rgba(217, 158, 166, 0.4);
  border-radius: 18px;
  padding: clamp(24px, 3vw, 34px);
  box-shadow: 0 26px 70px rgba(12, 12, 12, 0.24);
  -webkit-overflow-scrolling: touch;
}

.consent-panel.is-open {
  transform: translate(-50%, -50%);
  opacity: 1;
}

.consent-panel-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 10px;
}

.consent-panel-title {
  font-family: var(--font-serif);
  font-size: 1.7rem;
  font-weight: 400;
  color: var(--color-charcoal);
  margin: 0;
  line-height: 1.15;
}

.consent-panel-close {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--color-text-muted);
  width: 44px;
  height: 44px;
  margin: -10px -10px 0 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  flex: 0 0 auto;
  transition: background-color 0.25s ease, color 0.25s ease;
}

.consent-panel-close svg { width: 20px; height: 20px; }
.consent-panel-close:hover { background: rgba(157, 61, 74, 0.08); color: var(--color-charcoal); }

.consent-panel-intro {
  font-family: var(--font-sans);
  font-size: 0.9rem;
  font-weight: 300;
  line-height: 1.6;
  color: var(--color-text-muted);
  margin: 0 0 22px;
}

.consent-categories {
  list-style: none;
  margin: 0 0 26px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.consent-category {
  padding: 16px 0;
  border-bottom: 1px solid rgba(217, 158, 166, 0.28);
}

.consent-category:last-child { border-bottom: none; }

.consent-category-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 6px;
  min-height: 32px;
}

.consent-category-name {
  font-family: var(--font-sans);
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--color-text-dark);
  cursor: pointer;
}

.consent-locked {
  font-family: var(--font-sans);
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-blush-text);
  background: rgba(157, 61, 74, 0.09);
  border-radius: 30px;
  padding: 6px 12px;
  white-space: nowrap;
}

.consent-category-desc {
  font-family: var(--font-sans);
  font-size: 0.85rem;
  font-weight: 300;
  line-height: 1.58;
  color: var(--color-text-muted);
  margin: 0;
  max-width: 54ch;
}

/* Switch: a real checkbox, visually restyled. Never a div pretending. */
.consent-switch {
  position: relative;
  flex: 0 0 auto;
  width: 52px;
  height: 30px;
  display: inline-block;
}

.consent-switch input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  opacity: 0;
  cursor: pointer;
  z-index: 2;
}

.consent-switch-track {
  position: absolute;
  inset: 0;
  border-radius: 30px;
  background: rgba(12, 12, 12, 0.18);
  transition: background-color 0.28s ease;
  pointer-events: none;
}

.consent-switch-track::after {
  content: '';
  position: absolute;
  top: 3px;
  left: 3px;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 1px 3px rgba(12, 12, 12, 0.3);
  transition: transform 0.28s cubic-bezier(0.16, 1, 0.3, 1);
}

.consent-switch input:checked ~ .consent-switch-track { background: var(--color-blush-text); }
.consent-switch input:checked ~ .consent-switch-track::after { transform: translateX(22px); }
.consent-switch input:focus-visible ~ .consent-switch-track {
  outline: 2px solid var(--color-blush-text);
  outline-offset: 3px;
}

.consent-panel-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.consent-panel-actions .consent-btn { flex: 1 1 auto; }

.consent-panel-foot {
  font-family: var(--font-sans);
  font-size: 0.82rem;
  font-weight: 300;
  color: var(--color-text-muted);
  margin: 18px 0 0;
}

.consent-panel-foot a {
  color: var(--color-blush-text);
  text-underline-offset: 3px;
}

/* Footer "Cookie Settings" is a control, not a link — match the link look. */
.footer-cookie-settings {
  background: none;
  border: none;
  padding: 0;
  font: inherit;
  color: var(--color-text-light-muted);
  cursor: pointer;
  text-decoration: none;
  transition: var(--transition-fast);
  display: inline-flex;
  align-items: center;
  min-height: 24px;
}

.footer-cookie-settings:hover { color: var(--color-primary-blush); }

@media (max-width: 720px) {
  .consent-banner-inner { flex-direction: column; align-items: stretch; gap: 16px; }
  .consent-banner-copy { flex: 0 0 auto; }
  .consent-banner-actions { flex-direction: column; align-items: stretch; }
  .consent-banner-actions .consent-btn { width: 100%; }
  .consent-banner { width: calc(100% - 24px); }

  /* Bottom sheet on small screens. */
  .consent-panel {
    top: auto;
    bottom: 0;
    left: 0;
    transform: translate(0, 100%);
    width: 100%;
    max-height: 88vh;
    border-radius: 18px 18px 0 0;
    padding-bottom: calc(24px + env(safe-area-inset-bottom, 0px));
  }
  .consent-panel.is-open { transform: translate(0, 0); }
}

@media (prefers-reduced-motion: reduce) {
  .consent-banner,
  .consent-panel,
  .consent-panel-backdrop,
  .consent-switch-track,
  .consent-switch-track::after,
  .consent-btn {
    transition: none !important;
  }
  /* No sliding: appear in place. */
  .consent-banner { transform: translate(-50%, 0); }
  .consent-panel { transform: translate(-50%, -50%); }
}

@media (prefers-reduced-motion: reduce) and (max-width: 720px) {
  .consent-panel { transform: translate(0, 0); }
}

/* ==========================================================================
   LEGAL PAGES — Privacy Policy / Terms of Service / Cookie Policy
   Editorial but reading-first: a single comfortable measure, generous leading,
   the site's own type and palette, no decorative weight competing with the text.
   ========================================================================== */

.legal-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--color-warm-ivory);
  border-bottom: 1px solid rgba(217, 158, 166, 0.3);
}

.legal-header-inner {
  max-width: 1080px;
  margin: 0 auto;
  padding: 18px 5%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
}

.legal-back {
  font-family: var(--font-sans);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-blush-text);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  transition: var(--transition-fast);
}

.legal-back:hover { color: var(--color-charcoal); }
.legal-back svg { width: 15px; height: 15px; flex: 0 0 auto; }

.legal-main {
  max-width: 700px;             /* ~80 characters at this size — a comfortable
                                   legal-document measure without feeling narrow */
  margin: 0 auto;
  padding: clamp(48px, 7vw, 84px) 5% clamp(64px, 8vw, 100px);
}

.legal-eyebrow {
  font-family: var(--font-sans);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--color-blush-text);
  display: block;
  margin-bottom: 16px;
}

.legal-title {
  font-family: var(--font-serif);
  font-size: clamp(2.4rem, 6vw, 3.6rem);
  font-weight: 300;
  line-height: 1.05;
  color: var(--color-charcoal);
  margin: 0 0 14px;
}

.legal-updated {
  font-family: var(--font-sans);
  font-size: 0.85rem;
  font-weight: 400;
  color: var(--color-text-muted);
  margin: 0 0 12px;
}

.legal-intro {
  font-family: var(--font-sans);
  font-size: 1.05rem;
  font-weight: 300;
  line-height: 1.72;
  color: var(--color-text-dark);
  margin: 26px 0 0;
  padding-top: 26px;
  border-top: 1px solid rgba(217, 158, 166, 0.35);
}

.legal-section { margin-top: clamp(38px, 5vw, 52px); }

.legal-section h2 {
  font-family: var(--font-serif);
  font-size: clamp(1.5rem, 3vw, 1.9rem);
  font-weight: 400;
  line-height: 1.25;
  color: var(--color-charcoal);
  margin: 0 0 14px;
}

.legal-section h3 {
  font-family: var(--font-sans);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--color-text-dark);
  margin: 26px 0 8px;
}

.legal-section p,
.legal-section li {
  font-family: var(--font-sans);
  font-size: 1rem;
  font-weight: 300;
  line-height: 1.75;
  color: var(--color-text-muted);
}

.legal-section p { margin: 0 0 16px; }
.legal-section ul { margin: 0 0 18px; padding-left: 22px; }
.legal-section li { margin-bottom: 9px; }
.legal-section li::marker { color: var(--color-primary-blush); }
.legal-section strong { font-weight: 600; color: var(--color-text-dark); }

.legal-section a {
  color: var(--color-blush-text);
  text-underline-offset: 3px;
}

.legal-section a:hover { color: var(--color-charcoal); }

/* Identity / contact block — quiet card, not a shouty callout. */
.legal-callout {
  background: rgba(250, 246, 240, 0.9);
  border: 1px solid rgba(217, 158, 166, 0.34);
  border-left: 3px solid var(--color-primary-blush);
  border-radius: 10px;
  padding: 22px 24px;
  margin: 0 0 20px;
}

.legal-callout p { margin: 0 0 4px; }
.legal-callout p:last-child { margin-bottom: 0; }
.legal-callout .legal-callout-name {
  font-weight: 600;
  color: var(--color-text-dark);
  font-size: 1.02rem;
}

/* Cookie tables — scroll rather than squash on small screens. */
.legal-table-scroll {
  overflow-x: auto;
  border: 1px solid rgba(217, 158, 166, 0.34);
  border-radius: 10px;
  margin: 0 0 20px;
  -webkit-overflow-scrolling: touch;
}

.legal-table {
  width: 100%;
  min-width: 460px;
  border-collapse: collapse;
  font-family: var(--font-sans);
}

.legal-table th,
.legal-table td {
  text-align: left;
  padding: 12px 16px;
  font-size: 0.88rem;
  font-weight: 300;
  line-height: 1.55;
  color: var(--color-text-muted);
  border-bottom: 1px solid rgba(217, 158, 166, 0.22);
  vertical-align: top;
}

.legal-table thead th {
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-text-dark);
  background: rgba(217, 158, 166, 0.09);
  white-space: nowrap;
}

.legal-table tbody tr:last-child td { border-bottom: none; }
.legal-table code {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.85em;
  color: var(--color-text-dark);
  background: rgba(217, 158, 166, 0.12);
  padding: 2px 6px;
  border-radius: 4px;
  white-space: nowrap;
}

/* Slim footer, reusing the site's dark footer language. */
.legal-footer {
  background: var(--color-charcoal);
  padding: clamp(34px, 4vw, 48px) 5%;
}

.legal-footer-inner {
  max-width: 1080px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
}

.legal-footer p {
  font-family: var(--font-sans);
  font-size: 0.86rem;
  font-weight: 300;
  color: var(--color-text-light-muted);
  margin: 0;
}

.legal-footer-links {
  display: flex;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
}

.legal-footer-links a,
.legal-footer-links .footer-cookie-settings {
  font-family: var(--font-sans);
  font-size: 0.86rem;
  font-weight: 300;
  color: var(--color-text-light-muted);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  transition: var(--transition-fast);
}

.legal-footer-links a:hover,
.legal-footer-links .footer-cookie-settings:hover { color: var(--color-primary-blush); }

@media (max-width: 600px) {
  .legal-footer-inner { flex-direction: column; align-items: flex-start; gap: 16px; }
  .legal-footer-links { gap: 18px; }
  .legal-header-inner { padding: 14px 5%; }
}

/* Enquiry form privacy notice — quiet, sits under the submit action. */
.form-privacy-note {
  font-family: var(--font-sans);
  font-size: 0.78rem;
  font-weight: 300;
  line-height: 1.55;
  color: var(--color-text-muted);
  text-align: center;
  margin: 16px auto 0;
  max-width: 44ch;
}

.form-privacy-note a {
  color: var(--color-blush-text);
  text-underline-offset: 2px;
}

.form-privacy-note a:hover { color: var(--color-text-dark); }
