:root,[data-theme=light]{--bg:#FAF8F3;--s1:#F7F2EA;--s2:#EAE4DA;--ink:#19392B;--mute:#2E5D46;--line:rgba(25,57,43,.14);--green:#19392B;--on-green:#FAF8F3;--kick:#2E5D46;--gold:#4B7D63;--btn:#19392B;--btn-ink:#FAF8F3;--ok-bg:#E1ECE4;--ok-ink:#1E4A33;--inf-bg:#F3E7CF;--inf-ink:#6B4A12;--pen-bg:#E4E7EE;--pen-ink:#343C52;--shadow:0 1px 2px rgba(30,30,20,.06),0 8px 24px rgba(30,30,20,.06)}[data-theme=dark]{--bg:#161A18;--s1:#1E2320;--s2:#272D29;--ink:#E8E6DF;--mute:#A0A8A3;--line:rgba(232,230,223,.16);--green:#10231B;--on-green:#E8E6DF;--kick:#D49A86;--gold:#C79043;--btn:#E8E6DF;--btn-ink:#10231B;--ok-bg:#243A2E;--ok-ink:#9AD3B2;--inf-bg:#3A3125;--inf-ink:#E5B567;--pen-bg:#2D3340;--pen-ink:#CBD5E1;--shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.3)}:root{--fd:"Noto Serif TC","Songti TC",serif;--fb:"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;--t-xs:clamp(.75rem,.72rem + .15vw,.8125rem);--t-sm:clamp(.875rem,.84rem + .2vw,.9375rem);--t-base:clamp(1rem,.96rem + .2vw,1.0625rem);--t-lg:clamp(1.125rem,1rem + .6vw,1.375rem);--t-xl:clamp(1.5rem,1.2rem + 1.4vw,2.25rem);--t-hero:clamp(2.25rem,1rem + 4.6vw,4.5rem);--r1:4px;--r2:8px;--r3:12px;--w:1200px}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:none;scroll-padding-top:72px}body{font-family:var(--fb);font-size:var(--t-base);line-height:1.8;color:var(--ink);background:var(--bg);min-height:100dvh;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.15;background:url(/assets/hero/hero-1280.webp) top/cover no-repeat;background-image:-webkit-image-set(url(/assets/hero/hero-1280.avif) type("image/avif"),url(/assets/hero/hero-1280.webp) type("image/webp"));background-image:image-set(url(/assets/hero/hero-1280.avif) type("image/avif"),url(/assets/hero/hero-1280.webp) type("image/webp"))}@media(max-width:767px){body:before{background-image:url(/assets/hero/hero-768.webp);background-image:-webkit-image-set(url(/assets/hero/hero-768.avif) type("image/avif"),url(/assets/hero/hero-768.webp) type("image/webp"));background-image:image-set(url(/assets/hero/hero-768.avif) type("image/avif"),url(/assets/hero/hero-768.webp) type("image/webp"))}}@media(min-width:1600px){body:before{background-image:url(/assets/hero/hero-2048.webp);background-image:-webkit-image-set(url(/assets/hero/hero-2048.avif) type("image/avif"),url(/assets/hero/hero-2048.webp) type("image/webp"));background-image:image-set(url(/assets/hero/hero-2048.avif) type("image/avif"),url(/assets/hero/hero-2048.webp) type("image/webp"))}}.logo img{width:32px;height:32px;border-radius:50%}img,svg{display:block;max-width:100%;height:auto}a,button{color:inherit}button{font:inherit;background:none;border:0;cursor:pointer}h1,h2,h3{font-family:var(--fd);font-weight:600;line-height:1.3;text-wrap:balance}p{max-width:68ch;text-wrap:pretty}:focus-visible{outline:2px solid var(--kick);outline-offset:3px;border-radius:var(--r1)}.skip{position:absolute;left:-999px;top:8px;background:var(--btn);color:var(--btn-ink);padding:8px 16px;z-index:100}.skip:focus{left:8px}.wrap{max-width:var(--w);margin-inline:auto;padding-inline:clamp(20px,5vw,48px)}.kick{font-size:var(--t-xs);letter-spacing:.16em;color:var(--kick);font-weight:700;text-transform:uppercase;margin-bottom:16px}.sec{padding-block:clamp(56px,9vw,120px)}.sec.tight{padding-block:clamp(40px,6vw,72px)}.alt{background:var(--s1)}h2{font-size:var(--t-xl);margin-bottom:20px}h3{margin-bottom:8px}.lead,h3{font-size:var(--t-lg)}.lead{color:var(--mute);line-height:1.75}header.top{position:-webkit-sticky;position:sticky;top:0;z-index:50;background:color-mix(in oklab,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.bar{justify-content:space-between;gap:16px;min-height:64px}.bar,.logo{display:flex;align-items:center}.logo{min-height:44px;gap:10px;text-decoration:none;font-family:var(--fd);font-weight:700;font-size:1.125rem}nav ul{display:flex;gap:4px;list-style:none}nav a,nav ul{align-items:center}nav a{display:inline-flex;min-height:44px;padding:0 12px;text-decoration:none;font-size:var(--t-sm);color:var(--mute);border-radius:var(--r1)}nav a:hover,nav a[aria-current]{color:var(--ink)}.tools{display:flex;gap:4px}.ib,.tools{align-items:center}.ib{min-width:44px;min-height:44px;display:inline-flex;justify-content:center;border-radius:var(--r2);font-size:var(--t-sm);font-weight:600}.ib:hover{background:var(--s2)}select.ib{border:1px solid var(--line);background:var(--bg);color:var(--ink);padding:0 10px;cursor:pointer;font-family:inherit}select.ib:focus-visible{outline:2px solid var(--green);outline-offset:2px}.menu{display:none}@media(max-width:960px){.menu{display:inline-flex}.logo{font-size:1rem}.logo img{width:28px;height:28px}nav{position:absolute;left:0;right:0;top:64px;background:var(--bg);border-bottom:1px solid var(--line);display:none;padding:8px 20px 16px}nav.open{display:block}nav ul{flex-direction:column;align-items:stretch}nav a{padding:0 4px;border-bottom:1px solid var(--line)}}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 24px;border-radius:var(--r2);font-weight:600;font-size:var(--t-sm);text-decoration:none;border:1px solid transparent;transition:transform .18s,background .18s,border-color .18s}.btn.p{background:var(--btn);color:var(--btn-ink)}.btn.p:hover{transform:translateY(-1px);box-shadow:var(--shadow)}.btn.p:active{transform:none}.btn.s{border-color:var(--line);color:var(--ink)}.btn.s:hover{background:var(--s2)}.btn.l{min-height:44px;padding:0 4px;color:var(--kick);text-decoration:underline;text-underline-offset:4px}.row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.hero{padding-block:clamp(48px,8vw,104px) clamp(32px,5vw,64px)}.hero-grid{display:grid;grid-gap:clamp(32px,5vw,64px);gap:clamp(32px,5vw,64px);grid-template-columns:1.05fr .95fr;align-items:center}@media(max-width:900px){.hero-grid{grid-template-columns:1fr}}.rmk{position:relative;width:min(100%,440px);aspect-ratio:1;margin-inline:auto}.rmk-band{position:absolute;inset:0;background:url(/assets/brand/logo-icon-800.webp) 50%/contain no-repeat;opacity:0;animation:rmk-in .95s cubic-bezier(.22,1,.36,1) forwards}@keyframes rmk-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){.rmk-band{animation:none;opacity:1;transform:none}}h1{font-size:var(--t-hero);letter-spacing:-.01em;margin-bottom:24px}h1 small{display:block;font-family:var(--fb);font-size:var(--t-sm);letter-spacing:.14em;color:var(--kick);font-weight:700;margin-bottom:16px}.hero .lead{margin-bottom:32px}.hero .row{margin-bottom:12px}.hv{border-radius:var(--r3);overflow:hidden;border:1px solid var(--line);background:var(--s1);box-shadow:var(--shadow)}.hv img{display:block;width:100%;height:auto}.hv figcaption{font-size:var(--t-xs);color:var(--mute);padding:12px 16px}.hv figcaption,.three{border-top:1px solid var(--line)}.three{display:grid;grid-gap:0;gap:0;margin-top:40px}.three article{display:grid;grid-template-columns:72px 1fr 1.2fr;grid-gap:24px;gap:24px;padding:28px 0;border-bottom:1px solid var(--line);align-items:baseline}.three .n{font-family:var(--fd);font-size:var(--t-xl);color:var(--gold)}@media(max-width:760px){.three article{grid-template-columns:48px 1fr}.three article p{grid-column:2}}.split{display:grid;grid-template-columns:1fr 1.2fr;grid-gap:clamp(24px,5vw,72px);gap:clamp(24px,5vw,72px)}@media(max-width:860px){.split{grid-template-columns:1fr}}.layers{display:grid;grid-gap:16px;gap:16px;margin-top:32px}.layer{padding:20px 0;border-top:1px solid var(--line)}.layer b{font-family:var(--fd);font-size:var(--t-lg)}.cards{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:16px;gap:16px;margin-top:40px}@media(max-width:700px){.cards{grid-template-columns:1fr}}.card{border:1px solid var(--line);border-radius:var(--r2);padding:28px;display:flex;flex-direction:column;gap:8px}.alt .card,.card{background:var(--bg)}.card p{color:var(--mute);font-size:var(--t-sm)}.card .for{font-size:var(--t-xs);color:var(--kick);font-weight:700;margin-top:auto;padding-top:8px}.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:32px}.tag{font-size:var(--t-xs);padding:6px 12px;border:1px solid var(--line);border-radius:999px;color:var(--mute)}.demo{background:var(--bg);border:1px solid var(--line);border-radius:var(--r3);box-shadow:var(--shadow);overflow:hidden;margin-top:40px}.steps{display:flex;border-bottom:1px solid var(--line);overflow-x:auto}.steps button{flex:1 1;min-width:150px;min-height:56px;padding:0 16px;font-size:var(--t-sm);font-weight:600;color:var(--mute);border-bottom:3px solid transparent;text-align:left}.steps button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--kick);background:var(--s1)}.pane{padding:clamp(20px,3vw,32px);min-height:320px}.pane[hidden]{display:none}.raw{font-family:ui-monospace,Menlo,monospace;font-size:var(--t-sm);background:var(--s1);padding:20px;border-radius:var(--r2);line-height:1.9;border:1px dashed var(--line)}.ing{list-style:none;display:grid;grid-gap:10px;gap:10px}.ing li{display:grid;grid-template-columns:minmax(120px,1fr) auto;grid-gap:8px 16px;gap:8px 16px;padding:12px 0;border-bottom:1px solid var(--line);align-items:start}.ing li p{grid-column:1/-1;font-size:var(--t-sm);color:var(--mute)}.bd{font-size:var(--t-xs);font-weight:700;padding:4px 10px;border-radius:999px;white-space:nowrap}.bd.ok{background:var(--ok-bg);color:var(--ok-ink)}.bd.inf{background:var(--inf-bg);color:var(--inf-ink)}.bd.pen{background:var(--pen-bg);color:var(--pen-ink)}.meta{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:1px;gap:1px;background:var(--line);border-top:1px solid var(--line)}@media(max-width:800px){.meta{grid-template-columns:1fr 1fr}}.meta div{background:var(--s1);padding:16px 20px;color:var(--mute)}.meta b,.meta div{font-size:var(--t-xs)}.meta b{display:block;color:var(--ink);letter-spacing:.08em;margin-bottom:4px}.tw{overflow-x:auto;margin-top:32px;border:1px solid var(--line);border-radius:var(--r2)}table{border-collapse:collapse;width:100%;min-width:640px;font-size:var(--t-sm)}td,th{text-align:left;padding:16px 20px;border-bottom:1px solid var(--line);vertical-align:top}th{background:var(--s1);font-weight:700}tr:last-child td{border-bottom:0}td:first-child{font-weight:700;white-space:nowrap}.engine{margin-top:24px;padding:20px 24px;border-radius:var(--r2);background:var(--green);color:var(--on-green)}.engine b{font-family:var(--fd)}.trust{list-style:none;display:grid;grid-gap:0;gap:0;margin-top:24px}.trust li{padding:16px 0;border-top:1px solid var(--line)}.trust b{display:block;font-family:var(--fd)}.metrics,.trust span{color:var(--mute);font-size:var(--t-sm)}.metrics{margin-top:32px;padding:20px;border:1px dashed var(--line);border-radius:var(--r2)}.metrics dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:16px;gap:16px}.metrics dt{font-size:var(--t-xs)}.metrics dd{font-family:var(--fd);font-size:var(--t-xl);color:var(--ink)}.metrics small{display:block;font-size:var(--t-xs)}.cta{background:var(--green);color:var(--on-green);text-align:left}.cta h2{font-size:var(--t-xl);max-width:20ch}.cta .lead{color:color-mix(in oklab,var(--on-green) 78%,transparent);margin-bottom:28px}.cta .btn.p{background:var(--on-green);color:var(--green)}.cta .btn.s{border-color:rgba(247,245,240,.4);color:var(--on-green)}.cta .btn.s:hover{background:rgba(247,245,240,.1)}footer{padding-block:48px;font-size:var(--t-sm);color:var(--mute);border-top:1px solid var(--line)}.fg{display:grid;grid-template-columns:1.4fr 1fr;grid-gap:32px;gap:32px}@media(max-width:760px){.fg{grid-template-columns:1fr}}footer .q{font-family:var(--fd);color:var(--ink);font-size:var(--t-base);margin-bottom:8px}footer a{display:inline-flex;min-height:44px;align-items:center}.tech{display:none}.tech:target{display:block}.tech ul{margin:16px 0 0 20px;color:var(--mute)}.rv{opacity:0;transform:translateY(12px);transition:opacity .6s,transform .6s}.rv.in{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.rv{opacity:1;transform:none}html{scroll-behavior:auto}}.crumbs{font-size:var(--t-xs);color:var(--mute);margin-bottom:18px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}.crumbs a{text-decoration:none;border-bottom:1px solid transparent}.crumbs a:hover{border-bottom-color:var(--c5,#9DB9A3)}.crumbs [aria-hidden]{color:var(--c5-mist,#9DB9A3)}.pill{display:inline-block;font-size:var(--t-xs);letter-spacing:.08em;color:var(--c2,#2E5D46);background:var(--s1);border:1px solid var(--line);border-radius:999px;padding:2px 10px;margin-bottom:14px}.answer{font-size:var(--t-lg);line-height:1.75;color:var(--ink);border-left:3px solid var(--c5-mist,#9db9a3);padding-left:18px;margin:18px 0 24px;max-width:52em}.cta-row{margin:8px 0 24px}.service-grid{display:grid;grid-gap:20px;gap:20px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin:28px 0 8px}.service-card{background:var(--bg);border:1px solid var(--line);border-radius:var(--r3);padding:26px;display:flex;flex-direction:column;gap:10px}.service-card h2{font-size:var(--t-lg);line-height:1.4;margin:0}.service-card h2 a{text-decoration:none}.service-card h2 a:hover{border-bottom:1px solid var(--c5-mist,#9db9a3)}.service-card p{color:var(--mute);font-size:var(--t-sm);line-height:1.8}.more{font-size:var(--t-sm);color:var(--c2,#2E5D46);text-decoration:none;border-bottom:1px solid var(--c5-mist,#9db9a3)}.steps{list-style:none;counter-reset:s;display:grid;grid-gap:0;gap:0;margin:16px 0 28px;border-top:1px solid var(--line)}.steps li{counter-increment:s;display:grid;grid-template-columns:56px 1fr;grid-gap:16px;gap:16px;padding:18px 0;border-bottom:1px solid var(--line)}.steps li:before{content:counter(s,decimal-leading-zero);font-family:var(--fd);color:var(--gold);font-size:var(--t-lg)}.steps b{display:block;margin-bottom:4px}.steps p{color:var(--mute);font-size:var(--t-sm)}.plainlist{margin:12px 0 20px 20px;display:grid;grid-gap:8px;gap:8px;color:var(--mute)}.plainlist li{padding-left:2px}.boundary{background:var(--s1);border:1px solid var(--line);border-left:3px solid var(--c3,#4b7d63);border-radius:var(--r2);padding:16px 18px;font-size:var(--t-sm);color:var(--mute);margin:20px 0}.faq{margin:8px 0 24px;max-width:54em}.faq h2{margin-bottom:14px}.faq details{border-bottom:1px solid var(--line);padding:14px 0}.faq summary{cursor:pointer;font-weight:600;list-style:none;display:flex;justify-content:space-between;gap:12px}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";color:var(--c4,#719D80);font-weight:400}.faq details[open] summary:after{content:"−"}.faq details p{margin-top:10px;color:var(--mute);font-size:var(--t-sm)}.split-2{display:grid;grid-gap:clamp(24px,4vw,56px);gap:clamp(24px,4vw,56px);grid-template-columns:1fr 1fr}.split-2 h2{font-size:var(--t-lg);margin-bottom:10px}.split-2 p{color:var(--mute)}.term-list{list-style:none;display:grid;grid-gap:0;gap:0;margin:24px 0;border-top:1px solid var(--line)}.term-list li{padding:18px 0;border-bottom:1px solid var(--line)}.term-list b a{text-decoration:none;border-bottom:1px solid var(--c5-mist,#9db9a3)}.term-list p{color:var(--mute);font-size:var(--t-sm);margin-top:6px}.method-block{margin:26px 0;padding-top:22px;border-top:1px solid var(--line)}.method-block h2{font-size:var(--t-lg);margin-bottom:10px}.updated{font-size:var(--t-xs);color:var(--mute);margin-top:32px;letter-spacing:.04em}footer .fg{display:grid;grid-template-columns:1.4fr 1fr;grid-gap:32px;gap:32px;padding-block:40px}@media(max-width:860px){.split-2,footer .fg{grid-template-columns:1fr}}.prose{max-width:54em;margin:18px 0 28px}.prose p{margin-bottom:14px;color:var(--ink)}.date{display:block;font-size:var(--t-xs);letter-spacing:.06em;margin-bottom:4px}.date,.muted{color:var(--mute)}.muted{font-size:var(--t-sm)}a.btn{display:inline-flex;align-items:center;gap:6px;text-decoration:none}.fg-links{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:var(--t-sm);margin:8px 0 4px}.fg-links a{text-decoration:none;border-bottom:1px solid transparent}.fg-links a:hover{border-bottom-color:var(--c5-mist,#9DB9A3)}