:root{
  --paper:#FFFFFF; --wash:#F2F4F7; --ink:#0A0F1C; --ink2:#3A4255; --ink3:#5E667A; --rule:#D5D9E2; --rule-strong:#0A0F1C;
  --blue:#1546D6; --blue-dark:#0E318F; --blue-wash:#E7EDFC;
  --red:#C2410C; --red-wash:#FDEBE1; --amber:#8A5A00; --amber-wash:#FFF2CC; --green:#14703F; --green-wash:#E1F3E8;
  --sans:'Archivo',system-ui,sans-serif; --mono:'JetBrains Mono',ui-monospace,monospace;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.5;font-variation-settings:"wdth" 100}
a{color:var(--blue)} a:hover{color:var(--blue-dark)}
h1,h2,h3,p{margin:0}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
.wide{font-variation-settings:"wdth" 118}
.narrow{font-variation-settings:"wdth" 75}
.mono{font-family:var(--mono)}
:focus-visible{outline:3px solid var(--blue);outline-offset:2px}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border-radius:3px;font:600 15px var(--sans);text-decoration:none;cursor:pointer;border:2px solid var(--ink);background:var(--ink);color:#fff;white-space:nowrap}
.btn:hover{background:#222a3d;color:#fff}
.btn.blue{background:var(--blue);border-color:var(--blue)} .btn.blue:hover{background:var(--blue-dark);border-color:var(--blue-dark)}
.btn.ghost{background:transparent;color:var(--ink)} .btn.ghost:hover{background:var(--wash)}
.btn.sm{min-height:36px;padding:0 12px;font-size:14px}
.btn[aria-pressed="true"]{background:var(--blue);border-color:var(--blue);color:#fff}

/* top bar */
.topbar{background:var(--ink);color:#C9CFDC;font-size:13px}
.topbar .wrap{display:flex;justify-content:space-between;gap:12px;padding-top:8px;padding-bottom:8px;flex-wrap:wrap}
header{border-bottom:2px solid var(--ink);background:var(--paper);position:sticky;top:0;z-index:20}
nav{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px;min-height:68px;padding-top:10px;padding-bottom:10px}
.logo{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font-weight:800;font-size:22px;letter-spacing:-0.01em;font-variation-settings:"wdth" 112}
.logo:hover{color:var(--ink)}
.navlinks{display:flex;flex-wrap:wrap;align-items:center;gap:6px 22px;font-weight:500;font-size:15px}
.navlinks a:not(.btn){color:var(--ink);text-decoration:none;padding:8px 0;border-bottom:2px solid transparent}
.navlinks a:not(.btn):hover{border-bottom-color:var(--ink)}

/* hero */
.hero{padding:72px 0 56px;border-bottom:1px solid var(--rule)}
.hero h1{font-size:clamp(40px,6.4vw,84px);line-height:.95;font-weight:850;letter-spacing:-0.025em;max-width:980px;font-variation-settings:"wdth" 112}
.hero h1 em{font-style:normal;color:var(--blue)}
.hero .sub{margin-top:22px;font-size:19px;color:var(--ink2);max-width:640px}
.scanbar{margin-top:36px;display:flex;flex-wrap:wrap;border:2px solid var(--ink);border-radius:3px;background:#fff}
.scanbar .f{display:flex;flex-direction:column;padding:10px 16px;border-right:1px solid var(--rule);min-width:0}
.scanbar label{font-size:12px;font-weight:600;color:var(--ink3)}
.scanbar input,.scanbar select{border:0;background:transparent;font:500 18px var(--sans);color:var(--ink);padding:4px 0;min-height:32px;width:100%}
.scanbar input{font-family:var(--mono);font-size:17px}
.scanbar input:focus,.scanbar select:focus{outline:none}
.scanbar .f:focus-within{background:var(--blue-wash)}
.scanbar button{border-radius:0;min-height:auto;font-size:17px;padding:0 28px;border:0}
.hero-foot{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px 24px;align-items:center;font-size:14px;color:var(--ink3)}
.hero-foot label{display:flex;align-items:center;gap:8px;color:var(--ink2)}
.hero-foot input{width:18px;height:18px;accent-color:var(--blue)}
.err{color:var(--red);font-weight:600;font-size:14px}

.frameworks{display:flex;flex-wrap:wrap;border-bottom:1px solid var(--rule)}
.frameworks span{flex:1 1 160px;padding:18px 20px;border-right:1px solid var(--rule);font-weight:700;font-size:15px}
.frameworks span:last-child{border-right:0}
.frameworks small{display:block;font-weight:400;color:var(--ink3);font-size:13px}

section.block{padding:80px 0}
.sec-title{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:24px 48px;align-items:end;margin-bottom:36px}
.sec-title h2{font-size:clamp(30px,4vw,50px);font-weight:850;line-height:1;letter-spacing:-0.02em;font-variation-settings:"wdth" 112}
.sec-title p{color:var(--ink2);font-size:17px}
@media (max-width:760px){.sec-title{grid-template-columns:1fr}}

/* checks table */
.checks{border-top:2px solid var(--ink)}
.checks .r{display:grid;grid-template-columns:64px minmax(0,1.1fr) minmax(0,2fr);gap:8px 24px;padding:20px 0;border-bottom:1px solid var(--rule);align-items:baseline}
.checks .n{font-family:var(--mono);font-size:14px;color:var(--ink3)}
.checks h3{font-size:20px;font-weight:700}
.checks p{color:var(--ink2)}
@media (max-width:700px){.checks .r{grid-template-columns:44px 1fr}.checks p{grid-column:2}}

/* fix service band */
.service{background:var(--blue);color:#fff}
.service .wrap{padding-top:80px;padding-bottom:80px}
.service h2{font-size:clamp(32px,4.4vw,56px);font-weight:850;line-height:1;letter-spacing:-0.02em;max-width:760px;font-variation-settings:"wdth" 112}
.service .lede{margin-top:18px;max-width:620px;font-size:18px;color:#D9E2FF}
.service-steps{margin-top:44px;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));border-top:2px solid #fff}
.service-steps div{padding:22px 24px 0 0}
.service-steps b{display:block;font-size:44px;font-weight:850;line-height:1;margin-bottom:12px;font-variation-settings:"wdth" 125}
.service-steps h3{font-size:19px;margin-bottom:6px}
.service-steps p{color:#D9E2FF}
.service .btn{background:#fff;color:var(--blue);border-color:#fff;margin-top:40px}
.service .btn:hover{background:var(--blue-wash)}

.faq{border-top:2px solid var(--ink)}
details{border-bottom:1px solid var(--rule)}
summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:16px;padding:20px 0;font-weight:700;font-size:18px}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";font-weight:400;font-size:24px;line-height:1}
details[open] summary::after{content:"–"}
details p{padding:0 0 22px;color:var(--ink2);max-width:760px}

footer{border-top:2px solid var(--ink);background:var(--wash)}
footer .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;padding-top:28px;padding-bottom:28px;font-size:14px;color:var(--ink3)}

/* report */
.rhead{padding:36px 0 28px;border-bottom:2px solid var(--ink);display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px}
.rhead h1{font-size:clamp(28px,4.6vw,56px);font-weight:850;line-height:1;letter-spacing:-0.02em;word-break:break-word;font-variation-settings:"wdth" 100}
.rhead .meta{font-size:14px;color:var(--ink3);margin-bottom:8px}
.scorebox{display:flex;align-items:stretch;border:2px solid var(--ink)}
.scorebox div{padding:10px 18px;display:flex;flex-direction:column;justify-content:center}
.scorebox div+div{border-left:2px solid var(--ink)}
.scorebox .big{font-size:48px;font-weight:850;line-height:1;font-variation-settings:"wdth" 125}
.scorebox small{font-size:12px;color:var(--ink3);font-weight:600}
.verdict{padding:22px 0;border-bottom:1px solid var(--rule);font-size:19px;max-width:860px}

.counts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--rule)}
.counts div{padding:18px 20px 18px 0;border-right:1px solid var(--rule)}
.counts div:last-child{border-right:0}
.counts div+div{padding-left:20px}
.counts b{display:block;font-size:36px;font-weight:850;line-height:1.1;font-variation-settings:"wdth" 120}
.counts span{font-size:14px;color:var(--ink3)}
@media (max-width:620px){.counts{grid-template-columns:repeat(2,minmax(0,1fr))}.counts div{padding-left:0!important}}

.rgrid{display:flex;flex-wrap:wrap;gap:40px;padding-top:32px}
.rmain{flex:999 1 600px;min-width:0}
.raside{flex:1 1 300px;min-width:0}

.areas{border-top:2px solid var(--ink)}
.areas h2,.raside h2{font-size:15px;font-weight:700;padding:12px 0;border-bottom:1px solid var(--rule);text-transform:uppercase;letter-spacing:.04em}
.arow{display:grid;grid-template-columns:minmax(0,1fr) 120px 44px;gap:12px;align-items:center;padding:9px 0;border-bottom:1px solid var(--rule);font-size:15px}
.arow .track{height:10px;background:var(--wash)}
.arow .bar{height:100%}
.arow .v{font-family:var(--mono);font-size:13px;text-align:right}

.toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:28px 0 14px;border-bottom:2px solid var(--ink)}
.toolbar h2{font-size:28px;font-weight:850;font-variation-settings:"wdth" 112}
.tabs{display:flex;flex-wrap:wrap;border:2px solid var(--ink)}
.tabs button{font:600 14px var(--sans);min-height:40px;padding:0 14px;background:#fff;color:var(--ink);border:0;cursor:pointer}
.tabs button+button{border-left:2px solid var(--ink)}
.tabs button[aria-pressed="true"]{background:var(--ink);color:#fff}

.finding{border-bottom:1px solid var(--rule);display:grid;grid-template-columns:92px minmax(0,1fr);gap:4px 20px;padding:22px 0}
.sev{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:5px 8px;align-self:start;text-align:center;border-left:4px solid}
.sev.urgent{background:var(--red-wash);color:var(--red)}
.sev.review{background:var(--amber-wash);color:var(--amber)}
.sev.passed{background:var(--green-wash);color:var(--green)}
.finding .where{font-family:var(--mono);font-size:13px;color:var(--ink3)}
.finding h3{font-size:19px;font-weight:700;margin:2px 0 6px}
.finding .why{color:var(--ink2)}
.finding .reg{font-size:13px;color:var(--ink3);margin-top:6px}
.finding .actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.finding pre{margin:12px 0 0;font:13.5px var(--mono);background:var(--wash);border-left:3px solid var(--ink);padding:12px 14px;white-space:pre-wrap;word-break:break-word}
@media (max-width:560px){.finding{grid-template-columns:1fr}.sev{justify-self:start}}

/* fix cart */
.cart{border:2px solid var(--ink);position:sticky;top:96px}
.cart-head{background:var(--ink);color:#fff;padding:14px 16px}
.cart-head h2{font-size:18px;font-weight:800;padding:0;border:0;text-transform:none;letter-spacing:0}
.cart-head p{font-size:14px;color:#C9CFDC;margin-top:2px}
.cart-body{padding:16px;display:flex;flex-direction:column;gap:12px}
.cart ul{margin:0;padding:0;list-style:none}
.cart li{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--rule);font-size:14px}
.cart li button{border:0;background:none;color:var(--ink3);cursor:pointer;font-size:18px;min-width:32px;min-height:32px}
.cart li button:hover{color:var(--red)}
.cart .empty{font-size:14px;color:var(--ink3)}
.f2{display:flex;flex-direction:column;gap:4px}
.f2 label{font-size:13px;font-weight:600;color:var(--ink2)}
.f2 input,.f2 select,.f2 textarea{font:15px var(--sans);border:1.5px solid #A9B0C0;border-radius:2px;padding:10px;min-height:44px;color:var(--ink);background:#fff}
.f2 textarea{min-height:70px;resize:vertical}
.ok{background:var(--green-wash);border-left:4px solid var(--green);padding:12px;font-size:14px}

/* scanning overlay */
.scanning{position:fixed;inset:0;background:var(--paper);display:none;z-index:50;padding:24px;align-items:center;justify-content:center}
.scanning.on{display:flex}
.scan-box{max-width:560px;width:100%}
.scan-box h2{font-size:clamp(32px,5vw,52px);font-weight:850;line-height:1;margin:6px 0 24px;font-variation-settings:"wdth" 112}
.scan-steps{border-top:2px solid var(--ink)}
.scan-steps div{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--rule);font-size:15px;color:var(--ink3)}
.scan-steps div.done{color:var(--ink)}
.scan-steps div.done::after{content:"OK";font-family:var(--mono);font-size:13px;color:var(--green);font-weight:600}
.scan-steps div.run::after{content:"…";font-family:var(--mono)}

[hidden]{display:none!important}
@media print{header,.topbar,footer,.raside,.finding .actions,.toolbar .tabs{display:none!important}.cart{position:static}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* production additions */
.demo{margin-top:20px;background:var(--amber-wash);border-left:4px solid var(--amber);padding:12px 16px;font-size:15px;color:#4A3300}
.hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
