:root{
  --paper:#EEF1F4;
  --white:#FFFFFF;
  --ink:#17202A;
  --slate:#475463;
  --line:#CAD3DC;
  --rose:#B0294F;
  --rose-dark:#8E1F3F;
  --teal:#0E3B43;
  --teal-text:#D6E6E8;
  --ok:#1D6B45;
  --serif:Charter,"Bitstream Charter","Sitka Text",Cambria,Georgia,serif;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:5rem}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--paper);color:var(--ink);font:1.0625rem/1.6 var(--sans);-webkit-font-smoothing:antialiased}
a{color:var(--rose-dark);text-underline-offset:.18em}
a:hover{color:var(--rose)}
:focus-visible{outline:3px solid var(--rose);outline-offset:3px;border-radius:2px}
.wrap{width:min(100% - 2.5rem,70rem);margin-inline:auto}

.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:.6rem 1rem;z-index:10}
.skip:focus{left:0}

/* header */
.site-header{position:sticky;top:0;z-index:5;background:rgba(238,241,244,.94);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}
.bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 0}
.wordmark{font:700 1.35rem/1 var(--serif);color:var(--ink);text-decoration:none;letter-spacing:.01em}
.wordmark:hover{color:var(--ink)}
nav ul{display:flex;flex-wrap:wrap;gap:.25rem 1.4rem;margin:0;padding:0;list-style:none;align-items:center}
nav a{color:var(--ink);text-decoration:none;font-size:.95rem}
nav a:hover{color:var(--rose-dark);text-decoration:underline;text-underline-offset:.3em}
nav .nav-cta{background:var(--ink);color:#fff;padding:.45rem .9rem;border-radius:4px}
nav .nav-cta:hover{background:var(--rose-dark);color:#fff;text-decoration:none}

/* hero */
.hero{padding:clamp(2.5rem,7vw,5.5rem) 0 clamp(2.5rem,6vw,4.5rem)}
.hero-grid{display:grid;gap:3rem;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:center}
h1{font:700 clamp(2.2rem,5.2vw,3.7rem)/1.08 var(--serif);letter-spacing:-.015em;margin:0 0 1.4rem;max-width:16em}
.lead{font-size:1.18rem;color:var(--slate);max-width:36rem;margin:0 0 2rem}
.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin:0}
.btn{display:inline-block;padding:.75rem 1.25rem;border:2px solid var(--ink);border-radius:4px;color:var(--ink);text-decoration:none;font-weight:600}
.btn:hover{background:var(--ink);color:#fff}
.btn.primary{background:var(--rose);border-color:var(--rose);color:#fff}
.btn.primary:hover{background:var(--rose-dark);border-color:var(--rose-dark)}

/* sample finding */
.finding{margin:0;background:var(--white);border:1px solid var(--line);border-left:6px solid var(--rose);border-radius:4px;box-shadow:0 1px 0 var(--line)}
.finding figcaption{padding:.6rem 1.25rem;border-bottom:1px solid var(--line);font-size:.85rem;color:var(--slate)}
.finding-body{padding:1.25rem}
.finding-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}
.finding-head h2{font:700 1.2rem/1.3 var(--serif);margin:0}
.sev{flex:none;background:var(--rose);color:#fff;font-weight:700;font-size:.85rem;padding:.2rem .65rem;border-radius:3px}
.finding dl{margin:0;display:grid;gap:.85rem}
.finding dl>div{display:grid;grid-template-columns:6.5rem 1fr;gap:.75rem}
.finding dt{font-weight:600;color:var(--slate);font-size:.92rem}
.finding dd{margin:0;font-size:.95rem}
code{font:.85rem/1.5 var(--mono);background:var(--paper);padding:.1rem .35rem;border-radius:3px;word-break:break-word}
.verified{color:var(--ok);font-weight:600}

/* sections */
.block{padding:clamp(3rem,7vw,5rem) 0}
.tint{background:var(--white);border-block:1px solid var(--line)}
h2{font:700 clamp(1.6rem,3vw,2.1rem)/1.15 var(--serif);margin:0 0 1.5rem;letter-spacing:-.01em}
h3{font:700 1.1rem/1.3 var(--serif);margin:0 0 .4rem}
.split{display:grid;grid-template-columns:minmax(0,14rem) minmax(0,1fr);gap:1.5rem 3rem}
.split>h2{margin:0}
.rows{margin:0;max-width:44rem}
.rows>div{padding:1.15rem 0;border-top:1px solid var(--line)}
.rows>div:first-child{border-top:0;padding-top:0}
.rows dt{font:700 1.2rem/1.3 var(--serif);margin-bottom:.3rem}
.rows dd{margin:0;color:var(--slate)}
.prose{max-width:42rem}
.prose p{margin:0 0 1rem}
.prose h3{margin-top:1.75rem}
.textlink{font-weight:600}

/* approach: a real sequence, so the steps are numbered */
.steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1.5rem;margin:2rem 0 0;padding:0;list-style:none;counter-reset:s}
.steps li{counter-increment:s;border-top:3px solid var(--ink);padding-top:.9rem}
.steps li::before{content:counter(s);display:block;font:700 .95rem/1 var(--mono);color:var(--rose-dark);margin-bottom:.6rem}
.steps p{margin:0;font-size:.97rem;color:var(--slate)}

.certs{margin:0;padding-left:1.2rem}
.certs li{margin:.3rem 0}

/* contact */
.contact{background:var(--teal);color:var(--teal-text);padding:clamp(3rem,7vw,5rem) 0}
.contact h2{color:#fff}
.contact a{color:#fff}
.contact a:hover{color:#FFD3DE}
.contact :focus-visible{outline-color:#fff}
.mail{font:700 clamp(1.4rem,3.4vw,2.1rem)/1.2 var(--serif)}
.small{font-size:.95rem}

.site-footer{padding:1.5rem 0;font-size:.9rem;color:var(--slate)}
.site-footer p{margin:0}

@media (max-width:60rem){
  .hero-grid{grid-template-columns:1fr}
  .steps{grid-template-columns:1fr 1fr}
}
@media (max-width:42rem){
  .split{grid-template-columns:1fr}
  .bar{flex-direction:column;align-items:flex-start}
  .steps{grid-template-columns:1fr}
  .finding dl>div{grid-template-columns:1fr;gap:.15rem}
}
