:root{--paper: #f5f2ea;--paper-2: #ece8dd;--card: #fbfaf6;--ink: #1c1d1f;--ink-2: #4a4c50;--ink-3: #7b7d80;--rule: #d9d4c7;--rule-2: #c6c0b0;--tb: #b5432b;--tb-bg: #f1d9cf;--ok: #2c6a4c;--ok-bg: #d3e6d9;--refer: #a66a12;--refer-bg: #f0e0bf;--focus: #2b5d8a;--serif: "Source Serif 4", Georgia, serif;--sans: "IBM Plex Sans", system-ui, -apple-system, sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace;--r: 4px}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--paper: #161718;--paper-2: #1f2022;--card: #1b1c1e;--ink: #ecebe6;--ink-2: #b9b8b2;--ink-3: #8a8a86;--rule: #303235;--rule-2: #3d3f43;--tb: #e0775c;--tb-bg: #3a231d;--ok: #6cb48f;--ok-bg: #1d2e25;--refer: #d9a149;--refer-bg: #33291a;--focus: #79a8d4}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.55 var(--sans);font-feature-settings:"ss02";-webkit-font-smoothing:antialiased}a{color:inherit;text-underline-offset:3px;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}h1,h2,h3{font-family:var(--serif);font-weight:600;letter-spacing:-.01em;margin:0}h1{font-size:clamp(2rem,4.2vw,3rem);line-height:1.08}h2{font-size:1.55rem;line-height:1.2}h3{font-size:1.15rem;line-height:1.3}p{margin:0 0 .9em}.num,.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--ink-2)}.faint{color:var(--ink-3)}.small{font-size:.875rem}.xs{font-size:.78rem}.eyebrow{font:500 .75rem/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.wrap{max-width:1120px;margin:0 auto;padding:0 16px}@media (min-width: 720px){.wrap{padding:0 32px}}.top{border-bottom:1px solid var(--rule)}.top .wrap{display:flex;align-items:center;justify-content:space-between;height:60px;gap:16px}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:600;letter-spacing:-.01em}.brand svg{width:22px;height:22px}.nav{display:flex;gap:22px;font-size:.94rem}.nav a{text-decoration:none;color:var(--ink-2);padding:18px 0;border-bottom:2px solid transparent}.nav a[aria-current=page]{color:var(--ink);border-bottom-color:var(--ink)}.nav a:hover{color:var(--ink)}.notice{border-bottom:1px solid var(--rule);background:var(--paper-2);font-size:.82rem;color:var(--ink-2)}.notice .wrap{padding-top:8px;padding-bottom:8px}main{padding:40px 0 80px}.lede{max-width:640px;font-size:1.08rem;color:var(--ink-2);margin-top:14px}.section{margin-top:48px}.rule{border:0;border-top:1px solid var(--rule);margin:40px 0}.tabs{display:inline-flex;border:1px solid var(--rule-2);border-radius:var(--r);overflow:hidden;margin:32px 0 20px}.tabs button{font:500 .92rem var(--sans);color:var(--ink-2);background:transparent;border:0;padding:9px 18px;cursor:pointer}.tabs button+button{border-left:1px solid var(--rule-2)}.tabs button[aria-selected=true]{background:var(--ink);color:var(--paper)}.grid2{display:grid;gap:24px}@media (min-width: 900px){.grid2{grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:40px;align-items:start}}.panel{background:var(--card);border:1px solid var(--rule);border-radius:var(--r);padding:20px}@media (min-width: 720px){.panel{padding:24px}}.panel h3{margin-bottom:6px}.steps{margin:12px 0 0;padding-left:1.2em;color:var(--ink-2);font-size:.92rem}.steps li{margin:4px 0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:500 .94rem var(--sans);border-radius:var(--r);cursor:pointer;padding:10px 16px;border:1px solid var(--ink);background:var(--ink);color:var(--paper)}.btn:hover{opacity:.9}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.ghost{background:transparent;color:var(--ink);border-color:var(--rule-2)}.btn.ghost:hover{border-color:var(--ink);opacity:1}.btn.rec{background:var(--tb);border-color:var(--tb);color:#fff}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.drop{margin-top:16px;border:1px dashed var(--rule-2);border-radius:var(--r);padding:28px 16px;text-align:center;cursor:pointer;color:var(--ink-2);background:transparent;width:100%;font:inherit}.drop:hover,.drop.over{border-color:var(--ink);color:var(--ink);background:var(--paper-2)}.drop strong{color:var(--ink);font-weight:500}.verdict{border-left:4px solid var(--c);background:var(--bg);padding:16px 18px;border-radius:0 var(--r) var(--r) 0}.verdict .label{font:600 1.35rem/1.2 var(--serif);color:var(--c)}.verdict p{margin:6px 0 0;color:var(--ink);font-size:.95rem}.v-tb{--c: var(--tb);--bg: var(--tb-bg)}.v-ok{--c: var(--ok);--bg: var(--ok-bg)}.v-refer{--c: var(--refer);--bg: var(--refer-bg)}.v-reject{--c: var(--ink-2);--bg: var(--paper-2)}.scale{margin-top:22px}.scale svg{width:100%;height:auto;display:block;overflow:visible}.scale{max-width:560px}.scale text{font:12px var(--mono);fill:var(--ink-3)}.scale .zl{font:500 12px var(--sans)}.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 16px;font-size:.9rem;margin:16px 0 0}.kv dt{color:var(--ink-3)}.kv dd{margin:0;font-family:var(--mono)}.warn{margin-top:14px;font-size:.86rem;color:var(--ink-2);padding-left:12px;border-left:2px solid var(--refer)}.warn div+div{margin-top:4px}.viewer{position:relative;margin-top:18px;background:#000;border-radius:var(--r);overflow:hidden;aspect-ratio:1;max-width:420px}.viewer img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;image-rendering:auto}.viewer .heat{mix-blend-mode:normal;transition:opacity .15s}.slider{display:flex;align-items:center;gap:12px;margin-top:10px;font-size:.85rem;color:var(--ink-2);max-width:420px}.slider input{flex:1;accent-color:var(--ink)}.meter{height:6px;background:var(--paper-2);border-radius:3px;overflow:hidden;margin-top:14px}.meter div{height:100%;background:var(--ink);transition:width 60ms linear}.timer{font:500 1.6rem var(--mono);margin-top:14px}.wave svg{width:100%;height:96px;display:block}.legend{display:flex;gap:16px;font-size:.8rem;color:var(--ink-3);margin-top:6px;flex-wrap:wrap}.sw{display:inline-block;width:10px;height:10px;margin-right:6px;vertical-align:-1px;border-radius:2px}.qs{display:grid;gap:10px;margin-top:14px}.q{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:.92rem;padding:8px 0;border-bottom:1px solid var(--rule)}.q:last-child{border-bottom:0}.seg{display:inline-flex;border:1px solid var(--rule-2);border-radius:var(--r);overflow:hidden;flex-shrink:0}.seg button{font:.82rem var(--sans);background:transparent;border:0;padding:5px 11px;cursor:pointer;color:var(--ink-2)}.seg button+button{border-left:1px solid var(--rule-2)}.seg button[aria-pressed=true]{background:var(--ink);color:var(--paper)}.q input[type=number]{width:84px;font:.9rem var(--mono);padding:5px 8px;border:1px solid var(--rule-2);border-radius:var(--r);background:var(--card);color:var(--ink)}details summary{cursor:pointer;font-size:.92rem;color:var(--ink-2);margin-top:18px}.tbl{width:100%;border-collapse:collapse;font-size:.9rem}.tbl th,.tbl td{text-align:left;padding:9px 12px 9px 0;border-bottom:1px solid var(--rule);vertical-align:top}.tbl th{font:500 .75rem var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3)}.tbl td.n{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}.tbl tr.hl td{font-weight:600}.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.pass{color:var(--ok)}.fail{color:var(--tb)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));border-top:1px solid var(--rule);border-left:1px solid var(--rule);margin-top:20px}.stat{padding:16px;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule)}.stat .v{font:500 1.7rem/1.1 var(--mono);margin-top:8px}.stat .s{font-size:.8rem;color:var(--ink-3);margin-top:4px}.chart{max-width:540px}.chart svg{width:100%;height:auto;display:block}.chart text{font:11px var(--mono);fill:var(--ink-3)}.prose{max-width:700px}.prose p,.prose li{color:var(--ink-2)}.prose h2{margin:40px 0 12px}.prose h3{margin:28px 0 8px}.spinner{width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{height:140px;background:var(--paper-2);border-radius:var(--r)}.empty{padding:40px 0;color:var(--ink-3);font-size:.95rem}footer{border-top:1px solid var(--rule);padding:28px 0 40px;font-size:.82rem;color:var(--ink-3)}footer .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}@media (max-width: 560px){.nav{gap:14px;font-size:.88rem}.brand span{display:none}}
