@font-face{font-family:Archivo;src:url(/fonts/archivo-var.woff2) format("woff2-variations");font-weight:400 700;font-display:swap}@font-face{font-family:Martian Mono;src:url(/fonts/martianmono-var.woff2) format("woff2-variations");font-weight:300 800;font-display:swap}:root{--page: #d8dad2;--page-2: #cfd2c8;--frame: #c3c5bb;--face: #fcfcfa;--face-2: #f1f2ec;--ink: #1a1b18;--ink-2: #5e6158;--ink-3: #8a8d83;--line: #e2e3dc;--line-2: #d0d2c8;--key: #f2c313;--key-dk: #b58c07;--key-ink: #1a1b18;--ok: #2f6b4a;--over: #c4382b;--over-soft: #f6e2df;--lcd: #17180f;--lcd-ink: #f7f8ea;--lcd-dim: #8f9377;--shadow-1: 0 1px 0 rgb(255 255 255 / .8) inset, 0 2px 0 rgb(26 27 24 / .1), 0 18px 32px -18px rgb(40 42 30 / .5);--shadow-2: 0 1px 0 rgb(26 27 24 / .05), 0 4px 12px -6px rgb(40 42 30 / .28);--inset: inset 0 3px 7px rgb(26 27 24 / .1), inset 0 -1px 0 rgb(255 255 255 / .9);--focus: 0 0 0 3px var(--face), 0 0 0 6px var(--key-dk);--sans: "Archivo", "PingFang TC", "Noto Sans CJK TC", "Noto Sans TC", "Microsoft JhengHei", system-ui, sans-serif;--mono: "Martian Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace}:root[data-theme=dark]{--page: #16170f;--page-2: #1c1e14;--frame: #2a2c1f;--face: #23251b;--face-2: #1c1e15;--ink: #f0f1e6;--ink-2: #a8ab9a;--ink-3: #7b7e6f;--line: #33362a;--line-2: #2b2e22;--key: #f5cb28;--key-dk: #9c7906;--key-ink: #16170f;--ok: #5fb187;--over: #ef6a5c;--over-soft: #3a201c;--lcd: #0e0f08;--lcd-ink: #f7f8ea;--lcd-dim: #7d8168;--shadow-1: 0 1px 0 rgb(255 255 255 / .06) inset, 0 2px 0 rgb(0 0 0 / .5), 0 20px 34px -20px rgb(0 0 0 / .8);--shadow-2: 0 2px 8px -4px rgb(0 0 0 / .6);--inset: inset 0 3px 8px rgb(0 0 0 / .45);--focus: 0 0 0 3px var(--face), 0 0 0 6px var(--key)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}body{background:var(--page);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.78;min-height:100vh;display:flex;flex-direction:column;-webkit-font-smoothing:antialiased}img,video,canvas,svg{display:block;max-width:100%}a{color:var(--ink);text-underline-offset:3px;text-decoration-thickness:1.5px}a:hover{color:var(--ink-2)}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:8px}::selection{background:var(--key);color:var(--key-ink)}.wrap{width:100%;max-width:1120px;margin-inline:auto;padding-inline:32px}@media(max-width:640px){.wrap{padding-inline:20px}}h1,h2,h3,h4{font-weight:800;line-height:1.2;text-wrap:balance}h1{font-size:clamp(2.1rem,1.3rem + 3.2vw,3.6rem);line-height:1.14}h2{font-size:clamp(1.5rem,1.2rem + 1.4vw,2.1rem)}h3{font-size:1.08rem;font-weight:800}html[lang=en] h1{letter-spacing:-.03em}html[lang=en] h2{letter-spacing:-.02em}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.lede{font-size:1.06rem;color:var(--ink-2);max-width:44ch}.eyebrow{font-size:.88rem;font-weight:700;color:var(--ink-3)}.skip-link{position:absolute;left:-9999px;top:0;z-index:99;background:var(--key);color:var(--key-ink);padding:13px 22px;font-weight:800;border-radius:0 0 12px}.skip-link:focus{left:0}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.site-header{padding:22px 0 4px}.site-header .bar{display:flex;align-items:center;gap:24px;flex-wrap:wrap}.brand{display:inline-flex;align-items:center;gap:11px;font-weight:900;font-size:1.18rem;letter-spacing:-.02em;color:var(--ink);text-decoration:none;flex-shrink:0}.brand .mark{position:relative;width:26px;height:26px;flex-shrink:0;border-radius:7px;background:var(--key);box-shadow:0 2px 0 var(--key-dk)}.brand .mark:before{content:"";position:absolute;left:3.5px;right:3.5px;top:8px;height:2px;border-radius:1px;background:var(--ink)}.brand .mark:after{content:"";position:absolute;inset:12.5px 6px 6px;border-radius:2.5px;background:var(--ink)}:root[data-theme=dark] .brand .mark:before,:root[data-theme=dark] .brand .mark:after{background:var(--page)}.site-nav{display:flex;gap:4px;flex-wrap:wrap;margin-inline-start:auto}.site-nav a{font-size:.92rem;font-weight:700;color:var(--ink-2);text-decoration:none;padding:8px 15px;border-radius:999px;white-space:nowrap}.site-nav a:hover{color:var(--ink);background:var(--page-2)}.site-nav a[aria-current=page]{background:var(--face);color:var(--ink);box-shadow:var(--shadow-2)}.header-tools{display:flex;gap:8px;align-items:center}.icon-btn{font:inherit;font-size:.85rem;font-weight:700;cursor:pointer;background:transparent;border:2px solid var(--frame);color:var(--ink-2);padding:7px 15px;border-radius:999px;text-decoration:none;display:inline-flex;align-items:center;gap:6px;line-height:1.5}.icon-btn:hover{border-color:var(--ink);color:var(--ink)}.hero{padding:40px 0 42px}.hero-grid{display:grid;gap:34px 56px;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:end}.hero .lede{margin-top:20px}.hero .eyebrow{margin-bottom:14px}.hero-facts{display:grid;gap:2px}.hero-fact{display:grid;grid-template-columns:5.5em 1fr;gap:16px;align-items:baseline;background:var(--page-2);border-radius:12px;padding:11px 16px}.hero-fact dt{font-size:.82rem;font-weight:800;color:var(--ink-3)}.hero-fact dd{font-size:.9rem;color:var(--ink-2);line-height:1.6}@media(max-width:880px){.hero{padding:26px 0 30px}.hero-grid{grid-template-columns:1fr;gap:28px}}.tool{background:var(--frame);border-radius:28px;padding:13px;box-shadow:var(--shadow-1)}.tool-face{background:var(--face);border-radius:19px;padding:26px 26px 28px}.tool-head{display:grid;gap:20px 26px;grid-template-columns:minmax(0,1fr) auto;align-items:start}.tool-head-main{min-width:0}.readout{background:var(--lcd);border-radius:15px;padding:13px 22px 15px;text-align:end;min-width:188px;box-shadow:var(--inset)}.readout-label{display:block;font-size:.76rem;font-weight:700;color:var(--lcd-dim)}.readout-value{display:block;font-family:var(--mono);font-weight:800;font-size:clamp(2rem,1.4rem + 2vw,2.7rem);line-height:1.08;letter-spacing:-.05em;color:var(--lcd-ink);font-variant-numeric:tabular-nums}@media(max-width:640px){.tool{border-radius:22px;padding:10px}.tool-face{border-radius:14px;padding:20px 18px 22px}.tool-head{grid-template-columns:1fr}.readout{text-align:start}}.scale{margin-top:20px}.scale-track{position:relative;height:14px;border-radius:999px;background:var(--face-2);box-shadow:var(--inset)}.scale-tick{position:absolute;top:4px;width:2px;height:6px;border-radius:2px;background:var(--ink-2);opacity:.38}.scale-tick.is-major{opacity:.85;background:var(--ink)}.scale-marker{position:absolute;top:-5px;width:24px;height:24px;margin-left:-12px;border-radius:50%;background:var(--key);box-shadow:0 2px 0 var(--key-dk),0 4px 10px -3px #b58c07b3,inset 0 2px 3px #ffffff80;transition:left .3s cubic-bezier(.2,.8,.3,1)}.scale-axis{position:relative;height:17px;margin-top:9px;font-size:.72rem;font-weight:700;color:var(--ink-3)}.scale-axis span{position:absolute;white-space:nowrap}.scale-legend{margin-top:6px;font-size:.78rem;color:var(--ink-3)}.tool-opts{display:grid;gap:18px 24px;grid-template-columns:repeat(auto-fit,minmax(232px,1fr));margin-top:24px}.field{display:flex;flex-direction:column;gap:8px;min-width:0}.field[hidden]{display:none}.field>label{font-size:.85rem;font-weight:800;color:var(--ink-2)}.field select,.field input[type=number]{font:inherit;font-size:1rem;font-weight:700;color:var(--ink);background:var(--face);border:2px solid var(--line-2);border-radius:14px;padding:13px 15px;width:100%;cursor:pointer}.field select:hover,.field input:hover{border-color:var(--ink-3)}.field select:disabled{opacity:.62;cursor:not-allowed;background:var(--face-2)}.field .hint{font-size:.8rem;color:var(--ink-3);line-height:1.55}.dropzone{margin-top:24px;padding:40px 24px;text-align:center;cursor:pointer;background:var(--face-2);border-radius:18px;box-shadow:var(--inset);border:2px solid transparent;transition:box-shadow .16s,border-color .16s}.dropzone:hover{border-color:var(--line-2)}.dropzone.is-drag{border-color:var(--key);background:color-mix(in srgb,var(--key) 14%,var(--face-2))}.dz-title{font-size:1.14rem;font-weight:800}.dz-sub{color:var(--ink-2);font-size:.92rem;margin-top:8px}.dz-formats{color:var(--ink-3);font-size:.8rem;margin-top:14px;line-height:1.8}.dropzone .btn{margin-top:20px}.btn{font:inherit;font-size:1rem;font-weight:800;cursor:pointer;border:0;border-radius:999px;padding:14px 28px;display:inline-flex;align-items:center;gap:8px;text-decoration:none;line-height:1.5}.btn-primary{background:var(--key);color:var(--key-ink);box-shadow:0 4px 0 var(--key-dk),0 10px 18px -8px #b58c07cc}.btn-primary:hover{filter:brightness(1.05);color:var(--key-ink)}.btn-primary:active{transform:translateY(2px);box-shadow:0 2px 0 var(--key-dk)}.btn-ghost{background:var(--face);color:var(--ink-2);box-shadow:0 0 0 2px var(--line-2) inset}.btn-ghost:hover{color:var(--ink);box-shadow:0 0 0 2px var(--ink-3) inset}.btn-success{background:var(--ink);color:var(--face)}.btn-success:hover{background:var(--ink-2);color:var(--face)}.btn:disabled{opacity:.38;cursor:not-allowed;box-shadow:none}.btn-sm{font-size:.88rem;padding:10px 20px}.queue-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:26px}.queue-head h2{font-size:.95rem;font-weight:800;color:var(--ink-2);margin-inline-end:auto}.rerun-bar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:14px;padding:14px 18px;border-radius:14px;background:color-mix(in srgb,var(--key) 20%,var(--face-2));box-shadow:0 0 0 2px color-mix(in srgb,var(--key) 55%,transparent) inset}.rerun-bar[hidden]{display:none}.rerun-bar p{flex:1 1 220px;font-size:.9rem;font-weight:700;color:var(--ink)}.queue{list-style:none;display:grid;gap:12px;margin-top:14px}.job{display:grid;gap:0 18px;grid-template-columns:68px minmax(0,1fr) auto;align-items:start;background:var(--face-2);border-radius:16px;padding:16px 18px}.job.is-error{background:var(--over-soft)}.job-thumb{grid-row:1 / -1;align-self:start;width:68px;height:52px;object-fit:cover;border-radius:11px;background:var(--page-2);display:grid;place-items:center;font-size:.74rem;font-weight:800;color:var(--ink-3)}.job-name{grid-column:2;font-size:1rem;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.job-actions{grid-row:1 / -1;grid-column:3;align-self:start;display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.plot{grid-column:2;margin-top:12px}.plot-track{position:relative;height:12px;border-radius:999px;background:var(--page-2)}.plot-bar{position:absolute;left:0;top:0;height:12px;border-radius:999px;transition:width .55s cubic-bezier(.2,.8,.3,1)}.plot-bar.before{background:var(--frame)}.plot-bar.after{background:var(--ok)}.plot-bar.after.is-over{background:var(--over)}.plot-limit{position:absolute;top:-5px;height:22px;width:3px;border-radius:2px;background:var(--ink);box-shadow:0 0 0 1.5px var(--face-2)}.plot-figures{grid-column:2;display:flex;gap:12px;flex-wrap:wrap;align-items:baseline;font-size:.95rem;font-weight:700;color:var(--ink-2);margin-top:12px}.plot-figures .from,.plot-figures .arrow{color:var(--ink-3);font-weight:700}.plot-figures .from,.plot-figures .to{font-family:var(--mono);font-variant-numeric:tabular-nums}.plot-figures .to{color:var(--ink);font-weight:800}.plot-figures .save{color:var(--ok);font-weight:800}.plot-figures .dims{font-family:var(--mono);font-size:.8rem;color:var(--ink-2);font-variant-numeric:tabular-nums}.plot-figures .engine{color:var(--ink-3);font-weight:600;font-size:.86rem}.plot-figures .err{color:var(--over);font-weight:800}.job-status{grid-column:2;display:flex;gap:10px;align-items:baseline;font-size:.86rem;font-weight:700;color:var(--ink-3);margin-top:10px}.job-status .pct{color:var(--ink);font-family:var(--mono);font-variant-numeric:tabular-nums}.job-status .meta{color:var(--ink-3);font-weight:600;font-variant-numeric:tabular-nums}.job-status .meta:not(:empty):before{content:"·";margin-inline-end:10px}.bar-track{grid-column:2;height:8px;border-radius:999px;background:var(--page-2);margin-top:11px;overflow:hidden}.bar-fill{height:100%;width:0;border-radius:999px;background:var(--key);transition:width .18s linear}.job-note{grid-column:2;font-size:.86rem;color:var(--ink-2);line-height:1.65;margin-top:12px;background:var(--face);border-radius:11px;padding:10px 14px}.notice{margin-top:18px;padding:13px 16px;border-radius:13px;font-size:.9rem;color:var(--ink-2);background:var(--face-2)}.notice.warn{background:var(--over-soft);color:var(--over);font-weight:700}.section{padding:52px 0}.section h2{margin-bottom:12px}.section h2:before{content:"";display:block;width:46px;height:5px;border-radius:3px;background:var(--key);margin-bottom:18px}.section .sub{color:var(--ink-2);max-width:54ch}.grid,.steps,.link-cards,.reasons{display:grid;gap:14px;margin-top:26px}.reasons{grid-template-columns:repeat(auto-fit,minmax(288px,1fr));list-style:none}.reasons li{background:var(--face);border-radius:18px;padding:24px 22px 26px;box-shadow:var(--shadow-2);border-top:6px solid var(--key)}.reasons-n{display:block;font-family:var(--mono);font-size:1.5rem;font-weight:800;letter-spacing:-.04em;color:var(--key-dk);line-height:1;margin-bottom:14px}.reasons h3{margin-bottom:10px;font-size:1.14rem}.reasons p{color:var(--ink-2);font-size:.93rem}.grid{grid-template-columns:repeat(auto-fit,minmax(266px,1fr))}.steps{grid-template-columns:repeat(auto-fit,minmax(246px,1fr));list-style:none;counter-reset:s}.link-cards{grid-template-columns:repeat(auto-fit,minmax(258px,1fr))}.card,.steps li,.link-card{background:var(--face);border-radius:18px;padding:22px 22px 24px;box-shadow:var(--shadow-2)}.card h3,.steps h3{margin-bottom:9px}.card p,.steps p{color:var(--ink-2);font-size:.93rem}.steps li{counter-increment:s}.steps li:before{content:counter(s);display:grid;place-items:center;width:30px;height:30px;border-radius:50%;margin-bottom:14px;background:var(--key);color:var(--key-ink);font-weight:900;font-size:.95rem;box-shadow:0 2px 0 var(--key-dk)}.link-card{display:flex;flex-direction:column;gap:8px;text-decoration:none;color:inherit}.link-card:hover{color:inherit;transform:translateY(-2px);box-shadow:0 2px #1a1b1812,0 12px 22px -10px #282a1e66}.link-card strong{font-size:1.02rem;font-weight:800}.link-card span{color:var(--ink-2);font-size:.9rem}.link-card .chip{margin-top:auto;padding-top:14px}.chip{font-family:var(--mono);font-size:.78rem;font-weight:700;color:var(--ink-3);font-variant-numeric:tabular-nums}.table-wrap{overflow:hidden;overflow-x:auto;background:var(--face);border-radius:18px;box-shadow:var(--shadow-2);margin-top:26px}table{border-collapse:collapse;width:100%;font-size:.94rem;min-width:480px}th,td{text-align:start;padding:14px 20px;border-bottom:1px solid var(--line)}thead th{font-size:.84rem;font-weight:800;color:var(--ink-2);background:var(--face-2)}thead th:first-child{border-top-left-radius:18px}thead th:last-child{border-top-right-radius:18px}tbody th{font-weight:800}tbody tr:last-child td,tbody tr:last-child th{border-bottom:0}td{color:var(--ink-2)}details.faq-item{background:var(--face);border-radius:16px;box-shadow:var(--shadow-2);margin-top:12px}details.faq-item summary{cursor:pointer;list-style:none;padding:18px 22px;display:grid;grid-template-columns:1fr 26px;gap:12px;font-weight:800;align-items:center}details.faq-item summary::-webkit-details-marker{display:none}details.faq-item summary:after{content:"+";display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--page-2);font-weight:900;line-height:1}details.faq-item[open] summary:after{content:"−";background:var(--key)}details.faq-item p{color:var(--ink-2);font-size:.95rem;padding:0 22px 20px;max-width:66ch}.article{padding:26px 0 64px}.article-inner{max-width:66ch}.breadcrumbs{font-size:.86rem;font-weight:700;color:var(--ink-3);margin-bottom:18px}.breadcrumbs a{color:var(--ink-3);text-decoration:none}.breadcrumbs a:hover{color:var(--ink)}.article-meta{font-size:.84rem;color:var(--ink-3);margin-top:18px}.article-inner h2{margin:44px 0 14px}.article-inner h3{margin:30px 0 10px}.article-inner p,.article-inner ul,.article-inner ol{color:var(--ink-2);margin-bottom:17px}.article-inner li{margin-inline-start:22px;margin-bottom:8px}.article-inner strong{color:var(--ink);font-weight:800}.article-inner a{color:var(--ink);text-decoration-color:var(--key);text-decoration-thickness:3px}.article-inner code{font-family:var(--mono);font-size:.84em;background:var(--face);padding:2px 7px;border-radius:7px;color:var(--ink)}.article-inner .table-wrap{margin:24px 0}.article-inner blockquote{margin:24px 0;padding:18px 22px;border-radius:16px;background:var(--face);box-shadow:var(--shadow-2);border-inline-start:6px solid var(--key);color:var(--ink);font-weight:700}.toc{background:var(--face);border-radius:18px;padding:20px 24px;margin:28px 0 36px;box-shadow:var(--shadow-2)}.toc strong{font-size:.85rem;font-weight:800;color:var(--ink-3)}.toc ol{margin-top:10px}.toc li{margin-inline-start:20px;font-size:.93rem;color:var(--ink-2)}.toc a{color:var(--ink-2);text-decoration:none}.toc a:hover{color:var(--ink);text-decoration:underline;text-decoration-color:var(--key)}.cta-band{margin-top:48px;padding:26px;border-radius:20px;background:var(--face);box-shadow:var(--shadow-2);display:flex;gap:20px;align-items:center;flex-wrap:wrap}.cta-band p{color:var(--ink-2);flex:1 1 250px;margin:0}.site-footer{margin-top:auto;padding:30px 0 34px;font-size:.88rem;color:var(--ink-3)}.site-footer .bar{display:flex;gap:18px;flex-wrap:wrap;align-items:center;border-top:2px solid var(--frame);padding-top:22px}.site-footer a{color:var(--ink-2);text-decoration:none}.site-footer a:hover{color:var(--ink)}.site-footer .spacer{margin-inline-start:auto}.lightbox{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:18px}.lightbox[hidden]{display:none}.lightbox-backdrop{position:absolute;inset:0;background:#141610ad}.lightbox-panel{position:relative;width:min(1120px,100%);max-height:94vh;display:flex;flex-direction:column;overflow:hidden;background:var(--frame);border-radius:24px;padding:11px;box-shadow:0 24px 60px -24px #000000b3}.lb-head{display:flex;align-items:center;gap:12px;padding:6px 10px 12px}.lb-head h3{font-size:1rem;margin-inline-end:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-stage{flex:1;min-height:0;overflow:auto;padding:14px;display:grid;place-items:center;background:var(--face);border-radius:15px}.lb-foot{display:flex;gap:16px;align-items:center;flex-wrap:wrap;padding:12px 10px 4px}.lb-meta{font-size:.9rem;color:var(--ink-2);display:flex;gap:16px;flex-wrap:wrap;margin-inline-end:auto}.lb-meta b{color:var(--ink);font-family:var(--mono);font-weight:800;font-variant-numeric:tabular-nums}.lb-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.cmp{position:relative;display:grid;max-width:100%;line-height:0;cursor:ew-resize;touch-action:none;--x: 50%}.cmp img{grid-area:1 / 1;display:block;width:100%;height:auto;user-select:none;-webkit-user-drag:none}.cmp.zoom{width:max-content;max-width:none;cursor:default;touch-action:auto}.cmp.zoom img{width:auto;max-width:none}.cmp-before{clip-path:inset(0 calc(100% - var(--x)) 0 0)}.cmp-divider{position:absolute;top:0;bottom:0;left:var(--x);width:3px;background:var(--key);pointer-events:none}.cmp-divider:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:34px;height:34px;border-radius:50%;background:var(--key);box-shadow:0 2px 0 var(--key-dk),0 4px 12px -2px #0006}.cmp.zoom .cmp-divider:after{display:none}.cmp-tag{position:absolute;top:12px;font-size:.78rem;font-weight:800;padding:5px 12px;border-radius:999px;background:#141610cc;color:#fff;pointer-events:none}.cmp-tag.l{inset-inline-start:12px}.cmp-tag.r{inset-inline-end:12px}.cmp-range{width:190px;accent-color:var(--key-dk);cursor:pointer}.lb-video{display:grid;gap:12px;justify-items:center}.lb-video video{max-width:100%;max-height:62vh;background:#000;border-radius:12px}.lb-video .now{font-size:.88rem;font-weight:700;color:var(--ink-3)}@media(max-width:720px){.job{grid-template-columns:52px minmax(0,1fr)}.job-thumb{width:52px;height:42px;grid-row:auto}.job-actions{grid-row:auto;grid-column:1 / -1;justify-content:flex-start;margin-top:14px}.plot,.job-status,.bar-track,.job-note,.plot-figures{grid-column:1 / -1}.site-nav{order:3;width:100%;margin-inline-start:0}.header-tools{margin-inline-start:auto}.section{padding:42px 0}.cmp-range,.lb-meta{width:100%}}
