:root{--paper:#0f2942;--paper-deep:#0b2136;--ink:#dde9f3;--ink-soft:#9fb6ca;--line:#2f5170;--line-soft:#243f58;--blueprint:#6cc4ee;--blueprint-deep:#3a7ca8;--signal:#ff6a3d;--verify:#43d19b;--mono-slate:#7e97ac;--chalk:#ffffff;--panel:#e8eef3;--panel-ink:#122a40}
*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
body{background:var(--paper);color:var(--ink);font-family:"Source Serif 4",Georgia,serif;font-size:17px;line-height:1.65}
.font-display,h1,h2,h3{font-family:"Archivo","Helvetica Neue",Arial,sans-serif}
.mono{font-family:"IBM Plex Mono",ui-monospace,monospace}
a{color:inherit}
a:focus-visible,button:focus-visible,.stage-node:focus-visible,input:focus-visible{outline:2px solid var(--blueprint);outline-offset:3px}
.wrap{max-width:1152px;margin:0 auto;padding:0 20px}
.eyebrow{font-family:"IBM Plex Mono",monospace;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--blueprint);margin-bottom:12px}
.grid-bg{background-image:linear-gradient(rgba(108,196,238,.10) 1px,transparent 1px),linear-gradient(90deg,rgba(108,196,238,.10) 1px,transparent 1px),linear-gradient(rgba(108,196,238,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(108,196,238,.05) 1px,transparent 1px);background-size:128px 128px,128px 128px,32px 32px,32px 32px}
.narrow{max-width:68ch}
section{padding:64px 0}
@media(min-width:768px){section{padding:80px 0}}
h2{font-weight:700;font-size:clamp(28px,4vw,38px);letter-spacing:-.01em;margin-bottom:8px}
.sub{color:var(--ink-soft);margin-bottom:40px}

/* header */
.site-head{position:sticky;top:0;z-index:50;border-bottom:1px solid var(--line);background:rgba(15,41,66,.94);backdrop-filter:blur(6px)}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:12px;padding-bottom:12px}
.brand{font-weight:700;letter-spacing:-.02em;font-size:18px;font-family:"Archivo",sans-serif}
.brand span{color:var(--signal)}
.site-nav{display:none;gap:24px;font-family:"IBM Plex Mono",monospace;font-size:12px;text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft)}
.site-nav a{text-decoration:none}
.site-nav a:hover{color:var(--blueprint)}
@media(min-width:820px){.site-nav{display:flex}}

/* hero */
.hero{border-bottom:1px solid var(--line);padding:64px 0}
@media(min-width:768px){.hero{padding:96px 0}}
.hero .wrap{display:grid;gap:40px;align-items:center}
@media(min-width:900px){.hero .wrap{grid-template-columns:1.2fr 1fr}}
h1{font-weight:800;letter-spacing:-.02em;line-height:1.02;font-size:clamp(38px,6vw,64px)}
h1 em{color:var(--signal);font-style:normal}
.hero p.lede{margin-top:24px;font-size:19px;color:var(--ink-soft)}
.cta-row{margin-top:32px;display:flex;flex-wrap:wrap;gap:12px}
.btn{font-family:"IBM Plex Mono",monospace;font-size:14px;padding:12px 20px;text-decoration:none;display:inline-block}
.btn-solid{background:var(--chalk);color:var(--paper)}
.btn-solid:hover{background:var(--blueprint);color:var(--paper)}
.btn-line{border:1px solid var(--ink);color:var(--ink)}
.btn-line:hover{border-color:var(--blueprint);color:var(--blueprint)}
.code-panel{font-family:"IBM Plex Mono",monospace;font-size:13px;border:1px solid var(--line);background:var(--paper);padding:20px;line-height:1.9;box-shadow:6px 6px 0 rgba(0,0,0,.35)}
.code-panel .cm{color:var(--mono-slate)}
.code-panel .sig{color:var(--signal)}
.code-panel .bp{color:var(--blueprint)}
.code-panel .vf{color:var(--verify)}

/* what */
.what-grid{display:grid;gap:40px}
@media(min-width:820px){.what-grid{grid-template-columns:1fr 1fr}}
.what-grid .narrow p+p{margin-top:16px}
.isnot>div{border-left:4px solid;padding:8px 0 8px 16px}
.isnot>div+div{margin-top:16px}
.isnot b{font-family:"Archivo",sans-serif}
.isnot span{color:var(--ink-soft)}

/* cycle */
.band{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--paper-deep)}
.cycle-grid{display:grid;gap:40px;align-items:start}
@media(min-width:1000px){.cycle-grid{grid-template-columns:1fr 1fr}}
.cycle-svg{width:100%;max-width:520px;margin:0 auto;display:block}
.radar-sweep{transform-origin:260px 260px;animation:sweep 14s linear infinite}
@keyframes sweep{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.stage-node{cursor:pointer;transition:transform .16s ease}
.stage-node:hover{transform:scale(1.04)}
.stage-node .n-num{font-family:"IBM Plex Mono",monospace;font-size:11px;font-weight:600;fill:var(--mono-slate)}
.stage-node .n-name{font-family:"Archivo",sans-serif;font-size:13px;font-weight:700;fill:var(--chalk)}
.stage-node[data-active="true"] circle{fill:var(--c);stroke-width:3;r:46}
.stage-node[data-active="true"] text{fill:#08111b}
.c-title{font-family:"Archivo",sans-serif;font-size:20px;font-weight:700;fill:var(--chalk)}
.c-sub{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:2px;fill:var(--mono-slate)}
.stage-panel{border:1px solid var(--line);background:var(--paper);box-shadow:8px 8px 0 rgba(0,0,0,.35)}
.stage-panel[hidden]{display:none}
.sp-head{padding:16px 24px;border-bottom:1px solid var(--line);display:flex;align-items:baseline;gap:12px}
.sp-head .num{font-family:"IBM Plex Mono",monospace;font-size:14px}
.sp-head h3{font-size:24px;font-weight:700}
.sp-body{padding:20px 24px}
.sp-body>*+*{margin-top:16px}
.sp-q{font-family:"IBM Plex Mono",monospace;font-size:13px;color:var(--mono-slate)}
.sp-body ul{list-style:none;padding:0}
.sp-body ul li{padding-left:16px;border-left:2px solid var(--line);font-size:15px;color:var(--ink-soft)}
.sp-body ul li+li{margin-top:8px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{font-family:"IBM Plex Mono",monospace;font-size:12px;padding:4px 10px;border:1px solid var(--line);background:var(--paper-deep)}

/* table */
.tbl-wrap{overflow-x:auto;border:1px solid var(--line)}
table{width:100%;border-collapse:collapse;font-size:15px}
thead tr{background:var(--line-soft);color:var(--chalk);text-align:left;font-family:"Archivo",sans-serif}
th{padding:12px 16px;font-weight:600}
td{padding:12px 16px;vertical-align:top}
tbody tr:nth-child(even){background:var(--paper-deep)}
td.dim{font-family:"IBM Plex Mono",monospace;font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--mono-slate)}
td.vm{color:var(--ink-soft)}

/* roadmap */
.phase-grid{display:grid;gap:24px}
@media(min-width:820px){.phase-grid{grid-template-columns:repeat(3,1fr)}}
.phase{border:1px solid var(--line);background:var(--paper);display:flex;flex-direction:column}
.phase-head{padding:16px 20px;border-bottom:1px solid var(--line)}
.phase-head .plabel{font-family:"IBM Plex Mono",monospace;font-size:12px;letter-spacing:.14em;color:var(--blueprint)}
.phase-head .ptime{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--mono-slate)}
.phase-head h3{font-size:20px;font-weight:700;margin-top:8px;line-height:1.35}
.phase ul{list-style:none;padding:16px 20px}
.phase li{display:flex;gap:8px;font-size:15px;color:var(--ink-soft)}
.phase li+li{margin-top:12px}
.phase li::before{content:"▸";color:var(--blueprint);font-family:"IBM Plex Mono",monospace}

/* tooling */
.tool-grid{display:grid;gap:20px}
@media(min-width:700px){.tool-grid{grid-template-columns:1fr 1fr}}
@media(min-width:1000px){.tool-grid{grid-template-columns:repeat(3,1fr)}}
.tool{border:1px solid var(--line);padding:20px;transition:box-shadow .15s ease}
.tool:hover{box-shadow:6px 6px 0 rgba(0,0,0,.35)}
.tool .trow{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.tool h3{font-size:18px;font-weight:700}
.tool .tstage{font-family:"IBM Plex Mono",monospace;font-size:11px;padding:2px 8px;border:1px solid var(--line);color:var(--blueprint)}
.tool .tfull{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--mono-slate);margin-bottom:12px}
.tool p{font-size:15px;color:var(--ink-soft)}

/* pitfalls */
.dark{background:var(--panel);color:var(--panel-ink);border-top:3px double var(--blueprint);border-bottom:3px double var(--blueprint)}
.dark .eyebrow{color:#1c5a8a}
.pit-grid{display:grid;gap:32px 40px}
@media(min-width:820px){.pit-grid{grid-template-columns:1fr 1fr}}
.pit{display:flex;gap:16px}
.pit .pnum{font-family:"IBM Plex Mono",monospace;color:#c23a10;font-size:14px;padding-top:4px;flex-shrink:0}
.pit h3{font-size:18px;font-weight:700;margin-bottom:4px}
.pit p{font-size:15px;color:#3d5975}

/* readiness */
.ready-grid{display:grid;gap:32px;align-items:start}
@media(min-width:900px){.ready-grid{grid-template-columns:1.4fr 1fr}}
.check-list{border:1px solid var(--line)}
.check-list label{display:flex;align-items:flex-start;gap:12px;padding:16px 20px;cursor:pointer}
.check-list label:hover{background:var(--paper-deep)}
.check-list label+label{border-top:1px solid var(--line)}
.check-list input{margin-top:7px;width:16px;height:16px;accent-color:var(--blueprint)}
.score-card{border:1px solid var(--line);background:var(--paper-deep);padding:24px;position:sticky;top:80px}
.score-num{font-family:"Archivo",sans-serif;font-weight:800;font-size:48px}
.score-num small{color:var(--mono-slate);font-size:24px;font-weight:600}
.bar{height:8px;background:var(--line-soft);margin:12px 0 16px}
.bar>div{height:8px;width:0;transition:width .2s ease,background .2s ease;background:var(--signal)}
#verdict{font-size:15px;color:var(--ink-soft)}

/* footer */
.site-foot{border-top:1px solid var(--line)}
.site-foot .wrap{display:flex;flex-direction:column;gap:16px;justify-content:space-between;padding-top:40px;padding-bottom:40px;font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--mono-slate)}
@media(min-width:768px){.site-foot .wrap{flex-direction:row}}

/* engineering title block */
.title-block{border:2px solid var(--blueprint);display:grid;grid-template-columns:1fr;font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--ink-soft);background:var(--paper)}
@media(min-width:768px){.title-block{grid-template-columns:2fr 1fr 1fr 1fr}}
.tb-cell{padding:10px 14px;border-top:1px solid var(--line)}
@media(min-width:768px){.tb-cell{border-top:0;border-left:1px solid var(--line)}.tb-cell:first-child{border-left:0}}
.tb-cell .tb-label{display:block;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--blueprint);margin-bottom:2px}
.tb-cell .tb-val{color:var(--ink)}
.site-foot .wrap{flex-direction:column}
.foot-note{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;width:100%}
