/* ---------- Self-hosted fonts (no calls to Google = GDPR-safe) ---------- */
@font-face{font-family:"Archivo";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/archivo-latin-400-normal.woff2) format("woff2");}
@font-face{font-family:"Archivo";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/archivo-latin-500-normal.woff2) format("woff2");}
@font-face{font-family:"Archivo";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/archivo-latin-600-normal.woff2) format("woff2");}
@font-face{font-family:"Archivo";font-style:normal;font-weight:700;font-display:swap;src:url(fonts/archivo-latin-700-normal.woff2) format("woff2");}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-sans-latin-400-normal.woff2) format("woff2");}
@font-face{font-family:"IBM Plex Sans";font-style:italic;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-sans-latin-400-italic.woff2) format("woff2");}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibm-plex-sans-latin-500-normal.woff2) format("woff2");}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/ibm-plex-sans-latin-600-normal.woff2) format("woff2");}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:700;font-display:swap;src:url(fonts/ibm-plex-sans-latin-700-normal.woff2) format("woff2");}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2");}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/ibm-plex-mono-latin-600-normal.woff2) format("woff2");}

/* ---------- Tokens ---------- */
:root{
  color-scheme:light;
  --bg:#F2F5F9; --surface:#FFFFFF; --surface-alt:#F2F5F9;
  --border:#D8E0E8; --border-strong:#B9C6D3;
  --ink:#141B24; --ink-muted:#4B5D74;
  --brand-navy:#0F3C67; --brand-navy-strong:#0A2A47; --brand-slate:#6E7F99;
  --accent:#0094C3; --accent-strong:#00728F; --on-accent:#FFFFFF; --on-navy:#FFFFFF;
  --band-bg:#0A2A47; --band-text:#FFFFFF;
  --logo-mark-1:#0094C3; --logo-mark-2:#0F3C67; --logo-acsys:#0F3C67; --logo-pharma:#6E7F99;
  --warn-bg:#FBF2DE; --warn-border:#D9AF56; --warn-ink:#6B4E10;
  --shadow:0 1px 2px rgba(15,60,103,.06), 0 8px 24px -12px rgba(15,60,103,.18);
  --font-display:"Archivo","Helvetica Neue",Arial,sans-serif;
  --font-body:"IBM Plex Sans",-apple-system,"Segoe UI",sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto;} *{animation-duration:.001ms !important; transition-duration:.001ms !important;} }

body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:var(--font-body); font-size:16px; line-height:1.6;
  padding-left:max(16px, env(safe-area-inset-left));
  padding-right:max(16px, env(safe-area-inset-right));
}
img{max-width:100%;}
[hidden]{display:none !important;}
a{color:var(--accent-strong);}
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible{
  outline:2px solid var(--accent); outline-offset:2px; border-radius:4px;
}
.skip-link{position:absolute; left:-999px; top:0; background:var(--surface); padding:.6em 1em; z-index:100;}
.skip-link:focus{left:16px;}
.visually-hidden{position:absolute !important; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap;}
h1,h2,h3{font-family:var(--font-display); color:var(--brand-navy); font-weight:600; text-wrap:balance; margin:0;}
p{margin:0;}
ul{margin:0; padding:0; list-style:none;}

.wrap{max-width:1120px; margin-inline:auto;}
.eyebrow{
  font-family:var(--font-mono); font-size:.72rem; letter-spacing:.12em; text-transform:uppercase;
  color:var(--accent-strong); font-weight:600; display:flex; align-items:center; gap:.55em;
}
.mk{display:inline-block; width:8px; height:8px; border-radius:1.5px; background:var(--accent); flex:none;}

.logo{display:inline-flex; align-items:center; gap:.65em; text-decoration:none;}
.logo .brandmark{display:inline-flex; flex-direction:column; gap:4px; width:11px; flex:none;}
.logo .brandmark i{display:block; width:11px; height:11px; border-radius:1.5px;}
.logo .brandmark i:first-child{background:var(--logo-mark-1);}
.logo .brandmark i:not(:first-child){background:var(--logo-mark-2);}
.logo .word{font-family:var(--font-display); font-size:1.32rem; letter-spacing:-0.025em; white-space:nowrap;}
.logo .word b{color:var(--logo-acsys); font-weight:600;}
.logo .word span{color:var(--logo-pharma); font-weight:400;}

section{padding-block:clamp(2.75rem, 6vw, 5.5rem);}
section[id]{scroll-margin-top:4.5rem;}
.alt{background:var(--surface-alt);}
.lede{max-width:62ch; color:var(--ink-muted); font-size:1.08rem;}

.btn{
  display:inline-flex; align-items:center; gap:.5em; font-family:var(--font-body); font-weight:600;
  font-size:.95rem; padding:.85em 1.4em; border-radius:3px; border:1.5px solid transparent;
  cursor:pointer; text-decoration:none; transition:transform .12s ease, background .15s ease, border-color .15s ease;
}
.btn:hover{transform:translateY(-1px);}
.btn[disabled]{opacity:.6; cursor:wait; transform:none;}
.btn-primary{background:var(--accent); color:var(--on-accent);}
.btn-primary:hover{background:var(--accent-strong);}
.btn-ghost{background:transparent; color:var(--brand-navy); border-color:var(--border-strong);}
.btn-ghost:hover{border-color:var(--brand-navy);}

/* ---------- Header ---------- */
header.site{
  position:sticky; top:0; z-index:40; background:color-mix(in srgb, var(--surface) 92%, transparent);
  backdrop-filter:saturate(160%) blur(8px); border-bottom:1px solid var(--border);
  margin-inline:calc(-1 * max(16px, env(safe-area-inset-left))); padding-inline:max(16px, env(safe-area-inset-left));
}
.nav-row{display:flex; align-items:center; justify-content:space-between; gap:1rem; padding-block:.85rem;}
nav.primary{display:flex; align-items:center; gap:1.6rem;}
nav.primary a{color:var(--ink); text-decoration:none; font-size:.94rem; font-weight:500;}
nav.primary a:hover{color:var(--accent-strong);}
.nav-actions{display:flex; align-items:center; gap:.9rem;}
.hamburger{display:none; background:none; border:1px solid var(--border-strong); border-radius:3px; padding:.75em .65em; cursor:pointer;}
.hamburger span, .hamburger span::before, .hamburger span::after{
  content:""; display:block; width:18px; height:2px; background:var(--ink); position:relative;
}
.hamburger span::before{position:absolute; top:-6px;} .hamburger span::after{position:absolute; top:6px;}
#mobile-menu{display:none;}

@media (max-width: 860px){
  nav.primary{display:none;}
  .hamburger{display:inline-flex; align-items:center; justify-content:center;}
  #mobile-menu.open{display:flex; flex-direction:column; gap:.2rem; padding:.5rem 0 1rem;}
  #mobile-menu a{color:var(--ink); text-decoration:none; padding:.7em .2em; border-top:1px solid var(--border); font-weight:500;}
}
@media (max-width: 420px){ .nav-actions .btn{display:none;} }

/* ---------- Hero ---------- */
.hero{padding-block:clamp(3rem, 7vw, 5rem);}
.hero-grid{display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); gap:clamp(1.75rem,4vw,3rem); align-items:center;}
.hero h1{font-size:clamp(2.05rem, 4.1vw, 3.15rem); line-height:1.12; margin-block:.6rem .9rem;}
.hero .lede{font-size:1.12rem;}
.hero-actions{display:flex; flex-wrap:wrap; gap:.85rem; margin-top:1.6rem;}
.cert{background:var(--surface); border:1px solid var(--border-strong); border-radius:4px; padding:1.5rem 1.4rem; box-shadow:var(--shadow); position:relative;}
.cert::before{content:""; position:absolute; inset:6px; border:1px solid color-mix(in srgb, var(--accent) 35%, var(--border-strong)); border-radius:2px; pointer-events:none;}
.cert-head{font-family:var(--font-mono); font-size:.68rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-muted); margin-bottom:.9rem;}
.cert dl{display:grid; grid-template-columns:1fr auto; gap:.5rem 1rem; margin:0;}
.cert dt{color:var(--ink-muted); font-size:.86rem;}
.cert dd{margin:0; font-family:var(--font-mono); font-weight:600; color:var(--brand-navy); font-variant-numeric:tabular-nums;}
@media (max-width: 860px){ .hero-grid{grid-template-columns:1fr;} }

/* ---------- Stat band ---------- */
.stat-band{padding-block:0 clamp(2rem,4vw,3rem);}
.stat-grid{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1rem;}
@media (max-width:760px){ .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));} }
.stat{border:1px solid var(--border-strong); border-radius:4px; padding:1.3rem 1rem; text-align:center; background:var(--surface); position:relative;}
.stat::after{content:""; position:absolute; inset:5px; border:1px dashed color-mix(in srgb, var(--brand-slate) 45%, transparent); border-radius:2px; pointer-events:none;}
.stat b{display:block; font-family:var(--font-mono); font-size:clamp(1.7rem,3.4vw,2.2rem); color:var(--brand-navy); font-variant-numeric:tabular-nums;}
.stat span{font-size:.82rem; color:var(--ink-muted);}

.sec-head{max-width:74ch; margin-bottom:clamp(1.5rem,3vw,2.4rem);}
.sec-head h2{font-size:clamp(1.55rem,3vw,2.15rem); margin-block:.5rem .7rem;}
.sec-head .lede{margin-top:.6rem;}

.card-grid{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1.25rem;}
@media (max-width:900px){ .card-grid{grid-template-columns:1fr;} }
.card{background:var(--surface); border:1px solid var(--border); border-radius:6px; padding:1.5rem; display:flex; flex-direction:column; gap:.75rem;}
.card h3{font-size:1.12rem;}
.card p{color:var(--ink-muted); font-size:.95rem;}
.card a.more{font-weight:600; font-size:.92rem; text-decoration:none; margin-top:auto;}
.card a.more::after{content:" →";}

.reg-strip{
  border-top:1px solid var(--border); border-bottom:1px solid var(--border); padding-block:1.4rem;
  display:flex; flex-wrap:wrap; gap:.9rem 1.6rem; align-items:center; justify-content:center;
  font-family:var(--font-mono); font-size:.85rem; color:var(--ink-muted); text-align:center;
}
.reg-strip b{color:var(--brand-navy); font-weight:600;}

.why-grid{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1.5rem;}
@media (max-width:900px){ .why-grid{grid-template-columns:1fr;} }
.why-item{display:flex; gap:.9rem;}
.why-item .mk{margin-top:.35rem;}
.why-item h3{font-size:1.03rem; margin-bottom:.4rem;}
.why-item p{color:var(--ink-muted); font-size:.93rem;}

.cta-wrap{padding-block:1rem 3rem;}
.cta-band{background:var(--band-bg); color:var(--band-text); border-radius:8px; padding:clamp(1.8rem,4vw,2.8rem); display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:1.5rem;}
.cta-band h2{color:var(--band-text); font-size:clamp(1.3rem,2.6vw,1.7rem);}
.cta-band p{color:color-mix(in srgb, var(--band-text) 78%, transparent); max-width:48ch; margin-top:.4rem;}
.cta-band .btn-primary{background:var(--band-text); color:var(--band-bg);}
.cta-band .btn-primary:hover{background:color-mix(in srgb, var(--band-text) 85%, var(--accent));}

.about-grid{display:grid; grid-template-columns:1.15fr .85fr; gap:2.5rem;}
@media (max-width:900px){ .about-grid{grid-template-columns:1fr;} }
.expertise-list{display:grid; grid-template-columns:1fr 1fr; gap:.55rem 1.5rem; margin-top:1rem;}
@media (max-width:560px){ .expertise-list{grid-template-columns:1fr;} }
.expertise-list li{display:flex; gap:.65rem; align-items:flex-start; font-size:.95rem;}
.expertise-list .mk{margin-top:.4rem;}
.muted{color:var(--ink-muted); font-size:.95rem;}

.founder-card{background:var(--surface); border:1px solid var(--border); border-radius:6px; padding:1.6rem; display:flex; gap:1.2rem; align-items:flex-start;}
.avatar{width:58px; height:58px; border-radius:50%; background:var(--band-bg); color:var(--band-text); display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-weight:600; font-size:1.15rem; flex:none;}
.founder-card h3{font-size:1.05rem; margin-bottom:.15rem;}
.founder-role{font-size:.85rem; color:var(--accent-strong); font-weight:600; margin-bottom:.6rem;}
.founder-card p{color:var(--ink-muted); font-size:.92rem;}
.founder-card p + p{margin-top:.7rem;}
.founder-card .badge{display:inline-block; margin-top:.8rem; font-family:var(--font-mono); font-size:.72rem; letter-spacing:.05em; padding:.3em .6em; border:1px solid var(--border-strong); border-radius:3px; color:var(--ink-muted);}
@media (max-width:420px){ .founder-card{flex-direction:column;} }

.timeline{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1rem; margin-top:1.5rem;}
@media (max-width:900px){ .timeline{grid-template-columns:1fr 1fr;} }
@media (max-width:560px){ .timeline{grid-template-columns:1fr;} }
.tl-item{border-top:3px solid var(--accent); padding-top:.85rem;}
.tl-num{font-family:var(--font-mono); font-size:.75rem; color:var(--accent-strong); font-weight:600;}
.tl-item h3{font-size:.98rem; margin-block:.3rem .4rem;}
.tl-item p{font-size:.87rem; color:var(--ink-muted);}

.note{background:var(--warn-bg); border:1px solid var(--warn-border); color:var(--warn-ink); border-radius:5px; padding:.9rem 1.1rem; font-size:.87rem; display:flex; gap:.6rem; margin-top:1.5rem;}
.note strong{font-family:var(--font-mono); font-size:.72rem; letter-spacing:.06em; text-transform:uppercase;}
.note.neutral{background:var(--surface-alt); border-color:var(--border-strong); color:var(--ink-muted);}
.note.neutral strong{color:var(--ink);}

.service{border:1px solid var(--border); border-radius:6px; padding:1.6rem; background:var(--surface); scroll-margin-top:5.5rem;}
.service + .service{margin-top:1.1rem;}
.service-head{display:flex; flex-wrap:wrap; align-items:baseline; gap:.4rem 1rem; margin-bottom:.4rem;}
.service-head h3{font-size:1.15rem;}
.service-head .standfirst{font-style:italic; color:var(--ink-muted); font-size:.94rem;}
.service ul, .check-list{margin-top:.7rem; display:grid; gap:.45rem;}
.service li, .check-list li{display:flex; gap:.6rem; font-size:.93rem;}
.service .mk, .check-list .mk{margin-top:.4rem;}
.service .sub{margin-top:.9rem; padding-top:.9rem; border-top:1px dashed var(--border);}
.service .sub h4{font-family:var(--font-body); font-size:.85rem; color:var(--brand-navy); font-weight:700; margin:0 0 .4rem;}

.split{display:grid; grid-template-columns:1fr 1fr; gap:2.2rem;}
@media (max-width:860px){ .split{grid-template-columns:1fr;} }
.split p + p{margin-top:1rem;}

.register{width:100%; border-collapse:collapse; font-size:.92rem;}
.register caption{text-align:left; font-family:var(--font-mono); font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-muted); padding:.8rem .6rem .2rem;}
.register th{text-align:left; font-family:var(--font-mono); font-size:.72rem; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-muted); border-bottom:1px solid var(--border-strong); padding:.55em .6em;}
.register td{padding:.6em .6em; border-bottom:1px solid var(--border);}
.register-wrap{overflow-x:auto; border:1px solid var(--border); border-radius:6px; background:var(--surface);}
.pill{display:inline-block; font-family:var(--font-mono); font-size:.72rem; font-weight:600; padding:.2em .6em; border-radius:99px;}
.pill.focal{background:color-mix(in srgb, var(--accent) 18%, var(--surface)); color:var(--accent-strong);}
.pill.secondary{background:var(--surface-alt); color:var(--ink-muted); border:1px solid var(--border-strong);}

.reg-list{display:grid; grid-template-columns:1fr 1fr; gap:.7rem 1.5rem; margin-top:1.2rem;}
@media (max-width:560px){ .reg-list{grid-template-columns:1fr;} }
.reg-list li{font-size:.92rem;}
.reg-list b{font-family:var(--font-mono); color:var(--brand-navy);}

.insights-teaser{border:1px dashed var(--border-strong); border-radius:6px; padding:1.1rem 1.4rem; margin-top:2.2rem; display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; color:var(--ink-muted); font-size:.92rem;}

/* ---------- contact ---------- */
.contact-grid{display:grid; grid-template-columns:1.2fr .8fr; gap:2.5rem;}
@media (max-width:900px){ .contact-grid{grid-template-columns:1fr;} }
form{display:grid; gap:1rem;}
.field{display:grid; gap:.35rem;}
.field label{font-size:.85rem; font-weight:600; color:var(--ink);}
.field input, .field select, .field textarea{font:inherit; padding:.7em .8em; border:1px solid var(--border-strong); border-radius:4px; background:var(--surface); color:var(--ink); width:100%;}
.field-row{display:grid; grid-template-columns:1fr 1fr; gap:1rem;}
@media (max-width:560px){ .field-row{grid-template-columns:1fr;} }
.hp-field{position:absolute !important; left:-10000px; width:1px; height:1px; overflow:hidden;}
.consent{font-size:.8rem; color:var(--ink-muted);}
.form-actions{display:flex; flex-wrap:wrap; align-items:center; gap:1rem;}
#form-status{font-size:.9rem; font-weight:600; color:var(--accent-strong);}
#form-status.error{color:#A3261B;}

.contact-card{background:var(--surface); border:1px solid var(--border); border-radius:6px; padding:1.5rem; display:grid; gap:1rem; align-self:start; margin:0;}
.contact-card dt{font-family:var(--font-mono); font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-muted);}
.contact-card dd{margin:.2rem 0 0; font-size:.97rem;}

/* ---------- prose pages (privacy, 404) ---------- */
.prose{max-width:72ch; background:var(--surface); border:1px solid var(--border); border-radius:6px; padding:clamp(1.4rem,4vw,2.6rem); margin-block:clamp(2rem,5vw,3.5rem);}
.prose h1{font-size:clamp(1.7rem,3.4vw,2.3rem); margin-bottom:.4rem;}
.prose h2{font-size:1.18rem; margin-top:2rem; margin-bottom:.5rem;}
.prose p, .prose li{color:var(--ink); font-size:.97rem;}
.prose p + p{margin-top:.8rem;}
.prose ul{list-style:disc; padding-left:1.3rem; margin-top:.5rem; display:grid; gap:.35rem;}
.prose .meta{font-family:var(--font-mono); font-size:.78rem; color:var(--ink-muted);}

/* ---------- footer ---------- */
footer{background:var(--band-bg); color:color-mix(in srgb, var(--band-text) 88%, transparent); padding-block:2.6rem;
  margin-inline:calc(-1 * max(16px, env(safe-area-inset-left))); padding-inline:max(16px, env(safe-area-inset-left));}
footer .logo{--logo-mark-1:#FFFFFF; --logo-mark-2:#FFFFFF; --logo-acsys:#FFFFFF; --logo-pharma:#B9C6D6;}
.footer-grid{display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:2rem;}
@media (max-width:760px){ .footer-grid{grid-template-columns:1fr; gap:1.6rem;} }
footer a{color:color-mix(in srgb, var(--band-text) 90%, transparent); text-decoration:none; font-size:.92rem;}
footer a:hover{color:#7CD4F5;}
footer h2.fh{font-family:var(--font-mono); font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; color:color-mix(in srgb, var(--band-text) 65%, transparent); margin-bottom:.8rem; font-weight:600;}
footer .flinks{display:grid; gap:.5rem;}
.footer-disclosure{font-size:.85rem; color:color-mix(in srgb, var(--band-text) 70%, transparent); max-width:60ch; margin-top:.6rem;}
.footer-bottom{border-top:1px solid color-mix(in srgb, var(--band-text) 20%, transparent); margin-top:2rem; padding-top:1.2rem; display:flex; flex-wrap:wrap; gap:.8rem 1.5rem; justify-content:space-between; font-size:.82rem; color:color-mix(in srgb, var(--band-text) 60%, transparent);}
