@font-face{font-family:"Schibsted Grotesk";font-weight:400;src:url(/fonts/schibsted-400.woff2) format("woff2");font-display:swap}
@font-face{font-family:"Schibsted Grotesk";font-weight:600;src:url(/fonts/schibsted-600.woff2) format("woff2");font-display:swap}
@font-face{font-family:"Schibsted Grotesk";font-weight:800;src:url(/fonts/schibsted-800.woff2) format("woff2");font-display:swap}
@font-face{font-family:"JetBrains Mono";font-weight:400;src:url(/fonts/JetBrainsMono-400.woff2) format("woff2");font-display:swap}

:root{
  --bg:#0a0c0e;
  --plate:#111418;
  --plate-hi:#171b20;
  --line:#252a31;
  --line-hi:#353c45;
  --ink:#e9edf0;
  --ink2:#b7bfc7;
  --dim:#8d969f;
  --frost:#8ee4fb;
  --frost-deep:#0e2a33;
  --fail:#ff8a7a;
  --fail-deep:#2e1512;
  --sans:"Schibsted Grotesk",system-ui,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --gutter:40px;
  --max:1180px;
  --measure:68ch;
  --ease:cubic-bezier(.16,1,.3,1);
  color-scheme:dark;
}

*{box-sizing:border-box;margin:0;padding:0}
html{background:var(--bg);scrollbar-color:var(--line-hi) var(--bg);-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--ink);font:400 17px/1.6 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
::selection{background:var(--frost);color:var(--bg)}
a{color:var(--frost);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.22em}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:2px solid var(--frost);outline-offset:3px;border-radius:2px}
code,pre,.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
code{font-size:.88em;color:var(--ink);background:var(--plate-hi);padding:.1em .35em;border-radius:3px}
h1,h2,h3{font-weight:800;line-height:1.08;letter-spacing:-.025em;text-wrap:balance}
p,li,dd{text-wrap:pretty}
.skip{position:absolute;left:-999px;top:8px;background:var(--frost);color:var(--bg);padding:8px 12px;z-index:10}
.skip:focus{left:8px}

.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}

.top{border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:68px;flex-wrap:wrap}
.brand{display:inline-flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font-weight:800;font-size:19px;letter-spacing:-.02em}
.brand svg{width:26px;height:26px}
.nav{display:flex;gap:4px;list-style:none;flex-wrap:wrap}
.nav a{display:block;padding:8px 12px;color:var(--ink2);text-decoration:none;font-weight:600;font-size:15px;border-radius:4px}
.nav a:hover{color:var(--ink);background:var(--plate-hi)}
.nav a[aria-current=page]{color:var(--ink);box-shadow:inset 0 -2px 0 var(--frost);border-radius:0}

.btn{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 22px;font:600 16px/1 var(--sans);text-decoration:none;border-radius:4px;border:1px solid transparent;transition:background .2s var(--ease),border-color .2s var(--ease)}
.btn-primary{background:var(--frost);color:#06191f}
.btn-primary:hover{background:#b5efff}
.btn-soon{color:var(--dim);border-color:var(--line-hi);background:transparent;cursor:not-allowed}
.btn-soon svg{width:18px;height:18px}
.actions{display:flex;gap:12px;flex-wrap:wrap}

.hero{padding:96px 0 72px}
.hero h1{font-size:clamp(44px,6.4vw,88px);max-width:14ch;letter-spacing:-.035em}
.lede{margin-top:28px;font-size:clamp(18px,1.6vw,21px);line-height:1.55;color:var(--ink2);max-width:58ch}
.hero .actions{margin-top:36px}

.assay{margin-top:72px;border:1px solid var(--line);background:linear-gradient(180deg,var(--plate-hi),var(--plate));border-radius:6px;padding:28px}
.assay-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap;padding-bottom:22px;border-bottom:1px dashed var(--line-hi)}
.assay-head h2{font-size:clamp(19px,1.8vw,23px);font-weight:600;letter-spacing:-.01em;max-width:44ch}
.assay-head .mono{font-size:13px;color:var(--dim)}
.marks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) minmax(0,1.15fr);gap:18px;margin-top:24px;list-style:none}
.mark{position:relative;padding:22px 22px 20px;min-height:148px;display:flex;flex-direction:column;justify-content:space-between}
.mark>svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.mark>svg path{fill:none;stroke-width:1.5;vector-effect:non-scaling-stroke}
.mark-fail>svg path{stroke:var(--fail);fill:var(--fail-deep)}
.mark-pass>svg path{stroke:var(--frost);fill:var(--frost-deep)}
.mark-struck{background:var(--frost);clip-path:polygon(8px 0,calc(100% - 8px) 0,100% 8px,100% calc(100% - 8px),calc(100% - 8px) 100%,8px 100%,0 calc(100% - 8px),0 8px)}
.mark-struck>svg{display:none}
.mark>*:not(svg){position:relative}
.mark .run{font-weight:600;font-size:15px;color:var(--ink2)}
.mark .verdict{font:400 30px/1 var(--mono);letter-spacing:.02em;margin-top:14px}
.mark-fail .verdict{color:var(--fail)}
.mark-pass .verdict{color:var(--frost)}
.mark .ref{font:400 13px/1.4 var(--mono);color:var(--dim);margin-top:10px}
.mark-struck{color:#06191f}
.mark-struck .run,.mark-struck .ref{color:#14414d}
.mark-struck .verdict{font:800 30px/1 var(--sans);letter-spacing:-.02em}
.assay-note{margin-top:20px;font-size:14px;color:var(--dim)}

@media (prefers-reduced-motion:no-preference){
  .marks .mark{animation:strike .7s var(--ease) both}
  .marks .mark:nth-child(2){animation-delay:.35s}
  .marks .mark:nth-child(3){animation-delay:.7s}
  .marks .mark:nth-child(4){animation-delay:1.1s}
}
@keyframes strike{from{transform:scale(1.06);filter:blur(5px);opacity:.25}to{transform:none;filter:none;opacity:1}}

.band{padding:88px 0;border-top:1px solid var(--line)}
.band h2{font-size:clamp(30px,3.4vw,46px);max-width:20ch}
.band .intro{margin-top:18px;color:var(--ink2);max-width:var(--measure);font-size:18px}
.split{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:64px;align-items:start}

.sources{margin-top:8px;display:grid;gap:0}
.sources div{display:grid;grid-template-columns:minmax(0,13ch) minmax(0,1fr);gap:24px;padding:20px 0;border-bottom:1px solid var(--line)}
.sources div:first-child{border-top:1px solid var(--line)}
.sources dt{font-weight:600}
.sources dd{color:var(--ink2)}

.steps{list-style:none;counter-reset:step;display:grid;gap:36px;margin-top:40px}
.steps>li{counter-increment:step;display:grid;grid-template-columns:48px minmax(0,1fr);gap:4px 20px}
.steps>li>*{grid-column:2}
.prose .steps>li{margin-top:0}
.prose .steps h3{margin-top:0}
.prose .steps p,.prose .steps pre{margin-top:8px}
.steps>li::before{content:counter(step);grid-column:1;grid-row:1 / span 9;font:400 15px/30px var(--mono);color:var(--frost);border:1px solid var(--line-hi);border-radius:4px;width:34px;height:32px;text-align:center}
.steps h3{font-size:21px;font-weight:600;letter-spacing:-.01em}
.steps p{color:var(--ink2);max-width:var(--measure)}

pre{margin-top:14px;background:var(--plate);border:1px solid var(--line);border-radius:4px;padding:16px 18px;overflow-x:auto;font-size:14px;line-height:1.65;color:var(--ink)}
pre .c{color:var(--dim)}

.page-head{padding:88px 0 40px}
.page-head h1{font-size:clamp(40px,5.2vw,72px);max-width:16ch;letter-spacing:-.035em}
.page-head .lede{margin-top:24px}
.page-head .actions{margin-top:32px}

.prose{max-width:var(--measure)}
.prose h2{font-size:clamp(26px,2.8vw,36px);margin-top:72px}
.prose h2:first-child{margin-top:0}
.prose h3{font-size:21px;font-weight:600;letter-spacing:-.01em;margin-top:40px}
.prose p,.prose ul,.prose ol,.prose table,.prose pre{margin-top:18px}
.prose p,.prose li{color:var(--ink2)}
.prose strong{color:var(--ink);font-weight:600}
.prose ul,.prose ol{padding-left:1.2em}
.prose li{margin-top:8px}
.prose li::marker{color:var(--dim)}

.article{padding:24px 0 104px}
.article .wrap{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:72px;align-items:start}
.toc{position:sticky;top:24px;font-size:15px;border-left:1px solid var(--line);padding-left:18px}
.toc p{font-weight:600;color:var(--ink)}
.toc ol{list-style:none;margin-top:10px;display:grid;gap:8px}
.toc a{color:var(--ink2);text-decoration:none}
.toc a:hover{color:var(--frost)}

table{width:100%;border-collapse:collapse;font-size:16px}
th,td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:top}
th{font-weight:600;color:var(--ink);border-bottom-color:var(--line-hi)}
td{color:var(--ink2)}
td.f{color:var(--fail);font-family:var(--mono)}
td.p{color:var(--frost);font-family:var(--mono)}
.table-scroll{overflow-x:auto}

.compare{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-top:28px;border:1px solid var(--line);border-radius:6px;overflow:hidden}
.compare>div{padding:24px}
.compare>div+div{border-left:1px solid var(--line);background:var(--plate)}
.compare h3{margin-top:0;font-size:18px}
.compare ul{list-style:none;padding:0}
.compare li{padding-left:0}

.next{padding:72px 0;border-top:1px solid var(--line)}
.next .wrap{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap}
.next h2{font-size:clamp(24px,2.6vw,34px);max-width:24ch}

.foot{border-top:1px solid var(--line);padding:32px 0 48px;color:var(--dim);font-size:14px}
.foot .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
.foot a{color:var(--ink2)}

@media (max-width:960px){
  .marks{grid-template-columns:repeat(2,minmax(0,1fr))}
  .split{grid-template-columns:1fr;gap:28px}
  .article .wrap{grid-template-columns:1fr;gap:0}
  .toc{display:none}
}
@media (max-width:600px){
  :root{--gutter:16px}
  body{font-size:16px}
  .top .wrap{padding-top:10px;padding-bottom:10px}
  .nav a{padding:8px 10px}
  .hero{padding:56px 0 48px}
  .assay{margin-top:48px;padding:18px}
  .marks{grid-template-columns:1fr;gap:12px}
  .mark{min-height:0;padding:18px}
  .mark .verdict{font-size:26px}
  .band,.page-head{padding:56px 0}
  .page-head{padding-bottom:24px}
  .sources div{grid-template-columns:1fr;gap:6px}
  .steps>li{grid-template-columns:40px minmax(0,1fr);gap:4px 14px}
  .compare{grid-template-columns:1fr}
  .compare>div+div{border-left:0;border-top:1px solid var(--line)}
  .btn{width:100%;justify-content:center}
  .article{padding-bottom:72px}
}
