@font-face{font-family:Big Shoulders Display Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/big-shoulders-display-vietnamese-wght-normal.B-JM5mJH.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Big Shoulders Display Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/big-shoulders-display-latin-ext-wght-normal.EP2r9iG4.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Big Shoulders Display Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/big-shoulders-display-latin-wght-normal.Bn_gnr7w.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible Next Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/atkinson-hyperlegible-next-latin-ext-wght-normal.C6vrW8VD.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible Next Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/atkinson-hyperlegible-next-latin-wght-normal.BcXVPD7q.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/martian-mono-cyrillic-wght-normal.B84CD5C_.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/martian-mono-latin-ext-wght-normal.DlL6xMw5.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/martian-mono-latin-wght-normal.5W32yIyr.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ground:#e4e5e0;--ground-2:#d9dbd5;--plate:#f5f5f2;--plate-edge:#b8bab3;--carbon:#15161a;--carbon-2:#24262c;--ink:#16171b;--ink-2:#3b3e45;--muted:#676b72;--rule:#c3c5bf;--rule-strong:#9a9d96;--bone:#efece4;--orange:#dd4f1c;--orange-wash:#f6d9cb;--crimson:#a8204f;--crimson-wash:#f0d3dd;--verdigris:#23725d;--verdigris-wash:#d0e6dd;--amber:#b07a12;--display:"Big Shoulders Display Variable", "Arial Narrow", sans-serif;--body:"Atkinson Hyperlegible Next Variable", "Segoe UI", sans-serif;--mono:"Martian Mono Variable", ui-monospace, "SFMono-Regular", monospace;--wrap:76rem;--gut:clamp(1rem, 3.5vw, 2.25rem);--radius:10px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:1.5rem}body{background-color:var(--ground);color:var(--ink);font:400 1.0625rem/1.62 var(--body);text-rendering:optimizelegibility;background-image:radial-gradient(#16171b13 1px,#0000 1.2px);background-size:18px 18px;margin:0}a{color:inherit;text-decoration-line:underline;text-decoration-color:var(--orange);text-underline-offset:3px;text-decoration-thickness:2px}a:hover{color:var(--orange)}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--orange);outline-offset:2px}img,svg{max-width:100%}strong,b{font-weight:700}code{font-family:var(--mono);background:var(--ground-2);border-radius:4px;padding:.05em .35em;font-size:.82em}.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(--carbon);color:var(--bone);z-index:10;padding:.6rem 1rem;position:absolute;top:0;left:-999px}.skip:focus{top:.5rem;left:.5rem}.wrap{max-width:var(--wrap);padding:0 var(--gut);margin:0 auto}.mono{font-family:var(--mono)}.small{font-size:.86rem}.muted{color:var(--muted)}.strip{background:var(--carbon);color:#cfccc4;font:500 .66rem/1.5 var(--mono);letter-spacing:.02em}.strip .wrap{flex-wrap:wrap;align-items:center;gap:.6rem 1.2rem;padding-top:.55rem;padding-bottom:.55rem;display:flex}.strip .stamp{color:var(--carbon);background:var(--orange);text-transform:uppercase;white-space:nowrap;border-radius:3px;padding:.15rem .5rem;font-weight:700}.strip a{color:var(--bone);text-decoration-color:var(--orange)}.strip span.txt{flex:32rem}.mast{border-bottom:1px solid var(--rule-strong);background:#e4e5e0eb;position:relative}.mast .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem 2rem;padding-top:1rem;padding-bottom:1rem;display:flex}.mark{color:var(--ink);align-items:center;gap:.75rem;text-decoration:none;display:inline-flex}.mark:hover{color:var(--ink)}.mark-plate{background:var(--carbon);width:2.6rem;height:2.6rem;color:var(--orange);font:800 1.15rem/1 var(--display);letter-spacing:.02em;border-radius:7px;place-items:center;display:grid;position:relative}.mark-plate:before,.mark-plate:after{content:"";background:#5d6068;border-radius:50%;width:4px;height:4px;position:absolute;top:5px}.mark-plate:before{left:5px}.mark-plate:after{right:5px}.mark-word{font:800 1.55rem/.95 var(--display);text-transform:uppercase;letter-spacing:.01em}.mark-word small{font:500 .6rem/1.4 var(--mono);letter-spacing:.06em;color:var(--muted);text-transform:uppercase;margin-top:.2rem;display:block}.nav{font:600 .7rem/1 var(--mono);text-transform:uppercase;letter-spacing:.03em;flex-wrap:wrap;gap:.25rem;display:flex}.nav a{border:1px solid #0000;border-radius:6px;padding:.55rem .7rem;text-decoration:none}.nav a:hover{background:var(--plate);border-color:var(--rule);color:var(--ink)}.nav a[aria-current=page]{background:var(--carbon);color:var(--bone)}.nav a.nav-cta{border-color:var(--ink)}.head{padding-top:clamp(2.2rem,6vw,4.5rem);padding-bottom:clamp(1.6rem,4vw,2.6rem)}.head-grid{grid-template-columns:minmax(0,1fr);gap:2.4rem;display:grid}@media (width>=1080px){.head-grid.has-aside{grid-template-columns:minmax(0,1.6fr) minmax(19rem,.72fr);align-items:start}}.head-aside .plate{margin-top:2.6rem}.index-plate .spec dd{font-family:var(--mono);font-size:.74rem}.index-plate .big-n{font:800 2.6rem/.9 var(--display)}.crumbs{font:500 .68rem/1.4 var(--mono);color:var(--muted);margin-bottom:1.1rem}.crumbs ol{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.crumbs li+li:before{content:"/";color:var(--rule-strong);margin-right:.4rem}.crumbs a{text-decoration:none}.kicker{font:600 .72rem/1.4 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:.6rem;margin:0 0 1rem;display:flex}.kicker .dot{background:var(--orange);border-radius:2px;width:9px;height:9px;display:inline-block}h1,h2,h3,h4{font-family:var(--display);letter-spacing:-.005em;margin:0;font-weight:800;line-height:.98}h1{text-transform:uppercase;max-width:15ch;font-size:clamp(2.8rem,7.4vw,5.8rem)}h1 .thin{color:var(--ink-2);font-weight:500}h2{text-transform:uppercase;margin-bottom:1rem;font-size:clamp(2rem,4.4vw,3.1rem)}h3{margin-bottom:.4rem;font-size:1.55rem}.lede{max-width:46rem;color:var(--ink-2);margin:1.3rem 0 0;font-size:clamp(1.1rem,1.6vw,1.28rem)}.brief{background:var(--plate);border:1px solid var(--plate-edge);border-top:3px solid var(--ink);border-radius:0 var(--radius) var(--radius) var(--radius);max-width:52rem;margin:2rem 0 0;padding:1.35rem 1.5rem 1.2rem;position:relative}.brief-tab{background:var(--ink);color:var(--bone);font:700 .62rem/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;border-radius:6px 6px 0 0;padding:.55rem .8rem .5rem;position:absolute;top:-1.75rem;left:-1px}.brief p{margin:0;font-size:1.12rem;line-height:1.55}.sec{border-top:1px solid var(--rule-strong);padding:clamp(2.2rem,5vw,3.6rem) 0}.sec-head{grid-template-columns:minmax(0,1fr);gap:.4rem;margin-bottom:1.4rem;display:grid}.sec-code{font:600 .66rem/1 var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.sec-intro{max-width:46rem;color:var(--ink-2);margin:0}.prose{max-width:46rem}.prose p,.prose li{color:var(--ink)}.prose h3{margin-top:1.8rem}.prose ul,.prose ol{padding-left:1.2rem}.prose li{margin:.35rem 0}.two{grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));gap:1.5rem 2.5rem;display:grid}.lane{font:700 .6rem/1 var(--mono);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;align-items:center;gap:.4rem;display:inline-flex}.lane:before{content:"";background:currentColor;border-radius:2px;width:9px;height:9px}.lane-platform{color:var(--orange)}.lane-redteam{color:var(--crimson)}.lane-opensource{color:var(--verdigris)}.chip{font:600 .62rem/1 var(--mono);letter-spacing:.02em;border:1px solid var(--rule-strong);background:var(--plate);white-space:nowrap;color:var(--ink-2);border-radius:4px;padding:.32rem .45rem;display:inline-block}.chip-yes{border-color:var(--verdigris);color:var(--verdigris);background:var(--verdigris-wash)}.chip-ask{border-color:var(--amber);color:#7c5408;background:#f4e6c4}.chip-no{color:var(--muted);background:0 0;border-style:dashed}.chip-warn{border-color:var(--crimson);color:var(--crimson);background:var(--crimson-wash)}.chips{flex-wrap:wrap;gap:.3rem;display:flex}.spectrum{border-radius:var(--radius);border:1px solid var(--carbon);height:3.6rem;margin:2.2rem 0 .8rem;display:flex;overflow:hidden}.spectrum a{color:#fff;font:700 .66rem/1 var(--mono);text-transform:uppercase;letter-spacing:.04em;justify-content:space-between;align-items:flex-end;min-width:6rem;padding:.55rem .7rem;text-decoration:none;transition:filter .2s;display:flex}.spectrum a:hover{filter:brightness(1.12);color:#fff}.spectrum b{font:800 1.9rem/.8 var(--display)}.spectrum .s-platform{background:var(--orange)}.spectrum .s-redteam{background:var(--crimson)}.spectrum .s-opensource{background:var(--verdigris)}.spectrum-legend{font:500 .68rem/1.5 var(--mono);color:var(--muted);flex-wrap:wrap;gap:.4rem 1.4rem;display:flex}.plates{grid-template-columns:repeat(auto-fill,minmax(min(100%,19.5rem),1fr));gap:1.1rem;display:grid}.plate{--lane-c:var(--orange);background:linear-gradient(180deg, #f8f8f6 0%, var(--plate) 55%, #ecede8 100%);border:1px solid var(--plate-edge);border-radius:var(--radius);box-shadow:inset 0 0 0 5px var(--plate), inset 0 0 0 6px #d6d8d2, 0 1px 0 #ffffffb3, 0 1px 2px #16171b14;flex-direction:column;gap:.7rem;padding:1.35rem 1.35rem 1.15rem;transition:transform .25s,box-shadow .25s;display:flex;position:relative}.plate:hover{box-shadow:inset 0 0 0 5px var(--plate), inset 0 0 0 6px #d6d8d2, 0 10px 24px -14px #16171b73;transform:translateY(-2px)}.plate:before,.plate:after,.plate .rv:before,.plate .rv:after{content:"";background:radial-gradient(circle at 35% 35%,#fdfdfb 0 18%,#a7aaa3 55%,#7d8079 100%);border-radius:50%;width:7px;height:7px;position:absolute}.plate:before{top:10px;left:10px}.plate:after{top:10px;right:10px}.plate .rv:before{bottom:10px;left:10px}.plate .rv:after{bottom:10px;right:10px}.plate.l-redteam{--lane-c:var(--crimson)}.plate.l-opensource{--lane-c:var(--verdigris)}.plate-top{justify-content:space-between;align-items:center;gap:.5rem;padding:0 .4rem;display:flex}.plate-code{font:600 .6rem/1 var(--mono);color:var(--muted)}.plate h3{text-transform:uppercase;margin:0;padding:0 .4rem;font-size:1.8rem}.plate h3 a{text-decoration:none}.plate h3 a:hover{color:var(--lane-c)}.plate .maker{font:500 .66rem/1.4 var(--mono);color:var(--muted);margin-top:-.35rem;padding:0 .4rem}.plate p.what{margin:0;padding:0 .4rem;font-size:.97rem;line-height:1.5}.spec{border-top:1px solid var(--rule);grid-template-columns:auto 1fr;gap:0;margin:.15rem 0 0;font-size:.84rem;display:grid}.spec dt,.spec dd{border-bottom:1px solid var(--rule);margin:0;padding:.42rem .4rem}.spec dt{font:600 .58rem/1.7 var(--mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);white-space:nowrap;padding-right:.9rem}.spec dd{color:var(--ink)}.plate .plate-foot{font:500 .6rem/1.5 var(--mono);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:.5rem;margin-top:auto;padding:0 .4rem;display:flex}.plate .bar{background:var(--lane-c);opacity:.9;border-radius:2px;height:3px;position:absolute;top:6px;left:6px;right:6px}.pick{background:var(--carbon);color:var(--bone);border-radius:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));gap:1.6rem 2.4rem;padding:clamp(1.4rem,3vw,2.2rem);display:grid;position:relative;overflow:hidden}.pick:after{content:"";pointer-events:none;background:repeating-linear-gradient(135deg,#0000 0 14px,#ffffff06 14px 15px);position:absolute;inset:0}.pick>*{z-index:1;position:relative}.pick .stamp{font:700 .64rem/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--carbon);background:var(--orange);border-radius:4px;padding:.45rem .6rem;display:inline-block}.pick h3{text-transform:uppercase;color:#fff;margin:.9rem 0 .5rem;font-size:clamp(2rem,4vw,2.8rem)}.pick p{color:#d8d5cc;margin:.6rem 0 0}.pick a{color:#fff}.pick .spec,.pick .spec dt,.pick .spec dd{border-color:#3a3d44}.pick .spec dt{color:#a3a199}.pick .spec dd{color:var(--bone)}.pick .label{font:600 .6rem/1.4 var(--mono);color:#a3a199;text-transform:uppercase;letter-spacing:.06em}.btn{font:700 .72rem/1 var(--mono);text-transform:uppercase;letter-spacing:.04em;border:1.5px solid var(--ink);background:var(--ink);color:var(--bone);cursor:pointer;border-radius:7px;align-items:center;gap:.5rem;padding:.95rem 1.15rem;text-decoration:none;display:inline-flex}.btn:hover{background:var(--orange);border-color:var(--orange);color:#fff}.btn-line{color:var(--ink);background:0 0}.pick .btn{background:var(--orange);border-color:var(--orange);color:var(--carbon)}.pick .btn:hover{color:var(--carbon);background:#fff;border-color:#fff}.pick .btn-line{color:var(--bone);background:0 0;border-color:#6b6e75}.btns{flex-wrap:wrap;gap:.6rem;margin-top:1.3rem;display:flex}.table-scroll{border:1px solid var(--rule-strong);border-radius:var(--radius);background:var(--plate);-webkit-overflow-scrolling:touch;overflow-x:auto}table.cat{border-collapse:collapse;width:100%;min-width:52rem;font-size:.9rem}table.cat caption{text-align:left}table.cat th{font:700 .58rem/1.3 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);text-align:left;background:var(--ground-2);border-bottom:1px solid var(--rule-strong);padding:.8rem .75rem;position:sticky;top:0}table.cat td{border-bottom:1px solid var(--rule);vertical-align:top;padding:.75rem}table.cat tr:last-child td{border-bottom:0}table.cat tbody tr:hover td{background:#fbfbf9}table.cat .num{text-align:right;font-family:var(--mono);white-space:nowrap;font-size:.78rem}table.cat .t-name{font-weight:700;text-decoration:none}table.cat .t-name:hover{text-decoration:underline}table.cat .t-sub{font:500 .62rem/1.5 var(--mono);color:var(--muted);margin-top:.15rem;display:block}table.cat .group td{background:var(--ground);font:700 .62rem/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);padding:.7rem .75rem}table.cat td.note{color:var(--ink-2);max-width:22rem;font-size:.82rem}.table-note{font:500 .68rem/1.6 var(--mono);color:var(--muted);max-width:60rem;margin:.75rem 0 0}.stats{border:1px solid var(--rule-strong);border-radius:var(--radius);background:var(--plate);grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:0;display:grid;overflow:hidden}.stat{border-right:1px solid var(--rule);padding:1.1rem 1.2rem 1rem}.stat:last-child{border-right:0}.stat b{font:800 clamp(2.2rem, 4vw, 3rem)/.9 var(--display);display:block}.stat span{font:500 .66rem/1.45 var(--mono);color:var(--ink-2);margin-top:.45rem;display:block}.meter{grid-template-columns:minmax(7rem,11rem) 1fr 3rem;align-items:center;gap:.5rem .9rem;font-size:.9rem;display:grid}.meter .m-bar{background:var(--ground-2);border:1px solid var(--rule);border-radius:3px;height:.8rem;overflow:hidden}.meter .m-bar i{background:var(--verdigris);height:100%;display:block}.meter .m-n{font:600 .72rem/1 var(--mono);text-align:right}.meter .m-name{font:600 .78rem/1.2 var(--mono)}.steps{counter-reset:s;grid-template-columns:repeat(auto-fit,minmax(min(100%,21rem),1fr));gap:.9rem;margin:0;padding:0;list-style:none;display:grid}.steps li{counter-increment:s;background:var(--plate);border:1px solid var(--rule);border-radius:var(--radius);padding:1.1rem 1.2rem 1.1rem 3.6rem;position:relative}.steps li:before{content:counter(s, decimal-leading-zero);font:800 1.6rem/1 var(--display);color:var(--orange);position:absolute;top:1rem;left:1.1rem}.steps h3{text-transform:uppercase;font-size:1.3rem}.steps p{color:var(--ink-2);margin:.3rem 0 0;font-size:.95rem}.timeline{border-left:2px solid var(--ink);margin:0;padding:0;list-style:none}.timeline li{padding:0 0 1.2rem 1.4rem;position:relative}.timeline li:before{content:"";background:var(--crimson);border-radius:3px;width:12px;height:12px;position:absolute;top:.35rem;left:-7px}.timeline time{font:700 .66rem/1.4 var(--mono);text-transform:uppercase;color:var(--muted);display:block}.timeline p{margin:.15rem 0 0}.versus{grid-template-columns:repeat(auto-fit,minmax(min(100%,24rem),1fr));align-items:start;gap:1.2rem;display:grid}.vs-mark{display:none}.faq{border-top:1px solid var(--rule-strong);max-width:52rem}.faq details{border-bottom:1px solid var(--rule-strong)}.faq summary{cursor:pointer;padding:1rem 2.5rem 1rem 0;font-size:1.05rem;font-weight:700;list-style:none;position:relative}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";font:500 1.4rem/1 var(--mono);color:var(--orange);position:absolute;top:.7rem;right:.3rem}.faq details[open] summary:after{content:"−"}.faq details p{color:var(--ink-2);max-width:46rem;margin:0 0 1.1rem}.sources ol{counter-reset:src;max-width:56rem;margin:0;padding:0;list-style:none}.sources li{counter-increment:src;border-bottom:1px dashed var(--rule);padding:.55rem 0 .55rem 2.6rem;font-size:.93rem;position:relative}.sources li:before{content:"[" counter(src) "]";font:600 .68rem/1.4 var(--mono);color:var(--muted);position:absolute;top:.62rem;left:0}.sources .src-note{color:var(--ink-2)}.cite{border:1.5px dashed var(--rule-strong);border-radius:var(--radius);background:#f5f5f299;max-width:56rem;margin-top:1.6rem;padding:1rem 1.2rem}.cite h3{text-transform:uppercase;margin-bottom:.4rem;font-size:1.2rem}.cite p{font:500 .78rem/1.6 var(--mono);color:var(--ink-2);word-break:break-word;margin:0}.form{background:var(--plate);border:1px solid var(--plate-edge);border-radius:14px;max-width:54rem;padding:clamp(1.2rem,3vw,2rem)}.form fieldset{border:0;margin:0 0 1.4rem;padding:0}.form legend{font:700 .66rem/1 var(--mono);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.8rem}.opts{flex-wrap:wrap;gap:.45rem;display:flex}.opt{position:relative}.opt input{opacity:0;cursor:pointer;position:absolute;inset:0}.opt span{border:1.5px solid var(--rule-strong);background:#fff;border-radius:7px;padding:.55rem .8rem;font-size:.92rem;display:inline-block}.opt input:checked+span{background:var(--ink);color:var(--bone);border-color:var(--ink)}.opt input:focus-visible+span{outline:3px solid var(--orange);outline-offset:2px}.fields{grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:1rem 1.2rem;display:grid}.fields .wide{grid-column:1/-1}.form label.f{font:600 .64rem/1.3 var(--mono);text-transform:uppercase;letter-spacing:.04em;color:var(--ink-2);flex-direction:column;gap:.4rem;display:flex}.form input[type=text],.form input[type=email],.form select,.form textarea{font:400 1rem/1.4 var(--body);color:var(--ink);border:1.5px solid var(--rule-strong);text-transform:none;letter-spacing:0;background:#fff;border-radius:7px;padding:.7rem .8rem}.form textarea{resize:vertical;min-height:7rem}.form .trap{width:1px;height:1px;position:absolute;left:-5000px;overflow:hidden}.form .fine{color:var(--ink-2);max-width:44rem;font-size:.88rem}.form-status{font:600 .8rem/1.5 var(--mono);min-height:1.2rem;margin:.8rem 0 0}.form-status.ok{color:var(--verdigris);font-size:1rem}.foot{background:var(--carbon);color:#bdbab1;margin-top:clamp(3rem,7vw,5rem);padding:3rem 0 1.4rem;font-size:.92rem}.foot a{color:var(--bone);text-decoration-color:#5a5d64}.foot a:hover{color:var(--orange)}.foot-grid{grid-template-columns:1.4fr repeat(3,minmax(9rem,1fr));gap:2rem;display:grid}.foot h4{font:700 .62rem/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:#8e8b83;margin-bottom:.9rem}.foot nav{flex-direction:column;gap:.45rem;display:flex}.foot .big{font:800 2rem/.95 var(--display);text-transform:uppercase;color:var(--bone);margin-bottom:.8rem}.foot p{margin:0 0 .8rem}.foot-base{font:500 .62rem/1.5 var(--mono);color:#8e8b83;border-top:1px solid #33363c;flex-wrap:wrap;justify-content:space-between;gap:.6rem;margin-top:2.4rem;padding-top:1rem;display:flex}@media (width<=760px){.foot-grid{grid-template-columns:1fr 1fr}.foot-grid>:first-child{grid-column:1/-1}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.rise{animation:.7s cubic-bezier(.2,.7,.2,1) both rise;animation-delay:calc(var(--d,0) * 90ms)}.spectrum{transform-origin:0;animation:.9s cubic-bezier(.6,0,.2,1) .25s both grow}@media (prefers-reduced-motion:reduce){.rise,.spectrum{animation:none}.plate,.plate:hover{transition:none;transform:none}}@media print{body{background:#fff}.strip,.mast nav,.foot,.btns{display:none}}table.cat th.num{font:700 .58rem/1.3 var(--mono);text-align:right}table.cat th.dot,table.cat td.dot{text-align:center;white-space:nowrap}table.cat td.dot .yes{color:var(--orange);font-size:1rem}table.cat td.dot .no{color:var(--rule-strong)}a.src{font:600 .64rem/1.4 var(--mono);word-break:break-all}.mono.small{font-size:.72rem}
