:root{--bg:#f5efe5;--bg-soft:#e8dcc8;--panel:#fffaf1;--text:#1f2228;--muted:#495063;--accent:#007a6b;--accent-2:#b94a00;--danger:#9f1d35;--ok:#14683e;--warn:#9a5f00;--warn-text:#7a4a00;--border:#b6a486;--border-strong:#81745f;--focus:#0059d6;--shadow:0 14px 34px #241a0d29;--on-accent:#fff;--chart-surface:#fffaf1;--chart-grid:#1f22281a;--chart-axis:#8a7c63;font-size:16px}:root[data-theme=dark]{--bg:#1e232b;--bg-soft:#2b3340;--panel:#24303f;--text:#f2f4f8;--muted:#d0d7e3;--accent:#31d7bb;--accent-2:#ffb469;--danger:#ff8aa0;--ok:#7ef7b1;--warn:#ffd07c;--warn-text:#ffd07c;--border:#7990ac;--border-strong:#7990ac;--focus:#7bc1ff;--shadow:0 18px 42px #00000059;--on-accent:#08221e;--chart-surface:#1a222d;--chart-grid:#f2f4f81f;--chart-axis:#8da3bf}*{box-sizing:border-box}html,body{background:radial-gradient(circle at 15% 10%, #007a6b33, transparent 45%), radial-gradient(circle at 90% 0%, #b94a0038, transparent 35%), var(--bg);min-height:100%;color:var(--text);margin:0;font-family:IBM Plex Sans,Segoe UI,sans-serif}a{color:inherit}.skip-link{background:var(--panel);border:2px solid var(--focus);padding:.75rem;position:absolute;top:0;left:-9999px}.skip-link:focus{z-index:99;top:.5rem;left:.5rem}#app{max-width:1140px;margin:0 auto;padding:.8rem}.hero{background:linear-gradient(160deg, var(--panel), var(--bg-soft));border:1px solid var(--border);box-shadow:var(--shadow);border-radius:1rem;padding:1rem;position:relative}.cl-hero{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;position:relative}.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(--muted);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}.cl-hero-why-label{color:#06413c}:root[data-theme=dark] .cl-hero-why-label{color:var(--accent)}.cl-hero-desc{color:#3f455a}:root[data-theme=dark] .cl-hero-desc{color:var(--muted)}@media (width<=640px){.cl-hero{flex-direction:column}.cl-hero-why{flex-basis:auto;width:100%}.cl-hero-main{flex-basis:auto;min-width:0}}.category-chip,.primitive-chip,.status,.github,.links a{border:1px solid var(--border);border-radius:999px;align-items:center;min-height:44px;padding:.35rem .65rem;text-decoration:none;display:inline-flex}.category-chip{background:var(--accent);color:var(--on-accent);border-color:#0000;font-weight:700}h1,h2{font-family:Space Grotesk,Trebuchet MS,sans-serif;line-height:1.2}h1{margin:.8rem 0 .4rem;font-size:clamp(1.8rem,6vw,2.8rem)}h2{margin:.3rem 0;font-size:clamp(1.3rem,4.2vw,1.8rem)}.subtitle,.panel-text,.panel-note,.chart-summary,li,p,label,input,button{font-size:1rem}.subtitle,.panel-note,.chart-summary{color:var(--muted)}.panel-note,.chart-summary,.verdict,code,input{overflow-wrap:break-word}.chip-row,.status-row,.links{flex-wrap:wrap;gap:.5rem;display:flex}.primitive-chip{background:color-mix(in srgb, var(--accent) 18%, transparent)}button,input{border:1px solid var(--border-strong);background:var(--panel);width:100%;min-height:44px;color:var(--text);border-radius:.7rem;padding:.65rem .75rem}button{cursor:pointer;background:linear-gradient(160deg, color-mix(in srgb, var(--accent) 18%, var(--panel)), var(--panel));font-weight:700}button:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid var(--focus);outline-offset:2px}main{grid-template-columns:minmax(0,1fr);gap:.9rem;margin-top:.9rem;display:grid}.panel,.why,.footer{background:linear-gradient(165deg, var(--panel), color-mix(in srgb, var(--panel) 80%, var(--bg-soft)));border:1px solid var(--border);box-shadow:var(--shadow);border-radius:1rem;padding:.9rem}.controls{gap:.45rem;display:grid}canvas{border:1px solid var(--border);background:var(--chart-surface);border-radius:.8rem;width:100%;max-width:100%;margin-top:.6rem}button[aria-busy=true],button:disabled{cursor:progress;opacity:.7}button[aria-busy=true]{position:relative}.verdict{border:1px solid var(--border);background:var(--panel);border-left-width:5px;border-radius:.7rem;min-height:1.2rem;margin-top:.7rem;padding:.7rem .85rem;font-size:.95rem;line-height:1.45}.verdict:empty{display:none}.verdict strong{font-family:Space Grotesk,Trebuchet MS,sans-serif}.verdict--leak{border-left-color:var(--danger);background:color-mix(in srgb, var(--danger) 12%, var(--panel))}.verdict--safe{border-left-color:var(--ok);background:color-mix(in srgb, var(--ok) 14%, var(--panel))}.verdict--inconclusive{border-left-color:var(--warn);background:color-mix(in srgb, var(--warn) 12%, var(--panel))}.chart-data{margin-top:.6rem;font-size:.92rem;overflow-x:auto}.chart-data summary{cursor:pointer;color:var(--muted);align-items:center;min-height:44px;display:flex}.chart-data summary:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:.4rem}.chart-data table{border-collapse:collapse;width:100%;margin-top:.4rem}.chart-data caption{text-align:left;color:var(--muted);padding-bottom:.4rem;font-size:.85rem}.chart-data th,.chart-data td{border:1px solid var(--border);text-align:right;font-variant-numeric:tabular-nums;padding:.35rem .55rem}.chart-data thead th,.chart-data tbody th{text-align:left}.chart-data thead th{background:color-mix(in srgb, var(--accent) 12%, var(--panel))}.panel-head{gap:.4rem;display:grid}.status{font-size:.9rem;font-weight:700}.bad{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 65%, var(--border));background:color-mix(in srgb, var(--danger) 10%, var(--panel))}.good{color:var(--ok);border-color:color-mix(in srgb, var(--ok) 65%, var(--border));background:color-mix(in srgb, var(--ok) 18%, var(--panel))}.warn{color:var(--warn-text);border-color:color-mix(in srgb, var(--warn) 65%, var(--border));background:color-mix(in srgb, var(--warn) 16%, var(--panel))}.error{min-height:1.3rem;color:var(--danger);font-weight:600}.mechanism{border:1px solid var(--border);background:color-mix(in srgb, var(--accent) 6%, var(--panel));border-radius:.9rem;margin-top:.9rem;padding:.85rem}.mechanism-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.mechanism-title{margin:0;font-family:Space Grotesk,Trebuchet MS,sans-serif;font-size:1.05rem}.mechanism-lead{color:var(--muted);margin:.45rem 0 .6rem;font-size:.95rem;line-height:1.45}.mech-play{width:auto;min-height:44px;padding:.45rem .8rem;font-size:.85rem}.mech-grid{gap:.35rem;min-width:0;display:grid;overflow-x:auto}.mech-row{flex-wrap:nowrap;align-items:center;gap:.25rem;display:flex}.mech-rowlabel{letter-spacing:.03em;width:3.6rem;color:var(--muted);text-transform:uppercase;flex:none;font-size:.72rem;font-weight:700}.mech-cell,.mech-bit{border:1px solid var(--border);background:var(--panel);width:1.7rem;height:2.1rem;color:var(--text);border-radius:.35rem;flex:none;justify-content:center;align-items:center;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.95rem;font-weight:700;display:inline-flex;position:relative}.mech-cell[data-mark]:not([data-mark=""]):after,.mech-bit[data-mark]:not([data-mark=""]):after{content:attr(data-mark);font-size:.72rem;line-height:1;position:absolute;top:-.85rem}.mech-cell--idle{opacity:.75}.mech-cell--match{background:color-mix(in srgb, var(--ok) 30%, var(--panel));border-color:var(--ok);color:var(--text)}.mech-cell--mismatch{background:color-mix(in srgb, var(--danger) 34%, var(--panel));border-color:var(--danger);color:var(--text)}.mech-cell--skipped{opacity:.68;border-style:dashed}.mech-cell--scanned{background:color-mix(in srgb, var(--accent) 20%, var(--panel));border-color:var(--accent);color:var(--text)}.mech-cell[data-mark=✓]:after{color:var(--ok)}.mech-cell[data-mark=✗]:after{color:var(--danger)}.mech-counters{flex-wrap:wrap;gap:.5rem 1rem;margin-top:1rem;display:flex}.mech-counter{color:var(--muted);font-size:.92rem}.mech-counter strong{color:var(--text);font-variant-numeric:tabular-nums}.mech-status{color:var(--text);margin:.55rem 0 0;font-size:.92rem;line-height:1.45}.mech-legend{color:var(--muted);flex-wrap:wrap;gap:.35rem .75rem;margin:.5rem 0 0;font-size:.82rem;display:flex}.mech-key{white-space:nowrap}.mech-key--match{color:var(--ok)}.mech-key--mismatch{color:var(--danger)}.mech-bitrow{flex-wrap:wrap;gap:.3rem .35rem;margin-top:.9rem;display:flex}.mech-bit--1{background:color-mix(in srgb, var(--accent-2) 24%, var(--panel));border-color:var(--accent-2)}.mech-bit--active{outline:3px solid var(--focus);outline-offset:1px}.mech-bit[data-mark=×]:after{color:var(--accent-2)}.chart-figure{margin:0}.chart-caption{color:var(--muted);margin:.6rem 0 0;font-size:.88rem;line-height:1.45}.chart-caption strong{color:var(--text)}.mode-toggle{gap:.2rem;margin-top:.6rem;display:grid}.mode-check{color:var(--text);align-items:center;gap:.5rem;min-height:44px;font-size:.92rem;display:inline-flex}.mode-check input{width:auto;min-height:auto}.mode-hint{color:var(--muted);font-size:.82rem;line-height:1.4}.panel-caveat{border-left:3px solid var(--warn);padding-left:.6rem}.cache-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;margin-top:.75rem;display:grid}.cache-grid div{border:1px solid var(--border);border-radius:.7rem;justify-content:space-between;align-items:center;min-height:44px;padding:.55rem;display:flex}.rules,.hall{padding-left:1.1rem}.links a{background:color-mix(in srgb, var(--accent-2) 20%, var(--panel));min-height:44px}.footer{margin:.9rem 0 1.2rem}.github{background:color-mix(in srgb, var(--accent) 25%, var(--panel));margin-bottom:.4rem;font-weight:700}.page-footer{text-align:center;max-width:1140px;color:var(--muted);margin:1.5rem auto 2rem;padding:1.5rem .8rem;font-size:.85rem}@media (width>=768px){#app{padding:1.2rem}.two-col{grid-template-columns:1fr 1fr;align-items:center;column-gap:.9rem}.two-col button{grid-column:span 2}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
