@import "https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;0,9..144,700;0,9..144,900;1,9..144,500&family=Archivo:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap";:root{--bg:#eef0f2;--surface:#fff;--surface-2:#e4e8eb;--ink:#14171b;--ink-soft:#4b5766;--ink-faint:#7c8794;--line:#d7dce1;--accent:#c4491d;--accent-ink:#8f3313;--accent-soft:#fbe9e1;--accent-soft-line:#f0c9b6;--shadow:0 1px 2px #14171b0a, 0 10px 28px -14px #14171b29;color-scheme:light}:root[data-theme=dark]{--bg:#0b0e13;--surface:#131820;--surface-2:#1b222c;--ink:#e7eaee;--ink-soft:#9aa7b2;--ink-faint:#6b7885;--line:#232b35;--accent:#ff7a45;--accent-ink:#ffc4a3;--accent-soft:#2a180f;--accent-soft-line:#492a18;--shadow:0 1px 2px #0006, 0 14px 34px -14px #0009;color-scheme:dark}.theme-toggle{border:1px solid var(--line);background:var(--surface);min-height:38px;color:var(--ink-soft);cursor:pointer;border-radius:9px;flex-shrink:0;align-items:center;gap:7px;padding:8px 11px;font:500 13px/1 Archivo,system-ui,sans-serif;transition:color .12s,background .12s,border-color .12s;display:inline-flex}.theme-toggle:hover,.theme-toggle:focus-visible{color:var(--ink);background:var(--surface-2);border-color:var(--accent-soft-line)}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.theme-icon-moon,:root[data-theme=dark] .theme-icon-sun{display:none}:root[data-theme=dark] .theme-icon-moon{display:block}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;padding:0;overflow-x:hidden}body{background:var(--bg);color:var(--ink);padding-block:env(safe-area-inset-top,0px) env(safe-area-inset-bottom,0px);font-family:Archivo,system-ui,-apple-system,sans-serif;font-size:17px;line-height:1.65}img{max-width:100%}::selection{background:var(--accent-soft);color:var(--accent-ink)}h1,h2,h3,h4{font-optical-sizing:auto;color:var(--ink);letter-spacing:-.012em;text-wrap:balance;margin:0;font-family:Fraunces,Georgia,serif;font-weight:600}h1{letter-spacing:-.02em;font-weight:700}code,.mono{font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace}a{color:var(--accent-ink);text-underline-offset:.14em;text-decoration-thickness:1px}@media (hover:hover){a:hover{text-decoration-thickness:1.5px}}p{margin:0 0 1em}.skip-link{background:var(--accent);color:#fff;z-index:200;border-radius:8px;padding:10px 16px;font-size:14px;font-weight:600;text-decoration:none;transition:top .15s;position:absolute;top:-50px;left:12px}.skip-link:focus{top:12px}.site-header{z-index:100;border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(10px);position:sticky;top:0}.site-header .inner{justify-content:space-between;align-items:center;gap:16px;max-width:1080px;margin:0 auto;padding:16px 24px;display:flex}.site-header .brand{letter-spacing:-.01em;color:var(--ink);flex-shrink:0;align-items:baseline;gap:8px;font-family:Fraunces,serif;font-size:20px;font-weight:700;text-decoration:none;display:flex}.site-header .brand .dot{color:var(--accent)}.header-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.site-nav{align-items:center;gap:3px;display:flex}.nav-item{align-items:center;display:flex;position:relative}.nav-row{align-items:center;display:flex}.nav-link{color:var(--ink-soft);white-space:nowrap;border-radius:8px;align-items:center;gap:5px;padding:8px 10px;font-size:14.5px;font-weight:500;line-height:1.2;text-decoration:none;transition:color .12s,background .12s;display:inline-flex}.nav-link-assistant{color:var(--accent-ink);background:var(--accent-soft);border:1px solid var(--accent-soft-line);padding:6px 10px;font-weight:600}.nav-link-assistant .nav-ai-spark{color:var(--accent);font-size:12px;line-height:1;transition:transform .2s,color .15s;display:inline-block}@media (hover:hover){.nav-link-assistant:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.nav-link-assistant:hover .nav-ai-spark{color:#fff;transform:scale(1.25)rotate(15deg)}}.nav-link .chev{color:var(--ink-faint);flex-shrink:0;transition:transform .15s}@media (hover:hover){.nav-link:hover{color:var(--ink);background:var(--surface-2)}.nav-item:hover .chev{transform:rotate(180deg)}}.nav-item:focus-within .nav-link{color:var(--ink);background:var(--surface-2)}.nav-item:focus-within .chev{transform:rotate(180deg)}.nav-chevron{display:none}.nav-panel{background:var(--surface);border:1px solid var(--line);min-width:240px;box-shadow:var(--shadow);opacity:0;visibility:hidden;border-radius:14px;padding:16px;transition:opacity .15s,transform .15s,visibility .15s;position:absolute;top:calc(100% + 6px);left:0;transform:translateY(-6px)}.nav-panel-wide{min-width:560px}@media (hover:hover){.nav-item:hover .nav-panel{opacity:1;visibility:visible;transform:translateY(0)}}.nav-item:focus-within .nav-panel{opacity:1;visibility:visible;transform:translateY(0)}.nav-panel-inner{gap:28px;display:flex}.nav-col{flex-direction:column;gap:1px;min-width:150px;display:flex}.nav-col-title{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);margin:2px 0 6px;font-family:JetBrains Mono,monospace;font-size:11px}.nav-panel a{color:var(--ink-soft);border-radius:7px;margin:0 -8px;padding:6px 8px;font-size:14.5px;line-height:1.4;text-decoration:none;display:block}@media (hover:hover){.nav-panel a:hover{background:var(--surface-2);color:var(--ink)}}.nav-panel a:active{background:var(--surface-2);color:var(--ink)}.nav-panel-cols{grid-template-columns:repeat(3,1fr);gap:0 20px;display:grid}.nav-panel .nav-viewall{border-top:1px solid var(--line);color:var(--accent-ink);margin:12px -8px -4px;padding:10px 8px 0;font-size:14px;font-weight:600;display:block}@media (hover:hover){.nav-panel .nav-viewall:hover{background:0 0;text-decoration:underline}}.nav-panel .nav-viewall:active{text-decoration:underline}.vuln-surface-list{flex-direction:column;gap:2px;min-width:210px;display:flex}.vuln-surface-item{position:relative}.vuln-surface-row{color:var(--ink-soft);border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:9px 10px;font-size:14.5px;font-weight:500;text-decoration:none;display:flex}@media (hover:hover){.vuln-surface-row:hover{background:var(--surface-2);color:var(--ink)}}.vuln-surface-item:focus-within .vuln-surface-row,.vuln-surface-row:active{background:var(--surface-2);color:var(--ink)}.vuln-surface-count{color:var(--ink-faint);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:1px 8px;font-family:JetBrains Mono,monospace;font-size:11px}.vuln-surface-panel{background:var(--surface);border:1px solid var(--line);min-width:230px;box-shadow:var(--shadow);opacity:0;visibility:hidden;border-radius:14px;margin-left:8px;padding:14px;transition:opacity .15s,transform .15s,visibility .15s;position:absolute;top:-8px;left:100%;transform:translate(-6px)}.vuln-surface-panel a{color:var(--ink-soft);border-radius:7px;margin:0 -8px;padding:6px 8px;font-size:14px;line-height:1.4;text-decoration:none;display:block}@media (hover:hover){.vuln-surface-panel a:hover{background:var(--surface-2);color:var(--ink)}.vuln-surface-item:hover .vuln-surface-panel{opacity:1;visibility:visible;transform:translate(0)}}.vuln-surface-panel a:active{background:var(--surface-2);color:var(--ink)}.vuln-surface-item:focus-within .vuln-surface-panel{opacity:1;visibility:visible;transform:translate(0)}.nav-toggle{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:9px;flex-direction:column;flex-shrink:0;justify-content:center;gap:4px;width:38px;height:38px;display:none}.nav-toggle span{background:var(--ink);width:16px;height:1.5px;margin:0 auto;transition:transform .2s,opacity .2s;display:block}.nav-toggle[aria-expanded=true] span:first-child{transform:translateY(5.5px)rotate(45deg)}.nav-toggle[aria-expanded=true] span:nth-child(2){opacity:0}.nav-toggle[aria-expanded=true] span:nth-child(3){transform:translateY(-5.5px)rotate(-45deg)}.nav-close{display:none}.nav-scrim{opacity:0;visibility:hidden;z-index:90;background:#0a0c1066;transition:opacity .2s,visibility .2s;position:fixed;inset:0}.nav-scrim.open{opacity:1;visibility:visible}@media (width<=980px){.nav-toggle{display:flex}.nav-close{border:1px solid var(--line);background:var(--surface);width:38px;height:38px;color:var(--ink);cursor:pointer;border-radius:9px;justify-content:center;align-items:center;display:flex;position:absolute;top:20px;right:20px}.site-nav{background:var(--surface);width:min(340px,88vw);height:100dvh;box-shadow:var(--shadow);z-index:95;flex-direction:column;align-items:stretch;gap:2px;padding:84px 20px 32px;transition:right .25s;position:fixed;top:0;right:-100%;overflow-y:auto}.site-nav.open{right:0}.nav-item{border-bottom:1px solid var(--line);position:static}.nav-row{justify-content:space-between}.nav-link{flex:1;padding:14px 4px}.nav-link .chev{display:none}.site-nav .nav-link-assistant{background:var(--accent-soft);color:var(--accent-ink);border:1px solid var(--accent-soft-line);border-radius:9px;margin:8px 0;padding:12px 14px}.nav-chevron{width:38px;height:38px;color:var(--ink-faint);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:transform .2s;display:flex}.nav-item.open .nav-chevron{transform:rotate(180deg)}.nav-panel{opacity:1;visibility:visible;box-shadow:none;border:none;border-radius:0;padding:0 4px 14px;display:none;position:static;transform:none}.nav-item.open .nav-panel{display:block}.nav-panel-wide{min-width:0}.nav-panel-inner{flex-direction:column;gap:14px}.nav-panel-cols{grid-template-columns:1fr}.vuln-surface-panel{opacity:1;visibility:visible;box-shadow:none;border:none;border-radius:0;min-width:0;margin:0 0 10px 12px;padding:0;position:static;transform:none}}main.page{max-width:1080px;margin:0 auto;padding:56px 20px 48px}.tagline{letter-spacing:.08em;text-transform:uppercase;color:var(--accent-ink);background:var(--accent-soft);border:1px solid var(--accent-soft-line);border-radius:100px;margin-bottom:18px;padding:4px 10px;font-family:JetBrains Mono,monospace;font-size:12.5px;text-decoration:none;transition:background .12s,border-color .12s;display:inline-block}@media (hover:hover){a.tagline:hover{background:var(--accent-soft-line);border-color:var(--accent-ink)}}a.tagline:active{background:var(--accent-soft-line);border-color:var(--accent-ink)}.listen-bar{align-items:center;gap:8px;margin:22px 0 8px;display:flex}.listen-btn{border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);cursor:pointer;border-radius:100px;align-items:center;gap:8px;padding:9px 16px;font-family:Archivo,system-ui,sans-serif;font-size:13.5px;font-weight:600;transition:color .12s,border-color .12s,background .12s;display:inline-flex}@media (hover:hover){.listen-btn:hover{color:var(--ink);border-color:var(--accent-soft-line)}}.listen-btn:active{color:var(--ink);border-color:var(--accent-soft-line);background:var(--surface-2)}.listen-icon-pause,.listen-bar[data-state=playing] .listen-icon-play,.listen-bar[data-state=paused] .listen-icon-play{display:none}.listen-bar[data-state=playing] .listen-icon-pause,.listen-bar[data-state=paused] .listen-icon-pause{display:block}.listen-bar[data-state=playing] .listen-btn,.listen-bar[data-state=paused] .listen-btn{color:var(--accent-ink);border-color:var(--accent-soft-line);background:var(--accent-soft)}.listen-stop{border:1px solid var(--line);background:var(--surface);color:var(--ink-faint);cursor:pointer;border-radius:100px;align-items:center;padding:9px 14px;font-family:Archivo,system-ui,sans-serif;font-size:13.5px;font-weight:600;display:inline-flex}@media (hover:hover){.listen-stop:hover{color:var(--ink);border-color:var(--accent-soft-line)}}.listen-stop:active{color:var(--ink)}.vuln-meta{flex-wrap:wrap;gap:8px 10px;margin:16px 0 20px;display:flex}.vuln-actions{flex-wrap:wrap;align-items:center;gap:12px;margin:0 0 32px;display:flex}.vuln-actions .btn{box-sizing:border-box;vertical-align:middle;justify-content:center;align-items:center;gap:8px;line-height:1.2;display:inline-flex;margin:0!important}.vuln-actions .btn svg{flex-shrink:0}.vuln-actions .practice-lab{margin:0!important}.practice-lab{margin-bottom:32px}.vuln-meta .chip{color:var(--ink-soft);background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:4px 10px;font-family:JetBrains Mono,monospace;font-size:12.5px;text-decoration:none;transition:color .12s,border-color .12s}@media (hover:hover){.vuln-meta a.chip:hover{color:var(--accent-ink);border-color:var(--accent-soft-line)}}.vuln-meta .chip.severity{color:var(--accent-ink);background:var(--accent-soft);border-color:var(--accent-soft-line);font-weight:600}article.vuln-body h2{border-bottom:1px solid var(--line);margin-top:52px;margin-bottom:14px;padding-bottom:10px;font-size:25px}article.vuln-body h2:first-of-type{margin-top:36px}article.vuln-body p,article.vuln-body li{color:var(--ink-soft);font-size:16.5px}article.vuln-body strong{color:var(--ink);font-weight:600}article.vuln-body ul,article.vuln-body ol{padding-left:1.3em}article.vuln-body li{margin-bottom:8px}article.vuln-body em{color:var(--ink-faint);font-style:italic}article.vuln-body code{background:var(--surface-2);border:1px solid var(--line);color:var(--ink);border-radius:4px;padding:1px 5px;font-size:14.5px}article.vuln-body pre{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:16px 18px;font-size:14px;line-height:1.6;overflow-x:auto}article.vuln-body pre code{background:0 0;border:none;padding:0}.table-wrap{border:1px solid var(--line);border-radius:12px;margin:18px 0 28px;overflow-x:auto}article.vuln-body table{border-collapse:collapse;width:100%;min-width:560px;font-size:14.5px}article.vuln-body thead th{background:var(--surface-2);text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-faint);border-bottom:1px solid var(--line);padding:11px 14px;font-family:JetBrains Mono,monospace;font-size:12px;font-weight:600}article.vuln-body tbody td{border-bottom:1px solid var(--line);color:var(--ink-soft);vertical-align:top;padding:12px 14px}article.vuln-body tbody tr:last-child td{border-bottom:none}article.vuln-body tbody tr{background:var(--surface)}.site-footer{border-top:1px solid var(--line);background:var(--surface);margin-top:24px}.site-footer .inner{max-width:1080px;margin:0 auto;padding:48px 24px 28px}.footer-brand-row{margin-bottom:32px}.footer-brand-row .brand{margin-bottom:12px}.footer-brand-row p{color:var(--ink-faint);max-width:60ch;font-size:14px;line-height:1.6}.footer-grid{border-bottom:1px solid var(--line);grid-template-columns:repeat(6,1fr);gap:24px;padding-bottom:32px;display:grid}.footer-col{flex-direction:column;gap:9px;display:flex}.footer-col-title{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);margin-bottom:4px;font-family:JetBrains Mono,monospace;font-size:12px}.footer-col a{color:var(--ink-soft);font-size:14.5px;text-decoration:none}@media (hover:hover){.footer-col a:hover{color:var(--accent-ink);text-decoration:underline}}.footer-col a:active{color:var(--accent-ink);text-decoration:underline}.footer-col a.footer-more{color:var(--accent-ink);margin-top:2px;font-weight:600}.footer-bottom{color:var(--ink-faint);justify-content:space-between;align-items:center;padding-top:20px;font-size:13.5px;display:flex}.footer-bottom a{color:var(--ink-faint)}@media (hover:hover){.footer-bottom a:hover{color:var(--ink)}}@media (width<=900px){.footer-grid{grid-template-columns:repeat(3,1fr);row-gap:28px}}@media (width<=560px){article.vuln-body h2{font-size:21px}.footer-grid{grid-template-columns:repeat(2,1fr)}}.card-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;display:grid}.card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;padding:20px 20px 18px;text-decoration:none;transition:transform .15s,border-color .15s,box-shadow .15s;display:block;position:relative;overflow:hidden}.card:before{content:"";background:linear-gradient(90deg, var(--accent), var(--accent-ink));opacity:0;height:3px;transition:opacity .15s;position:absolute;top:0;left:0;right:0}@media (hover:hover){.card:hover{border-color:var(--accent-soft-line);transform:translateY(-2px);box-shadow:0 4px 8px #14171b0f,0 16px 32px -16px #14171b38}.card:hover:before{opacity:1}}.card:active{border-color:var(--accent-soft-line);box-shadow:var(--shadow)}.card:active:before{opacity:1}.card .card-icon{background:var(--accent-soft);width:34px;height:34px;color:var(--accent-ink);border-radius:9px;justify-content:center;align-items:center;margin-bottom:14px;display:flex}.card .badge{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint);background:var(--surface-2);border:1px solid var(--line);border-radius:5px;margin-bottom:10px;padding:3px 8px;font-family:JetBrains Mono,monospace;font-size:11.5px;display:inline-block}.card h3{color:var(--ink);margin-bottom:6px;font-size:17.5px;line-height:1.3}.card p{color:var(--ink-soft);margin:0;font-size:14.5px;line-height:1.55}.section-label{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);border:none;align-items:center;gap:10px;margin-bottom:18px;padding:0;font-family:JetBrains Mono,monospace;font-size:14px;display:flex}.section-label:after{content:"";background:var(--line);flex:1;height:1px}.view-all-toggle{margin-top:16px}.view-all-toggle>summary{cursor:pointer;color:var(--accent-ink);padding:4px 0;font-size:14.5px;font-weight:600;list-style:none}.view-all-toggle>summary::-webkit-details-marker{display:none}@media (hover:hover){.view-all-toggle>summary:hover{text-decoration:underline}}.view-all-toggle>summary:active{text-decoration:underline}.subgroup-label{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);border-bottom:1px dashed var(--line);padding-bottom:8px;font-family:JetBrains Mono,monospace;font-size:12.5px}.btn{border-radius:10px;align-items:center;gap:8px;padding:13px 22px;font-size:15.5px;font-weight:600;text-decoration:none;transition:transform .12s,box-shadow .12s,border-color .12s;display:inline-flex}@media (hover:hover){.btn:hover{transform:translateY(-1px)}}.btn:active{opacity:.9;transform:translateY(0)}.btn-primary{background:linear-gradient(135deg, var(--accent), var(--accent-ink));color:#fff;box-shadow:0 6px 16px -6px #c4491d8c}.btn-secondary{background:var(--surface);color:var(--ink);border:1px solid var(--line)}@media (hover:hover){.btn-secondary:hover{border-color:var(--accent-soft-line)}}.btn-secondary:active{border-color:var(--accent-soft-line);background:var(--surface-2)}.hero{padding:8px 0 0;position:relative}.hero:before{content:"";background:radial-gradient(closest-side, var(--accent-soft), transparent);opacity:.7;z-index:-1;pointer-events:none;width:480px;height:480px;position:absolute;top:-80px;right:-120px}.hero-title{max-width:16ch;font-size:clamp(33px,5vw,47px);line-height:1.12}.hero-title .accent-text{background:linear-gradient(100deg, var(--accent-ink), var(--accent));color:#0000;-webkit-background-clip:text;background-clip:text}figure.diagram{background:var(--surface);border:1px solid var(--line);border-radius:14px;margin:36px 0;padding:0;transition:border-color .15s,box-shadow .15s;overflow:hidden;box-shadow:0 4px 20px -2px #14171b0d,0 1px 3px #14171b0a}:root[data-theme=dark] figure.diagram{box-shadow:0 8px 30px -4px #00000080,0 1px 3px #0000004d}.diagram-toolbar{background:var(--surface-2);border-bottom:1px solid var(--line);user-select:none;justify-content:space-between;align-items:center;padding:9px 16px;display:flex}.diagram-tag{align-items:center;gap:8px;display:inline-flex}.diagram-indicator{background:#10b981;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 2px #10b98133}.diagram-title{letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600}.diagram-badge{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:2px 8px;font-family:JetBrains Mono,monospace;font-size:10.5px;font-weight:500}.diagram-canvas{-webkit-overflow-scrolling:touch;background-image:radial-gradient(var(--line) .75px, transparent .75px);background-position:10px 10px;background-size:20px 20px;justify-content:center;align-items:center;padding:28px 20px 36px;display:flex;overflow:auto hidden}:root[data-theme=dark] .diagram-canvas{background-image:radial-gradient(#ffffff0f .75px,#0000 .75px)}.diagram-canvas::-webkit-scrollbar{height:6px}.diagram-canvas::-webkit-scrollbar-track{background:0 0}.diagram-canvas::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}.diagram-canvas::-webkit-scrollbar-thumb:hover{background:var(--ink-faint)}figure.diagram svg{height:auto;color:var(--ink);filter:drop-shadow(0 2px 8px #00000008);max-width:100%;display:block}@media (width<=720px){figure.diagram.diagram-desktop-only{display:none!important}figure.diagram.diagram-mobile-fit{margin:20px 0!important;display:block!important;overflow-x:hidden!important}figure.diagram.diagram-mobile-fit .diagram-canvas{justify-content:center!important;padding:14px 6px!important;display:flex!important;overflow-x:hidden!important}figure.diagram.diagram-mobile-fit svg{min-width:unset!important;width:100%!important;max-width:100%!important;height:auto!important;margin:0 auto!important}figure.diagram.diagram-mobile-fit .diagram-toolbar{padding:8px 12px!important}figure.diagram.diagram-mobile-fit .diagram-title{font-size:10.5px!important}figure.diagram.diagram-mobile-fit .diagram-badge{padding:2px 6px!important;font-size:9.5px!important}}@media (width>=721px){figure.diagram.diagram-desktop-only,figure.diagram.diagram-mobile-fit{display:block!important}figure.diagram svg{min-width:unset}}.mermaid-diagram .node rect,.mermaid-diagram .node polygon,.mermaid-diagram .node circle{transition:all .15s;rx:8px!important;ry:8px!important;stroke-width:1.5px!important}.mermaid-diagram foreignObject,.mermaid-diagram .label,.mermaid-diagram .cluster-label{overflow:visible!important}.mermaid-diagram code{white-space:nowrap!important}.mermaid-diagram .cluster rect{rx:12px!important;ry:12px!important;stroke-dasharray:4 4!important;stroke-width:1.5px!important}.mermaid-diagram .cluster text,.mermaid-diagram .cluster span.nodeLabel{text-transform:uppercase!important;letter-spacing:.04em!important;fill:var(--ink-faint)!important;color:var(--ink-faint)!important;font-family:Archivo,system-ui,-apple-system,sans-serif!important;font-size:11.5px!important;font-weight:700!important}.mermaid-diagram .edgeLabel{color:var(--ink)!important;background:0 0!important;font-family:Archivo,system-ui,-apple-system,sans-serif!important;font-size:12px!important;line-height:1.35!important}.mermaid-diagram .edgeLabel span{background:var(--surface)!important;border:1px solid var(--line)!important;color:var(--ink)!important;border-radius:6px!important;padding:2px 7px!important;display:inline-block!important;box-shadow:0 1px 3px #0000000d!important}:root[data-theme=dark] .mermaid-diagram .edgeLabel span{background:var(--surface-2)!important;border-color:var(--line)!important;color:var(--ink)!important}.mermaid-diagram code,article.vuln-body .mermaid-diagram code{border:1px solid var(--line)!important;background:var(--surface-2)!important;color:var(--ink)!important;border-radius:4px!important;padding:1px 4px!important;font-family:JetBrains Mono,monospace!important;font-size:11.5px!important;line-height:1.35!important}.mermaid-diagram .node .label{text-align:center!important;color:var(--ink)!important;font-family:Archivo,system-ui,-apple-system,sans-serif!important;font-size:13px!important;line-height:1.45!important}.mermaid-diagram .node .nodeLabel{text-align:center!important;color:var(--ink)!important;font-family:Archivo,system-ui,-apple-system,sans-serif!important;font-size:13px!important;line-height:1.45!important;display:inline-block!important}.mermaid-diagram p,article.vuln-body .mermaid-diagram p,article.attack-body .mermaid-diagram p,article.framework-body .mermaid-diagram p,article.methodology-body .mermaid-diagram p{font-family:inherit!important;font-size:inherit!important;line-height:inherit!important;color:inherit!important;margin:0!important}.mermaid-diagram .node.danger rect,.mermaid-diagram .node.breach rect,.mermaid-diagram .node.danger polygon,.mermaid-diagram .node.breach polygon{fill:var(--accent-soft)!important;stroke:var(--accent)!important;stroke-width:2px!important;filter:drop-shadow(0 2px 8px #c4491d33)!important}.mermaid-diagram .node.danger .nodeLabel,.mermaid-diagram .node.breach .nodeLabel{color:var(--accent-ink)!important;font-weight:600!important}.mermaid-diagram .node.safe rect,.mermaid-diagram .node.safe polygon{fill:#22c55e14!important;stroke:#22c55e!important;stroke-width:2px!important}.mermaid-diagram .node.safe .nodeLabel{color:#15803d!important;font-weight:600!important}:root[data-theme=dark] .mermaid-diagram .node.safe .nodeLabel{color:#4ade80!important}.mermaid-diagram .actor{stroke-width:1.5px!important;rx:8px!important;ry:8px!important;filter:drop-shadow(0 2px 4px #0000000a)!important}.mermaid-diagram text.actor>tspan{font-family:Archivo,system-ui,sans-serif!important;font-size:13.5px!important;font-weight:600!important}.mermaid-diagram .actor-line{stroke-dasharray:4 4!important;stroke-width:1.5px!important;stroke:var(--line)!important}.mermaid-diagram .messageText{fill:var(--ink)!important;font-family:Archivo,system-ui,sans-serif!important;font-size:12.5px!important}.mermaid-diagram .messageLine0,.mermaid-diagram .messageLine1{stroke-width:1.5px!important;stroke:var(--ink-soft)!important}.mermaid-diagram #arrowhead path,.mermaid-diagram #crosshead path{fill:var(--ink-soft)!important;stroke:var(--ink-soft)!important}.mermaid-diagram .sequenceNumber{font-family:JetBrains Mono,monospace!important;font-size:11px!important;font-weight:700!important}figure.diagram figcaption{color:var(--ink-faint);text-align:center;margin:12px 16px 14px;font-size:13px;font-style:italic}.ai-popup-scrim[data-astro-cid-2beqvnmd]{display:none}@media (width<=640px){.ai-popup-scrim[data-astro-cid-2beqvnmd]{-webkit-backdrop-filter:blur(4px);z-index:998;opacity:0;visibility:hidden;background:#0a0c1073;transition:opacity .22s,visibility .22s;display:block;position:fixed;inset:0}.ai-popup-scrim[data-astro-cid-2beqvnmd].open{opacity:1;visibility:visible}}.ai-popup-drawer[data-astro-cid-2beqvnmd]{background:var(--surface);border:1px solid var(--line);width:440px;max-width:calc(100vw - 32px);height:620px;max-height:calc(100dvh - 72px);box-shadow:0 16px 48px -4px #00000047, 0 0 0 1px var(--line);z-index:1000;overscroll-behavior:contain;opacity:0;visibility:hidden;pointer-events:none;transform-origin:100% 100%;border-radius:18px;flex-direction:column;transition:opacity .22s cubic-bezier(.16,1,.3,1),transform .22s cubic-bezier(.16,1,.3,1),visibility .22s;display:flex;position:fixed;bottom:24px;right:24px;overflow:hidden;transform:translateY(18px)scale(.96)}.ai-popup-drawer[data-astro-cid-2beqvnmd].open{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)scale(1)}@media (width<=640px){.ai-popup-drawer[data-astro-cid-2beqvnmd]{border-bottom:none;border-radius:20px 20px 0 0;width:100vw;max-width:100vw;height:calc(100dvh - 30px);max-height:100dvh;bottom:0;right:0;transform:translateY(100%)}.ai-popup-drawer[data-astro-cid-2beqvnmd].open{transform:translateY(0)}}.ai-popup-header[data-astro-cid-2beqvnmd]{border-bottom:1px solid var(--line);background:var(--surface-2);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex}.ai-popup-header-left[data-astro-cid-2beqvnmd]{align-items:center;gap:10px;display:flex;overflow:hidden}.ai-popup-brand[data-astro-cid-2beqvnmd]{color:var(--ink);white-space:nowrap;align-items:center;gap:8px;font-size:15px;font-weight:700;display:flex}.pulse-dot[data-astro-cid-2beqvnmd]{background:var(--accent);border-radius:50%;width:8px;height:8px;animation:2s infinite pulse;box-shadow:0 0 #c4491db3}@keyframes pulse{0%{transform:scale(.95);box-shadow:0 0 #c4491db3}70%{transform:scale(1);box-shadow:0 0 0 6px #c4491d00}to{transform:scale(.95);box-shadow:0 0 #c4491d00}}.ai-topic-pill[data-astro-cid-2beqvnmd]{background:var(--accent-soft);color:var(--accent-ink);border:1px solid var(--accent-soft-line);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;max-width:170px;padding:2px 8px;font-size:11.5px;font-weight:600;overflow:hidden}.ai-popup-header-actions[data-astro-cid-2beqvnmd]{flex-shrink:0;align-items:center;gap:6px;display:flex}.ai-popup-icon-btn[data-astro-cid-2beqvnmd]{border:1px solid var(--line);background:var(--surface);width:32px;height:32px;color:var(--ink-soft);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;text-decoration:none;transition:all .15s;display:inline-flex}.ai-popup-icon-btn[data-astro-cid-2beqvnmd]:hover{color:var(--ink);background:var(--surface-2);border-color:var(--accent-soft-line)}.ai-popup-key-panel[data-astro-cid-2beqvnmd]{background:var(--surface-2);border-bottom:1px solid var(--line);flex-direction:column;gap:8px;padding:12px 18px;font-size:13px;animation:.15s fadeIn;display:flex}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.key-panel-row[data-astro-cid-2beqvnmd]{gap:8px;display:flex}.key-panel-input[data-astro-cid-2beqvnmd]{background:var(--surface);border:1px solid var(--line);color:var(--ink);border-radius:7px;outline:none;flex:1;padding:7px 11px;font-family:JetBrains Mono,monospace;font-size:13px}.key-panel-input[data-astro-cid-2beqvnmd]:focus{border-color:var(--accent)}.key-panel-btn[data-astro-cid-2beqvnmd]{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:7px;padding:7px 14px;font-size:12.5px;font-weight:600;transition:opacity .15s}.key-panel-btn[data-astro-cid-2beqvnmd]:hover{opacity:.9}.key-panel-hint[data-astro-cid-2beqvnmd]{color:var(--ink-faint);font-size:11.5px}.key-panel-hint[data-astro-cid-2beqvnmd] a[data-astro-cid-2beqvnmd]{color:var(--accent-ink)}.ai-popup-thread[data-astro-cid-2beqvnmd]{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;scroll-behavior:auto;flex-direction:column;flex:1;justify-content:flex-start;gap:20px;min-height:0;padding:16px 16px 36px;display:flex;overflow:hidden auto}.ai-popup-thread[data-astro-cid-2beqvnmd]::-webkit-scrollbar{width:6px}.ai-popup-thread[data-astro-cid-2beqvnmd]::-webkit-scrollbar-track{background:0 0}.ai-popup-thread[data-astro-cid-2beqvnmd]::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}.ai-popup-thread[data-astro-cid-2beqvnmd]::-webkit-scrollbar-thumb:hover{background:var(--ink-faint)}.ai-popup-jump-btn[data-astro-cid-2beqvnmd]{background:var(--surface);width:32px;height:32px;color:var(--ink);border:1px solid var(--accent);cursor:pointer;z-index:25;border-radius:50%;justify-content:center;align-items:center;transition:all .18s cubic-bezier(.16,1,.3,1);animation:.2s ease-out popInJump;display:flex;position:absolute;bottom:74px;right:16px;box-shadow:0 4px 14px #00000029}.ai-popup-jump-btn[data-astro-cid-2beqvnmd]:hover{background:var(--accent);color:#fff;transform:translateY(-2px);box-shadow:0 6px 18px #c4491d66}@keyframes popInJump{0%{opacity:0;transform:scale(.75)translateY(6px)}to{opacity:1;transform:scale(1)translateY(0)}}.ai-popup-welcome[data-astro-cid-2beqvnmd]{background:var(--surface-2);border:1px solid var(--line);text-align:center;border-radius:12px;margin:auto 0;padding:20px}.welcome-icon[data-astro-cid-2beqvnmd]{color:var(--accent);margin-bottom:8px;font-size:22px}.ai-popup-welcome[data-astro-cid-2beqvnmd] h4[data-astro-cid-2beqvnmd]{color:var(--ink);margin:0 0 8px;font-size:17px}.ai-popup-welcome[data-astro-cid-2beqvnmd] p[data-astro-cid-2beqvnmd]{color:var(--ink-soft);margin:0;font-size:13.5px;line-height:1.55}@keyframes slideInRight{0%{opacity:0;transform:translate(18px)translateY(6px)}to{opacity:1;transform:translate(0)translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-12px)translateY(6px)}to{opacity:1;transform:translate(0)translateY(0)}}.ai-popup-user-group{flex-direction:column;flex-shrink:0;align-self:flex-end;align-items:flex-end;gap:4px;max-width:88%;animation:.22s cubic-bezier(.16,1,.3,1) both slideInRight;display:flex}.ai-popup-card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:12px;flex-shrink:0;animation:.26s cubic-bezier(.16,1,.3,1) both slideInLeft;overflow:hidden}.ai-popup-user-bubble-box{flex-direction:column;align-items:flex-end;gap:4px;max-width:100%;display:flex}.ai-popup-user-bubble{background:var(--accent);color:#fff;word-break:break-word;border:none;border-radius:14px 14px 4px;min-width:120px;padding:10px 16px;font-size:14.5px;line-height:1.55;box-shadow:0 2px 8px #c4491d40}.ai-popup-msg-actions{opacity:0;pointer-events:none;align-items:center;gap:5px;transition:opacity .15s;display:flex}.ai-popup-user-group:hover .ai-popup-msg-actions{opacity:1;pointer-events:auto}.ai-popup-msg-btn{background:var(--surface);border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;border-radius:5px;align-items:center;gap:3px;padding:2px 7px;font-family:inherit;font-size:11px;transition:all .15s;display:inline-flex}.ai-popup-msg-btn:hover{color:var(--ink);border-color:var(--accent)}.ai-popup-msg-btn.delete-btn:hover{color:#ef4444;border-color:#ef444466}.ai-popup-user-edit-box{background:var(--surface);border:1px solid var(--accent);border-radius:10px;flex-direction:column;gap:6px;width:100%;min-width:250px;padding:8px;display:flex;box-shadow:0 4px 12px #00000014}.ai-popup-edit-textarea{width:100%;color:var(--ink);resize:vertical;background:0 0;border:none;outline:none;min-height:46px;font-family:inherit;font-size:13.5px;line-height:1.45}.ai-popup-edit-actions{border-top:1px solid var(--line);justify-content:flex-end;gap:6px;margin-top:4px;padding-top:6px;display:flex}.ai-popup-edit-cancel{border:1px solid var(--line);background:var(--surface-2);color:var(--ink-soft);cursor:pointer;border-radius:5px;padding:3px 9px;font-size:11.5px}.ai-popup-edit-cancel:hover{color:var(--ink);background:var(--surface)}.ai-popup-edit-save{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:5px;padding:3px 10px;font-size:11.5px;font-weight:600}.ai-popup-card-header{background:var(--surface-2);border-bottom:1px solid var(--line);color:var(--ink);justify-content:space-between;align-items:center;padding:9px 12px;font-size:12.5px;font-weight:600;display:flex}.ai-card-header-actions{align-items:center;gap:6px;display:flex}.ai-popup-card-del-btn{width:20px;height:20px;color:var(--ink-faint);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;transition:all .15s;display:inline-flex}.ai-popup-card-del-btn:hover{color:#ef4444;background:var(--surface);border-color:#ef44444d}.ai-popup-card-body{color:var(--ink);padding:14px 16px;font-size:14.5px;line-height:1.65}.ai-popup-card-body h2{border-bottom:1px solid var(--line);margin:14px 0 8px;padding-bottom:4px;font-size:14px}.ai-popup-card-body h2:first-child{margin-top:0}.ai-popup-card-body ul,.ai-popup-card-body ol{margin:6px 0 10px;padding-left:18px}.ai-popup-card-body li{margin-bottom:5px}.ai-popup-toolbar{border-top:1px solid var(--line);background:var(--surface-2);flex-wrap:wrap;gap:8px;padding:8px 12px;display:flex}.ai-popup-tool-btn{background:var(--surface);border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;border-radius:6px;align-items:center;gap:5px;padding:4px 9px;font-size:11.5px;font-weight:600;transition:all .15s;display:inline-flex}.ai-popup-tool-btn:hover{color:var(--ink);border-color:var(--accent)}.ai-popup-tool-btn.danger:hover{color:#ef4444;background:var(--surface-2);border-color:#ef444466}.ai-popup-tool-btn.success{color:#fff;background:#10b981;border-color:#10b981}.ai-popup-citations{border-top:1px solid var(--line);background:var(--surface);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 12px;font-size:11.5px;display:flex}.ai-popup-cite-badge{background:var(--surface-2);color:var(--accent-ink);border:1px solid var(--line);border-radius:6px;align-items:center;gap:4px;padding:2px 7px;font-size:11.5px;font-weight:500;text-decoration:none;display:inline-flex}.ai-popup-cite-badge:hover{border-color:var(--accent);color:var(--accent)}.ai-popup-footer[data-astro-cid-2beqvnmd]{border-top:1px solid var(--line);background:var(--surface-2);flex-shrink:0;padding:10px 16px 12px}.ai-file-preview-bar[data-astro-cid-2beqvnmd]{align-items:center;gap:8px;padding-bottom:8px;display:flex;overflow-x:auto}.ai-file-chip[data-astro-cid-2beqvnmd]{background:var(--surface);border:1px solid var(--accent-soft-line);border-radius:8px;align-items:center;gap:8px;max-width:100%;padding:4px 8px;font-size:12px;display:inline-flex}.ai-file-thumb[data-astro-cid-2beqvnmd]{object-fit:cover;border:1px solid var(--line);border-radius:4px;width:26px;height:26px}.ai-file-icon[data-astro-cid-2beqvnmd]{background:var(--surface-2);width:26px;height:26px;color:var(--accent);border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;display:inline-flex}.ai-file-info[data-astro-cid-2beqvnmd]{flex-direction:column;line-height:1.2;display:flex;overflow:hidden}.ai-file-name[data-astro-cid-2beqvnmd]{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;max-width:210px;font-weight:600;overflow:hidden}.ai-file-size[data-astro-cid-2beqvnmd]{color:var(--ink-faint);font-size:10.5px}.ai-file-remove-btn[data-astro-cid-2beqvnmd]{color:var(--ink-faint);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:13px;line-height:1;transition:color .15s}.ai-file-remove-btn[data-astro-cid-2beqvnmd]:hover{color:#ef4444}.ai-attach-btn[data-astro-cid-2beqvnmd]{color:var(--ink-faint);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-self:flex-end;align-items:center;margin-bottom:2px;padding:4px;transition:all .15s;display:inline-flex}.ai-attach-btn[data-astro-cid-2beqvnmd]:hover{color:var(--accent);background:var(--surface-2)}.ai-bubble-attachment{background:#ffffff2e;border:1px solid #ffffff59;border-radius:8px;flex-direction:column;gap:4px;max-width:100%;margin-bottom:8px;padding:6px 10px;font-size:12px;display:inline-flex}.ai-bubble-attachment img{object-fit:cover;border:1px solid #fff6;border-radius:6px;max-width:200px;max-height:140px;margin-bottom:4px}.ai-bubble-attachment-name{color:#fff;align-items:center;gap:4px;font-weight:600;display:inline-flex}.ai-input-box[data-astro-cid-2beqvnmd]{background:var(--surface);border:1.5px solid var(--line);border-radius:12px;align-items:flex-end;gap:8px;padding:8px 12px;transition:border-color .15s;display:flex}.ai-input-box[data-astro-cid-2beqvnmd]:focus-within{border-color:var(--accent)}#aiPopupInput[data-astro-cid-2beqvnmd]{color:var(--ink);resize:none;background:0 0;border:none;outline:none;flex:1;min-height:22px;max-height:120px;padding:2px 0;font-family:inherit;font-size:14px;line-height:1.45}.ai-input-controls[data-astro-cid-2beqvnmd]{align-items:center;gap:6px;display:flex}.ai-popup-clear-btn[data-astro-cid-2beqvnmd]{color:var(--ink-faint);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:4px;display:flex}.ai-popup-clear-btn[data-astro-cid-2beqvnmd]:hover{color:var(--ink);background:var(--surface-2)}.ai-popup-send-btn[data-astro-cid-2beqvnmd]{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;transition:opacity .15s;display:inline-flex}.ai-popup-send-btn[data-astro-cid-2beqvnmd]:hover{opacity:.9}.ai-popup-send-btn[data-astro-cid-2beqvnmd]:disabled{opacity:.5;cursor:not-allowed}.spinner[data-astro-cid-2beqvnmd]{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.ai-popup-fab[data-astro-cid-2beqvnmd]{background:var(--surface);color:var(--ink);border:1px solid var(--accent);box-shadow:0 8px 24px #00000029, 0 0 0 1px var(--line);cursor:pointer;z-index:990;border-radius:999px;align-items:center;gap:8px;padding:10px 18px;font-family:inherit;font-size:13.5px;font-weight:700;transition:all .22s cubic-bezier(.16,1,.3,1);display:inline-flex;position:fixed;bottom:24px;right:24px}.ai-popup-fab[data-astro-cid-2beqvnmd]:hover{background:var(--accent);color:#fff;transform:translateY(-2px);box-shadow:0 10px 28px #c4491d66}.fab-spark[data-astro-cid-2beqvnmd]{color:var(--accent);font-size:15px;line-height:1;transition:color .15s,transform .2s}.ai-popup-fab[data-astro-cid-2beqvnmd]:hover .fab-spark[data-astro-cid-2beqvnmd]{color:#fff;transform:scale(1.2)rotate(15deg)}.ai-popup-fab[data-astro-cid-2beqvnmd].chat-open{opacity:0;pointer-events:none;transform:scale(.85)}
