:root{color-scheme:light;--bg: #f4efe6;--bg-alt: #fff9f0;--panel: #fffdf8;--text: #1f1b16;--muted: #4c4337;--line: #d4c8b6;--accent: #0f6a55;--accent-2: #b3432f;--focus: #005fcc;--ok: #165b33;--bad: #8f1d1d}:root[data-theme=dark]{color-scheme:dark;--bg: #111417;--bg-alt: #1a2026;--panel: #202731;--text: #f1f4f8;--muted: #ccd3dc;--line: #324052;--accent: #5fe0b5;--accent-2: #ff9878;--focus: #8cc2ff;--ok: #8af0b8;--bad: #ff9b9b}*{box-sizing:border-box}html,body{margin:0;padding:0;background:radial-gradient(circle at 20% 0%,var(--bg-alt),var(--bg));background-color:var(--bg);color:var(--text);font-family:Atkinson Hyperlegible,Segoe UI,sans-serif;font-size:16px;line-height:1.5}body{min-height:100vh}.skip-link{position:absolute;left:.5rem;top:-4rem;background-color:var(--panel);color:var(--text);padding:.65rem .9rem;border-radius:.5rem;border:2px solid var(--focus);z-index:1000}.skip-link:focus{top:.5rem}.page{max-width:1200px;margin:0 auto;padding:.75rem}.hero,.panel,.footer{background-color:var(--panel);border:1px solid var(--line);border-radius:1rem;box-shadow:0 8px 30px #0000000f}.hero{position:relative;padding:1rem 4.5rem 1rem 1rem}.theme-toggle{position:absolute;top:.6rem;right:.6rem;width:2.6rem;height:2.6rem;border:1px solid var(--line);border-radius:50%;background-color:var(--panel);color:var(--text);display:inline-flex;align-items:center;justify-content:center;font:inherit;line-height:1;cursor:pointer}.theme-toggle:hover{background-color:color-mix(in srgb,var(--accent) 14%,var(--panel));color:var(--accent)}h1,h2,h3{line-height:1.2}.subtitle{max-width:72ch}.cl-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:clamp(1rem,4vw,3rem);flex-wrap:wrap;margin:clamp(1rem,3vw,2rem) 0 1.5rem}.cl-hero-main{flex:1 1 22rem;min-width:min(100%,20rem)}.cl-hero-title{margin:0;font-size:clamp(1.6rem,3.8vw,2.7rem);font-weight:700;line-height:1.1;letter-spacing:.01em}.cl-hero-sub{margin:.4rem 0 0;font-size:clamp(.9rem,1.6vw,1.05rem);letter-spacing:.01em;opacity:.85}.cl-hero-desc{margin:.55rem 0 0;font-size:1rem;line-height:1.5;color:var(--muted);max-width:60ch}.cl-hero-why{flex:0 1 min(40%,26rem);min-width:min(100%,15rem);border:1px solid var(--line);border-radius:10px;padding:.85rem 1.05rem;background:color-mix(in oklab,var(--accent) 6%,transparent)}.cl-hero-why-label{display:block;font-size:.68rem;font-weight:700;letter-spacing:.14em}.cl-hero-why-text{margin:.35rem 0 0;font-size:.95rem;line-height:1.5}@media (max-width:640px){.cl-hero{flex-direction:column}.cl-hero-why{flex-basis:auto;width:100%}}.warning{border-left:5px solid var(--accent-2);padding:.75rem;background-color:color-mix(in srgb,var(--accent-2) 11%,transparent);border-radius:.5rem}.toc{position:sticky;top:0;z-index:50;margin-top:.9rem;padding:.5rem .6rem;background-color:color-mix(in srgb,var(--panel) 92%,var(--bg-alt));border:1px solid var(--line);border-radius:.75rem;display:flex;flex-wrap:wrap;gap:.25rem .5rem;font-size:.85rem;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.toc a{text-decoration:none;color:var(--text);padding:.25rem .55rem;border-radius:999px;border:1px solid transparent}.toc a:hover{border-color:var(--line)}.toc a.active{background-color:color-mix(in srgb,var(--accent) 22%,transparent);border-color:var(--accent);color:var(--text);font-weight:600}.panels{display:grid;gap:.9rem;margin-top:.9rem}.panel{padding:1rem}.chip-row,.callouts,.links,.controls-row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.chip{display:inline-flex;align-items:center;border:1px solid var(--line);background-color:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--text);border-radius:999px;padding:.35rem .7rem;font-size:.9rem}.chip.status{background-color:color-mix(in srgb,var(--accent-2) 18%,transparent)}.btn,select,textarea,.badge{min-height:44px}.btn,select,input[type=number]{border-radius:.6rem;border:1px solid var(--line);padding:.55rem .9rem;font:inherit;color:var(--text);background-color:var(--panel)}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:1.8rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%238b949e' stroke-width='2' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .6rem center}.btn{cursor:pointer;background:linear-gradient(130deg,color-mix(in srgb,var(--accent) 20%,var(--panel)),var(--panel))}.btn.secondary{background:linear-gradient(130deg,color-mix(in srgb,var(--accent-2) 20%,var(--panel)),var(--panel))}.btn:disabled{opacity:.6;cursor:not-allowed}input[type=range]{accent-color:var(--accent);min-width:200px}textarea{width:100%;border-radius:.6rem;border:1px solid var(--line);padding:.6rem;font:inherit;color:var(--text);background-color:var(--panel)}a{color:var(--accent)}.badge{text-decoration:none;border-radius:999px;border:1px solid var(--line);padding:.55rem .9rem;display:inline-flex;align-items:center;background-color:color-mix(in srgb,var(--accent) 12%,transparent)}.table-wrap{width:100%;overflow-x:auto;border:1px solid var(--line);border-radius:.75rem}table{width:100%;border-collapse:collapse;min-width:480px}#panel-compare table{min-width:980px}th,td{border-bottom:1px solid var(--line);padding:.55rem;text-align:left;font-size:.95rem;vertical-align:top}caption{text-align:left;padding:.55rem;font-weight:600}.output{margin-top:.7rem;border:1px solid var(--line);border-radius:.65rem;padding:.75rem;background-color:color-mix(in srgb,var(--bg-alt) 65%,var(--panel))}.hex{display:inline-block;max-width:100%;overflow-x:auto;font-family:JetBrains Mono,Cascadia Mono,monospace;font-size:.85rem;word-break:break-all;vertical-align:top}.copy-btn{margin-left:.3rem;font-size:.75rem;border:1px solid var(--line);background-color:var(--panel);color:var(--muted);border-radius:.4rem;padding:.1rem .4rem;cursor:pointer}.copy-btn:hover{color:var(--accent);border-color:var(--accent)}.viz-grid{display:grid;gap:.65rem}.mini-card{border:1px solid var(--line);border-radius:.7rem;padding:.75rem;background-color:color-mix(in srgb,var(--accent) 8%,transparent)}.bars{margin-top:.8rem;display:grid;gap:.45rem}.bar-row{display:grid;grid-template-columns:minmax(90px,170px) 1fr auto;align-items:center;gap:.55rem}.bar-track{border:1px solid var(--line);background-color:color-mix(in srgb,var(--panel) 60%,var(--bg-alt));border-radius:999px;height:20px}.bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),var(--accent-2))}.small{font-size:.92rem}.small.strong{font-weight:600}.error{color:var(--bad);font-weight:700}.ok{color:var(--ok)}.bad{color:var(--bad)}.threat-list{padding-left:1.2rem;display:grid;gap:.4rem}.gloss{display:inline;background-color:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--text);border:1px dashed color-mix(in srgb,var(--accent) 60%,var(--line));border-radius:.35rem;padding:0 .25rem;font:inherit;cursor:help;text-decoration:underline dotted;text-underline-offset:3px}.gloss:hover{background-color:color-mix(in srgb,var(--accent) 25%,transparent)}.gloss-popover{position:absolute;max-width:360px;background-color:var(--panel);border:1px solid var(--accent);border-radius:.75rem;padding:.85rem;box-shadow:0 14px 40px #0000002e;z-index:200}.gloss-popover h4{margin:0 0 .4rem}.gloss-popover p{margin:0 0 .6rem;font-size:.9rem}.gloss-close{background-color:var(--panel);border:1px solid var(--line);border-radius:.4rem;padding:.2rem .55rem;font:inherit;cursor:pointer}.glossary-list{display:grid;gap:.5rem}.glossary-list dt{font-weight:600}.glossary-list dd{margin:0 0 .5rem 1rem;color:var(--muted)}.sizing-table{margin-top:.8rem;overflow-x:auto}.sizing-table table{min-width:480px}#qc-viz{margin-top:.6rem;border:1px solid var(--line);border-radius:.75rem;padding:.8rem;background-color:color-mix(in srgb,var(--bg-alt) 60%,var(--panel))}.qc-block{display:grid;gap:.5rem}.qc-caption{margin:0 0 .4rem;font-size:.9rem}.qc-sparse{display:flex;flex-wrap:wrap;gap:.25rem;margin-bottom:.4rem}.qc-bit{width:2rem;height:2rem;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:.4rem;background-color:var(--panel);color:var(--muted);cursor:pointer;font-family:JetBrains Mono,monospace;font-size:.85rem}.qc-bit.on{background-color:color-mix(in srgb,var(--accent) 40%,var(--panel));color:var(--text);border-color:var(--accent);font-weight:700}.qc-row{display:grid;grid-template-columns:minmax(4.5rem,auto) 1fr;align-items:center;gap:.5rem}.qc-label{font-family:JetBrains Mono,monospace;font-size:.85rem;color:var(--muted)}.qc-cells{display:flex;flex-wrap:wrap;gap:2px}.cell{width:1.4rem;height:1.4rem;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:.25rem;background-color:var(--panel);font-family:JetBrains Mono,monospace;font-size:.75rem;color:var(--muted)}.cell.on{background-color:color-mix(in srgb,var(--accent-2) 40%,var(--panel));color:var(--text);border-color:var(--accent-2);font-weight:700}.cell.marked{outline:2px solid var(--accent);outline-offset:1px}.qc-rotations{display:grid;gap:.3rem}.kem-steps{display:grid;gap:.4rem;margin-top:.8rem}.step{border:1px solid var(--line);border-radius:.6rem;padding:.55rem .7rem;background-color:color-mix(in srgb,var(--bg-alt) 50%,var(--panel))}.step>summary{cursor:pointer;font-weight:600}.step>div{margin-top:.4rem}.sc-chart{display:grid;gap:.4rem;margin-top:.5rem}.sc-row{display:grid;grid-template-columns:minmax(110px,160px) 1fr;align-items:center;gap:.5rem}.sc-label{font-family:JetBrains Mono,monospace;font-size:.85rem}.sc-bars{display:grid;gap:.25rem}.sc-bar{height:22px;border-radius:.3rem;display:flex;align-items:center;padding:0 .4rem;font-size:.8rem;color:var(--text);overflow:hidden;white-space:nowrap}.sc-bar.naive{background:linear-gradient(90deg,color-mix(in srgb,var(--accent-2) 40%,var(--panel)),color-mix(in srgb,var(--accent-2) 12%,var(--panel)))}.sc-bar.constant{background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 40%,var(--panel)),color-mix(in srgb,var(--accent) 12%,var(--panel)))}.verif-bar{display:inline-block;width:160px;height:12px;border:1px solid var(--line);border-radius:999px;overflow:hidden;vertical-align:middle;background-color:var(--panel);margin-right:.4rem}.verif-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2))}.verif-pct{font-family:JetBrains Mono,monospace;font-size:.85rem}.lede{font-weight:600;margin-bottom:.4rem}.build-steps{padding-left:1.3rem;display:grid;gap:.55rem}.build-steps li{line-height:1.55}.build-steps code,.two-layer-key code,.cc-caption code,.cb-label code,.fo-diagram code{font-family:JetBrains Mono,Cascadia Mono,monospace;background-color:color-mix(in srgb,var(--accent) 14%,transparent);border-radius:.3rem;padding:0 .25rem}.aside{margin-top:.8rem;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:.5rem;padding:.4rem .7rem;background-color:color-mix(in srgb,var(--bg-alt) 55%,var(--panel))}.aside>summary{cursor:pointer;font-weight:600}.aside>div{margin-top:.4rem;display:grid;gap:.5rem}.two-layer-key{padding-left:1.2rem;display:grid;gap:.4rem;margin:.6rem 0}#concat-viz{margin-top:.6rem;border:1px solid var(--line);border-radius:.75rem;padding:.8rem;background-color:color-mix(in srgb,var(--bg-alt) 60%,var(--panel))}.cc-caption{margin:0 0 .6rem;font-size:.92rem}.cc-strip{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.6rem}.cc-block{border:2px solid var(--line);border-radius:.45rem;padding:.25rem;display:grid;gap:.2rem;justify-items:center;background-color:var(--panel)}.cc-block-num{font-family:JetBrains Mono,monospace;font-size:.7rem;color:var(--muted)}.cc-block-bits{display:flex;gap:2px}.cc-block.rmfixed{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.cc-block.rsrepaired{border-color:var(--focus);box-shadow:0 0 0 1px var(--focus) inset}.cc-block.failed{border-color:var(--bad);box-shadow:0 0 0 1px var(--bad) inset}.cc-bit{width:1.35rem;height:1.5rem;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:.25rem;background-color:var(--panel);color:var(--muted);cursor:pointer;font-family:JetBrains Mono,monospace;font-size:.75rem;padding:0}.cc-bit.on{background-color:color-mix(in srgb,var(--accent) 35%,var(--panel));color:var(--text);border-color:var(--accent);font-weight:700}.cc-bit.flipped{background-color:color-mix(in srgb,var(--accent-2) 45%,var(--panel));border-color:var(--accent-2);color:var(--text);font-weight:700;outline:2px solid var(--accent-2);outline-offset:1px}.cc-legend{display:flex;flex-wrap:wrap;gap:.5rem 1rem;font-size:.8rem;color:var(--muted);margin-bottom:.6rem}.cc-legend span{display:inline-flex;align-items:center;gap:.3rem}.cc-swatch{width:.9rem;height:.9rem;border-radius:.2rem;border:1px solid var(--line);display:inline-block}.cc-swatch.on{background-color:color-mix(in srgb,var(--accent) 35%,var(--panel));border-color:var(--accent)}.cc-swatch.flipped{background-color:color-mix(in srgb,var(--accent-2) 45%,var(--panel));border-color:var(--accent-2)}.cc-swatch.rmfixed{background-color:var(--panel);border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.cc-swatch.rsrepaired{background-color:var(--panel);border-color:var(--focus);box-shadow:0 0 0 1px var(--focus) inset}.cc-swatch.failed{background-color:var(--panel);border-color:var(--bad);box-shadow:0 0 0 1px var(--bad) inset}.cc-controls{margin-bottom:.6rem}.cc-result{display:grid;gap:.5rem}.cc-counters{display:grid;gap:.3rem}.cc-counter{font-size:.92rem}.cc-badges{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.35rem}.cc-badge{display:inline-flex;align-items:center;gap:.3rem;border:1px solid var(--line);border-radius:999px;padding:.2rem .6rem;font-size:.82rem}.cc-badge.rmfix{border-color:var(--accent);background-color:color-mix(in srgb,var(--accent) 14%,transparent)}.cc-badge.rsfix{border-color:var(--focus);background-color:color-mix(in srgb,var(--focus) 16%,transparent)}.cc-badge.fail{border-color:var(--bad);background-color:color-mix(in srgb,var(--bad) 14%,transparent)}.cc-verdict{font-weight:600;margin:0}.cc-verdict.ok{color:var(--ok)}.cc-verdict.bad{color:var(--bad)}.qc-controls{margin:.2rem 0 .4rem}.qc-matrix-wrap{overflow:auto;border:1px solid var(--line);border-radius:.5rem;margin:.4rem 0;max-height:22rem}.qc-matrix{border-collapse:collapse;min-width:unset;width:auto;font-family:JetBrains Mono,monospace}.qc-matrix th,.qc-matrix td{border:1px solid var(--line);padding:0;width:1.4rem;height:1.4rem;text-align:center;font-size:.68rem;color:var(--muted);font-weight:400}.qc-matrix .qc-m-col,.qc-matrix .qc-m-rowlab,.qc-matrix .qc-m-corner{position:sticky;background-color:color-mix(in srgb,var(--panel) 92%,var(--bg-alt));color:var(--muted)}.qc-matrix .qc-m-col,.qc-matrix .qc-m-corner{top:0;z-index:2}.qc-matrix .qc-m-rowlab,.qc-matrix .qc-m-corner{left:0;z-index:2}.qc-matrix .qc-m-corner{z-index:3}.qc-m-cell.on{background-color:color-mix(in srgb,var(--accent-2) 30%,var(--panel));color:var(--text);font-weight:700}.qc-m-cell.sel{box-shadow:0 0 0 2px var(--accent) inset}.qc-m-col.sel{color:var(--text);background-color:color-mix(in srgb,var(--accent) 30%,var(--panel));font-weight:700}.qc-matrix-note{margin:.3rem 0 .6rem}.cb-bars{display:grid;gap:.5rem;margin:.6rem 0}.cb-row{display:grid;grid-template-columns:minmax(7rem,9rem) 1fr;align-items:center;gap:.6rem}.cb-label{display:grid;line-height:1.2}.cb-label small{color:var(--muted);font-size:.75rem}.cb-track{position:relative;display:flex;height:30px;border:1px solid var(--line);border-radius:.4rem;overflow:hidden}.cb-seg{display:flex;align-items:center;justify-content:center;font-size:.72rem;color:var(--text);overflow:hidden;white-space:nowrap;min-width:0}.cb-codeword{background-color:color-mix(in srgb,var(--accent) 32%,var(--panel))}.cb-mask{background-color:color-mix(in srgb,var(--bg-alt) 70%,var(--panel));color:var(--muted)}.cb-rand{background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--bg-alt) 70%,var(--panel)) 0,color-mix(in srgb,var(--bg-alt) 70%,var(--panel)) 6px,color-mix(in srgb,var(--accent) 16%,var(--panel)) 6px,color-mix(in srgb,var(--accent) 16%,var(--panel)) 12px);color:var(--text)}.cb-tag{background-color:color-mix(in srgb,var(--focus) 26%,var(--panel));color:var(--text)}.cb-tick{position:absolute;top:0;width:2px;height:100%;background-color:var(--accent-2)}.fo-diagram{margin:0 0 .6rem;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:.6rem;padding:.6rem .8rem;background-color:color-mix(in srgb,var(--bg-alt) 55%,var(--panel))}.fo-diagram figcaption{font-weight:600;margin-bottom:.4rem}.fo-inputs{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.4rem}.fo-node{display:inline-flex;align-items:center;justify-content:center;min-width:1.6rem;padding:.15rem .4rem;border:1px solid var(--line);border-radius:.35rem;font-family:JetBrains Mono,monospace;font-size:.85rem;background-color:var(--panel)}.fo-node.fo-s{border-color:var(--accent);background-color:color-mix(in srgb,var(--accent) 16%,var(--panel))}.fo-node.fo-d{border-color:var(--focus);background-color:color-mix(in srgb,var(--focus) 16%,var(--panel))}.fo-eqs{display:grid;gap:.25rem}.fo-eq{margin:0;font-family:JetBrains Mono,monospace;font-size:.9rem}.fo-out{font-weight:700}.fo-shared,.fo-shared-txt{color:var(--accent);font-weight:600}.fo-s-in{color:var(--accent);font-weight:700}.fo-d-in{color:var(--focus);font-weight:700}.fo-note{margin:.4rem 0 0}.sc-axis{display:flex;justify-content:space-between;font-size:.78rem;color:var(--muted);font-weight:600;margin:.4rem 0 .2rem}.footer{margin-top:1rem;padding:1rem;display:grid;gap:.5rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}@media (min-width: 760px){.page,.hero,.panel,.footer{padding:1.2rem}.hero{padding-right:4.7rem}.viz-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (prefers-reduced-motion: no-preference){.hero,.panel{animation:fade-in .4s ease both}.panel:nth-child(2){animation-delay:60ms}.panel:nth-child(3){animation-delay:.1s}.panel:nth-child(4){animation-delay:.14s}.panel:nth-child(5){animation-delay:.18s}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@keyframes fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
