/* ==========================================================================
   IYS — Reset, fonts and base typography
   ========================================================================== */

/* Nyala is the official logo typeface. It is loaded for the wordmark only —
   see .wordmark in components.css — so the body never waits on it. */
@font-face{
  font-family:'Nyala';
  src:url('../fonts/nyala.ttf') format('truetype');
  font-weight:400;
  font-style:normal;
  font-display:swap;
  /* Latin + punctuation: everything the lockup needs, nothing else. */
  unicode-range:U+0000-00FF, U+2000-206F, U+2122;
}

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

html{
  scroll-behavior:smooth;
  scroll-padding-top:var(--header-h);
  -webkit-text-size-adjust:100%;
}

body{
  margin:0;
  font-family:var(--font-body);
  font-size:var(--text-body-default);
  line-height:1.65;
  color:var(--ink);
  background:var(--background);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

img,svg,video{ display:block; max-width:100%; }
img{ height:auto; }

a{ color:inherit; text-decoration:none; }

button{ font:inherit; color:inherit; }

h1,h2,h3,h4,h5,h6{
  font-family:var(--font-display);
  font-weight:600;
  margin:0;
  color:var(--navy);
  letter-spacing:-0.01em;
}
p{ margin:0; line-height:1.65; }

ul,ol{ margin:0; padding:0; }

/* ---------- Type utilities mapped to the type scale ---------- */
.t-display-hero{
  font-family:var(--font-display);
  font-size:clamp(var(--text-display-hero-mobile),5vw,var(--text-display-hero));
  line-height:1.08; letter-spacing:-0.01em; font-weight:600;
}
.t-headline-lg{
  font-family:var(--font-display);
  font-size:clamp(24px,3vw,var(--text-headline-lg));
  line-height:1.2; font-weight:600;
}
.t-headline-md{
  font-family:var(--font-display);
  font-size:var(--text-headline-md); line-height:1.3; font-weight:600;
}
.t-card-title{
  font-family:var(--font-display);
  font-size:var(--text-card-title); line-height:1.3; font-weight:600;
}
.t-body-lg{ font-size:var(--text-body-lg); line-height:1.6; }
.t-body-sm{ font-size:var(--text-body-sm); line-height:1.5; }
.t-label{
  font-size:var(--text-label); line-height:1.2; font-weight:700;
  color:var(--navy);
}

.eyebrow{
  display:block;
  font-family:var(--font-body);
  font-size:var(--text-eyebrow);
  font-weight:700;
  letter-spacing:0.14em;
  line-height:1;
  text-transform:uppercase;
  color:var(--gold);
}
.on-dark .eyebrow,
.eyebrow.on-dark{ color:var(--gold-light); }

.text-mute{ color:var(--mute); }

/* ---------- Focus ---------- */
:focus-visible{ outline:2px solid var(--gold); outline-offset:2px; border-radius:2px; }

/* ---------- Accessibility helpers ---------- */
.visually-hidden{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}

.skip-link{
  position:absolute; left:16px; top:-64px; z-index:200;
  background:var(--navy); color:#fff; padding:12px 20px;
  border-radius:var(--radius-btn); font-size:var(--text-button); font-weight:700;
  transition:top var(--dur-fast) var(--ease);
}
.skip-link:focus{ top:16px; }

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
}
