/* ===== THEME SYSTEM ===== */
[data-theme="dark"] {
  --bg:#09090B;--bg-up:#0F0F12;--bg-card:#141417;--bg-card-h:#1A1A1E;--surface:#1C1C20;
  --border:#27272A;--border-s:#1E1E22;
  --t1:#FAFAFA;--t2:#A1A1AA;--t3:#71717A;--t4:#52525B;
  --grid:rgba(255,255,255,0.03);--grid-dot:rgba(255,255,255,0.06);
  --stroke:#D4D4D8;--stroke-dim:rgba(212,212,216,0.15);
  --code-bg:#0C0C0F;--overlay:rgba(9,9,11,0.82);
}
[data-theme="light"] {
  --bg:#FAFAFA;--bg-up:#FFFFFF;--bg-card:#F4F4F5;--bg-card-h:#E4E4E7;--surface:#EBEBEF;
  --border:#D4D4D8;--border-s:#E4E4E7;
  --t1:#09090B;--t2:#52525B;--t3:#71717A;--t4:#A1A1AA;
  --grid:rgba(0,0,0,0.04);--grid-dot:rgba(0,0,0,0.08);
  --stroke:#27272A;--stroke-dim:rgba(39,39,42,0.12);
  --code-bg:#F0F0F3;--overlay:rgba(250,250,250,0.82);
}

/* ===== RESET ===== */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased}
body{font-family:'Noto Sans SC','Outfit',sans-serif;background:var(--bg);color:var(--t1);line-height:1.7;overflow-x:hidden;transition:background .5s,color .4s}
[data-lang="en"] body,[data-lang="en"] .ccard p,[data-lang="en"] .hero-sub,[data-lang="en"] .bcont p{font-family:'Outfit','Noto Sans SC',sans-serif}
[data-lang="ja"] body{font-family:'Noto Sans JP','Outfit',sans-serif}
[data-lang="zh-tw"] body{font-family:'Noto Sans TC','Outfit',sans-serif}
a{color:inherit;text-decoration:none}

/* ===== MATH GRID BACKGROUND ===== */
body::before{content:'';position:fixed;inset:0;z-index:0;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:60px 60px;pointer-events:none}
body::after{content:'';position:fixed;inset:0;z-index:0;background-image:radial-gradient(circle,var(--grid-dot) 1px,transparent 1px);background-size:60px 60px;background-position:30px 30px;pointer-events:none}
main,header,footer{position:relative;z-index:1}

/* ===== LAYOUT ===== */
.ctn{max-width:1140px;margin:0 auto;padding:0 28px}
.sec{padding:120px 0}

/* ===== TYPO ===== */
.disp{font-family:'Cormorant Garamond','Noto Sans SC',serif;font-weight:600;letter-spacing:-.03em;line-height:1.1}
.disp em{font-style:italic;opacity:.45}
.lbl{font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.18em;color:var(--t3)}
.mono{font-family:'JetBrains Mono',monospace}

/* ===== BUTTONS ===== */
.btn{display:inline-flex;align-items:center;gap:10px;padding:14px 32px;border-radius:2px;font-family:'Outfit','Noto Sans SC',sans-serif;font-size:14px;font-weight:500;letter-spacing:.04em;border:none;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);text-transform:uppercase}
.btn svg{width:14px;height:14px;transition:transform .3s}
.btn:hover svg{transform:translateX(3px)}
.btn--p{background:var(--t1);color:var(--bg)}
.btn--p:hover{opacity:.85;transform:translateY(-1px)}
.btn--o{background:transparent;color:var(--t2);border:1px solid var(--border)}
.btn--o:hover{color:var(--t1);border-color:var(--t3)}

.badge-c{display:inline-block;padding:2px 10px;border:1px solid var(--border);border-radius:2px;font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--t3);vertical-align:middle;margin-left:8px}

/* ===== HEADER ===== */
header{position:sticky;top:0;z-index:100;background:var(--overlay);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-bottom:1px solid var(--border-s);transition:background .5s,border-color .5s}
nav{display:flex;align-items:center;justify-content:space-between;height:60px;max-width:1140px;margin:0 auto;padding:0 28px}
.logo{font-family:'Outfit',sans-serif;font-size:18px;font-weight:600;letter-spacing:-.02em;display:flex;align-items:center;gap:10px}
.nlinks{display:flex;align-items:center;gap:28px;list-style:none}
.nlinks a{font-size:13px;color:var(--t3);transition:color .2s}
.nlinks a:hover{color:var(--t1)}
.nright{display:flex;align-items:center;gap:12px}
.nright .btn{font-size:12px;padding:8px 20px}

.thm{width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--t2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s}
.thm:hover{color:var(--t1);border-color:var(--t3)}
.thm svg{width:16px;height:16px}
[data-theme="dark"] .thm .ic-s{display:block}[data-theme="dark"] .thm .ic-m{display:none}
[data-theme="light"] .thm .ic-s{display:none}[data-theme="light"] .thm .ic-m{display:block}

/* ===== LANG SWITCHER ===== */
.lang-sw{position:relative}
.lang-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--border);border-radius:2px;background:transparent;color:var(--t3);cursor:pointer;font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;transition:all .3s;white-space:nowrap}
.lang-btn:hover{color:var(--t1);border-color:var(--t3)}
.lang-btn svg{width:12px;height:12px;transition:transform .2s}
.lang-sw.open .lang-btn svg{transform:rotate(180deg)}
.lang-btn .lang-ico{width:14px;height:14px;opacity:.6}
.lang-dd{position:absolute;top:calc(100% + 6px);right:0;min-width:160px;background:var(--bg-up);border:1px solid var(--border);padding:4px;opacity:0;visibility:hidden;transform:translateY(-4px);transition:all .2s cubic-bezier(.4,0,.2,1);z-index:200}
.lang-sw.open .lang-dd{opacity:1;visibility:visible;transform:translateY(0)}
.lang-opt{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.06em;color:var(--t3);cursor:pointer;transition:all .2s;border:none;background:none;width:100%;text-align:left}
.lang-opt:hover{background:var(--bg-card-h);color:var(--t1)}
.lang-opt.active{color:var(--t1)}
.lang-opt.active::after{content:'';display:block;width:4px;height:4px;border-radius:50%;background:var(--t1)}
.lang-opt-label{font-family:'Noto Sans SC','Noto Sans JP','Noto Sans TC','Outfit',sans-serif;font-size:12px;margin-left:10px;color:var(--t4)}

.mtog{display:none;background:none;border:none;color:var(--t1);cursor:pointer}

/* ===== HERO ===== */
.hero{position:relative;padding:140px 0 100px;overflow:hidden}
.hero-g{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}
.hero-t .lbl{margin-bottom:24px}
.hero h1{font-size:clamp(44px,5.5vw,76px);margin-bottom:28px}
.hero-sub{font-size:16px;color:var(--t2);line-height:1.9;max-width:440px;margin-bottom:40px}
.hero-act{display:flex;gap:16px;flex-wrap:wrap}
.hero-cv{position:relative;width:100%;aspect-ratio:1}
.hero-cv svg{width:100%;height:100%}

/* ===== SVG ANIMATIONS ===== */
@keyframes drawP{from{stroke-dashoffset:1000}to{stroke-dashoffset:0}}
@keyframes rotG{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes rotGR{from{transform:rotate(360deg)}to{transform:rotate(0deg)}}
@keyframes pulse{0%,100%{opacity:.15;transform:scale(1)}50%{opacity:.4;transform:scale(1.05)}}
@keyframes floatS{0%,100%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-8px) rotate(3deg)}}
@keyframes dashD{to{stroke-dashoffset:-40}}
@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}

.hero-t{animation:fadeUp .8s ease-out both}
.hero-cv{animation:fadeUp 1s ease-out .2s both}

/* ===== SHOWCASE ===== */
.show{padding:100px 0;border-top:1px solid var(--border-s);transition:border-color .5s}
.show-hd{text-align:center;margin-bottom:72px}
.show-hd h2{font-size:clamp(32px,4vw,52px);margin-top:16px;margin-bottom:16px}
.show-hd p{color:var(--t3);font-size:15px;max-width:480px;margin:0 auto}
.show-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px}
.scell{aspect-ratio:1;background:var(--bg-card);border:1px solid var(--border-s);display:flex;align-items:center;justify-content:center;padding:32px;transition:all .4s;position:relative;overflow:hidden}
.scell:hover{background:var(--bg-card-h);border-color:var(--border)}
.scell svg{width:100%;height:100%;max-width:200px;max-height:200px}
.scell .cl{position:absolute;bottom:16px;left:20px;font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--t4);letter-spacing:.12em;text-transform:uppercase}
.scell .ci{position:absolute;top:16px;right:20px;font-family:'Cormorant Garamond',serif;font-size:14px;color:var(--t4);font-style:italic}

/* ===== CAPABILITIES ===== */
.caps{border-top:1px solid var(--border-s);transition:border-color .5s}
.caps-hd{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:end;margin-bottom:64px}
.caps-hd h2{font-size:clamp(32px,4vw,48px)}
.caps-hd p{font-size:15px;color:var(--t3);line-height:1.9}
.cgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:2px}
.ccard{background:var(--bg-card);border:1px solid var(--border-s);padding:44px;transition:all .4s;position:relative}
.ccard:hover{background:var(--bg-card-h)}
.ccard::before{content:'';position:absolute;top:0;left:0;width:40px;height:1px;background:var(--t3);transition:width .5s}
.ccard:hover::before{width:100%}
.cnum{font-family:'Cormorant Garamond',serif;font-size:48px;font-weight:300;color:var(--t4);line-height:1;margin-bottom:24px;font-style:italic}
.ccard h3{font-family:'Outfit','Noto Sans SC',sans-serif;font-size:20px;font-weight:600;margin-bottom:12px}
.ccard p{font-size:14px;color:var(--t3);line-height:1.85}
.cprompt{margin-top:24px;padding:16px 20px;background:var(--bg);border:1px solid var(--border-s);font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--t4);line-height:1.7;transition:background .5s,border-color .5s}

/* ===== DEVELOPER ===== */
.dev{background:var(--bg-up);border-top:1px solid var(--border-s);border-bottom:1px solid var(--border-s);transition:all .5s}
.dev-hd{margin-bottom:56px}
.dev-hd h2{font-size:clamp(28px,3.5vw,44px);margin-top:16px}
.dev-lay{display:grid;grid-template-columns:1.2fr 1fr;gap:48px;align-items:start}
.dcode{background:var(--code-bg);border:1px solid var(--border);overflow:hidden;transition:all .5s}
.dcode-bar{padding:14px 20px;border-bottom:1px solid var(--border-s);display:flex;align-items:center;gap:8px}
.ddot{width:8px;height:8px;border-radius:50%;border:1px solid var(--border)}
.dcode-bar span:last-child{margin-left:auto;font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--t4)}
.dcode pre{padding:28px 24px;overflow-x:auto;font-family:'JetBrains Mono',monospace;font-size:13px;line-height:1.9;color:var(--t3)}
.dcode .kw{color:var(--t2)}.dcode .str{color:var(--t1);opacity:.6}.dcode .fn{color:var(--t1);opacity:.8}
.apl{display:flex;flex-direction:column;gap:12px}
.api{padding:28px;border:1px solid var(--border-s);background:var(--bg-card);transition:all .3s}
.api:hover{border-color:var(--border);background:var(--bg-card-h)}
.api h4{font-family:'Outfit','Noto Sans SC',sans-serif;font-size:15px;font-weight:600;margin-bottom:6px;display:flex;align-items:center;gap:10px}
.api p{font-size:13px;color:var(--t4);line-height:1.75}
.am{display:inline-block;padding:2px 8px;border:1px solid var(--border);font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.05em;color:var(--t3)}

/* ===== TRUST / PARTNERS ===== */
.trust{border-top:1px solid var(--border-s);border-bottom:1px solid var(--border-s);padding:56px 0;text-align:center;transition:border-color .5s}
.trust .lbl{margin-bottom:28px}
.tlogos{display:flex;align-items:center;justify-content:center;gap:56px;flex-wrap:wrap}
.tl{font-family:'Outfit',sans-serif;font-size:20px;font-weight:600;color:var(--t4);letter-spacing:-.01em}

/* ===== BLOG ===== */
.blog{border-top:1px solid var(--border-s);transition:border-color .5s}
.bcard{display:grid;grid-template-columns:1fr 1.4fr;border:1px solid var(--border-s);margin-top:48px;transition:all .3s;background:var(--bg-card)}
.bcard:hover{border-color:var(--border)}
.bimg{min-height:260px;background:var(--surface);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;transition:background .5s}
.bimg svg{width:80%;height:80%;position:absolute}
.bcont{padding:48px}
.bmeta{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--t4);letter-spacing:.06em;margin-bottom:16px}
.bcont h3{font-family:'Outfit','Noto Sans SC',sans-serif;font-size:22px;font-weight:600;line-height:1.45;margin-bottom:14px}
.bcont p{font-size:14px;color:var(--t3);line-height:1.85}

/* ===== CTA ===== */
.cta{padding:140px 0;text-align:center;position:relative;overflow:hidden}
.cta-bg{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.cta-bg svg{width:100%;height:100%}
.cta h2{font-size:clamp(36px,5vw,60px);margin-bottom:20px}
.cta p{font-size:15px;color:var(--t3);margin-bottom:40px;max-width:420px;margin-left:auto;margin-right:auto}
.cta-act{display:flex;align-items:center;justify-content:center;gap:16px}

/* ===== FOOTER ===== */
footer{background:var(--bg-up);border-top:1px solid var(--border-s);padding:56px 0 32px;transition:all .5s}
.fgrid{display:grid;grid-template-columns:1.5fr repeat(4,1fr);gap:32px;margin-bottom:48px}
.fbrand{font-size:14px;color:var(--t4);line-height:1.7}
.fbrand .logo{margin-bottom:12px}
.fcol h4{font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.14em;color:var(--t3);margin-bottom:16px}
.fcol ul{list-style:none}
.fcol li{margin-bottom:8px}
.fcol a{font-size:13px;color:var(--t4);transition:color .2s}
.fcol a:hover{color:var(--t1)}
.fbot{border-top:1px solid var(--border-s);padding-top:24px;display:flex;justify-content:space-between;align-items:center;transition:border-color .5s}
.fcopy{font-size:12px;color:var(--t4);font-family:'JetBrains Mono',monospace}
.fsoc{display:flex;gap:20px;align-items:center}
.fsoc a{color:var(--t4);transition:color .2s;display:flex;align-items:center;gap:6px;font-size:12px;font-family:'JetBrains Mono',monospace}
.fsoc a:hover{color:var(--t1)}
.fsoc svg{width:18px;height:18px}

/* ===== RESPONSIVE ===== */
@media(max-width:1024px){.fgrid{grid-template-columns:repeat(3,1fr)}.show-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:768px){.sec{padding:80px 0}.nlinks{display:none}.mtog{display:block}.hero{padding:80px 0 60px}.hero-g{grid-template-columns:1fr;gap:40px}.hero-cv{max-width:400px;margin:0 auto}.show-grid{grid-template-columns:1fr}.caps-hd{grid-template-columns:1fr;gap:20px}.cgrid{grid-template-columns:1fr}.dev-lay{grid-template-columns:1fr}.bcard{grid-template-columns:1fr}.bcont{padding:28px}.fgrid{grid-template-columns:repeat(2,1fr)}.fbrand{grid-column:1/-1}.fbot{flex-direction:column;gap:16px;text-align:center}.lang-dd{right:-20px}}
@media(max-width:480px){.hero-act{flex-direction:column}.hero-act .btn{width:100%;justify-content:center}.cta-act{flex-direction:column}.cta-act .btn{width:100%;justify-content:center}}