:root{--brand:#F32740;--press:#C8132E;--ink:#1A1D23;--ink2:#3A3E47;--ink3:#6B7280;--c1:#F5F4F1;--c2:#EEEDF0;--c3:#DCDEE2;--cb:#C7CCD3;--grn:#0FAE7C;--yel:#FDD85E;--pad-x: calc(.5*max(56px, calc((100vw - 1320px)/2) )) ;--mono:"JetBrains Mono",ui-monospace,monospace;--sans:"Lato",system-ui,sans-serif}*{box-sizing:border-box}.aa{color:var(--brand)}h1,h2,h3{font-family:Lato,system-ui,sans-serif!important}.crumb{padding:13px var(--pad-x);font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--ink3);border-bottom:1px solid var(--c2)}.crumb b{color:var(--ink)}.crumb a{color:var(--ink3);text-decoration:none}.crumb a:hover{color:var(--ink)}.hero{padding:30px var(--pad-x) 18px}.eyebrow{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--brand)}h1{font-size:48px;font-weight:900;letter-spacing:-.025em;margin:10px 0 8px;line-height:1;font-family:Lato,system-ui,sans-serif!important}.lede{font-size:15px;color:var(--ink2);max-width:680px;line-height:1.5}.stats{display:flex;gap:24px;margin-top:14px;font-family:var(--mono);font-size:13px;color:var(--ink3)}.stats b{color:var(--ink);font-size:17px}.feat{margin:14px var(--pad-x) 0;background:var(--ink);color:#fff;display:grid;grid-template-columns:230px 1fr;gap:30px;padding:26px 30px;border-top:3px solid var(--brand)}.feat .cover{background:#fff;color:var(--ink);padding:22px 18px;display:flex;flex-direction:column;justify-content:space-between;min-height:230px}.feat .cover .cw{font-weight:900;font-size:22px;letter-spacing:.01em}.feat .cover .cs{font-family:var(--mono);font-size:9px;letter-spacing:.18em;color:var(--ink3);margin-top:4px}.feat .cover .lines{height:6px;background:var(--c2);margin:5px 0}.feat .cover .code{font-family:var(--mono);font-size:9px;color:var(--ink3);letter-spacing:.06em}.feat .fk{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--brand);text-transform:uppercase}.feat h2{font-size:30px;font-weight:900;margin:4px 0 6px;letter-spacing:-.02em;font-family:Lato,system-ui,sans-serif!important}.feat .fcode{font-family:var(--mono);font-size:12px;color:#aeb4bc}.feat .fd{font-size:13.5px;color:#c7ccd3;line-height:1.55;margin:12px 0;max-width:620px}.feat .fstats{display:flex;gap:34px;margin:8px 0 16px}.feat .fstats .k{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;color:var(--yel);text-transform:uppercase}.feat .fstats .v{font-size:22px;font-weight:900;margin-top:3px}.feat .fcta{display:flex;gap:10px;flex-wrap:wrap}.btn{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:12px 18px;border:1px solid #3a3e47;background:transparent;color:#fff;cursor:pointer;display:inline-flex;gap:7px;align-items:center;text-decoration:none}.btn.red{background:var(--brand);border-color:var(--brand)}.btn:hover{opacity:.85}.tabs{display:flex;gap:0;overflow-x:auto;border-bottom:1px solid var(--c3);padding:0 var(--pad-x);margin-top:18px}.tab{font-family:var(--mono);font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);padding:16px;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;background:none;border-top:0;border-left:0;border-right:0}.tab.on{color:var(--ink);border-bottom-color:var(--brand)}.tab .ct{margin-left:7px;background:var(--c2);color:var(--ink3);padding:2px 7px;border-radius:2px;font-size:10px}.tab.on .ct{background:#ffe3e6;color:var(--brand)}.body{display:grid;grid-template-columns:236px 1fr 262px;gap:0;padding:18px var(--pad-x) 0}.rail{padding:6px 22px 60px 0;border-right:1px solid var(--c3)}.rrail{padding:6px 0 60px 24px;border-left:1px solid var(--c3)}.fhead{display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.fhead .n{color:var(--brand)}.clrall{width:100%;margin:10px 0 6px;background:var(--ink);color:#fff;border:0;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:11px;cursor:pointer}.facet{border-top:1px solid var(--c3);padding:12px 0}.fh{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink2);margin-bottom:8px}.opts{display:flex;flex-direction:column;gap:6px}.opt{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:13px;color:var(--ink2);cursor:pointer}.opt input{margin:0;cursor:pointer;accent-color:var(--brand)}.cwrap{flex:1;min-width:0}.opt .cname{display:block;white-space:nowrap;color:var(--ink)}.opt .cname .aa{color:var(--brand)}.opt .sub{font-family:var(--mono);font-size:9.5px;color:var(--ink3);text-transform:uppercase;display:block}.opt .n{font-family:var(--mono);font-size:10.5px;color:var(--ink3)}.tier{display:inline-block;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.06em;padding:2px 7px;border-radius:2px}.ECO{background:#e8f5e9;color:#2e7d32}.PRO{background:#e3f2fd;color:#1565c0}.PROp{background:#f3e5f5;color:#6a1b9a}.opt--ft{display:flex;align-items:center;gap:8px}.opt--ft .sw{width:10px;height:10px;border-radius:2px;flex:none}.opt--ft .ftname{color:var(--ink);font-size:13px}.opt--ft .ftn{font-family:var(--mono);font-size:11px;color:var(--ink3);margin-left:6px}.opt--comp{display:flex;align-items:center;gap:8px}.opt--comp .compname{color:var(--ink);font-size:13px}.opt--comp .compn{font-family:var(--mono);font-size:11px;color:var(--ink3);margin-left:6px}.taa-badge{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--brand);color:var(--brand);background:transparent;border-radius:4px;padding:5px 10px;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.results{padding:0 22px}.rhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;flex-wrap:wrap;gap:8px}.cnt{font-family:var(--mono);font-size:11.5px;color:var(--ink3)}.rhead select{font-family:var(--mono);font-size:11.5px;border:1px solid var(--c3);background:#fff;padding:6px 10px;color:var(--ink)}.fby{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;align-items:center;font-family:var(--mono);font-size:11px}.fby .lab{color:var(--ink3);letter-spacing:.08em;text-transform:uppercase}.fchip{background:var(--c2);color:var(--ink2);padding:4px 9px;cursor:pointer;border-radius:2px}.fchip:hover{background:var(--ink);color:#fff}.fchip.red{background:#ffe3e6;color:var(--brand)}table{width:100%;border-collapse:collapse}thead th{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink3);padding:8px 10px;border-bottom:2px solid var(--c3);text-align:left}tbody tr{border-bottom:1px solid var(--c2)}tbody tr:hover{background:var(--c1)}tbody td{padding:12px 10px;vertical-align:top}.famcell{display:flex;flex-direction:column;gap:4px}.fam{font-size:14px;font-weight:700;color:var(--ink)}.fmeta{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.cchip{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:.06em;background:var(--c2);color:var(--ink2);padding:2px 6px;border-radius:2px}.sub{font-family:var(--mono);font-size:9.5px;color:var(--ink3);text-transform:uppercase}.docs{display:flex;flex-wrap:wrap;gap:4px 12px}.docbtn{display:inline-flex;align-items:center;gap:0;border-width:1px;border-style:solid;padding:5px 10px;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#fff;text-decoration:none;cursor:pointer;border-radius:4px;transition:filter .12s;white-space:nowrap}.docbtn:hover{background:#fff!important;color:var(--c)!important;filter:none}.empty{font-family:var(--mono);font-size:11px;color:var(--c3)}.packet{background:var(--ink);color:#fff;padding:20px;border-top:3px solid var(--brand);margin-bottom:18px}.packet h3{font-family:var(--mono);font-size:13px;font-weight:700;letter-spacing:.06em;margin:0 0 8px;font-family:Lato,system-ui,sans-serif!important}.packet p{font-size:12px;color:#aeb4bc;line-height:1.5;margin:0 0 14px}.psel{background:#22262b;padding:10px 12px;margin-bottom:8px;font-family:var(--mono);font-size:10.5px;color:#c7ccd3;display:flex;justify-content:space-between}.psel .x{color:var(--brand);cursor:pointer}.pacts{display:flex;gap:8px;margin-top:6px}.pacts button{flex:1;border:1px solid #3a3e47;background:transparent;color:#fff;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:11px;cursor:pointer}.pacts button.red{background:var(--brand);border-color:var(--brand)}.tools h4{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);margin:0 0 12px}.tool{display:flex;gap:11px;align-items:flex-start;padding:10px 12px;border:1px solid var(--c3);border-left:3px solid var(--brand);margin-bottom:10px;text-decoration:none;color:var(--ink)}.tool .ti{color:var(--brand);font-size:15px}.tool .tt{font-size:13.5px;font-weight:700}.tool .td{font-size:11px;color:var(--ink3);margin-top:2px}.selbar{position:fixed;left:0;right:0;bottom:0;background:var(--ink);color:#fff;display:none;justify-content:space-between;align-items:center;padding:13px var(--pad-x);z-index:60;box-shadow:0 -4px 18px #0003}.selbar.on{display:flex}.selbar .n{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase}.selbar button{border:1px solid #444;background:transparent;color:#fff;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:9px 14px;margin-left:8px;cursor:pointer}.selbar button.red{background:var(--brand);border-color:var(--brand)}.legend{display:flex;flex-wrap:wrap;gap:13px;margin:0 0 12px;font-family:var(--mono);font-size:10.5px;color:var(--ink3)}.legend span{display:inline-flex;align-items:center;gap:5px}.legend i{width:9px;height:9px;border-radius:2px;display:inline-block}@media (max-width:1150px){.body{grid-template-columns:1fr}.rail,.rrail{border:0;padding:0 0 20px}.feat{grid-template-columns:1fr}}.hsearch{display:flex;margin-top:22px;border:1px solid var(--ink);max-width:920px}.hscope{border:0;border-right:1px solid var(--c3);background:var(--c1);font-family:var(--mono);font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:0 16px;cursor:pointer;color:var(--ink)}.hsearch input{flex:1;border:0;padding:16px;font-family:var(--sans);font-size:15px;outline:none}.hsearch button{border:0;background:var(--ink);color:#fff;font-family:var(--mono);font-size:11.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:0 24px;cursor:pointer;white-space:nowrap}.hsearch button:hover{background:var(--brand)}.popular{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:13px}.popular .pl{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink3)}.pchip{font-family:var(--mono);font-size:11.5px;border:1px solid var(--c3);padding:6px 11px;cursor:pointer;color:var(--ink2)}.pchip:hover{border-color:var(--ink);color:var(--ink)}.needhelp{border-top:3px solid var(--brand);background:var(--c1);padding:16px 18px;margin-top:18px}.needhelp .nh-k{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--brand)}.needhelp .nh-d{font-size:13px;color:var(--ink2);margin:6px 0 10px;line-height:1.45}.needhelp .nh-c{display:block;font-family:var(--mono);font-size:12.5px;color:var(--ink);text-decoration:none;padding:2px 0}.needhelp a.nh-c:hover{color:var(--brand)}.pager{display:flex;align-items:center;gap:6px;padding:18px 0 0;flex-wrap:wrap}.pbtn{font-family:var(--mono);font-size:12px;border:1px solid var(--c3);background:#fff;color:var(--ink2);padding:7px 11px;cursor:pointer;min-width:34px}.pbtn.on{background:var(--ink);color:#fff;border-color:var(--ink)}.pbtn:hover:not(.on){border-color:var(--ink)}.pdot{font-family:var(--mono);color:var(--ink3);padding:0 4px}.pper{margin-left:auto;font-family:var(--mono);font-size:11.5px;color:var(--ink3)}@media (max-width:640px){.hsearch{flex-direction:column}.hscope{border-right:0;border-bottom:1px solid var(--c3);padding:12px 16px}.hsearch input,.hsearch button{padding:14px 16px}h1{font-size:26px!important}.feat{padding:18px 16px}}@media (max-width:1150px){h1{font-size:32px!important}}
