/* ============================================================================
   TRAVENZA MANAGEMENT — design system
   ----------------------------------------------------------------------------
   Single stylesheet shared by every page. Tokens live in :root; change a token
   and it propagates site-wide. No framework, no build-time CSS processing.
   Fonts are self-hosted, so the site makes zero third-party requests.
   ========================================================================== */

/* ---------- self-hosted Inter (SIL Open Font License) ---------------------- */

@font-face{
  font-family:"Inter";
  font-style:normal;
  font-weight:300 600;                 /* variable axis */
  font-display:swap;
  src:url("/assets/fonts/inter-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,
                U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,
                U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"Inter";
  font-style:normal;
  font-weight:300 600;
  font-display:swap;
  src:url("/assets/fonts/inter-latin-ext.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,
                U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,
                U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ---------- tokens -------------------------------------------------------- */

:root{
  /* base — near-black with a cold navy undertone */
  --bg:            #06070a;
  --bg-elevated:   #0c111b;
  --bg-inset:      #090d15;

  /* diplomat blue */
  --navy-900:      #0a1120;
  --navy-700:      #132241;
  --navy-500:      #1e3a6b;
  --accent:        #4d7fc4;
  --accent-soft:   rgba(77,127,196,.14);

  /* type */
  --ink:           #eef1f7;
  --ink-muted:     #9aa6ba;
  --ink-faint:     #6e7a97;   /* 4.69:1 on --bg — WCAG AA for small text */

  --line:          rgba(140,170,220,.13);
  --line-strong:   rgba(140,170,220,.28);

  --warn:          #d98b8b;

  --font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;

  --shell:  1180px;
  --shell-prose: 760px;
  --gutter: clamp(1.5rem, 5vw, 4.5rem);
  --section-y: clamp(5.5rem, 12vw, 10.5rem);
  --header-h: 76px;

  --tracking-label: .22em;
  --ease: cubic-bezier(.22,.61,.36,1);
}

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

html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }

body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font);
  font-weight:300;
  font-size:clamp(1rem,.96rem + .2vw,1.0625rem);
  line-height:1.7;
  letter-spacing:.002em;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}

img,svg{ max-width:100%; display:block; }
::selection{ background:var(--accent); color:#06070a; }
a{ color:inherit; }

:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:3px;
  border-radius:2px;
}

/* ---------- layout primitives --------------------------------------------- */

.shell{
  width:100%;
  max-width:var(--shell);
  margin-inline:auto;
  padding-inline:var(--gutter);
}
.shell--prose{ max-width:calc(var(--shell-prose) + var(--gutter) * 2); }

.section{ padding-block:var(--section-y); }
.section + .section{ border-top:1px solid var(--line); }
.section--tight{ padding-block:clamp(3.5rem,8vw,6rem); }

[id]{ scroll-margin-top:calc(var(--header-h) + 8px); }

h1,h2,h3,h4{ font-weight:300; letter-spacing:-.02em; line-height:1.14; margin:0; }

.eyebrow{
  margin:0 0 clamp(2rem,4vw,3rem);
  font-size:.6875rem;
  font-weight:500;
  letter-spacing:var(--tracking-label);
  text-transform:uppercase;
  color:var(--ink-faint);
  display:flex;
  align-items:center;
  gap:1rem;
}
.eyebrow b{ color:var(--accent); font-weight:500; }
.eyebrow::after{ content:""; flex:1; height:1px; background:var(--line); }

.h-section{ font-size:clamp(1.75rem,1.2rem + 2vw,2.75rem); letter-spacing:-.025em; }

.lede{
  font-size:clamp(1.0625rem,1rem + .4vw,1.25rem);
  line-height:1.6;
  color:var(--ink-muted);
  max-width:58ch;
}

.skip{
  position:absolute; left:-9999px; top:0; z-index:200;
  background:var(--ink); color:var(--bg);
  padding:.75rem 1.25rem; font-size:.8125rem;
}
.skip:focus{ left:1rem; top:1rem; }

/* ---------- header -------------------------------------------------------- */

.site-header{
  position:sticky; top:0; z-index:100;
  background:color-mix(in srgb, var(--bg) 82%, transparent);
  backdrop-filter:saturate(180%) blur(14px);
  -webkit-backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid transparent;
  transition:border-color .3s var(--ease);
}
@supports not (backdrop-filter: blur(1px)){ .site-header{ background:var(--bg); } }

.site-header.is-stuck{ border-bottom-color:var(--line); }
.site-header::after{
  content:""; position:absolute; left:0; right:0; bottom:-1px; height:1px;
  background:linear-gradient(90deg, transparent, var(--accent), transparent);
  opacity:0; transition:opacity .4s var(--ease);
}
.site-header.is-stuck::after{ opacity:.5; }

.site-header .shell{
  display:flex; align-items:center; justify-content:space-between;
  gap:2rem; min-height:var(--header-h);
}

.wordmark{
  font-size:.875rem; font-weight:500; letter-spacing:.16em;
  text-transform:uppercase; text-decoration:none; white-space:nowrap;
}
.wordmark span{ color:var(--ink-faint); font-weight:300; }

.site-nav{ display:flex; align-items:center; gap:clamp(1.25rem,3vw,2.5rem); }
.site-nav a{
  position:relative; padding-bottom:.35rem;
  font-size:.75rem; font-weight:400; letter-spacing:.14em; text-transform:uppercase;
  color:var(--ink-muted); text-decoration:none;
  transition:color .25s var(--ease);
}
.site-nav a:hover,.site-nav a.is-active{ color:var(--ink); }
.site-nav a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:var(--accent); transform:scaleX(0); transform-origin:left;
  transition:transform .3s var(--ease);
}
.site-nav a.is-active::after{ transform:scaleX(1); }

/* mobile drawer */
.nav-toggle{
  display:none; background:none; border:0; padding:.5rem; margin:-.5rem -.25rem -.5rem 0;
  color:var(--ink); cursor:pointer; line-height:0;
}
.nav-toggle svg{ width:22px; height:22px; }
.nav-toggle .icon-close{ display:none; }
.nav-toggle[aria-expanded="true"] .icon-open{ display:none; }
.nav-toggle[aria-expanded="true"] .icon-close{ display:block; }

@media (max-width:760px){
  .site-header .shell{ min-height:64px; }
  .wordmark span{ display:none; }
  .nav-toggle{ display:block; }
  .site-nav{
    position:absolute; left:0; right:0; top:100%;
    flex-direction:column; align-items:stretch; gap:0;
    background:var(--bg); border-bottom:1px solid var(--line);
    padding:.5rem var(--gutter) 1.5rem;
  }
  .site-nav[hidden]{ display:none; }
  .site-nav a{
    padding:1rem 0; font-size:.8125rem; border-bottom:1px solid var(--line);
  }
  .site-nav a:last-child{ border-bottom:0; }
  .site-nav a::after{ display:none; }
}

/* ---------- hero ---------------------------------------------------------- */

.hero{
  min-height:clamp(560px,88svh,900px);
  display:flex; align-items:center; position:relative; overflow:hidden;
  padding-block:clamp(5rem,14vh,9rem);
}
.hero::before{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:
    radial-gradient(115% 78% at 50% -8%, rgba(30,58,107,.55), transparent 64%),
    radial-gradient(70% 52% at 8% 104%, rgba(77,127,196,.13), transparent 62%),
    linear-gradient(180deg, transparent 62%, rgba(10,17,32,.9) 100%);
}
.hero .shell{ position:relative; }

.hero-mark{
  font-size:.6875rem; font-weight:500; letter-spacing:var(--tracking-label);
  text-transform:uppercase; color:var(--ink-faint);
  margin:0 0 clamp(2rem,5vw,3.25rem);
}
.hero h1{
  font-size:clamp(2.75rem,1.4rem + 6.4vw,7rem);
  letter-spacing:-.035em; max-width:14ch;
}
.hero h1 em{ display:block; font-style:normal; color:var(--ink-faint); }

.hero-tagline{
  margin:clamp(2rem,4vw,2.75rem) 0 0; max-width:44ch;
  font-size:clamp(1rem,.94rem + .35vw,1.25rem);
  line-height:1.55; color:var(--ink-muted); letter-spacing:.005em;
}
.hero-meta{
  margin-top:clamp(3rem,7vw,5rem); padding-top:1.75rem;
  border-top:1px solid var(--line);
  display:flex; flex-wrap:wrap; gap:.5rem clamp(1.5rem,4vw,3.5rem);
  font-size:.6875rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink-faint);
}

/* interior-page hero — shorter, same atmosphere */
.page-hero{
  position:relative; overflow:hidden;
  padding-block:clamp(4.5rem,11vw,8rem) clamp(3rem,7vw,5rem);
}
.page-hero::before{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(110% 90% at 50% -20%, rgba(30,58,107,.45), transparent 66%);
}
.page-hero .shell{ position:relative; }
.page-hero h1{
  font-size:clamp(2.25rem,1.5rem + 3.4vw,4.25rem);
  letter-spacing:-.03em; max-width:18ch;
}
.page-hero .lede{ margin-top:clamp(1.5rem,3vw,2.25rem); }

.breadcrumb{
  margin:0 0 clamp(1.75rem,4vw,2.5rem);
  font-size:.6875rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink-faint);
}
.breadcrumb ol{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:.6rem; }
.breadcrumb a{ color:var(--ink-faint); text-decoration:none; transition:color .25s var(--ease); }
.breadcrumb a:hover{ color:var(--accent); }
.breadcrumb li + li::before{ content:"/"; margin-right:.6rem; color:var(--line-strong); }
.breadcrumb [aria-current]{ color:var(--ink-muted); }

/* ---------- prose --------------------------------------------------------- */

.prose p{ margin:0 0 1.5rem; color:var(--ink-muted); max-width:66ch; }
.prose p:last-child{ margin-bottom:0; }
.prose strong{ color:var(--ink); font-weight:400; }
.prose h2{
  font-size:clamp(1.25rem,1.1rem + .7vw,1.5rem);
  margin:clamp(2.5rem,5vw,3.5rem) 0 1rem; color:var(--ink);
}
.prose h3{ font-size:1.0625rem; margin:2rem 0 .75rem; color:var(--ink); }
.prose ul{ margin:0 0 1.5rem; padding-left:1.1rem; color:var(--ink-muted); max-width:66ch; }
.prose li{ margin-bottom:.5rem; }
.prose a{ color:var(--accent); text-decoration:underline; text-underline-offset:3px; }

.two-col{
  display:grid;
  grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);
  gap:clamp(2.5rem,6vw,6rem);
  align-items:start;
}
@media (max-width:860px){ .two-col{ grid-template-columns:1fr; } }

/* ---------- pillars / feature grid ---------------------------------------- */

.pillars{
  list-style:none; margin:clamp(2.5rem,5vw,3.5rem) 0 0; padding:0;
  display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:1px; background:var(--line); border:1px solid var(--line);
}
.pillars li{
  background:linear-gradient(180deg, rgba(19,34,65,.32), transparent 70%), var(--bg);
  padding:clamp(1.5rem,3vw,2rem);
}
.pillars b{
  display:block; font-size:.6875rem; font-weight:500;
  letter-spacing:var(--tracking-label); text-transform:uppercase;
  color:var(--ink-faint); margin-bottom:.75rem;
}
.pillars p{ margin:0; font-size:.9375rem; line-height:1.6; color:var(--ink); }

/* ---------- roster -------------------------------------------------------- */

.roster-head{
  display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between;
  gap:1rem; margin-bottom:clamp(2.5rem,5vw,3.5rem);
}
.roster-count{
  font-size:.6875rem; letter-spacing:var(--tracking-label);
  text-transform:uppercase; color:var(--ink-faint);
}
.roster{
  display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,290px),1fr));
  gap:1px; background:var(--line); border:1px solid var(--line);
}
.artist{
  position:relative; background:var(--bg);
  padding:clamp(1.75rem,3.4vw,2.5rem);
  min-height:230px; display:flex; flex-direction:column;
  text-decoration:none; color:inherit; isolation:isolate;
  transition:background .35s var(--ease);
}
.artist::after{
  content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(158deg, rgba(77,127,196,.13), transparent 58%);
  opacity:0; transition:opacity .35s var(--ease);
}
.artist:hover,.artist:focus-visible{ background:var(--bg-elevated); }
.artist:hover::after,.artist:focus-visible::after{ opacity:1; }

.artist-index{
  font-size:.6875rem; font-weight:500; letter-spacing:.16em;
  color:var(--ink-faint); font-variant-numeric:tabular-nums;
}
.artist-name{
  margin:auto 0 .875rem; padding-top:2.5rem;
  font-size:clamp(1.5rem,1.2rem + 1vw,1.875rem);
  font-weight:300; letter-spacing:-.02em;
}
.artist-tag{
  font-size:.6875rem; font-weight:400; letter-spacing:.13em;
  text-transform:uppercase; color:var(--ink-faint); margin-bottom:1.75rem;
}
.artist-link{
  display:inline-flex; align-items:center; gap:.625rem;
  font-size:.75rem; font-weight:500; letter-spacing:.12em; text-transform:uppercase;
  color:var(--ink-muted);
  transition:color .25s var(--ease), gap .25s var(--ease);
}
.artist:hover .artist-link,.artist:focus-visible .artist-link{ color:var(--ink); gap:.9rem; }
.artist-link svg{ width:13px; height:13px; flex:none; }

/* ---------- service cards ------------------------------------------------- */

.services{ display:grid; gap:1px; background:var(--line); border:1px solid var(--line); }

.service{
  background:var(--bg);
  padding:clamp(1.75rem,4vw,3rem);
  display:grid;
  grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);
  gap:clamp(1.5rem,4vw,4rem);
}
@media (max-width:860px){ .service{ grid-template-columns:1fr; gap:1.5rem; } }

.service--highlight{
  background:linear-gradient(180deg, rgba(19,34,65,.4), transparent 62%), var(--bg);
}

.service-index{
  font-size:.6875rem; font-weight:500; letter-spacing:.16em;
  color:var(--accent); font-variant-numeric:tabular-nums;
  margin-bottom:1rem;
}
.service-title{
  font-size:clamp(1.375rem,1.15rem + 1vw,1.75rem);
  letter-spacing:-.02em; margin-bottom:1rem;
}
.service-summary{ margin:0; color:var(--ink-muted); font-size:.9375rem; line-height:1.65; }

.service-body > * + *{ margin-top:1.75rem; }

.service-list{ list-style:none; margin:0; padding:0; }
.service-list li{
  position:relative; padding-left:1.35rem; margin-bottom:.6rem;
  color:var(--ink); font-size:.9375rem;
}
.service-list li::before{
  content:""; position:absolute; left:0; top:.65em;
  width:5px; height:5px; background:var(--accent); border-radius:50%;
}

.service-detail dt{
  font-size:.6875rem; font-weight:500; letter-spacing:var(--tracking-label);
  text-transform:uppercase; color:var(--ink-faint); margin-bottom:.5rem;
}
.service-detail dd{
  margin:0 0 1.5rem; color:var(--ink-muted); font-size:.9375rem; line-height:1.65;
}
.service-detail dd:last-child{ margin-bottom:0; }

.scope-note{
  border-left:2px solid var(--line-strong);
  padding:.25rem 0 .25rem 1.25rem;
  color:var(--ink-muted); font-size:.875rem; line-height:1.65;
}
.scope-note strong{ color:var(--ink); font-weight:500; }

/* ---------- company / founder --------------------------------------------- */

.person{
  border:1px solid var(--line);
  background:linear-gradient(180deg, rgba(19,34,65,.3), transparent 70%), var(--bg);
  padding:clamp(1.75rem,4vw,2.75rem);
  max-width:520px;
}
.person-role{
  font-size:.6875rem; font-weight:500; letter-spacing:var(--tracking-label);
  text-transform:uppercase; color:var(--ink-faint); margin:0 0 .875rem;
}
.person-name{ font-size:clamp(1.5rem,1.25rem + 1vw,2rem); letter-spacing:-.02em; }
.person-meta{ margin:1.25rem 0 0; color:var(--ink-muted); font-size:.9375rem; }

.facts{ margin:0; }
.facts div{
  display:grid; grid-template-columns:minmax(0,180px) minmax(0,1fr);
  gap:1rem clamp(1rem,3vw,2.5rem);
  padding:1.125rem 0; border-top:1px solid var(--line);
}
.facts div:last-child{ border-bottom:1px solid var(--line); }
@media (max-width:600px){
  .facts div{ grid-template-columns:1fr; gap:.4rem; }
}
.facts dt{
  font-size:.6875rem; font-weight:500; letter-spacing:var(--tracking-label);
  text-transform:uppercase; color:var(--ink-faint);
}
.facts dd{ margin:0; color:var(--ink); }
.facts dd a{ color:var(--ink); text-decoration:none; border-bottom:1px solid var(--line-strong); }
.facts dd a:hover{ color:var(--accent); border-bottom-color:var(--accent); }

.notice{
  margin-top:clamp(2.5rem,5vw,3.5rem);
  border:1px solid var(--line);
  border-left:2px solid var(--accent);
  background:var(--bg-inset);
  padding:clamp(1.25rem,3vw,1.75rem);
  color:var(--ink-muted); font-size:.9375rem; line-height:1.65;
}
.notice strong{ color:var(--ink); font-weight:500; }

/* ---------- contact ------------------------------------------------------- */

.contact-copy h2{ max-width:15ch; margin-bottom:1.5rem; }
.contact-copy p{ color:var(--ink-muted); max-width:48ch; margin:0 0 2.5rem; }

.contact-detail{ border-top:1px solid var(--line); padding-top:1.25rem; margin-bottom:1.75rem; }
.contact-detail dt{
  font-size:.6875rem; font-weight:500; letter-spacing:var(--tracking-label);
  text-transform:uppercase; color:var(--ink-faint); margin-bottom:.6rem;
}
.contact-detail dd{ margin:0; }

.mail-link{
  font-size:clamp(1.0625rem,.95rem + .5vw,1.375rem);
  text-decoration:none; letter-spacing:-.01em;
  border-bottom:1px solid var(--line-strong); padding-bottom:.2rem;
  transition:border-color .25s var(--ease), color .25s var(--ease);
  word-break:break-word;
}
.mail-link:hover{ border-bottom-color:var(--accent); color:var(--accent); }

/* ---------- form ---------------------------------------------------------- */

.form{
  background:var(--bg-inset); border:1px solid var(--line);
  padding:clamp(1.75rem,4vw,2.75rem);
}
.field{ margin-bottom:1.75rem; }
.field label,.field legend{
  display:block; font-size:.6875rem; font-weight:500;
  letter-spacing:var(--tracking-label); text-transform:uppercase;
  color:var(--ink-faint); margin-bottom:.75rem; padding:0;
}
.field .optional{ text-transform:none; letter-spacing:0; color:var(--ink-faint); opacity:.8; }

.field input,.field textarea,.field select{
  width:100%; background:transparent; border:0;
  border-bottom:1px solid var(--line-strong);
  color:var(--ink); font-family:inherit; font-size:1rem; font-weight:300;
  line-height:1.6; padding:.6rem 0; border-radius:0;
  transition:border-color .25s var(--ease);
  -webkit-appearance:none; appearance:none;
}
.field textarea{ resize:vertical; min-height:120px; }

.field select{
  cursor:pointer; padding-right:1.75rem;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%239aa6ba' stroke-width='1.4'%3E%3Cpath d='M4 6.5L8 10.5l4-4'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right .1rem center; background-size:15px;
}
.field select option{ background:var(--bg-elevated); color:var(--ink); }

.field input::placeholder,.field textarea::placeholder{ color:var(--ink-faint); opacity:.65; }
.field input:focus,.field textarea:focus,.field select:focus{ outline:none; border-bottom-color:var(--accent); }
.field input:focus-visible,.field textarea:focus-visible,.field select:focus-visible{
  outline:2px solid var(--accent); outline-offset:3px;
}
.field input[aria-invalid="true"],.field textarea[aria-invalid="true"],.field select[aria-invalid="true"]{
  border-bottom-color:var(--warn);
}

.field-error{
  display:block; margin-top:.5rem;
  font-size:.75rem; color:var(--warn); letter-spacing:.02em;
}
.field-error:empty{ display:none; }

/* checkbox rows */
.check{
  display:grid; grid-template-columns:auto minmax(0,1fr);
  gap:.875rem; align-items:start; margin-bottom:1.75rem;
}
.check input[type="checkbox"]{
  width:18px; height:18px; margin:.15rem 0 0; flex:none;
  -webkit-appearance:none; appearance:none;
  border:1px solid var(--line-strong); background:transparent;
  border-radius:2px; cursor:pointer;
  transition:background .2s var(--ease), border-color .2s var(--ease);
}
.check input[type="checkbox"]:checked{
  background:var(--navy-500) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23eef1f7' stroke-width='2'%3E%3Cpath d='M3.5 8.5l3 3 6-6'/%3E%3C/svg%3E") center/13px no-repeat;
  border-color:var(--navy-500);
}
.check input[type="checkbox"][aria-invalid="true"]{ border-color:var(--warn); }
.check label{
  margin:0; font-size:.8125rem; line-height:1.6; text-transform:none;
  letter-spacing:.01em; color:var(--ink-muted); font-weight:300;
}
.check label a{ color:var(--accent); text-decoration:underline; text-underline-offset:3px; }

/* conditional groups */
.conditional[hidden]{ display:none !important; }

.reason-note{
  border-left:2px solid var(--accent);
  background:var(--accent-soft);
  padding:.875rem 1.125rem;
  margin:0 0 1.75rem;
  font-size:.8125rem; line-height:1.6; color:var(--ink-muted);
}
.reason-note:empty{ display:none; }

/* honeypot */
.hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

.btn{
  display:inline-flex; align-items:center; gap:.75rem;
  background:var(--navy-500); color:var(--ink); border:1px solid var(--navy-500);
  font-family:inherit; font-size:.75rem; font-weight:500;
  letter-spacing:.14em; text-transform:uppercase;
  padding:1rem 2rem; cursor:pointer; border-radius:0; text-decoration:none;
  transition:background .25s var(--ease), color .25s var(--ease), border-color .25s var(--ease);
}
.btn:hover{ background:transparent; color:var(--accent); border-color:var(--accent); }
.btn:disabled{ opacity:.55; cursor:default; }
.btn:disabled:hover{ background:var(--navy-500); color:var(--ink); border-color:var(--navy-500); }

.btn--ghost{ background:transparent; color:var(--ink); border-color:var(--line-strong); }
.btn--ghost:hover{ border-color:var(--accent); color:var(--accent); }

.form-note{ margin:1.25rem 0 0; font-size:.75rem; line-height:1.6; color:var(--ink-faint); }
.form-note[data-state="ok"]{ color:var(--accent); }
.form-note[data-state="error"]{ color:var(--warn); }

.privacy-note{
  margin:1.5rem 0 0; padding-top:1.25rem; border-top:1px solid var(--line);
  font-size:.75rem; line-height:1.65; color:var(--ink-faint);
}
.privacy-note a{ color:var(--ink-muted); text-decoration:underline; text-underline-offset:3px; }
.privacy-note a:hover{ color:var(--accent); }

/* ---------- footer -------------------------------------------------------- */

.site-footer{ border-top:1px solid var(--line); padding-block:clamp(3rem,6vw,4.5rem) 2.5rem; }

.footer-grid{
  display:grid;
  grid-template-columns:minmax(0,1.4fr) repeat(2, minmax(0,1fr));
  gap:clamp(2rem,5vw,4rem);
  padding-bottom:clamp(2.5rem,5vw,3.5rem);
}
@media (max-width:760px){ .footer-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .footer-grid{ grid-template-columns:1fr; gap:2.25rem; } }

.footer-brand .wordmark{ display:inline-block; margin-bottom:1.25rem; }
.footer-address{
  font-style:normal; color:var(--ink-muted);
  font-size:.875rem; line-height:1.8;
}
.footer-address a{ color:var(--ink-muted); text-decoration:none; border-bottom:1px solid var(--line); }
.footer-address a:hover{ color:var(--accent); border-bottom-color:var(--accent); }

.footer-col h2{
  font-size:.6875rem; font-weight:500; letter-spacing:var(--tracking-label);
  text-transform:uppercase; color:var(--ink-faint); margin-bottom:1.125rem;
}
.footer-col ul{ list-style:none; margin:0; padding:0; }
.footer-col li{ margin-bottom:.7rem; }
.footer-col a{
  color:var(--ink-muted); text-decoration:none; font-size:.875rem;
  transition:color .25s var(--ease);
}
.footer-col a:hover{ color:var(--accent); }

.footer-bottom{
  border-top:1px solid var(--line); padding-top:1.75rem;
  display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between;
  gap:.75rem 2rem; font-size:.75rem; color:var(--ink-faint);
}
.footer-bottom p{ margin:0; }

/* ---------- scroll reveal ------------------------------------------------- */

.js .reveal{
  opacity:0; transform:translateY(18px);
  transition:opacity .8s var(--ease), transform .8s var(--ease);
}
.js .reveal.is-in{ opacity:1; transform:none; }

@media (prefers-reduced-motion: reduce){
  .js .reveal{ opacity:1; transform:none; transition:none; }
  *{ animation-duration:.001ms !important; transition-duration:.001ms !important; }
}

/* ---------- print --------------------------------------------------------- */

@media print{
  :root{ --bg:#fff; --ink:#0a1120; --ink-muted:#333; --ink-faint:#666; --line:#ddd; --accent:#1e3a6b; }
  .site-header,.form,.hero::before,.page-hero::before,.nav-toggle{ display:none; }
  body{ background:#fff; color:#000; }
  .section + .section{ border-top:1px solid #ddd; }
}
