/* Expert Cert Systems — one stylesheet.
   Ground: official-document paper and ink. Accent: the oxblood of a seal, spent only
   on accreditation codes. Status colours are semantic and separate from the accent. */

@font-face{font-family:"ECS Display";src:url(/assets/fonts/serif-display.woff2) format("woff2");
  font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"ECS Sans";src:url(/assets/fonts/sans-400.woff2) format("woff2");
  font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"ECS Sans";src:url(/assets/fonts/sans-600.woff2) format("woff2");
  font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"ECS Mono";src:url(/assets/fonts/mono-500.woff2) format("woff2");
  font-weight:500;font-style:normal;font-display:swap}

:root{
  --paper:#F7F6F3; --paper-2:#EFEEE9;
  --ink:#14171C; --ink-2:#3B4149; --ink-3:#6B7078;
  --field:#2E3A34; --field-ink:#F2F4F1;
  --seal:#8C2F39;
  --ok:#2F6B4F; --warn:#9A6B1E; --stop:#8C2F39; --none:#6B7078;
  --rule:#D6D5CD; --rule-strong:#B9B8AE;
  --card:#FFFFFF; --card-edge:#E0DFD7;
  --focus:#2E3A34;
  --shadow:0 1px 2px rgba(20,23,28,.05), 0 8px 24px -14px rgba(20,23,28,.28);
}
@media (prefers-color-scheme:dark){
  :root{
    --paper:#101317; --paper-2:#161A1F;
    --ink:#E8E9E4; --ink-2:#B3B7B4; --ink-3:#868C8A;
    --field:#C9D6CD; --field-ink:#101317;
    --seal:#C86B72;
    --ok:#6FB48F; --warn:#D6A45C; --stop:#C86B72; --none:#868C8A;
    --rule:#262C32; --rule-strong:#39414A;
    --card:#171B20; --card-edge:#272D34;
    --focus:#9FBBAB;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 30px -16px rgba(0,0,0,.7);
  }
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);
  font-family:"ECS Sans",ui-sans-serif,system-ui,sans-serif;font-size:16px;line-height:1.6;
  -webkit-font-smoothing:antialiased}
a{color:inherit}
.wrap{max-width:1000px;margin:0 auto;padding-inline:24px}
.skip{position:absolute;left:-9999px}
.skip:focus{left:8px;top:8px;z-index:10;background:var(--card);padding:10px 14px;
  border:1px solid var(--rule-strong)}

/* header */
.top{border-bottom:1px solid var(--rule)}
.top .wrap{display:flex;align-items:center;gap:20px;padding-block:16px;flex-wrap:wrap}
.brand{display:flex;align-items:baseline;gap:12px;text-decoration:none}
.brand-logo{display:block;width:48px;height:48px;object-fit:contain;align-self:center}
.brand .mark{font-family:"ECS Mono",monospace;font-weight:500;font-size:13px;letter-spacing:.18em;
  border:1.5px solid var(--ink);padding:5px 8px;line-height:1}
.brand .who{font-family:"ECS Display",Georgia,serif;font-size:18px}
.brand .who small{display:block;color:var(--ink-3);font-family:"ECS Sans",sans-serif;font-size:12px;
  letter-spacing:.06em;text-transform:uppercase;line-height:1.4}
.nav{margin-left:auto;display:flex;gap:20px;flex-wrap:wrap}
.nav a{color:var(--ink-2);text-decoration:none;font-size:14.5px;padding-block:4px}
.nav a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.nav a[aria-current="page"]{color:var(--ink);font-weight:600}

/* type */
h1{font-family:"ECS Display",Georgia,serif;font-weight:400;font-size:clamp(28px,4.2vw,44px);
  line-height:1.15;letter-spacing:-.012em;margin:0 0 16px;max-width:30ch;text-wrap:balance}
h2{font-family:"ECS Display",Georgia,serif;font-weight:400;font-size:25px;margin:0;
  letter-spacing:-.008em;text-wrap:balance}
h3{font-size:16px;margin:0 0 6px;font-weight:600}
p{margin:0 0 14px}
.lede{color:var(--ink-2);font-size:17px;max-width:58ch}
.eyebrow{display:flex;align-items:center;gap:10px;color:var(--ink-3);font-size:11.5px;
  letter-spacing:.14em;text-transform:uppercase;margin-bottom:18px}
.eyebrow::before{content:"";width:26px;height:1px;background:var(--rule-strong)}
.prose{max-width:66ch}
.prose p{color:var(--ink-2)}
.prose ul{margin:0 0 14px;padding-left:20px;color:var(--ink-2)}
.prose li{margin:4px 0}

main{display:block}
.hero{padding-block:56px 8px}
.section{padding-block:52px}
.section-head{display:flex;align-items:baseline;gap:14px;margin-bottom:24px;
  border-bottom:1px solid var(--rule);padding-bottom:12px;flex-wrap:wrap}
.section-head .aside{margin-left:auto;font-size:11.5px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--ink-3)}

/* verification */
.verify{background:var(--card);border:1px solid var(--card-edge);box-shadow:var(--shadow);
  padding:22px;display:grid;gap:14px}
.verify label{font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3)}
.verify .row{display:flex;gap:10px;flex-wrap:wrap}
.verify input{flex:1 1 260px;min-width:0;font-family:"ECS Mono",monospace;font-size:19px;
  font-weight:500;letter-spacing:.02em;padding:14px 16px;color:var(--ink);background:var(--paper);
  border:1.5px solid var(--rule-strong);border-radius:2px}
.verify input::placeholder{color:var(--ink-3);font-weight:500}
.verify input:focus{outline:2px solid var(--focus);outline-offset:2px;border-color:var(--focus)}
.btn{font:inherit;font-weight:600;font-size:15px;padding:14px 22px;border-radius:2px;cursor:pointer;
  background:var(--field);color:var(--field-ink);border:1.5px solid var(--field);text-decoration:none;
  display:inline-block}
.btn:hover{filter:brightness(1.12)}
.btn:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.hint{font-size:13px;color:var(--ink-3);margin:0}
.hint code{font-family:"ECS Mono",monospace;font-size:12.5px;background:var(--paper-2);
  border:1px solid var(--rule);padding:1px 5px;border-radius:2px}

/* verdict */
.verdict{background:var(--card);border:1px solid var(--card-edge);box-shadow:var(--shadow);
  position:relative;overflow:hidden;margin-top:18px}
.verdict::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--vc,var(--none))}
.verdict-head{display:flex;gap:18px;align-items:flex-start;padding:20px 22px 16px;
  border-bottom:1px solid var(--rule);flex-wrap:wrap}
.stamp{flex:none;display:grid;place-items:center;width:98px;height:98px;border-radius:50%;
  border:2.5px solid var(--vc,var(--none));color:var(--vc,var(--none));text-align:center;
  transform:rotate(-7deg)}
.stamp b{display:block;font-family:"ECS Mono",monospace;font-weight:500;font-size:12.5px;letter-spacing:.05em}
.stamp i{display:block;font-style:normal;font-size:9px;letter-spacing:.12em;opacity:.85;margin-top:3px}
.verdict-main{flex:1 1 320px;min-width:0}
.verdict-num{font-family:"ECS Mono",monospace;font-weight:500;font-size:24px;margin:0 0 4px;
  word-break:break-all}
.verdict-firm{font-family:"ECS Display",Georgia,serif;font-size:20px;line-height:1.25;margin:0 0 8px;
  text-wrap:balance}
.chip{display:inline-block;font-family:"ECS Mono",monospace;font-size:12.5px;
  border:1px solid var(--rule-strong);padding:3px 8px;border-radius:2px;color:var(--ink-2)}
.fields{padding:16px 22px 20px;display:grid;gap:14px;margin:0}
.fields div{display:grid;grid-template-columns:150px 1fr;gap:14px;align-items:start}
.fields dt{font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);padding-top:3px}
.fields dd{margin:0;font-size:14.5px;color:var(--ink-2);line-height:1.55}
.verdict-foot{border-top:1px solid var(--rule);padding:12px 22px;display:flex;gap:16px;flex-wrap:wrap;
  align-items:center;font-size:12.5px;color:var(--ink-3);background:var(--paper-2)}
.verdict-foot .perma{font-family:"ECS Mono",monospace;font-size:12px;color:var(--ink-2);word-break:break-all}
.miss{background:var(--card);border:1px solid var(--card-edge);box-shadow:var(--shadow);padding:22px;
  position:relative;overflow:hidden;margin-top:18px}
.miss::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--stop)}
.miss h2{font-size:19px;margin-bottom:6px}
.miss p{color:var(--ink-2);font-size:14.5px;margin:0}

/* grids */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1px;background:var(--rule)}
.cards > *{background:var(--paper);padding:20px}
.cards .code{font-family:"ECS Mono",monospace;font-weight:500;font-size:15px;color:var(--seal);
  letter-spacing:.03em}
.cards p{margin:0;font-size:14px;color:var(--ink-2)}
.cards .std{margin-top:10px;font-family:"ECS Mono",monospace;font-size:11.5px;color:var(--ink-3)}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:24px}
.cols > * > h3{border-top:2px solid var(--ink);padding-top:12px}

.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:24px}
.contact-grid dt{font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);
  margin-bottom:4px}
.contact-grid dd{margin:0;font-size:15px}
.contact-grid a{text-decoration:none;border-bottom:1px solid var(--rule-strong)}
.contact-grid a:hover{border-color:var(--ink)}

.documents{margin-top:36px;border-top:1px solid var(--rule);padding-top:24px}
.documents h2{margin-bottom:14px}
.documents ul{list-style:none;padding:0;margin:0;display:grid;gap:1px;background:var(--rule)}
.documents li{background:var(--paper);padding:12px 14px;display:flex;gap:10px;
  justify-content:space-between;flex-wrap:wrap}
.documents li a{font-weight:600;text-underline-offset:3px}
.documents li small{color:var(--ink-3)}

.foot{border-top:1px solid var(--rule);padding-block:24px 40px;color:var(--ink-3);font-size:13px}
.foot .wrap{display:flex;gap:16px;flex-wrap:wrap;align-items:baseline}
.foot .right{margin-left:auto}

@media (max-width:640px){
  .fields div{grid-template-columns:1fr;gap:3px}
  .stamp{width:84px;height:84px}
}
@media (prefers-reduced-motion:no-preference){
  .verdict,.miss{animation:settle .26s cubic-bezier(.2,.9,.3,1.1) both}
  @keyframes settle{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
}

/* Status colour lives in a class, not an inline style: the site sends a strict CSP
   without 'unsafe-inline', which silently drops style attributes — and the verdict's
   colour IS the signal, so losing it turns every result grey. */
.is-valid{--vc:var(--ok)}
.is-suspendat{--vc:var(--warn)}
.is-retras,.is-expirat{--vc:var(--stop)}
.is-neclar{--vc:var(--none)}

/* small utilities, replacing what were inline styles */
.t-sm{font-size:14.5px}
.t-xs{font-size:13.5px;color:var(--ink-3)}
.section--tight{padding-block:8px 52px}
.lede--flush{margin:0}
