﻿/* ─── DESIGN TOKENS ──────────────────────────────────────────── */
:root {
  /* ── BRAND THEME — "Plum & Champagne" ─────────────────────────
     Cream grounds with Midnight Plum ink, Dusty Rose surfaces,
     Soft Lavender highlights and Champagne Gold detailing.
     Raw primitives live in brand.css (--tsb-*), the single token layer
     shared with admin.css. This block maps them onto this theme's
     historical names (inverted on purpose):
     --void is the LIGHTEST surface and --stardust the DARKEST ink.
     Names are kept — they are referenced in ~40 places across views;
     renaming would be riskier than tolerating the odd naming. */
  --void:       #F8F2EA;   /* page ground      (was darkest) */
  --midnight:   #F1EBE1;   /* section ground                 */
  --veil:       #FCF7F0;   /* raised surface                 */
  --arcane:     var(--tsb-cream-arcane);   /* strongest surface   */
  --gold:       #7E6039;   /* accent: text, borders, button grounds */
  /* --gold-light is used as the colour of ~25 small headings (.service-title,
      .tcard-name, .zcard-name ...). On cream it must stay dark to remain
      readable, so it maps to the deep lavender tone; inside dark panels the
      inverse-surface block below restores a genuinely light value. */
  --gold-light: var(--tsb-lavender-deep);
  --gold-dim:   var(--tsb-gold-dim);
  --violet:     var(--tsb-lavender-deep);
  --rose:       var(--tsb-rose);
  --rose-deep:  var(--tsb-rose-deep);  /* rose usable as text on cream */
  --gold-bright: var(--tsb-gold);      /* champagne: icons, stars, borders */
  --gold-soft:  var(--tsb-gold-soft);
  --danger:     var(--tsb-danger);
  --success:    var(--tsb-success);
  --warning:    var(--tsb-warning);
  --info:       var(--tsb-info);
  --stardust:   var(--tsb-plum);   /* primary ink      (was lightest) */
  --mist:       var(--tsb-ink-mist);   /* secondary ink              */
  --border:     var(--tsb-border-ink);

  --ff-display: 'Cinzel Decorative', serif;
  --ff-heading: 'Cinzel', serif;
  --ff-body:    'EB Garamond', serif;
  --ff-ui:      'Inter', sans-serif;

  /* Premium-rounded, not playful: buttons/inputs 10px, cards 16px, modals 20px. */
  --radius-btn:   10px;
  --radius-card:  16px;
  --radius-modal: 20px;
  /* On a light ground a heavy black shadow reads as dirt. These are shallow,
     violet-tinted and low-opacity; the glows become soft haloes rather than
     the light-emitting effect they had against near-black. */
  --shadow-card: 0 6px 22px rgba(33,23,43,0.10), 0 0 0 1px var(--border);
  --glow-gold:   0 0 24px rgba(216,184,120,0.22), 0 0 56px rgba(185,169,214,0.10);
  --glow-violet: 0 0 24px rgba(185,169,214,0.25);
}

/* ── INVERSE SURFACES ────────────────────────────────────────────
   The navbar, footer, mobile booking bar, home CTA and the About
   portrait panel stay Midnight Plum on the cream page.
   That is not decoration: logo-stacked-light.png and
   logo-horizontal-light.png are LIGHT artwork (mean luminance 213/255)
   with no dark variant in the repo, so they are only legible on a dark
   ground. Keeping these panels dark also gives the light page anchoring
   contrast at the top and bottom.

   Rather than rewrite every child rule, the tokens are redefined here.
   Anything inside these panels that reads --stardust / --mist / --gold
   picks up the light-on-dark values automatically.

   Text values are kept high — near-white body, bright lavender accent —
   because muted lavender-on-violet technically passes contrast but reads
   washed out (low hue contrast). The reveal overlays and tarot card faces
   (.hero-result-wrap, .ask-face-*, .ask-answer-inner) are also listed here:
   they stay dramatically dark by design and need the same light text. */
.navbar-tsb,
.site-footer, footer,
.mobile-book-bar,
.cta-section,
.split-left,
.hero-result-wrap,
.hero-rc-front, .hero-rc-back,
.ask-face-front, .ask-face-back,
.ask-answer-inner {
  --stardust:   var(--tsb-cream);
  --mist:       var(--tsb-lavender-pale);
  --gold:       var(--tsb-gold);
  --gold-light: var(--tsb-gold-soft);
  --gold-dim:   var(--tsb-gold-dim-dark);
  --void:       var(--tsb-plum);   /* ink on accent-filled buttons inside dark panels */
  --border:     rgba(216,184,120,0.28);
}

*, *::before, *::after { box-sizing: border-box; margin: 0; }
html { scroll-behavior: smooth; }
body { background: var(--void); color: var(--stardust); font-family: var(--ff-body); font-size: 1.1rem; line-height: 1.75; overflow-x: hidden; }
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: var(--void); }
::-webkit-scrollbar-thumb { background: var(--gold-dim); border-radius: 3px; }

/* ─── STARFIELD ─────────────────────────────────────────────── */
.starfield { position: fixed; inset: 0; z-index: 0; pointer-events: none; background: radial-gradient(ellipse at 20% 50%, rgba(185,169,214,0.08) 0%, transparent 60%), radial-gradient(ellipse at 80% 20%, rgba(185,169,214,0.05) 0%, transparent 50%); }
.starfield::before { content: ''; position: absolute; inset: 0; background-image: radial-gradient(1px 1px at 10% 15%, rgba(33,23,43,0.33) 0%, transparent 100%), radial-gradient(1px 1px at 30% 5%, rgba(33,23,43,0.24) 0%, transparent 100%), radial-gradient(1px 1px at 50% 25%, rgba(33,23,43,0.30) 0%, transparent 100%), radial-gradient(1px 1px at 70% 10%, rgba(33,23,43,0.18) 0%, transparent 100%), radial-gradient(1px 1px at 85% 40%, rgba(33,23,43,0.33) 0%, transparent 100%), radial-gradient(1px 1px at 15% 60%, rgba(33,23,43,0.24) 0%, transparent 100%), radial-gradient(1px 1px at 42% 70%, rgba(33,23,43,0.30) 0%, transparent 100%), radial-gradient(1px 1px at 65% 55%, rgba(33,23,43,0.18) 0%, transparent 100%), radial-gradient(1px 1px at 90% 75%, rgba(33,23,43,0.33) 0%, transparent 100%), radial-gradient(1px 1px at 5% 85%, rgba(33,23,43,0.24) 0%, transparent 100%), radial-gradient(1px 1px at 25% 90%, rgba(33,23,43,0.18) 0%, transparent 100%), radial-gradient(1px 1px at 55% 95%, rgba(33,23,43,0.30) 0%, transparent 100%), radial-gradient(1px 1px at 78% 88%, rgba(33,23,43,0.24) 0%, transparent 100%), radial-gradient(1.5px 1.5px at 38% 45%, rgba(185,169,214,0.7) 0%, transparent 100%), radial-gradient(1.5px 1.5px at 62% 30%, rgba(185,169,214,0.5) 0%, transparent 100%), radial-gradient(1.5px 1.5px at 88% 60%, rgba(185,169,214,0.6) 0%, transparent 100%); }

/* ─── SPACING SCALE ──────────────────────────────────────────── */
:root {
  --space-xs: 0.5rem;
  --space-sm: 1rem;
  --space-md: 1.5rem;
  --space-lg: 2rem;
  --space-xl: 2.5rem;
  --space-2xl: 3rem;
  --space-3xl: 4rem;
  --space-4xl: 5rem;
}

/* ─── TYPOGRAPHY ─────────────────────────────────────────────── */
.ff-display { font-family: var(--ff-display); }
.ff-heading { font-family: var(--ff-heading); }
.ff-body { font-family: var(--ff-body); }
.ff-ui { font-family: var(--ff-ui); }
.text-gold { color: var(--gold); }
.text-gold-light { color: var(--gold-light); }
.text-mist { color: var(--mist); }
.text-violet { color: var(--violet); }
.text-rose { color: var(--rose-deep); }

/* Standardized typography margins */
h1, h2, h3, h4, h5, h6 { margin-bottom: var(--space-md); }
p { margin-bottom: var(--space-md); }

.ornament { display: flex; align-items: center; gap: 1rem; color: var(--gold); font-size: 0.7rem; letter-spacing: 0.4em; text-transform: uppercase; font-family: var(--ff-ui); }
.ornament::before, .ornament::after { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg, transparent, var(--gold-dim), transparent); }
.section-eyebrow { font-family: var(--ff-ui); font-size: 0.7rem; letter-spacing: 0.4em; text-transform: uppercase; color: var(--gold); margin-bottom: var(--space-md); font-weight: 500; }

/* ─── NAVBAR ────────────────────────────────────────────────── */
/* Solid rather than fading to transparent. The original faded out because it sat
   over a near-black hero; over the light Moonstone hero a fade would leave the
   light logo and light nav links stranded on a light ground. */
.navbar-tsb { position: fixed; top: 0; left: 0; right: 0; z-index: 1000; padding: 1.25rem 0; background: rgba(33,23,43,0.93); backdrop-filter: blur(12px); border-bottom: 1px solid transparent; transition: all 0.4s ease; }
.navbar-tsb.scrolled { background: rgba(33,23,43,0.97); border-bottom-color: var(--border); padding: 0.9rem 0; }
.navbar-brand-tsb { font-family: var(--ff-heading); font-size: 1.1rem; letter-spacing: 0.12em; color: var(--gold-light) !important; text-decoration: none; }
.navbar-brand-text { font-family: var(--ff-heading); font-size: 1.1rem; letter-spacing: 0.12em; color: var(--gold-light) !important; text-decoration: none; }
.nav-link-tsb { font-family: var(--ff-ui); font-size: 0.72rem; letter-spacing: 0.25em; text-transform: uppercase; color: var(--mist) !important; text-decoration: none; padding: 0.4rem 1rem !important; transition: color 0.3s; position: relative; }
.nav-link-tsb::after { content: ''; position: absolute; bottom: 0; left: 50%; right: 50%; height: 1px; background: var(--gold); transition: left 0.3s, right 0.3s; }
.nav-link-tsb:hover { color: var(--gold-light) !important; }
.nav-link-tsb:hover::after { left: 1rem; right: 1rem; }
.nav-link-tsb.active { color: var(--gold-light) !important; }
.nav-link-tsb.active::after { left: 1rem; right: 1rem; background: var(--gold); }
.btn-nav-book { font-family: var(--ff-ui); font-size: 0.65rem; letter-spacing: 0.3em; text-transform: uppercase; color: #F8F2EA !important; background: linear-gradient(135deg, var(--tsb-plum-button), #21172B); border: 1px solid rgba(216,184,120,0.5); padding: 0.55rem 1.5rem; border-radius: var(--radius-btn); text-decoration: none; transition: box-shadow 0.3s, transform 0.3s; }
.btn-nav-book:hover { box-shadow: 0 0 20px rgba(216,184,120,0.4); transform: translateY(-1px); color: #F8F2EA !important; }
.navbar-toggler-tsb { background: none; border: 1px solid var(--border); padding: 0.4rem 0.6rem; color: var(--gold); }
.navbar-toggler-tsb:focus { box-shadow: none; }

/* Soft action — Rose/Lavender surface + Plum text; tertiary weight, used for
   selective in-card actions that shouldn't compete with the primary CTA. */
.btn-soft-tsb {
  font-family: var(--ff-ui);
  font-size: 0.7rem;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  padding: 0.7rem 1.75rem;
  border: 1px solid transparent;
  background: rgba(185,169,214,0.18);
  color: #21172B;
  border-radius: var(--radius-btn);
  cursor: pointer;
  display: inline-block;
  text-decoration: none;
  transition: background 0.3s, transform 0.3s;
}
.btn-soft-tsb:hover, .btn-soft-tsb:focus-visible { background: rgba(201,155,165,0.28); transform: translateY(-1px); }

/* Focus states for accessibility */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 2px;
}

/* ─── HERO ──────────────────────────────────────────────────── */
.hero { min-height: min(92vh, 780px); padding: 6.5rem 0 3rem; display: flex; align-items: center; position: relative; background: radial-gradient(ellipse 140% 80% at 50% -20%, rgba(185,169,214,0.30) 0%, transparent 55%), radial-gradient(ellipse 80% 60% at 80% 30%, rgba(201,155,165,0.18) 0%, transparent 50%), radial-gradient(ellipse 60% 50% at 15% 70%, rgba(185,169,214,0.16) 0%, transparent 55%), radial-gradient(ellipse 120% 40% at 50% 110%, rgba(248,242,234,1) 0%, transparent 60%), linear-gradient(160deg,var(--tsb-cream-deep) 0%,var(--tsb-cream) 40%,var(--tsb-cream-deep) 100%); overflow: hidden; }
.hero::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent 0%, var(--gold-dim) 30%, var(--gold) 50%, var(--gold-dim) 70%, transparent 100%); }
#nebulaCanvas { position: absolute; inset: 0; pointer-events: none; z-index: 0; opacity: .7; }
.hero .container { position: relative; z-index: 2; }
.hero-bg-text { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); font-family: var(--ff-display); font-size: clamp(5rem,18vw,16rem); font-weight: 900; letter-spacing: -.02em; color: transparent; -webkit-text-stroke: 1px rgba(185,169,214,0.06); white-space: nowrap; pointer-events: none; z-index: 1; user-select: none; line-height: 1; }
.hero-card-visual { position: relative; z-index: 2; }
.tarot-card-3d { width: 260px; height: 440px; background: linear-gradient(160deg, var(--arcane) 0%, var(--midnight) 100%); border: 1px solid var(--border); border-radius: 12px; margin: 0 auto; position: relative; box-shadow: var(--shadow-card), var(--glow-violet); animation: float 6s ease-in-out infinite; overflow: hidden; }
.tarot-card-3d::before { content: ''; position: absolute; inset: 8px; border: 1px solid rgba(185,169,214,0.3); border-radius: 8px; }
.tarot-card-3d::after { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 30%, rgba(185,169,214,0.10) 0%, transparent 60%), radial-gradient(ellipse at 50% 80%, rgba(185,169,214,0.12) 0%, transparent 50%); }
.tarot-card-inner { position: absolute; inset: 0; z-index: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; padding: 2rem; }
.tarot-star { font-size: 5rem; line-height: 1; filter: drop-shadow(0 0 20px rgba(185,169,214,0.6)); animation: pulse-glow 3s ease-in-out infinite; }
.tarot-card-title { font-family: var(--ff-heading); font-size: 0.85rem; letter-spacing: 0.35em; text-transform: uppercase; color: var(--gold); text-align: center; }
.tarot-roman { font-family: var(--ff-display); font-size: 1.4rem; color: var(--gold-light); margin-top: auto; }
.tarot-card-label { font-family: var(--ff-heading); font-size: 0.7rem; letter-spacing: 0.5em; color: var(--mist); text-align: center; margin-bottom: 0.5rem; }
.tarot-card-back { width: 220px; height: 370px; background: linear-gradient(140deg, #F3EADC, #FCF7F0); border: 1px solid rgba(185,169,214,0.3); border-radius: 10px; position: absolute; top: 30px; right: -30px; animation: float 6s ease-in-out 1.5s infinite; box-shadow: 0 8px 26px rgba(33,23,43,0.16), var(--glow-violet); overflow: hidden; }
.tarot-card-back::before { content: ''; position: absolute; inset: 6px; border: 1px solid rgba(185,169,214,0.25); border-radius: 6px; background: repeating-linear-gradient(45deg, transparent, transparent 8px, rgba(185,169,214,0.05) 8px, rgba(185,169,214,0.05) 9px); }

@keyframes float { 0%, 100% { transform: translateY(0px) rotate(-2deg); } 50% { transform: translateY(-18px) rotate(-2deg); } }
@keyframes pulse-glow { 0%, 100% { filter: drop-shadow(0 0 15px rgba(185,169,214,0.5)); } 50% { filter: drop-shadow(0 0 35px rgba(185,169,214,0.9)); } }

.hero-content { position: relative; z-index: 2; }
.hero-eyebrow { font-family: var(--ff-ui); font-size: 0.65rem; letter-spacing: 0.5em; text-transform: uppercase; color: #75552E; font-weight: 600; margin-bottom: 1.5rem; display: flex; align-items: center; gap: 1rem; }
.hero-eyebrow span { opacity: 0.5; }
.hero-headline { font-family: var(--ff-display); font-size: clamp(2.2rem, 5vw, 4rem); font-weight: 700; line-height: 1.1; color: var(--stardust); margin-bottom: 0.5rem; }
.hero-headline .accent { display: block; background: linear-gradient(135deg, var(--gold), var(--gold-light), var(--gold)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }
.hero-subhead { font-family: var(--ff-heading); font-size: 1rem; letter-spacing: 0.2em; color: var(--mist); margin-bottom: 1.5rem; }
.hero-desc { font-family: var(--ff-body); font-size: 1.1rem; color: rgba(33,23,43,0.88); max-width: 480px; margin-bottom: 2.5rem; font-style: italic; }

.btn-primary-tsb { font-family: var(--ff-ui); font-size: 0.7rem; letter-spacing: 0.3em; text-transform: uppercase; color: #F8F2EA; background: linear-gradient(135deg, var(--tsb-plum-button) 0%, #21172B 55%, #150D1C 100%); background-size: 200%; border: 1px solid rgba(216,184,120,0.5); padding: 1rem 2.5rem; border-radius: var(--radius-btn); text-decoration: none; display: inline-block; transition: background-position 0.4s, box-shadow 0.4s, transform 0.3s; box-shadow: 0 4px 20px rgba(33,23,43,0.35); }
.btn-primary-tsb:hover { background-position: right; box-shadow: 0 6px 40px rgba(216,184,120,0.45); transform: translateY(-2px); color: #F8F2EA; }

/* Secondary — Cream/transparent surface, Plum text, Gold border. Plum text
   (rather than gold-on-transparent) keeps this readable wherever it sits,
   including directly on cream section backgrounds. */
.btn-ghost-tsb { font-family: var(--ff-ui); font-size: 0.7rem; letter-spacing: 0.3em; text-transform: uppercase; color: #21172B; font-weight: 600; background: transparent; border: 1px solid var(--gold-dim); padding: 1rem 2.5rem; border-radius: var(--radius-btn); text-decoration: none; display: inline-block; transition: border-color 0.3s, box-shadow 0.3s, background 0.3s; }
.btn-ghost-tsb:hover { border-color: var(--gold); background: rgba(216,184,120,0.12); box-shadow: 0 0 20px rgba(185,169,214,0.15); }

.hero-stats { display: flex; gap: 2.5rem; margin-top: 3rem; padding-top: 2rem; border-top: 1px solid var(--border); }
.hero-stat-num { font-family: var(--ff-display); font-size: 1.8rem; color: var(--gold); line-height: 1; }
.hero-stat-label { font-family: var(--ff-ui); font-size: 0.6rem; letter-spacing: 0.3em; text-transform: uppercase; color: var(--mist); margin-top: 0.3rem; }
.hero-scroll-hint { position: absolute; bottom: 2rem; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; gap: 0.5rem; font-family: var(--ff-ui); font-size: 0.6rem; letter-spacing: 0.3em; text-transform: uppercase; color: #75552E; animation: bounce 2s ease-in-out infinite; }
@keyframes bounce { 0%, 100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(6px); } }

/* ─── MARQUEE ───────────────────────────────────────────────── */
.marquee-belt { background: linear-gradient(135deg, #FCF7F0, var(--arcane), #FCF7F0); padding: 0.75rem 0; overflow: hidden; border-top: 1px solid rgba(185,169,214,0.15); border-bottom: 1px solid rgba(185,169,214,0.15); }
.marquee-track { display: flex; gap: 0; width: max-content; animation: marquee 25s linear infinite; }
.marquee-item { font-family: var(--ff-ui); font-size: 0.65rem; letter-spacing: 0.4em; text-transform: uppercase; color: var(--mist); padding: 0 2.5rem; white-space: nowrap; }
.marquee-sep { color: rgba(92,80,96,0.35); }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ─── SECTIONS ───────────────────────────────────────────────── */
section { position: relative; z-index: 1; }
.section-pad { padding: 6rem 0; }
.section-pad-lg { padding: 8rem 0; }

/* ─── ABOUT ──────────────────────────────────────────────────── */
.about-section { background: linear-gradient(180deg, var(--void) 0%, var(--midnight) 100%); }
.about-portrait { width: 100%; max-width: 400px; aspect-ratio: 3/4; background: linear-gradient(160deg, var(--arcane) 0%, var(--veil) 100%); border: 1px solid var(--border); border-radius: 4px; display: flex; align-items: center; justify-content: center; position: relative; overflow: hidden; }
.about-portrait::before { content: '✦'; font-size: 8rem; color: rgba(185,169,214,0.15); position: absolute; }
.about-portrait-placeholder { font-size: 6rem; filter: drop-shadow(0 0 30px rgba(185,169,214,0.5)); z-index: 1; }
.about-portrait-frame { position: absolute; top: -12px; left: -12px; right: -12px; bottom: -12px; border: 1px solid rgba(185,169,214,0.15); border-radius: 4px; pointer-events: none; }
.about-portrait-frame::before { content: '✦'; position: absolute; top: -8px; left: 50%; transform: translateX(-50%); color: var(--gold); font-size: 0.9rem; background: var(--void); padding: 0 0.5rem; }
.about-badge { position: absolute; bottom: -20px; right: -20px; width: 90px; height: 90px; background: linear-gradient(135deg, var(--violet), var(--rose)); border-radius: 50%; display: flex; flex-direction: column; align-items: center; justify-content: center; box-shadow: 0 4px 20px rgba(185,169,214,0.4); }
.about-badge-num { font-family: var(--ff-display); font-size: 1.3rem; color: var(--stardust); line-height: 1; }
.about-badge-text { font-family: var(--ff-ui); font-size: 0.45rem; letter-spacing: 0.15em; text-transform: uppercase; color: rgba(33,23,43,0.8); text-align: center; }
.about-headline { font-family: var(--ff-display); font-size: clamp(1.8rem, 3.5vw, 2.8rem); color: var(--stardust); line-height: 1.2; margin-bottom: 1.5rem; }
.about-skills { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 1.5rem 0; }
.skill-chip { font-family: var(--ff-ui); font-size: 0.6rem; letter-spacing: 0.25em; text-transform: uppercase; color: var(--gold); border: 1px solid var(--gold-dim); padding: 0.3rem 0.85rem; background: rgba(185,169,214,0.05); }

/* ─── SERVICES ───────────────────────────────────────────────── */
.services-section { background: var(--midnight); }
.services-section::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--gold-dim), transparent); }
.services-section::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--gold-dim), transparent); }
.service-card {
  background: var(--arcane);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  padding: 1.5rem;
  position: relative;
  transition: transform 0.4s ease, box-shadow 0.4s ease, border-color 0.4s;
  overflow: hidden;
  height: 100%;
  display: flex;
  flex-direction: column;
}
.service-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, var(--gold), transparent); opacity: 0; transition: opacity 0.4s; }
.service-card::after { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 0%, rgba(185,169,214,0.07) 0%, transparent 60%); opacity: 0; transition: opacity 0.4s; pointer-events: none; }
.service-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-card), var(--glow-gold); border-color: rgba(185,169,214,0.35); }
.service-card:hover::before, .service-card:hover::after { opacity: 1; }
.service-icon { font-size: 1.75rem; margin-bottom: 0.85rem; display: block; color: var(--gold); filter: drop-shadow(0 0 10px rgba(185,169,214,0.4)); }
.service-num { font-family: var(--ff-heading); font-size: 0.65rem; letter-spacing: 0.4em; color: var(--gold-dim); margin-bottom: 1rem; display: block; }
.service-title { font-family: var(--ff-heading); font-size: 1.05rem; line-height: 1.3; color: var(--gold-light); margin-bottom: 0.5rem; letter-spacing: 0.05em; min-height: 2.6em; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.service-desc-wrap { margin-bottom: 0.85rem; min-height: calc(1.6em * 2); }
.service-desc { font-size: 0.85rem; color: rgba(33,23,43,0.8); line-height: 1.55; margin-bottom: 0; }
.service-desc.is-clamped { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.service-desc.is-expanded { display: block; -webkit-line-clamp: unset; overflow: visible; }
.service-desc-toggle { display: block; background: none; border: none; padding: 0; margin-top: 0.4rem; color: var(--gold); font-family: var(--ff-ui); font-size: 0.62rem; letter-spacing: 0.18em; text-transform: uppercase; cursor: pointer; }
.service-desc-toggle:hover, .service-desc-toggle:focus-visible { color: var(--gold-light); text-decoration: underline; }
.service-price { font-family: var(--ff-heading); font-size: 1.15rem; color: var(--gold); font-weight: 600; }
.service-price-label { font-family: var(--ff-ui); font-size: 0.6rem; letter-spacing: 0.2em; color: var(--mist); text-transform: uppercase; display: block; margin-top: 0.2rem; }
.service-card-actions { margin-top: auto; padding-top: 0.9rem; border-top: 1px solid var(--border); display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; }
.service-cta { font-family: var(--ff-ui); font-size: 0.65rem; letter-spacing: 0.25em; text-transform: uppercase; color: var(--gold); font-weight: 700; text-decoration: none; display: flex; align-items: center; gap: 0.5rem; background: none; border: none; padding: 0; cursor: pointer; transition: gap 0.3s, color 0.3s; }
.service-cta:hover, .service-cta:focus-visible { gap: 1rem; color: var(--gold-light); }
.service-cta:focus-visible, .service-desc-toggle:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
.badge-popular { position: absolute; top: 1rem; right: 1rem; font-family: var(--ff-ui); font-size: 0.55rem; letter-spacing: 0.3em; text-transform: uppercase; color: #21172B; background: linear-gradient(135deg, var(--gold-bright), var(--gold-soft)); padding: 0.25rem 0.75rem; border-radius: 999px; }

/* Controlled card-to-card colour variation across the reading grid — cream+gold
   border by default, every 2nd card a soft rose surface, every 3rd a soft
   lavender surface. Text stays plum throughout; only the surface shifts. */
.row.g-4 > div:nth-of-type(3n+2) .service-card:not(.service-card-viewall) { background: rgba(201,155,165,0.12); border-color: rgba(201,155,165,0.35); }
.row.g-4 > div:nth-of-type(3n) .service-card:not(.service-card-viewall) { background: rgba(185,169,214,0.14); border-color: rgba(185,169,214,0.35); }

/* View All Services — 6th card in the homepage grid, styled as a CTA rather than a reading */
.service-card-viewall { align-items: center; text-align: center; justify-content: center; text-decoration: none; border-style: dashed; background: var(--midnight); }
.service-card-viewall .service-icon { margin-bottom: 0.65rem; }
.service-card-viewall .service-title { color: var(--gold-light); min-height: 0; -webkit-line-clamp: unset; }
.service-card-viewall .service-desc { text-align: center; -webkit-line-clamp: unset; }
.service-card-actions-viewall { border-top: none; padding-top: 0.9rem; justify-content: center; }
.service-card-viewall:hover { border-color: var(--gold); }
.service-card-viewall:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }

/* ─── TESTIMONIALS ───────────────────────────────────────────── */
/* Homepage QA: process-section above is flat --midnight, and this gradient
   used to start on that exact same --midnight, so the seam between the two
   sections vanished (identical color both sides). Starting on --veil instead
   keeps the existing token but restores a visible boundary. */
.testimonials-section { background: linear-gradient(180deg, var(--veil) 0%, var(--midnight) 55%, var(--veil) 100%); position: relative; }
.testimonials-section::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse 100% 50% at 20% 50%, rgba(185,169,214,0.10) 0%, transparent 60%), radial-gradient(ellipse 80% 50% at 80% 50%, rgba(201,155,165,0.07) 0%, transparent 60%); pointer-events: none; }
.testimonial-card {
  background: rgba(185,169,214,0.22);
  border: 1px solid var(--border);
  padding: var(--space-lg);
  position: relative;
  height: 100%;
  transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1), box-shadow 0.3s ease;
  border-radius: var(--radius-card);
}
.testimonial-card::before { content: '"'; font-family: var(--ff-display); font-size: 5rem; color: var(--gold); opacity: 0.15; position: absolute; top: 0.5rem; left: 1.5rem; line-height: 1; }
.testimonial-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-card); }
.testimonial-text { font-style: italic; font-size: 1rem; color: rgba(33,23,43,0.8); line-height: 1.8; margin-bottom: 1.5rem; position: relative; z-index: 1; }
.testimonial-author { display: flex; align-items: center; gap: 1rem; }
.testimonial-avatar { width: 44px; height: 44px; background: linear-gradient(135deg, var(--tsb-plum-light), var(--tsb-rose-deep)); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-family: var(--ff-heading); font-size: 1rem; color: var(--tsb-cream-card); flex-shrink: 0; }
.testimonial-name { font-family: var(--ff-heading); font-size: 0.85rem; color: var(--gold-light); letter-spacing: 0.05em; }
.testimonial-loc { font-family: var(--ff-ui); font-size: 0.6rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--mist); }
.stars { color: var(--gold); font-size: 0.8rem; letter-spacing: 0.1em; }

/* ─── HOW IT WORKS ───────────────────────────────────────────── */
.process-section { background: var(--midnight); }
.process-connector { position: absolute; top: 3.5rem; left: calc(50% + 3rem); right: calc(-50% + 3rem); height: 1px; background: linear-gradient(90deg, var(--gold-dim), transparent); }
.process-num-wrap { width: 72px; height: 72px; border: 1px solid var(--gold-dim); border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 1.5rem; position: relative; background: var(--arcane); box-shadow: var(--glow-violet); }
.process-num { font-family: var(--ff-display); font-size: 1.3rem; color: var(--gold); }
.process-step { text-align: center; padding: 2rem 1rem; position: relative; }
.process-title { font-family: var(--ff-heading); font-size: 1rem; color: var(--stardust); margin-bottom: 0.5rem; letter-spacing: 0.05em; }
.process-desc { font-size: 0.9rem; color: var(--mist); line-height: 1.6; }

/* ─── ZODIAC WHEEL ───────────────────────────────────────────── */
.zodiac-section { background: var(--void); overflow: hidden; }
.zodiac-wheel { display: grid; grid-template-columns: repeat(6, 1fr); gap: 0; }
.zodiac-item { text-align: center; padding: 2rem 1rem; border: 1px solid var(--border); cursor: default; transition: background 0.3s, border-color 0.3s; margin: -1px 0 0 -1px; }
.zodiac-item:hover { background: rgba(185,169,214,0.05); border-color: rgba(185,169,214,0.3); z-index: 1; }
.zodiac-glyph { font-size: 2rem; display: block; margin-bottom: 0.5rem; }
.zodiac-name { font-family: var(--ff-heading); font-size: 0.7rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--mist); }

/* ════════════════════════════════════════════════════════════════
   CONTACT PAGE - PROFESSIONAL BOOTSTRAP DESIGN
   ════════════════════════════════════════════════════════════════ */

/* ─── RESPONSIVE PADDING ────────────────────────────────────────────── */
.py-7 { padding-top: 5rem !important; padding-bottom: 5rem !important; }

@media (max-width: 991.98px) {
  .py-lg-7 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; }
}

/* ─── TYPOGRAPHY ────────────────────────────────────────────────────── */
.fw-300 { font-weight: 300; }
.fw-600 { font-weight: 600; }
.text-gold { color: var(--gold) !important; }

.display-4 {
  font-family: var(--ff-heading);
  letter-spacing: -0.02em;
}

.h2 {
  font-family: var(--ff-heading);
}

/* ─── CONTACT — two-column composition (channels + form) ───────────────
   Left: contact channels as a simple linked list (not stacked cards) plus
   a short reassurance line and a subtle celestial line-art detail.
   Right: the booking-style form, uncluttered, no ticket-system chrome. */
.contact-channels-col {
  position: relative;
  height: 100%;
}

.contact-celestial-deco {
  position: absolute;
  top: -1.5rem;
  right: -1rem;
  width: 120px;
  height: 120px;
  opacity: 0.5;
  pointer-events: none;
  z-index: 0;
}

.contact-reassurance {
  color: var(--mist);
  font-size: 1rem;
  line-height: 1.7;
  max-width: 34rem;
  margin-bottom: var(--space-xl);
  position: relative;
  z-index: 1;
}

.contact-channel-list {
  margin: 0 0 var(--space-xl);
  padding: 0;
  border-top: 1px solid var(--border);
}

.contact-channel-item {
  border-bottom: 1px solid var(--border);
}

.contact-channel-link {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  padding: var(--space-md) 0.25rem;
  color: inherit;
  text-decoration: none;
  transition: padding-left 0.25s ease, color 0.25s ease;
}

.contact-channel-link:hover {
  color: inherit;
  padding-left: 0.5rem;
}

.contact-channel-icon {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  border-radius: var(--radius-btn);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.2rem;
  color: var(--gold);
  background: var(--veil);
  border: 1px solid var(--border);
  transition: border-color 0.25s ease, box-shadow 0.25s ease;
}

.contact-channel-link:hover .contact-channel-icon {
  border-color: var(--gold-dim);
  box-shadow: var(--glow-gold);
}

.contact-channel-label {
  display: block;
  font-family: var(--ff-heading);
  font-size: 1rem;
  color: var(--stardust);
  margin-bottom: 0.15rem;
}

.contact-channel-detail {
  display: block;
  font-size: 0.85rem;
  color: var(--mist);
}

.contact-hours {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.6rem;
  align-items: baseline;
  font-size: 0.85rem;
  color: var(--mist);
}

.contact-hours-label {
  font-family: var(--ff-ui);
  font-size: 0.65rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--gold);
}

.contact-form-col {
  background: var(--veil);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  padding: var(--space-xl) var(--space-xl);
  box-shadow: var(--shadow-card);
}

.tsb-form .form-label {
  font-family: var(--ff-ui);
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--gold-dim);
  margin-bottom: 0.4rem;
}

.tsb-form .form-control {
  background: var(--void);
  border: 1px solid var(--border);
  color: var(--stardust);
  border-radius: var(--radius-btn);
  padding: 0.65rem 0.9rem;
}

.tsb-form .form-control:focus {
  border-color: var(--gold-dim);
  box-shadow: 0 0 0 0.2rem rgba(216,184,120,0.15);
  background: var(--void);
  color: var(--stardust);
}

.tsb-form .form-control::placeholder {
  color: rgba(33,23,43,0.4);
}

.tsb-form button[type="submit"] {
  border: 1px solid rgba(216,184,120,0.5);
  cursor: pointer;
}

/* ─── RESPONSIVE ADJUSTMENTS ────────────────────────────────────────── */
@media (max-width: 767.98px) {
  .hero-section {
    padding: 3rem 0 !important;
  }

  .display-4 {
    font-size: 1.75rem;
  }

  .lead {
    font-size: 0.95rem !important;
  }

  .contact-form-col {
    padding: var(--space-lg);
  }

  .contact-celestial-deco {
    display: none;
  }
}

/* ─── FAQ SECTION — Bootstrap 5 Accordion ───────────────────────────────
   Rebuilt on Bootstrap's native accordion component (data-bs-toggle=
   "collapse") instead of a hand-rolled .open toggle. Cream collapsed
   surface, Plum heading, Gold divider, soft Lavender/Rose tint on the
   expanded item — same brand tokens as the rest of the page. */
.tsb-faq-accordion .accordion-item {
  background-color: var(--veil);
  border: 1px solid var(--border);
  border-radius: var(--radius-card) !important;
  overflow: hidden;
  margin-bottom: 1rem;
}
.tsb-faq-accordion .accordion-item:last-child { margin-bottom: 0; }

.tsb-faq-accordion .accordion-button {
  font-family: var(--ff-heading);
  font-size: 1rem;
  font-weight: 500;
  color: var(--stardust);
  background-color: transparent;
  padding: 1.25rem 1.5rem;
  box-shadow: none;
}
.tsb-faq-accordion .accordion-button:focus { box-shadow: none; outline: 2px solid var(--gold); outline-offset: -2px; }
.tsb-faq-accordion .accordion-button:hover { color: var(--gold); }

.tsb-faq-accordion .accordion-button:not(.collapsed) {
  color: var(--gold);
  background: linear-gradient(135deg, rgba(185,169,214,0.14), rgba(201,155,165,0.10));
  box-shadow: inset 0 -1px 0 var(--gold-dim);
}

/* Custom plus/rotate marker instead of Bootstrap's default chevron image,
   so the accent colour stays on-brand (gold) in both states. */
.tsb-faq-accordion .accordion-button::after {
  background-image: none;
  content: '+';
  font-size: 1.3rem;
  line-height: 1;
  color: var(--gold);
  width: auto;
  height: auto;
  transform: none;
  transition: transform 0.3s ease;
}
.tsb-faq-accordion .accordion-button:not(.collapsed)::after {
  content: '+';
  transform: rotate(45deg);
}

.tsb-faq-accordion .accordion-body {
  padding: 0 1.5rem 1.5rem;
  font-size: 0.95rem;
  color: var(--mist);
  line-height: 1.75;
  border-top: 1px solid var(--border);
  padding-top: 0.9rem;
}

/* ─── CTA ────────────────────────────────────────────────────── */
.cta-section { background: linear-gradient(135deg, rgba(185,169,214,0.18) 0%, transparent 50%, rgba(185,169,214,0.08) 100%), linear-gradient(180deg,#2A1D36 0%,#21172B 100%); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); text-align: center; padding: 6rem 0; }
.cta-title { font-family: var(--ff-display); font-size: clamp(1.8rem, 4vw, 3.2rem); color: var(--stardust); margin-bottom: 1rem; }
.cta-subtitle { font-family: var(--ff-body); font-style: italic; font-size: 1.2rem; color: var(--mist); margin-bottom: 2.5rem; max-width: 600px; margin-left: auto; margin-right: auto; }
.cta-note { font-family: var(--ff-ui); font-size: 0.65rem; letter-spacing: 0.25em; text-transform: uppercase; color: var(--gold-dim); margin-top: 1.5rem; }

/* ─── FOOTER ────────────────────────────────────────────────── */
footer {
  background: linear-gradient(180deg, #2A1D36 0%, #21172B 100%);
  border-top: 1px solid var(--border);
  padding: 4rem 0 2rem;
}

footer .container {
  padding-left: clamp(1.5rem, 5vw, 3rem) !important;
  padding-right: clamp(1.5rem, 5vw, 3rem) !important;
}
/* --void is the LIGHT page ground under Moonstone, so the footer sets its own
   deep-violet background explicitly - inheriting var(--void) here would have
   produced a light footer carrying light-on-dark text and a light logo. */
.footer-brand { font-family: var(--ff-heading); font-size: 1.4rem; color: var(--gold-light); letter-spacing: 0.08em; margin-bottom: 1rem; }
.footer-tagline { font-size: 0.95rem; font-style: italic; color: var(--mist); max-width: 280px; line-height: 1.65; font-weight: 500; }
.footer-heading { font-family: var(--ff-ui); font-size: 0.6rem; letter-spacing: 0.4em; text-transform: uppercase; color: var(--gold); margin-bottom: 1.25rem; }
.footer-links { list-style: none; padding: 0; }
.footer-links li { margin-bottom: 0.6rem; }
.footer-links a { font-family: var(--ff-ui); font-size: 0.8rem; color: var(--mist); font-weight: 500; text-decoration: none; letter-spacing: 0.05em; transition: color 0.3s; }
.footer-links a:hover { color: var(--gold-light); }
.footer-social { display: flex; gap: 1rem; margin-top: 1.5rem; }
.footer-social-link { width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--border); display: flex; align-items: center; justify-content: center; color: var(--mist); text-decoration: none; font-size: 1rem; transition: border-color 0.3s, color 0.3s, background 0.3s, box-shadow 0.3s; }
.footer-social-link:hover { border-color: var(--gold-dim); color: var(--gold); background: rgba(185,169,214,0.08); box-shadow: 0 0 15px rgba(185,169,214,0.15); }
.footer-bottom { padding-top: 2rem; margin-top: 3rem; border-top: 1px solid var(--border); display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 1rem; }
.footer-copy { font-family: var(--ff-ui); font-size: 0.65rem; letter-spacing: 0.15em; color: rgba(243,237,230,0.9); }
.footer-magic { font-family: var(--ff-heading); font-size: 0.7rem; letter-spacing: 0.3em; color: var(--gold-dim); }

/* ─── CONTAINER & LAYOUT ─────────────────────────────────────── */
.container {
  padding-left: clamp(1.5rem, 5vw, 3rem) !important;
  padding-right: clamp(1.5rem, 5vw, 3rem) !important;
  max-width: 1200px !important;
}

.section-pad {
  padding: clamp(3rem, 8vh, 5rem) 0;
}

.section-pad-lg {
  padding: clamp(4rem, 10vh, 7rem) 0;
}

/* ─── UTILITIES ──────────────────────────────────────────────── */
.section-title { font-family: var(--ff-display); font-size: clamp(1.8rem, 3.5vw, 2.8rem); color: var(--stardust); line-height: 1.2; margin-bottom: var(--space-lg); }
.section-intro { font-size: 1.05rem; font-style: italic; color: rgba(33,23,43,0.72); max-width: 560px; line-height: 1.8; }
.gold-line { width: 60px; height: 1px; background: linear-gradient(90deg, var(--gold), transparent); margin: var(--space-lg) 0; }
.w-100 { width: 100% !important; }

/* ─── ANIMATIONS ────────────────────────────────────────────── */
.fade-up { opacity: 0; transform: translateY(30px); transition: opacity 0.7s ease, transform 0.7s ease; }
.fade-up.visible { opacity: 1; transform: translateY(0); }
.fade-up-delay-1 { transition-delay: 0.1s; }
.fade-up-delay-2 { transition-delay: 0.2s; }
.fade-up-delay-3 { transition-delay: 0.3s; }
.fade-up-delay-4 { transition-delay: 0.4s; }
.fade-up-delay-5 { transition-delay: 0.5s; }

/* Single-page checkout animations */
.fade-in { opacity: 0; transform: translateY(20px); transition: opacity 0.4s ease, transform 0.4s cubic-bezier(.2,.8,.2,1); }
.fade-in[style*="display: block"] { opacity: 1; transform: translateY(0); }

/* ─── PRELOADER ──────────────────────────────────────────────── */
.preloader { position: fixed; inset: 0; z-index: 9999; background: var(--void); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1.5rem; transition: opacity 0.6s ease, visibility 0.6s ease; }
.preloader.hidden { opacity: 0; visibility: hidden; pointer-events: none; }
.preloader-card { width: 56px; height: 90px; border: 1px solid var(--gold); border-radius: 6px; position: relative; animation: preloader-flip 1.6s ease-in-out infinite; box-shadow: var(--glow-gold); }
.preloader-card::before { content: '✦'; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: var(--gold); font-size: 1.3rem; }
@keyframes preloader-flip { 0%, 100% { transform: rotateY(0deg); } 50% { transform: rotateY(180deg); } }
.preloader-text { font-family: var(--ff-ui); font-size: 0.6rem; letter-spacing: 0.5em; text-transform: uppercase; color: var(--mist); }

/* ─── SCROLL PROGRESS ───────────────────────────────────────── */
.scroll-progress { position: fixed; top: 0; left: 0; height: 2px; background: linear-gradient(90deg, var(--violet), var(--gold), var(--rose)); width: 0%; z-index: 1100; box-shadow: 0 0 12px rgba(185,169,214,0.6); transition: width 0.1s linear; }

/* ─── GEO BANNER ────────────────────────────────────────────── */
.geo-banner { background: linear-gradient(90deg, var(--arcane), var(--veil), var(--arcane)); color: var(--stardust); font-family: var(--ff-ui); font-size: 0.72rem; letter-spacing: 0.05em; text-align: center; padding: 0.55rem 1rem; position: relative; z-index: 1050; display: flex; align-items: center; justify-content: center; gap: 0.6rem; flex-wrap: wrap; }
.geo-banner strong { font-weight: 700; color: var(--gold-light); }
.geo-banner-close { position: absolute; right: 1rem; top: 50%; transform: translateY(-50%); background: none; border: none; color: var(--stardust); opacity: 0.6; cursor: pointer; font-size: 0.9rem; line-height: 1; padding: 0.2rem; }
.geo-banner-close:hover { opacity: 1; }

/* ─── CURSOR ORB ─────────────────────────────────────────────── */
.cursor-orb { position: fixed; width: 420px; height: 420px; border-radius: 50%; background: radial-gradient(circle, rgba(185,169,214,0.08) 0%, rgba(185,169,214,0.05) 40%, transparent 70%); pointer-events: none; z-index: 1; transform: translate(-50%, -50%); transition: opacity 0.4s ease; opacity: 0; }
.cursor-orb.active { opacity: 1; }

/* ─── LIVE STRIP ─────────────────────────────────────────────── */
.live-strip { background: rgba(185,169,214,0.26); border-top: 1px solid rgba(201,155,165,0.2); border-bottom: 1px solid rgba(201,155,165,0.2); padding: 0.7rem 0; text-align: center; position: relative; z-index: 1; }
.live-dot { width: 8px; height: 8px; background: #D8B878; border-radius: 50%; display: inline-block; margin-right: 0.5rem; animation: live-pulse 1.5s ease-in-out infinite; box-shadow: 0 0 8px #D8B878; }
@keyframes live-pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.4; transform: scale(0.8); } }
.live-text { font-family: var(--ff-ui); font-size: 0.75rem; letter-spacing: 0.05em; color: var(--mist); }
.live-text strong { color: var(--gold-light); }

/* ─── FLOAT WHATSAPP ─────────────────────────────────────────── */
.float-whatsapp { position: fixed; bottom: 1.75rem; right: 1.75rem; width: 60px; height: 60px; background: linear-gradient(135deg, #25D366, #1FAF53); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 1.6rem; text-decoration: none; box-shadow: 0 6px 24px rgba(37,211,102,0.45); z-index: 999; animation: float-wa-pulse 2.4s ease-in-out infinite; transition: transform 0.3s; }
.float-whatsapp:hover { transform: scale(1.1); color: #fff; }
.float-whatsapp::before { content: ''; position: absolute; inset: -6px; border: 1px solid rgba(37,211,102,0.4); border-radius: 50%; animation: float-wa-ring 2.4s ease-out infinite; }
@keyframes float-wa-pulse { 0%, 100% { box-shadow: 0 6px 24px rgba(37,211,102,0.45); } 50% { box-shadow: 0 6px 32px rgba(37,211,102,0.75); } }
@keyframes float-wa-ring { 0% { transform: scale(1); opacity: 0.7; } 100% { transform: scale(1.5); opacity: 0; } }

/* ─── MOBILE BOOK BAR ────────────────────────────────────────── */
.mobile-book-bar { display: none; position: fixed; bottom: 0; left: 0; right: 0; background: rgba(33,23,43,0.94); backdrop-filter: blur(12px); border-top: 1px solid var(--border); padding: 0.7rem 1rem; z-index: 998; align-items: center; justify-content: center; }

/* ─── REVEAL VARIANTS ────────────────────────────────────────── */
.reveal-scale { opacity: 0; transform: scale(0.92); transition: opacity 0.8s ease, transform 0.8s cubic-bezier(.2,.8,.2,1); }
.reveal-scale.visible { opacity: 1; transform: scale(1); }
.reveal-blur { opacity: 0; filter: blur(10px); transform: translateY(20px); transition: opacity 0.9s ease, filter 0.9s ease, transform 0.9s ease; }
.reveal-blur.visible { opacity: 1; filter: blur(0); transform: translateY(0); }
.reveal-left { opacity: 0; transform: translateX(-50px); transition: opacity 0.7s ease, transform 0.7s cubic-bezier(.2,.8,.2,1); }
.reveal-left.visible { opacity: 1; transform: translateX(0); }
.reveal-right { opacity: 0; transform: translateX(50px); transition: opacity 0.7s ease, transform 0.7s cubic-bezier(.2,.8,.2,1); }
.reveal-right.visible { opacity: 1; transform: translateX(0); }

.gold-line.shimmer { position: relative; overflow: hidden; }
.gold-line.shimmer::after { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, var(--gold-light), transparent); animation: shimmer-sweep 2.5s ease-in-out infinite; }
@keyframes shimmer-sweep { 0% { left: -100%; } 50% { left: 100%; } 100% { left: 100%; } }

.service-card .service-icon { transition: transform 0.5s cubic-bezier(.2,.8,.2,1); display: inline-block; }
.service-card:hover .service-icon { transform: rotate(-8deg) scale(1.15); }
.skill-chip { transition: background 0.3s, color 0.3s, transform 0.3s, box-shadow 0.3s; cursor: default; }
.skill-chip:hover { background: var(--gold); color: var(--void); transform: translateY(-3px); box-shadow: 0 6px 18px rgba(185,169,214,0.3); }

.testi-dots { display: flex; gap: 0.5rem; justify-content: center; margin-top: 2.5rem; }
.testi-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--gold-dim); cursor: pointer; transition: background 0.3s, transform 0.3s; border: none; padding: 0; }
.testi-dot.active { background: var(--gold); transform: scale(1.3); }
.testimonial-card { transition: transform 0.5s ease, opacity 0.5s ease, box-shadow 0.4s ease; }
.testimonial-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-card); }

/* ─── REDUCED MOTION ─────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .tarot-card-3d, .tarot-card-back, .tarot-star, .hero-scroll-hint, .marquee-track, .float-whatsapp, .float-whatsapp::before, .live-dot, .chart-ring, .ornate-symbol, .portrait-glyph, .strip-scroll { animation: none; }
  .fade-up, .reveal-scale, .reveal-blur, .reveal-left, .reveal-right { opacity: 1; transform: none; filter: none; transition: none; }
  .stack-section { position: static; }
  .crystal-cursor { display: none !important; }
}

/* ─── RESPONSIVE ─────────────────────────────────────────────── */
@media (max-width: 991.98px) {
  .tarot-card-back { display: none; }
  .process-connector { display: none; }
  .zodiac-wheel { grid-template-columns: repeat(4, 1fr); }
  .hero-stats { gap: 1.5rem; }

  .container {
    padding-left: 2rem !important;
    padding-right: 2rem !important;
  }
}

@media (max-width: 767.98px) {
  .section-pad { padding: 2.5rem 0; }
  .section-pad-lg { padding: 3.5rem 0; }
  .zodiac-wheel { grid-template-columns: repeat(3, 1fr); }
  .hero-card-visual { display: none; }
  .hero-stats { flex-wrap: wrap; gap: 1.5rem; }

  /* ── Homepage QA: hero was min(92vh,780px) + flex vertical-centering,
     which on short mobile screens pushed the Book a Reading CTA below the
     fold even though the section itself fit. Let content set the height
     and start from the top so eyebrow → headline → CTA reach the fold. ── */
  .hero { min-height: 0; padding: 2.5rem 0 2.25rem; align-items: flex-start; }
  .hero-eyebrow { margin-bottom: 1rem; }
  .hero-headline { margin-bottom: 0.75rem; }
  .hero-desc { margin-bottom: 1.5rem; }
  .hero-ask-wrap { margin-bottom: 1.25rem; }
  .footer-bottom { flex-direction: column; text-align: center; }
  .mobile-book-bar { display: flex; }
  body { padding-bottom: 76px; }
  .float-whatsapp { bottom: 5.5rem; width: 52px; height: 52px; font-size: 1.4rem; }
  .cursor-orb { display: none; }
  .stack-section { position: static !important; }
  .split-left { min-height: 50vw; }
  .service-card { padding: 1.4rem 1.25rem; }
  .service-icon { font-size: 1.6rem; margin-bottom: 0.85rem; }
  .service-title { font-size: 1rem; margin-bottom: 0.5rem; }
  .service-desc { font-size: 0.82rem; line-height: 1.55; }
  .service-desc.is-clamped { -webkit-line-clamp: 3; }
  .service-desc-wrap { margin-bottom: 0.85rem; }
  .service-price { margin-bottom: 0.85rem; }
  .service-cta { font-size: 0.65rem; }
  .services-section { padding: 3rem 0 4rem; }

  /* Single-page booking mobile */
  .reading-grid { grid-template-columns: 1fr; }
  .reading-card-inner { flex-direction: column; text-align: center; gap: 1rem; }
  .reading-card-price { text-align: center; }
  .reading-detail-row { flex-direction: column; align-items: flex-start; gap: .5rem; }
  .detail-value { text-align: left; }

  .container {
    padding-left: 1.25rem !important;
    padding-right: 1.25rem !important;
  }
}

@media (max-width: 575.98px) {
  .zodiac-wheel { grid-template-columns: repeat(3, 1fr); }
  .service-card { padding: 1.1rem 1rem; }
  .service-title { font-size: 0.95rem; }
  .service-desc { font-size: 0.78rem; }
}

@media (min-width: 768px) {
  .mobile-book-bar { display: none !important; }
}

/* ════════════════════════════════════════════════════════════════
   AUGURY + SYNASTRY ADDITIONS
   ════════════════════════════════════════════════════════════════ */

/* ── BIRTH CHART ─────────────────────────────────────────────── */
.birth-chart-section { background: linear-gradient(180deg, var(--midnight) 0%, var(--veil) 100%); padding: 6rem 0; position: relative; overflow: hidden; }
.birth-chart-section::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 50%, rgba(185,169,214,0.08) 0%, transparent 70%); }
.chart-wheel-wrap { position: relative; width: 380px; height: 380px; margin: 0 auto; }
.chart-ring { position: absolute; border-radius: 50%; border: 1px solid; top: 50%; left: 50%; transform: translate(-50%,-50%); }
.chart-ring-1 { width: 100%; height: 100%; border-color: rgba(185,169,214,0.25); animation: spin-slow 60s linear infinite; }
.chart-ring-2 { width: 80%; height: 80%; border-color: rgba(185,169,214,0.30); animation: spin-slow 40s linear infinite reverse; }
.chart-ring-3 { width: 60%; height: 60%; border-color: rgba(201,155,165,0.25); animation: spin-slow 25s linear infinite; }
.chart-ring-4 { width: 40%; height: 40%; border-color: rgba(185,169,214,0.20); animation: spin-slow 15s linear infinite reverse; }
.chart-center { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 80px; height: 80px; border-radius: 50%; background: radial-gradient(circle, rgba(185,169,214,0.15) 0%, transparent 70%); display: flex; align-items: center; justify-content: center; font-size: 2rem; box-shadow: 0 0 40px rgba(185,169,214,0.2), 0 0 80px rgba(185,169,214,0.1); }
@keyframes spin-slow { from { transform: translate(-50%,-50%) rotate(0deg); } to { transform: translate(-50%,-50%) rotate(360deg); } }
.chart-glyph { position: absolute; top: 50%; left: 50%; font-size: 1rem; color: var(--gold); transform-origin: 0 0; font-family: var(--ff-heading); filter: drop-shadow(0 0 6px rgba(185,169,214,0.5)); }

/* ── PORTRAIT ───────────────────────────────────────────────── */
.portrait-svg-wrap { position: relative; max-width: 330px; margin: 0 auto; }
/* The corner-bracket frame is decorative and must sit ON TOP of the portrait.
   With no rule at all it flowed inline and added ~520px of blank height above
   the image, which is what made the About section span more than one screen. */
.portrait-frame-svg { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 2; }
.portrait-bg { width: 100%; aspect-ratio: 4/5; background: linear-gradient(160deg, var(--tsb-plum-light) 0%, var(--tsb-plum-soft) 100%); border-radius: 4px; display: flex; align-items: center; justify-content: center; overflow: hidden; position: relative; }
.portrait-bg::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 0%, rgba(185,169,214,0.3) 0%, transparent 60%), radial-gradient(ellipse at 50% 100%, rgba(185,169,214,0.1) 0%, transparent 50%); }
.portrait-orbs { position: absolute; inset: 0; background-image: radial-gradient(circle 2px at 20% 30%, rgba(185,169,214,0.6) 0%, transparent 100%), radial-gradient(circle 1px at 70% 15%, rgba(248,242,234,0.5) 0%, transparent 100%), radial-gradient(circle 1.5px at 85% 60%, rgba(185,169,214,0.4) 0%, transparent 100%), radial-gradient(circle 1px at 40% 80%, rgba(248,242,234,0.32) 0%, transparent 100%), radial-gradient(circle 2px at 10% 75%, rgba(185,169,214,0.5) 0%, transparent 100%), radial-gradient(circle 1px at 60% 45%, rgba(248,242,234,0.4) 0%, transparent 100%); }
.portrait-silhouette { position: relative; z-index: 1; text-align: center; }
.portrait-glyph { font-size: clamp(5rem, 12vw, 9rem); filter: drop-shadow(0 0 30px rgba(185,169,214,0.5)) drop-shadow(0 0 60px rgba(185,169,214,0.3)); display: block; animation: portrait-float 5s ease-in-out infinite; }
@keyframes portrait-float { 0%,100% { transform: translateY(0) scale(1); } 50% { transform: translateY(-12px) scale(1.03); } }

/* ── HOROSCOPE WIDGET ───────────────────────────────────────── */
.horoscope-panel { background: var(--arcane); border: 1px solid var(--border); border-radius: var(--radius-card); box-shadow: var(--shadow-card); padding: 0; overflow: hidden; }
.hp-tab-row { display: flex; overflow-x: auto; border-bottom: 1px solid var(--border); scrollbar-width: none; }
.hp-tab-row::-webkit-scrollbar { display: none; }
.hp-tab { flex-shrink: 0; padding: .65rem 1rem; font-family: var(--ff-ui); font-size: .6rem; letter-spacing: .2em; text-transform: uppercase; color: var(--mist); cursor: pointer; border-right: 1px solid var(--border); transition: background .3s, color .3s; white-space: nowrap; }
.hp-tab:last-child { border-right: none; }
.hp-tab.active { color: var(--gold); background: rgba(185,169,214,.06); }
.hp-content { padding: 2rem; min-height: 200px; }
.hp-panel { display: none; }
.hp-panel.active { display: block; }
.hp-sign-row { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.25rem; }
.hp-glyph { font-size: 2.5rem; filter: drop-shadow(0 0 12px rgba(185,169,214,0.5)); }
.hp-sign-name { font-family: var(--ff-heading); font-size: 1.2rem; color: var(--gold-light); }
.hp-dates { font-family: var(--ff-ui); font-size: .6rem; letter-spacing: .3em; text-transform: uppercase; color: var(--mist); }
.hp-text { font-style: italic; color: rgba(33,23,43,.75); line-height: 1.85; font-size: .97rem; }
.hp-energy-row { display: flex; gap: 1.5rem; margin-top: 1.25rem; }
.hp-energy { text-align: center; }
.hp-energy-label { font-family: var(--ff-ui); font-size: .55rem; letter-spacing: .3em; text-transform: uppercase; color: var(--mist); margin-bottom: .3rem; }
.hp-energy-bar { width: 50px; height: 3px; background: var(--arcane); border-radius: 2px; overflow: hidden; }
.hp-energy-fill { height: 100%; border-radius: 2px; }

/* ── LOVE COMPATIBILITY ─────────────────────────────────────── */
.compat-section { background: var(--void); padding: 6rem 0; position: relative; overflow: hidden; }
.compat-section::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse at 30% 50%, rgba(201,155,165,0.10) 0%, transparent 60%), radial-gradient(ellipse at 70% 50%, rgba(185,169,214,0.10) 0%, transparent 60%); }

/* Card surface holding the whole tool — Cream ground, Gold detail, so the
   selects/button/result read as one composed instrument instead of loose
   controls sitting directly on the section background. */
.compat-card { background: var(--veil); border: 1px solid rgba(216,184,120,.3); border-radius: var(--radius-card); box-shadow: var(--shadow-card); padding: var(--space-2xl) var(--space-xl); position: relative; overflow: hidden; }
.compat-select-label { font-family: var(--ff-ui); font-size: .6rem; letter-spacing: .3em; text-transform: uppercase; display: block; margin-bottom: .5rem; }
.compat-select-label-lavender { color: var(--gold-light); }
.compat-select-label-rose { color: var(--rose-deep); }

.compat-orbs { display: flex; align-items: center; justify-content: center; gap: 0; margin-bottom: 3rem; }
.compat-orb { width: 160px; height: 160px; border-radius: 50%; display: flex; align-items: center; justify-content: center; position: relative; flex-shrink: 0; }
.compat-orb-1 { background: radial-gradient(circle at 60% 40%, rgba(201,155,165,0.5), rgba(185,169,214,0.6)); border: 1px solid rgba(201,155,165,0.4); box-shadow: -20px 0 60px rgba(201,155,165,0.2); z-index: 2; transform: translateX(30px); }
.compat-orb-2 { background: radial-gradient(circle at 40% 60%, rgba(185,169,214,0.5), rgba(185,169,214,0.30)); border: 1px solid rgba(185,169,214,0.4); box-shadow: 20px 0 60px rgba(185,169,214,0.2); z-index: 1; transform: translateX(-30px); }
.compat-orb-icon { font-size: 2.8rem; }
.compat-score { font-family: var(--ff-display); font-size: 3rem; color: var(--gold); text-align: center; line-height: 1; text-shadow: 0 0 40px rgba(185,169,214,0.5); }
.compat-score-label { font-family: var(--ff-ui); font-size: .6rem; letter-spacing: .4em; text-transform: uppercase; color: var(--mist); text-align: center; margin-top: .5rem; }
/* Custom select — replaces the native widget's flat corners/arrow so it
   matches the rest of the premium system instead of reading as a stock
   Bootstrap/browser <select>. Lavender is used subtly for the focus/hover
   states per sign; Rose is reserved for the "Their Sign" label above. */
.compat-select {
  background: var(--arcane) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath fill='%237E6039' d='M1 1l5 5 5-5'/%3E%3C/svg%3E") right 1.1rem center / .7rem no-repeat;
  border: 1px solid var(--border);
  border-radius: var(--radius-btn);
  color: var(--stardust);
  font-family: var(--ff-body);
  font-size: .95rem;
  padding: .85rem 2.5rem .85rem 1.25rem;
  width: 100%;
  outline: none;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  transition: border-color .3s, box-shadow .3s, background-color .3s;
}
.compat-select:hover { border-color: rgba(185,169,214,.5); background-color: var(--veil); }
.compat-select:focus { border-color: var(--gold); box-shadow: 0 0 0 .2rem rgba(185,169,214,.18); }
.compat-select option { background: var(--arcane); }
.compat-result { background: var(--arcane); border: 1px solid rgba(216,184,120,.35); border-radius: var(--radius-card); box-shadow: var(--shadow-card); padding: 2rem; text-align: center; margin-top: 2rem; display: none; }
.compat-result.show { display: block; animation: fadeIn .5s ease; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.compat-percent { font-family: var(--ff-display); font-size: 4rem; color: var(--gold); line-height: 1; margin-bottom: .5rem; }
.compat-desc { font-style: italic; color: rgba(33,23,43,.75); line-height: 1.8; }

/* ── MOON STRIP ──────────────────────────────────────────────── */
.moon-strip { background: linear-gradient(90deg, var(--void), var(--midnight), var(--void)); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); padding: 2rem 0; text-align: center; overflow: hidden; }
.moon-phases { display: flex; justify-content: center; gap: 2.5rem; align-items: center; flex-wrap: wrap; }
.moon-item { display: flex; flex-direction: column; align-items: center; gap: .5rem; }
.moon-icon { font-size: 2.2rem; transition: transform .4s, filter .4s; cursor: default; }
.moon-item:hover .moon-icon { transform: scale(1.3) rotate(10deg); filter: drop-shadow(0 0 12px rgba(185,169,214,0.7)); }
.moon-label { font-family: var(--ff-ui); font-size: .55rem; letter-spacing: .3em; text-transform: uppercase; color: var(--mist); }
.moon-item.current .moon-icon { filter: drop-shadow(0 0 16px rgba(185,169,214,0.9)); }
.moon-item.current .moon-label { color: var(--gold); }

/* ── SPLIT ABOUT ─────────────────────────────────────────────── */
.constellation-bg { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 0; }
.split-about { display: grid; grid-template-columns: 0.85fr 1fr; min-height: 0; align-items: stretch; }
.split-left { position: relative; overflow: hidden; background: linear-gradient(160deg, var(--tsb-plum-button) 0%, #21172B 100%); }
.split-right { background: var(--midnight); display: flex; align-items: center; padding: 3rem 3.5rem; }
.split-left-overlay { position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 30%, rgba(185,169,214,0.32) 0%, transparent 60%), radial-gradient(ellipse at 50% 90%, rgba(26,17,34,0.55) 0%, transparent 50%); }
.split-left-content { position: relative; z-index: 2; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 2.75rem 2.25rem; text-align: center; }
@media (max-width: 991.98px) {
  .split-about { grid-template-columns: 1fr; }
  .split-right { padding: 2.5rem 1.5rem; }
  .split-left-content { padding: 2.25rem 1.5rem; }
  .portrait-svg-wrap { max-width: 260px; }
}

/* ── SERVICE STRIP ───────────────────────────────────────────── */
.service-strip { background: var(--arcane); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); padding: 0; overflow: hidden; }
.service-strip-inner { display: flex; animation: strip-scroll 30s linear infinite; width: max-content; }
.service-strip-inner:hover { animation-play-state: paused; }
.strip-item { display: flex; align-items: center; gap: 1rem; padding: 1.25rem 2.5rem; border-right: 1px solid var(--border); white-space: nowrap; cursor: default; transition: background .3s; }
.strip-item:hover { background: rgba(185,169,214,0.05); }
.strip-icon { font-size: 1.4rem; flex-shrink: 0; }
.strip-label { font-family: var(--ff-heading); font-size: .85rem; color: var(--gold-light); letter-spacing: .05em; }
.strip-price { font-family: var(--ff-ui); font-size: .65rem; letter-spacing: .2em; color: var(--mist); }
@keyframes strip-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ── ORNATE DIVIDER ──────────────────────────────────────────── */
.ornate-divider { display: flex; align-items: center; gap: 1.5rem; margin: 0 auto; max-width: 600px; }
.ornate-divider::before, .ornate-divider::after { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg, transparent, rgba(185,169,214,0.4), transparent); }
.ornate-symbol { color: var(--gold); font-size: 1.4rem; filter: drop-shadow(0 0 8px rgba(185,169,214,0.5)); flex-shrink: 0; animation: ornate-spin 8s linear infinite; }
@keyframes ornate-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }

/* ── INSIGHT CARDS ───────────────────────────────────────────── */
.insight-card { background: var(--arcane); border: 1px solid var(--border); overflow: hidden; height: 100%; transition: transform .4s, box-shadow .4s, border-color .4s; }
.insight-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-card), var(--glow-violet); border-color: rgba(185,169,214,.4); }
.insight-card-top { height: 200px; position: relative; overflow: hidden; display: flex; align-items: center; justify-content: center; }
.insight-card-body { padding: 1.75rem; }
.insight-tag { font-family: var(--ff-ui); font-size: .55rem; letter-spacing: .35em; text-transform: uppercase; color: var(--gold); margin-bottom: .75rem; display: block; }
.insight-title {
  font-family: var(--ff-heading);
  font-size: 1rem;
  color: var(--stardust);
  margin-bottom: .75rem;
  line-height: 1.4;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.insight-excerpt {
  font-size: .88rem;
  color: var(--mist);
  line-height: 1.7;
  margin-bottom: 1rem;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.insight-meta { font-family: var(--ff-ui); font-size: .6rem; letter-spacing: .15em; color: var(--gold-dim); display: flex; gap: 1rem; margin-bottom: .9rem; }
.insight-readmore { font-family: var(--ff-ui); font-size: .65rem; letter-spacing: .15em; text-transform: uppercase; color: var(--gold); text-decoration: none; display: inline-flex; align-items: center; gap: .35rem; transition: gap .25s ease, color .25s ease; }
.insight-readmore:hover { color: var(--gold-light); gap: .55rem; }

/* ── CRYSTAL CURSOR ──────────────────────────────────────────── */
.crystal-cursor { position: fixed; width: 24px; height: 24px; border: 1px solid rgba(185,169,214,0.5); border-radius: 50%; pointer-events: none; z-index: 9998; transform: translate(-50%,-50%); transition: transform .15s ease, width .3s, height .3s, opacity .3s; opacity: 0; mix-blend-mode: screen; }
.crystal-cursor.active { opacity: 1; }
.crystal-cursor.clicking { width: 12px; height: 12px; background: rgba(185,169,214,0.2); }

/* ── ANNOUNCEMENT BAR ────────────────────────────────────────── */
.top-announce { background: linear-gradient(90deg, var(--void), rgba(185,169,214,0.15), var(--void)); border-bottom: 1px solid rgba(185,169,214,0.2); padding: .5rem 0; text-align: center; font-family: var(--ff-ui); font-size: .62rem; letter-spacing: .2em; color: var(--mist); }
.top-announce a { color: var(--gold); text-decoration: none; }
.top-announce a:hover { text-decoration: underline; }

/* ── SECTION LINE ENTRANCE ───────────────────────────────────── */
.section-line-in { width: 0; height: 1px; background: linear-gradient(90deg, var(--gold-dim), var(--gold), transparent); transition: width 1.2s cubic-bezier(.2,.8,.2,1); }
.section-line-in.visible { width: 100px; }

/* ── FLOATING CARD TRIO ──────────────────────────────────────── */
.floating-cards-wrap { position: relative; height: 420px; }
.fc { position: absolute; background: linear-gradient(160deg, var(--arcane), var(--midnight)); border: 1px solid var(--border); border-radius: 10px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .75rem; padding: 1.5rem 1rem; box-shadow: var(--shadow-card); }
.fc-icon { font-size: 2.5rem; filter: drop-shadow(0 0 12px rgba(185,169,214,.5)); }
.fc-name { font-family: var(--ff-heading); font-size: .75rem; color: var(--gold-light); text-align: center; letter-spacing: .05em; }
.fc-1 { width: 130px; height: 210px; top: 40px; left: 50%; transform: translateX(-100px) rotate(-8deg); animation: float 5s ease-in-out infinite; z-index: 1; }
.fc-2 { width: 150px; height: 240px; top: 20px; left: 50%; transform: translateX(-75px); animation: float 5s ease-in-out 1s infinite; z-index: 3; border-color: rgba(185,169,214,.35); box-shadow: var(--shadow-card), var(--glow-gold); }
.fc-3 { width: 130px; height: 210px; top: 50px; left: 50%; transform: translateX(-10px) rotate(8deg); animation: float 5s ease-in-out 2s infinite; z-index: 1; }
.fc-back-pattern { position: absolute; inset: 6px; border: 1px solid rgba(185,169,214,.15); border-radius: 6px; background: repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(185,169,214,.03) 6px, rgba(185,169,214,.03) 7px); }

/* ── PAGINATION ──────────────────────────────────────────────── */
.tsb-pagination .page-link { background: var(--arcane); border-color: var(--border); color: var(--mist); font-family: var(--ff-ui); font-size: .65rem; letter-spacing: .15em; }
.tsb-pagination .page-item.active .page-link { background: var(--gold); border-color: var(--gold); color: var(--void); }
.tsb-pagination .page-link:hover { background: rgba(185,169,214,.1); color: var(--gold); }

/* ════════════════════════════════════════════════════════════════
   PAGE-SPECIFIC STYLES
   ════════════════════════════════════════════════════════════════ */

.page-hero { padding: 9rem 0 5rem; background: linear-gradient(180deg, var(--void) 0%, var(--midnight) 100%); position: relative; overflow: hidden; border-bottom: 1px solid var(--border); }
.page-hero::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 0%, rgba(185,169,214,0.18) 0%, transparent 60%); }
.page-hero-tag { font-family: var(--ff-ui); font-size: .6rem; letter-spacing: .5em; text-transform: uppercase; color: var(--gold); margin-bottom: 1rem; }
.page-hero-title { font-family: var(--ff-display); font-size: clamp(2rem, 5vw, 3.2rem); line-height: 1.1; color: var(--stardust); }
.page-hero-title .accent { background: linear-gradient(135deg, var(--gold), var(--gold-light), var(--gold)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }

/* BOOKING - SINGLE PAGE CHECKOUT */
.booking-form-wrap { }
.booking-progress { display:grid; grid-template-columns:repeat(3,1fr); list-style:none; margin:0 0 2.5rem; padding:0; }
.booking-progress li { position:relative; display:flex; flex-direction:column; align-items:center; gap:.45rem; color:var(--mist); font-family:var(--ff-ui); font-size:.62rem; letter-spacing:.14em; text-transform:uppercase; }
.booking-progress li::before { content:''; position:absolute; top:16px; right:50%; width:100%; height:1px; background:var(--border); z-index:0; }
.booking-progress li:first-child::before { display:none; }
.booking-progress li span { position:relative; z-index:1; display:grid; place-items:center; width:32px; height:32px; border:1px solid var(--border); border-radius:50%; background:var(--void); color:var(--mist); }
.booking-progress li.active { color:var(--gold-light); }
.booking-progress li.active span { border-color:var(--gold); color:var(--gold-light); box-shadow:var(--glow-gold); }
.booking-progress li.complete span { border-color:#D8B878; background:linear-gradient(135deg,#D8B878,#E8CF9A); color:#21172B; }
.booking-progress li.complete::before, .booking-progress li.active::before { background:var(--violet); }
.booking-step-panel[hidden] { display:none !important; }
.booking-actions { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-top:2rem; }
.booking-actions .btn-primary-tsb, .booking-actions .btn-ghost-tsb { min-height:48px; display:inline-flex; align-items:center; justify-content:center; gap:.5rem; }
.tsb-field-error { color:#A13A44; font-family:var(--ff-ui); font-size:.72rem; }
.booking-payment-status { margin-top:1rem; padding:1rem 1.1rem; border:1px solid var(--border); font-family:var(--ff-ui); font-size:.78rem; line-height:1.6; }
.booking-payment-status.is-success { border-color:rgba(46,107,79,.35); background:rgba(46,107,79,.08); color:#2E6B4F; }
.booking-payment-status.is-error { border-color:rgba(161,58,68,.35); background:rgba(161,58,68,.08); color:#A13A44; }
@media (max-width: 767.98px) {
  .booking-actions { align-items:stretch; flex-direction:column-reverse; }
  .booking-actions .btn-primary-tsb, .booking-actions .btn-ghost-tsb { width:100%; }
  .booking-progress li { font-size:.54rem; letter-spacing:.08em; }
}
.booking-section { margin-bottom: 3.5rem; }
.booking-section-details, .booking-section-form, .booking-section-confirm { }

/* Reading cards grid */
.reading-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; margin-bottom: 0; }

/* Reading card (new design) */
.reading-card {
  background: var(--arcane); border: 1px solid var(--border); border-radius: var(--radius-card);
  padding: 0; cursor: pointer; position: relative; overflow: hidden;
  transition: all .3s cubic-bezier(.2,.8,.2,1);
  display: flex; align-items: stretch;
}

.reading-card input[type=radio] { display: none; }

.reading-card-inner {
  display: flex; align-items: center; gap: 1.5rem; padding: 1.5rem;
  flex: 1; width: 100%;
}

.reading-card-icon { font-size: 2rem; flex-shrink: 0; color: var(--gold); }

.reading-card-content { flex: 1; min-width: 0; }

.reading-card-name {
  font-family: var(--ff-heading); font-size: 1rem;
  color: var(--stardust); margin-bottom: .25rem; line-height: 1.3;
}

.reading-card-meta {
  font-family: var(--ff-ui); font-size: .65rem; letter-spacing: .1em;
  color: var(--mist);
}

.reading-card-price {
  font-family: var(--ff-heading); color: var(--gold); font-size: 1.1rem;
  flex-shrink: 0; text-align: right; white-space: nowrap;
}

.reading-card:hover {
  border-color: rgba(185,169,214,.4);
  box-shadow: var(--shadow-card), var(--glow-gold);
  transform: translateY(-4px);
}

.reading-card.selected {
  border-color: var(--gold);
  background: rgba(185,169,214,.1);
  box-shadow: var(--shadow-card), var(--glow-gold);
}

/* ── SHARED BOOKING MODAL ──
   Values below are set explicitly rather than left to rely on the light-theme
   --stardust/--mist/--gold tokens: those tokens are redefined to LIGHT
   (light-on-dark) values inside several ancestor-agnostic selectors
   elsewhere in this file (see "INVERSE SURFACES"), and Bootstrap's own
   .modal-content also sets a color or inherits unpredictably depending on
   backdrop stacking — so this block pins every value directly to guarantee
   dark-ink-on-cream legibility regardless of where the modal is triggered from. */
.tsb-modal .modal-content { background: #F3EADC; border: 1px solid var(--border); border-radius: var(--radius-modal); overflow: hidden; color: #21172B; box-shadow: 0 24px 60px rgba(33,23,43,.28); }
.tsb-modal .modal-header { border-bottom: 1px solid var(--border); padding: 1.5rem 1.75rem 1.25rem; align-items: flex-start; }
.tsb-modal .modal-header .btn-close { filter: none; opacity: .8; }
.tsb-modal .modal-header .btn-close:hover { opacity: 1; }
.tsb-modal .modal-body { padding: 1.5rem 1.75rem; }
.tsb-modal #bookingModalEyebrow { color: #7E6039; }
.modal-reading-title { font-family: var(--ff-heading); font-size: 1.35rem; font-weight: 700; color: #21172B; margin-bottom: .75rem; }
.modal-reading-desc { font-size: .92rem; color: var(--tsb-plum); line-height: 1.7; margin-bottom: 1.25rem; }
.modal-reading-price { font-family: var(--ff-heading); font-size: 1.5rem; font-weight: 700; color: #7E6039; }
.modal-reading-price .service-price-label { color: #5D5261; }
.modal-reassurance { font-family: var(--ff-ui); font-size: .68rem; letter-spacing: .04em; color: #5D5261; margin: .85rem 0 0; }
.tsb-modal .modal-footer { border-top: 1px solid var(--border); padding: 1.25rem 1.75rem 1.5rem; gap: .75rem; }
.tsb-modal .modal-footer .btn-ghost-tsb { color: #21172B; border-color: #7E6039; }
.tsb-modal .modal-footer .btn-ghost-tsb:hover { color: #7E6039; }

/* ── SELECTED-READING SUMMARY — sits in the /book right rail above the
   trust panel, in the same narrow column, so it reads as an order-summary
   card rather than a full-width banner. Stacks vertically, not row-wise. ── */
.selected-reading-banner {
  background: var(--arcane); border: 1px solid var(--gold-dim); border-radius: var(--radius-card);
  padding: 1.5rem 1.75rem; margin-bottom: 2rem;
  display: flex; flex-direction: column; gap: 1rem;
}
.selected-reading-banner-info { display: flex; align-items: center; gap: 1rem; min-width: 0; }
.selected-reading-banner-icon { font-size: 1.6rem; color: var(--gold); flex-shrink: 0; }
.selected-reading-banner-name { font-family: var(--ff-heading); font-size: 1.05rem; color: var(--stardust); margin-bottom: .2rem; }
.selected-reading-banner-price { font-family: var(--ff-heading); color: var(--gold); font-size: 1rem; }
.selected-reading-banner-change { align-self: flex-start; font-family: var(--ff-ui); font-size: .65rem; letter-spacing: .15em; text-transform: uppercase; color: var(--mist); text-decoration: underline; background: none; border: none; cursor: pointer; }
.selected-reading-banner-change:hover { color: var(--gold-light); }
@media (max-width: 575.98px) {
  .selected-reading-banner { padding: 1.25rem; }
  .selected-reading-banner-info { gap: .85rem; }
}

/* Reading details card */
.reading-details-card {
  background: var(--arcane); border: 1px solid var(--border);
  padding: 2rem; border-radius: var(--radius-card);
}

.reading-detail-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 1rem 0; border-bottom: 1px solid rgba(185,169,214,.1);
}

.reading-detail-row.border-top-thick {
  border-top: 2px solid var(--gold-dim);
  border-bottom: none;
  margin-top: .5rem; padding-top: 1.25rem;
}

.detail-label {
  font-family: var(--ff-ui); font-size: .7rem; letter-spacing: .1em;
  color: var(--mist); text-transform: uppercase;
}

.detail-value {
  font-family: var(--ff-heading); font-size: .95rem;
  color: var(--stardust);
}

.detail-price {
  color: var(--gold); font-size: 1.2rem; font-family: var(--ff-display);
}
.tsb-label { font-family: var(--ff-ui); font-size: .6rem; letter-spacing: .3em; text-transform: uppercase; color: var(--gold); display: block; margin-bottom: .5rem; }
.tsb-input, .tsb-textarea, .tsb-select { width: 100%; background: var(--veil); border: 1px solid var(--border); border-radius: 10px; color: var(--stardust); font-family: var(--ff-body); font-size: 1rem; padding: .85rem 1rem; transition: border-color .3s, box-shadow .3s; outline: none; }
.tsb-input:focus, .tsb-textarea:focus, .tsb-select:focus { border-color: var(--gold); box-shadow: 0 0 15px rgba(185,169,214,.12); }
.tsb-input::placeholder, .tsb-textarea::placeholder { color: var(--mist); opacity: .75; }
.tsb-textarea { min-height: 110px; resize: vertical; }
.delivery-card { border: 1px solid var(--border); padding: 1.25rem; cursor: pointer; transition: border-color .3s, background .3s; flex: 1; }
.delivery-card:hover { border-color: var(--gold-dim); background: rgba(185,169,214,.04); }
.delivery-card.selected { border-color: var(--gold); background: rgba(185,169,214,.08); }
.order-card { background: var(--arcane); border: 1px solid var(--border); padding: 2rem; }
.order-row { display: flex; justify-content: space-between; align-items: center; padding: .6rem 0; border-bottom: 1px solid rgba(185,169,214,.08); }
.order-row:last-child { border-bottom: none; }
.order-label { font-family: var(--ff-ui); font-size: .7rem; letter-spacing: .1em; color: var(--mist); text-transform: uppercase; }
.order-value { font-family: var(--ff-heading); font-size: .95rem; color: var(--stardust); }
.order-total-label { font-family: var(--ff-heading); font-size: .85rem; color: var(--gold-light); text-transform: uppercase; }
.order-total-value { font-family: var(--ff-display); font-size: 1.5rem; color: var(--gold); }
.step-nav { display: flex; gap: 1rem; margin-top: 2rem; justify-content: space-between; }
.trust-item { display: flex; gap: 1rem; align-items: flex-start; padding: 1.25rem 0; border-bottom: 1px solid var(--border); }
.trust-item:last-child { border-bottom: none; }
.trust-icon { font-size: 1.5rem; flex-shrink: 0; }
.trust-title { font-family: var(--ff-heading); font-size: .9rem; color: var(--gold-light); margin-bottom: .25rem; }
.trust-body { font-family: var(--ff-ui); font-size: .75rem; color: var(--mist); line-height: 1.5; }

/* ZODIAC */

/* ── Zodiac page hero/section atmosphere — Soft Lavender veil, reused
   from the same radial-glow idiom as .page-hero::before / .birth-chart-section::before ── */
.zodiac-signs-section { background: var(--midnight); padding: 5rem 0; position: relative; overflow: hidden; }
.zodiac-signs-section::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 0%, rgba(185,169,214,.10) 0%, transparent 60%); pointer-events: none; }
.zodiac-signs-section .container { position: relative; z-index: 1; }

/* ── Sign panel (switcher content) — one sign visible at a time, styled as a
   Cream card with Gold/Lavender celestial detail so it reads as a single
   composed reading rather than plain unstyled text in the section ── */
.sign-panel { display: none; }
.sign-panel.active { display: block; animation: fadeIn .5s ease; }
#signPanels > .sign-panel {
  background: var(--arcane);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  padding: var(--space-2xl) var(--space-xl);
  position: relative;
  overflow: hidden;
}
#signPanels > .sign-panel::before {
  content: '';
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 12% 0%, rgba(185,169,214,.12) 0%, transparent 55%);
  pointer-events: none;
}

.zcard { background: var(--arcane); border: 1px solid var(--border); border-radius: var(--radius-card); padding: 2rem 1.5rem; text-align: center; height: 100%; cursor: pointer; transition: transform .4s, box-shadow .4s, border-color .4s; position: relative; overflow: hidden; }
.zcard::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 0%, rgba(185,169,214,.08) 0%, transparent 60%); opacity: 0; transition: opacity .4s; }
.zcard:hover { transform: translateY(-8px); box-shadow: var(--shadow-card), var(--glow-gold); border-color: rgba(185,169,214,.4); }
.zcard:hover::before { opacity: 1; }
.zcard.active { border-color: var(--gold); box-shadow: var(--shadow-card), var(--glow-gold); background: linear-gradient(160deg, rgba(216,184,120,.10), var(--arcane) 55%); }
.zcard.active::before { opacity: 1; }
.zcard.active .zcard-name { color: var(--gold); }
.zcard-glyph { font-size: 3rem; display: block; margin-bottom: .75rem; transition: transform .5s; }
.zcard:hover .zcard-glyph { transform: scale(1.2) rotate(-8deg); }
.zcard-name { font-family: var(--ff-heading); font-size: 1rem; color: var(--gold-light); margin-bottom: .25rem; }
.zcard-dates { font-family: var(--ff-ui); font-size: .58rem; letter-spacing: .2em; text-transform: uppercase; color: var(--mist); margin-bottom: .75rem; }
.zcard-element { font-family: var(--ff-ui); font-size: .55rem; letter-spacing: .3em; text-transform: uppercase; padding: .2rem .6rem; border: 1px solid; display: inline-block; margin-bottom: 1rem; }
.element-fire { color: var(--tsb-gold-deep); border-color: rgba(126,96,57,.3); }
.element-earth { color: var(--tsb-rose-deep); border-color: rgba(143,90,102,.3); }
.element-air { color: var(--tsb-lavender-deep); border-color: rgba(111,93,147,.3); }
.element-water { color: var(--tsb-info); border-color: rgba(86,69,110,.3); }
.zcard-insight { font-size: .85rem; color: rgba(33,23,43,.75); line-height: 1.65; margin-bottom: 1.25rem; }
.zcard-cta { font-family: var(--ff-ui); font-size: .6rem; letter-spacing: .25em; text-transform: uppercase; color: var(--gold); text-decoration: none; transition: letter-spacing .3s; }
.zcard:hover .zcard-cta { letter-spacing: .4em; }
.wheel-visual { position: relative; width: 240px; height: 240px; margin: 0 auto; }
.wheel-ring { position: absolute; border-radius: 50%; border: 1px solid; animation: spin-slow 30s linear infinite; }
.ring-outer { inset: 0; border-color: rgba(185,169,214,.2); }
.ring-mid { inset: 20px; border-color: rgba(185,169,214,.25); animation-direction: reverse; animation-duration: 20s; }
.ring-inner { inset: 40px; border-color: rgba(201,155,165,.2); }
.wheel-center { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 3rem; }

/* FREE READING */
.draw-arena { background: linear-gradient(180deg, var(--midnight), var(--veil)); padding: 4rem 0; border-bottom: 1px solid var(--border); }
.deck-pile { position: relative; width: 160px; height: 270px; margin: 0 auto 2rem; cursor: pointer; }
.deck-card { position: absolute; top: 0; left: 0; width: 160px; height: 270px; background: linear-gradient(160deg, var(--arcane), var(--midnight)); border: 1px solid rgba(185,169,214,.35); border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 2.5rem; transition: transform .6s cubic-bezier(.2,.8,.2,1), opacity .6s; }
.deck-card:nth-child(2) { transform: translate(-4px,-4px) rotate(-2deg); }
.deck-card:nth-child(3) { transform: translate(-8px,-8px) rotate(-4deg); }
.deck-card:nth-child(1) { z-index: 3; }
.deck-card:nth-child(2) { z-index: 2; }
.deck-card:nth-child(3) { z-index: 1; }
.deck-pile:hover .deck-card:nth-child(1) { transform: translateY(-12px) scale(1.04); box-shadow: var(--glow-gold); }
.drawn-card { width: 200px; height: 340px; background: linear-gradient(160deg, var(--arcane), var(--midnight)); border: 1px solid var(--border); border-radius: 12px; margin: 0 auto; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; padding: 2rem; box-shadow: var(--shadow-card), var(--glow-gold); animation: card-reveal .6s cubic-bezier(.2,.8,.2,1); position: relative; overflow: hidden; }
@keyframes card-reveal { from { transform: rotateY(90deg) scale(.8); opacity: 0; } to { transform: rotateY(0deg) scale(1); opacity: 1; } }
.drawn-card::before { content: ''; position: absolute; inset: 8px; border: 1px solid rgba(185,169,214,.25); border-radius: 8px; }
.drawn-card-icon { font-size: 4rem; filter: drop-shadow(0 0 20px rgba(185,169,214,.5)); animation: pulse-glow 3s ease-in-out infinite; }
.drawn-card-roman { font-family: var(--ff-display); font-size: 1rem; color: var(--gold); }
.drawn-card-name { font-family: var(--ff-heading); font-size: 1rem; color: var(--stardust); text-align: center; }
.drawn-card-keywords { font-family: var(--ff-ui); font-size: .58rem; letter-spacing: .25em; text-transform: uppercase; color: var(--mist); text-align: center; }
.reading-result { background: var(--arcane); border: 1px solid var(--border); padding: 2.5rem; max-width: 700px; margin: 2.5rem auto 0; }
.reading-result-title { font-family: var(--ff-heading); font-size: 1.1rem; color: var(--gold-light); margin-bottom: 1rem; }
.reading-result-text { font-style: italic; font-size: 1rem; color: rgba(33,23,43,.8); line-height: 1.85; }
.aspect-btn { font-family: var(--ff-ui); font-size: .6rem; letter-spacing: .25em; text-transform: uppercase; color: var(--mist); background: transparent; border: 1px solid var(--border); padding: .55rem 1.2rem; cursor: pointer; transition: border-color .3s, color .3s, background .3s; }
.aspect-btn.active, .aspect-btn:hover { border-color: var(--gold); color: var(--gold); background: rgba(185,169,214,.05); }
.draw-btn { font-family: var(--ff-ui); font-size: .7rem; letter-spacing: .3em; text-transform: uppercase; color: #F8F2EA; background: linear-gradient(135deg, var(--tsb-plum-button), #21172B); border: 1px solid rgba(216,184,120,.5); padding: 1rem 2.5rem; cursor: pointer; transition: box-shadow .3s, transform .3s; box-shadow: 0 4px 20px rgba(33,23,43,.35); }
.draw-btn:hover { box-shadow: 0 6px 40px rgba(216,184,120,.45); transform: translateY(-2px); }
.draw-btn:disabled { opacity: .5; cursor: not-allowed; transform: none; }
.disclaimer { font-family: var(--ff-ui); font-size: .65rem; color: rgba(33,23,43,.62); text-align: center; margin-top: 1.5rem; line-height: 1.6; }

/* TESTIMONIALS PAGE */
.tcard { background: var(--arcane); border: 1px solid var(--border); padding: 2.25rem 2rem; height: 100%; position: relative; transition: transform .4s, box-shadow .4s, border-color .4s; }
.tcard:hover { transform: translateY(-6px); box-shadow: var(--shadow-card), var(--glow-violet); border-color: rgba(185,169,214,.4); }
.tcard-quote { font-family: var(--ff-display); font-size: 4rem; color: var(--gold); opacity: .12; position: absolute; top: .5rem; left: 1.5rem; line-height: 1; }
.tcard-text { font-style: italic; font-size: .97rem; color: rgba(33,23,43,.78); line-height: 1.8; margin-bottom: 1.5rem; position: relative; z-index: 1; }
.tcard-reading { font-family: var(--ff-ui); font-size: .58rem; letter-spacing: .3em; text-transform: uppercase; color: var(--gold-dim); margin-bottom: 1rem; display: block; }
.tcard-author { display: flex; align-items: center; gap: .85rem; }
.tcard-avatar { width: 42px; height: 42px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-family: var(--ff-heading); color: var(--stardust); font-size: 1rem; flex-shrink: 0; }
.tcard-name { font-family: var(--ff-heading); font-size: .85rem; color: var(--gold-light); }
.tcard-loc { font-family: var(--ff-ui); font-size: .6rem; letter-spacing: .15em; text-transform: uppercase; color: var(--mist); }
.tcard-stars { color: var(--gold); font-size: .8rem; margin-bottom: .75rem; }
.featured-story { background: linear-gradient(135deg, var(--arcane), var(--veil)); border: 1px solid rgba(185,169,214,.25); padding: 3rem; }
.featured-label { font-family: var(--ff-ui); font-size: .58rem; letter-spacing: .4em; text-transform: uppercase; color: var(--rose-deep); margin-bottom: 1rem; display: block; }
.featured-quote { font-family: var(--ff-body); font-style: italic; font-size: 1.25rem; color: rgba(33,23,43,.85); line-height: 1.8; border-left: 2px solid var(--gold); padding-left: 1.75rem; margin-bottom: 1.5rem; }
.rating-bar { display: flex; align-items: center; gap: 1rem; margin-bottom: .6rem; }
.rating-bar-label { font-family: var(--ff-ui); font-size: .65rem; color: var(--mist); min-width: 40px; }
.rating-bar-track { flex: 1; height: 4px; background: var(--arcane); border-radius: 2px; overflow: hidden; }
.rating-bar-fill { height: 100%; background: linear-gradient(90deg, #D8B878, #7E6039); border-radius: 2px; transition: width 1.5s cubic-bezier(.2,.8,.2,1); }
.rating-bar-count { font-family: var(--ff-ui); font-size: .65rem; color: var(--gold); min-width: 30px; text-align: right; }

/* CONTACT */
.contact-method { background: var(--arcane); border: 1px solid var(--border); padding: 2rem; display: flex; gap: 1.5rem; align-items: flex-start; transition: border-color .3s, transform .3s; }
.contact-method:hover { border-color: rgba(185,169,214,.35); transform: translateX(6px); }
.contact-icon { font-size: 2rem; flex-shrink: 0; }
.contact-title { font-family: var(--ff-heading); font-size: 1rem; color: var(--gold-light); margin-bottom: .25rem; }
.contact-detail { font-family: var(--ff-ui); font-size: .8rem; color: var(--mist); line-height: 1.5; }
.contact-link { font-family: var(--ff-ui); font-size: .65rem; letter-spacing: .2em; text-transform: uppercase; color: var(--gold); text-decoration: none; margin-top: .5rem; display: inline-block; transition: letter-spacing .3s; }
.contact-link:hover { letter-spacing: .35em; }
.hours-row { display: flex; justify-content: space-between; padding: .6rem 0; border-bottom: 1px solid rgba(185,169,214,.08); font-family: var(--ff-ui); font-size: .8rem; }
.hours-row:last-child { border-bottom: none; }
.hours-day { color: var(--mist); }
.hours-time { color: var(--gold-light); }

/* ABOUT */
/* Atmospheric tint band — alternates with the plain cream .about-section
   ground between story/journey/philosophy/credibility bands on the About
   page, reusing the same rose+lavender radial-gradient technique already
   used by .testimonials-section::before and .compat-section::before. */
.about-tint-section { position: relative; background: var(--midnight); }
.about-tint-section::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse 90% 60% at 15% 20%, rgba(185,169,214,0.12) 0%, transparent 60%), radial-gradient(ellipse 80% 60% at 85% 80%, rgba(201,155,165,0.10) 0%, transparent 60%); pointer-events: none; }
.about-tint-section > .container { position: relative; z-index: 1; }
.timeline { position: relative; padding-left: 2rem; }
.timeline::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 1px; background: linear-gradient(180deg, var(--gold-dim), transparent); }
.timeline-item { position: relative; margin-bottom: 2.5rem; }
.timeline-item::before { content: '✦'; position: absolute; left: -2.35rem; color: var(--gold); font-size: .7rem; background: var(--midnight); padding: .2rem 0; }
.timeline-year { font-family: var(--ff-ui); font-size: .6rem; letter-spacing: .4em; text-transform: uppercase; color: var(--gold); margin-bottom: .3rem; }
.timeline-title { font-family: var(--ff-heading); font-size: 1rem; color: var(--stardust); margin-bottom: .4rem; }
.timeline-body { font-size: .95rem; color: var(--mist); line-height: 1.7; }
.value-card { background: var(--arcane); border: 1px solid var(--border); padding: 2rem 1.75rem; height: 100%; transition: transform .4s, box-shadow .4s, border-color .4s; }
.value-card:hover { transform: translateY(-6px); box-shadow: var(--glow-gold); border-color: rgba(185,169,214,.35); }
.value-icon { font-size: 2rem; margin-bottom: 1rem; display: block; }
.value-title { font-family: var(--ff-heading); font-size: 1rem; color: var(--gold-light); margin-bottom: .5rem; }
.value-desc { font-size: .9rem; color: var(--mist); line-height: 1.7; }
.philosophy-pull { border-left: 2px solid var(--gold); padding-left: 2rem; font-family: var(--ff-body); font-style: italic; font-size: 1.25rem; color: rgba(33,23,43,.85); line-height: 1.8; }

/* READINGS */
.reading-card { background: var(--arcane); border: 1px solid var(--border); padding: 0; overflow: hidden; height: 100%; transition: transform .4s, box-shadow .4s, border-color .4s; display: flex; flex-direction: column; }
.reading-card:hover { transform: translateY(-8px); box-shadow: var(--shadow-card), var(--glow-gold); border-color: rgba(185,169,214,.4); }
.reading-card-top { padding: 2.5rem 2rem 1.5rem; background: linear-gradient(135deg, var(--veil), var(--arcane)); border-bottom: 1px solid var(--border); text-align: center; }
.reading-card-icon { font-size: 3.5rem; margin-bottom: 1rem; display: block; transition: transform .5s; }
.reading-card:hover .reading-card-icon { transform: rotate(-8deg) scale(1.15); }
.reading-card-arcana { font-family: var(--ff-heading); font-size: .65rem; letter-spacing: .4em; color: var(--gold-dim); margin-bottom: .5rem; }
.reading-card-title { font-family: var(--ff-heading); font-size: 1.2rem; color: var(--gold-light); margin-bottom: .75rem; }
.reading-card-body { padding: 1.75rem 2rem 2rem; flex: 1; display: flex; flex-direction: column; }
.reading-tag { font-family: var(--ff-ui); font-size: .55rem; letter-spacing: .2em; text-transform: uppercase; color: var(--void); background: linear-gradient(135deg, var(--gold), var(--gold-light)); padding: .2rem .6rem; display: inline-block; margin-bottom: 1rem; }
.reading-desc { font-size: .95rem; color: rgba(33,23,43,.7); line-height: 1.75; flex: 1; }
.reading-includes { margin: 1.25rem 0; list-style: none; padding: 0; }
.reading-includes li { font-family: var(--ff-ui); font-size: .75rem; color: var(--mist); padding: .3rem 0; border-bottom: 1px solid rgba(185,169,214,.08); }
.reading-includes li::before { content: '✦ '; color: var(--gold-dim); }
.reading-price-row { display: flex; align-items: flex-end; justify-content: space-between; padding-top: 1.25rem; border-top: 1px solid var(--border); }
.reading-price { font-family: var(--ff-heading); font-size: 1.4rem; color: var(--gold); }
.reading-price small { font-family: var(--ff-ui); font-size: .55rem; letter-spacing: .2em; text-transform: uppercase; color: var(--mist); display: block; }

.process-card { background: var(--arcane); border: 1px solid var(--border); padding: 2rem; text-align: center; height: 100%; }
.process-step-num { width: 60px; height: 60px; border: 1px solid var(--gold-dim); border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 1.25rem; font-family: var(--ff-display); font-size: 1.1rem; color: var(--gold); background: var(--veil); box-shadow: var(--glow-violet); }

/* ─── TSB CARD ───────────────────────────────────────────────── */
.tsb-card { background: var(--arcane); border: 1px solid var(--border); border-radius: 1.25rem; position: relative; overflow: hidden; }
.tsb-card::before { content:''; position:absolute; inset:0; background:linear-gradient(135deg,rgba(185,169,214,.04),transparent 60%); pointer-events:none; border-radius:inherit; }

/* ─── TAROT READING PAGE ─────────────────────────────────────── */
.tarot-answer-card { background:var(--veil); border:1px solid var(--border); border-radius:1rem; position:relative; overflow:hidden; transition:border-color .3s,box-shadow .3s; }
.tarot-answer-card:hover { border-color:rgba(185,169,214,.4); box-shadow:var(--glow-gold); }
.tarot-answer-orbit { position:absolute; inset:-20px; background:radial-gradient(ellipse at 50% 0%,rgba(185,169,214,.06),transparent 60%); pointer-events:none; }
.tarot-reveal-panel { background:var(--arcane); border:1px solid var(--border); border-radius:1.25rem; padding:3rem 2rem; display:flex; align-items:center; justify-content:center; position:relative; overflow:hidden; }
.tarot-orb { position:absolute; width:260px; height:260px; border-radius:50%; background:radial-gradient(circle,rgba(185,169,214,.12),transparent 70%); pointer-events:none; top:-60px; left:-60px; }
.tarot-orb.tarot-orb-2 { width:200px; height:200px; background:radial-gradient(circle,rgba(185,169,214,.08),transparent 70%); top:auto; left:auto; bottom:-40px; right:-40px; }

/* ─── ASK THE CARDS — styles live in _HeroPartial.cshtml <style> block ─── */

/* ════════════════════════════════════════════════════════════════
   UX ENHANCEMENTS (2026-08-06)
   Additive polish only — same Moonstone palette, no token overrides, and no
   changes to existing behavior. Everything below is a new, safe layer that
   fails gracefully (see the reduced-motion guard at the bottom).
   ═════════════════════════════════════════════════════════════  */

/* ── 1. Accessible focus ─────────────────────────────────────── */
:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }

/* ── 2. Scroll-behavior already smooth at the top of the file — kept here as a
   documented guard so in-page jumps stay smooth across all browsers. ── */
html { scroll-behavior: smooth; }

/* ── 3. Transition affordance added to containers that reveal on scroll ── */
.fade-up, .reveal-scale, .reveal-blur, .reveal-left, .reveal-right { will-change: opacity, transform, filter; }

/* ── 4. Animated gradient accents (hero + page titles) ──
   Replaces the static clipped gradient with a slowly drifting one so the
   brand accent feels alive. Keeps identical colors / reading of text. */
.hero-headline .accent,
.page-hero-title .accent {
  background: linear-gradient(115deg,
    var(--gold) 0%, var(--gold-light) 30%, #B9A9D6 50%, var(--gold-light) 70%, var(--gold) 100%);
  background-size: 240% auto;
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: gradient-slide 8s ease-in-out infinite;
}
@keyframes gradient-slide { 0%,100% { background-position: 0% center; } 50% { background-position: 100% center; } }

/* ── 5. Button sheen sweep ──
   A light sheen glides across primary gradient buttons on hover. Overlay-only —
   adds an ::after overlay, never alters the button's border/background/text. */
.btn-primary-tsb, .btn-nav-book, .draw-btn, .btn-ghost-tsb {
  position: relative; overflow: hidden; z-index: 0;
}
.btn-primary-tsb::after, .btn-nav-book::after, .draw-btn::after {
  content: ''; position: absolute; top: 0; bottom: 0; left: -130%; width: 55%; height: 100%;
  background: linear-gradient(105deg, transparent 0%, rgba(248,242,234,.35) 50%, transparent 100%);
  transform: skewX(-18deg); pointer-events: none; z-index: 1;
}
.btn-primary-tsb:hover::after, .btn-nav-book:hover::after, .draw-btn:hover::after { animation: sheen .75s ease forwards; }
.btn-ghost-tsb::before {
  content: ''; position: absolute; inset: -1px; border: 1px solid transparent;
  background: linear-gradient(135deg, var(--gold), var(--gold-light)) border-box;
  -webkit-mask: linear-gradient(#000 0 0) padding-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  opacity: 0; transition: opacity .3s; pointer-events: none; z-index: 1;
}
.btn-ghost-tsb:hover::before { opacity: 1; }
@keyframes sheen { to { left: 135%; } }

/* ── 6. Back-to-top ── */
.back-to-top {
  position: fixed; bottom: 1.75rem; left: 1.75rem; width: 48px; height: 48px; z-index: 999;
  border-radius: 50%; border: 1px solid var(--gold-dim);
  background: rgba(248,242,234,.85); backdrop-filter: blur(8px);
  color: var(--gold); font-size: 1.1rem; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  opacity: 0; visibility: hidden; transform: translateY(10px);
  transition: opacity .3s, transform .3s, visibility .3s, box-shadow .3s, background .3s, color .3s;
}
.back-to-top.show { opacity: 1; visibility: visible; transform: translateY(0); }
.back-to-top:hover {
  background: linear-gradient(135deg, #D8B878, #E8CF9A); color: #21172B;
  box-shadow: 0 8px 22px rgba(216,184,120,.45);
}

/* ── 7. Refined hover lift for cards that already lift on hover (keep, tighten shadow) ── */
.service-card, .reading-card, .tcard, .zcard, .insight-card, .value-card, .contact-method {
  will-change: transform;
  backface-visibility: hidden;
}

/* ── 8. Section gradient hairline sweep (subtle entrance line) ── */
.gold-line.shimmer { background-size: 200% 100%; }

/* ── 9. Reduced-motion: disable only the NEW animations ── */
@media (prefers-reduced-motion: reduce) {
  .hero-headline .accent, .page-hero-title .accent { animation: none; }
  .btn-primary-tsb::after, .btn-nav-book::after, .draw-btn::after,
  .btn-ghost-tsb::before { display: none; }
  .back-to-top { transition: opacity .1s; }
}

/* ── 10. Mobile float stack (WhatsApp + back-to-top) ── */
@media (max-width: 575.98px) {
  .back-to-top { bottom: 5.5rem; left: 1rem; width: 42px; height: 42px; font-size: 1rem; }
}
