*,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }

html { scroll-behavior:smooth; }

body {
  background: var(--bg-page);
  color: var(--text-primary);
  font-family: var(--font-body);
  font-size: var(--text-body);
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
  transition: background-color 0.3s ease, color 0.3s ease;
}

h1,h2,h3,h4,h5 {
  font-family: var(--font-display);
  line-height: 1.15;
  letter-spacing: -.02em;
  color: var(--text-primary);
}

a { color: var(--teal); text-decoration: none; transition: color var(--t-fast); }
a:hover { color: var(--text-primary); }

img { max-width:100%; display:block; object-fit:cover; }

.container { max-width:1160px; margin:0 auto; padding:0 28px; }

/* Buttons */
.btn {
  display:inline-flex; align-items:center; gap:8px;
  padding:12px 28px; border-radius:var(--r-md);
  font-size:14px; font-weight:600; font-family:var(--font-body);
  cursor:pointer; border:none; text-decoration:none;
  transition:all var(--t-mid); white-space:nowrap;
}
.btn-coral { background:var(--coral); color:#FFF8F5; box-shadow:0 4px 16px rgba(217,119,87,.3); }
.btn-coral:hover { background:var(--coral-light); color:#FFF8F5; transform:translateY(-2px); box-shadow:0 8px 24px rgba(217,119,87,.4); }
.btn-outline { background:transparent; color:var(--text-primary); border:1.5px solid var(--bg-border); }
.btn-outline:hover { border-color:var(--text-secondary); color:var(--text-primary); transform:translateY(-1px); }
.btn-teal { background:rgba(94,234,212,.1); color:var(--teal); border:1.5px solid rgba(94,234,212,.25); }
.btn-teal:hover { background:rgba(94,234,212,.18); color:var(--teal); }

/* Legacy button aliases */
.btn-primary { background:var(--coral); color:#FFF8F5; box-shadow:0 4px 16px rgba(217,119,87,.3); }
.btn-primary:hover { background:var(--coral-light); color:#FFF8F5; transform:translateY(-2px); box-shadow:0 8px 24px rgba(217,119,87,.4); }
.btn-white { background:rgba(255,255,255,.1); color:var(--text-primary); border:1.5px solid rgba(255,255,255,.25); }
.btn-white:hover { background:rgba(255,255,255,.18); color:var(--text-primary); border-color:rgba(255,255,255,.5); }
.btn-red { background:var(--coral); color:#FFF8F5; }
.btn-red:hover { background:var(--coral-light); color:#FFF8F5; }
.btn-navy { background:var(--bg-card); color:var(--text-primary); border:1px solid var(--bg-border); }
.btn-outline-white { background:transparent; color:white; border:1.5px solid rgba(255,255,255,.4); }
.btn-outline-white:hover { border-color:white; background:rgba(255,255,255,.1); color:white; }

/* Labels */
.label {
  font-size:var(--text-xs); font-weight:700; letter-spacing:.12em;
  text-transform:uppercase; color:var(--coral);
  font-family:var(--font-body); margin-bottom:12px; display:block;
}
.label-teal { color:var(--teal); }
.label-muted { color:var(--text-muted); }

/* Legacy */
.section-label { font-size:11px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--coral); margin-bottom:12px; font-family:var(--font-body); }
.section-title { font-family:var(--font-display); font-size:var(--text-h2); font-weight:700; color:var(--text-primary); line-height:1.15; letter-spacing:-.02em; margin-bottom:16px; }
.section-subtitle { font-size:0.875rem; color:var(--text-secondary); line-height:1.7; max-width:640px; }

/* Cards */
.card {
  background:var(--bg-card); border:1px solid var(--bg-border);
  border-radius:var(--r-lg); padding:28px;
  transition:border-color var(--t-mid), box-shadow var(--t-mid), transform var(--t-mid);
}
.card:hover { border-color:var(--bg-hover); box-shadow:var(--shadow-md); }
.card-link { display:block; text-decoration:none; color:inherit; }
.card-link:hover { transform:translateY(-4px); box-shadow:var(--shadow-lg); color:inherit; }

/* Section spacing */
.s-sm  { padding:48px 0; }
.s-md  { padding:72px 0; }
.s-lg  { padding:96px 0; }
.s-xl  { padding:120px 0; }
.section-sm  { padding:48px 0; }
.section-md  { padding:72px 0; }
.section-lg  { padding:96px 0; }
.section-xl  { padding:120px 0; }

/* Dividers */
.border-t  { border-top:1px solid var(--bg-border); }
.border-b  { border-bottom:1px solid var(--bg-border); }
.border-top    { border-top:1px solid var(--bg-border); }
.border-bottom { border-bottom:1px solid var(--bg-border); }
.bg-raised { background:var(--bg-raised); }
.bg-card   { background:var(--bg-card); }
.bg-dark   { background:var(--bg-page); }
.text-center { text-align:center; }

/* Reveal animations — triggered by IntersectionObserver adding .revealed class */
.reveal { opacity:0; transform:translateY(24px); transition:opacity .6s ease, transform .6s ease; }
.reveal.revealed { opacity:1; transform:none; }
/* Legacy alias so any old .visible references still work */
.reveal.visible { opacity:1; transform:none; }
/* Stagger siblings so they animate in sequence */
.reveal:nth-child(1) { transition-delay:0s; }
.reveal:nth-child(2) { transition-delay:.08s; }
.reveal:nth-child(3) { transition-delay:.16s; }
.reveal:nth-child(4) { transition-delay:.24s; }
.reveal:nth-child(5) { transition-delay:.32s; }
.reveal:nth-child(6) { transition-delay:.40s; }
/* Named delay helpers (still available) */
.reveal-delay-1 { transition-delay:.1s; }
.reveal-delay-2 { transition-delay:.2s; }
.reveal-delay-3 { transition-delay:.3s; }

/* Badges */
.badge {
  display:inline-flex; align-items:center; gap:4px;
  padding:3px 10px; border-radius:20px;
  font-size:11px; font-weight:700; letter-spacing:.04em; font-family:var(--font-body);
}
.badge-coral  { background:rgba(217,119,87,.15); color:var(--coral-light); border:1px solid rgba(217,119,87,.3); }
.badge-teal   { background:rgba(94,234,212,.1); color:var(--teal); border:1px solid rgba(94,234,212,.25); }
.badge-gold   { background:rgba(251,191,36,.1); color:var(--gold); border:1px solid rgba(251,191,36,.25); }
.badge-green  { background:rgba(74,222,128,.1); color:var(--green); border:1px solid rgba(74,222,128,.25); }

@media(max-width:768px) {
  .container { padding:0 18px; }
  .s-xl { padding:72px 0; }
  .s-lg { padding:56px 0; }
  .section-xl { padding:72px 0; }
  .section-lg { padding:56px 0; }
  .hide-mob { display:none !important; }
  .hide-mobile { display:none !important; }
}
