@layer reset{*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd,ul,ol{margin:0}img,svg{max-width:100%;height:auto;display:block}button,input,select,textarea{font:inherit;color:inherit}table{border-collapse:collapse}}@layer site{:root{--paper:#f8f3ef;--paper-2:#efe7e1;--ink:#201313;--ink-2:#57423f;--rule:#d8cbc4;--rule-strong:#201313;--red:#b8261f;--red-fill:#cc2727;--on-red:#fff;--cyan:#136b8a;--violet:#7b2fb0;--green:#17734f;--focus:#b8261f;--bar:#201313;--sig:#b8261f;--font-body:"Public Sans Variable", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--font-display:"Big Shoulders Stencil Display Variable", "Arial Narrow", sans-serif;--wrap:74rem;--measure:42rem;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#201313;--paper-2:#2a1a1a;--ink:#f4ebe7;--ink-2:#c9b7b2;--rule:#4a3330;--rule-strong:#f4ebe7;--red:#ff8077;--red-fill:#cc2727;--on-red:#fff;--cyan:#58c3e6;--violet:#cf9bf5;--green:#4fd6a3;--focus:#ff8077;--bar:#f4ebe7;--sig:#ff8077;color-scheme:dark}}:root[data-theme=dark]{--paper:#201313;--paper-2:#2a1a1a;--ink:#f4ebe7;--ink-2:#c9b7b2;--rule:#4a3330;--rule-strong:#f4ebe7;--red:#ff8077;--red-fill:#cc2727;--on-red:#fff;--cyan:#58c3e6;--violet:#cf9bf5;--green:#4fd6a3;--focus:#ff8077;--bar:#f4ebe7;--sig:#ff8077;color-scheme:dark}html{background:var(--paper)}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-variation-settings:"wght" 400;font-size:1.0625rem;line-height:1.6}a{color:inherit;text-decoration-color:var(--red);text-underline-offset:3px;text-decoration-thickness:2px}a:hover{color:var(--red)}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}strong{font-weight:650}code,kbd,.mono{font-family:var(--font-mono);font-size:.9em}.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:1rem}@media (width>=48rem){.wrap{padding-inline: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{background:var(--ink);color:var(--paper);z-index:10;padding:.5rem 1rem;position:absolute;top:0;left:-999px}.skip:focus{left:1rem}h1{font-family:var(--font-display);font-variation-settings:"wght" 800;letter-spacing:.005em;text-transform:uppercase;overflow-wrap:break-word;hyphens:manual;max-width:22ch;font-size:clamp(2.4rem,1.4rem + 4.6vw,5rem);font-weight:800;line-height:1.04}h2{font-variation-settings:"wght" 700;letter-spacing:-.01em;font-size:1.6rem;font-weight:700;line-height:1.2}h3{font-variation-settings:"wght" 650;font-size:1.2rem;font-weight:650;line-height:1.3}p+p{margin-top:.9em}.label{font-family:var(--font-mono);letter-spacing:.02em;color:var(--ink-2);font-size:.8rem}.label b{color:var(--ink);font-weight:600}.label .sep{color:var(--rule);padding-inline:.35em}.site-header{border-bottom:2px solid var(--rule-strong)}.site-header .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1.5rem;padding-block:.8rem;display:flex}.brand{font-family:var(--font-mono);align-items:center;gap:.55rem;font-size:.95rem;font-weight:600;text-decoration:none;display:inline-flex}.brand-mark{flex:none;width:1.6rem;height:1.6rem}.nav{font-family:var(--font-mono);flex-wrap:wrap;align-items:center;gap:.25rem 1.1rem;font-size:.88rem;display:flex}.nav a{border-bottom:2px solid #0000;padding-block:.25rem;text-decoration:none}.nav a[aria-current=page]{border-bottom-color:var(--red)}.theme-btn{border:1px solid var(--rule);font-family:var(--font-mono);cursor:pointer;background:0 0;border-radius:2px;padding:.15rem .5rem;font-size:.8rem}.site-footer{border-top:2px solid var(--rule-strong);margin-top:5rem;padding-block:2.5rem 3rem;font-size:.95rem}.site-footer .cols{grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:1.5rem;display:grid}.site-footer ul{gap:.3rem;padding:0;list-style:none;display:grid}.site-footer .fine{margin-top:2rem}main{display:block}.page-head{border-bottom:1px solid var(--rule);padding-block:2.2rem 1.6rem}.page-head .lede{max-width:var(--measure);color:var(--ink-2);margin-top:1rem;font-size:1.15rem}.page-head .label{margin-bottom:.9rem}.crumbs{font-family:var(--font-mono);color:var(--ink-2);margin-bottom:1rem;font-size:.8rem}.crumbs ol{flex-wrap:wrap;gap:.2rem .5rem;padding:0;list-style:none;display:flex}.crumbs li+li:before{content:"/";color:var(--rule);margin-right:.5rem}.section{padding-block:2.4rem}.section>h2,.section-head{margin-bottom:1.1rem}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;display:flex}.prose{max-width:var(--measure)}.prose h2{margin-top:2.4rem;margin-bottom:.7rem}.prose h3{margin-top:1.8rem;margin-bottom:.5rem}.prose ul,.prose ol{margin-top:.8em;padding-left:1.3rem}.prose li+li{margin-top:.35em}.prose p+ul,.prose ul+p,.prose ol+p,.prose p+ol{margin-top:.8em}.prose table{margin-top:1rem}.grid-2{gap:2rem;display:grid}@media (width>=60rem){.grid-2{grid-template-columns:minmax(0,1fr) 20rem;gap:3rem}}.chip{font-family:var(--font-mono);white-space:nowrap;border:1.5px solid;border-radius:2px;padding:.3rem .4rem;font-size:.76rem;font-weight:600;line-height:1;display:inline-block}.chip.owasp{color:var(--violet)}.chip.asi{color:var(--violet);border-style:dashed}.chip.reg{color:var(--ink)}.chips{flex-wrap:wrap;gap:.35rem;display:flex}.register{border-top:2px solid var(--rule-strong);padding:0;list-style:none}.reg-row{border-bottom:1px solid var(--rule);grid-template-columns:4.2rem minmax(0,1fr);gap:.3rem 1rem;padding:1rem .5rem 1.05rem 0;display:grid;position:relative}@media (width>=52rem){.reg-row{grid-template-columns:4.6rem minmax(0,1fr) 12rem}}.reg-row .reg{font-family:var(--font-mono);border:1.5px solid var(--ink);text-align:center;border-radius:2px;grid-row:span 3;align-self:start;padding:.25rem .35rem;font-size:.95rem;font-weight:600;transition:background-color .12s,color .12s}.reg-row h3,.reg-row .t{font-size:1.15rem;font-weight:650;line-height:1.3}.reg-row h3 a:after,.reg-row .t a:after{content:"";position:absolute;inset:0}.reg-row a{text-decoration:none}.reg-row p{color:var(--ink-2);max-width:46rem;font-size:.97rem}.reg-row .side{flex-direction:column;align-items:flex-start;gap:.35rem;display:flex}@media (width>=52rem){.reg-row .side{text-align:right;grid-area:1/3/span 3;align-items:flex-end}}.reg-row:hover .reg,.reg-row:focus-within .reg{background:var(--red-fill);color:var(--on-red);border-color:var(--red-fill)}.reg-row:focus-within{outline:3px solid var(--focus);outline-offset:2px}.reg-row:focus-within a:focus-visible{outline:none}.reg-row:hover h3 a,.reg-row:hover .t a{color:var(--red)}.tickets{gap:1rem;padding:0;list-style:none;display:grid}.ticket{border:1.5px solid var(--ink);background:var(--paper);border-left-width:6px;padding:1rem 1rem 1.1rem;position:relative}.ticket[data-type=incident]{border-left-color:var(--red)}.ticket[data-type=research]{border-left-color:var(--cyan)}.ticket header{flex-wrap:wrap;align-items:center;gap:.4rem .8rem;margin-bottom:.5rem;display:flex}.stamp{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border:2px double;padding:.25rem .45rem;font-size:.72rem;font-weight:600;display:inline-block;transform:rotate(-2deg)}.stamp.incident{color:var(--red)}.stamp.research{color:var(--cyan)}.ticket h3{font-size:1.08rem}.ticket h3 a{text-decoration:none}.ticket p{font-size:.97rem}.ticket .outcome{color:var(--ink-2);margin-top:.5rem}.ticket .src{margin-top:.6rem;font-size:.85rem}.ticket .src a{word-break:break-word}.callout{border:1.5px solid var(--ink);max-width:var(--measure);margin-block:1.4rem;padding:1rem 1.1rem}.callout .label{margin-bottom:.35rem;display:block}.callout.note{border-style:dashed}table.data{width:100%;font-size:.93rem}table.data th,table.data td{text-align:left;vertical-align:top;border-bottom:1px solid var(--rule);padding:.55rem .6rem .55rem 0}table.data thead th{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-2);border-bottom:2px solid var(--rule-strong);font-size:.75rem}.table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.table-scroll:focus-visible{outline-offset:0}.controls{max-width:var(--measure);gap:.65rem;padding:0;list-style:none;display:grid}.controls li{grid-template-columns:1.4rem minmax(0,1fr);gap:.5rem;display:grid}.controls li:before{content:"☐";font-family:var(--font-mono);color:var(--green)}.controls .ref{font-family:var(--font-mono);color:var(--ink-2);margin-top:.15rem;font-size:.76rem;display:block}.questions{max-width:var(--measure);gap:.4rem;padding-left:1.3rem;display:grid}.sources{gap:.6rem;max-width:52rem;padding-left:1.3rem;font-size:.92rem;display:grid}.sources .meta{font-family:var(--font-mono);color:var(--ink-2);font-size:.75rem;display:block}.sources a{word-break:break-word}dl.facts{grid-template-columns:max-content minmax(0,1fr);gap:.45rem 1rem;font-size:.95rem;display:grid}dl.facts dt{font-family:var(--font-mono);color:var(--ink-2);padding-top:.15rem;font-size:.78rem}.aside-box{border:1.5px solid var(--ink);align-self:start;gap:.9rem;padding:1rem;display:grid}.btn{font-family:var(--font-mono);border:2px solid var(--ink);background:var(--red-fill);color:var(--on-red);cursor:pointer;border-radius:2px;align-items:center;gap:.4rem;padding:.6rem .95rem;font-size:.92rem;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{color:var(--on-red);filter:brightness(1.06)}.btn.ghost{color:var(--ink);background:0 0}.btn.ghost:hover{color:var(--red)}.takeaways{border-top:2px solid var(--rule-strong);border-bottom:1px solid var(--rule);max-width:var(--measure);margin-block:1.5rem;padding-block:1rem}.takeaways ul{gap:.4rem;margin-top:.4rem;padding-left:1.2rem;display:grid}.toc{font-size:.93rem}.toc ol{gap:.25rem;margin-top:.4rem;padding-left:1.2rem;display:grid}.faq dt{margin-top:1rem;font-weight:650}.faq dd{max-width:var(--measure);margin-top:.3rem}.changelog{gap:.3rem;padding:0;font-size:.92rem;list-style:none;display:grid}.hero{border-bottom:2px solid var(--rule-strong);padding-block:2.6rem 2.2rem}.hero .label{margin-bottom:1.1rem}.hero h1{max-width:16ch}.hero .lede{max-width:40rem;color:var(--ink-2);margin-top:1.3rem;font-size:1.2rem}.hero .actions{flex-wrap:wrap;gap:.7rem;margin-top:1.6rem;display:flex}.uses-picker{grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr));gap:.5rem;display:grid}.uses-picker a{border:1.5px solid var(--ink);padding:.7rem .8rem;font-size:.95rem;line-height:1.35;text-decoration:none;display:block}.uses-picker a:hover{border-color:var(--red)}.uses-picker .k{font-family:var(--font-mono);color:var(--ink-2);margin-bottom:.2rem;font-size:.74rem;display:block}.sig{color:var(--sig)}.sig-art{display:inline}.sig-word{white-space:nowrap;display:inline-block}.sig-ch{display:inline-block;position:relative}.sig-ch:before{content:attr(data-c);visibility:hidden;font-variation-settings:"wght" 900}.sig-ch>i{text-align:center;font-style:normal;position:absolute;inset:0}.sig-ch>i:before{content:attr(data-c);font-variation-settings:"wght" 800;animation:sig-ink var(--p,5s) steps(1, end) var(--o,2s) infinite}.sig-ch>i:after{content:"";background:var(--bar);transform-origin:100%;animation:sig-lift .32s cubic-bezier(.7, 0, .3, 1) var(--d,.4s) both;position:absolute;inset:.08em -.02em .06em;transform:scaleX(0)}@keyframes sig-lift{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@keyframes sig-ink{0%{font-variation-settings:"wght" 800}92%{font-variation-settings:"wght" 900}97%{font-variation-settings:"wght" 800}}@media (prefers-reduced-motion:reduce){.sig-ch>i:before{animation:none}.sig-ch>i:after{animation:none;transform:scaleX(0)}.reg-row .reg{transition:none}}.tool{border:2px solid var(--rule-strong);padding:1rem}@media (width>=48rem){.tool{padding:1.4rem}}.tool fieldset{border:0;margin:0;padding:0}.tool legend{margin-bottom:.6rem;font-weight:650}.use-opts{grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr));gap:.45rem;display:grid}.use-opt{border:1.5px solid var(--rule);cursor:pointer;grid-template-columns:1.3rem minmax(0,1fr);align-items:start;gap:.5rem;padding:.6rem .7rem;display:grid}.use-opt:has(input:checked){border-color:var(--ink);background:var(--paper-2)}.use-opt input{width:1.1rem;height:1.1rem;accent-color:var(--red-fill);margin-top:.2rem}.use-opt small{color:var(--ink-2);font-size:.85rem;line-height:1.35;display:block}.tool-bar{flex-wrap:wrap;align-items:center;gap:.6rem;margin-block:1.2rem .8rem;display:flex}.tool-status{font-family:var(--font-mono);color:var(--ink-2);font-size:.85rem}.reg-table td input,.reg-table td select{border:1px solid var(--rule);background:var(--paper);border-radius:2px;width:100%;min-width:7rem;padding:.35rem .4rem;font-size:.9rem}.reg-table .why{color:var(--ink-2);font-size:.82rem}.reg-table details{margin-top:.35rem;font-size:.9rem}.reg-table summary{cursor:pointer;font-family:var(--font-mono);font-size:.78rem}.reg-table details ul{gap:.25rem;margin-top:.3rem;padding-left:1.1rem;display:grid}.empty{border:1.5px dashed var(--rule);color:var(--ink-2);padding:1.2rem}.yt{aspect-ratio:16/9;border:1.5px solid var(--ink);background:#000;max-width:44rem;margin-block:1.2rem .4rem;position:relative}.yt button{cursor:pointer;background:#000;border:0;width:100%;height:100%;padding:0;position:absolute;inset:0}.yt img{object-fit:cover;opacity:.82;width:100%;height:100%}.yt .play{background:var(--red-fill);color:var(--on-red);font-family:var(--font-mono);border:2px solid #201313;padding:.55rem .9rem;font-weight:600;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.yt iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.yt-cap{color:var(--ink-2);max-width:44rem;font-size:.88rem}@media (width<=47.99rem){.reg-table thead{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.reg-table,.reg-table tbody{display:block}.reg-table tr{border-bottom:1px solid var(--rule);grid-template-columns:3.4rem minmax(0,1fr);gap:.3rem .6rem;padding-block:.8rem;display:grid}table.data.reg-table td{border:0;padding:0;display:block}.reg-table td[data-label]{grid-column:1/-1;grid-template-columns:4.5rem minmax(0,1fr);align-items:center;gap:.5rem;display:grid}.reg-table td[data-label]:before{content:attr(data-label);font-family:var(--font-mono);color:var(--ink-2);font-size:.75rem}}}
