/* =============================================================
   BASE / RESET / TYPOGRAPHY / UTILITIES
   ============================================================= */
html{
  scroll-behavior:smooth;
  scroll-padding-top:96px;
}

body{
  font-family:var(--font-body);
  color:var(--text);
  background:var(--bg);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  overflow-wrap:break-word;
  word-break:break-word;
  transition:background var(--dur-med) var(--ease), color var(--dur-med) var(--ease);
}

h1,h2,h3,h4,h5,h6{
  font-family:var(--font-display);
  color:var(--text);
  font-weight:700;
  line-height:1.15;
  letter-spacing:-0.01em;
  margin:0;
  overflow-wrap:break-word;
}

p{ margin:0; color:var(--text-muted); overflow-wrap:break-word; }

a{ text-decoration:none; color:inherit; overflow-wrap:break-word; }
img, svg, video, canvas{ max-width:100%; display:block; }
button{ font-family:inherit; max-width:100%; }
input, select, textarea{ max-width:100%; }

::selection{ background:var(--gold-500); color:var(--navy-950); }

:focus-visible{
  outline:3px solid var(--gold-500);
  outline-offset:3px;
  border-radius:4px;
}

/* ---- Layout helpers ---- */
.container-xl{
  width:100%;
  max-width:1240px;
  margin-inline:auto;
  padding-inline:16px;
}
@media (min-width:400px){ .container-xl{ padding-inline:20px; } }
@media (min-width:768px){ .container-xl{ padding-inline:32px; } }

.section{ padding:88px 0; position:relative; }
@media (max-width:767px){ .section{ padding:56px 0; } }

main section[id]{ scroll-margin-top:110px; }

.section-alt{ background:var(--bg-alt); }

.eyebrow{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-family:var(--font-display);
  font-size:.78rem;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--gold-600);
  background:var(--gold-100);
  padding:6px 16px;
  border-radius:var(--radius-pill);
  margin-bottom:16px;
}
[data-theme="dark"] .eyebrow{ background:rgba(238,182,20,.12); color:var(--gold-400); }

.section-title{
  font-size:clamp(1.7rem, 3.4vw, 2.6rem);
  max-width:640px;
}
.section-sub{
  max-width:560px;
  margin-top:14px;
  font-size:1.05rem;
}
.section-head{ margin-bottom:48px; }
.section-head.center{ text-align:center; margin-inline:auto; }
.section-head.center .section-title,
.section-head.center .section-sub{ margin-inline:auto; }

/* ---- Buttons ---- */
.btn-shine{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  font-family:var(--font-display);
  font-weight:700;
  font-size:.95rem;
  padding:14px 28px;
  border-radius:var(--radius-pill);
  border:2px solid transparent;
  cursor:pointer;
  transition:transform var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
  white-space:nowrap;
}
.btn-shine:active{ transform:scale(.96); }

.btn-primary-shine{
  background:var(--gold-500);
  color:var(--navy-950);
  box-shadow:var(--shadow-gold);
}
.btn-primary-shine:hover{ background:var(--gold-400); transform:translateY(-2px); box-shadow:0 16px 32px rgba(238,182,20,.4); }

.btn-outline-shine{
  background:transparent;
  border-color:rgba(255,255,255,.35);
  color:inherit;
}
.btn-outline-shine:hover{ border-color:var(--gold-500); color:var(--gold-500); transform:translateY(-2px); }

.btn-ghost-shine{
  background:var(--navy-100);
  color:var(--navy-900);
}
[data-theme="dark"] .btn-ghost-shine{ color:var(--text); }
.btn-ghost-shine:hover{ background:var(--border); }

/* ---- Cards ---- */
.card-shine{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  transition:transform var(--dur-med) var(--ease), box-shadow var(--dur-med) var(--ease), border-color var(--dur-med) var(--ease);
}
.card-shine:hover{
  transform:translateY(-6px);
  box-shadow:var(--shadow-lg);
  border-color:transparent;
}

/* ---- Reveal animations ---- */
[data-reveal]{
  opacity:0;
  transition:opacity .8s var(--ease), transform .8s var(--ease);
  will-change:transform, opacity;
}
[data-reveal="up"]{ transform:translateY(36px); }
[data-reveal="left"]{ transform:translateX(-36px); }
[data-reveal="right"]{ transform:translateX(36px); }
[data-reveal="scale"]{ transform:scale(.92); }
[data-reveal].in-view{ opacity:1; transform:none; }

/* stagger children */
[data-reveal-group] > *{ transition-delay:calc(var(--i,0) * 90ms); }

.visually-hidden-focusable:not(:focus):not(:focus-within){
  position:absolute !important; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap;
}
