.blog-refonte{--blog-max:1140px;--blog-cover-r:12px}.blog-refonte a{color:var(--fg-2);text-decoration:none}.blog-refonte a:hover{color:var(--fg)}.blog-refonte .blog-max{max-width:var(--blog-max);margin:0 auto;padding:0 24px}.blog-refonte .bhero{text-align:center;padding:96px 0 56px;position:relative;overflow:hidden}.blog-refonte .bhero-bg{z-index:0;pointer-events:none;position:absolute;inset:0;overflow:hidden}.blog-refonte .bhero-grid{background-image:linear-gradient(var(--bd) 1px, transparent 1px), linear-gradient(90deg, var(--bd) 1px, transparent 1px);opacity:.5;background-size:52px 52px;position:absolute;inset:-1px;-webkit-mask-image:radial-gradient(62% 68% at 50% 24%,#000 2%,#0000 74%);mask-image:radial-gradient(62% 68% at 50% 24%,#000 2%,#0000 74%)}.blog-refonte .bhero-glow{background:radial-gradient(ellipse at 50% 32%, color-mix(in srgb, var(--fg) 7%, transparent), transparent 66%);width:820px;height:520px;position:absolute;top:-14%;left:50%;transform:translate(-50%)}.blog-refonte .bhero-c{z-index:2;max-width:760px;margin:0 auto;position:relative}.blog-refonte .bhero-pill{border:1px solid var(--bd-hi);background:color-mix(in srgb, var(--fg) 4%, transparent);font-family:var(--mono);color:var(--fg-2);border-radius:99px;align-items:center;gap:9px;margin-bottom:30px;padding:7px 16px 7px 13px;font-size:12px;transition:border-color .2s;display:inline-flex}.blog-refonte .bhero-pill:hover{border-color:var(--fg-4)}.blog-refonte .bhero-pill svg{width:15px;height:15px;color:var(--fg)}.blog-refonte .bhero-h1{letter-spacing:-.045em;margin-bottom:22px;font-size:clamp(2.4rem,6.4vw,4.6rem);font-weight:700;line-height:1}.blog-refonte .bhero-h1 .ac{color:var(--fg);display:inline-block;position:relative}.blog-refonte .bhero-h1 .ac-txt{z-index:1;position:relative}.blog-refonte .bhero-h1 .ac-mark{z-index:0;background:color-mix(in srgb, var(--fg) 10%, transparent);transform-origin:0;position:absolute;inset:50% -.5rem .15em;transform:scaleX(0)}@keyframes blogAcMark{to{transform:scaleX(1)}}@media (prefers-reduced-motion:no-preference){.blog-refonte .bhero-h1 .ac-mark{animation:.6s cubic-bezier(.25,.4,.25,1) .8s forwards blogAcMark}}@media (prefers-reduced-motion:reduce){.blog-refonte .bhero-h1 .ac-mark{transform:scaleX(1)}}.blog-refonte .bhero-lead{color:var(--fg-3);text-wrap:pretty;max-width:620px;margin:0 auto;font-size:1.12rem;line-height:1.6}.blog-refonte .bhero-stats{font-family:var(--mono);letter-spacing:.02em;color:var(--fg-4);flex-wrap:wrap;justify-content:center;align-items:center;gap:26px;margin-top:34px;font-size:11.5px;display:flex}.blog-refonte .bhero-stats b{color:var(--fg-2);font-weight:600}.blog-refonte .bhero-stats .sep{background:var(--fg-5);border-radius:50%;width:4px;height:4px}.blog-refonte .blist{padding:0 0 var(--sp)}.blog-refonte .btoolbar{grid-template-columns:1fr auto;gap:14px;margin-bottom:34px;display:grid}.blog-refonte .bsearch{align-items:center;display:flex;position:relative}.blog-refonte .bsearch svg{width:17px;height:17px;color:var(--fg-4);pointer-events:none;position:absolute;left:18px}.blog-refonte .bsearch input{border-radius:var(--r-lg);border:1px solid var(--bd);background:var(--bg-1);width:100%;height:52px;color:var(--fg);font-family:var(--sans);padding:0 18px 0 46px;font-size:.94rem;transition:border-color .18s,background .18s,box-shadow .18s;box-shadow:0 0 #0000}.blog-refonte .bsearch input::placeholder{color:var(--fg-4)}.blog-refonte .bsearch input:focus{border-color:var(--fg-4);background:var(--bg-2);box-shadow:0 0 0 3px color-mix(in srgb, var(--fg) 7%, transparent);outline:none}.blog-refonte .bselect{position:relative}.blog-refonte .bselect select{appearance:none;border-radius:var(--r-lg);border:1px solid var(--bd);background:var(--bg-1);height:52px;color:var(--fg-2);font-family:var(--sans);cursor:pointer;min-width:190px;padding:0 42px 0 18px;font-size:.9rem;transition:border-color .18s,color .18s}.blog-refonte .bselect select:hover{border-color:var(--bd-hi);color:var(--fg)}.blog-refonte .bselect select:focus{border-color:var(--fg-4);outline:none}.blog-refonte .bselect svg{width:16px;height:16px;color:var(--fg-4);pointer-events:none;position:absolute;top:50%;right:16px;transform:translateY(-50%)}.blog-refonte .bcat-head{flex-wrap:wrap;align-items:center;gap:20px;margin-bottom:26px;display:flex}.blog-refonte .bcat-title{letter-spacing:-.03em;white-space:nowrap;font-size:1.5rem;font-weight:700}.blog-refonte .bcat-chips{flex-wrap:wrap;align-items:center;gap:8px;margin-left:auto;display:flex}.blog-refonte .bchip{appearance:none;font-family:var(--mono);color:var(--fg-3);border:1px solid var(--bd);cursor:pointer;background:0 0;border-radius:99px;align-items:center;gap:8px;padding:8px 13px;font-size:11.5px;text-decoration:none;transition:all .16s;display:inline-flex}.blog-refonte .bchip:hover{border-color:var(--bd-hi);color:var(--fg)}.blog-refonte .bchip .n{min-width:20px;height:20px;color:var(--fg-4);background:color-mix(in srgb, var(--fg) 8%, transparent);border:1px solid var(--bd);border-radius:99px;justify-content:center;align-items:center;padding:0 6px;font-size:10.5px;font-weight:600;transition:all .16s;display:inline-flex}.blog-refonte .bchip.on{background:color-mix(in srgb, var(--fg) 10%, transparent);border-color:color-mix(in srgb, var(--fg) 30%, transparent);color:var(--fg)}.blog-refonte .bchip.on .n{background:var(--fg);color:var(--bg);border-color:var(--fg)}.blog-refonte .bchip:focus-visible{outline:2px solid var(--bd-hi);outline-offset:2px}.blog-refonte .bcat-icon{border:1px solid var(--bd);width:34px;height:34px;color:var(--fg-4);border-radius:99px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.blog-refonte .bcat-icon svg{width:15px;height:15px}.blog-refonte .bx-feat{border:1px solid var(--bd-hi);border-radius:0 var(--r-xl) var(--r-xl) 0;background:var(--bg-1);transition:border-color .25s, transform .25s var(--ease), box-shadow .25s;grid-template-columns:1.06fr .94fr;gap:0;margin-bottom:16px;display:grid;overflow:hidden}.blog-refonte .bx-feat:hover{border-color:color-mix(in srgb, var(--fg) 26%, transparent);transform:translateY(-3px);box-shadow:0 30px 70px -46px #000000b3}.blog-refonte .bxf-media{aspect-ratio:16/9;border-radius:var(--blog-cover-r);background:var(--bg-2);align-self:start;width:100%;position:relative;overflow:hidden}.blog-refonte .bxf-media:before{content:"";background-image:linear-gradient(var(--bd) 1px, transparent 1px), linear-gradient(90deg, var(--bd) 1px, transparent 1px);opacity:.55;background-size:30px 30px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(90% 82% at 40% 30%,#000,#0000 78%);mask-image:radial-gradient(90% 82% at 40% 30%,#000,#0000 78%)}.blog-refonte .bxf-media-img{-o-object-fit:cover;object-fit:cover;border-radius:0;width:100%;height:100%;position:absolute;inset:0}.blog-refonte .bxf-code{font-family:var(--mono);color:var(--fg-3);z-index:1;white-space:pre;margin:0;font-size:13px;line-height:1.95;position:absolute;inset:26px 26px 26px 36px}.blog-refonte .bxf-code .cp-k{color:var(--fg)}.blog-refonte .bxf-code .cp-f{color:#7aa2ff}.blog-refonte .bxf-code .cp-s{color:var(--fg-2)}.blog-refonte .bxf-code .cp-c{color:var(--fg-5)}.blog-refonte .bxf-glow{background:radial-gradient(circle, color-mix(in srgb, var(--fg) 13%, transparent), transparent 66%);filter:blur(24px);z-index:0;border-radius:50%;width:280px;height:280px;transition:opacity .5s;position:absolute;top:-12%;right:-8%}.blog-refonte .bx-feat:hover .bxf-glow{opacity:1.4}.blog-refonte .bxf-body{border-left:1px solid var(--bd);flex-direction:column;justify-content:center;padding:40px 44px;display:flex}.blog-refonte .bxf-tags{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;display:flex}.blog-refonte .bx-tag{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--fg);background:color-mix(in srgb, var(--fg) 10%, transparent);border:1px solid color-mix(in srgb, var(--fg) 24%, transparent);border-radius:6px;padding:4px 10px;font-size:10px;font-weight:600}.blog-refonte .bx-featlbl{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-4);font-size:10px}.blog-refonte .bxf-body h2{letter-spacing:-.032em;text-wrap:balance;margin-bottom:14px;font-size:1.9rem;font-weight:700;line-height:1.1}.blog-refonte .bxf-body p{color:var(--fg-3);margin-bottom:26px;font-size:.98rem;line-height:1.62}.blog-refonte .bx-meta{font-family:var(--mono);color:var(--fg-4);flex-wrap:wrap;align-items:center;gap:10px;font-size:11px;display:flex}.blog-refonte .bx-av{background:var(--bg-3);border:1px solid var(--bd-hi);width:30px;height:30px;color:var(--fg-2);border-radius:50%;justify-content:center;align-items:center;font-size:10px;font-weight:700;display:flex;overflow:hidden}.blog-refonte .bx-meta b{color:var(--fg-2);font-weight:600}.blog-refonte .bx-meta .dot{color:var(--fg-5)}.blog-refonte .bx-grid{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.blog-refonte .bx-card{border:1px solid var(--bd);border-radius:0 0 var(--r-lg) var(--r-lg);background:var(--bg-1);transition:border-color .25s, transform .25s var(--ease), box-shadow .25s;flex-direction:column;display:flex;overflow:hidden}.blog-refonte .bx-card:hover{border-color:color-mix(in srgb, var(--fg) 28%, transparent);box-shadow:0 22px 50px -30px color-mix(in srgb, var(--fg) 30%, transparent);transform:translateY(-4px)}.blog-refonte .bx-thumb{aspect-ratio:16/9;border-radius:var(--blog-cover-r);border-bottom:1px solid var(--bd);background:var(--bg-2);position:relative;overflow:hidden}.blog-refonte .bx-thumb:before{content:"";background-image:linear-gradient(var(--bd) 1px, transparent 1px), linear-gradient(90deg, var(--bd) 1px, transparent 1px);opacity:.6;background-size:26px 26px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(78% 90% at 78% 12%,#000,#0000 72%);mask-image:radial-gradient(78% 90% at 78% 12%,#000,#0000 72%)}.blog-refonte .bx-thumb:after{content:"";background:radial-gradient(ellipse 84% 96% at 80% 6%, var(--cc,color-mix(in srgb, var(--fg) 12%, transparent)), transparent 62%);position:absolute;inset:0}.blog-refonte .bx-thumb.has-img:before,.blog-refonte .bx-thumb.has-img:after{display:none}.blog-refonte .bx-thumb-img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;transition:transform .5s var(--ease);border-radius:0;position:absolute;inset:0}.blog-refonte .bx-card:hover .bx-thumb-img{transform:scale(1.05)}.blog-refonte .bx-thumb-tag{z-index:2;font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--fg-2);background:color-mix(in srgb, var(--bg) 72%, transparent);border:1px solid var(--bd-hi);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:6px;padding:5px 10px;font-size:9.5px;font-weight:600;position:absolute;top:12px;left:12px}.blog-refonte .bx-thumb-lvl{z-index:2;font-family:var(--mono);letter-spacing:.04em;color:var(--fg-2);background:color-mix(in srgb, var(--bg) 72%, transparent);border:1px solid var(--bd-hi);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:99px;align-items:center;gap:6px;padding:5px 10px;font-size:9.5px;font-weight:600;display:inline-flex;position:absolute;top:12px;right:12px}.blog-refonte .bx-thumb-lvl .d{background:var(--fg);border-radius:50%;width:6px;height:6px}.blog-refonte .bx-thumb-ph{z-index:2;font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-5);font-size:9.5px;position:absolute;bottom:12px;left:14px}.blog-refonte .bx-b{flex-direction:column;flex:1;padding:20px 20px 22px;display:flex}.blog-refonte .bx-b h3{letter-spacing:-.02em;text-wrap:pretty;margin-bottom:9px;font-size:1.06rem;font-weight:600;line-height:1.3}.blog-refonte .bx-card:hover .bx-b h3{color:var(--fg)}.blog-refonte .bx-b p{color:var(--fg-3);flex:1;margin-bottom:18px;font-size:.86rem;line-height:1.56}.blog-refonte .bx-foot{font-family:var(--mono);color:var(--fg-4);align-items:center;gap:9px;font-size:10.5px;display:flex}.blog-refonte .bx-foot .bx-av{width:26px;height:26px;font-size:9px}.blog-refonte .bx-foot b{color:var(--fg-3);font-weight:500;font-family:var(--sans);font-size:12px}.blog-refonte .bx-foot .rd{align-items:center;gap:5px;margin-left:auto;display:inline-flex}.blog-refonte .bx-foot .rd svg{width:12px;height:12px}.blog-refonte .bx-empty{text-align:center;border:1px dashed var(--bd);border-radius:var(--r-lg);font-family:var(--mono);color:var(--fg-4);grid-column:1/-1;padding:64px 20px;font-size:12.5px}.blog-refonte .bx-empty b{color:var(--fg-2)}.blog-refonte .bx-count{font-family:var(--mono);color:var(--fg-4);letter-spacing:.02em;margin:0 0 18px;font-size:11px}.blog-refonte .bx-count b{color:var(--fg-2);font-weight:600}@media (max-width:1000px){.blog-refonte .bx-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:780px){.blog-refonte{--blog-cover-r:var(--r)}.blog-refonte .bx-feat{border-radius:0 0 var(--r-xl) var(--r-xl);grid-template-columns:1fr}.blog-refonte .bxf-media{border-bottom:1px solid var(--bd);align-self:stretch}.blog-refonte .bxf-body{border-left:none;padding:30px 26px}.blog-refonte .bxf-body h2{font-size:1.55rem}}@media (max-width:640px){.blog-refonte .btoolbar{grid-template-columns:1fr}.blog-refonte .bselect select{width:100%}.blog-refonte .bcat-chips{width:100%;margin-left:0}}@media (max-width:600px){.blog-refonte .bx-grid{grid-template-columns:1fr}}@keyframes blogUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:no-preference){.blog-refonte .bhero-pill,.blog-refonte .bhero-h1,.blog-refonte .bhero-lead,.blog-refonte .bhero-stats,.blog-refonte .bcat-title{opacity:1;animation:none}.blog-refonte .bhero-pill{animation-delay:50ms}.blog-refonte .bhero-h1{animation-delay:.16s}.blog-refonte .bhero-lead{animation-delay:.3s}.blog-refonte .bhero-stats{animation-delay:.44s}}.blog-refonte .bx-thumb-lvl .d{animation:2.6s infinite blogPulseDot}@keyframes blogPulseDot{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--fg) 40%, transparent)}70%{box-shadow:0 0 0 6px #0000}to{box-shadow:0 0 #0000}}@media (prefers-reduced-motion:reduce){.blog-refonte .bx-thumb-lvl .d{animation:none}}.blog-refonte .art-page{max-width:1080px;margin:0 auto;padding:0 24px}.blog-refonte .art-crumb{font-family:var(--mono);letter-spacing:.04em;color:var(--fg-4);flex-wrap:wrap;align-items:center;gap:9px;margin-top:-6px;margin-bottom:22px;font-size:11px;display:flex}.blog-refonte .art-crumb a{color:var(--fg-4)}.blog-refonte .art-crumb a:hover{color:var(--fg-2)}.blog-refonte .art-crumb .sep{color:var(--fg-5)}.blog-refonte .art-crumb .current{color:var(--fg-2)}.blog-refonte .art-cover{aspect-ratio:16/9;border-radius:var(--blog-cover-r);border:1px solid var(--bd-hi);background:var(--bg-1);justify-content:center;align-items:center;margin:40px 0 0;display:flex;position:relative;overflow:hidden;box-shadow:0 40px 90px -50px #000000b3}.blog-refonte .art-cover.is-decor:before{content:"";background-image:repeating-linear-gradient(135deg, var(--bd) 0 1px, transparent 1px 13px);opacity:.7;position:absolute;inset:0}.blog-refonte .art-cover.is-decor:after{content:"";background:radial-gradient(ellipse 68% 74% at 50% 42%, transparent 26%, var(--bg-1) 94%);position:absolute;inset:0}.blog-refonte .art-cover .art-cover-label{z-index:1;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-4);border:1px dashed var(--bd-hi);background:color-mix(in srgb, var(--bg) 60%, transparent);border-radius:8px;padding:8px 14px;font-size:11px;position:relative}.blog-refonte .art-cover-img{-o-object-fit:cover;object-fit:cover;border-radius:0;width:100%;height:100%;position:absolute;inset:0}.blog-refonte .art-head{text-align:center;max-width:760px;margin:0 auto 34px;position:static}.blog-refonte .art-head .eyebrow{font-family:var(--mono);letter-spacing:.06em;color:var(--fg-3);justify-content:center;align-items:center;gap:8px;margin-bottom:20px;font-size:11px;display:inline-flex}.blog-refonte .art-head .eyebrow:before{display:none}.blog-refonte .art-head .eyebrow .pill-grn{color:var(--academy)}.blog-refonte .art-head h1{letter-spacing:-.04em;text-wrap:balance;margin-bottom:20px;font-size:clamp(2.1rem,4.6vw,3.2rem);font-weight:700;line-height:1.04}.blog-refonte .art-deck{color:var(--fg-3);max-width:60ch;margin:0 auto;font-size:1.12rem;line-height:1.6}.blog-refonte .art-byline{font-family:var(--mono);color:var(--fg-4);flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;margin-top:26px;font-size:11.5px;display:flex}.blog-refonte .art-byline .av{width:34px;height:34px;color:var(--fg-2);background:var(--bg-2);border:1px solid var(--bd-hi);border-radius:50%;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:flex;overflow:hidden}.blog-refonte .art-byline b{color:var(--fg-2);font-weight:600}.blog-refonte .art-byline .dot{color:var(--fg-5)}.blog-refonte .art-body{grid-template-columns:minmax(0,1fr) 260px;align-items:start;gap:52px;margin-top:56px;display:grid}.blog-refonte .art-aside{flex-direction:column;gap:22px;display:flex;position:sticky;top:96px}.blog-refonte .art-toc-k{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--fg-4);margin-bottom:14px;font-size:10px}.blog-refonte .art-toc{border-left:1px solid var(--bd);flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.blog-refonte .art-toc a{color:var(--fg-4);border-left:1px solid #0000;margin-left:-1px;padding:7px 0 7px 16px;font-size:.85rem;line-height:1.35;transition:color .16s,border-color .16s;display:block}.blog-refonte .art-toc a:hover{color:var(--fg-2)}.blog-refonte .art-toc a.active{color:var(--fg);border-left-color:var(--academy)}.blog-refonte .art-share{gap:8px;display:flex}.blog-refonte .art-share button,.blog-refonte .art-share a{border-radius:var(--r);border:1px solid var(--bd);width:36px;height:36px;color:var(--fg-4);cursor:pointer;background:0 0;justify-content:center;align-items:center;transition:color .16s,border-color .16s,background .16s;display:flex}.blog-refonte .art-share button:hover,.blog-refonte .art-share a:hover{color:var(--fg);border-color:var(--fg-4);background:color-mix(in srgb, var(--fg) 4%, transparent)}.blog-refonte .art-share button[data-copied=true]{color:var(--academy);border-color:color-mix(in srgb, var(--academy) 45%, transparent)}.blog-refonte .art-share svg{width:16px;height:16px}.blog-refonte .art-prose{overflow-wrap:break-word;counter-reset:artsec;min-width:0;max-width:none}.blog-refonte .art-prose>p{color:var(--fg-2);margin-bottom:24px;font-size:1.075rem;line-height:1.75}.blog-refonte .art-prose a{color:var(--academy);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--fg) 30%, transparent);text-decoration-color:color-mix(in srgb, var(--fg) 30%, transparent)}.blog-refonte .art-prose h2{letter-spacing:-.03em;margin:52px 0 18px;scroll-margin-top:100px;font-size:1.7rem;font-weight:700;line-height:1.12}.blog-refonte .art-prose h2:before{counter-increment:artsec;content:counter(artsec, decimal-leading-zero);font-family:var(--mono);color:var(--academy);margin-right:12px;font-size:1rem;font-weight:600}.blog-refonte .art-prose h2 .num{font-family:var(--mono);color:var(--academy);margin-right:12px;font-size:1rem;font-weight:600}.blog-refonte .art-prose h3{letter-spacing:-.02em;margin:32px 0 12px;font-size:1.18rem;font-weight:600}.blog-refonte .art-prose strong{color:var(--fg);font-weight:600}.blog-refonte .art-prose :not(pre)>code{font-family:var(--mono);color:var(--academy);background:color-mix(in srgb, var(--fg) 8%, transparent);border:1px solid var(--bd);border-radius:6px;padding:2px 6px;font-size:.86em}.blog-refonte .art-prose ul,.blog-refonte .art-prose ol{flex-direction:column;gap:11px;margin:0 0 24px;padding-left:2px;display:flex}.blog-refonte .art-prose li{color:var(--fg-2);padding-left:28px;font-size:1.02rem;line-height:1.6;list-style:none;position:relative}.blog-refonte .art-prose ul li:before{content:"";background:var(--academy);border-radius:50%;width:6px;height:6px;position:absolute;top:11px;left:6px}.blog-refonte .art-prose ol{counter-reset:s}.blog-refonte .art-prose ol li{counter-increment:s}.blog-refonte .art-prose ol li:before{content:counter(s);width:19px;height:19px;font-family:var(--mono);color:var(--academy);background:color-mix(in srgb, var(--fg) 8%, transparent);border:1px solid var(--bd);border-radius:6px;justify-content:center;align-items:center;font-size:10px;font-weight:700;display:flex;position:absolute;top:1px;left:0}.blog-refonte .art-prose blockquote,.blog-refonte .art-quote{border-left:2px solid var(--academy);margin:0 0 32px;padding:6px 0 6px 26px}.blog-refonte .art-prose blockquote p{letter-spacing:-.02em;color:var(--fg);margin:0;font-size:1.35rem;font-weight:500;line-height:1.4}.blog-refonte .art-code{border:1px solid var(--bd-hi);border-radius:var(--r-lg);background:var(--bg-2);margin:0 0 32px;position:relative;overflow:hidden}.blog-refonte .art-code-bar{border-bottom:1px solid var(--bd);font-family:var(--mono);color:var(--fg-4);justify-content:space-between;align-items:center;padding:11px 16px;font-size:11px;display:flex}.blog-refonte .art-code-bar .dots{gap:6px;display:flex}.blog-refonte .art-code-bar .dots i{border-radius:50%;width:9px;height:9px}.blog-refonte .art-code-bar .dots i:first-child{background:var(--fail)}.blog-refonte .art-code-bar .dots i:nth-child(2){background:var(--amber)}.blog-refonte .art-code-bar .dots i:nth-child(3){background:var(--pass)}.blog-refonte .art-code pre{font-family:var(--mono);background:0 0;border:0;border-radius:0;margin:0;padding:18px 20px;font-size:12.5px;line-height:1.85;overflow-x:auto}.blog-refonte .art-code pre code{background:0 0;border:0;padding:0}.blog-refonte .art-stats{grid-template-columns:repeat(3,1fr);gap:14px;margin:0 0 32px;display:grid}.blog-refonte .art-stat{border:1px solid var(--bd);border-radius:var(--r-lg);background:var(--bg-1);padding:20px}.blog-refonte .art-stat b{font-family:var(--mono);letter-spacing:-.03em;color:var(--academy);font-size:1.7rem;font-weight:700;line-height:1;display:block}.blog-refonte .art-stat span{color:var(--fg-4);margin-top:8px;font-size:.82rem;line-height:1.4;display:block}.blog-refonte .art-author{border:1px solid var(--bd);border-radius:var(--r-xl);background:var(--bg-1);align-items:flex-start;gap:18px;margin:48px 0 0;padding:26px 28px;display:flex}.blog-refonte .art-author .av{width:52px;height:52px;font-family:var(--mono);color:var(--fg-2);background:var(--bg-2);border:1px solid var(--bd-hi);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:15px;font-weight:600;display:flex;overflow:hidden}.blog-refonte .art-author .k{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-4);margin-bottom:6px;font-size:10px}.blog-refonte .art-author h4,.blog-refonte .art-author .art-author__name{letter-spacing:-.02em;margin-bottom:7px;font-size:1.05rem;font-weight:600}.blog-refonte .art-author p{color:var(--fg-3);margin:0;font-size:.9rem;line-height:1.55}.blog-refonte .art-foot{border-top:1px dashed var(--bd);margin-top:72px;padding-top:52px}.blog-refonte .art-foot-h{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:20px;margin-bottom:26px;display:flex}.blog-refonte .art-foot-h h2{letter-spacing:-.03em;font-size:1.5rem;font-weight:700}.blog-refonte .art-foot-h a{font-family:var(--mono);color:var(--fg-3);font-size:11.5px}.blog-refonte .art-foot-h a:hover{color:var(--fg)}.blog-refonte .bgrid{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.blog-refonte .bcard{border:1px solid var(--bd);border-radius:var(--r-lg);background:var(--bg-1);transition:border-color .2s, transform .2s var(--ease);flex-direction:column;padding:20px 20px 18px;display:flex}.blog-refonte .bcard:hover{border-color:color-mix(in srgb, var(--fg) 26%, transparent);transform:translateY(-3px)}.blog-refonte .bcard-cat{font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--fg-4);align-items:center;gap:7px;margin-bottom:12px;font-size:10px;display:inline-flex}.blog-refonte .bcard-cat .dot{background:var(--fg);border-radius:50%;width:6px;height:6px}.blog-refonte .bcard h4,.blog-refonte .bcard .bcard-title{letter-spacing:-.02em;margin-bottom:8px;font-size:1rem;font-weight:600;line-height:1.3}.blog-refonte .bcard p{color:var(--fg-3);flex:1;margin-bottom:16px;font-size:.84rem;line-height:1.5}.blog-refonte .bcard-meta{font-family:var(--mono);color:var(--fg-4);align-items:center;gap:8px;font-size:10.5px;display:flex}.blog-refonte .bcard-meta .bf-av{width:24px;height:24px;color:var(--fg-2);background:var(--bg-3);border:1px solid var(--bd-hi);border-radius:50%;justify-content:center;align-items:center;font-size:9px;font-weight:700;display:flex;overflow:hidden}.blog-refonte .bcard-meta b{color:var(--fg-3);font-weight:500;font-family:var(--sans);font-size:11.5px}@media (max-width:900px){.blog-refonte .art-body{grid-template-columns:minmax(0,1fr);gap:0}.blog-refonte .art-aside{border:1px solid var(--bd);border-radius:var(--r-lg);flex-flow:wrap;justify-content:space-between;align-items:center;gap:18px;margin-bottom:36px;padding:16px 18px;position:static}.blog-refonte .art-aside .art-toc-details{display:none}.blog-refonte .art-stats,.blog-refonte .bgrid{grid-template-columns:1fr}}.blog-refonte .art-main{padding-top:72px;padding-bottom:96px}@media (max-width:900px){.blog-refonte .art-main{padding-top:52px}}.blog-refonte .art-wrap{max-width:1080px;margin-inline:auto;padding-inline:24px}.blog-refonte .art-crumb ol{flex-wrap:wrap;align-items:center;gap:9px;margin:0;padding:0;list-style:none;display:flex}.blog-refonte .art-crumb li{align-items:center;gap:9px;min-width:0;display:flex}.blog-refonte .art-crumb li+li:before{content:"/";color:var(--fg-5)}.blog-refonte .art-crumb li:last-child{max-width:min(100%,42ch)}.blog-refonte .art-crumb .current{color:var(--fg-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.blog-refonte .art-toc-details>summary{cursor:pointer;list-style:none}.blog-refonte .art-toc-details>summary::-webkit-details-marker{display:none}.blog-refonte .art-toc{list-style:none}.blog-refonte .art-toc a{display:block}.blog-refonte .art-code-bar .art-code__copy{border:1px solid var(--bd);border-radius:var(--r);min-height:28px;color:var(--fg-3);font-family:var(--mono);cursor:pointer;background:0 0;flex-shrink:0;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:11px;transition:color .16s,border-color .16s,background .16s;display:inline-flex}.blog-refonte .art-code-bar .art-code__copy:hover{color:var(--fg);border-color:var(--fg-4);background:color-mix(in srgb, var(--fg) 5%, transparent)}.blog-refonte .art-code-bar .art-code__copy[data-copied=true]{color:var(--academy);border-color:color-mix(in srgb, var(--academy) 45%, transparent)}.blog-refonte .art-code__bar{border-bottom:1px solid var(--bd);font-family:var(--mono);color:var(--fg-4);background:color-mix(in srgb, var(--fg) 3%, transparent);align-items:center;gap:12px;padding:9px 10px 9px 16px;font-size:11px;display:flex}.blog-refonte .art-code__name{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--fg-3);flex:1;overflow:hidden}.blog-refonte .art-code__lang{border:1px solid var(--bd);text-transform:uppercase;letter-spacing:.08em;border-radius:999px;flex-shrink:0;padding:2px 8px;font-size:10px}.blog-refonte .art-code__copy{border:1px solid var(--bd);border-radius:var(--r);min-height:32px;color:var(--fg-3);font-family:var(--mono);cursor:pointer;background:0 0;flex-shrink:0;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:11px;transition:color .16s,border-color .16s,background .16s;display:inline-flex}.blog-refonte .art-code__copy:hover{color:var(--fg);border-color:var(--fg-4);background:color-mix(in srgb, var(--fg) 5%, transparent)}.blog-refonte .art-code__copy[data-copied=true]{color:#a3de92;border-color:#a3de9273}.blog-refonte .art-pre-scroll{overflow-x:auto}.blog-refonte .art-pre{font-family:var(--mono);background:0 0;border:0;margin:0;padding:18px 20px;font-size:12.5px;line-height:1.85}.blog-refonte .art-pre code{background:0 0;border:0;padding:0;display:block}.blog-refonte .art-code-inline{font-family:var(--mono);border:1px solid var(--bd);background:var(--bg-2);color:var(--fg-2);border-radius:5px;padding:.12em .36em;font-size:.88em}.blog-refonte .art-author__name{color:var(--fg);margin:2px 0 0;font-size:1rem;font-weight:600}.blog-refonte .art-author__role{color:var(--fg-3);margin:2px 0 0;font-size:.82rem}.blog-refonte .art-author__bio{color:var(--fg-3);margin:10px 0 0;font-size:.88rem;line-height:1.6}.blog-refonte .art-faq{margin-top:56px}.blog-refonte .art-faq__title{letter-spacing:-.02em;color:var(--fg);margin:0 0 20px;font-size:clamp(1.4rem,2.4vw,1.75rem);font-weight:700}.blog-refonte .art-faq__list{flex-direction:column;gap:10px;display:flex}.blog-refonte .art-faq__item{border:1px solid var(--bd);border-radius:var(--r-lg);background:var(--bg-1);overflow:hidden}.blog-refonte .art-faq__q{min-height:44px;color:var(--fg);cursor:pointer;align-items:center;padding:12px 18px;font-size:.98rem;font-weight:600;list-style:none;display:flex}.blog-refonte .art-faq__q::-webkit-details-marker{display:none}.blog-refonte .art-faq__q:after{content:"+";font-family:var(--mono);color:var(--fg-4);margin-left:auto;padding-left:16px}.blog-refonte .art-faq__item[open] .art-faq__q:after{content:"−"}.blog-refonte .art-faq__a{color:var(--fg-3);padding:0 18px 16px;font-size:.92rem;line-height:1.7}.blog-refonte .art-faq__a p{margin:0}.blog-refonte .art-end{border-top:1px solid var(--bd);flex-direction:column;gap:26px;margin-top:56px;padding-top:34px;display:flex}.blog-refonte .art-end--skeleton{border-top-color:#0000;min-height:260px}.blog-refonte .art-end__social{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:22px;display:flex}.blog-refonte .art-end__back{min-height:44px;color:var(--fg-3);align-self:flex-start;align-items:center;gap:8px;font-size:.9rem;display:inline-flex}.blog-refonte .art-end__back:hover{color:var(--fg)}.blog-refonte .art-xp{border:1px solid var(--bd-hi);border-radius:var(--r-xl);background:var(--bg-1);align-items:center;gap:20px;padding:24px 26px;display:flex}.blog-refonte .art-xp__icon{border:1px solid var(--bd-hi);background:var(--bg-2);width:46px;height:46px;color:var(--fg-2);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.blog-refonte .art-xp__icon svg{width:20px;height:20px}.blog-refonte .art-xp__body{flex:1;min-width:0}.blog-refonte .art-xp__title{letter-spacing:-.01em;color:var(--fg);margin:0;font-size:1.05rem;font-weight:650}.blog-refonte .art-xp__text{color:var(--fg-3);margin:6px 0 0;font-size:.88rem;line-height:1.55}.blog-refonte .art-xp__countdown{font-family:var(--mono);color:var(--fg);font-variant-numeric:tabular-nums}.blog-refonte .art-xp__progress{background:var(--bg-3,var(--bg-2));border-radius:999px;height:4px;margin-top:12px;overflow:hidden}.blog-refonte .art-xp__progress-fill{border-radius:inherit;background:var(--fg-2);height:100%;transition:width .9s linear;display:block}.blog-refonte .art-xp__cta{background:var(--fg);min-height:44px;color:var(--bg);flex-shrink:0}.blog-refonte .art-xp__badge{color:#a3de92;font-family:var(--mono);background:#a3de921f;border:1px solid #a3de9266;border-radius:999px;flex-shrink:0;align-items:center;gap:8px;padding:9px 14px;font-size:.82rem;font-weight:600;display:inline-flex}.blog-refonte .art-xp__badge svg{width:15px;height:15px}.blog-refonte .art-xp--claimed{border-color:color-mix(in srgb, #a3de92 30%, var(--bd-hi))}.blog-refonte .art-xp--claimed .art-xp__icon{color:#a3de92;border-color:#a3de9266}.blog-refonte .art-share__label,.blog-refonte .art-follow__label{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--fg-4);margin:0 0 10px;font-size:10px}.blog-refonte .art-share__list,.blog-refonte .art-follow__list{flex-wrap:wrap;align-items:center;gap:8px;margin:0;padding:0;list-style:none;display:flex}.blog-refonte .art-share__btn{border-radius:var(--r);border:1px solid var(--bd);width:44px;height:44px;color:var(--fg-3);cursor:pointer;background:0 0;justify-content:center;align-items:center;transition:color .16s,border-color .16s,background .16s;display:inline-flex}.blog-refonte .art-share__btn:hover{color:var(--fg);border-color:var(--fg-4);background:color-mix(in srgb, var(--fg) 5%, transparent)}.blog-refonte .art-share__btn[data-copied=true]{color:#a3de92;border-color:#a3de9273}.blog-refonte .art-follow__link{border:1px solid var(--bd);min-height:44px;color:var(--fg-3);border-radius:999px;align-items:center;gap:8px;padding:0 14px;font-size:.85rem;display:inline-flex}.blog-refonte .art-follow__link:hover{color:var(--fg);border-color:var(--fg-4)}@media (min-width:901px){.blog-refonte .art-share__native{display:none}.blog-refonte .art-toc-details>.art-toc{display:flex}.blog-refonte .art-toc-details>summary{cursor:default}}.blog-refonte a:focus-visible,.blog-refonte button:focus-visible,.blog-refonte summary:focus-visible,.blog-refonte .art-pre-scroll:focus-visible{outline:2px solid var(--fg-2);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion:reduce){.blog-refonte .art-xp__progress-fill,.blog-refonte .art-share__btn,.blog-refonte .art-code__copy{transition:none}}@media (max-width:900px){.blog-refonte .art-wrap{padding-inline:16px}.blog-refonte .art-toc-details{border:1px solid var(--bd);border-radius:var(--r-lg);background:var(--bg-1);padding:12px 14px}.blog-refonte .art-toc-details>summary{align-items:center;min-height:44px;margin-bottom:0;display:flex}.blog-refonte .art-toc-details[open]>summary{margin-bottom:10px}.blog-refonte .art-toc a{align-items:center;min-height:44px}.blog-refonte .art-xp{text-align:left;flex-direction:column;align-items:stretch;padding:20px}.blog-refonte .art-xp__cta{width:100%}.blog-refonte .art-end__social{flex-direction:column;gap:20px}.blog-refonte .art-pre{padding:14px 16px;font-size:12px}.blog-refonte .art-code__lang,.blog-refonte .art-code__copy-label{display:none}.blog-refonte .art-code__copy{width:44px;min-height:44px;padding:0}.blog-refonte .art-prose table{white-space:nowrap;display:block;overflow-x:auto}}@media (max-width:520px){.blog-refonte .art-crumb li:not(:first-child):not(:last-child){display:none}.blog-refonte .art-xp__badge{align-self:flex-start}}@media (max-width:900px){.blog-refonte .art-end,.blog-refonte .art-author{content-visibility:auto;contain-intrinsic-size:auto 320px}}.blog-refonte .bx-b h3,.blog-refonte .bcard h4,.blog-refonte .bcard .bcard-title{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.blog-refonte .bx-b p,.blog-refonte .bcard p{-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.blog-refonte .bxf-body p{-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.blog-refonte .av,.blog-refonte .bx-av,.blog-refonte .bf-av{position:relative}.blog-refonte .av .blog-av-img,.blog-refonte .bx-av .blog-av-img,.blog-refonte .bf-av .blog-av-img{-o-object-fit:cover;object-fit:cover;opacity:0;width:100%;height:100%;display:block;position:absolute;inset:0}.blog-refonte .av .blog-av-img[data-loaded=true],.blog-refonte .bx-av .blog-av-img[data-loaded=true],.blog-refonte .bf-av .blog-av-img[data-loaded=true]{opacity:1}.blog-refonte .blog-av-fallback{width:100%;height:100%;font:inherit;color:inherit;letter-spacing:.02em;justify-content:center;align-items:center;display:flex}@keyframes blog-sk-pulse{0%,to{opacity:1}50%{opacity:.42}}.blog-refonte .blog-sk{background:color-mix(in srgb, var(--fg) 8%, var(--bg-2));border-radius:6px;animation:1.35s ease-in-out infinite blog-sk-pulse;display:block}.blog-refonte .blog-sk-fill{border-radius:inherit;width:100%;height:100%;position:absolute;inset:0}.blog-refonte .blog-sk-line{width:100%;height:12px}.blog-refonte .blog-sk-h-md{height:18px}.blog-refonte .blog-sk-h-lg{height:26px}.blog-refonte .blog-sk-w-16{width:16%}.blog-refonte .blog-sk-w-20{width:20%}.blog-refonte .blog-sk-w-24{width:24%}.blog-refonte .blog-sk-w-28{width:28%}.blog-refonte .blog-sk-w-32{width:32%}.blog-refonte .blog-sk-w-40{width:40%}.blog-refonte .blog-sk-w-48{width:48%}.blog-refonte .blog-sk-w-55{width:55%}.blog-refonte .blog-sk-w-60{width:60%}.blog-refonte .blog-sk-w-70{width:70%}.blog-refonte .blog-sk-w-75{width:75%}.blog-refonte .blog-sk-w-80{width:80%}.blog-refonte .blog-sk-w-85{width:85%}.blog-refonte .blog-sk-w-90{width:90%}.blog-refonte .blog-sk-w-95{width:95%}.blog-refonte .blog-sk-w-100{width:100%}.blog-refonte .blog-sk-mt{margin-top:10px}.blog-refonte .blog-sk-mx{margin-left:auto;margin-right:auto}.blog-refonte .blog-sk-ml-auto{margin-left:auto}.blog-refonte .blog-sk-av{border-radius:50%;flex-shrink:0;width:26px;height:26px}.blog-refonte .blog-sk-av-md{width:34px;height:34px}.blog-refonte .blog-sk-av-lg{width:52px;height:52px}.blog-refonte .blog-sk-pill{border-radius:999px;width:110px;height:28px}.blog-refonte .blog-sk-h1{border-radius:10px;width:min(420px,90%);height:42px;margin-top:18px;display:block}.blog-refonte .blog-sk-lead{border-radius:6px;width:min(520px,92%);height:14px;margin-top:12px;display:block}.blog-refonte .blog-sk-stats{align-items:center;gap:18px;margin-top:22px;display:flex}.blog-refonte .blog-sk-filters{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;display:flex}.blog-refonte .blog-sk-search{border-radius:10px;width:min(280px,100%);height:42px}.blog-refonte .blog-sk-chip{border-radius:999px;width:88px;height:34px}.blog-refonte .blog-sk-feat{pointer-events:none;margin-bottom:22px}.blog-refonte .blog-sk-feat .bxf-media,.blog-refonte .blog-sk-card .bx-thumb,.blog-refonte .blog-sk-cover{position:relative;overflow:hidden}.blog-refonte .blog-sk-cover{margin:28px 0}.blog-refonte .blog-sk-section{margin-bottom:28px}.blog-refonte .blog-sk-code{border-radius:12px;width:100%;height:140px}.blog-refonte .blog-sk-author{margin-top:40px}.blog-refonte .blog-sk-author-txt{flex:1;min-width:0}.blog-refonte .blog-sk-toc{border:1px solid var(--bd);border-radius:var(--r-lg);background:var(--bg-1);padding:18px}.blog-refonte .blog-sk-end{min-height:180px}.blog-refonte .blog-sk-xp{border-radius:var(--r-xl);width:100%;height:96px}.blog-refonte .blog-sk-end-row{flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;display:flex}@media (max-width:780px){.blog-refonte .blog-sk-h1{height:34px}}@media (prefers-reduced-motion:reduce){.blog-refonte .blog-sk{animation:none}}
