:root {
  --base: #0B1622;
  --elevated: #213448;
  --mid: #547792;
  --light: #94B4C1;
  --cream: #EAE0CF;
  --amber: #C99B5B;
  color-scheme: dark;
}
* { box-sizing: border-box; }
a, button, input, textarea, select, [role="button"] { touch-action: manipulation; }
html { scroll-behavior: smooth; scrollbar-gutter: stable; }
body {
  margin: 0;
  font-family: 'Inter', system-ui, sans-serif;
  background: var(--base);
  color: var(--cream);
  overflow-x: hidden;
}
h1, h2, .logo { font-optical-sizing: auto; }
a { color: inherit; text-decoration: none; }
a:focus-visible, button:focus-visible {
  outline: 2px solid var(--amber);
  outline-offset: 3px;
  border-radius: 4px;
}
.skip-link {
  position: absolute; top: -48px; left: 12px; z-index: 999;
  background: var(--amber); color: var(--base); font-weight: 600; font-size: 14px;
  padding: 10px 18px; border-radius: 8px; transition: top 0.2s ease;
}
.skip-link:focus { top: 12px; }
.wrap { max-width: 1120px; margin: 0 auto; padding: 0 32px; }
.nav-shell { position: fixed; top: 0; left: 0; right: 0; z-index: 100; pointer-events: none; }
/* Dashboard is a long, scrollable app page (not a marketing landing page) — the
   floating pill nav must not stay glued to the viewport as the user scrolls,
   or it visually overlaps panel content further down the page. */
body.dashboard-page .nav-shell { position: absolute; }
.nav-shell-inner {
  position: relative; max-width: 1120px; margin: 0 auto; padding: calc(32px + env(safe-area-inset-top)) 32px 0;
  display: flex; align-items: center; gap: 32px;
}
.nav-shell-inner > * { pointer-events: auto; }
header.nav {
  position: relative; z-index: 1; flex: 1; min-width: 0;
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  background: rgba(11,22,34,0.72);
  border: 1px solid rgba(234,224,207,0.10);
  border-radius: 999px;
  box-shadow: 0 10px 30px rgba(11,22,34,0.35);
}
.nav-inner { display: flex; align-items: center; justify-content: flex-end; gap: 32px; padding: 14px 30px; }
.nav-dropdown { display: flex; align-items: center; gap: 32px; }
.nav-actions { display: flex; align-items: center; gap: 12px; }
.nav-secondary {
  appearance: none; -webkit-appearance: none; -moz-appearance: none;
  background: transparent; color: var(--cream); border: 1px solid rgba(234,224,207,0.25);
  padding: 10px 20px; border-radius: 8px; font-size: 14px; font-weight: 500; font-family: inherit;
  cursor: pointer; transition: border-color 0.2s ease, box-shadow 0.3s ease;
}
@media (hover: hover) and (pointer: fine) {
  .nav-secondary:hover { border-color: rgba(234,224,207,0.6); box-shadow: 0 10px 28px rgba(201,155,91,0.28); }
}
.logo { font-family: 'Fraunces', serif; font-weight: 600; font-size: 20px; letter-spacing: -0.3px; color: var(--cream); }
.logo .logo-dot { color: var(--amber); }
.nav-links { display: flex; gap: 32px; }
.nav-links a {
  font-size: 14.5px;
  color: var(--light);
  transform: scale(1) translateY(0);
  transition: color 0.2s ease, transform 0.4s cubic-bezier(0.34, 1.5, 0.64, 1);
}
@media (hover: hover) and (pointer: fine) {
  .nav-links a:hover { color: var(--cream); transform: scale(1.14) translateY(-2px); }
}
.nav-links a:active { transform: scale(0.94) translateY(0); transition-duration: 0.15s; }
.nav-cta {
  appearance: none; -webkit-appearance: none; -moz-appearance: none;
  background: var(--amber); color: var(--base); padding: 10px 20px; border-radius: 8px;
  font-size: 14px; font-weight: 600; border: none; cursor: pointer; font-family: inherit;
  transition: box-shadow 0.3s ease;
  display: inline-block; text-decoration: none;
}
.nav-cta[hidden] { display: none; }
@media (hover: hover) and (pointer: fine) {
  .nav-cta:hover { box-shadow: 0 10px 32px rgba(201,155,91,0.4); }
}
.nav-avatar {
  position: relative;
  width: 40px; height: 40px; border-radius: 50%; flex: 0 0 auto;
  background: rgba(201,155,91,0.2); color: #C99B5B; font-weight: 700; font-size: 15px;
  display: flex; align-items: center; justify-content: center;
  text-decoration: none; cursor: pointer; transition: box-shadow 0.3s ease;
}
.nav-avatar[hidden] { display: none; }
.nav-avatar::before {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: 50%;
  padding: 3px;
  background: conic-gradient(from 0deg, #C99B5B, #EAE0CF 30%, #547792 55%, #EAE0CF 80%, #C99B5B);
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  animation: navAvatarRingSpin 5s linear infinite;
  pointer-events: none;
}
@keyframes navAvatarRingSpin {
  to { transform: rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
  .nav-avatar::before { animation: none; }
}
@media (hover: hover) and (pointer: fine) {
  .nav-avatar:hover { box-shadow: 0 10px 28px rgba(201,155,91,0.28); }
}
.nav-avatar-mobile { display: none; }
.nav-menu-btn { display: none; }
@media (max-width: 760px) {
  /* one wide pill for the whole header, matching desktop's tube recipe
     exactly - logo and menu button both sit inside it now, instead of the
     button carrying its own separate little tube */
  .nav-shell-inner {
    justify-content: space-between;
    margin-top: calc(10px + env(safe-area-inset-top));
    margin-left: 14px; margin-right: 14px; margin-bottom: 0;
    padding: 8px 12px;
    background: rgba(11,22,34,0.72);
    -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
    border: 1px solid rgba(234,224,207,0.10);
    border-radius: 999px;
    box-shadow: 0 10px 30px rgba(11,22,34,0.35);
  }
  header.nav {
    flex: 0 0 auto; min-width: 0;
    background: none; border: none; box-shadow: none; border-radius: 0;
    -webkit-backdrop-filter: none; backdrop-filter: none;
  }
  .nav-inner { position: relative; padding: 0; gap: 0; }

  /* plain icon button now - the glass/blur/border look lives on the shared
     pill above it, not on the button itself */
  .nav-menu-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 38px; height: 38px; position: relative; flex-shrink: 0;
    appearance: none; -webkit-appearance: none; -moz-appearance: none;
    background: transparent; border: none; box-shadow: none; border-radius: 0;
    color: var(--cream); cursor: pointer; padding: 0;
  }
  .nav-avatar-mobile:not([hidden]) { display: flex; width: 48px; height: 48px; font-size: 18px; }
  #navAvatarMobile:not([hidden]) ~ .nav-menu-btn { display: none; }
  .nav-menu-icon-open, .nav-menu-icon-close {
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
    font-size: 16px; transition: opacity 0.2s ease, transform 0.25s ease;
  }
  .nav-menu-icon-close { opacity: 0; transform: rotate(-80deg) scale(0.6); }
  header.nav.is-menu-open .nav-menu-icon-open { opacity: 0; transform: rotate(80deg) scale(0.6); }
  header.nav.is-menu-open .nav-menu-icon-close { opacity: 1; transform: rotate(0deg) scale(1); }

  /* the dropdown itself: its own small floating card anchored under the
     pill, rather than trying to grow the pill around a whole link list */
  .nav-dropdown {
    position: absolute; top: calc(100% + 14px); right: 0;
    flex-direction: column; align-items: stretch; gap: 4px;
    background: rgba(11,22,34,0.94);
    -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
    border: 1px solid rgba(234,224,207,0.10);
    box-shadow: 0 14px 34px rgba(11,22,34,0.4);
    border-radius: 16px;
    width: max-content; min-width: 200px;
    max-height: 0; overflow: hidden; opacity: 0; pointer-events: none;
    padding: 0 8px;
    transition: max-height 0.35s ease, opacity 0.25s ease, padding 0.35s ease;
  }
  header.nav.is-menu-open .nav-dropdown {
    max-height: 420px; opacity: 1; pointer-events: auto; padding: 10px 8px;
  }
  .nav-links { flex-direction: column; align-items: stretch; gap: 2px; }
  .nav-links a { padding: 10px 8px; width: 100%; }
  .nav-actions {
    flex-direction: column; align-items: stretch; gap: 8px;
    margin-top: 6px; padding-top: 10px; border-top: 1px solid rgba(234,224,207,0.08);
  }
}
.hero { position: relative; min-height: 100vh; min-height: 100dvh; display: flex; align-items: center; overflow: hidden; padding-top: 200px; }
.hero-glow {
  position: absolute; top: -10%; left: -15%; width: 60%; height: 70%;
  background: radial-gradient(circle closest-side, rgba(201,155,91,0.16) 0%, rgba(201,155,91,0) 100%);
  pointer-events: none; z-index: 0;
}
.hero-pattern {
  position: absolute; top: 50%; left: 50%; width: 500vmax; height: 500vmax;
  opacity: 0.5; z-index: 0; pointer-events: none;
  animation: rotatePattern 200s linear infinite;
  transform-origin: 50% 50%;
}
@keyframes rotatePattern {
  from { transform: translate(-50%, -50%) rotate(0deg); }
  to { transform: translate(-50%, -50%) rotate(360deg); }
}
.hero-content { position: relative; z-index: 1; max-width: 620px; }
.eyebrow {
  color: var(--amber); font-size: 13px; font-weight: 600; letter-spacing: 2.5px;
  text-transform: uppercase; margin-bottom: 20px; opacity: 0;
}
.bismillah {
  font-family: 'Amiri', serif; color: var(--amber); font-size: 24px; margin-bottom: 16px; opacity: 0;
}
.hero #heroHeadline {
  font-family: 'Fraunces', serif; font-size: clamp(38px, 6vw, 58px); line-height: 1.1; font-weight: 600;
  margin: 0 0 20px; letter-spacing: -0.5px; opacity: 0;
}
.hero #heroSub {
  font-size: 17px; line-height: 1.65; color: var(--light); max-width: 460px; margin: 0 0 36px; opacity: 0;
}
.hero-ctas { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; opacity: 0; }
.hero-ctas #ctaBtn, .hero-ctas .btn-ghost { width: 190px; text-align: center; }
.btn-primary {
  background: var(--amber); color: var(--base); border: none; padding: 16px 30px; border-radius: 10px;
  font-size: 15px; font-weight: 600; cursor: pointer; transition: transform 0.15s ease, box-shadow 0.3s ease;
}
@media (hover: hover) and (pointer: fine) {
  .btn-primary:hover { box-shadow: 0 10px 32px rgba(201,155,91,0.35); }
}
.btn-primary:active { box-shadow: 0 10px 32px rgba(201,155,91,0.35); transform: scale(0.97); transition-duration: 0.1s; }
.btn-ghost {
  background: transparent; color: var(--cream); border: 1px solid rgba(234,224,207,0.25); padding: 15px 26px;
  border-radius: 10px; font-size: 15px; font-weight: 500; cursor: pointer; transition: border-color 0.2s ease, box-shadow 0.3s ease;
}
@media (hover: hover) and (pointer: fine) {
  .btn-ghost:hover { border-color: rgba(234,224,207,0.6); box-shadow: 0 10px 30px rgba(201,155,91,0.3); }
}
.btn-ghost:active { border-color: rgba(234,224,207,0.6); box-shadow: 0 10px 30px rgba(201,155,91,0.3); transform: scale(0.97); transition-duration: 0.1s; }
.scroll-cue {
  position: absolute; bottom: 36px; left: 50%; transform: translateX(-50%);
  color: var(--light); font-size: 12px; display: flex; flex-direction: column; align-items: center; gap: 8px;
  z-index: 1; cursor: pointer; transition: color 0.25s ease;
}
@media (hover: hover) and (pointer: fine) {
  .scroll-cue:hover { color: var(--cream); }
}
.scroll-cue .chevron { animation: bounce 1.8s ease-in-out infinite; }
@keyframes bounce { 0%,100% { transform: translateY(0); opacity: 0.5; } 50% { transform: translateY(6px); opacity: 1; } }
section { padding: 110px 0; position: relative; }
.section-head { max-width: 560px; margin: 0 0 56px; }
.section-head .eyebrow { opacity: 1; }
.section-head h2 {
  font-family: 'Fraunces', serif; font-size: clamp(28px, 4vw, 38px); font-weight: 600;
  margin: 0 0 14px; letter-spacing: -0.3px;
}
.section-head p { color: var(--light); font-size: 16px; line-height: 1.6; margin: 0; }
.programs-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; align-items: stretch; }
@media (max-width: 980px) { .programs-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .programs-grid { grid-template-columns: 1fr; } }
.program-card {
  background: var(--elevated); border-radius: 16px; padding: 26px 20px; border: 1px solid rgba(234,224,207,0.06);
  transition: transform 0.2s ease, box-shadow 0.2s ease; opacity: 0; transform: translateY(30px);
  display: flex; flex-direction: column; min-width: 0; cursor: pointer;
}
.program-card:focus-visible { outline: 2px solid var(--amber); outline-offset: 3px; }
@media (hover: hover) and (pointer: fine) {
  .program-card:hover { border-color: rgba(201,155,91,0.3); }
}
.program-card:active { transform: scale(0.98); transition-duration: 0.1s; }
.icon-badge {
  width: 52px; height: 52px; border-radius: 14px; background: rgba(84,119,146,0.18);
  display: flex; align-items: center; justify-content: center; color: var(--amber); margin-bottom: 20px;
}
.program-card h3 { font-size: 18px; font-weight: 600; margin: 0 0 8px; line-height: 1.25; min-height: 46px; }
.program-card p { font-size: 14.5px; line-height: 1.6; color: var(--light); margin: 0; }
.program-tagline { margin: 0 0 14px !important; min-height: 47px; }
.program-path {
  font-size: 10.5px; color: var(--light); margin-bottom: 18px; padding-bottom: 16px;
  border-bottom: 1px solid rgba(234,224,207,0.08);
  overflow: hidden; position: relative;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 24px, #000 calc(100% - 24px), transparent 100%);
  mask-image: linear-gradient(90deg, transparent 0, #000 24px, #000 calc(100% - 24px), transparent 100%);
}
.path-track {
  display: flex; flex-wrap: nowrap; align-items: center; gap: 7px; width: max-content;
  white-space: nowrap; animation: pathReel 12s linear infinite;
}
@media (hover: hover) and (pointer: fine) {
  .program-path:hover .path-track { animation-play-state: paused; }
}
@keyframes pathReel {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}
.path-step { flex-shrink: 0; display: inline-block; }
.path-arrow { color: var(--amber); flex-shrink: 0; display: inline-block; }
.program-includes-label {
  display: inline-block; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; font-weight: 700;
  color: var(--amber); background: rgba(201,155,91,0.12); padding: 4px 10px; border-radius: 6px; margin-bottom: 12px;
  width: fit-content;
}
.program-includes { list-style: none; padding: 0; margin: 0 0 22px; display: flex; flex-direction: column; gap: 10px; }
.program-includes li {
  font-size: 13.5px; line-height: 1.4; color: var(--light); display: flex; align-items: flex-start; gap: 10px;
  transform: scale(1) translateY(0);
  transition: color 0.2s ease, transform 0.4s cubic-bezier(0.34, 1.5, 0.64, 1);
}
.program-includes li i { color: var(--amber); font-size: 12px; width: 15px; flex-shrink: 0; text-align: center; margin-top: 2px; }
.icon-lang {
  display: inline-flex; align-items: center; justify-content: center; gap: 1px;
  width: 15px; flex-shrink: 0; margin-top: 2px; color: var(--amber); line-height: 1;
}
.icon-lang .en { font-size: 8.5px; font-weight: 700; font-family: 'Inter', sans-serif; }
.icon-lang .ar { font-size: 12px; font-family: 'Amiri', serif; }
.icon-arabic {
  display: inline-flex; align-items: center; justify-content: center;
  width: 20px; flex-shrink: 0; margin-top: 1px; color: var(--amber);
  font-family: 'Amiri', serif; font-size: 13px; line-height: 1;
}
@media (hover: hover) and (pointer: fine) {
  .program-includes li:hover { color: var(--cream); transform: scale(1.08) translateY(-2px); }
}
.program-includes li:active { transform: scale(0.96) translateY(0); transition-duration: 0.15s; }
.program-for {
  margin-top: auto; background: rgba(84,119,146,0.12); border-radius: 10px; padding: 14px 16px;
  font-size: 13px; color: var(--amber); line-height: 1.5;
}
.program-for strong { color: var(--amber); font-weight: 600; }
.program-for span { display: block; margin-top: 2px; opacity: 0.85; }
.about-pillars { display: grid; grid-template-columns: repeat(3, 1fr); gap: 36px; margin-top: 8px; }
.about-pillar { opacity: 0; transform: translateY(30px); min-width: 0; }
.about-pillar h3 { font-size: 16.5px; font-weight: 600; margin: 0 0 6px; }
.about-pillar p { font-size: 14px; line-height: 1.6; color: var(--light); margin: 0; }
@media (max-width: 760px) { .about-pillars { grid-template-columns: 1fr; gap: 28px; } }

/* All 3 about-pillar icon animations share one 3s cycle and the same 0%-35%-70%-100% rest/peak/peak/rest rhythm, so they visibly breathe together in sync. Each keeps its own small internal stagger (wave/ripple direction) but all land inside the shared peak window. */

/* Vibration effect: "Always live, never recorded" icon - animates the wave arcs already drawn in the icon, contained entirely within the icon's own artwork */
.icon-badge.icon-vibrate svg path {
  animation: signalWave 3s ease-in-out infinite;
  transform-box: view-box; transform-origin: 12px 12px;
}
.icon-badge.icon-vibrate svg path:nth-of-type(1),
.icon-badge.icon-vibrate svg path:nth-of-type(2) { animation-delay: 0s; }
.icon-badge.icon-vibrate svg path:nth-of-type(3),
.icon-badge.icon-vibrate svg path:nth-of-type(4) { animation-delay: 0.15s; }
@keyframes signalWave {
  0%, 100% { opacity: 0.32; transform: scale(0.93); }
  35%, 70% { opacity: 1; transform: scale(1.04); }
}

/* Pulse effect: "Paced to the student" icon - animates the concentric rings already drawn in the icon, contained entirely within the icon's own artwork */
.icon-badge.icon-pulse svg circle {
  animation: radarPulse 3s ease-in-out infinite;
  transform-box: view-box; transform-origin: 12px 12px;
}
.icon-badge.icon-pulse svg circle:nth-of-type(1) { animation-delay: 0s; }
.icon-badge.icon-pulse svg circle:nth-of-type(2) { animation-delay: 0.15s; }
.icon-badge.icon-pulse svg circle:nth-of-type(3) { animation-delay: 0.3s; animation-name: radarPulseDot; }
@keyframes radarPulse {
  0%, 100% { opacity: 0.4; }
  35%, 70% { opacity: 1; }
}
@keyframes radarPulseDot {
  0%, 100% { opacity: 0.55; transform: scale(1); }
  35%, 70% { opacity: 1; transform: scale(1.3); }
}

/* Verify effect: "Certified teachers" icon - the badge outline breathes gently while the checkmark continuously draws itself in, holds, then fades and redraws. Contained entirely within the icon's own artwork. */
.icon-badge.icon-verify svg path:nth-of-type(1) {
  animation: badgeBreathe 3s ease-in-out infinite;
  transform-box: view-box; transform-origin: 12px 12px;
}
.icon-badge.icon-verify svg path:nth-of-type(2) {
  stroke-dasharray: 13;
  animation: checkDraw 3s ease-in-out infinite;
}
@keyframes badgeBreathe {
  0%, 100% { opacity: 0.7; transform: scale(0.97); }
  35%, 70% { opacity: 1; transform: scale(1.03); }
}
@keyframes checkDraw {
  0% { stroke-dashoffset: 13; opacity: 0; }
  8% { stroke-dashoffset: 13; opacity: 1; }
  35%, 70% { stroke-dashoffset: 0; opacity: 1; }
  78% { stroke-dashoffset: 0; opacity: 0; }
  79%, 100% { stroke-dashoffset: 13; opacity: 0; }
}
.stats-band { background: var(--elevated); border-radius: 20px; padding: 56px 40px; }
.stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 32px; text-align: center; }
.stat-num { font-size: 40px; font-weight: 700; color: var(--amber); margin-bottom: 6px; }
.stat-label { font-size: 14px; color: var(--light); }
.pricing-tabs {
  display: flex; justify-content: center; gap: 8px; margin-bottom: 40px; position: relative;
  background: var(--elevated); border-radius: 12px; padding: 6px; width: fit-content; margin-left: auto; margin-right: auto;
}
.pricing-tab-indicator {
  position: absolute; top: 6px; left: 0; bottom: 6px; width: 0;
  background: var(--amber); border-radius: 8px; z-index: 0;
  transition: transform 0.4s cubic-bezier(0.65, 0, 0.35, 1), width 0.4s cubic-bezier(0.65, 0, 0.35, 1);
}
.pricing-tab {
  appearance: none; -webkit-appearance: none; -moz-appearance: none; background: transparent; border: none; cursor: pointer;
  color: var(--light); font-family: inherit; font-size: 14px; font-weight: 600; padding: 10px 24px; border-radius: 8px;
  transition: color 0.25s ease; position: relative; z-index: 1;
}
@media (hover: hover) and (pointer: fine) {
  .pricing-tab:hover { color: var(--cream); }
}
.pricing-tab.active { color: var(--base); }
.pricing-panel[hidden] { display: none; }
.pricing-custom {
  background: var(--elevated); border-radius: 16px; padding: 34px 40px; text-align: left;
  max-width: 900px; margin: 0 auto 40px; border: 1px solid rgba(234,224,207,0.06);
  opacity: 0; transform: translateY(30px);
}
.pricing-custom h3 { font-size: 17px; font-weight: 600; margin: 0 0 4px; }
.pricing-custom p { font-size: 14px; line-height: 1.55; color: var(--light); margin: 0 0 22px; }
.custom-body {
  display: grid; grid-template-columns: 1fr 240px; gap: 32px; align-items: stretch;
}
.custom-calc {
  display: flex; flex-direction: column; gap: 22px;
  text-align: left; margin-bottom: 4px;
}
.custom-field { display: flex; flex-direction: column; }
.custom-field label { font-size: 13px; color: var(--light); margin-bottom: 10px; font-weight: 600; }
.bubble-group { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.custom-field[data-field="program"] .bubble-group { grid-template-columns: repeat(2, 1fr); }
.custom-field[data-field="duration"] .bubble-group { grid-template-columns: repeat(3, 1fr); }
.custom-field[data-field="days"] .bubble-group { grid-template-columns: repeat(7, 1fr); }
.bubble {
  appearance: none; -webkit-appearance: none; -moz-appearance: none;
  width: 100%; background: var(--base); border: 1px solid rgba(234,224,207,0.15); border-radius: 999px;
  color: var(--light); font-family: inherit; font-size: 13.5px; font-weight: 600; text-align: center;
  padding: 10px 10px; cursor: pointer;
  transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease, transform 0.15s ease, box-shadow 0.25s ease;
}
@media (hover: hover) and (pointer: fine) {
  .bubble:hover { border-color: rgba(201,155,91,0.55); color: var(--cream); }
}
.bubble:active { transform: scale(0.94); }
.bubble.active { background: var(--amber); border-color: var(--amber); color: var(--base); box-shadow: 0 6px 16px rgba(201,155,91,0.35); }
.stepper {
  display: flex; align-items: center; gap: 4px; position: relative;
  background: var(--base); border: 1px solid rgba(234,224,207,0.15); border-radius: 999px;
  padding: 6px; width: fit-content;
}
.stepper-reset {
  position: absolute; top: -9px; left: -9px;
  width: 20px; height: 20px; border-radius: 50%;
  background: var(--amber); border: 2px solid var(--elevated);
  padding: 0; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 4px 12px rgba(201,155,91,0.45);
  transition: box-shadow 0.25s ease, filter 0.25s ease;
  z-index: 6;
}
.stepper-reset::before {
  content: ""; position: absolute; inset: -5px; border-radius: 50%;
  border: 1.5px solid var(--amber); opacity: 0; pointer-events: none;
  animation: resetPulse 2.4s ease-out infinite;
}
.stepper-reset-ripple {
  position: absolute; inset: 0; border-radius: 50%;
  background: var(--amber); opacity: 0; pointer-events: none;
}
.stepper-reset-icon {
  position: relative; font-size: 9px; color: var(--base);
  line-height: 1; pointer-events: none;
}
@media (hover: hover) and (pointer: fine) {
  .stepper-reset:hover { box-shadow: 0 6px 18px rgba(201,155,91,0.65); filter: brightness(1.1); }
}
.stepper-reset[hidden] { display: none; }
@keyframes resetPulse {
  0% { transform: scale(0.7); opacity: 0.5; }
  70%, 100% { transform: scale(1.7); opacity: 0; }
}
.stepper-btn {
  appearance: none; -webkit-appearance: none; -moz-appearance: none;
  width: 32px; height: 32px; border-radius: 50%; border: none; cursor: pointer;
  background: var(--elevated); color: var(--cream); font-size: 17px; font-weight: 700;
  display: flex; align-items: center; justify-content: center; line-height: 1; padding: 0;
  transition: background 0.25s ease, color 0.25s ease, transform 0.15s ease, box-shadow 0.25s ease;
}
@media (hover: hover) and (pointer: fine) {
  .stepper-btn:hover:not(:disabled) { background: var(--amber); color: var(--base); box-shadow: 0 6px 18px rgba(201,155,91,0.35); }
}
.stepper-btn:active:not(:disabled) { transform: scale(0.88); }
.stepper-btn:disabled { opacity: 0.3; cursor: not-allowed; }
.stepper-value {
  display: flex; align-items: center; gap: 9px; justify-content: center; min-width: 96px;
}
.stepper-num-clip {
  display: inline-flex; align-items: center; overflow: hidden; height: 1.2em; line-height: 1.2em;
  min-width: 16px;
}
.stepper-num {
  font-family: 'Fraunces', serif; font-size: 23px; font-weight: 700; color: var(--amber);
  min-width: 16px; text-align: center; display: inline-block;
  backface-visibility: hidden; -webkit-backface-visibility: hidden; -webkit-font-smoothing: antialiased;
}
.stepper-label {
  font-size: 15px; color: var(--amber); line-height: 1;
  display: inline-flex; align-items: center;
}
.stepper-label-fly {
  position: absolute; z-index: 999; pointer-events: none;
  font-size: 15px; color: var(--amber);
}
.custom-result {
  padding-left: 28px; border-left: 1px solid rgba(234,224,207,0.1);
  display: flex; flex-direction: column; justify-content: center;
}
.custom-result .btn-primary {
  margin-top: 24px; align-self: stretch; text-align: center;
  display: flex; align-items: center; justify-content: center; gap: 9px;
  position: relative; overflow: hidden;
}
.btn-checkout-icon { position: relative; width: 15px; height: 15px; flex-shrink: 0; }
.btn-checkout-icon i,
.btn-checkout-icon .icon-spin-wrap {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-size: 14px; backface-visibility: hidden;
}
.btn-checkout-icon .icon-spin-wrap, .btn-checkout-icon .icon-check { opacity: 0; transform: scale(0); }
.icon-spin {
  display: block; font-size: 13px; color: var(--base); line-height: 1;
  animation: checkoutSpin 0.7s linear infinite;
}
@keyframes checkoutSpin { to { transform: rotate(-360deg); } }
.btn-checkout-ripple {
  position: absolute; border-radius: 50%; background: rgba(11,22,34,0.22); pointer-events: none;
}
.checkout-confetti {
  position: absolute; width: 0; height: 0; z-index: 999; pointer-events: none;
}
.checkout-confetti-piece {
  position: absolute; left: 0; top: 0; margin: -4px 0 0 -4px; pointer-events: none;
  will-change: transform, opacity;
}
.checkout-shockwave {
  position: absolute; border-radius: 50%; border: 2px solid var(--amber);
  z-index: 998; pointer-events: none;
}
.custom-result-label {
  font-size: 11.5px; font-weight: 700; color: var(--light); text-transform: uppercase;
  letter-spacing: 0.6px; margin: 0 0 8px;
}
.custom-result-amt {
  font-size: 44px; font-weight: 700; color: var(--cream); line-height: 1; margin: 0 0 14px;
}
.custom-result-amt .custom-result-suffix { font-family: inherit; font-size: 14px; font-weight: 400; color: var(--light); margin-left: 4px; }
#calcTotalNum {
  display: inline-block; min-width: 1ch;
  backface-visibility: hidden; -webkit-backface-visibility: hidden; -webkit-font-smoothing: antialiased;
}
.custom-result-chips {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0;
}
.custom-result-savings {
  display: inline-flex; align-items: center; gap: 6px; width: fit-content; max-width: 100%; box-sizing: border-box;
  font-size: 11px; font-weight: 700; color: var(--base); letter-spacing: 0.1px;
  background: var(--amber); padding: 6px 11px; border-radius: 20px;
  margin: 0;
}
.custom-result-savings i { font-size: 10px; flex-shrink: 0; }
.custom-result-savings span {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0;
}
.custom-result-savings[hidden] { display: none; }
/* Same pill, reused inside the checkout modal (below the price, above the
   form) instead of inside .custom-result-chips -- needs its own spacing
   since it's not sitting in that flex row here. */
.modal-savings { margin: -14px 0 18px; }
.custom-result-breakdown {
  display: inline-block; width: fit-content; max-width: 100%; box-sizing: border-box;
  font-size: 11px; font-weight: 700; color: var(--amber); letter-spacing: 0.1px;
  background: rgba(201,155,91,0.12); padding: 6px 10px; border-radius: 20px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  margin: 0;
}
@media (max-width: 680px) {
  .custom-body { grid-template-columns: 1fr; }
  .custom-result {
    padding-left: 0; border-left: none;
    padding-top: 24px; border-top: 1px solid rgba(234,224,207,0.1); margin-top: 4px;
  }
}
@media (max-width: 560px) {
  .pricing-custom { padding: 30px 24px; }
  .bubble { padding: 9px 6px; font-size: 12.5px; }
  .custom-field[data-field="days"] .bubble-group { grid-template-columns: repeat(4, 1fr); }
}
.pricing-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 24px; margin-bottom: 40px; }
.price-card {
  background: var(--elevated); border-radius: 16px; padding: 30px 26px; border: 1px solid rgba(234,224,207,0.06);
  opacity: 0; transform: translateY(30px); position: relative;
}
.price-card.jump-highlight { animation: priceCardJumpPulse 1.3s ease-out 2; }
@keyframes priceCardJumpPulse {
  0% { box-shadow: 0 0 0 0 rgba(201,155,91,0.55); }
  60% { box-shadow: 0 0 0 10px rgba(201,155,91,0), 0 0 32px 6px rgba(201,155,91,0.3); }
  100% { box-shadow: 0 0 0 0 rgba(201,155,91,0); }
}
.price-card h3, .price-card .amt, .price-card p.desc {
  transform-origin: center;
}
.price-card.popular { border-width: 0; }
.price-card.popular::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit; z-index: 1;
  padding: 1.5px;
  background: conic-gradient(from var(--angle, 0deg),
    rgba(201,155,91,0.35) 0%, rgba(201,155,91,0.35) 70%,
    rgba(201,155,91,0.25) 82%, rgba(201,155,91,0.9) 92%, rgba(201,155,91,0.25) 98%,
    rgba(201,155,91,0.35) 100%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  animation: rotateBorderGlow 4s linear infinite;
  filter: blur(0.5px);
  pointer-events: none;
}
@property --angle {
  syntax: '<angle>';
  inherits: false;
  initial-value: 0deg;
}
@keyframes rotateBorderGlow {
  to { --angle: 360deg; }
}
.price-card .badge {
  position: absolute; top: -12px; left: 28px; background: var(--amber); color: var(--base);
  font-size: 11px; font-weight: 700; padding: 4px 12px; border-radius: 20px; z-index: 2;
}
.price-card h3 { font-size: 17px; font-weight: 600; margin: 0 0 4px; }
.price-card .amt { font-size: 30px; font-weight: 700; color: var(--cream); margin: 8px 0 14px; }
.price-card .amt span { font-size: 13px; font-weight: 400; color: var(--light); }
.price-card p.desc { font-size: 14px; color: var(--light); line-height: 1.55; margin: 0; }
footer { border-top: 1px solid rgba(234,224,207,0.08); padding: 64px 0 32px; }
.footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 40px; margin-bottom: 48px; }
.footer-grid h4 { font-size: 13px; text-transform: uppercase; letter-spacing: 1px; color: var(--light); margin: 0 0 16px; }
.footer-grid ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.footer-grid ul a {
  font-size: 14px;
  color: var(--cream);
  opacity: 0.85;
  display: inline-block;
  transform: scale(1) translateY(0);
  transition: opacity 0.2s ease, transform 0.4s cubic-bezier(0.34, 1.5, 0.64, 1);
}
@media (hover: hover) and (pointer: fine) {
  .footer-grid ul a:hover { opacity: 1; transform: scale(1.14) translateY(-2px); }
}
.footer-grid ul a:active { transform: scale(0.94) translateY(0); transition-duration: 0.15s; }
.footer-bottom { font-size: 12.5px; color: var(--light); border-top: 1px solid rgba(234,224,207,0.08); padding-top: 24px; }
.dash-capsule-list { display: flex; flex-direction: column; gap: 12px; margin-bottom: 20px; }
.dash-capsule {
  display: flex; align-items: center; gap: 20px;
  background: rgba(11,22,34,0.5);
  border: 1px solid rgba(234,224,207,0.12);
  border-radius: 999px;
  padding: 14px 26px;
}
.dash-capsule-info { flex: 1 1 auto; min-width: 0; font-weight: 600; color: var(--cream); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dash-capsule-type { font-weight: 400; color: var(--light); }
.dash-capsule-date { flex: 0 0 auto; color: var(--light); font-size: 13px; white-space: nowrap; }
.dash-capsule-end { flex: 0 0 auto; }
.dash-capsule-cancel {
  appearance: none; background: transparent; border: 1px solid rgba(232,138,138,0.5); color: #E88A8A;
  padding: 8px 18px; border-radius: 999px; font-size: 13px; font-weight: 600; cursor: pointer; font-family: inherit;
}
.dash-capsule-cancel:hover { background: rgba(232,138,138,0.1); }
.dash-capsule-primary {
  appearance: none; background: var(--amber); color: var(--base); border: none;
  padding: 8px 18px; border-radius: 999px; font-size: 13px; font-weight: 600; cursor: pointer; font-family: inherit;
  transition: box-shadow 0.3s ease;
}
.dash-capsule-primary:hover { box-shadow: 0 8px 22px rgba(201,155,91,0.32); }
.dash-capsule-status {
  display: inline-block; font-size: 11px; font-weight: 600; letter-spacing: 0.02em; text-transform: uppercase;
  padding: 5px 14px; border-radius: 999px; white-space: nowrap; background: rgba(148,180,193,0.16); color: #94B4C1;
}
.dash-capsule-status--succeeded { background: rgba(143,191,143,0.16); color: #8FBF8F; }
.dash-capsule-status--failed { background: rgba(232,138,138,0.16); color: #E88A8A; }
.dash-capsule-status--refunded { background: rgba(201,155,91,0.16); color: var(--amber); }
.dash-capsule-age {
  display: inline-block; font-size: 11px; font-weight: 600; color: var(--light);
  border: 1px dashed rgba(234,224,207,0.28); padding: 4px 12px; border-radius: 999px; white-space: nowrap;
}
.dash-capsule-age-input {
  width: 64px; font-size: 12px; font-weight: 600; color: var(--cream); text-align: center;
  background: transparent; border: 1px dashed rgba(234,224,207,0.28); padding: 4px 8px; border-radius: 999px;
  font-family: inherit; -moz-appearance: textfield; appearance: textfield;
}
.dash-capsule-age-input::placeholder { color: var(--light); }
.dash-capsule-age-input:focus-visible { outline: 2px solid var(--amber); outline-offset: 1px; border-style: solid; }
.dash-capsule-age-input::-webkit-outer-spin-button,
.dash-capsule-age-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* ---- Security panel (dashboard.html) ---- */
.dash-form { display: flex; flex-direction: column; gap: 16px; max-width: 420px; }
.dash-form[hidden] { display: none; }
.dash-form label { display: block; font-size: 13px; font-weight: 500; color: var(--light); margin-bottom: 6px; }
#personalInfoForm { max-width: 640px; }
.dash-form-row { display: flex; gap: 16px; }
.dash-form-row > div { flex: 1; min-width: 0; }
@media (max-width: 560px) {
  .dash-form-row { flex-direction: column; }
}
.dash-form input, .dash-form select, .dash-form textarea {
  width: 100%;
  background: rgba(11,22,34,0.5);
  border: 1px solid rgba(234,224,207,0.16);
  border-radius: 8px;
  padding: 11px 14px;
  font-size: 14px;
  color: var(--cream);
  font-family: inherit;
}
.dash-form textarea { resize: vertical; min-height: 120px; }
.dash-social-links { display: flex; flex-direction: column; gap: 10px; max-width: 420px; }
.dash-social-link {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 14px; border-radius: 12px;
  border: 1px solid rgba(234,224,207,0.15);
  background: rgba(11,22,34,0.35);
  text-decoration: none; color: var(--cream);
  transition: border-color 0.25s ease, background 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease;
}
.dash-social-icon {
  width: 38px; height: 38px; border-radius: 50%; flex: 0 0 auto;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 15px;
}
.dash-social-link--instagram .dash-social-icon {
  background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%, #d6249f 60%, #285aeb 90%);
}
.dash-social-label { flex: 1; font-size: 14px; font-weight: 500; }
.dash-social-arrow { color: var(--light); font-size: 13px; transition: transform 0.25s ease, color 0.25s ease; }
@media (hover: hover) and (pointer: fine) {
  .dash-social-link:hover {
    border-color: rgba(201,155,91,0.5); background: rgba(201,155,91,0.08);
    transform: translateY(-2px); box-shadow: 0 10px 24px rgba(0,0,0,0.25);
  }
  .dash-social-link:hover .dash-social-arrow { transform: translateX(5px); color: var(--amber); }
}
.dash-social-link:active { transform: translateY(0) scale(0.98); }

.dash-form input:focus-visible, .dash-form select:focus-visible {
  outline: 2px solid var(--amber);
  outline-offset: 1px;
}
.dash-form input[readonly] {
  background: rgba(11,22,34,0.25); color: var(--light); cursor: default;
}
.dash-form input[readonly]:focus-visible { outline: none; }

.dash-form input[type="number"] {
  -moz-appearance: textfield;
  appearance: textfield;
}
.dash-form input[type="number"]::-webkit-outer-spin-button,
.dash-form input[type="number"]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.dash-select { position: relative; }
.dash-select-trigger {
  width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 8px;
  background: rgba(11,22,34,0.5); border: 1px solid rgba(234,224,207,0.16);
  border-radius: 8px; padding: 11px 14px; font-size: 14px; color: var(--cream); font-family: inherit;
  cursor: pointer; text-align: left;
}
.dash-select-trigger.is-placeholder { color: var(--light); }
.dash-select-trigger.is-invalid { border-color: #E88A8A; }
.dash-form input.is-invalid { border-color: #E88A8A; }
.dash-form > div, .dash-form-row > div { position: relative; }
.dash-form input:user-invalid { border-color: #E88A8A; }
.dash-field-error-icon {
  display: none;
  position: absolute;
  left: 12px;
  bottom: 14px;
  color: #E88A8A;
  font-size: 13px;
  pointer-events: none;
}
div:has(input:user-invalid) > .dash-field-error-icon,
div:has(input.is-invalid) > .dash-field-error-icon,
div:has(.dash-select-trigger.is-invalid) > .dash-field-error-icon {
  display: block;
}
.dash-form input:user-invalid,
.dash-form input.is-invalid {
  padding-left: 34px;
}
.dash-select-trigger.is-invalid { padding-left: 34px; }
#piPhoneField .dash-field-error-icon { left: 110px; }
.dash-phone-group { display: flex; gap: 8px; }
.dash-phone-code { flex: 0 0 auto; width: 92px; }
.dash-phone-code-trigger { padding-left: 12px; padding-right: 8px; }
.dash-phone-code .dash-select-panel { left: 0; right: auto; width: 260px; }
.dash-phone-group input[type="tel"] { flex: 1; min-width: 0; }
.dash-select-trigger:focus-visible { outline: 2px solid var(--amber); outline-offset: 1px; }
.dash-select-trigger i { font-size: 12px; color: var(--light); flex-shrink: 0; transition: transform 0.15s ease; }
.dash-select.is-open .dash-select-trigger i { transform: rotate(180deg); }
.dash-select-panel {
  position: absolute; top: calc(100% + 6px); left: 0; right: 0; z-index: 20;
  background: var(--base); border: 1px solid rgba(234,224,207,0.16); border-radius: 10px;
  box-shadow: 0 12px 30px rgba(11,22,34,0.45); padding: 8px; max-height: 280px; display: flex; flex-direction: column;
}
.dash-select-panel[hidden] { display: none; }
.dash-select-search {
  width: 100%; background: rgba(234,224,207,0.06); border: 1px solid rgba(234,224,207,0.16);
  border-radius: 6px; padding: 8px 10px; font-size: 13px; color: var(--cream); font-family: inherit; margin-bottom: 6px; flex-shrink: 0;
}
.dash-select-search:focus-visible { outline: 2px solid var(--amber); outline-offset: 1px; }
.dash-select-options { overflow-y: auto; }
.dash-select-option { padding: 8px 10px; border-radius: 6px; font-size: 13.5px; color: var(--cream); cursor: pointer; }
.dash-select-option:hover, .dash-select-option.is-active { background: rgba(201,155,91,0.16); color: #C99B5B; }
.dash-select-empty { padding: 8px 10px; font-size: 13px; color: var(--light); }
.dash-card-sub { font-size: 14px; color: var(--light); margin: 0 0 18px; line-height: 1.5; max-width: 480px; }
.dash-btn {
  align-self: flex-start; appearance: none; -webkit-appearance: none; background: var(--amber); color: var(--base);
  border: none; padding: 10px 22px; border-radius: 999px; font-size: 14px; font-weight: 600; cursor: pointer;
  font-family: inherit; transition: box-shadow 0.3s ease;
}
@media (hover: hover) and (pointer: fine) {
  .dash-btn:hover { box-shadow: 0 10px 28px rgba(201,155,91,0.32); }
}
.dash-status-off { background: rgba(148,180,193,0.14); color: var(--light); }
.dash-tfa-qr {
  width: 176px; height: 176px; padding: 10px; background: #fff; border-radius: 12px; margin-bottom: 14px;
}
.dash-tfa-qr img { width: 100%; height: 100%; display: block; }
.dash-tfa-secret {
  font-family: "SFMono-Regular", Consolas, monospace; font-size: 13px; letter-spacing: 0.05em;
  color: var(--light); background: rgba(11,22,34,0.5); border: 1px solid rgba(234,224,207,0.14);
  border-radius: 8px; padding: 10px 14px; display: inline-block; margin: 0 0 20px; word-break: break-all;
}
.dash-tfa-codes {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px;
  font-family: "SFMono-Regular", Consolas, monospace; font-size: 14px; color: var(--cream);
  background: rgba(11,22,34,0.5); border: 1px solid rgba(234,224,207,0.14); border-radius: 10px;
  padding: 18px; margin-bottom: 18px;
}

@media (max-width: 720px) { .footer-grid { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}

.brand-mark { position: relative; z-index: 2; flex-shrink: 0; cursor: pointer; }
.brand-mark svg { width: 140px; height: 140px; display: block; }
@media (max-width: 760px) {
  .brand-mark svg { width: 68px; height: 68px; }
  .nav-shell-inner { gap: 12px; }
}

@keyframes logoOrbit { to { transform: rotate(360deg); } }
@keyframes logoOrbitReverse { to { transform: rotate(-360deg); } }
#siteLogo { cursor: pointer; }
#siteLogo #orbitRing { transform-origin: 200px 200px; animation: logoOrbit 22s linear infinite; }
#siteLogo #outerWheel { transform-origin: 200px 200px; animation: logoOrbitReverse 34s linear infinite; }

#siteLogo:not(.is-revealed) [style*="transition"] { opacity: 0 !important; }
#siteLogo:not(.is-revealed) #pageLeft { transform: scaleX(0) !important; transform-origin: 200px 200px; }
#siteLogo:not(.is-revealed) #pageRight { transform: scaleX(0) !important; transform-origin: 200px 200px; }
#siteLogo:not(.is-revealed) #jewelCore { transform: scale(0) !important; transform-origin: 200px 200px; }

.page-hero { padding: 200px 0 60px; }
.page-hero h1 { font-family: 'Fraunces', serif; font-weight: 600; font-size: clamp(32px, 5vw, 48px); margin: 0 0 14px; letter-spacing: -0.3px; }
.page-hero p { color: var(--light); font-size: 16px; line-height: 1.6; max-width: 560px; margin: 0; }
.page-content { padding: 0 0 110px; }

.faq-list { display: flex; flex-direction: column; gap: 16px; }
.faq-item { background: var(--elevated); border-radius: 16px; padding: 26px 28px; border: 1px solid rgba(234,224,207,0.06); }
.faq-item h3 { font-size: 16.5px; font-weight: 600; margin: 0 0 10px; color: var(--cream); }
.faq-item p { font-size: 14.5px; line-height: 1.65; color: var(--light); margin: 0; }
.faq-item p a { color: var(--amber); text-decoration: underline; text-underline-offset: 2px; }
@media (hover: hover) and (pointer: fine) {
  .faq-item p a:hover { text-decoration-thickness: 2px; }
}

.contact-grid { display: grid; grid-template-columns: 1fr 1.3fr; gap: 32px; align-items: start; }
.contact-info { background: var(--elevated); border-radius: 16px; padding: 32px 28px; border: 1px solid rgba(234,224,207,0.06); }
.contact-info h3 { font-size: 15px; margin: 24px 0 6px; color: var(--cream); }
.contact-info h3:first-child { margin-top: 0; }
.contact-info p { font-size: 14px; color: var(--light); margin: 0; line-height: 1.6; }
.contact-info a { color: var(--amber); font-weight: 600; }
.contact-form { display: flex; flex-direction: column; gap: 16px; }
.contact-form label { font-size: 13px; color: var(--light); margin-bottom: 6px; display: block; }
.contact-form input, .contact-form textarea {
  width: 100%; background: var(--elevated); border: 1px solid rgba(234,224,207,0.15); border-radius: 10px;
  padding: 12px 14px; color: var(--cream); font-family: inherit; font-size: 14px;
  appearance: none; -webkit-appearance: none; -moz-appearance: none;
}
.contact-form input:focus, .contact-form textarea:focus { outline: none; border-color: rgba(201,155,91,0.6); }
.contact-form textarea { resize: vertical; min-height: 140px; }
.contact-form button { align-self: flex-start; appearance: none; -webkit-appearance: none; -moz-appearance: none; font-family: inherit; }
@media (max-width: 760px) { .contact-grid { grid-template-columns: 1fr; } }

.legal-content h2 { font-family: 'Fraunces', serif; font-size: 22px; font-weight: 600; margin: 36px 0 12px; color: var(--cream); }
.legal-content h2:first-child { margin-top: 0; }
.legal-content p, .legal-content li { font-size: 14.5px; line-height: 1.7; color: var(--light); }
.legal-content ul { padding-left: 20px; margin: 8px 0 16px; }
.legal-note { background: var(--elevated); border-radius: 12px; padding: 16px 20px; font-size: 13px; color: var(--light); margin-bottom: 40px; border: 1px solid rgba(234,224,207,0.08); }

.social-links { display: flex; gap: 10px; margin-top: 18px; }
.social-links a {
  width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  border: 1px solid rgba(234,224,207,0.15); color: var(--light); font-size: 15px;
  transition: border-color 0.2s ease, color 0.2s ease, background 0.2s ease;
}
@media (hover: hover) and (pointer: fine) {
  .social-links a:hover { border-color: rgba(201,155,91,0.5); color: var(--amber); background: rgba(201,155,91,0.08); }
}

.testimonials-viewport {
  overflow: hidden; opacity: 0; transform: translateY(30px);
  -webkit-mask-image: linear-gradient(90deg, transparent 0, rgba(0,0,0,0.04) 16px, rgba(0,0,0,0.12) 34px, rgba(0,0,0,0.26) 55px, rgba(0,0,0,0.46) 78px, rgba(0,0,0,0.68) 100px, rgba(0,0,0,0.88) 118px, #000 130px, #000 calc(100% - 130px), rgba(0,0,0,0.88) calc(100% - 118px), rgba(0,0,0,0.68) calc(100% - 100px), rgba(0,0,0,0.46) calc(100% - 78px), rgba(0,0,0,0.26) calc(100% - 55px), rgba(0,0,0,0.12) calc(100% - 34px), rgba(0,0,0,0.04) calc(100% - 16px), transparent 100%);
  mask-image: linear-gradient(90deg, transparent 0, rgba(0,0,0,0.04) 16px, rgba(0,0,0,0.12) 34px, rgba(0,0,0,0.26) 55px, rgba(0,0,0,0.46) 78px, rgba(0,0,0,0.68) 100px, rgba(0,0,0,0.88) 118px, #000 130px, #000 calc(100% - 130px), rgba(0,0,0,0.88) calc(100% - 118px), rgba(0,0,0,0.68) calc(100% - 100px), rgba(0,0,0,0.46) calc(100% - 78px), rgba(0,0,0,0.26) calc(100% - 55px), rgba(0,0,0,0.12) calc(100% - 34px), rgba(0,0,0,0.04) calc(100% - 16px), transparent 100%);
}
.testimonials-track {
  display: flex; flex-wrap: nowrap; align-items: stretch; gap: 24px; width: max-content;
  animation: pathReel 40s linear infinite;
}
@media (hover: hover) and (pointer: fine) {
  .testimonials-viewport:hover .testimonials-track { animation-play-state: paused; }
}
/* touch devices get an explicit tap-to-pause/resume toggle instead (set by
   script.js) since they have no real hover to pause on */
.testimonials-track.is-paused { animation-play-state: paused; }
.testimonial-card { background: var(--elevated); border-radius: 16px; padding: 30px 26px; border: 1px solid rgba(234,224,207,0.06); flex: 0 0 340px; }
.testimonial-card .quote-mark { color: var(--amber); font-family: 'Fraunces', serif; font-size: 36px; line-height: 1; margin: 0 0 12px; display: block; }
.testimonial-card p.quote { font-size: 14.5px; line-height: 1.65; color: var(--cream); margin: 0 0 20px; }
.testimonial-author { display: flex; align-items: center; gap: 12px; }
.testimonial-avatar { width: 38px; height: 38px; border-radius: 50%; background: rgba(84,119,146,0.25); color: var(--light); display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 13px; flex-shrink: 0; }
.testimonial-author-name { font-size: 13.5px; font-weight: 600; color: var(--cream); }
.testimonial-author-context { font-size: 12.5px; color: var(--light); }
@media (max-width: 560px) {
  .testimonial-card { flex-basis: 224px; }
  .testimonials-viewport {
    -webkit-mask-image: linear-gradient(90deg, transparent 0, rgba(0,0,0,0.04) 4px, rgba(0,0,0,0.12) 9px, rgba(0,0,0,0.26) 15px, rgba(0,0,0,0.46) 22px, rgba(0,0,0,0.68) 28px, rgba(0,0,0,0.88) 33px, #000 36px, #000 calc(100% - 36px), rgba(0,0,0,0.88) calc(100% - 33px), rgba(0,0,0,0.68) calc(100% - 28px), rgba(0,0,0,0.46) calc(100% - 22px), rgba(0,0,0,0.26) calc(100% - 15px), rgba(0,0,0,0.12) calc(100% - 9px), rgba(0,0,0,0.04) calc(100% - 4px), transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0, rgba(0,0,0,0.04) 4px, rgba(0,0,0,0.12) 9px, rgba(0,0,0,0.26) 15px, rgba(0,0,0,0.46) 22px, rgba(0,0,0,0.68) 28px, rgba(0,0,0,0.88) 33px, #000 36px, #000 calc(100% - 36px), rgba(0,0,0,0.88) calc(100% - 33px), rgba(0,0,0,0.68) calc(100% - 28px), rgba(0,0,0,0.46) calc(100% - 22px), rgba(0,0,0,0.26) calc(100% - 15px), rgba(0,0,0,0.12) calc(100% - 9px), rgba(0,0,0,0.04) calc(100% - 4px), transparent 100%);
  }
}

.pop-letter {
  display: inline-block;
  transition: transform 0.45s cubic-bezier(0.16, 1, 0.3, 1);
  transform-origin: center bottom;
  will-change: transform;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  -webkit-font-smoothing: antialiased;
}


/* ---- Login modal (added when wiring frontend to the auth backend) ---- */
.modal-backdrop {
  position: fixed; inset: 0; z-index: 1000;
  background: rgba(11,22,34,0.72);
  -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
}
.modal-backdrop[hidden] { display: none; }
.modal-card {
  position: relative; width: 100%; max-width: 400px;
  background: var(--elevated); border: 1px solid rgba(234,224,207,0.12);
  border-radius: 16px; padding: 36px 30px 30px;
  box-shadow: 0 30px 60px rgba(11,22,34,0.5);
  max-height: 90vh; overflow-y: auto;
}
.modal-card h2 { font-family: 'Fraunces', serif; font-weight: 600; font-size: 24px; margin: 0 0 8px; color: var(--cream); }
.modal-sub { font-size: 14px; color: var(--light); margin: 0 0 22px; line-height: 1.5; }
.modal-close {
  position: absolute; top: 16px; right: 16px;
  width: 32px; height: 32px; display: flex; align-items: center; justify-content: center;
  background: transparent; border: none; color: var(--light); cursor: pointer; font-size: 16px;
  border-radius: 50%; transition: background 0.2s ease, color 0.2s ease;
}
.modal-close:hover { background: rgba(234,224,207,0.08); color: var(--cream); }
.modal-card form { display: flex; flex-direction: column; gap: 16px; }
.modal-card form[hidden] { display: none; }
.checkout-inline-container { min-height: 450px; }
#planPickerBackdrop .modal-card { max-width: 960px; }
#planPickerBackdrop .pricing-grid { margin-bottom: 0; }
#planPickerBackdrop .pricing-custom { margin-bottom: 0; }
.modal-card label { display: block; font-size: 13px; font-weight: 500; color: var(--light); margin-bottom: 6px; }
.modal-card input {
  width: 100%; background: rgba(11,22,34,0.5); border: 1px solid rgba(234,224,207,0.16);
  border-radius: 8px; padding: 11px 14px; font-size: 14px; color: var(--cream); font-family: inherit;
}
.modal-card input:focus-visible { outline: 2px solid var(--amber); outline-offset: 1px; }
.modal-link { color: var(--amber); font-weight: 600; }
.modal-link-btn {
  background: none; border: none; color: var(--light); font-size: 13px; text-decoration: underline;
  cursor: pointer; padding: 0; text-align: center; font-family: inherit;
}
.modal-link-btn:hover { color: var(--cream); }
.form-status { font-size: 13px; margin: -4px 0 0; line-height: 1.5; }


/* ---- Checkout modal (added when wiring Paddle checkout) ---- */
.co-student-row { display: flex; align-items: flex-end; gap: 8px; }
.co-student-row > div { flex: 1; }
.co-student-remove {
  flex: 0 0 auto; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center;
  background: rgba(234,224,207,0.06); border: 1px solid rgba(234,224,207,0.16); border-radius: 8px;
  color: var(--light); cursor: pointer; margin-bottom: 1px;
}
.co-student-remove:hover { background: rgba(234,224,207,0.12); color: var(--cream); }

/* "Add another student" — a dashed pill with a spinning + badge, added when
   the plain text link felt like a dead end rather than an invitation. */
.co-add-student-btn {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  width: 100%; background: rgba(201,155,91,0.06); border: 1.5px dashed rgba(201,155,91,0.45);
  border-radius: 12px; padding: 12px 16px; margin-top: -4px;
  color: var(--light); font-size: 14px; font-weight: 600; font-family: inherit;
  cursor: pointer; transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease, transform 0.15s ease;
}
@media (hover: hover) and (pointer: fine) {
  .co-add-student-btn:hover { background: rgba(201,155,91,0.12); border-color: var(--amber); color: var(--cream); }
  .co-add-student-btn:hover .co-add-icon-wrap { transform: scale(1.08); }
}
.co-add-student-btn:active { transform: scale(0.98); }
.co-add-student-btn[hidden] { display: none; }
.co-add-icon-wrap {
  position: relative; width: 22px; height: 22px; flex-shrink: 0; border-radius: 50%;
  background: var(--amber); color: var(--base); display: flex; align-items: center; justify-content: center;
  box-shadow: 0 3px 10px rgba(201,155,91,0.35); transition: transform 0.25s ease;
}
.co-add-icon { position: relative; z-index: 1; font-size: 11px; display: inline-block; }
.co-add-ripple {
  position: absolute; inset: 0; border-radius: 50%; background: var(--amber); opacity: 0; pointer-events: none;
}
.modal-checkbox-row { display: flex; align-items: flex-start; gap: 10px; font-size: 13px; color: var(--light); line-height: 1.5; cursor: pointer; }
.modal-checkbox-row input { width: auto; margin-top: 3px; flex: 0 0 auto; }
.price-card-enroll { margin-top: 16px; width: 100%; }

/* ---- Student dashboard (dashboard.html) ---- */
/* App-shell layout: sidebar nav + content area, styled after modern SaaS
   dashboards (Cloudflare/Stripe/Vercel style). To add a new section later:
   add a .dash-nav-item + matching [data-panel] section in dashboard.html,
   then one entry to DASH_SECTION_TITLES in script.js. No other structural
   changes needed — nav highlighting and panel switching are generic. */
.dash-shell {
  display: flex;
  align-items: stretch;
  max-width: 1200px;
  margin: 200px auto 60px;
  min-height: 640px;
  border: 1px solid rgba(234,224,207,0.14);
  border-radius: 16px;
  overflow: hidden;
  background: rgba(234,224,207,0.02);
}
.dash-sidebar {
  width: 240px;
  flex: 0 0 240px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  border-right: 1px solid rgba(234,224,207,0.14);
  background: rgba(11,22,34,0.4);
  padding: 20px 0;
}
.dash-nav { display: flex; flex-direction: column; gap: 2px; padding: 0 12px; }
.dash-nav-item {
  display: flex; align-items: center; gap: 12px; padding: 10px 14px; border-radius: 8px;
  color: var(--light); text-decoration: none; font-size: 14px; font-weight: 500;
  transition: background 0.15s, color 0.15s;
}
.dash-nav-item i { width: 16px; text-align: center; font-size: 14px; opacity: 0.85; }
.dash-nav-item:hover { background: rgba(234,224,207,0.06); color: var(--cream); }
.dash-nav-item.is-active { background: rgba(201,155,91,0.14); color: var(--cream); }
.dash-nav-item.is-active i { color: #C99B5B; opacity: 1; }
.dash-sidebar-footer {
  padding: 14px 16px 0; border-top: 1px solid rgba(234,224,207,0.1); margin: 14px 12px 0;
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
}
.dash-account { display: flex; align-items: center; gap: 10px; min-width: 0; }
.dash-account-avatar {
  width: 32px; height: 32px; border-radius: 50%; flex: 0 0 auto;
  background: rgba(201,155,91,0.2); color: #C99B5B; font-weight: 700; font-size: 13px;
  display: flex; align-items: center; justify-content: center;
}
.dash-account-text { min-width: 0; }
.dash-account-name { font-size: 13px; font-weight: 600; color: var(--cream); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 120px; }
.dash-account-email { font-size: 11px; color: var(--light); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 120px; }
.dash-logout-btn {
  flex: 0 0 auto; width: 30px; height: 30px; border-radius: 8px; border: 1px solid rgba(234,224,207,0.16);
  background: transparent; color: var(--light); cursor: pointer; display: flex; align-items: center; justify-content: center;
}
.dash-logout-btn:hover { background: rgba(232,138,138,0.12); border-color: rgba(232,138,138,0.4); color: #E88A8A; }

.dash-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.dash-topbar { padding: 22px 32px; border-bottom: 1px solid rgba(234,224,207,0.1); }
.dash-topbar h1 { margin: 0; font-size: 20px; }
.dash-body { padding: 28px 32px; flex: 1 1 auto; }
.dash-panel { padding: 0; position: static; }
.dash-panel[hidden] { display: none; }

.dash-card {
  background: rgba(234,224,207,0.04); border: 1px solid rgba(234,224,207,0.14); border-radius: 14px;
  padding: 28px; margin-bottom: 40px;
}
.dash-card-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 20px; }
.dash-card-head h2 { margin: 0; }
.dash-status {
  display: inline-block; font-size: 12px; font-weight: 600; letter-spacing: 0.02em; text-transform: uppercase;
  padding: 5px 12px; border-radius: 999px; white-space: nowrap;
}
.dash-status-pending_review { background: rgba(148,180,193,0.14); color: var(--light); }
.dash-status-trialing { background: rgba(224,149,74,0.16); color: #E0954A; }
.dash-status-active { background: rgba(143,191,143,0.16); color: #8FBF8F; }
.dash-status-past_due { background: rgba(201,155,91,0.18); color: #C99B5B; }
.dash-status-cancelled { background: rgba(232,138,138,0.16); color: #E88A8A; }

.dash-card--trial-ending {
  animation: dashTrialPulse 2.4s ease-in-out infinite;
}
.dash-card--trial-ending .dash-status-trialing {
  animation: dashBadgePulse 2.4s ease-in-out infinite;
}
.dash-trial-countdown {
  display: block; margin-top: 3px; font-size: 12px; font-weight: 700;
  color: #E0954A; letter-spacing: 0.02em;
}
@keyframes dashTrialPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(201,155,91,0.38); border-color: rgba(234,224,207,0.14); }
  50% { box-shadow: 0 0 0 12px rgba(201,155,91,0); border-color: rgba(201,155,91,0.8); }
}
@keyframes dashBadgePulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.1); }
}
@media (prefers-reduced-motion: reduce) {
  .dash-card--trial-ending,
  .dash-card--trial-ending .dash-status-trialing { animation: none; }
}
.dash-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 20px; margin-bottom: 20px; }
.dash-label { font-size: 12px; color: var(--light); text-transform: uppercase; letter-spacing: 0.03em; margin-bottom: 4px; }
.dash-students-list { margin: 0; padding-left: 18px; }
.dash-students-list li { margin-bottom: 2px; }
.dash-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.dash-table th, .dash-table td { text-align: left; padding: 10px 12px; border-bottom: 1px solid rgba(234,224,207,0.12); }
.dash-table th { color: var(--light); font-weight: 600; font-size: 12px; text-transform: uppercase; letter-spacing: 0.03em; }
.btn-secondary {
  display: inline-block; background: transparent; border: 1px solid rgba(232,138,138,0.5); color: #E88A8A;
  padding: 12px 22px; border-radius: 999px; font-size: 14px; font-weight: 600; cursor: pointer;
}
.btn-secondary:hover { background: rgba(232,138,138,0.1); }
.btn-secondary[hidden] { display: none; }

@media (max-width: 720px) {
  .dash-shell { flex-direction: column; border-radius: 12px; min-height: 0; }
  .dash-capsule { flex-wrap: wrap; border-radius: 20px; padding: 16px 20px; gap: 8px; }
  .dash-capsule-info { flex: 1 1 100%; white-space: normal; }
  .dash-sidebar {
    width: 100%; flex: 0 0 auto; flex-direction: row; align-items: center; justify-content: space-between;
    border-right: none; border-bottom: 1px solid rgba(234,224,207,0.14); padding: 10px 12px;
  }
  .dash-nav { flex-direction: row; padding: 0; overflow-x: auto; }
  .dash-nav-item span { display: none; }
  .dash-nav-item { padding: 10px; }
  .dash-sidebar-footer { border-top: none; margin: 0; padding: 0; }
  .dash-account-text { display: none; }
  .dash-topbar, .dash-body { padding: 18px; }
  .dash-shell { margin-top: 120px; }
}

/* ---- Password show/hide toggle (all password fields, wired in script.js) ---- */
.pw-field-wrap { position: relative; display: block; }
.pw-field-wrap input { padding-right: 42px; }
.pw-toggle-btn {
  position: absolute; top: 50%; right: 6px; transform: translateY(-50%);
  width: 30px; height: 30px; display: flex; align-items: center; justify-content: center;
  background: none; border: none; color: var(--light); cursor: pointer; font-size: 15px;
  border-radius: 6px; transition: color 0.2s ease;
}
.pw-toggle-btn:hover { color: var(--cream); }
.pw-toggle-btn:focus-visible { outline: 2px solid var(--amber); outline-offset: 1px; }

/* ---- Copy-to-clipboard buttons (authenticator secret + backup codes) ---- */
.dash-tfa-secret-row { display: flex; align-items: center; gap: 8px; margin: 0 0 20px; }
.dash-tfa-secret-row .dash-tfa-secret { margin: 0; }
.dash-copy-btn {
  display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto;
  width: 34px; height: 34px; appearance: none; -webkit-appearance: none;
  background: none; border: 1px solid rgba(234,224,207,0.16); border-radius: 8px;
  color: var(--light); cursor: pointer; font-size: 14px; transition: color 0.2s ease, border-color 0.2s ease;
}
.dash-copy-btn:hover { color: var(--cream); border-color: rgba(234,224,207,0.3); }
.dash-copy-btn:focus-visible { outline: 2px solid var(--amber); outline-offset: 1px; }
.dash-copy-btn.is-copied { color: var(--amber); border-color: var(--amber); }
.dash-tfa-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.dash-btn-ghost {
  display: inline-flex; align-items: center; gap: 8px; appearance: none; -webkit-appearance: none;
  background: transparent; border: 1px solid rgba(234,224,207,0.2); color: var(--light);
  padding: 10px 20px; border-radius: 999px; font-size: 14px; font-weight: 600; cursor: pointer;
  font-family: inherit; transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}
.dash-btn-ghost:hover { color: var(--cream); border-color: rgba(234,224,207,0.4); background: rgba(234,224,207,0.06); }
.dash-btn-ghost:focus-visible { outline: 2px solid var(--amber); outline-offset: 1px; }
.dash-btn-ghost.is-copied { color: var(--amber); border-color: var(--amber); }



/* ---- 404 error page ---- */
.error-hero { padding: 200px 0 110px; text-align: center; }
.error-hero .wrap { max-width: 640px; }
.error-lottie { width: 220px; height: 220px; margin: 0 auto 8px; }
.error-lottie dotlottie-wc { width: 100%; height: 100%; display: block; }
.error-hero h1 { font-family: 'Fraunces', serif; font-weight: 600; font-size: clamp(30px, 5vw, 44px); margin: 0 0 14px; letter-spacing: -0.3px; }
.error-hero p { color: var(--light); font-size: 16px; line-height: 1.6; max-width: 460px; margin: 0 auto 36px; }
.error-ctas { display: flex; gap: 16px; align-items: center; justify-content: center; flex-wrap: wrap; }
.error-ctas .btn-primary, .error-ctas .btn-ghost { min-width: 190px; text-align: center; }
@media (max-width: 480px) {
  .error-ctas { flex-direction: column; align-items: stretch; }
  .error-ctas .btn-primary, .error-ctas .btn-ghost { width: 100%; min-width: 0; }
}
