:root{--bg:247 248 252;--surface:255 255 255;--surface-2:247 248 252;--surface-3:239 241 247;--border:226 230 240;--ink:23 26 48;--muted:88 93 116;--faint:138 143 166;--brand:79 70 229;--purple:162 93 220;--green:0 200 117;--red:226 68 92;--shadow:32 36 70;--grad:linear-gradient(115deg,rgb(var(--brand)),rgb(var(--purple)));--nav-h:66px;color-scheme:light}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-h) + 24px)}body{font-family:Figtree,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:rgb(var(--bg));color:rgb(var(--ink));font-size:16px;line-height:1.6;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}a{text-decoration:none}a,button{color:inherit}button{font:inherit;background:none;border:none;cursor:pointer}svg.i{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}.i-sm{width:15px;height:15px}.wrap{max-width:1120px;margin:0 auto;padding:0 24px}header{position:-webkit-sticky;position:sticky;top:0;z-index:40;height:var(--nav-h);background:rgb(var(--surface)/.86);-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid rgb(var(--border))}header,header .wrap{display:flex;align-items:center}header .wrap{gap:16px;width:100%}.hlogo{display:flex;align-items:center;gap:10px;margin-right:auto}.hlogo svg{width:30px;height:30px;flex:none}.hlogo b{font-size:17px;font-weight:800;letter-spacing:-.02em}.hlogo span{font-size:11px;font-weight:700;letter-spacing:.16em;color:rgb(var(--faint));padding-left:10px;margin-left:2px;border-left:1px solid rgb(var(--border))}.back{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:650;color:rgb(var(--muted));padding:8px 10px;border-radius:9px;transition:.15s}.back:hover{color:rgb(var(--ink));background:rgb(var(--surface-3))}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 18px;border-radius:11px;font-size:14.5px;font-weight:700;transition:.18s;white-space:nowrap}.btn-grad{background:var(--grad);color:#fff;box-shadow:0 14px 30px -14px rgb(var(--brand)/.7)}.btn-grad:hover{transform:translateY(-1px);box-shadow:0 18px 36px -14px rgb(var(--brand)/.8)}.btn-ghost{border:2px solid rgb(var(--border));background:rgb(var(--surface));color:rgb(var(--ink))}.btn-ghost:hover{border-color:rgb(var(--faint)/.5)}.btn-lg{padding:14px 22px;font-size:15.5px;border-radius:13px}.hero{padding:68px 0 44px}.eyebrow{display:inline-block;font-size:11.5px;font-weight:800;letter-spacing:.16em;color:rgb(var(--brand));margin-bottom:14px}h1{font-size:clamp(34px,4.2vw,50px);font-weight:850;letter-spacing:-.035em;line-height:1.06}.lede{margin-top:16px;max-width:620px;font-size:17px;color:rgb(var(--muted))}.hero .row{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.hero .meta{margin-top:16px;font-size:13px;font-weight:650;color:rgb(var(--faint))}section.sec{padding:34px 0}.sec-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:20px}.sec-head h2{font-size:23px;font-weight:800;letter-spacing:-.02em}.sec-head p{font-size:14px;color:rgb(var(--muted));max-width:560px;margin-top:4px}.sec-head .sp{margin-left:auto}.bgsw{display:inline-flex;gap:3px;padding:3px;border:2px solid rgb(var(--border));border-radius:11px;background:rgb(var(--surface-3))}.bgsw button{padding:6px 11px;border-radius:8px;font-size:12.5px;font-weight:700;color:rgb(var(--muted));transition:.15s}.bgsw button:hover{color:rgb(var(--ink))}.bgsw button[aria-pressed=true]{background:rgb(var(--surface));color:rgb(var(--ink));box-shadow:0 4px 12px -7px rgb(var(--shadow)/.6)}.subhead{display:flex;align-items:center;gap:12px;margin:26px 0 14px;font-size:12px;font-weight:800;letter-spacing:.1em;color:rgb(var(--faint))}.subhead:after{content:"";flex:1 1;height:1px;background:rgb(var(--border))}.subhead:first-of-type{margin-top:0}.grid{display:grid;grid-gap:16px;gap:16px;grid-template-columns:repeat(auto-fill,minmax(248px,1fr))}.grid.wide{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}.card{border:2px solid rgb(var(--border));border-radius:16px;background:rgb(var(--surface));overflow:hidden;display:flex;flex-direction:column;transition:.2s}.card:hover{border-color:rgb(var(--faint)/.45);box-shadow:0 20px 40px -28px rgb(var(--shadow)/.5)}.prev{position:relative;height:168px;display:grid;place-items:center;padding:22px;border-bottom:2px solid rgb(var(--border));transition:background .2s}.prev img{max-width:100%;max-height:100%;display:block}[data-bg=light] .prev{background:rgb(var(--surface-2))}[data-bg=dark] .prev{background:#101220}[data-bg=grid] .prev{background:linear-gradient(45deg,rgb(var(--surface-3)) 25%,transparent 25%,transparent 75%,rgb(var(--surface-3)) 75%) 0 0/18px 18px,linear-gradient(45deg,rgb(var(--surface-3)) 25%,transparent 25%,transparent 75%,rgb(var(--surface-3)) 75%) 9px 9px/18px 18px,#fff}.prev.force-dark{background:#101220!important}.prev.force-light{background:#fff!important}.cbody{padding:14px 16px 16px;display:flex;flex-direction:column;gap:4px;flex:1 1}.cname{font-size:14px;font-weight:750;letter-spacing:-.01em;word-break:break-all}.cdesc{font-size:12.5px;color:rgb(var(--muted));line-height:1.45;flex:1 1}.cdim{font-size:11.5px;font-weight:700;color:rgb(var(--faint));letter-spacing:.02em}.dl{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.dl a{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;border-radius:8px;border:1.5px solid rgb(var(--border));font-size:11.5px;font-weight:800;letter-spacing:.03em;color:rgb(var(--muted));transition:.15s}.dl a:hover{border-color:rgb(var(--brand));color:rgb(var(--brand));background:rgb(var(--brand)/.06)}.dl a .i{width:13px;height:13px;stroke-width:2.4}.replay{position:absolute;top:10px;right:10px;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;color:rgb(var(--muted));background:rgb(var(--surface)/.9);border:1.5px solid rgb(var(--border));opacity:0;transition:.18s}.prev:hover .replay{opacity:1}.replay:hover{color:rgb(var(--brand));border-color:rgb(var(--brand))}.prev.force-dark .replay,[data-bg=dark] .replay{background:rgb(255 255 255/.1);border-color:rgb(255 255 255/.22);color:#fff}.tag{position:absolute;top:10px;left:10px;font-size:10px;font-weight:800;letter-spacing:.08em;padding:4px 8px;border-radius:99px;background:var(--grad);color:#fff}.tbl{border:2px solid rgb(var(--border));border-radius:16px;background:rgb(var(--surface));overflow:hidden}.trow{display:grid;grid-template-columns:minmax(200px,1.4fr) 2fr;grid-gap:16px;gap:16px;align-items:center;padding:13px 18px;border-top:1px solid rgb(var(--border))}.trow:first-child{border-top:none;background:rgb(var(--surface-2));font-size:11.5px;font-weight:800;letter-spacing:.08em;color:rgb(var(--faint))}.trow .f{font-size:13.5px;font-weight:700;word-break:break-all}.trow .f small{display:block;font-size:11.5px;font-weight:650;color:rgb(var(--faint));letter-spacing:0}.szs{display:flex;flex-wrap:wrap;gap:6px}.szs a{padding:5px 10px;border-radius:8px;border:1.5px solid rgb(var(--border));font-size:11.5px;font-weight:800;color:rgb(var(--muted));transition:.15s}.szs a:hover{border-color:rgb(var(--brand));color:rgb(var(--brand));background:rgb(var(--brand)/.06)}.sw{display:grid;grid-gap:14px;gap:14px;grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}.swi{border:2px solid rgb(var(--border));border-radius:14px;background:rgb(var(--surface));overflow:hidden;text-align:left;width:100%;transition:.18s;position:relative}.swi:hover{border-color:rgb(var(--faint)/.45);transform:translateY(-2px)}.swi .chip{display:block;height:82px}.swi .cin{display:block;padding:12px 14px 14px}.swi .cin b{display:block;font-size:13.5px;font-weight:750}.swi .cin code{font-size:12px;font-weight:700;color:rgb(var(--muted));letter-spacing:.02em}.swi .ok{position:absolute;top:10px;right:10px;font-size:10.5px;font-weight:800;letter-spacing:.06em;padding:4px 8px;border-radius:99px;background:rgb(var(--green));color:#fff;opacity:0;transition:.18s}.swi.copied .ok{opacity:1}.rules{display:grid;grid-gap:16px;gap:16px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.rule{border:2px solid rgb(var(--border));border-radius:16px;background:rgb(var(--surface));padding:20px 22px}.rule h3{display:flex;align-items:center;gap:9px;font-size:15px;font-weight:800;margin-bottom:12px}.rule.do h3{color:rgb(var(--green))}.rule.dont h3{color:rgb(var(--red))}.rule ul{list-style:none;flex-direction:column}.rule li,.rule ul{display:flex;gap:9px}.rule li{font-size:13.5px;color:rgb(var(--muted));line-height:1.5}.rule li .i{margin-top:3px;width:14px;height:14px;stroke-width:2.6}.rule.do li .i{color:rgb(var(--green))}.rule.dont li .i{color:rgb(var(--red))}.note{display:flex;gap:14px;border:2px solid rgb(var(--border));border-radius:16px;background:rgb(var(--surface));padding:20px 22px}.note .i{width:20px;height:20px;color:rgb(var(--brand));margin-top:2px}.note h3{font-size:15px;font-weight:800;margin-bottom:6px}.note p{font-size:13.5px;color:rgb(var(--muted))}.note p+p{margin-top:8px}.note code{font-size:12.5px;font-weight:700;background:rgb(var(--surface-3));padding:2px 6px;border-radius:5px;color:rgb(var(--ink))}.foot-cta{margin:44px 0 0;border-radius:22px;background:var(--grad);color:#fff;padding:clamp(30px,3vw,46px);display:flex;align-items:center;gap:24px;flex-wrap:wrap}.foot-cta h2{font-size:clamp(21px,2vw,27px);font-weight:800;letter-spacing:-.02em}.foot-cta p{font-size:14.5px;opacity:.86;margin-top:6px;max-width:520px}.foot-cta .sp{margin-left:auto}.btn-white{background:#fff;color:rgb(var(--brand))}.btn-white:hover{transform:translateY(-1px)}footer{margin-top:44px;border-top:1px solid rgb(var(--border));padding:26px 0 40px;font-size:13px;color:rgb(var(--faint))}footer .wrap{display:flex;gap:16px;flex-wrap:wrap;align-items:center}footer .links{margin-left:auto;display:flex;gap:16px}footer .links a{font-weight:650;transition:.15s}footer .links a:hover{color:rgb(var(--ink))}@media (max-width:640px){.hlogo span{display:none}.hero{padding:44px 0 30px}.trow{grid-template-columns:1fr;gap:8px}.foot-cta .sp{margin-left:0}}@media (prefers-reduced-motion:reduce){*{animation-duration:1ms!important;transition-duration:1ms!important}html{scroll-behavior:auto}}