@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/public-sans-vietnamese-wght-normal.CtlIRbEm.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:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/public-sans-latin-ext-wght-normal.MQgHevqp.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:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/public-sans-latin-wght-normal.DdeTHZLK.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}@layer tokens{:root{--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--space-9:6rem;--text-xs:.75rem;--text-sm:.8125rem;--text-base:clamp(1rem, .97rem + .15vw, 1.0625rem);--text-md:1.125rem;--text-lg:clamp(1.25rem, 1.14rem + .5vw, 1.5rem);--text-xl:clamp(1.75rem, 1.45rem + 1.3vw, 2.5rem);--text-readout:clamp(2rem, 1.4rem + 2.8vw, 3.5rem);--leading-tight:1.15;--leading-snug:1.35;--leading-body:1.65;--maxw:58rem;--measure:38rem;--radius-0:0;--radius-1:2px;--radius-2:3px;--rule-hair:1px;--rule-mid:2px;--rule-heavy:3px;--control-h:2.5rem;--paper:#fff;--shadow-overlay:0 6px 24px #0000002e;--tap-pad:.2rem;--dur-fast:90ms;--dur-mid:.16s;--ease:cubic-bezier(.2, 0, 0, 1)}@media (pointer:coarse){:root{--tap-pad:.6rem}}@media (prefers-reduced-motion:reduce){:root{--dur-fast:0s;--dur-mid:0s}}:root{--bg:#e7edf4;--surface:#fff;--ink:#10161c;--muted:#4b5663;--accent:#075a8f;--accent-ink:#fff;--accent-soft:#075a8f14;--warn:#8a5300;--line:#ccd4dc;--font:"Public Sans Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#0d1116;--surface:#141a21;--ink:#e6ebf0;--muted:#9aa7b4;--accent:#56b6e9;--accent-ink:#06131c;--accent-soft:#56b6e920;--warn:#e0a951;--line:#263038}}}@layer system{*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html{color-scheme:light dark;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:var(--text-base);line-height:var(--leading-body);font-synthesis-weight:none;font-variant-numeric:tabular-nums;margin:0}img,canvas{max-width:100%;height:auto}a{color:var(--accent);text-underline-offset:.2em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:var(--rule-mid) solid var(--accent);outline-offset:2px}h1,h2,h3{line-height:var(--leading-tight);letter-spacing:-.015em;text-wrap:balance}h1{font-size:var(--text-xl);margin:0 0 var(--space-2);font-weight:800}h2{font-size:var(--text-lg);margin:var(--space-7) 0 var(--space-3);font-weight:700}h3{font-size:var(--text-md);margin:var(--space-5) 0 var(--space-2);font-weight:700}main{max-width:var(--maxw);padding:var(--space-6) var(--space-4) var(--space-8);margin:0 auto}.site-header{background:var(--surface);border-bottom:var(--rule-heavy) solid var(--accent)}.site-header .inner,.site-footer .inner{max-width:var(--maxw);padding:var(--space-3) var(--space-4);align-items:baseline;gap:var(--space-4);flex-wrap:wrap;margin:0 auto;display:flex}.logo{letter-spacing:-.01em;color:var(--ink);font-size:1.0625rem;font-weight:300;text-decoration:none}.logo b{color:var(--accent);font-weight:800}.site-header nav{align-items:baseline;gap:var(--space-4);font-size:var(--text-sm);margin-left:auto;display:flex}.site-header nav a{color:var(--ink);padding-block:var(--tap-pad);border-bottom:var(--rule-hair) solid transparent;text-decoration:none}.site-header nav a:hover{border-bottom-color:var(--accent)}.lang-switch{font-weight:700;font-size:var(--text-xs);letter-spacing:.04em;padding:var(--tap-pad) var(--space-2);border:var(--rule-hair) solid var(--line);border-radius:var(--radius-1)}.site-footer{font-size:var(--text-sm);color:var(--muted);border-top:var(--rule-hair) solid var(--line);background:var(--surface)}.site-footer .inner{align-items:center}.footer-tools{border-bottom:var(--rule-hair) solid var(--line);gap:var(--space-4)}.site-footer a{color:var(--muted);padding-block:var(--tap-pad);border-bottom:var(--rule-hair) solid transparent;text-decoration:none}.site-footer a:hover{color:var(--ink);border-bottom-color:var(--accent)}.site-footer nav{gap:var(--space-3);flex-wrap:wrap;margin-left:auto;display:flex}.intro{max-width:var(--measure);font-size:var(--text-md);line-height:var(--leading-snug);color:var(--muted);margin:0 0 var(--space-6)}.tool{border-top:var(--rule-heavy) solid var(--accent);padding:var(--space-5) 0 0;margin:0 0 var(--space-7)}.dropzone{justify-content:center;align-items:center;gap:var(--space-1);min-height:9rem;padding:var(--space-6) var(--space-4);text-align:center;cursor:pointer;background:var(--surface);border:var(--rule-hair) solid var(--line);border-left:var(--rule-heavy) solid var(--line);border-radius:var(--radius-0);transition:border-color var(--dur-mid) var(--ease), background var(--dur-mid) var(--ease);flex-direction:column;display:flex}.dropzone:hover,.dropzone:focus-visible,.dropzone.dragover{border-color:var(--accent);border-left-color:var(--accent);background:var(--accent-soft);outline:none}.dropzone strong{font-size:var(--text-md);font-weight:700}.dropzone span{font-size:var(--text-sm);color:var(--muted);max-width:28rem}.privacy-note{font-size:var(--text-sm);color:var(--muted);margin:var(--space-3) 0 0;padding-left:var(--space-3);border-left:var(--rule-mid) solid var(--accent)}.tool-body{margin-top:var(--space-5)}.tool-controls{gap:var(--space-3) var(--space-5);padding-bottom:var(--space-4);border-bottom:var(--rule-hair) solid var(--line);flex-wrap:wrap;align-items:end;display:flex}.tool-controls:empty{display:none}.field{gap:var(--space-1);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);flex-direction:column;font-weight:700;display:flex}.field-inline{align-items:center;gap:var(--space-2);text-transform:none;letter-spacing:0;font-size:var(--text-sm);flex-direction:row}input[type=number],input[type=text],select{font:inherit;font-size:var(--text-base);letter-spacing:0;text-transform:none;color:var(--ink);background:var(--surface);height:var(--control-h);padding:0 var(--space-2);border:var(--rule-hair) solid var(--line);border-radius:var(--radius-1);font-weight:400}input[type=number]:focus,input[type=text]:focus,select:focus{border-color:var(--accent)}input[type=color]{height:var(--control-h);background:var(--surface);border:var(--rule-hair) solid var(--line);border-radius:var(--radius-1);width:3rem;padding:2px}input[type=range]{accent-color:var(--accent);width:11rem}button,.btn{font:inherit;font-size:var(--text-sm);color:var(--ink);background:var(--surface);height:var(--control-h);padding:0 var(--space-4);border:var(--rule-hair) solid var(--ink);border-radius:var(--radius-1);cursor:pointer;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);font-weight:700}button:hover,.btn:hover{background:var(--accent-soft)}button.primary{color:var(--accent-ink);background:var(--accent);border-color:var(--accent);border-radius:var(--radius-2)}button.primary:hover{filter:brightness(1.08);background:var(--accent)}button[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent)}.tool-status{font-size:var(--text-sm);color:var(--muted);margin:var(--space-4) 0 0}.tool-hint{font-size:var(--text-sm);color:var(--muted)}.tool-actions{gap:var(--space-3);margin-top:var(--space-5);flex-wrap:wrap;display:flex}.tool-canvas-wrap{margin-top:var(--space-4);border:var(--rule-hair) solid var(--line);border-radius:var(--radius-0);overflow:auto}.tool-output{margin-top:var(--space-5)}.results{flex-direction:column;display:flex}.result{align-items:center;gap:var(--space-4);padding:var(--space-4) 0;border-bottom:var(--rule-hair) solid var(--line);display:flex}.result:first-child{border-top:var(--rule-hair) solid var(--line)}.result img{border-radius:var(--radius-0);border:var(--rule-hair) solid var(--line);flex:none}.result .meta{gap:var(--space-1);flex-direction:column;flex:1;min-width:0;display:flex}.result .name{font-size:var(--text-sm);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.result .sizes{align-items:baseline;gap:var(--space-1);font-size:var(--text-sm);color:var(--muted);line-height:var(--leading-tight);flex-direction:column;display:flex}.result .sizes .saving,.result .sizes .growth{font-size:var(--text-readout);letter-spacing:-.03em;order:-1;font-weight:800;line-height:.95}.result .sizes .saving{color:var(--accent)}.result .sizes .growth{color:var(--warn)}.result button{flex:none}.spec{counter-reset:spec-section}.spec>section>h2{align-items:baseline;gap:var(--space-3);padding-top:var(--space-3);border-top:var(--rule-mid) solid var(--ink);display:flex}.spec>section>h2:before{counter-increment:spec-section;content:counter(spec-section);font-size:var(--text-sm);color:var(--accent);flex:none;font-weight:700}.steps{max-width:var(--measure);padding-left:var(--space-5);margin:0}.steps li{margin-bottom:var(--space-2)}.faq details{border-bottom:var(--rule-hair) solid var(--line);padding:var(--space-3) 0}.faq details:first-of-type{border-top:var(--rule-hair) solid var(--line)}.faq summary{font-size:var(--text-base);cursor:pointer;font-weight:700;list-style-position:outside}.faq summary::marker{color:var(--accent)}.faq p{max-width:var(--measure);color:var(--muted);margin:var(--space-2) 0 var(--space-1)}.related ul{gap:var(--space-2) var(--space-4);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.related a{font-size:var(--text-sm);color:var(--ink);border-bottom:var(--rule-hair) solid var(--line);padding-block:var(--tap-pad);text-decoration:none;display:inline-block}.related a:hover{border-bottom-color:var(--accent)}.more a{padding-block:var(--tap-pad);display:inline-block}.content-section>p,.content-section>ul{max-width:var(--measure)}.content-section p{margin:0 0 var(--space-4)}.content-section ul{margin:0 0 var(--space-4);padding-left:var(--space-5)}.content-section li{margin-bottom:var(--space-2)}.notes>p{max-width:var(--measure);color:var(--muted)}.tool-grid,.guide-list{border-top:var(--rule-hair) solid var(--line);grid-template-columns:1fr;margin:0;padding:0;list-style:none;display:grid}.tool-grid a,.guide-list a{gap:var(--space-1) var(--space-4);padding:var(--space-3) var(--space-2);color:var(--ink);border-bottom:var(--rule-hair) solid var(--line);border-left:var(--rule-mid) solid transparent;transition:background var(--dur-fast) var(--ease), border-left-color var(--dur-fast) var(--ease);grid-template-columns:minmax(0,14rem) minmax(0,1fr);align-items:baseline;text-decoration:none;display:grid}.tool-grid a:hover,.guide-list a:hover{background:var(--surface);border-left-color:var(--accent)}.tool-grid strong,.guide-list strong{font-size:var(--text-base);font-weight:700}.tool-grid span,.guide-list span{font-size:var(--text-sm);color:var(--muted);line-height:var(--leading-snug)}.tool-index a{grid-template-columns:1.25rem minmax(0,14rem) minmax(0,1fr)}.tool-icon{color:var(--muted);justify-content:center;align-self:start;align-items:center;padding-top:.1em;display:flex}.tool-icon svg{stroke-width:1.75px;width:1.25rem;height:1.25rem}.tool-index a:hover .tool-icon{color:var(--accent)}@media (width<=44rem){.tool-grid a,.guide-list a{grid-template-columns:1fr}.tool-index a{grid-template-columns:1.25rem minmax(0,1fr)}.tool-index a>span:not(.tool-icon){grid-column:2}}.hero{padding:var(--space-6) 0 var(--space-7);border-bottom:var(--rule-heavy) solid var(--accent);margin-bottom:var(--space-6)}.hero h1{letter-spacing:-.03em;max-width:22ch;font-size:clamp(2rem,1.4rem + 2.6vw,3.25rem)}.hero p{max-width:var(--measure);font-size:var(--text-md);line-height:var(--leading-snug);color:var(--muted);margin:0 0 var(--space-5)}.badges{gap:0 var(--space-4);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;flex-wrap:wrap;margin:0;padding:0;font-weight:700;list-style:none;display:flex}.badges li{padding:var(--space-2) var(--space-4) var(--space-2) 0;border-right:var(--rule-hair) solid var(--line)}.badges li:last-child{border-right:0}.prose{max-width:var(--measure)}.content-section.prose,.notes.prose{max-width:none}.prose p,.prose li{color:var(--muted)}.prose h1,.prose h2,.prose h3,.prose strong{color:var(--ink)}.prose li{margin-bottom:var(--space-2)}.byline{font-size:var(--text-sm);color:var(--muted);border-bottom:var(--rule-hair) solid var(--line);padding-bottom:var(--space-4);margin-bottom:var(--space-5)}.prose table{border-collapse:collapse;width:100%;font-size:var(--text-sm);margin:var(--space-5) 0;display:block;overflow-x:auto}.prose th,.prose td{border-bottom:var(--rule-hair) solid var(--line);padding:var(--space-2) var(--space-3) var(--space-2) 0;text-align:left;vertical-align:top}.prose th{color:var(--ink);border-bottom:var(--rule-mid) solid var(--ink);white-space:nowrap;font-weight:700}.prose pre{font-size:var(--text-sm);background:var(--surface);border:var(--rule-hair) solid var(--line);border-left:var(--rule-mid) solid var(--line);border-radius:var(--radius-0);padding:var(--space-3);overflow-x:auto}.prose code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.prose blockquote{margin:var(--space-5) 0;padding-left:var(--space-4);border-left:var(--rule-mid) solid var(--accent);color:var(--muted)}.article{max-width:var(--measure)}.article .dek{font-size:var(--text-md);line-height:var(--leading-snug);color:var(--muted)}.article p,.article li{color:var(--muted)}.article li{margin-bottom:var(--space-2)}.article .meta{font-size:var(--text-sm);color:var(--muted);border-bottom:var(--rule-hair) solid var(--line);padding-bottom:var(--space-4);margin-bottom:var(--space-5)}.ad-slot{margin:var(--space-6) 0;border:var(--rule-hair) solid var(--line);border-radius:var(--radius-0);min-height:280px;color:var(--muted);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;justify-content:center;align-items:center;font-weight:700;display:flex}.lang-suggest{left:50%;bottom:var(--space-4);z-index:50;align-items:center;gap:var(--space-4);max-width:calc(100vw - var(--space-6));padding:var(--space-3) var(--space-4);font-size:var(--text-sm);background:var(--surface);color:var(--ink);border:var(--rule-hair) solid var(--line);border-top:var(--rule-mid) solid var(--accent);border-radius:var(--radius-0);box-shadow:var(--shadow-overlay);display:flex;position:fixed;transform:translate(-50%)}.lang-suggest-cta{padding-block:var(--tap-pad);color:var(--accent);white-space:nowrap;border-bottom:var(--rule-hair) solid var(--accent);font-weight:700;text-decoration:none;display:inline-block}.lang-suggest-close{font:inherit;min-width:2.75rem;height:auto;min-height:2.75rem;margin:calc(var(--space-2) * -1) calc(var(--space-2) * -1) calc(var(--space-2) * -1) 0;color:var(--muted);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:flex}.lang-suggest-close:hover{color:var(--ink);background:0 0}@media (width<=30rem){.lang-suggest{left:var(--space-2);right:var(--space-2);flex-wrap:wrap;max-width:none;transform:none}.lang-suggest>span{flex:100%}.lang-suggest-cta{text-align:center;flex:auto}}@media (width<=40rem){main{padding:var(--space-5) var(--space-4) var(--space-7)}.tool{padding:var(--space-4);margin-left:calc(var(--space-4) * -1);margin-right:calc(var(--space-4) * -1);border-left:0;border-right:0}.site-header .inner,.site-footer .inner{gap:var(--space-2) var(--space-3)}.site-header nav{gap:var(--space-3)}.result{flex-wrap:wrap}}}@layer site;
