:root{--bg:#f7f8f4;--bg-sub:#eef1e9;--card:#fff;--ink:#1c2921;--ink-2:#344438;--muted:#626d62;--muted-2:#6d776d;--line:oklch(91% .005 270);--line-2:oklch(86% .006 270);--hover:oklch(96% .005 270);--good:#367047;--good-bg:oklch(96% .045 150);--good-line:oklch(82% .07 150);--warn:#976016;--warn-bg:oklch(96.5% .04 80);--warn-line:oklch(84% .08 80);--bad:oklch(55% .2 27);--bad-bg:oklch(96% .04 27);--bad-line:oklch(85% .07 27);--info:oklch(55% .13 250);--info-bg:oklch(96% .035 250);--info-line:oklch(85% .06 250);--accent:oklch(58% .14 150);--r-sm:5px;--r-md:8px;--r-lg:12px;--shadow-sm:0 1px 0 #0f141e08, 0 1px 2px #0f141e0a;--shadow-md:0 1px 0 #0f141e08, 0 4px 12px -2px #0f141e0f;--gap:14px;--pad:18px;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:ui-monospace, "SFMono-Regular", "SF Mono", Menlo, monospace}[data-density=compact]{--gap:10px;--pad:14px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-sans);background:var(--bg);color:var(--ink);font-feature-settings:"ss01", "cv11";-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.45}a{color:inherit}button{cursor:pointer;font-family:inherit}.mono{font-family:var(--font-mono);font-feature-settings:"zero", "ss02"}.app{flex-direction:column;min-height:100vh;display:flex}.nav{border-bottom:1px solid var(--line);background:var(--bg);z-index:50;position:sticky;top:0}.nav-inner{align-items:center;gap:22px;max-width:1184px;height:76px;margin:0 auto;padding:0 40px;display:flex}@media (width<=600px){.nav-inner{gap:12px;height:64px;padding:0 20px}}.brand{font-family:var(--font-mono);letter-spacing:-.06em;align-items:center;gap:8px;font-size:20px;font-weight:600;text-decoration:none;display:flex}.brand-mark{flex-shrink:0;display:block}.nav-search{background:var(--bg-sub);border:1px solid var(--line);border-radius:var(--r-md);max-width:460px;height:34px;font-family:var(--font-mono);color:var(--ink-2);flex:1;align-items:center;gap:8px;padding:0 12px;font-size:12.5px;transition:border-color .15s;display:flex}.nav-search:focus-within{border-color:var(--ink-2);background:var(--card)}.nav-search input{font-family:var(--font-mono);color:var(--ink);background:0 0;border:0;outline:none;flex:1;font-size:12.5px}.nav-search input::placeholder{color:var(--muted-2)}.kbd{font-family:var(--font-mono);color:var(--muted);border:1px solid var(--line-2);background:var(--card);border-radius:4px;padding:1px 5px;font-size:10.5px}.nav-links{align-items:center;gap:4px;margin-left:auto;display:flex}.nav-links a{color:var(--ink-2);border-radius:6px;padding:12px 10px;font-size:13px;text-decoration:none}.nav-links a:hover{background:var(--hover)}.avatar{color:#fff;background:linear-gradient(135deg,oklch(70% .13 250),oklch(60% .16 200));border-radius:50%;place-items:center;width:28px;height:28px;margin-left:6px;font-size:11px;font-weight:600;display:grid}.page{width:100%;max-width:1280px;margin:0 auto;padding:28px}.crumbs{font-family:var(--font-mono);color:var(--muted);align-items:center;gap:8px;margin-bottom:14px;font-size:11.5px;display:flex}.crumbs .sep{color:var(--muted-2)}.header{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:22px;display:flex}.h-title{font-family:var(--font-mono);letter-spacing:-.02em;align-items:baseline;gap:14px;margin:0;font-size:28px;font-weight:500;display:flex}.h-title .scheme{color:var(--muted-2);font-weight:400}.h-meta{color:var(--muted);flex-wrap:wrap;gap:6px 18px;margin-top:10px;font-size:12.5px;display:flex}.h-meta>div{white-space:nowrap}.h-meta .k{color:var(--muted-2);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;margin-right:6px;font-size:11.5px}.h-meta .v{font-family:var(--font-mono);color:var(--ink-2)}.h-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:8px;display:flex}.btn{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);height:32px;color:var(--ink);white-space:nowrap;flex-shrink:0;align-items:center;gap:7px;padding:0 12px;font-size:13px;font-weight:500;transition:background .15s,border-color .15s,transform .15s cubic-bezier(.2,0,0,1);display:inline-flex}.btn:hover{background:var(--hover);border-color:var(--line-2)}.btn:active:not(:disabled):not(:focus-visible){transform:scale(.96)}.btn-primary{background:var(--ink);color:#fff;border-color:var(--ink)}.btn-primary:hover{background:oklch(25% .015 270);border-color:oklch(25% .015 270)}.btn-ghost{color:var(--ink-2);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--hover)}.btn-icon{justify-content:center;width:32px;padding:0 8px}.btn-sm{height:26px;padding:0 9px;font-size:12px}.grade-panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);grid-template-columns:280px 1fr 280px;gap:0;margin-bottom:22px;display:grid;overflow:hidden}.grade-panel-two{grid-template-columns:1fr 1fr}.grade-cell{padding:26px var(--pad);border-right:1px solid var(--line)}.grade-cell:last-child{border-right:0}.grade-ring{place-items:center;padding:18px 0;display:grid}.grade-ring svg{width:168px;height:168px;display:block}.grade-label{text-align:center;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:8px;font-size:11px}.grade-sub{text-align:center;color:var(--ink-2);margin-top:2px;font-size:12.5px}.score-list{flex-direction:column;gap:16px;padding-top:4px;display:flex}.score-row{grid-template-columns:160px 1fr 56px;align-items:center;gap:14px;display:grid}.score-row .name{color:var(--ink-2);font-size:13px}.score-row .val{font-family:var(--font-mono);color:var(--ink);text-align:right;font-variant-numeric:tabular-nums;font-size:12.5px}.bar{background:var(--bg-sub);border-radius:3px;height:6px;position:relative;overflow:hidden}.bar>span{background:var(--ink);border-radius:3px;height:100%;display:block}.bar.good>span{background:var(--good)}.bar.warn>span{background:var(--warn)}.bar.bad>span{background:var(--bad)}.facts{flex-direction:column;gap:12px;padding-top:2px;display:flex}.fact{flex-direction:column;gap:2px;padding:0;display:flex}.fact .lbl{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);white-space:nowrap;font-size:10.5px}.fact .val{font-family:var(--font-mono);color:var(--ink);font-size:12.5px;text-align:left!important}.tabs{border-bottom:1px solid var(--line);scrollbar-width:none;align-items:center;gap:0;margin-bottom:18px;display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{color:var(--muted);white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;outline:none;align-items:center;gap:8px;margin-bottom:-1px;padding:10px 14px;font-size:13px;font-weight:500;display:inline-flex;position:relative}.tab:hover{color:var(--ink-2)}.tab.active{color:var(--ink);border-bottom-color:var(--ink)}.tab .count{font-family:var(--font-mono);background:var(--bg-sub);color:var(--ink-2);border-radius:10px;padding:1px 6px;font-size:11px}.tab.active .count{background:var(--ink);color:#fff}.tab .pip{background:var(--bad);border-radius:50%;width:6px;height:6px}.tab .pip.warn{background:var(--warn)}.section{gap:var(--gap);display:grid}.grid-2{gap:var(--gap);grid-template-columns:1.4fr 1fr;display:grid}.grid-3{gap:var(--gap);grid-template-columns:repeat(3,1fr);display:grid}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.card-head{padding:14px var(--pad);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;display:flex}.card-head h3{letter-spacing:-.005em;align-items:center;gap:8px;margin:0;font-size:13px;font-weight:600;display:flex}.card-head .sub{color:var(--muted);font-size:12px;font-weight:400}.card-body{padding:var(--pad)}.card-body.flush{padding:0}.pill{font-family:var(--font-mono);border:1px solid var(--line);color:var(--ink-2);background:var(--card);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:2px 8px;font-size:11px;display:inline-flex}.pill.good{color:var(--good);background:var(--good-bg);border-color:var(--good-line)}.pill.warn{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-line)}.pill.bad{color:var(--bad);background:var(--bad-bg);border-color:var(--bad-line)}.pill.info{color:var(--info);background:var(--info-bg);border-color:var(--info-line)}.pill.solid-dark{background:var(--ink);color:#fff;border-color:var(--ink)}.pill .dot{background:currentColor;border-radius:50%;width:6px;height:6px}.fact-url{font-family:var(--font-mono);color:var(--ink-2);word-break:break-all;margin:4px 0 6px;font-size:12px;text-decoration:none;display:inline-block}.fact-url:hover{color:var(--ink);text-decoration:underline}.fact-strip{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.tbl{border-collapse:separate;border-spacing:0;width:100%}.tbl th,.tbl td{text-align:left;border-bottom:1px solid var(--line);padding:10px 16px;font-size:13px}.tbl th{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--bg-sub);font-size:10.5px;font-weight:500}.tbl tr:last-child td{border-bottom:0}.tbl tr.hoverable{cursor:pointer;transition:background .12s}.tbl tr.hoverable:hover{background:var(--bg-sub)}.tbl td.mono,.tbl th.mono{font-family:var(--font-mono);font-size:12.5px}.chain{padding:8px 0}.cert-node{border-top:1px solid var(--line)}.cert-node:first-child{border-top:0}.cert-head{padding:14px var(--pad);cursor:pointer;align-items:center;gap:14px;display:flex}.cert-head:hover{background:var(--bg-sub)}.cert-step{background:var(--bg-sub);border:1px solid var(--line-2);width:22px;height:22px;font-family:var(--font-mono);color:var(--ink-2);border-radius:50%;flex-shrink:0;place-items:center;font-size:11px;display:grid}.cert-info{flex:1;min-width:0}.cert-cn{font-family:var(--font-mono);color:var(--ink);font-size:13px}.cert-sub{color:var(--muted);font-size:12px;font-family:var(--font-mono);margin-top:2px}.cert-meta{flex-shrink:0;align-items:center;gap:10px;display:flex}.caret{width:12px;height:12px;color:var(--muted-2);transition:transform .18s}.cert-node.open .caret{transform:rotate(90deg)}.cert-body{padding:4px var(--pad) 18px calc(var(--pad) + 36px);grid-template-columns:1fr 1fr;gap:6px 28px;display:grid}.cert-body .k{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:6px 0;font-size:11px}.cert-body .v{font-family:var(--font-mono);color:var(--ink);word-break:break-all;border-top:1px dashed var(--line);padding:6px 0;font-size:12.5px}.cert-body .k{border-top:1px dashed var(--line);padding-top:8px;padding-bottom:4px}.sct-body{gap:12px;font-size:13px;display:grid}.sct-body p{margin:0}.sct-source{gap:8px;display:grid}.sct-source+.sct-source{border-top:1px solid var(--line);padding-top:12px}.sct-source h4{margin:0;font-size:13px}.sct-log-ids{overflow-wrap:anywhere;margin:0;padding-left:20px;font-size:12px}.cipher-row td:first-child{width:36px}.cipher-name{font-family:var(--font-mono);font-size:12.5px}.cipher-row td .small{font-family:var(--font-mono);color:var(--muted);margin-top:2px;font-size:11px;display:block}.tt{z-index:60;background:var(--ink);color:#fff;pointer-events:none;border-radius:8px;width:280px;padding:10px 12px;font-size:11.5px;line-height:1.4;position:absolute;box-shadow:0 10px 28px -10px #00000059}.tt h5{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:#ffffff8c;margin:0 0 6px;font-size:11px;font-weight:500}.tt p{color:#ffffffd9;margin:0}.tt .row{font-family:var(--font-mono);justify-content:space-between;gap:12px;padding:3px 0;font-size:11px;display:flex}.tt .row .k{color:#ffffff8c}.tt .row .v{color:#fff}.proto-list{flex-direction:column;display:flex}.proto-row{padding:14px var(--pad);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;display:flex}.proto-row:last-child{border-bottom:0}.proto-name{align-items:baseline;gap:10px;display:flex}.proto-name b{font-family:var(--font-mono);font-size:14px;font-weight:500}.proto-name span{color:var(--muted);font-size:12px}.vuln-row{padding:14px var(--pad);border-bottom:1px solid var(--line);grid-template-columns:auto 1fr auto;align-items:center;gap:16px;display:grid}.vuln-row:last-child{border-bottom:0}.vuln-row .cve{font-family:var(--font-mono);color:var(--muted);margin-top:2px;font-size:11px}.vuln-row h4{margin:0;font-size:13.5px;font-weight:600}.vuln-row p{color:var(--muted);margin:4px 0 0;font-size:12.5px}.filters{align-items:center;gap:6px;display:flex}.chip{background:var(--card);border:1px solid var(--line);height:26px;color:var(--ink-2);cursor:pointer;font-size:12px;font-family:var(--font-sans);border-radius:999px;align-items:center;gap:6px;padding:0 10px;transition:all .12s;display:inline-flex}.chip:hover{background:var(--hover)}.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}.chip.on .ct{color:#ffffffa6}.chip .ct{font-family:var(--font-mono);color:var(--muted);font-size:11px}.codeblock{color:oklch(92% .005 80);font-family:var(--font-mono);border-radius:var(--r-md);white-space:pre;background:oklch(15% .012 270);padding:16px 18px;font-size:12px;line-height:1.55;position:relative;overflow-x:auto}.codeblock .copy-btn{color:oklch(85% .005 80);font-size:11.5px;font-family:var(--font-sans);background:#ffffff14;border:1px solid #ffffff1f;border-radius:6px;padding:4px 10px;transition:background .15s;position:absolute;top:10px;right:10px}.codeblock .copy-btn:hover{background:#ffffff24}.codeblock .cmt{color:oklch(60% .02 80)}.codeblock .kw{color:oklch(78% .13 250)}.codeblock .str{color:oklch(78% .12 150)}.codeblock .num{color:oklch(78% .14 80)}.scan-overlay{-webkit-backdrop-filter:blur(6px);z-index:100;background:oklch(98.5% .004 80/.85);place-items:center;animation:.2s fadeIn;display:grid;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.scan-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);width:460px;box-shadow:var(--shadow-md);padding:26px}.scan-title{align-items:center;gap:10px;margin-bottom:4px;font-size:14px;display:flex}.scan-title .spinner{border:2px solid var(--line-2);border-top-color:var(--ink);border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.scan-sub{font-family:var(--font-mono);color:var(--muted);margin-bottom:18px;font-size:12px}.scan-progress{background:var(--bg-sub);border-radius:2px;height:4px;margin-bottom:18px;overflow:hidden}.scan-progress>span{background:var(--ink);height:100%;transition:width .3s;display:block}.scan-steps{font-family:var(--font-mono);flex-direction:column;gap:6px;font-size:12px;display:flex}.scan-step{color:var(--muted-2);opacity:.5;align-items:center;gap:10px;transition:opacity .2s,color .2s;display:flex}.scan-step.active,.scan-step.done{color:var(--ink-2);opacity:1}.scan-step .ico{flex-shrink:0;place-items:center;width:14px;height:14px;display:grid}.scan-step.done .ico:before{content:"✓";color:var(--good);font-size:11px;font-weight:700}.scan-step.active .ico:before{content:"";background:var(--ink);border-radius:50%;width:8px;height:8px;animation:1s infinite pulse}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.7)}}.scan-step.pending .ico:before{content:"";background:var(--line-2);border-radius:50%;width:6px;height:6px}.footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;margin-top:60px;padding:24px 0 40px;font-size:12px;display:flex}.footer .left{font-family:var(--font-mono)}.footer a{text-decoration:none}.footer a:hover{color:var(--ink-2)}.sev{border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.sev.good{background:var(--good)}.sev.warn{background:var(--warn)}.sev.bad{background:var(--bad);box-shadow:0 0 0 3px var(--bad-bg)}.sev.info{background:var(--info)}.kv-grid{grid-template-columns:180px 1fr;gap:0;display:grid}.kv-grid>div{border-top:1px solid var(--line);padding:10px 0}.kv-grid>div:first-child,.kv-grid>div:nth-child(2){border-top:0}.kv-grid .k{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:11px}.kv-grid .v{font-family:var(--font-mono);color:var(--ink);word-break:break-all;font-size:12.5px}.row{align-items:center;gap:8px;display:flex}.spread{justify-content:space-between;align-items:center;gap:12px;display:flex}.muted{color:var(--muted)}.ink2{color:var(--ink-2)}.right{text-align:right}.shimmer{background:linear-gradient(90deg, var(--bg-sub) 0%, var(--hover) 50%, var(--bg-sub) 100%);background-size:200% 100%;border-radius:4px;animation:1.6s linear infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}@media (width<=880px){.grade-panel,.grade-panel-two{grid-template-columns:1fr}.grade-cell{border-right:0;border-bottom:1px solid var(--line)}.grade-cell:last-child{border-bottom:0}.grid-2,.grid-3{grid-template-columns:1fr}}@media (width<=600px){.page{padding:18px 16px}.header{flex-direction:column;gap:14px}.h-actions{justify-content:flex-start;width:100%}.h-title{flex-wrap:wrap;gap:10px;font-size:20px}.h-meta{gap:6px 12px;font-size:12px}.grade-cell{padding:20px 16px}.grade-ring svg{width:132px;height:132px}.score-row{grid-template-columns:110px 1fr 44px;gap:10px}.score-row .name{font-size:12px}.cert-head{gap:10px;padding:12px 14px}.cert-body{grid-template-columns:1fr;gap:0;padding:4px 14px 16px}.cert-body .k{padding-top:8px}.cert-body .v{padding-bottom:8px}.kv-grid{grid-template-columns:120px 1fr}.card-head{padding:12px 14px}.card-body{padding:14px}.card-body.flush{overflow-x:auto}.tbl th,.tbl td{padding:8px 12px;font-size:12.5px}.vuln-row{gap:12px;padding:12px 14px}.proto-row{padding:12px 14px}.tab{padding:10px 12px;font-size:12.5px}.footer{flex-direction:column;align-items:flex-start;gap:10px;padding:20px 0 32px}.scan-card{width:auto;max-width:calc(100vw - 32px);padding:20px}}html{scroll-padding-top:96px}[hidden]{display:none!important}:focus-visible{outline:2px solid var(--good);outline-offset:4px}button,a,input,summary{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:disabled{opacity:.65;cursor:wait}.brand-zero{color:var(--good);margin-left:-8px}.skip-link{z-index:100;background:var(--ink);color:#fff;border-radius:8px;padding:12px 18px;position:fixed;top:-80px;left:16px}.skip-link:focus{top:12px}.report-page .page{max-width:1184px;padding:36px 40px}.report-page .header>div{min-width:0}.h-title{overflow-wrap:anywhere;font-family:var(--font-sans);letter-spacing:-.04em;flex-wrap:wrap;gap:8px;font-size:32px;font-weight:500}.h-title .scheme{font-size:.7em}.report-intro{justify-content:space-between;align-items:baseline;gap:20px;margin-bottom:16px;display:flex}.report-intro h2{margin:0;font-size:17px;font-weight:500}.report-intro p{color:var(--muted);margin:0;font-size:12px}.grade-panel{border:0;border-radius:14px;box-shadow:0 0 0 1px #0000000d,0 2px 4px #00000004}.grade-cell{padding:24px}.grade-summary{align-items:center;gap:18px;display:flex}.grade-summary svg{flex-shrink:0;width:92px;height:92px}.grade-summary .grade-label{text-align:left;font-family:var(--font-sans);text-transform:none;letter-spacing:-.02em;color:var(--ink);margin:0 0 5px;font-size:17px}.grade-summary .grade-sub{text-align:left;color:var(--muted);overflow-wrap:anywhere;font-size:12px}.report-panel{min-width:0}.tabs{background:#edf0e8;border:0;border-radius:10px;gap:4px;margin-bottom:24px;padding:6px}.tab{white-space:nowrap;border:0;border-radius:6px;min-height:42px;padding:10px 14px}.tab.active{background:var(--card);color:var(--ink);box-shadow:0 1px 4px #0000000d}.tab.active:after{display:none}.tab:focus-visible{outline:2px solid var(--good);outline-offset:-2px}.card{border-radius:12px;box-shadow:0 0 0 1px #00000008,0 2px 4px #00000003}.cert-head{text-align:left;width:100%;font:inherit;color:inherit;background:0 0;border:0}.cert-cn,.cert-sub{overflow-wrap:anywhere}.cert-body .v,.kv-grid .v{overflow-wrap:anywhere;min-width:0}.report-footer{max-width:1104px;color:var(--muted);border-top:1px solid var(--line);text-align:center;margin:12px auto 0;padding:24px 20px 36px;font-size:11px}@media (width<=800px){.report-page .page{padding:24px}.nav-inner{padding-inline:24px}.report-intro{flex-direction:column;gap:6px}}@media (width<=600px){.report-page .page{padding:24px 16px}.nav-inner{padding-inline:20px}.nav-links a{padding-inline:7px;font-size:11px}.nav-links a.nav-github{display:none}.h-title{font-size:25px}.h-meta>div{white-space:normal;overflow-wrap:anywhere}.grade-cell{padding:20px 16px}.cert-head{flex-wrap:wrap}.cert-info{flex:160px}.cert-meta{flex-wrap:wrap;flex-basis:calc(100% - 32px);gap:6px;margin-left:32px}.cert-meta .caret{margin-left:auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.btn:active:not(:disabled):not(:focus-visible){transform:none}}
