/* AHS website prototype (V2-S13). The app's craftsman tokens: paper, navy, brass; Bitter titles, Barlow body.
   Text pairs are 7:1 or better (tests/test_web2.py checks the tokens); targets are 48 px, primary buttons 56 px.
   Phone < 600 px, tablet 600-1199, laptop 1200+. Nothing loops or bounces; motion is off for prefers-reduced-motion. */
:root{
  --paper:#f6f3ec; --card:#fffdf9; --soft:#efe9dc; --line:#d9d1c2; --edge:#7d7461;
  --ink:#1b2130; --muted:#3d4452; --navy:#15213f; --brand:#1c2a66;
  --brass:#b8862b; --brass-soft:#f3e6c9; --brass-ink:#5e440f; --brass-lite:#e0b45c; --brass-btn:#d8a84a; --on-navy:#cfd5e3;
  --alert:#9b1c13; --alert-bg:#fdecec; --red:#e63a21;
  --font-title:"Bitter","Barlow Condensed",Georgia,serif; --font-head:"Barlow Condensed","Barlow",Arial,sans-serif;
  --font-body:"Barlow",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  --tap:48px; --tap-main:56px; --r:10px; --wrap:1180px; --ease:cubic-bezier(.2,0,0,1);
}
*{box-sizing:border-box}
html{color-scheme:light;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 18px/1.6 var(--font-body);font-variant-numeric:tabular-nums}
img{max-width:100%;height:auto}
a{color:var(--brand);text-decoration-thickness:2px;text-underline-offset:3px}
a:hover{color:var(--navy)}
:focus-visible{outline:3px solid var(--brass-ink);outline-offset:3px}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 20px}
.skip{position:absolute;left:-9999px;top:8px;z-index:50;background:var(--navy);color:#fff;padding:12px 16px;border-radius:8px}
.skip:focus{left:12px}
h1,h2,h3{font-family:var(--font-title);color:var(--navy);line-height:1.18;margin:0 0 .5em;text-wrap:balance}
h1{font-size:46px;font-weight:800}
h2{font-size:32px;font-weight:800;padding-bottom:10px;border-bottom:3px solid var(--brass-soft)}
h3{font-size:22px;font-weight:700}
p{margin:0 0 1em}
ul{padding-left:1.2em}
li{margin:0 0 .4em}
.eyebrow{display:block;font:700 15px/1.2 var(--font-head);letter-spacing:.14em;text-transform:uppercase;color:var(--brass-ink);margin:0 0 10px}
.lead{font-size:21px;line-height:1.55;color:var(--ink)}
.muted{color:var(--muted)}
mark.tbc{background:var(--brass-soft);color:var(--brass-ink);font-weight:700;padding:0 4px;border-radius:4px}

/* prototype note, utility bar, header */
.proto{background:var(--brass-soft);color:var(--ink);font-size:15px;border-bottom:2px solid var(--brass)}
.proto .wrap{padding-top:8px;padding-bottom:8px}
.util{background:var(--navy);color:var(--on-navy);font-size:15px}
.util .wrap{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:44px}
.util a{color:#fff;text-decoration:none;display:inline-flex;align-items:center;min-height:var(--tap)}
.util a b{color:var(--brass-lite);margin-left:6px}
header.site{background:var(--card);border-bottom:3px solid var(--brass);position:sticky;top:0;z-index:20}
header.site .wrap{display:flex;align-items:center;gap:18px;min-height:76px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--navy);font:700 17px/1.1 var(--font-head);letter-spacing:.02em;min-height:var(--tap)}
.brand img{width:64px;height:auto}
nav ul{list-style:none;margin:0;padding:0}
nav a{display:flex;align-items:center;min-height:var(--tap);padding:0 12px;color:var(--ink);font-weight:600;text-decoration:none;border-radius:8px}
nav a:hover{background:var(--soft);color:var(--navy)}
nav a[aria-current=page]{color:var(--navy);box-shadow:inset 0 -3px 0 var(--brass)}
.head-cta{display:flex;gap:10px;margin-left:auto}
.menu{display:none;margin-left:auto;align-items:center;gap:10px;min-height:var(--tap);padding:0 16px;border:2px solid var(--navy);border-radius:var(--r);background:var(--card);color:var(--navy);font:700 17px var(--font-body);cursor:pointer}
.menu .bars,.menu .bars::before,.menu .bars::after{display:block;width:20px;height:2px;background:currentColor;position:relative}
.menu .bars::before,.menu .bars::after{content:"";position:absolute;left:0}
.menu .bars::before{top:-6px}.menu .bars::after{top:6px}
@media (min-width:1200px){
  nav{flex:1}
  nav>ul{display:flex;gap:2px;justify-content:center}
  nav .has-sub{position:relative}
  nav .sub{display:none;position:absolute;left:0;top:100%;min-width:300px;background:var(--card);border:2px solid var(--line);border-top:3px solid var(--brass);border-radius:0 0 var(--r) var(--r);padding:8px;box-shadow:0 14px 30px -12px rgba(21,33,63,.35)}
  nav .has-sub:hover .sub,nav .has-sub:focus-within .sub{display:block}
  .head-cta{margin-left:0}
}
@media (max-width:1199px){
  .menu{display:inline-flex}
  .head-cta{margin-left:0}
  nav{display:none;position:absolute;left:0;right:0;top:100%;background:var(--card);border-bottom:3px solid var(--brass);box-shadow:0 18px 30px -18px rgba(21,33,63,.4)}
  nav.open{display:block}
  nav>ul{max-width:var(--wrap);margin:0 auto;padding:8px 20px 16px;display:grid;gap:2px}
  nav .sub{list-style:none;padding:0 0 0 16px;border-left:3px solid var(--brass-soft);margin:0 0 6px 12px}
  nav a{font-size:19px}
}
@media (max-width:599px){
  .util span{display:none}
  .util .wrap{justify-content:center}
  header.site .wrap{gap:10px;min-height:68px}
  .brand span{display:none}
  .head-cta .btn:not(.call-btn){display:none}
  .head-cta .call-btn{padding:0 12px;font-size:16px}
  h1{font-size:34px}
  h2{font-size:27px}
  .lead{font-size:19px}
}
@media (min-width:600px) and (max-width:1199px){.head-cta .call-btn{display:none}}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--tap-main);padding:0 22px;border-radius:var(--r);background:var(--navy);color:#fff;font:700 18px/1.15 var(--font-body);text-decoration:none;border:2px solid var(--navy);box-shadow:inset 0 -3px 0 var(--brass);cursor:pointer;text-align:center}
.btn:hover{background:var(--brand);color:#fff}
.btn.ghost{background:transparent;color:var(--navy);box-shadow:none}
.btn.ghost:hover{background:var(--soft);color:var(--navy)}
.btn.alert{background:var(--alert);border-color:var(--alert);box-shadow:none}
.btn.brass{background:var(--brass-btn);border-color:var(--brass-btn);color:var(--navy);box-shadow:none}
.btn.small{min-height:var(--tap);font-size:17px;padding:0 16px}
.actions{display:flex;flex-wrap:wrap;gap:12px;margin:22px 0 0}
@media (max-width:599px){.actions .btn{flex:1 1 100%}}

/* sections */
section{padding:56px 0}
section.alt{background:var(--card);border-top:2px solid var(--line);border-bottom:2px solid var(--line)}
section.navy{background:var(--navy);color:#fff}
section.navy h2{color:#fff;border-color:rgba(224,180,92,.45)}
section.navy .eyebrow{color:var(--brass-lite)}
section.navy p{color:var(--on-navy)}
section.navy a:not(.btn){color:#fff}
.page-head{padding:44px 0 36px;background:var(--card);border-bottom:2px solid var(--line)}
.page-head .lead{max-width:780px}
.crumbs{font-size:16px;margin:0 0 12px}
.crumbs a{display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap);min-width:var(--tap)}   /* a short "Home" in a narrow fallback font is still a 48 px target */
.two{display:grid;grid-template-columns:1fr;gap:32px;align-items:start}
.three,.cards{display:grid;grid-template-columns:1fr;gap:20px}
@media (min-width:600px){.cards{grid-template-columns:1fr 1fr}.three{grid-template-columns:1fr 1fr}}
@media (min-width:1200px){.two{grid-template-columns:1.1fr .9fr;gap:48px}.three{grid-template-columns:repeat(3,1fr)}.cards.c3{grid-template-columns:repeat(3,1fr)}}
.measure{max-width:780px}

/* hero */
.hero{padding:48px 0 56px;background:var(--card);border-bottom:2px solid var(--line)}
.hero h1{font-size:50px}
@media (max-width:599px){.hero{padding:28px 0 36px}.hero h1{font-size:34px}}
.split{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:26px}
.split a{display:block;padding:16px 18px;border:2px solid var(--navy);border-radius:var(--r);text-decoration:none;color:var(--navy);background:var(--card);min-height:var(--tap-main)}
.split a b{display:block;font:700 20px/1.2 var(--font-title)}
.split a span{color:var(--muted);font-size:16px}
.split a:hover{background:var(--soft)}
@media (max-width:599px){.split{grid-template-columns:1fr}}

/* cards */
.card{background:var(--card);border:2px solid var(--line);border-left:6px solid var(--brass);border-radius:var(--r);padding:22px;display:flex;flex-direction:column;gap:8px}
.card h3{margin:0}
.card p{margin:0;color:var(--muted)}
.card .more{margin-top:auto;padding-top:8px;font-weight:700;display:inline-flex;align-items:center;min-height:var(--tap)}
a.card{text-decoration:none;color:inherit}
a.card:hover{border-color:var(--edge);border-left-color:var(--brass)}
.checks{list-style:none;padding:0;margin:0 0 1em;display:grid;gap:10px}
.checks li{position:relative;padding-left:34px;margin:0}
.checks li::before{content:"";position:absolute;left:0;top:.35em;width:20px;height:20px;border-radius:4px;background:var(--brass-soft);border:2px solid var(--brass)}
.checks li::after{content:"";position:absolute;left:7px;top:.55em;width:6px;height:11px;border:solid var(--navy);border-width:0 3px 3px 0;transform:rotate(45deg)}

/* numbers */
.figs{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin:0;padding:0;list-style:none}
@media (min-width:1200px){.figs{grid-template-columns:repeat(4,1fr)}}
.figs li{margin:0;padding:18px;border-top:4px solid var(--brass);background:rgba(255,255,255,.04)}
.figs b{display:block;font:700 36px/1.05 var(--font-head);color:#fff}
.figs span{color:var(--on-navy);font-size:16px}
.metrics{list-style:none;margin:22px 0 0;padding:0;display:grid;grid-template-columns:1fr;gap:12px}
@media (min-width:600px){.metrics{grid-template-columns:repeat(3,1fr)}}
.metrics li{margin:0;background:var(--navy);color:var(--on-navy);border-radius:var(--r);padding:18px;box-shadow:inset 0 -4px 0 var(--brass);font-size:16px}
.metrics b{display:block;font:700 32px/1.1 var(--font-head);color:#fff;margin-bottom:4px}

/* photo placeholders: real crew at work only, never parts on a bench */
.ph{position:relative;display:flex;align-items:flex-end;aspect-ratio:4/3;border:2px dashed var(--edge);border-radius:var(--r);
  background:repeating-linear-gradient(135deg,var(--soft) 0 14px,var(--brass-soft) 14px 28px);overflow:hidden;margin:0}
.ph.wide{aspect-ratio:16/9}
.ph figcaption{margin:12px;padding:10px 12px;background:var(--card);border-radius:8px;font-size:15px;line-height:1.4;color:var(--ink);border:1px solid var(--line)}
.ph figcaption b{display:block;font:700 13px/1.2 var(--font-head);letter-spacing:.12em;text-transform:uppercase;color:var(--brass-ink);margin-bottom:2px}

/* emergency */
.alertbox{background:var(--alert-bg);border:2px solid var(--alert);border-left-width:8px;border-radius:var(--r);padding:18px 20px;color:var(--ink)}
.alertbox b{color:var(--alert)}
.alertbox a{color:var(--alert);font-weight:700;display:inline-flex;align-items:center;min-height:var(--tap)}

/* people */
.people{display:grid;grid-template-columns:1fr;gap:20px;list-style:none;padding:0;margin:0}
@media (min-width:600px){.people{grid-template-columns:1fr 1fr}}
@media (min-width:1200px){.people{grid-template-columns:repeat(4,1fr)}}
.people li{margin:0;background:var(--card);border:2px solid var(--line);border-radius:var(--r);overflow:hidden}
.people .ph{border:0;border-bottom:2px dashed var(--edge);border-radius:0;aspect-ratio:1}
.people .who{padding:14px 16px}
.people .who b{display:block;font:700 20px/1.2 var(--font-title);color:var(--navy)}
.people .who span{color:var(--muted);font-size:16px}

/* licenses */
dl.creds{margin:0;display:grid;gap:14px}
dl.creds div{background:var(--card);border:2px solid var(--line);border-radius:var(--r);padding:16px 18px}
dl.creds dt{font:700 20px/1.25 var(--font-title);color:var(--navy);margin:0 0 4px}
dl.creds dd{margin:0;color:var(--muted)}

/* projects index and filter */
.filters{display:grid;gap:12px;margin:0 0 24px}
.filters fieldset{border:0;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.filters legend{font:700 15px/1.2 var(--font-head);letter-spacing:.12em;text-transform:uppercase;color:var(--brass-ink);margin:0 0 6px;padding:0;float:left;width:100%}
.chip{min-height:var(--tap);padding:0 16px;border:2px solid var(--navy);border-radius:999px;background:var(--card);color:var(--navy);font:600 17px var(--font-body);cursor:pointer}
.chip[aria-pressed=true]{background:var(--navy);color:#fff;box-shadow:inset 0 -3px 0 var(--brass)}
.count{font-size:16px;color:var(--muted);margin:0 0 12px}
.case-card{display:grid;grid-template-columns:1fr;background:var(--card);border:2px solid var(--line);border-radius:var(--r);overflow:hidden;text-decoration:none;color:inherit}
.case-card .ph{border:0;border-bottom:2px dashed var(--edge);border-radius:0;aspect-ratio:16/9}
.case-card .body{padding:18px 20px;display:flex;flex-direction:column;gap:8px}
.case-card h3{margin:0}
.case-card .tags{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.case-card .tags li{margin:0;font-size:14px;font-weight:700;padding:3px 10px;border-radius:999px;background:var(--soft);color:var(--ink)}
.case-card .result{font-weight:700;color:var(--navy)}
.case-card:hover{border-color:var(--edge)}
.case-card[hidden]{display:none}

/* case study page */
.case h2{font-size:28px;margin-top:40px}
.case .story{max-width:780px}
blockquote.quote{margin:28px 0;padding:22px 24px;background:var(--navy);color:#fff;border-left:6px solid var(--brass);border-radius:var(--r);font:700 22px/1.45 var(--font-title)}
blockquote.quote p{margin:0 0 8px;color:#fff}
blockquote.quote footer{font:500 16px var(--font-body);color:var(--on-navy)}
.factbox{background:var(--card);border:2px solid var(--line);border-top:4px solid var(--brass);border-radius:var(--r);padding:20px}
.factbox dl{margin:0;display:grid;gap:10px}
.factbox dt{font:700 14px/1.2 var(--font-head);letter-spacing:.12em;text-transform:uppercase;color:var(--brass-ink)}
.factbox dd{margin:0 0 4px;font-weight:600}
.sources{font-size:16px;color:var(--muted)}

/* footer */
footer.site{background:var(--navy);color:var(--on-navy);padding:44px 0 28px;border-top:4px solid var(--brass);font-size:17px}
footer.site .wrap{display:grid;grid-template-columns:1fr;gap:24px}
@media (min-width:600px){footer.site .wrap{grid-template-columns:1.4fr 1fr 1fr}}
footer.site a{color:#fff;display:inline-flex;align-items:center;min-height:var(--tap)}
footer.site ul{list-style:none;padding:0;margin:0}
footer.site li{margin:0}
.f-name{font:700 22px/1.2 var(--font-title);color:#fff}
.f-head{font:700 15px/1.2 var(--font-head);letter-spacing:.14em;text-transform:uppercase;color:var(--brass-lite);margin-bottom:4px}
.f-legal{grid-column:1/-1;border-top:1px solid rgba(207,213,227,.3);padding-top:16px;font-size:15px;margin:0}
footer.site mark.tbc{background:var(--brass-btn);color:var(--navy)}

@media (prefers-reduced-motion:no-preference){a,.btn,.chip,.card{transition:background-color .15s var(--ease),border-color .15s var(--ease),color .15s var(--ease)}}
@media print{.proto,.util,header.site,.menu,footer.site{display:none}body{background:#fff}}
.mt{margin-top:24px}
.call-btn .short{display:none}
@media (max-width:599px){.call-btn .long{display:none}.call-btn .short{display:inline}.head-cta .call-btn{white-space:nowrap}}
