@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-vietnamese-wght-normal.CnvboYUG.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-ext-wght-normal.Ca2vKHc0.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-wght-normal.ukD16Tqj.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@keyframes art-rise{0%{opacity:0;transform:translateY(14px)}}.anim{animation:art-rise .62s cubic-bezier(.2,.7,.2,1) both;animation-delay:var(--d, 0ms)}.article-shell{position:relative}.art-hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}.art-hero-wash{position:absolute;inset:-40% -10% auto;height:520px;pointer-events:none;opacity:.8;background:radial-gradient(42% 60% at 78% 18%,var(--mint),transparent 70%),radial-gradient(38% 52% at 92% 4%,var(--sky),transparent 70%)}.art-hero-in{position:relative;max-width:1140px;margin:0 auto;padding:clamp(28px,5vw,56px) 32px clamp(30px,4vw,44px)}.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-family:var(--font-mono);font-size:12px;color:var(--ink-3);margin-bottom:22px}.crumbs a{color:var(--ink-3);transition:color .15s}.crumbs a:hover{color:var(--teal)}.crumbs .sep{opacity:.45}.crumbs [aria-current]{color:var(--ink-2)}.art-title{font-family:var(--font-serif);font-optical-sizing:auto;font-weight:460;font-size:clamp(27px,7vw,60px);line-height:1.04;letter-spacing:-.018em;color:var(--ink);text-wrap:balance;max-width:18ch}.art-lead{font-size:clamp(17px,2vw,21px);line-height:1.5;color:var(--ink-2);margin-top:20px;max-width:60ch;text-wrap:pretty}.art-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:26px;font-size:13px;color:var(--ink-3)}.reviewer-chip{display:inline-flex;align-items:center;gap:9px;padding:5px 12px 5px 6px;border:1px solid var(--line-2);border-radius:999px;background:var(--surface);box-shadow:var(--shadow-sm)}.reviewer-chip .nodemark{width:24px;height:24px;border-radius:50%;background:var(--ink);position:relative;flex:none}.reviewer-chip .nodemark:before,.reviewer-chip .nodemark:after{content:"";position:absolute;background:var(--teal);border-radius:50%}.reviewer-chip .nodemark:before{width:5px;height:5px;top:6px;left:9.5px}.reviewer-chip .nodemark:after{width:5px;height:5px;bottom:6px;left:9.5px;box-shadow:-5px 0 #fff,5px 0 #fff}.reviewer-chip b{color:var(--ink-2);font-weight:600}.reviewer-chip a{color:var(--teal-d);font-weight:600}.meta-dot{width:4px;height:4px;border-radius:50%;background:var(--ink-4)}.meta-verified{display:inline-flex;align-items:center;gap:6px;color:var(--teal-d);font-weight:500}.meta-verified:before{content:"✓";display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--teal-tint);color:var(--teal-d);font-size:10px}.art-grid{max-width:1140px;margin:0 auto;padding:clamp(36px,5vw,64px) 32px clamp(64px,9vw,110px);display:grid;grid-template-columns:minmax(0,1fr) 312px;grid-template-areas:"main aside";gap:60px}.art-grid.single{grid-template-columns:minmax(0,1fr);grid-template-areas:"main";max-width:760px}.art-grid.single-wide{max-width:1140px}.art-main{grid-area:main;min-width:0}.art-aside{grid-area:aside}.art-aside-sticky{position:sticky;top:88px;display:flex;flex-direction:column;gap:18px}@media(max-width:980px){.art-grid{grid-template-columns:1fr;grid-template-areas:"aside" "main";gap:30px}.art-aside-sticky{position:static}}.article-shell section{padding-block:0}.prose{font-size:16.5px}.prose>section{margin-top:46px;scroll-margin-top:88px}.prose>section:first-child{margin-top:0}.prose h2{font-family:var(--font-serif);font-optical-sizing:auto;font-weight:480;font-size:clamp(23px,2.6vw,30px);letter-spacing:-.01em;line-height:1.12;color:var(--ink);position:relative;padding-top:6px}.prose h2:before{content:"";position:absolute;top:-16px;left:0;width:34px;height:2px;background:var(--teal);border-radius:2px;opacity:.85}.prose h3{font-size:18px;font-weight:600;margin:24px 0 8px;letter-spacing:-.01em}.prose p{color:var(--ink-2);font-size:16.5px;line-height:1.72;margin-top:14px;text-wrap:pretty}.prose ul,.prose ol{color:var(--ink-2);font-size:16.5px;line-height:1.66;margin:14px 0 0;padding-left:0;list-style:none}.prose li{position:relative;padding-left:26px;margin-top:9px}.prose ul li:before{content:"";position:absolute;left:4px;top:.62em;width:6px;height:6px;border-radius:50%;background:var(--teal)}.prose ol{counter-reset:li}.prose ol li{counter-increment:li}.prose ol li:before{content:counter(li);position:absolute;left:0;top:.05em;font-family:var(--font-mono);font-size:12px;color:var(--teal-d);font-weight:600}.prose a{color:var(--teal-d);font-weight:500;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;text-decoration-color:color-mix(in srgb,var(--teal) 35%,transparent);transition:text-decoration-color .15s}.prose a:hover{text-decoration-color:var(--teal)}.prose strong,.prose b{color:var(--ink);font-weight:600}.glance{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:20px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.glance:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:linear-gradient(90deg,var(--teal-d),var(--teal))}.glance .g-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);display:flex;align-items:center;gap:8px}.glance .g-label:before{content:"";width:14px;height:1px;background:var(--teal);opacity:.6}.g-rows{margin-top:14px;display:flex;flex-direction:column;gap:0}.g-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}.g-row:last-child{border-bottom:none}.g-row .k{font-size:12.5px;color:var(--ink-3)}.g-row .v{font-family:var(--font-mono);font-size:13px;color:var(--ink);font-variant-numeric:tabular-nums;text-align:right}.g-row .v.cat{color:var(--teal-d);font-family:var(--font-sans);font-weight:600}.g-zone{margin-top:16px}.g-zone .bar{display:flex;height:8px;border-radius:5px;overflow:hidden}.g-zone .bar i{display:block;height:100%}.g-zone .bar .lo{width:28%;background:var(--amber-tint)}.g-zone .bar .ok{width:44%;background:linear-gradient(90deg,var(--teal),var(--teal-d))}.g-zone .bar .hi{width:28%;background:var(--amber-tint)}.g-zone .labs{display:flex;justify-content:space-between;margin-top:7px;font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;text-transform:uppercase}.g-zone .labs .a{color:var(--amber)}.g-zone .labs .n{color:var(--teal-d)}.glance .g-note{font-size:11px;color:var(--ink-4);margin-top:12px;line-height:1.45}.crossread{position:relative;margin-top:40px;border:1px solid var(--teal-tint);border-radius:18px;padding:24px;overflow:hidden;background:linear-gradient(180deg,var(--teal-tint-2),var(--surface))}.crossread:after{content:"";position:absolute;inset:0;background-image:radial-gradient(color-mix(in srgb,var(--teal) 16%,transparent) 1px,transparent 1px);background-size:18px 18px;opacity:.5;pointer-events:none;-webkit-mask-image:linear-gradient(180deg,#000,transparent 70%);mask-image:linear-gradient(180deg,#000,transparent 70%)}.crossread .cr-label{position:relative;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--teal-d);display:inline-flex;align-items:center;gap:8px}.crossread .cr-label .pulse{width:7px;height:7px;border-radius:50%;background:var(--teal);animation:cr-pulse 2.4s infinite}@keyframes cr-pulse{0%{box-shadow:0 0 color-mix(in srgb,var(--teal) 45%,transparent)}70%{box-shadow:0 0 0 8px transparent}}.crossread h2{font-family:var(--font-serif);font-weight:480;font-size:21px;letter-spacing:-.01em;color:var(--ink);margin:10px 0 0;padding:0}.crossread h2:before{display:none}.crossread p{position:relative;color:var(--ink-2);font-size:15px;line-height:1.6;margin-top:8px}.crossread p a{color:var(--teal-d);font-weight:600;text-decoration:none}.cr-net{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:18px}.cr-node{display:inline-flex;align-items:center;gap:8px;padding:8px 13px;border-radius:999px;background:var(--surface);border:1px solid var(--line-2);font-size:13.5px;color:var(--ink-2);box-shadow:var(--shadow-sm);transition:transform .15s,border-color .15s,color .15s}.cr-node:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--teal);flex:none}a.cr-node:hover{transform:translateY(-2px);border-color:var(--teal);color:var(--teal-d)}.cr-node.self{background:var(--ink);color:#fff;border-color:var(--ink)}.cr-node.self:before{background:var(--teal);box-shadow:0 0 0 3px color-mix(in srgb,var(--teal) 30%,transparent)}.cr-link{color:var(--ink-4);font-family:var(--font-mono);font-size:14px}.faq{margin-top:44px}.faq>h2{font-family:var(--font-serif);font-weight:480;font-size:clamp(23px,2.6vw,30px);letter-spacing:-.01em;color:var(--ink);margin-bottom:16px}.faq details{border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-sm);margin-top:10px;transition:border-color .18s,box-shadow .18s}.faq details[open]{border-color:var(--line-2);box-shadow:var(--shadow)}.faq summary{cursor:pointer;list-style:none;display:flex;gap:14px;align-items:flex-start;padding:16px 18px;font-weight:600;font-size:16px;color:var(--ink)}.faq summary::-webkit-details-marker{display:none}.faq summary .q-ic{flex:none;width:22px;height:22px;border-radius:7px;background:var(--teal-tint);color:var(--teal-d);display:flex;align-items:center;justify-content:center;font-size:16px;line-height:1;transition:transform .25s cubic-bezier(.2,.7,.2,1),background .2s,color .2s}.faq details[open] summary .q-ic{transform:rotate(45deg);background:var(--teal);color:#fff}.faq summary .q-tx{padding-top:1px}.faq details p{color:var(--ink-2);font-size:15.5px;line-height:1.66;margin:0;padding:0 18px 18px 54px;text-wrap:pretty}.faq summary:not(:has(.q-ic)){justify-content:space-between}.faq summary:not(:has(.q-ic))>*{padding-right:12px}.faq summary:not(:has(.q-ic)):after{content:"+";color:var(--teal);font-size:22px;font-weight:400;line-height:1;flex:none}.faq details[open] summary:not(:has(.q-ic)):after{content:"−"}.faq summary:not(:has(.q-ic))+p{padding-left:18px}.sources{margin-top:40px;padding-top:24px;border-top:1px solid var(--line)}.sources h2{font-family:var(--font-mono);font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3);font-weight:500;padding-top:0}.sources h2:before{display:none}.sources ol{margin:14px 0 0;padding:0;list-style:none;counter-reset:src;display:flex;flex-direction:column;gap:9px}.sources li{counter-increment:src;position:relative;padding-left:30px;font-size:14px;color:var(--ink-2)}.sources li:before{content:counter(src);position:absolute;left:0;top:0;width:20px;height:20px;border-radius:6px;background:var(--bg2);color:var(--ink-3);font-family:var(--font-mono);font-size:11px;display:flex;align-items:center;justify-content:center}.sources a{color:var(--teal-d)}.related{margin-top:36px}.related .rl{font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin-bottom:12px}.chips{display:flex;flex-wrap:wrap;gap:9px}.chips a{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;color:var(--ink-2);border:1px solid var(--line-2);border-radius:999px;padding:8px 14px;background:var(--surface);box-shadow:var(--shadow-sm);transition:border-color .15s,color .15s,transform .15s}.chips a:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--teal)}.chips a:hover{border-color:var(--teal);color:var(--teal-d);transform:translateY(-2px)}.cta-box{position:relative;margin-top:44px;padding:32px 30px;border:1px solid var(--line-2);border-radius:22px;overflow:hidden;background:var(--surface);box-shadow:var(--shadow)}.cta-box:before{content:"";position:absolute;inset:0;background:radial-gradient(80% 140% at 0% 0%,var(--mint),transparent 55%),radial-gradient(70% 130% at 100% 0%,var(--sky),transparent 60%);opacity:.8;pointer-events:none}.cta-box:after{content:"";position:absolute;inset:0;background-image:radial-gradient(color-mix(in srgb,var(--teal) 12%,transparent) 1px,transparent 1px);background-size:20px 20px;opacity:.35;-webkit-mask-image:radial-gradient(60% 100% at 100% 0%,#000,transparent 70%);mask-image:radial-gradient(60% 100% at 100% 0%,#000,transparent 70%);pointer-events:none}.cta-box h2{position:relative;font-family:var(--font-serif);font-weight:480;font-size:clamp(22px,2.6vw,28px);letter-spacing:-.01em}.cta-box p{position:relative;color:var(--ink-2);font-size:15.5px;margin-top:10px;max-width:54ch;line-height:1.55}.cta-box .btn{position:relative;margin-top:18px}.disclaimer{margin-top:28px;font-size:12.5px;color:var(--ink-3);line-height:1.6;padding:14px 16px 14px 44px;position:relative;border:1px solid var(--line);border-radius:12px;background:var(--bg2)}.disclaimer:before{content:"i";position:absolute;left:15px;top:14px;width:18px;height:18px;border-radius:50%;background:var(--ink);color:#fff;font-family:var(--font-serif);font-style:italic;font-size:12px;display:flex;align-items:center;justify-content:center}.prose .pricing a{text-decoration:none}.prose .pricing .btn-ghost{color:var(--ink)}.prose .pricing .btn-teal,.prose .pricing .btn-primary{color:#fff}.prose .pricing{margin-top:8px}.aside-card{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:20px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.aside-card:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:linear-gradient(90deg,var(--teal-d),var(--teal))}.aside-card .g-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);display:flex;align-items:center;gap:8px}.aside-card .g-label:before{content:"";width:14px;height:1px;background:var(--teal);opacity:.6}.mini-steps{list-style:none;margin:16px 0 0;padding:0;counter-reset:ms;display:flex;flex-direction:column;gap:14px}.mini-steps li{position:relative;padding-left:38px;counter-increment:ms}.mini-steps li:before{content:counter(ms);position:absolute;left:0;top:-2px;width:26px;height:26px;border-radius:9px;background:var(--teal-tint);color:var(--teal-d);font-family:var(--font-mono);font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center}.mini-steps li b{display:block;font-size:14px;color:var(--ink);font-weight:600}.mini-steps li span{display:block;font-size:12.5px;color:var(--ink-3);margin-top:3px;line-height:1.45}.aside-card .ac-cta{display:inline-flex;margin-top:16px;font-size:13px;font-weight:600;color:var(--teal-d)}.aside-card .ac-cta:hover{text-decoration:underline;text-underline-offset:3px}.toc{border-left:1px solid var(--line);padding-left:16px}.toc .t-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-bottom:12px}.toc ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}.toc a{display:block;font-size:13px;line-height:1.4;color:var(--ink-3);padding:6px 0 6px 14px;margin-left:-17px;border-left:2px solid transparent;transition:color .15s,border-color .15s}.toc a:hover{color:var(--ink-2)}.toc a.active{color:var(--teal-d);border-left-color:var(--teal);font-weight:500}@media(max-width:980px){.toc{display:none}}.hub-stats{display:flex;flex-wrap:wrap;gap:26px;margin-top:22px}.hub-stat{display:flex;flex-direction:column}.hub-stat .n{font-family:var(--font-serif);font-weight:500;font-size:30px;letter-spacing:-.02em;color:var(--ink);line-height:1}.hub-stat .l{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-3);margin-top:7px}.hub-group{margin-top:40px}.hub-group>h2{font-family:var(--font-serif);font-weight:480;font-size:22px;letter-spacing:-.01em;display:flex;align-items:baseline;gap:10px;padding-bottom:14px;border-bottom:1px solid var(--line)}.hub-group>h2 .cnt{font-family:var(--font-mono);font-size:12px;font-weight:400;color:var(--ink-4)}.hub-group>h2:before{display:none}.prose .hub-stats+*,.prose .hub-group{margin-top:0}.hub-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:18px}@media(max-width:860px){.hub-grid{grid-template-columns:1fr 1fr}}@media(max-width:540px){.hub-grid{grid-template-columns:1fr}}.hub-card{position:relative;display:block;padding:20px 20px 22px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-sm);overflow:hidden;transition:transform .2s cubic-bezier(.2,.7,.2,1),box-shadow .2s,border-color .2s}.hub-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--teal);transform:scaleY(0);transform-origin:top;transition:transform .22s cubic-bezier(.2,.7,.2,1)}.hub-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--line-2)}.hub-card:hover:before{transform:scaleY(1)}.hub-card .hc-cat{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.04em;color:var(--teal);text-transform:uppercase}.hub-card h3{font-size:17px;margin:10px 0 6px;letter-spacing:-.01em}.hub-card p{font-size:13.5px;color:var(--ink-2);line-height:1.55}.hub-card .hc-arrow{position:absolute;right:16px;top:18px;color:var(--ink-4);transition:transform .2s,color .2s}.hub-card:hover .hc-arrow{transform:translate(3px);color:var(--teal)}@media(max-width:640px){.art-hero-in{padding:22px 18px 26px}.art-grid{padding:26px 18px 56px;gap:26px}.art-lead{font-size:16px;margin-top:14px}.art-meta{margin-top:18px;gap:8px 10px}.prose{font-size:16px}.prose>section{margin-top:32px}.prose h2{font-size:clamp(20px,6vw,30px)}.prose p,.prose ul,.prose ol{font-size:16px}.glance{padding:18px}.crossread{padding:20px;margin-top:32px}.crossread h2{font-size:19px}.faq{margin-top:32px}.faq summary{padding:14px 16px;font-size:15.5px;gap:12px}.faq details p{padding:0 16px 16px 48px}.sources{margin-top:30px}.related{margin-top:28px}.cta-box{padding:24px 20px;margin-top:32px;border-radius:18px}.cta-box h2{font-size:20px}.reftable{font-size:13px}.reftable th,.reftable td{padding:9px 11px}.hub-stats{gap:18px;margin-top:18px}.hub-stat .n{font-size:26px}.hub-group{margin-top:30px}.hub-card{padding:18px}.article-shell .faq>h2{font-size:clamp(20px,6vw,30px)}}.read-prog{position:fixed;top:0;left:0;height:3px;width:100%;background:linear-gradient(90deg,var(--teal-d),var(--teal));transform-origin:left;transform:scaleX(0);z-index:100;pointer-events:none;box-shadow:0 0 12px -1px color-mix(in srgb,var(--teal) 60%,transparent);transition:transform .08s linear}
