@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@font-face{font-family:TikTok Sans Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/_astro/tiktok-sans-cyrillic-ext-wght-normal.B6PXNKPV.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:TikTok Sans Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/_astro/tiktok-sans-cyrillic-wght-normal.DT5mWYF0.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:TikTok Sans Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/_astro/tiktok-sans-greek-wght-normal.DKmIO-ZC.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:TikTok Sans Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/_astro/tiktok-sans-vietnamese-wght-normal.BX-H4zw6.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:TikTok Sans Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/_astro/tiktok-sans-latin-ext-wght-normal.BE-xz6Qy.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:TikTok Sans Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/_astro/tiktok-sans-latin-wght-normal.Rnsl8r0r.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}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.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}:root{color-scheme:light;--paper:#fff;--ink:#171d2b;--body:#555e70;--muted:#697387;--line:#e2e8f1;--surface:#f2f6fc;--blue:#2357f4;--blue-deep:#173db4;--blue-soft:#eef4ff;--blue-line:#bed0ff;--cinema-blue:#1a2ffb;--on-dark:#f0f1fa;--on-dark-body:#e1e2e8;--on-dark-muted:#afb0b9;--on-dark-line:#ffffff30;--page-gutter:5vw;--header-height:96px;--ease-out:cubic-bezier(.16, 1, .3, 1);--font-body:"Geist Mono Variable", "PingFang SC", "Microsoft YaHei", sans-serif;--font-display:"TikTok Sans Variable", "PingFang SC", "Microsoft YaHei", sans-serif;font-family:var(--font-body);color:var(--ink);background:var(--paper);font-synthesis:none}@media (width<=700px){:root{--page-gutter:6vw;--header-height:80px}}.site-header{z-index:20;height:var(--header-height);padding:0 var(--page-gutter);justify-content:space-between;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}.wordmark{align-items:center;gap:9px;font-size:23px;font-weight:600;display:flex}.brand-dot{background:var(--blue);border-radius:50%;width:9px;height:9px}.header-actions{align-items:center;gap:30px;display:flex}.header-work{font-size:16px}.header-work:hover{color:var(--blue)}.menu-trigger,.menu-close{background:#fff;border-radius:40px;align-items:center;gap:22px;min-height:48px;padding:14px 23px;display:flex}.menu-icon{gap:5px;width:18px;display:grid}.menu-icon i{background:currentColor;height:2px;display:block}.site-menu{width:100%;max-width:none;height:100svh;max-height:none;padding:30px var(--page-gutter);background:var(--blue);color:#fff;border:none;margin:0;overflow:auto}.site-menu::backdrop{background:#2228}.site-menu[open]{animation:menu-in .65s var(--ease-out) both}.site-menu[open] .menu-layout nav a{animation:menu-item-in .65s var(--ease-out) backwards;animation-delay:calc(.12s + var(--menu-order) * 65ms)}.site-menu[open] .menu-projects,.site-menu[open] .menu-email{animation:menu-item-in .7s var(--ease-out) .24s backwards}.site-menu.is-closing{pointer-events:none}.site-menu[open].is-closing .menu-layout nav a,.site-menu[open].is-closing .menu-projects,.site-menu[open].is-closing .menu-email{animation:.3s ease-in both menu-item-out}.site-menu.is-closing::backdrop{animation:.52s ease-in both menu-backdrop-out}@keyframes menu-item-out{to{opacity:0;transform:translateY(-16px)}}@keyframes menu-backdrop-out{to{opacity:0}}.header-work,.menu-trigger{overflow:hidden}.header-motion{grid-template-columns:auto 20px;align-items:center;gap:22px;display:inline-grid;position:relative}.header-motion>*{transition:transform .6s cubic-bezier(.34,1.56,.64,1),opacity .2s}.header-leading{opacity:0;visibility:hidden;transition:transform .35s var(--ease-out), opacity 0s, visibility 0s;position:absolute;left:0;transform:translate(-42px)}.header-trailing{transition:transform 80ms ease-out,opacity,visibility 0s .1s}.header-work:is(:hover,:focus-visible) .header-leading,.menu-trigger:is(:hover,:focus-visible) .header-leading{opacity:1;visibility:visible;transition-delay:.1s;transform:translate(0)}.header-work:is(:hover,:focus-visible) .header-label,.menu-trigger:is(:hover,:focus-visible) .header-label{transform:translate(34px)}.header-work:is(:hover,:focus-visible) .header-trailing,.menu-trigger:is(:hover,:focus-visible) .header-trailing{opacity:0;visibility:hidden;transition-delay:0s;transform:translate(42px)}.menu-top{justify-content:space-between;align-items:center;font-size:24px;display:flex}.menu-close{color:var(--ink);font-size:16px}.menu-layout{grid-template-columns:1.3fr 1fr;gap:10vw;padding:7vh 0;display:grid}.menu-layout nav{flex-direction:column;align-items:flex-start;gap:15px;display:flex}.menu-layout nav a{letter-spacing:-.06em;transition:transform .4s var(--ease-out), opacity .3s;font-size:64px;line-height:1.2}.menu-layout nav a:hover{transform:translate(16px)}.menu-layout nav a[aria-current]{opacity:.6}.menu-projects{padding-top:10px}.menu-projects>p{opacity:.7;margin-bottom:20px}.menu-projects a{border-top:1px solid #ffffff50;flex-direction:column;gap:8px;padding:17px 0;font-size:27px;display:flex}.menu-projects a span{color:#e1e6ff;font-size:16px}.menu-email{font-size:22px}.site-footer{margin:0 var(--page-gutter);border-top:1px solid var(--line);color:var(--body);justify-content:space-between;gap:25px;padding:30px 0;font-size:16px;display:flex}.site-footer a{color:var(--ink)}.site-footer a:hover{color:var(--blue)}.skip-link{z-index:1000;background:var(--ink);color:#fff;padding:14px;position:fixed;top:12px;left:12px;transform:translateY(-200%)}.skip-link:focus{transform:none}.toast{z-index:200;background:var(--ink);color:#fff;opacity:0;pointer-events:none;border-radius:50px;padding:15px 25px;transition:all .3s;position:fixed;bottom:28px;left:50%;transform:translate(-50%,10px)}.toast.is-visible{opacity:1;transform:translate(-50%)}@keyframes menu-in{0%{clip-path:inset(0 0 100% round 0 0 80px 80px);transform:translateY(-24px)}to{clip-path:inset(0);transform:translateY(0)}}@keyframes menu-item-in{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}@media (width<=700px){.header-work{display:none}.wordmark{font-size:20px}.site-menu{padding-top:20px}.menu-layout{grid-template-columns:1fr;gap:35px;padding:40px 0}.menu-layout nav a{font-size:45px}.menu-projects{grid-template-columns:1fr 1fr;gap:0 20px;display:grid}.menu-projects>p{grid-column:1/-1}.menu-projects a{font-size:23px}.menu-projects a span{font-size:15px}.site-footer{flex-direction:column;gap:14px;font-size:15px}}.site-header{padding-left:4.5vw;padding-right:4.5vw}.wordmark{letter-spacing:-.03em;gap:12px;font-size:21px}.brand-icon{color:var(--blue)}.header-actions{gap:14px}.header-work{background:var(--ink);color:#fff;border-radius:40px;align-items:center;gap:22px;padding:14px 22px;font-size:15px;display:flex}.header-work:hover{background:var(--blue);color:#fff}.menu-trigger{background:#eff3fa;gap:22px;font-size:15px}.site-menu{color:var(--ink);background:#f4f7ff;padding-top:30px}.menu-close{color:#fff;background:#182131}.menu-layout nav a[aria-current]{color:var(--blue);opacity:1}.menu-projects a{border-color:#dce5f5}.menu-projects a span{color:var(--muted)}.menu-layout nav a:hover,.menu-email{color:var(--blue)}.site-footer{color:var(--muted);font-size:15px}@media (width<=700px){.site-header{padding:0 24px}.header-work{display:none}.wordmark{gap:9px;font-size:19px}.menu-trigger{padding:12px 20px}.site-menu{padding-top:20px}}.page-transition{z-index:100;pointer-events:none;visibility:hidden;position:fixed;inset:0}.page-transition.is-active{visibility:visible;pointer-events:auto}.transition-curtain{will-change:transform;background:#000;display:none;position:absolute;inset:0}.transition-loading{pointer-events:none;width:100%;height:100%;display:block}.transition-curtain:before{content:"";background:linear-gradient(#0000,#08080866);height:12px;position:absolute;top:-12px;left:0;right:0}html:has(.page-transition.is-active) .site-header{visibility:hidden;opacity:0;pointer-events:none}.reading-progress{z-index:60;pointer-events:none;height:2px;position:fixed;top:0;left:0;right:0}.reading-progress>div{background:var(--blue);transform-origin:0;height:100%;transform:scaleX(0)}.project-visual{isolation:isolate;--art-accent:#739aff;perspective:1400px;background:#eaf1ff;width:100%;height:100%;position:relative;overflow:hidden}.visual-craftmind{color:#fff;background:radial-gradient(at 30% 0,#426fcc 0,#0000 55%),linear-gradient(125deg,#0b142c,#182c56 70%,#3256a3)}.visual-ma{color:#fff;background:radial-gradient(at 75% 20%,#729cff,#0000 60%),linear-gradient(130deg,#0e3acb,#3e6fff)}.visual-yizhi{color:#142547;--art-accent:#bed2f1;background:radial-gradient(at 80% 0,#dceaff,#0000 60%),linear-gradient(140deg,#eef4ff,#f8fbff)}.visual-tablesense{color:#fff;background:radial-gradient(at 65% 35%,#354d80,#0000 62%),linear-gradient(135deg,#111b2c,#182747)}.art-orbit{aspect-ratio:1;pointer-events:none;z-index:-1;border:1px solid #aac6ff25;border-radius:50%;width:75%;position:absolute;top:-20%;left:40%;transform:rotateX(50deg)rotate(-30deg)}.orbit-b{border-color:#9fbdff15;width:115%;top:15%;left:0}.product-emblem{color:#3358d9;z-index:3;background:linear-gradient(140deg,#fff,#dbe6ff);border-radius:23px;place-items:center;width:84px;height:84px;display:grid;position:absolute;top:10%;left:9%;transform:rotate(-9deg);box-shadow:inset 0 2px #fff,0 20px 55px #050d3930,0 0 60px #799bff25}.product-emblem svg{width:52%;height:52%}.product-screen{transform-origin:50%;width:87%;transition:transform 1.1s var(--ease-out);background:#fff;border:5px solid #dce6ff;border-radius:12px;position:absolute;top:29%;left:16%;overflow:hidden;transform:rotateY(-14deg)rotateX(9deg)rotate(-8deg);box-shadow:-10px 30px 70px #030d4438}.product-screen img{width:100%;height:auto}.screen-chrome{background:#f8faff;border-bottom:1px solid #e6ebf5;align-items:center;gap:4px;height:23px;padding:0 11px;display:flex}.screen-chrome i{background:#c0cbe0;border-radius:50%;width:5px;height:5px}.screen-chrome span{background:#e6edf8;border-radius:4px;width:30%;height:4px;margin-left:auto}.visual-ma .product-screen{width:68%;max-height:78%;top:22%;left:25%;transform:rotateY(-15deg)rotateX(12deg)rotate(8deg)}.visual-ma .product-screen img{object-fit:cover;object-position:top;width:100%}.visual-yizhi .product-screen{width:80%;top:23%;left:22%;transform:rotateY(-15deg)rotateX(12deg)rotate(-6deg)}.visual-tablesense .product-emblem{top:9%;left:9%}.table-product{color:#263251;background:#f6f9ff;border:4px solid #c7d7f7;border-radius:14px;width:84%;padding:23px;position:absolute;top:33%;left:12%;transform:rotateY(-12deg)rotateX(8deg)rotate(-7deg);box-shadow:0 30px 65px #02092055}.table-product-head{color:#3557bb;align-items:center;gap:12px;margin-bottom:23px;font-size:16px;display:flex}.table-product-head svg:last-child{margin-left:auto}.native-table{border:1px solid #9bb6fa;border-radius:4px;overflow:hidden}.table-row{border-bottom:1px solid #e1e8f5;grid-template-columns:1.3fr 1fr 1fr;gap:10px;padding:15px 13px;font-size:15px;display:grid}.table-row:last-child{border:0}.table-head{color:#627699;background:#e8effb}.table-row>span:last-child{align-items:center;gap:6px;display:flex}.table-row:not(.table-head)>span:last-child{color:#4261a5}.table-product>p{color:#7585a5;margin-top:16px;font-size:14px}.art-cross{opacity:.5;pointer-events:none;width:14px;height:14px;position:absolute}.art-cross:before,.art-cross:after{content:"";background:currentColor;width:1px;height:14px;position:absolute;top:0;left:6px}.art-cross:after{transform:rotate(90deg)}.cross-a{bottom:6%;left:6%}.cross-b{top:6%;right:6%}.project-card:hover .product-screen{transform:rotateY(-5deg)rotateX(3deg)rotate(-3deg)}.project-card:hover .visual-ma .product-screen{transform:rotateY(-5deg)rotateX(4deg)rotate(3deg)}.case-front .product-emblem{width:100px;height:100px;top:9%;left:9%}.case-front .product-screen{width:66%;max-height:77%;top:15%;left:32%}.case-front .visual-ma .product-screen{width:44%;max-height:85%;top:9%;left:45%}.case-front .visual-yizhi .product-screen{width:62%;max-height:83%;top:12%;left:35%}.case-front .table-product{width:54%;padding:30px;top:20%;left:36%}.case-front .table-row{padding:22px 16px;font-size:19px}.case-front .table-product-head{font-size:20px}.case-front .cross-a{display:none}@media (width<=700px){.product-emblem{border-radius:17px;width:60px;height:60px}.product-screen{border-width:3px;border-radius:8px}.screen-chrome{height:17px}.screen-chrome i{width:4px;height:4px}.table-product{border-width:3px;padding:14px;top:34%}.table-product-head{gap:6px;margin-bottom:14px;font-size:13px}.table-row{gap:7px;padding:11px 7px;font-size:12px}.table-product>p{margin-top:10px;font-size:12px}.table-product-head svg{width:16px}.table-row svg{width:12px}.case-front .product-emblem{width:66px;height:66px;top:10%;left:9%}.case-front .product-screen{width:92%;max-height:56%;top:30%;left:13%}.case-front .visual-ma .product-screen{width:76%;max-height:63%;top:19%;left:25%}.case-front .visual-yizhi .product-screen{width:90%;max-height:58%;top:25%;left:18%}.case-front .table-product{width:88%;padding:16px;top:30%;left:12%}.case-front .table-row{padding:14px 8px;font-size:13px}.case-front .table-product>p{font-size:12px}.case-front .table-product{padding:14px;top:26%}.case-front .table-row{padding:10px 8px}.case-front .table-product-head{font-size:14px}}*{box-sizing:border-box}html{scrollbar-gutter:stable;scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;margin:0;font-size:16px;position:relative}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}a,button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}a:focus-visible,button:focus-visible{outline:3px solid var(--blue);outline-offset:6px}img{max-width:100%;height:auto;display:block}h1,h2,h3,p,figure,dl,dd{margin:0}h1,h2,h3{font-family:var(--font-display);font-weight:500}::selection{background:var(--blue);color:#fff}[hidden]{display:none!important}#main{outline:none;min-height:80svh}.page-stage{padding:160px var(--page-gutter) 100px}.scroll-cue{color:inherit;letter-spacing:.08em;white-space:nowrap;align-items:center;gap:10px;font-size:11px;line-height:1;display:inline-flex}.scroll-cue-mouse{stroke:currentColor;stroke-width:1.2px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:18px;height:23px;display:block;overflow:visible}.scroll-cue-mouse-wheel{transform-origin:50%;animation:1.55s cubic-bezier(.4,0,.2,1) infinite scroll-cue-wheel}@keyframes scroll-cue-wheel{0%,to{opacity:.4;transform:translateY(-1px)}55%{opacity:1;transform:translateY(2px)}}@media (prefers-reduced-motion:reduce){.scroll-cue-mouse-wheel{animation:none}}.pill-link{background:var(--ink);color:#fff;transition:background .25s, transform .4s var(--ease-out);border-radius:50px;justify-content:center;align-items:center;padding:17px 29px;font-size:16px;display:inline-flex}.pill-link:hover{background:var(--blue);transform:translateY(-3px)}.text-link,.plain-link{border-bottom:1px solid;padding-bottom:8px;font-size:17px;display:inline-block}.not-found{min-height:80svh}.not-found h1{margin-bottom:50px;font-size:64px}body:has(dialog[open]){overflow:hidden}@media (width<=700px){.not-found h1{font-size:40px}.page-stage{padding-top:125px;padding-bottom:60px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
