/* ═══════════════════════════════════════════════
   BASE — Reset · Global · Body · Scrollbar · Cursor
═══════════════════════════════════════════════ */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; font-size: 16px; }

body {
  background: var(--cream);
  color: var(--ink);
  font-family: var(--f-b);
  line-height: 1.65;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  background-image:
    radial-gradient(ellipse 120% 60% at 70% 0%, rgba(13,122,107,.04) 0%, transparent 60%),
    radial-gradient(ellipse 80% 40% at 20% 100%, rgba(200,150,42,.04) 0%, transparent 50%);
}

::selection { background: rgba(13,122,107,.18); color: var(--ink); }
a { text-decoration: none; color: inherit; }
button { font-family: inherit; cursor: pointer; border: none; background: none; }
img { max-width: 100%; display: block; }
ul { list-style: none; }

/* ── Scrollbar ── */
::-webkit-scrollbar { width: 4px; }
::-webkit-scrollbar-track { background: var(--cream2); }
::-webkit-scrollbar-thumb { background: var(--teal); border-radius: 2px; }

/* ── Custom cursor (desktop only) ── */
@media (hover: hover) and (pointer: fine) {
  * { cursor: none !important; }
  #cursor-dot {
    position: fixed; pointer-events: none; z-index: 9999;
    width: 8px; height: 8px;
    background: var(--teal); border-radius: 50%;
    transform: translate(-50%, -50%);
    transition: width .15s, height .15s, background .2s;
  }
  #cursor-ring {
    position: fixed; pointer-events: none; z-index: 9998;
    width: 32px; height: 32px;
    border: 1.5px solid var(--teal); border-radius: 50%;
    transform: translate(-50%, -50%);
    opacity: .4;
    transition: width .2s, height .2s;
  }
  body.is-hovering #cursor-dot  { width: 14px; height: 14px; background: var(--gold); }
  body.is-hovering #cursor-ring { width: 48px; height: 48px; opacity: .2; }
}

/* ── Shared animations ── */
@keyframes fade-up   { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: translateY(0); } }
@keyframes blink     { 0%,100% { opacity: 1; } 50% { opacity: .3; } }
@keyframes shimmer   { to { background-position: 200% 0; } }
@keyframes ring-pulse{ 0%,100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.03); opacity: .6; } }
@keyframes float-chip{ 0%,100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@keyframes gspin     { to { transform: rotate(360deg); } }
@keyframes marquee   { to { transform: translateX(-50%); } }
@keyframes underline-draw { to { transform: scaleX(1); } }
@keyframes scroll-reveal { to { opacity: 1; transform: translateY(0); } }

/* ── Scroll-reveal utility ── */
.reveal {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity .6s var(--ease), transform .6s var(--ease);
}
.reveal.is-visible { opacity: 1; transform: translateY(0); }
.reveal.delay-1 { transition-delay: .10s; }
.reveal.delay-2 { transition-delay: .20s; }
.reveal.delay-3 { transition-delay: .30s; }
.reveal.delay-4 { transition-delay: .38s; }

/* ── Scroll offset for fixed nav ── */
section[id], div[id] { scroll-margin-top: 74px; }