:root{--bg: #0d1117;--surface: #161b22;--surface2: #1c2333;--border: #30363d;--text: #e6edf3;--text-muted: #9ea7b3;--accent: #7c6aef;--accent-hover: #9182f3;--green: #3fb950;--red: #f85149;--yellow: #d29922;--blue: #58a6ff;--mono: "SF Mono", "Cascadia Code", "Fira Code", "Menlo", monospace;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--focus-ring: 0 0 0 2px var(--bg), 0 0 0 4px var(--accent)}*{box-sizing:border-box;margin:0;padding:0}.skip-link{position:absolute;left:-9999px;top:0;background:var(--accent);color:#fff;padding:.5rem 1rem;z-index:1000;font-size:.9rem;border-radius:0 0 6px}.skip-link:focus{left:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}body{font-family:var(--sans);background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh}#app{max-width:960px;margin:0 auto;padding:1.5rem}header{text-align:center;margin-bottom:1.5rem}header h1{font-family:var(--mono);font-size:1.8rem;color:var(--accent);letter-spacing:-.02em}header .subtitle{color:var(--text-muted);font-size:.9rem;margin-top:.25rem}header .subtitle a{color:var(--blue);text-decoration:none}header .subtitle a:hover{text-decoration:underline}#tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--border);margin-bottom:1.5rem;overflow-x:auto}#tabs button{font-family:var(--sans);font-size:.85rem;padding:.5rem 1rem;background:transparent;color:var(--text-muted);border:none;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s}#tabs button:hover{color:var(--text)}#tabs button.active{color:var(--accent);border-bottom-color:var(--accent)}.card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:1.25rem;margin-bottom:1rem}.card h2{font-size:1.1rem;margin-bottom:.75rem;color:var(--accent)}.card h3{font-size:.95rem;margin-bottom:.5rem;color:var(--text)}.pills{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}.pill{font-family:var(--mono);font-size:.8rem;padding:.35rem .85rem;background:var(--surface2);color:var(--text-muted);border:1px solid var(--border);border-radius:999px;cursor:pointer;transition:all .15s}.pill:hover{border-color:var(--accent);color:var(--text)}.pill.active{background:var(--accent);color:#fff;border-color:var(--accent)}.btn{font-family:var(--sans);font-size:.85rem;padding:.5rem 1.1rem;background:var(--accent);color:#fff;border:none;border-radius:6px;cursor:pointer;transition:background .15s;margin-right:.5rem;margin-bottom:.5rem}.btn:hover{background:var(--accent-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-danger{background:var(--red)}.btn-danger:hover{background:#e5443d}.btn-secondary{background:var(--surface2);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover{border-color:var(--accent)}textarea,input[type=text]{font-family:var(--mono);font-size:.85rem;width:100%;padding:.6rem;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;resize:vertical;margin-bottom:.75rem}textarea:focus,input[type=text]:focus{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}.output{font-family:var(--mono);font-size:.78rem;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.6rem;word-break:break-all;margin-bottom:.5rem;color:var(--text-muted);max-height:160px;overflow-y:auto}.output.scrollable{max-height:300px}.badge{display:inline-block;font-size:.8rem;font-weight:600;padding:.2rem .6rem;border-radius:4px}.badge-pass{background:#3fb95026;color:var(--green);border:1px solid var(--green)}.badge-fail{background:#f8514926;color:var(--red);border:1px solid var(--red)}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin-bottom:.75rem}.info-item{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.6rem;text-align:center}.info-item .label{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.info-item .value{font-family:var(--mono);font-size:1rem;color:var(--text);margin-top:.15rem}.comparison-table{width:100%;border-collapse:collapse;font-size:.82rem;margin-bottom:1rem}.comparison-table th,.comparison-table td{padding:.5rem .6rem;text-align:left;border-bottom:1px solid var(--border)}.comparison-table th{font-size:.72rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.comparison-table tr:hover td{background:var(--surface2)}.comparison-table .quantum-yes{color:var(--green);font-weight:600}.comparison-table .quantum-no{color:var(--red)}.bar-chart{margin-bottom:1rem}.bar-row{display:flex;align-items:center;margin-bottom:.4rem}.bar-label{font-family:var(--mono);font-size:.75rem;width:120px;flex-shrink:0;color:var(--text-muted)}.bar-track{flex:1;height:20px;background:var(--bg);border-radius:4px;overflow:hidden;position:relative}.bar-fill{height:100%;border-radius:4px;transition:width .5s ease;display:flex;align-items:center;padding-left:.4rem;font-size:.7rem;font-family:var(--mono);color:#fff;min-width:fit-content}.bar-fill.classical{background:var(--blue)}.bar-fill.lattice{background:var(--accent)}.bar-fill.hash-based{background:var(--yellow)}.stepper{counter-reset:step}.step{position:relative;padding-left:2.5rem;margin-bottom:1.5rem;cursor:pointer}.step:before{counter-increment:step;content:counter(step);position:absolute;left:0;top:0;width:1.8rem;height:1.8rem;background:var(--surface2);border:2px solid var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:.8rem;color:var(--text-muted);transition:all .2s}.step.active:before{background:var(--accent);border-color:var(--accent);color:#fff}.step-title{font-weight:600;font-size:.95rem;margin-bottom:.5rem}.step-body{display:none;color:var(--text-muted);font-size:.88rem;line-height:1.7}.step.active .step-body{display:block}.math-block{font-family:var(--mono);font-size:.82rem;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.6rem .8rem;margin:.5rem 0;color:var(--accent);overflow-x:auto}.math-block .label-tag{color:var(--text-muted);font-size:.72rem}.trio-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem;margin-bottom:1rem}.trio-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:1rem;transition:border-color .2s}.trio-card:hover{border-color:var(--accent)}.trio-card.current{border-color:var(--accent);border-width:2px}.trio-card h3{font-family:var(--mono);font-size:.95rem;margin-bottom:.25rem}.trio-card .fips{font-size:.78rem;color:var(--text-muted);margin-bottom:.5rem}.trio-card p{font-size:.85rem;color:var(--text-muted)}.trio-card a{color:var(--blue);text-decoration:none}.trio-card a:hover{text-decoration:underline}.workflow{counter-reset:wf;margin:1rem 0}.wf-step{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:.75rem;padding:.6rem;background:var(--surface2);border-radius:6px;font-size:.85rem}.wf-step:before{counter-increment:wf;content:counter(wf);min-width:1.5rem;height:1.5rem;background:var(--accent);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;flex-shrink:0}.timeline{position:relative;padding-left:1.5rem;margin:1rem 0}.timeline:before{content:"";position:absolute;left:.5rem;top:0;bottom:0;width:2px;background:var(--border)}.tl-item{position:relative;margin-bottom:1rem;font-size:.85rem}.tl-item:before{content:"";position:absolute;left:-1.25rem;top:.35rem;width:10px;height:10px;background:var(--accent);border-radius:50%}.tl-item .tl-year{font-family:var(--mono);color:var(--accent);font-weight:600}.spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite;vertical-align:middle;margin-right:.5rem}@keyframes spin{to{transform:rotate(360deg)}}.section{margin-bottom:1.5rem}.section-title{font-size:.9rem;color:var(--text-muted);margin-bottom:.75rem;padding-bottom:.35rem;border-bottom:1px solid var(--border)}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mb-1{margin-bottom:.5rem}.flex-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.text-green{color:var(--green)}.text-red{color:var(--red)}.text-muted{color:var(--text-muted)}.text-accent{color:var(--accent)}.text-sm{font-size:.82rem}.mono{font-family:var(--mono)}.btn:focus-visible,.btn-secondary:focus-visible,.btn-danger:focus-visible{outline:none;box-shadow:var(--focus-ring)}.pill:focus-visible{outline:none;box-shadow:var(--focus-ring)}#tabs button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.step:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:6px}a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.btn{min-height:44px;min-width:44px}.pill{min-height:44px;display:inline-flex;align-items:center}#tabs button{min-height:44px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media(max-width:768px){#app{padding:1rem .75rem}header h1{font-size:1.4rem}#tabs{-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:0;-webkit-mask-image:linear-gradient(to right,transparent 0,black .5rem,black calc(100% - 1.5rem),transparent);mask-image:linear-gradient(to right,transparent 0,black .5rem,black calc(100% - 1.5rem),transparent)}#tabs::-webkit-scrollbar{display:none}#tabs button{padding:.5rem .75rem;font-size:.8rem}.card{padding:1rem .85rem}.flex-row{flex-direction:column;align-items:stretch}.flex-row .btn{margin-right:0;width:100%;text-align:center}.comparison-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.bar-label{width:80px;font-size:.68rem}.info-grid{grid-template-columns:repeat(2,1fr)}.trio-grid{grid-template-columns:1fr}.step{padding-left:2rem}.step:before{width:1.5rem;height:1.5rem;font-size:.7rem}}@media(max-width:480px){#app{padding:.75rem .5rem}header h1{font-size:1.2rem}header .subtitle{font-size:.8rem}.card{padding:.75rem;border-radius:6px}.card h2{font-size:1rem}.info-grid{grid-template-columns:1fr 1fr;gap:.5rem}textarea,input[type=text]{font-size:16px}.bar-label{width:65px;font-size:.65rem}.bar-fill{font-size:.6rem}.output{font-size:.72rem;padding:.4rem}.math-block{font-size:.75rem;padding:.4rem .6rem}.wf-step{font-size:.8rem;padding:.5rem}}
