/* ==========================================================================
   BNA WORLDWIDE — BASE
   ========================================================================== */

*,*::before,*::after{ box-sizing:border-box; }
html{
  scroll-behavior:auto;
  -webkit-text-size-adjust:100%;
}
html.has-lenis{ scroll-behavior:auto; }

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-body);
  font-size:var(--fs-body);
  line-height:var(--lh-normal);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:clip;
}

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

a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; }
input,textarea,select{ font:inherit; color:inherit; }
ul,ol{ margin:0; padding:0; list-style:none; }
p{ margin:0; }
h1,h2,h3,h4,h5,h6{ margin:0; font-weight:500; }

::selection{ background:var(--sky-500); color:var(--navy-900); }

/* ---- Premium thin scrollbar (webkit + firefox) ---- */
html{ scrollbar-width:thin; scrollbar-color:var(--navy-400) transparent; }
::-webkit-scrollbar{ width:9px; height:9px; }
::-webkit-scrollbar-track{ background:transparent; }
::-webkit-scrollbar-thumb{ background:var(--charcoal-300); border-radius:99px; border:2px solid var(--paper); background-clip:padding-box; }
::-webkit-scrollbar-thumb:hover{ background:var(--sky-600); }

/* Focus states — visible, never suppressed */
:focus-visible{
  outline:2px solid var(--sky-500);
  outline-offset:3px;
}

/* ---- Typography roles ---- */
.f-display{
  font-family:var(--font-display);
  font-weight:600;
  letter-spacing:var(--ls-tight);
  line-height:var(--lh-tight);
}
.f-mono{
  font-family:var(--font-mono);
  letter-spacing:.02em;
}
.eyebrow{
  font-family:var(--font-mono);
  font-weight:500;
  font-size:var(--fs-label);
  text-transform:uppercase;
  letter-spacing:var(--ls-label);
  display:inline-flex;
  align-items:center;
  gap:.7em;
  color:var(--sky-700); /* AA contrast on light backgrounds (7.05:1) */
}
.eyebrow::before{
  content:'';
  width:1.6em;
  height:1px;
  background:currentColor;
  opacity:.7;
  transform-origin:left;
  transition:transform 1s var(--ease-premium) .15s;
}
[data-reveal] .eyebrow::before{ transform:scaleX(0); }
[data-reveal].is-visible .eyebrow::before{ transform:scaleX(1); }
.eyebrow.on-dark{ color:var(--sky-400); }

.reading{ max-width:var(--reading-max); }

/* ---- Inline animated-underline link (for body copy links) ---- */
.link-underline{
  position:relative;
  background-image:linear-gradient(currentColor,currentColor);
  background-position:0% 100%;
  background-repeat:no-repeat;
  background-size:0% 1px;
  padding-bottom:.1em;
  transition:background-size .5s var(--ease-premium);
}
.link-underline:hover{ background-size:100% 1px; }

/* ---- Editorial italic accent ---- */
.f-display-italic{
  font-family:var(--font-display);
  font-style:italic;
  font-weight:500;
}

/* ---- Layout ---- */
.wrap{
  max-width:var(--content-max);
  margin-inline:auto;
  padding-inline:var(--page-pad-x);
}
.section{
  position:relative;
  padding-block:var(--section-pad-y);
}
.section-tight{ padding-block: clamp(2.5rem, 4vw, 4.5rem); }

main{ display:block; position:relative; }

.on-dark{ color:var(--white); }
.bg-navy{ background:var(--navy-700); }
.bg-navy-deep{ background:var(--navy-900); }
.bg-paper{ background:var(--paper); }
.bg-white{ background:var(--white); }
.bg-charcoal{ background:var(--charcoal-700); }

hr.rule{
  border:0; border-top:1px solid var(--line-on-light);
  margin:0;
}
.on-dark hr.rule{ border-top-color:var(--line-on-dark); }

/* ---- Grain / noise texture (applied as fixed overlay) ---- */
.grain{
  pointer-events:none;
  position:fixed;
  inset:0;
  z-index:2;
  opacity:.035;
  mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  background-size:180px 180px;
}

/* ---- Accessibility ---- */
.sr-only{
  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:fixed; top:-100px; left:1rem; z-index:1000;
  background:var(--navy-700); color:var(--white);
  padding:.75rem 1.25rem; border-radius:var(--radius-sm);
  transition:top .2s var(--ease-out);
}
.skip-link:focus{ top:1rem; }

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