
/* =========================================================
   GLOBAL TYPOGRAPHY POLICY
   Public-facing text should never render below 16px.
   Legal/disclaimer copy is the sole intentional exception.
   ========================================================= */

:root{
  --ctg-min-readable-type:16px;
  --bg:#202226;
  --bg-deep:#191b1f;
  --surface:#25282d;
  --surface-2:#2a2d33;
  --text:#f1f1ee;
  --muted:#aeb4bf;
  --muted-2:#7f8793;
  --accent:#b8c6ff;
  --accent-soft:rgba(184,198,255,.10);
  --line:rgba(238,241,246,.14);
  --line-soft:rgba(238,241,246,.075);
  --paper:#efefeb;
  --ink:#15171a;
  --max:1240px;
  --measure:760px;
  --ease:cubic-bezier(.22,.8,.24,1);
}

*{box-sizing:border-box}

html{
  scroll-behavior:smooth;
  background:var(--bg);
}

body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:"Manrope",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

body.menu-open{overflow:hidden}

a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit}
img,svg{display:block;max-width:100%}
button{color:inherit}

::selection{
  background:var(--accent);
  color:#101216;
}

.brand-nowrap{white-space:nowrap}

.sr-only{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;
  border:0!important;
}

.section-shell{
  width:min(calc(100% - 48px),var(--max));
  margin-inline:auto;
}

.site-header{
  position:sticky;
  z-index:100;
  top:0;
  width:100%;
  min-height:82px;
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  gap:34px;
  padding:0 max(24px,calc((100vw - var(--max))/2));
  border-bottom:1px solid transparent;
  background:rgba(32,34,38,.82);
  backdrop-filter:blur(18px);
  transition:border-color .25s ease,background .25s ease;
}

.site-header.is-scrolled{
  border-color:var(--line-soft);
  background:rgba(32,34,38,.94);
}

.brand{
  display:inline-flex;
  align-items:center;
  width:118px;
}

.brand img{
  width:100%;
  height:auto;
}

.desktop-nav{
  display:flex;
  justify-content:center;
  gap:28px;
}

.desktop-nav a,
.client-access{
  position:relative;
  color:#c7cbd1;
  font-size:16px;
  line-height:1;
  letter-spacing:.095em;
  text-transform:uppercase;
  font-weight:700;
  transition:color .2s ease;
}

.desktop-nav a::after{
  content:"";
  position:absolute;
  left:0;
  right:100%;
  bottom:-8px;
  height:1px;
  background:var(--accent);
  transition:right .3s var(--ease);
}

.desktop-nav a:hover,
.desktop-nav a:focus-visible,
.desktop-nav a[aria-current="page"]{
  color:var(--text);
}

.desktop-nav a:hover::after,
.desktop-nav a:focus-visible::after,
.desktop-nav a[aria-current="page"]::after{
  right:0;
}

.header-actions{
  display:flex;
  align-items:center;
  gap:18px;
}

.client-access{
  display:inline-flex;
  align-items:center;
  gap:8px;
}

.menu-toggle{
  display:none;
  width:42px;
  height:42px;
  padding:0;
  border:0;
  background:transparent;
  cursor:pointer;
}

.menu-toggle span{
  display:block;
  width:22px;
  height:1px;
  margin:6px auto;
  background:var(--text);
}

.mobile-menu{
  position:fixed;
  inset:82px 0 auto;
  z-index:110;
  padding:24px;
  border-bottom:1px solid var(--line);
  background:rgba(25,27,31,.985);
}

.mobile-menu[hidden]{display:none}

.mobile-menu a{
  display:block;
  padding:17px 0;
  border-bottom:1px solid var(--line-soft);
  font-family:"Instrument Sans",sans-serif;
  font-size:24px;
  letter-spacing:-.03em;
}

.mobile-client-link{
  color:var(--accent);
}

.button{
  min-height:50px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  padding:0 20px;
  border:1px solid var(--line);
  font-size:16px;
  line-height:1;
  letter-spacing:.08em;
  text-transform:uppercase;
  font-weight:700;
  transition:transform .25s var(--ease),background .25s ease,border-color .25s ease,color .25s ease;
}

.button:hover,
.button:focus-visible{
  transform:translateY(-2px);
}

.button-primary{
  background:var(--text);
  color:#17191c;
  border-color:var(--text);
}

.button-primary:hover,
.button-primary:focus-visible{
  background:#fff;
  border-color:#fff;
}

.button-ghost:hover,
.button-ghost:focus-visible{
  background:rgba(255,255,255,.04);
  border-color:rgba(255,255,255,.28);
}

.eyebrow,
.kicker{
  color:#bfc5ce;
  font-size:16px;
  line-height:1.35;
  letter-spacing:.145em;
  text-transform:uppercase;
  font-weight:700;
}

.breadcrumbs{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:8px;
  padding-top:24px;
  color:var(--muted-2);
  font-size:16px;
  letter-spacing:.09em;
  text-transform:uppercase;
  font-weight:700;
}

.breadcrumbs a{
  transition:color .2s ease;
}

.breadcrumbs a:hover,
.breadcrumbs a:focus-visible{
  color:var(--text);
}

.breadcrumbs span[aria-current]{
  color:#cbd0d7;
}

.reveal{
  opacity:0;
  transform:translateY(18px);
  transition:opacity .75s var(--ease),transform .75s var(--ease);
}

.reveal.is-visible{
  opacity:1;
  transform:none;
}

.site-footer{
  display:grid;
  grid-template-columns:1fr auto auto;
  gap:50px;
  align-items:end;
  padding-top:54px;
  padding-bottom:54px;
  border-top:1px solid var(--line);
}

.footer-brand{
  display:flex;
  flex-direction:column;
  gap:7px;
}

.footer-brand strong{
  font-family:"Instrument Sans",sans-serif;
  font-size:20px;
  letter-spacing:-.025em;
  font-weight:560;
}

.footer-brand span,
.footer-location{
  color:var(--muted-2);
  font-size:16px;
  letter-spacing:.09em;
  text-transform:uppercase;
}

.footer-nav{
  display:flex;
  gap:20px;
}

.footer-nav a{
  color:var(--muted);
  font-size:16px;
  letter-spacing:.09em;
  text-transform:uppercase;
  font-weight:700;
}

.footer-nav a:hover,
.footer-nav a:focus-visible{
  color:var(--text);
}

@media(max-width:900px){
  .desktop-nav,
  .desktop-client-access{
    display:none;
  }

  .site-header{
    grid-template-columns:1fr auto;
  }

  .menu-toggle{
    display:block;
  }

  .site-footer{
    grid-template-columns:1fr;
    gap:28px;
  }

  .footer-nav{
    flex-wrap:wrap;
  }
}

@media(max-width:720px){
  .section-shell{
    width:min(calc(100% - 32px),var(--max));
  }

  .site-header{
    min-height:72px;
    padding-inline:16px;
  }

  .mobile-menu{
    top:72px;
  }

  .brand{width:106px}
}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}

  *,
  *::before,
  *::after{
    scroll-behavior:auto!important;
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
  }

  .reveal{
    opacity:1;
    transform:none;
  }
}


/* Breadcrumb navigation is an intentional 12px exception to the 16px type floor. */
.breadcrumbs,
.breadcrumbs a,
.breadcrumbs span{
  font-size:12px;
  line-height:1.4;
  letter-spacing:.08em;
}


/* =========================================================
   PROSE WRAPPING
   Prefer aesthetically complete line endings and avoid a
   single trailing word where the browser can reflow cleanly.
   ========================================================= */
p,
li,
blockquote,
figcaption{
  text-wrap:pretty;
}
