:root{--bg:#f0f0f0;--grid:#eaeaea;--card:#fff;--text:#1d1d1f;--text-2:#55555a;--text-3:#8a8a8f;--line:#e2e2e5;--accent:#1b58a1;--accent-soft:#eaf1fa;--dark:#141416;--dark-2:#1f2025;--font:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI","PingFang SC","HarmonyOS Sans SC","MiSans","Hiragino Sans GB","Microsoft YaHei UI","Microsoft YaHei",sans-serif;--font-num:"SF Pro Display","Segoe UI",-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei UI",sans-serif;--font-mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;--fs-display:clamp(31px,4.1vw,56px);--fs-h2:clamp(30px,3.3vw,44px);--fs-h3:21px;--fs-lead:18px;--fs-body:16px;--fs-small:15px;--fs-meta:13px;--fs-tiny:12px;--radius:20px;--shadow:0 1px 2px #0000000a,0 6px 20px #0000000a}*{box-sizing:border-box;margin:0;padding:0}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}html{scroll-padding-top:72px}body{background-color:var(--bg);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);color:var(--text);font-family:var(--font);font-size:var(--fs-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-size:40px 40px;background-attachment:fixed;line-height:1.75}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}.wrap{max-width:1280px;margin:0 auto;padding:0 40px}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.todo{color:var(--text-3)}.placeholder{width:100%;height:100%;color:var(--text-3);font-size:var(--fs-meta);background:repeating-linear-gradient(135deg,#f2f3f5 0 12px,#eceef1 12px 24px);justify-content:center;align-items:center;display:flex}.nav{z-index:20;-webkit-backdrop-filter:saturate(180%)blur(14px);border-bottom:1px solid var(--line);background:#f0f0f0d1;position:sticky;top:0}.nav .wrap{justify-content:space-between;align-items:center;gap:16px;height:60px;display:flex}.logo img{mix-blend-mode:multiply;width:auto;height:26px}.links{color:var(--text-2);gap:28px;font-size:14px;display:flex}.links a:hover{color:var(--text)}.lang{border:1px solid var(--line);background:var(--card);height:32px;font-size:var(--fs-meta);color:var(--text-2);border-radius:999px;align-items:center;padding:0 14px;display:inline-flex}.lang:hover{color:var(--text);border-color:#c8c8cc}.btn{height:46px;font-size:var(--fs-small);white-space:nowrap;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 24px;font-weight:500;transition:background .2s,border-color .2s;display:inline-flex}.btn-dark{background:var(--dark);color:#fff}.btn-dark:hover{background:#000}.btn-line{background:var(--card);border-color:var(--line);color:var(--text)}.btn-line:hover{border-color:#c8c8cc}.hero{padding:80px 0 56px}.hero-grid{grid-template-columns:1.3fr .85fr;align-items:center;gap:72px;display:grid}.hello{font-size:var(--fs-small);color:var(--text-2);align-items:flex-start;gap:10px;max-width:560px;margin-bottom:28px;display:flex}.hello i{background:#2e7d4f;border-radius:50%;flex:none;width:8px;height:8px;margin-top:9px}h1{font-size:var(--fs-display);letter-spacing:-.02em;margin-bottom:30px;font-weight:700;line-height:1.14}html[lang=en] h1{letter-spacing:-.03em;line-height:1.08}.hl{color:var(--accent);background:linear-gradient(#0000 88%,#1b58a147 88%)}.intro{font-size:var(--fs-lead);color:var(--text-2);max-width:34em;margin-bottom:18px;line-height:1.8}.creds{font-size:var(--fs-meta);color:var(--text-2);letter-spacing:.01em;margin-bottom:36px}.creds .sep{color:var(--text-3);margin:0 6px}.actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.frame{background:var(--card);box-shadow:var(--shadow);border-radius:24px;padding:12px}.frame .ph{aspect-ratio:4/5;background:#ddd;border-radius:14px;overflow:hidden}.frame .ph img{object-fit:cover;object-position:50% 30%;width:100%;height:100%}.strip{border-top:1px solid #d9d9dc;border-bottom:1px solid #d9d9dc;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 24px;margin-top:72px;padding:22px 0;display:flex}.strip .group{flex-wrap:wrap;align-items:baseline;gap:12px 28px;display:flex}.strip .group:last-child{margin-left:auto}.strip .lbl{font-size:var(--fs-meta);color:var(--text-3)}.strip .it{font-size:var(--fs-meta);color:var(--text-2);align-items:baseline;gap:6px;display:flex}.strip .it b{color:var(--text);font-size:22px;font-weight:600}.strip .gh{font-size:var(--fs-meta);color:var(--text);border-bottom:1px solid var(--text);padding-bottom:1px;font-weight:500}section{padding:152px 0 0}#works{padding-top:96px}.sec-head{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:44px;display:flex}.kicker{font-family:var(--font-num);font-size:var(--fs-tiny);letter-spacing:.08em;color:var(--accent);text-transform:uppercase;margin-bottom:12px;font-weight:600;display:inline-block}.sec-head h2{font-size:var(--fs-h2);letter-spacing:-.015em;font-weight:700;line-height:1.25}.sec-head p{font-size:var(--fs-body);color:var(--text-2);margin-top:10px}.sec-head .more{color:var(--accent);white-space:nowrap;font-size:14px;font-weight:500}.sub{font-size:var(--fs-small);color:var(--text);flex-wrap:wrap;align-items:baseline;gap:10px;margin:44px 0 16px;font-weight:600;display:flex}.sub span{color:var(--text-3);font-weight:400;font-size:var(--fs-meta)}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow)}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{font-size:var(--fs-tiny);background:var(--accent-soft);color:var(--accent);border-radius:8px;padding:3px 9px;font-weight:500}.meta{font-size:var(--fs-meta);color:var(--text-3)}.play{background:#fffffff0;border-radius:50%;justify-content:center;align-items:center;width:60px;height:60px;display:flex}.play:after{content:"";border-left:17px solid var(--dark);border-top:11px solid #0000;border-bottom:11px solid #0000;margin-left:5px}.repos{grid-template-columns:repeat(2,minmax(0,1fr));padding:6px 24px;display:grid}.repo{border-bottom:1px solid var(--line);grid-template-columns:136px minmax(0,1fr);align-items:start;gap:18px;padding:20px 4px;display:grid}.repo-thumb{aspect-ratio:4/3;box-shadow:0 0 0 1px var(--line);background:#f4f6fa;border-radius:10px;display:block;overflow:hidden}.repo-thumb img{object-fit:cover;width:100%;height:100%;transition:transform .5s cubic-bezier(.16,1,.3,1)}.repo:hover .repo-thumb img{transform:scale(1.05)}.repo-body{flex-direction:column;gap:6px;min-width:0;display:flex}.repo:nth-last-child(-n+2){border-bottom:0}.repo:nth-child(odd){padding-right:28px}.repo:nth-child(2n){border-left:1px solid var(--line);padding-left:28px}.repo .name{font-family:var(--font-mono);color:var(--text);justify-content:space-between;align-items:center;gap:10px;font-size:14px;font-weight:600;display:flex}.repo .name i{color:var(--text-3);font-style:normal;transition:color .2s,transform .2s}.repo:hover .name i{color:var(--accent);transform:translate(2px,-2px)}.repo p{color:var(--text-2);font-size:14px;line-height:1.65}.workflows{font-size:var(--fs-meta);color:var(--text-2);margin-top:14px}.showcase{grid-template-columns:minmax(0,1.8fr) minmax(0,1fr);gap:16px;margin-top:20px;display:grid}.sc-main{flex-direction:column;gap:22px;padding:16px;display:flex}.sc-canvas{background:#f4f4f6;border-radius:16px;grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:22px;padding:26px 28px 30px;display:grid}.sc-phone{flex-direction:column;gap:10px;margin:0;transition:transform .5s cubic-bezier(.16,1,.3,1);display:flex}.sc-phone figcaption{font-size:var(--fs-tiny);color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;font-weight:600;transition:color .3s;overflow:hidden}.sc-phone.on{transform:translateY(-6px)}.sc-phone.on figcaption{color:var(--accent)}.sc-device{outline-offset:2px;background:#fff;border-radius:26px;outline:1.5px solid #0000;padding:5px;transition:outline-color .3s,box-shadow .3s;box-shadow:0 1px 2px #0000000d,0 10px 28px #00000014}.sc-phone.on .sc-device{outline-color:var(--accent);box-shadow:0 0 0 6px #1b58a11a,0 18px 40px #0000001f}.sc-viewport{aspect-ratio:390/760;background:#fdf8f3;border-radius:21px;position:relative;overflow:hidden}.sc-long{will-change:transform;width:100%;height:auto;transition:transform 1.6s cubic-bezier(.65,0,.35,1)}.sc-nav{width:100%;height:auto;position:absolute;bottom:0;left:0;right:0}.sc-info{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);align-items:start;gap:28px;padding:12px 12px 0;display:grid}.sc-badge{font-size:var(--fs-tiny);color:var(--accent);background:var(--accent-soft);border-radius:999px;margin-bottom:10px;padding:3px 10px;font-weight:600;display:inline-block}.sc-info h3{letter-spacing:-.01em;font-size:28px;font-weight:700;line-height:1.2}.sc-info h3 small{font-size:var(--fs-small);color:var(--text-2);letter-spacing:0;margin-top:6px;font-weight:500;display:block}.sc-desc{font-size:var(--fs-small);color:var(--text-2);margin-top:12px;line-height:1.7}.sc-points{flex-direction:column;gap:12px;padding-top:4px;list-style:none;display:flex}.sc-points li{border-left:2px solid var(--accent-soft);flex-direction:column;gap:2px;padding-left:14px;display:flex}.sc-points b{font-size:var(--fs-small);font-weight:600}.sc-points span{font-size:var(--fs-meta);color:var(--text-2);line-height:1.6}.sc-chat{background:#fffcf8;flex-direction:column;min-height:600px;padding:0;display:flex;overflow:hidden}.sc-head{background:#fff;border-bottom:1px solid #f0e9e1;align-items:center;gap:10px;padding:14px 16px;display:flex}.sc-avatar{border-radius:9px;width:30px;height:30px}.sc-title{flex-direction:column;line-height:1.3;display:flex}.sc-title b{font-size:var(--fs-small);font-weight:600}.sc-title span{color:var(--text-3);font-size:11px}.sc-tag{color:var(--text-3);border:1px solid var(--line);border-radius:6px;margin-left:auto;padding:0 7px;font-size:11px}.sc-body{contain:size;scroll-behavior:smooth;scrollbar-width:none;flex-direction:column;flex:1 1 0;gap:10px;min-height:0;padding:16px 14px;display:flex;overflow-y:auto}.sc-body::-webkit-scrollbar{display:none}.sc-body>div,.cards>div,.msg.bot>div:not(.b-p){opacity:0;transition:opacity .35s,transform .35s;transform:translateY(6px)}.sc-body>div.in,.cards>div.in,.msg.bot>div.in{opacity:1;transform:none}.msg{border-radius:16px;flex:none;max-width:90%;padding:10px 13px;font-size:14px;line-height:1.65}.msg.user{color:#fff;background:#7b5cfa;border-bottom-right-radius:5px;align-self:flex-end}.msg.user.photo{flex-direction:column;align-items:center;gap:4px;padding:6px;font-size:12px;display:flex}.msg.user.photo img{border-radius:11px;width:150px}.msg.bot{color:#2d2a3e;background:#efe9ff;border-bottom-left-radius:5px;flex-direction:column;align-self:flex-start;gap:5px;display:flex}.msg.bot.dots{flex-direction:row;gap:4px;padding:13px 14px}.msg.bot.dots i{background:#9c88f7;border-radius:50%;width:6px;height:6px;animation:1s ease-in-out infinite dot}.msg.bot.dots i:nth-child(2){animation-delay:.15s}.msg.bot.dots i:nth-child(3){animation-delay:.3s}@keyframes dot{0%,80%,to{opacity:.3}40%{opacity:1}}.b-p.typing:after{content:"";vertical-align:-2px;background:#7b5cfa;width:2px;height:1em;margin-left:2px;animation:.8s step-end infinite caret;display:inline-block}@keyframes caret{50%{opacity:0}}.b-h{margin-top:4px;font-size:13px;font-weight:600}.b-li{padding-left:12px;font-size:13px;position:relative}.b-li:before{content:"";background:#7b5cfa;border-radius:50%;width:4px;height:4px;position:absolute;top:9px;left:2px}.b-li b{font-weight:600}.b-ol{gap:8px;font-size:13px;display:flex}.b-ol em{color:#7b5cfa;flex:none;font-style:normal;font-weight:600}.b-src{color:#6b6585;margin-top:4px;font-size:12px}.step{color:var(--text-2);background:#fff;border:1px solid #eee7de;border-radius:999px;flex:none;align-self:flex-start;align-items:center;gap:10px;padding:4px 11px;font-size:12px;display:flex}.step span{align-items:center;gap:7px;display:flex}.step span:before{content:"";background:#2e7d4f;border-radius:50%;flex:none;width:6px;height:6px}.step em{color:var(--text-3);font-style:normal;font-family:var(--font-num);font-size:11px}.cards{flex-direction:column;flex:none;gap:6px;width:90%;display:flex}.b-card{background:#fff;border:1px solid #f0e9e1;border-radius:12px;align-items:center;gap:10px;padding:8px 10px;display:flex}.b-card i{background:#f6f2ec;border-radius:9px;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;font-style:normal;display:flex}.b-card b{font-size:13px;font-weight:600;display:block}.b-card span{color:var(--text-3);font-size:11px}.b-btn{text-align:center;color:#fff;background:#6d4af5;border-radius:999px;padding:8px;font-size:13px;font-weight:600}.sc-foot{background:#fff;border-top:1px solid #f0e9e1;flex-direction:column;gap:10px;padding:12px 14px;display:flex}.sc-chips{flex-wrap:wrap;gap:6px;display:flex}.sc-chip{font:inherit;font-size:var(--fs-tiny);color:#5b4fa8;cursor:pointer;background:#f4f0ff;border:1px solid #0000;border-radius:999px;padding:4px 11px;transition:all .2s}.sc-chip:hover{border-color:#cfc3fa}.sc-chip.on{color:#fff;background:#7b5cfa}.sc-input{font-size:var(--fs-meta);color:var(--text-3);background:#fffcf8;border:1px solid #eee7de;border-radius:999px;justify-content:space-between;align-items:center;padding:8px 8px 8px 14px;display:flex}.sc-input i{color:#fff;background:#7b5cfa;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-style:normal;display:flex}.sc-note{color:var(--text-3);text-align:center;font-size:11px}.lab{grid-template-columns:minmax(0,1fr);gap:16px;display:grid}.lab-row{grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);align-items:center;gap:32px;padding:18px;display:grid}.lab-body{flex-direction:column;gap:10px;padding:6px 12px 6px 0;display:flex}.lab-body h4{letter-spacing:-.01em;flex-wrap:wrap;align-items:baseline;gap:10px;font-size:22px;font-weight:700;line-height:1.35;display:flex}.lab-body h4 small{font-size:var(--fs-meta);color:var(--text-3);font-weight:500}.lab-desc{font-size:var(--fs-body);color:var(--text);margin-bottom:4px;font-weight:500;line-height:1.65}.lab-why{font-size:var(--fs-small);color:var(--text-2);line-height:1.7}.lab-why b{color:var(--accent);font-weight:600;font-size:var(--fs-meta);margin-right:8px}.lab-points{flex-direction:column;gap:7px;list-style:none;display:flex}.lab-points li{font-size:var(--fs-small);color:var(--text-2);padding-left:14px;line-height:1.6;position:relative}.lab-points b{color:var(--text);margin-right:6px;font-weight:600}.lab-points li:before{content:"";background:#c2c6cc;border-radius:50%;width:5px;height:5px;position:absolute;top:10px;left:0}.lab-foot{align-items:center;gap:14px;margin-top:4px;display:flex}.status{color:var(--text-3);border:1px solid var(--line);border-radius:6px;padding:0 7px;font-size:11px}.lab-link{font-size:var(--fs-meta);color:var(--accent);font-weight:500}.lab-value{font-size:var(--fs-small);color:var(--text);background:var(--accent-soft);border-radius:10px;padding:10px 14px;line-height:1.7}.lab-value b{color:var(--accent);font-weight:600;font-size:var(--fs-meta);margin-right:8px}.sc-why{font-size:var(--fs-small);color:var(--text-2);margin-top:10px;line-height:1.7}.sc-why b{color:var(--accent);font-weight:600;font-size:var(--fs-meta);margin-right:8px}.fan{aspect-ratio:16/11;perspective:1100px;background:linear-gradient(135deg,#eef1f5,#e3e7ed);border-radius:14px;position:relative;overflow:hidden}.fan .placeholder{position:absolute;inset:0}.fan img{border-radius:8px;width:84%;height:auto;transition:transform .6s cubic-bezier(.16,1,.3,1),opacity .4s;position:absolute;top:13%;left:7%;box-shadow:0 2px 6px #0000000f,0 12px 28px #00000024}.fan img:first-child{z-index:3}.fan img:nth-child(2){z-index:2;opacity:.92;transform:translate(5%,-8%)scale(.95)}.fan img:nth-child(3){z-index:1;opacity:.78;transform:translate(10%,-16%)scale(.9)}.fan.single img{width:88%;top:9%;left:6%}.fan.video{perspective:none;justify-content:center;align-items:center;display:flex}.fan.video video{background:#fff;border-radius:10px;width:92%;height:auto;display:block;box-shadow:0 2px 6px #0000000f,0 12px 28px #0000001f}.sys-card:hover .fan:not(.single) img:first-child,.lab-row:hover .fan:not(.single) img:first-child{opacity:1;z-index:4;transform:translateY(3%)scale(.84)}.sys-card:hover .fan:not(.single) img:nth-child(2),.lab-row:hover .fan:not(.single) img:nth-child(2){opacity:1;transform:translate(-30%,8%)rotateY(16deg)scale(.72)}.sys-card:hover .fan:not(.single) img:nth-child(3),.lab-row:hover .fan:not(.single) img:nth-child(3){opacity:1;transform:translate(30%,8%)rotateY(-16deg)scale(.72)}@media (hover:none){.fan:not(.single) img:first-child{opacity:1;z-index:4;transform:translateY(4%)scale(.78)}.fan:not(.single) img:nth-child(2){opacity:1;transform:translate(-31%,9%)rotateY(20deg)scale(.7)}.fan:not(.single) img:nth-child(3){opacity:1;transform:translate(31%,9%)rotateY(-20deg)scale(.7)}}.cases{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.case{flex-direction:column;display:flex;overflow:hidden}.case-media{aspect-ratio:4/3;background:#e9eaec;overflow:hidden}.case-media img{object-fit:cover;width:100%;height:100%;transition:transform .6s cubic-bezier(.16,1,.3,1)}.case:hover .case-media img{transform:scale(1.04)}.case-body{flex-direction:column;flex:1;gap:10px;padding:22px 24px 24px;display:flex}.case-body h3{letter-spacing:-.01em;font-size:19px;font-weight:700;line-height:1.45}.case-body p{font-size:var(--fs-small);color:var(--text-2);line-height:1.75}.case-stats{border-top:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:auto;padding-top:16px;display:grid}.case-stats dt{font-family:var(--font-num);color:var(--accent);white-space:nowrap;font-size:20px;font-weight:700;line-height:1.2}.case-stats dd{font-size:var(--fs-tiny);color:var(--text-3);margin-top:4px;line-height:1.4}.flag{background:radial-gradient(90% 60% at 80% 0%,#22324f 0%,var(--dark) 65%);color:#f2f2f4;border-radius:24px;padding:48px 48px 40px;overflow:hidden}.flag-head{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:56px;margin-bottom:40px;display:grid}.flag .txt{flex-direction:column;gap:16px;display:flex}.flag .badge{font-size:var(--fs-tiny);color:#9ec3f0;background:#9ec3f01f;border-radius:999px;margin-bottom:20px;padding:4px 12px;font-weight:600;display:inline-block}.flag h3{letter-spacing:-.02em;font-size:40px;font-weight:700;line-height:1.15}.flag h3 small{font-size:var(--fs-lead);color:#9ec3f0;letter-spacing:0;margin-top:10px;font-weight:500;display:block}.flag .desc{font-size:var(--fs-body);color:#c9c9ce;line-height:1.8}.flag dl{font-size:var(--fs-small);flex-direction:column;gap:16px;padding-top:8px;display:flex}.flag dl>div{border-top:1px solid #2e2f35;grid-template-columns:76px minmax(0,1fr);gap:14px;padding-top:16px;display:grid}.flag dl>div:first-child{border-top:0;padding-top:0}html[lang=en] .flag dl>div{grid-template-columns:86px minmax(0,1fr)}.flag dt{color:#8d8d93;font-weight:500}.flag dd{color:#c9c9ce;line-height:1.75}.flag dd ol{counter-reset:k;flex-direction:column;gap:6px;list-style:none;display:flex}.flag dd li{counter-increment:k;padding-left:24px;position:relative}.flag dd li:before{content:counter(k);color:#9ec3f0;width:16px;height:16px;font-size:10.5px;font-weight:600;font-family:var(--font-num);background:#9ec3f029;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:4px;left:0}.principles{grid-template-columns:repeat(2,1fr);gap:20px;display:grid}.pr{padding:30px 32px}.pr .no{font-family:var(--font-num);font-size:var(--fs-meta);color:var(--accent);margin-bottom:10px;font-weight:600}.pr h3{font-size:var(--fs-h3);margin-bottom:14px;font-weight:600;line-height:1.4}.pr ul{flex-direction:column;gap:7px;list-style:none;display:flex}.pr li{font-size:var(--fs-small);color:var(--text-2);padding-left:16px;line-height:1.65;position:relative}.pr li:before{content:"";background:#c2c6cc;border-radius:50%;width:5px;height:5px;position:absolute;top:10px;left:0}.pr-why{font-size:var(--fs-small);color:var(--text);margin:-4px 0 14px;line-height:1.7}.think{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.think.three{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:20px}.think.first{margin-top:0}.think.four{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:20px}.think.four .th{padding:24px}.think.four .th h3{font-size:17px}.th-list{counter-reset:n;border-top:1px solid var(--line);flex-direction:column;margin-top:auto;list-style:none;display:flex}.th-list li{counter-increment:n;border-bottom:1px solid var(--line)}.th-list a{color:var(--text);align-items:baseline;gap:10px;padding:9px 0;font-size:14px;line-height:1.5;transition:color .2s;display:flex}.th-list a:before{content:counter(n);font-family:var(--font-num);color:var(--accent);min-width:12px;font-size:12px;font-weight:600}.th-list .th-t{flex:1;min-width:0}.th-list .th-arr{color:var(--accent);flex:none;font-style:normal}.th-list a:hover{color:var(--accent)}.th{flex-direction:column;gap:10px;padding:28px;display:flex}.th h3{font-size:18px;font-weight:600;line-height:1.45}.th p{color:var(--text-2);font-size:14px;line-height:1.75}.th.link{transition:transform .25s cubic-bezier(.16,1,.3,1),box-shadow .25s}.th.link:hover{transform:translateY(-2px);box-shadow:0 2px 4px #0000000a,0 14px 32px #00000014}.th-go{color:var(--accent);margin-top:auto;padding-top:4px;font-size:14px;font-weight:500}.life{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);align-items:center;gap:36px;padding:32px;display:grid}.life .quote{letter-spacing:-.01em;margin-bottom:12px;font-size:24px;font-weight:600;line-height:1.45}.life p{font-size:var(--fs-small);color:var(--text-2);margin-bottom:20px}.life .nums{flex-wrap:wrap;gap:28px;display:flex}.life .nums div{flex-direction:column;display:flex}.life .nums b{font-size:24px;font-weight:600}.life .nums span{font-size:var(--fs-tiny);color:var(--text-3)}.photos{grid-template-rows:1fr 1fr;grid-template-columns:1.3fr 1fr 1fr;gap:10px;height:340px;display:grid}.photos div:first-child{grid-row:span 2}.photos div{background:#ddd;border-radius:14px;overflow:hidden}.photos img{object-fit:cover;width:100%;height:100%}.post{max-width:760px;margin:0 auto;padding:72px 32px 40px}.post-head{border-bottom:1px solid #d9d9dc;margin-bottom:36px;padding-bottom:32px}.post-head h1{letter-spacing:-.02em;margin:4px 0 18px;font-size:clamp(30px,4vw,44px);line-height:1.25}.post-lead{font-size:var(--fs-lead);color:var(--text-2);line-height:1.8}.post-meta{font-size:var(--fs-meta);color:var(--text-3);margin-top:18px}.prose{color:#3a3a3f;font-size:17px;line-height:1.95}.prose p{margin:0 0 1.45em}.prose h2{letter-spacing:-.01em;color:var(--text);margin:2.6em 0 .9em;scroll-margin-top:100px;font-size:24px;font-weight:700;line-height:1.4}.prose h2:before{content:"";background:var(--accent);border-radius:2px;width:32px;height:3px;margin-bottom:16px;display:block}.prose strong{color:#174a8b;background:linear-gradient(#0000 60%,#1b58a11a 60%);font-weight:600}.prose p.lead>strong:first-child{color:var(--text);border-left:3px solid var(--accent);background:0 0;margin-bottom:.35em;padding-left:12px;font-size:17.5px;line-height:1.6;display:block}.prose p.key{color:var(--text);background:#eef3fa;border-radius:12px;margin:1.6em 0 1.8em;padding:18px 22px}.prose p.key strong{background:0 0}.prose ul,.prose ol{margin:0 0 1.3em;padding-left:1.4em}.prose li{margin:.45em 0}.prose li::marker{color:var(--accent)}.prose blockquote{background:var(--card);border-left:3px solid var(--accent);color:var(--text);box-shadow:var(--shadow);border-radius:0 12px 12px 0;margin:1.4em 0;padding:16px 20px}.prose blockquote p{margin:0}.prose h3{color:var(--accent);margin:2em 0 .7em;font-size:19px;font-weight:700;line-height:1.5}.prose h4{color:var(--text);margin:1.5em 0 .5em;font-size:17px;font-weight:600;line-height:1.5}.prose img{background:var(--card);width:100%;height:auto;box-shadow:var(--shadow);border-radius:12px;margin:1.6em 0 .4em;display:block}.prose p:has(>img){margin:0}.prose p:has(>img)+p>em:only-child{text-align:center;font-style:normal;font-size:var(--fs-meta);color:var(--text-3);margin:0 0 1.6em;display:block}.prose a{color:var(--accent);word-break:break-all}.prose code{background:#1b58a112;border-radius:5px;padding:1px 5px;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.88em}.prose pre{white-space:pre-wrap;word-break:break-word;background:#f7f8fa;border:1px solid #e4e6ea;border-radius:12px;margin:1.2em 0 1.6em;padding:18px 20px;font-size:14px;line-height:1.75;overflow-x:auto}.prose pre code{font-size:inherit;color:#33363b;background:0 0;padding:0}.prose hr{border:0;border-top:1px solid #d9d9dc;margin:2.4em 0}.prose ol{padding-left:1.6em}.post-toc{background:var(--card);box-shadow:var(--shadow);font-size:var(--fs-small);border-radius:14px;margin:-8px 0 36px;padding:14px 20px}.post-toc summary{cursor:pointer;color:var(--text);font-weight:600}.post-toc ol{color:var(--text-2);margin:12px 0 4px;padding-left:1.4em;line-height:1.9}.post-toc a{color:var(--text-2)}.post-toc a:hover{color:var(--accent)}.post-series{background:var(--card);box-shadow:var(--shadow);border-radius:16px;margin-top:48px;padding:22px 24px}.ps-head{font-size:var(--fs-meta);letter-spacing:.06em;color:var(--accent);margin-bottom:10px;font-weight:600}.post-series ol{font-size:var(--fs-small);padding-left:1.4em;line-height:1.9}.post-series li.on{color:var(--text);font-weight:600}.post-series li em{font-style:normal;font-size:var(--fs-tiny);color:var(--text-3);margin-left:8px;font-weight:500}.post-series li a{color:var(--text-2)}.post-series li a:hover{color:var(--accent)}.ps-next{font-size:var(--fs-small);color:var(--accent);margin-top:12px;font-weight:600;display:inline-block}.post-series+.post-follow{margin-top:24px}.post-side{display:none}.side-head{font-size:var(--fs-meta);letter-spacing:.06em;color:var(--text-3);margin:0 0 10px 14px;font-weight:600}.side-toc ol{margin:0;padding:0;list-style:none}.side-toc a{border-left:2px solid var(--line);color:var(--text-2);padding:6px 0 6px 12px;font-size:14px;line-height:1.5;transition:color .2s,border-color .2s;display:block}.side-toc a:hover{color:var(--accent)}.side-toc a.on{color:var(--accent);border-left-color:var(--accent);font-weight:600}@media (width>=1120px){.post-layout.has-side{grid-template-columns:232px minmax(0,760px);justify-content:center;gap:56px;max-width:1180px;margin:0 auto;padding:0 32px;display:grid}.has-side .post{margin:0;padding-left:0;padding-right:0}.has-side .post-side{padding-top:84px;display:block}.has-side .side-toc{max-height:calc(100vh - 120px);position:sticky;top:96px;overflow-y:auto}.has-side .post-toc{display:none}}.post-follow{background:var(--card);box-shadow:var(--shadow);border-radius:16px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:56px;padding:20px 24px;display:flex}.post-follow p{font-size:var(--fs-small);color:var(--text-2)}.post-follow .btn{height:40px;padding:0 20px}.post-follow+.post-foot{margin-top:32px}button.btn{cursor:pointer;font-family:inherit}.qr-pop{background:var(--card);text-align:center;border:0;border-radius:20px;width:min(280px,100vw - 32px);margin:auto;padding:28px 28px 18px;box-shadow:0 20px 60px #0000002e}.qr-pop img{width:200px;height:200px;margin:0 auto;display:block}.qr-pop p{font-size:var(--fs-small);color:var(--text-2);margin-top:12px}.qr-close{font-family:inherit;font-size:var(--fs-meta);color:var(--text-3);cursor:pointer;background:0 0;border:0;margin-top:12px;padding:6px 12px}.qr-close:hover{color:var(--text)}.qr-pop::backdrop{background:#00000059}.post-foot{font-size:var(--fs-small);color:var(--accent);border-top:1px solid #d9d9dc;justify-content:space-between;gap:16px;margin-top:48px;padding-top:24px;font-weight:500;display:flex}.contact{text-align:center;padding:152px 0 40px}.contact h2{font-size:var(--fs-h2);margin-bottom:10px;font-weight:700}.contact p{color:var(--text-2);margin-bottom:28px}.contact .actions{justify-content:center}.copy{font-size:var(--fs-tiny);color:var(--text-3);margin-top:36px}.js .reveal{opacity:0;filter:blur(6px);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1),filter .7s;transition-delay:calc(var(--d,0) * 90ms);transform:translateY(18px)}.js .reveal.in{opacity:1;filter:none;transform:none}.hl{background-repeat:no-repeat;background-size:0% 100%;animation:1s cubic-bezier(.16,1,.3,1) .7s forwards hl-draw}@keyframes hl-draw{to{background-size:100% 100%}}.frame{will-change:transform;transition:transform .25s ease-out}@supports (animation-timeline:view()){@keyframes flatten{0%{opacity:.6;transform:perspective(1200px)rotateX(16deg)scale(.92)}to{opacity:1;transform:none}}}.flag .badge{background:linear-gradient(90deg,#9ec3f01f 0% 40%,#9ec3f052 50%,#9ec3f01f 60% 100%) 0 0/250% 100%;animation:3.2s linear infinite shimmer}@keyframes shimmer{0%{background-position:120% 0}to{background-position:-120% 0}}.screens{display:grid}.marquee{align-items:center;gap:24px;margin-top:36px;display:flex}.mq-label{font-size:var(--fs-meta);color:var(--text-3);flex:none}.mq-track{flex:1;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.mq-inner{gap:44px;width:max-content;animation:40s linear infinite marquee;display:flex}.mq-track:hover .mq-inner{animation-play-state:paused}.mq-inner span{font-size:var(--fs-small);color:#9a9aa0;white-space:nowrap;font-weight:600}@keyframes marquee{to{transform:translate(calc(-50% - 22px))}}.lab-row,.case{transition:transform .25s cubic-bezier(.16,1,.3,1),box-shadow .25s}.lab-row:hover,.case:hover{box-shadow:0 2px 4px #0000000a,0 14px 32px #00000014}.photos img{transition:transform .6s cubic-bezier(.16,1,.3,1)}.photos div:hover img{transform:scale(1.04)}@media (prefers-reduced-motion:reduce){.js .reveal{opacity:1;filter:none;transition:none;transform:none}.hl{background-size:100% 100%;animation:none}.flag .badge,.mq-inner{animation:none}.mq-inner{flex-wrap:wrap;width:auto}}@media (width<=1024px){.flag{padding:36px 32px 32px}.flag-head{gap:36px}.wrap{padding:0 32px}.hero-grid{gap:40px}.repos{grid-template-columns:1fr 1fr}.think.four{grid-template-columns:repeat(2,minmax(0,1fr))}.th{padding:24px}.case-body{padding:20px}.case-stats dt{font-size:17px}.life{gap:28px;padding:32px}}@media (width<=860px){.flag-head{grid-template-columns:minmax(0,1fr);gap:28px;margin-bottom:28px}.think,.think.three,.think.four,.life,.showcase,.lab-row,.cases{grid-template-columns:minmax(0,1fr)}.links{display:none}.hero-grid{grid-template-columns:1.4fr .8fr;gap:28px}.sc-chat{height:560px}}@media (width<=640px){.flag{border-radius:20px;padding:26px 16px 20px}.flag h3{font-size:30px}.flag dl>div{grid-template-columns:minmax(0,1fr);gap:4px}:root{--fs-lead:16px;--fs-h3:19px}.wrap{padding:0 16px}.hero{padding:44px 0 32px}.hero-grid{grid-template-columns:1fr;gap:32px}.frame{max-width:320px}h1{margin-bottom:22px}.strip{margin-top:44px}.strip .group{gap:10px 18px}.strip .group:last-child{margin-left:0}section{padding-top:72px}#works{padding-top:48px}.sec-head{flex-direction:column;align-items:flex-start}.principles{grid-template-columns:1fr}.repos{grid-template-columns:minmax(0,1fr);padding:4px 18px}.repo{grid-template-columns:104px minmax(0,1fr);gap:14px}.repo:nth-child(2n){border-left:0;padding-left:4px}.repo:nth-child(odd){padding-right:4px}.repo:nth-last-child(2){border-bottom:1px solid var(--line)}.lab-row{grid-template-columns:minmax(0,1fr);gap:18px;padding:14px}.lab-body{padding:0 4px 6px}.pr,.th,.life{padding:24px}.think,.think.four{grid-template-columns:minmax(0,1fr)}.post{padding:40px 16px 32px}.prose{font-size:16px}.photos{height:240px}.life .quote{font-size:22px}.sc-canvas{gap:10px;padding:16px 12px 20px}.sc-phone figcaption{font-size:10px}.sc-device{border-radius:16px;padding:3px}.sc-viewport{border-radius:13px}.sc-info{grid-template-columns:minmax(0,1fr);gap:16px;padding:6px 6px 0}.sc-chat{height:540px}.marquee{flex-direction:column;align-items:flex-start;gap:12px}.mq-track{width:100%}}.flag-head{align-items:center}.flag-txt{flex-direction:column;gap:14px;display:flex}.flag-value{font-size:var(--fs-small);color:#c9c9ce;line-height:1.75}.flag-value b{color:#9ec3f0;font-weight:600;font-size:var(--fs-meta);margin-right:10px}.pair,.sys{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;display:grid}.pair{margin-top:20px}.pair-meta{font-size:var(--fs-meta);color:var(--text-3);font-weight:500}.pair h3,.sys h3{font-size:var(--fs-h3);letter-spacing:-.01em;flex-wrap:wrap;align-items:baseline;gap:10px;margin:6px 0 8px;font-weight:700;line-height:1.35;display:flex}.pair h3 small,.sys h3 small{font-size:var(--fs-meta);color:var(--text-3);letter-spacing:0;font-weight:500}.pair-body p{font-size:var(--fs-small);color:var(--text-2);line-height:1.75}.wxj{flex-direction:column;gap:18px;padding:16px;display:flex}.wxj-shots{background:#f4f4f6;border-radius:14px;flex:1;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;min-height:250px;padding:22px 26px 0;display:grid;position:relative;overflow:hidden}.wxj-phone{background:#fff;border-radius:20px 20px 0 0;padding:4px 4px 0;position:relative;box-shadow:0 8px 24px #00000014}.wxj-screen{background:#fdf8f3;border-radius:16px 16px 0 0;position:absolute;inset:4px 4px 0;overflow:hidden}.wxj-screen img{width:100%}.wxj .pair-body{padding:12px 12px 0}.sk{padding:28px 28px 12px}.sk ul{margin-top:6px;list-style:none}.sk li a{border-top:1px solid var(--line);flex-direction:column;gap:3px;padding:12px 0;display:flex}.sk-name{color:var(--text);align-items:baseline;gap:10px;display:flex}.sk-name b{font-size:var(--fs-body);font-weight:700}.sk-name code{font-family:var(--font-mono);color:var(--accent);background:var(--accent-soft);border-radius:6px;padding:1px 8px;font-size:12.5px;font-weight:600;line-height:1.7}.sk-name i{color:var(--text-3);margin-left:auto;font-style:normal;transition:color .2s,transform .2s}.sk li a:hover .sk-name i{color:var(--accent);transform:translate(2px,-2px)}.sk-desc{color:var(--text-2);font-size:14px;line-height:1.65}.sys-card{flex-direction:column;gap:18px;padding:16px;display:flex}.sys-media{aspect-ratio:16/9;background:#f4f4f6;border-radius:14px;overflow:hidden}.sys-media img,.sys-media video{object-fit:cover;object-position:top;width:100%;height:100%;display:block}.sys-card .pair-body{flex-direction:column;flex:1;padding:0 10px 8px;display:flex}.sys-value{background:var(--accent-soft);border-radius:10px;margin:12px 0 4px;padding:10px 14px;color:var(--text)!important}.sys-card .lab-foot{margin-top:auto;padding-top:10px}@media (width<=860px){.pair,.sys{grid-template-columns:minmax(0,1fr)}}@media (width<=640px){.wxj-shots{gap:10px;min-height:200px;padding:16px 16px 0}.sk{padding:22px 20px 8px}}.sys-card .pair-body h3+p{min-height:3.5em}:lang(en) .sys-card .pair-body h3+p{min-height:5.25em}.case-media{position:relative}.case-note{color:#fff;-webkit-backdrop-filter:blur(6px);background:#14141673;border-radius:999px;padding:5px 9px;font-size:11px;line-height:1;position:absolute;bottom:10px;right:10px}.creds{flex-wrap:wrap;align-items:baseline;row-gap:2px;display:flex}.creds .cred{white-space:nowrap}
