:root{--mono:"IBM Plex Mono", "SFMono-Regular", Consolas, monospace;--sans:"Manrope", "Avenir Next", "Segoe UI", sans-serif;--radius-lg:20px;--radius-md:14px;--radius-sm:10px;--tap:44px;--maxw:1200px}:root,[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-0:#0e1116;--bg-1:#121925;--bg-2:#1b2535;--glow-1:#243349;--glow-2:#2a1f32;--ink-0:#e9f0ff;--ink-1:#c2cfe8;--ink-2:#93a6cd;--line:#2a3a57;--ok:#4dffa3;--bad:#ff5c80;--pub:#3fd8ff;--gold:#ffd36b;--safe:#5cff9a;--warn-bg:#ff336624;--safe-bg:#5cff9a1a;--surface:#0e141fc7;--surface-2:#070b13a8;--field-bg:#0b101a;--btn-bg:linear-gradient(180deg, #1b2d4a, #16253d);--btn-border:#416299;--btn-safe-bg:linear-gradient(180deg, #0f4025, #0f3320);--btn-danger-bg:linear-gradient(180deg, #4b1022, #380f1b);--topbar-bg:#0a0e16d1;--shadow:0 10px 30px #00000059;--focus:var(--gold)}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-0:#f4f6fc;--bg-1:#e9edf7;--bg-2:#dde3f1;--glow-1:#d6e2f5;--glow-2:#ecdcef;--ink-0:#11192b;--ink-1:#2c3a55;--ink-2:#4b5a78;--line:#c5cfe3;--ok:#097039;--bad:#c81e4a;--pub:#0a6aa8;--gold:#8a5a00;--safe:#0a7d43;--warn-bg:#c81e4a1a;--safe-bg:#0a7d431a;--surface:#ffffffc7;--surface-2:#ffffffeb;--field-bg:#fff;--btn-bg:linear-gradient(180deg, #fff, #eef2fb);--btn-border:#9fb1d4;--btn-safe-bg:linear-gradient(180deg, #e3f6ea, #d3eedd);--btn-danger-bg:linear-gradient(180deg, #fce3ea, #f7d3dd);--topbar-bg:#f4f6fcd9;--shadow:0 10px 30px #14213d1f;--focus:#0a6aa8}*{box-sizing:border-box}html{background-color:var(--bg-0);scroll-behavior:smooth}html,body{min-height:100%;margin:0}body{font-family:var(--sans);color:var(--ink-0);background:radial-gradient(circle at 8% 4%, var(--glow-1) 0%, transparent 30%), radial-gradient(circle at 88% 20%, var(--glow-2) 0%, transparent 34%), linear-gradient(160deg, var(--bg-0), var(--bg-1) 44%, var(--bg-2));-webkit-text-size-adjust:100%;background-attachment:fixed;line-height:1.5}#app{max-width:var(--maxw);margin:0 auto;padding:0 1.2rem 2rem}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:50;background-color:var(--field-bg);color:var(--ink-0);border:2px solid var(--focus);border-radius:var(--radius-sm);padding:.6rem .9rem;font-weight:700;text-decoration:none;transition:transform .15s;position:fixed;top:.5rem;left:.5rem;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.topbar{z-index:40;background-color:var(--topbar-bg);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line);align-items:center;gap:.75rem;margin:0 -1.2rem;padding:.6rem 1.2rem;display:flex;position:sticky;top:0}.brand{color:var(--ink-0);white-space:nowrap;align-items:center;gap:.45rem;font-weight:800;text-decoration:none;display:inline-flex}.brand-mark{color:var(--pub);font-size:1.15rem}.topnav{scrollbar-width:thin;-webkit-overflow-scrolling:touch;flex:1;gap:.25rem;margin:0;padding:0;list-style:none;display:flex;overflow-x:auto}.topnav li{color:inherit}.topnav a{white-space:nowrap;color:var(--ink-2);border-radius:var(--radius-sm);padding:.45rem .6rem;font-size:.92rem;font-weight:600;text-decoration:none;display:inline-block}.topnav a:hover{color:var(--ink-0);background-color:var(--surface-2)}.topnav a[aria-current=true]{color:var(--pub);background-color:var(--surface-2)}.theme-toggle{min-height:var(--tap);border:1px solid var(--btn-border);border-radius:var(--radius-sm);background:var(--btn-bg);color:var(--ink-0);font:inherit;cursor:pointer;white-space:nowrap;align-items:center;gap:.4rem;padding:.4rem .7rem;font-weight:600;display:inline-flex}.theme-icon{width:1.05rem;height:1.05rem;display:inline-block}[data-theme=dark] .theme-icon:before{content:"☾"}[data-theme=light] .theme-icon:before{content:"☀"}.page{gap:1.2rem;padding-top:1.2rem;display:grid}.hero,.exhibit{border:1px solid var(--line);background-color:var(--surface);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(5px);box-shadow:var(--shadow);padding:clamp(1rem,3vw,1.6rem)}.exhibit{scroll-margin-top:4.5rem}.hero{animation:.36s ease-out rise-in}.eyebrow{font-family:var(--mono);color:var(--pub);text-transform:uppercase;letter-spacing:.08em;margin:0}.exhibit-tag{font-family:var(--mono);color:var(--pub);text-transform:uppercase;letter-spacing:.08em;margin:0 0 .15rem;font-size:.78rem}h1,h2,h3,h4{color:var(--ink-0);margin:.3rem 0;line-height:1.2}h1{font-size:clamp(1.6rem,4vw,2.6rem)}.subtitle{color:var(--ink-1);max-width:80ch}.section-head{margin-bottom:.4rem}.hero-grid,.panel-grid,.cards,.compare-grid{gap:.9rem;display:grid}.hero-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:.9rem}.hero-card,.panel,.step,.panel-inner{border:1px solid var(--line);background-color:var(--surface-2);border-radius:var(--radius-md);padding:.9rem}.hero-card.safe,.panel.safe,.safe-frame{border-color:var(--safe);box-shadow:0 0 0 1px var(--safe-bg) inset}.hero-card.danger,.panel.danger{border-color:var(--bad);background-color:var(--warn-bg)}.panel-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.panel-grid.two{margin-bottom:.9rem}.cards{grid-template-columns:repeat(3,minmax(0,1fr))}.compare-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:.75rem}.section-head p,.panel p,li{color:var(--ink-1)}label{color:var(--ink-0);margin-bottom:.35rem;font-weight:700;display:block}textarea,select,button{font:inherit}textarea,select{border:1px solid var(--line);border-radius:var(--radius-sm);background-color:var(--field-bg);width:100%;color:var(--ink-0);min-height:var(--tap);padding:.62rem}textarea{resize:vertical}select{appearance:none;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-position:right .6rem center;background-repeat:no-repeat;padding-right:1.8rem}.button-row{flex-wrap:wrap;gap:.55rem;margin:.7rem 0;display:flex}.btn{border:1px solid var(--btn-border);background:var(--btn-bg);color:var(--ink-0);border-radius:var(--radius-sm);min-height:var(--tap);cursor:pointer;padding:.58rem .95rem;font-weight:600;transition:transform .12s,box-shadow .12s}.btn.safe{border-color:var(--safe);background:var(--btn-safe-bg)}.btn.danger{border-color:var(--bad);background:var(--btn-danger-bg)}.btn.ghost{background:0 0}button:hover{box-shadow:var(--shadow);transform:translateY(-1px)}button:active{transform:translateY(0)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}.mono{font-family:var(--mono);word-break:break-all;color:var(--ink-1)}.status{margin-top:.5rem;font-weight:650}.status.ok{color:var(--ok)}.status.bad{color:var(--bad)}.status.warn{color:var(--gold)}.timeline{counter-reset:none;gap:.7rem;margin-top:.65rem;padding:0;list-style:none;display:grid}.step h4{color:var(--pub)}.censored{background:repeating-linear-gradient(90deg,#ff336673,#ff336673 8px,#ff33661f 8px 14px);border-radius:6px;padding:.12rem .35rem;display:inline-block}.exposed{color:var(--bad);font-family:var(--mono);word-break:break-all;font-weight:700;animation:.95s ease-in-out infinite pulse-red}.history{border:1px dashed var(--bad);border-radius:12px;margin-top:.9rem;padding:.8rem}.label{color:var(--pub);letter-spacing:.05em;margin:0;font-weight:800}.sig-list{max-height:200px;font-family:var(--mono);margin:0;padding-left:1.1rem;font-size:.85rem;overflow:auto}.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:600px}caption{text-align:left}th,td{border:1px solid var(--line);text-align:left;vertical-align:top;color:var(--ink-1);padding:.55rem}thead th{color:var(--pub);background-color:var(--surface-2)}tbody th[scope=row]{color:var(--ink-0);background:0 0;font-weight:700}td.warn{color:var(--bad);font-weight:700}.page-footer{color:var(--ink-2);text-align:center;padding:.5rem 0 0;font-size:.9rem}.page-footer p{color:var(--ink-2)}@media (width<=900px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=720px){#app{padding:0 .8rem 1.6rem}.topbar{gap:.5rem;margin:0 -.8rem;padding:.5rem .8rem}.brand-text,.theme-label{display:none}.hero-grid,.panel-grid,.cards,.compare-grid{grid-template-columns:1fr}.button-row .btn{flex:100%}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}@media (prefers-contrast:more){.hero,.exhibit,.panel,.hero-card,.step,.panel-inner{border-width:2px}}@keyframes pulse-red{0%{text-shadow:0 0 #ff336659}50%{text-shadow:0 0 16px #ff3366f2}to{text-shadow:0 0 #ff336659}}@keyframes rise-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.how-grid{counter-reset:how;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem;margin:.4rem 0 .9rem;padding:0;list-style:none;display:grid}.how-grid li{counter-increment:how;border:1px solid var(--line);background-color:var(--surface-2);border-radius:var(--radius-md);color:var(--ink-1);padding:.8rem .8rem .8rem 2.2rem;position:relative}.how-grid li:before{content:counter(how);background-color:var(--pub);width:1.2rem;height:1.2rem;color:var(--bg-0);border-radius:50%;place-items:center;font-size:.8rem;font-weight:800;display:grid;position:absolute;top:.7rem;left:.7rem}.how-k{color:var(--ink-0);font-weight:800;display:block}.viz{margin:.6rem 0}.viz-svg{background-color:var(--field-bg);border:1px solid var(--line);border-radius:var(--radius-md);width:100%;height:auto;display:block}.viz-label{color:var(--ink-2);min-height:2.4em;margin-top:.4rem;font-size:.9rem}.vc-curve{fill:none;stroke:var(--pub);stroke-width:2px}.vc-axis{stroke:var(--line);stroke-width:1px}.vc-line{stroke:var(--gold);stroke-width:1.5px;stroke-dasharray:5 4}.vc-drop{stroke:var(--safe);stroke-width:1.5px;stroke-dasharray:3 3}.vc-p{fill:var(--pub)}.vc-sum{fill:var(--ok)}.vc-third{fill:none;stroke:var(--ink-2);stroke-width:1.5px}.vc-text{fill:var(--ink-0);font:700 13px var(--mono)}.vd-grid{stroke:var(--line);stroke-width:.5px;opacity:.5}.vd-dot{fill:var(--ink-2)}.vd-g{fill:var(--pub);stroke:var(--bg-0);stroke-width:1.5px}.vd-target{fill:var(--ok);stroke:var(--ink-0);stroke-width:2px}input[type=range]{width:100%;accent-color:var(--pub);cursor:pointer;min-height:1.6rem}.inline-check{align-items:center;gap:.45rem;margin-top:.5rem;font-weight:600;display:flex}.inline-check input{width:1.1rem;height:1.1rem;accent-color:var(--pub)}output{font-family:var(--mono);color:var(--pub);font-weight:800}.dim{color:var(--ink-2);font-size:.9em;font-weight:500}.hint{color:var(--ink-2);font-size:.92rem}.math-panel h3{margin-bottom:.4rem}pre.math{font-family:var(--mono);background-color:var(--field-bg);border:1px solid var(--line);border-radius:var(--radius-sm);-webkit-overflow-scrolling:touch;color:var(--ink-0);white-space:pre;padding:.85rem;font-size:.86rem;line-height:1.5;overflow-x:auto}.toy-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem 1.1rem;margin:.5rem 0 .9rem;display:grid}.toy-controls label{color:var(--ink-0);font-weight:700}.toy-out{gap:.7rem;display:grid}.steps{grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;display:grid}.step-card,.recover-card{border:1px solid var(--line);background-color:var(--surface-2);border-radius:var(--radius-sm);padding:.75rem}.recover-card{border-color:var(--gold)}.step-card h4,.recover-card h4{color:var(--pub);margin:0 0 .4rem;font-size:.95rem}.step-card .mono,.recover-card .mono{margin:.25rem 0;font-size:.85rem}.tell{color:var(--bad);font-weight:700}.badge{border-radius:var(--radius-sm);border:1px solid var(--line);padding:.6rem .8rem;font-weight:700}.badge.ok{color:var(--ok);border-color:var(--safe);background-color:var(--safe-bg)}.badge.bad{color:var(--bad);border-color:var(--bad);background-color:var(--warn-bg)}.mini{border:1px solid var(--line);background-color:var(--surface-2);border-radius:var(--radius-md);padding:.9rem}.mini.danger{border-color:var(--bad);background-color:var(--warn-bg)}.mini h4{margin:.1rem 0 .4rem}details#attack-detail{border:1px solid var(--line);border-radius:var(--radius-sm);background-color:var(--surface-2);margin-top:.8rem;padding:.4rem .7rem}details#attack-detail summary{cursor:pointer;color:var(--pub);align-items:center;min-height:1.8rem;font-weight:700;display:flex}details#attack-detail[open] summary{margin-bottom:.5rem}.glossary{grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;margin:0 0 1rem;display:grid}.gl-item{border:1px solid var(--line);background-color:var(--surface-2);border-radius:var(--radius-sm);padding:.7rem .8rem}.gl-item dt{color:var(--ink-0);margin-bottom:.25rem;font-weight:800}.gl-sym{color:var(--pub);margin-left:.25rem;font-weight:600}.gl-item dd{color:var(--ink-1);margin:0;font-size:.92rem}.ref-list{gap:.8rem;margin:0;padding:0;list-style:none;display:grid}.ref-list li{gap:.15rem;display:grid}.ref-list a{color:var(--pub);font-weight:700;text-decoration:none}.ref-list a:hover{text-decoration:underline}.ref-meta{color:var(--ink-2);font-size:.82rem;font-family:var(--mono)}.ref-note{color:var(--ink-1);font-size:.92rem}@media (width<=720px){.how-grid,.toy-controls,.steps,.glossary{grid-template-columns:1fr}}.cl-hero{--text:var(--ink-0);--text-dim:var(--ink-1);--border:var(--line);--accent:var(--pub);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:clamp(1rem,4vw,3rem);margin:clamp(1rem,3vw,2rem) 0 1.5rem;display:flex}.cl-hero-main{flex:22rem;min-width:min(100%,20rem)}.cl-hero-title{letter-spacing:.01em;color:var(--text);margin:0;font-size:clamp(1.6rem,3.8vw,2.7rem);font-weight:700;line-height:1.1}.cl-hero-sub{letter-spacing:.01em;opacity:.85;color:var(--text);margin:.4rem 0 0;font-size:clamp(.9rem,1.6vw,1.05rem)}.cl-hero-desc{color:var(--text-dim);max-width:60ch;margin:.55rem 0 0;font-size:1rem;line-height:1.5}.cl-hero-why{border:1px solid var(--border);background:color-mix(in oklab,var(--accent) 6%,transparent);border-radius:10px;flex:0 min(40%,26rem);min-width:min(100%,15rem);padding:.85rem 1.05rem}.cl-hero-why-label{letter-spacing:.14em;color:var(--accent);font-size:.68rem;font-weight:700;display:block}.cl-hero-why-text{color:var(--text);margin:.35rem 0 0;font-size:.95rem;line-height:1.5}@media (width<=640px){.cl-hero{flex-direction:column}.cl-hero-why{flex-basis:auto;width:100%}}
