:root{color-scheme:dark;--bg: #0a1421;--bg-alt: #102138;--panel: #132a45;--text: #f2f6fb;--muted: #c6d4e8;--accent: #19c37d;--warn: #ffd166;--bad: #ff6b6b;--line: #29507a;--focus: #ffbf47}:root[data-theme=light]{color-scheme:light;--bg: #f5f8fb;--bg-alt: #dbe8f6;--panel: #ffffff;--text: #10243a;--muted: #35526f;--accent: #0f7c59;--warn: #8a5b00;--bad: #b42318;--line: #b4c9e0;--focus: #7a4b00}*{box-sizing:border-box}html{background-color:var(--bg)}html,body{margin:0;min-height:100%;background-color:var(--bg);background-image:radial-gradient(circle at 10% 10%,var(--bg-alt) 0%,var(--bg) 50%,var(--bg) 100%);color:var(--text);font-family:IBM Plex Sans,Segoe UI,sans-serif;font-size:16px;line-height:1.5}.page{max-width:1200px;margin:0 auto;padding:1rem}.skip-link{position:absolute;left:-10000px;top:auto}.skip-link:focus-visible{left:1rem;top:1rem;background:var(--panel);padding:.5rem;z-index:999}.hero{position:relative;border:1px solid var(--line);background:linear-gradient(140deg,color-mix(in srgb,var(--panel) 94%,white 6%),var(--panel));padding:1rem;border-radius:1rem;margin-bottom:1rem}.hero-top{display:flex;justify-content:space-between;align-items:center;gap:.75rem}h1,h2{margin:.4rem 0;font-family:Space Grotesk,Segoe UI,sans-serif}.subtitle{color:var(--muted);margin-top:0}.chip-row{color:var(--muted);margin-bottom:0}button,input,textarea,a{min-height:44px}button{border:1px solid var(--line);background:color-mix(in srgb,var(--accent) 22%,var(--panel));color:var(--text);padding:.65rem .9rem;border-radius:.7rem;font-weight:600;font-size:1rem;font-family:inherit}.theme-toggle{width:2.6rem;height:2.6rem;border-radius:50%;border:1px solid var(--line);background:color-mix(in srgb,var(--panel) 80%,var(--accent) 20%);color:var(--text);padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:1.2rem;line-height:1}button:hover,.theme-toggle:hover{background:color-mix(in srgb,var(--panel) 68%,var(--accent) 32%);cursor:pointer}button:focus-visible,input:focus-visible,textarea:focus-visible,a:focus-visible,.theme-toggle:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.panel-grid{display:grid;grid-template-columns:1fr;gap:1rem}.panel{border:1px solid var(--line);border-radius:1rem;background:var(--panel);padding:1rem;display:grid;gap:.5rem}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:.25rem .65rem;border:1px solid var(--line);font-size:.875rem;white-space:nowrap}.chip-category{background:color-mix(in srgb,var(--accent) 20%,var(--panel))}.chip-ok{background:color-mix(in srgb,var(--accent) 18%,var(--panel))}.chip-warn{background:color-mix(in srgb,var(--warn) 24%,var(--panel))}.chip-bad{background:color-mix(in srgb,var(--bad) 24%,var(--panel))}label{font-weight:600}input,textarea{width:100%;border:1px solid var(--line);border-radius:.65rem;padding:.65rem;background:color-mix(in srgb,var(--panel) 88%,black 12%);color:var(--text);font-size:1rem;font-family:inherit}textarea{min-height:90px}.hex{margin:0;padding:.75rem;border:1px solid var(--line);border-radius:.75rem;background:color-mix(in srgb,var(--panel) 85%,black 15%);font-family:IBM Plex Mono,Consolas,monospace;overflow:auto;max-width:100%;word-break:break-all;white-space:pre-wrap;min-height:4rem;font-size:.875rem}.note{color:var(--muted);margin:0}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:650px}th,td{border:1px solid var(--line);padding:.55rem;text-align:left;vertical-align:top}.why,.footer{margin-top:1rem;border:1px solid var(--line);border-radius:1rem;padding:1rem;background:var(--panel)}.links{display:flex;flex-wrap:wrap;gap:.55rem}.links a,.github-badge{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;padding:.45rem .75rem;color:var(--text);text-decoration:none;background:color-mix(in srgb,var(--panel) 85%,white 15%)}.footer p{margin-bottom:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media (min-width: 700px){.panel-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (prefers-reduced-motion: no-preference){.hero,.panel,.why,.footer{animation:rise .36s ease-out}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@keyframes rise{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}.tour{border:1px solid var(--line);border-radius:1rem;background:linear-gradient(140deg,color-mix(in srgb,var(--accent) 14%,var(--panel)),var(--panel));padding:1rem;margin-bottom:1rem}.tour-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap}.tour-body{color:var(--muted);margin:.35rem 0 0}.tour-controls{display:flex;gap:.5rem;flex-wrap:wrap}.tour-progress{margin:.5rem 0 0;color:var(--muted);font-size:.875rem}button.secondary{background:color-mix(in srgb,var(--panel) 78%,var(--accent) 22%)}.button-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.lesson-badge{display:inline-flex;align-items:center;justify-content:center;padding:.2rem .6rem;border-radius:999px;background:color-mix(in srgb,var(--accent) 28%,var(--panel));border:1px solid var(--line);font-size:.8rem;font-weight:700;letter-spacing:.03em}.panel-active{outline:3px solid var(--accent);outline-offset:2px;box-shadow:0 0 0 6px color-mix(in srgb,var(--accent) 24%,transparent)}.stepper{display:flex;flex-direction:column;gap:.25rem}.step-line{padding:.25rem 0;border-bottom:1px dashed color-mix(in srgb,var(--line) 50%,transparent)}.step-line:last-child{border-bottom:none}@media (prefers-reduced-motion: no-preference){.step-line-new{animation:stepReveal .32s ease-out}}@keyframes stepReveal{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}.bitdiff-section{display:grid;gap:.5rem}.bitdiff-block{display:grid;gap:.35rem}.bitdiff-grid{display:grid;grid-template-columns:repeat(32,1fr);gap:1px;padding:.25rem;border:1px solid var(--line);border-radius:.5rem;background:color-mix(in srgb,var(--panel) 90%,black 10%);max-width:100%;aspect-ratio:32 / 8}.bitdiff-cell{background:color-mix(in srgb,var(--panel) 30%,var(--muted) 5%);border-radius:1px}.bitdiff-cell.bitdiff-flip{background:var(--bad)}.bitdiff-label{color:var(--muted);font-size:.875rem;margin:0}.verifier{border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:.75rem;padding:.85rem;background:color-mix(in srgb,var(--panel) 92%,var(--accent) 8%);display:grid;gap:.5rem}.verifier h3{margin:0;font-size:1rem}.verdict{display:inline-flex;align-items:center;padding:.35rem .7rem;border-radius:999px;border:1px solid var(--line);font-family:IBM Plex Mono,Consolas,monospace;font-weight:700;letter-spacing:.04em;font-size:.85rem;min-height:unset}.verdict-accept{background:color-mix(in srgb,var(--accent) 35%,var(--panel));color:var(--text);border-color:var(--accent)}.verdict-reject{background:color-mix(in srgb,var(--bad) 35%,var(--panel));color:var(--text);border-color:var(--bad)}.verdict-idle{background:color-mix(in srgb,var(--panel) 80%,var(--muted) 20%);color:var(--muted)}.attack-pane{border:1px solid color-mix(in srgb,var(--bad) 35%,var(--line));border-radius:.75rem;padding:.85rem;background:color-mix(in srgb,var(--panel) 92%,var(--bad) 8%);display:grid;gap:.5rem}.attack-pane h3{margin:0;font-size:1rem}.callout-cve{border:1px solid color-mix(in srgb,var(--warn) 60%,var(--line));background:color-mix(in srgb,var(--warn) 18%,var(--panel));border-radius:.75rem;padding:.85rem;font-size:.92rem;line-height:1.45}.side-by-side{display:grid;grid-template-columns:1fr;gap:.5rem}@media (min-width: 720px){.side-by-side{grid-template-columns:repeat(2,minmax(0,1fr))}}.side{border:1px solid var(--line);border-radius:.75rem;padding:.65rem;background:color-mix(in srgb,var(--panel) 88%,black 12%);display:grid;gap:.4rem}.side.broken{border-color:color-mix(in srgb,var(--bad) 50%,var(--line));background:color-mix(in srgb,var(--panel) 90%,var(--bad) 10%)}.side.safe{border-color:color-mix(in srgb,var(--accent) 50%,var(--line));background:color-mix(in srgb,var(--panel) 90%,var(--accent) 10%)}.side-label{font-weight:600;font-size:.9rem;display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.badge-bad,.badge-ok{display:inline-flex;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;font-weight:700;letter-spacing:.05em;border:1px solid var(--line)}.badge-bad{background:color-mix(in srgb,var(--bad) 35%,var(--panel));border-color:var(--bad)}.badge-ok{background:color-mix(in srgb,var(--accent) 35%,var(--panel));border-color:var(--accent)}.capture-pane{border:1px solid var(--line);border-radius:.75rem;padding:.85rem;background:color-mix(in srgb,var(--panel) 95%,black 5%);display:grid;gap:.5rem}.capture-pane h3,.attack-pane h3,.verifier h3{font-family:Space Grotesk,Segoe UI,sans-serif}@media (min-width: 700px){.panel-wide{grid-column:1 / -1}}.recovery-progress{display:grid;gap:.4rem}.recovery-bar{height:.6rem;border-radius:999px;background:color-mix(in srgb,var(--panel) 70%,black 30%);border:1px solid var(--line);overflow:hidden}.recovery-bar-fill{width:0%;height:100%;background:linear-gradient(90deg,var(--accent),var(--warn));transition:width .12s ease-out}.source-toggle{border:1px solid var(--line);border-radius:.75rem;padding:.5rem .85rem;background:color-mix(in srgb,var(--panel) 92%,black 8%)}.source-toggle summary{cursor:pointer;font-weight:600;padding:.3rem 0}.source-toggle .src{margin:.5rem 0 0;padding:.75rem;border-radius:.5rem;background:color-mix(in srgb,var(--panel) 80%,black 20%);font-family:IBM Plex Mono,Consolas,monospace;font-size:.82rem;white-space:pre;overflow-x:auto}
