@font-face{font-family:Saira Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/saira-vietnamese-wght-normal.B59RsdDd.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:Saira Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/saira-latin-ext-wght-normal.Cq1Gr55P.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:Saira Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/saira-latin-wght-normal.C4OLzBX3.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:Saira Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/saira-vietnamese-wght-italic.BXWbOl7W.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:Saira Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/saira-latin-ext-wght-italic.nK28umCI.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:Saira Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/saira-latin-wght-italic.CXFDjbPw.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-greek-wght-normal.Bw9x6K1M.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-wght-normal.B9CIFXIH.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,[data-theme=dark]{color-scheme:dark;--surface:#0b0b0f;--surface-raised:#14141b;--surface-overlay:#1b1b24;--surface-sunken:#07070a;--surface-inverse:#f4f2ee;--ink:#f4f2ee;--ink-muted:#a5a2ae;--ink-faint:#6c6a77;--ink-inverse:#0b0b0f;--line:#ffffff1a;--line-strong:#ffffff38;--accent:#f0b429;--accent-hover:#ffc84d;--accent-text:#f0b429;--accent-ink:#17120a;--accent-quiet:#f0b42921;--accent-line:#f0b42961;--cool:#8fa9ff;--cool-quiet:#8fa9ff24;--heart:#ff5c72;--shadow-sm:0 1px 2px #0006;--shadow-md:0 18px 40px -18px #000c;--shadow-lg:0 40px 90px -30px #000000d9;--grain-opacity:.045;--grid-line:#ffffff0a;--img-tint:.92}[data-theme=light]{color-scheme:light;--surface:#faf8f4;--surface-raised:#fff;--surface-overlay:#fff;--surface-sunken:#f1ede5;--surface-inverse:#14131a;--ink:#14131a;--ink-muted:#55535f;--ink-faint:#86838f;--ink-inverse:#faf8f4;--line:#14131a1f;--line-strong:#14131a42;--accent:#a85f00;--accent-hover:#8f5000;--accent-text:#8a4c00;--accent-ink:#fffdf7;--accent-quiet:#a85f001a;--accent-line:#a85f0052;--cool:#3f52c4;--cool-quiet:#3f52c41a;--heart:#e0374f;--shadow-sm:0 1px 2px #14131a0f;--shadow-md:0 16px 36px -20px #14131a38;--shadow-lg:0 36px 80px -32px #14131a42;--grain-opacity:0;--grid-line:#14131a0d;--img-tint:1}:root{--font-display:"Saira Variable", "Saira", ui-sans-serif, system-ui, sans-serif;--font-body:"Saira Variable", "Saira", ui-sans-serif, system-ui, sans-serif;--font-mono:"JetBrains Mono Variable", ui-monospace, "SFMono-Regular", monospace;--fs-display:clamp(2.9rem, 1.6rem + 6.2vw, 7rem);--fs-xxl:clamp(2.1rem, 1.4rem + 3vw, 3.9rem);--fs-xl:clamp(1.6rem, 1.25rem + 1.5vw, 2.4rem);--fs-lg:clamp(1.25rem, 1.1rem + .7vw, 1.6rem);--fs-md:1.0625rem;--fs-sm:.9375rem;--fs-xs:.8125rem;--fs-2xs:.6875rem;--lh-tight:1.02;--lh-snug:1.18;--lh-body:1.68;--ls-display:-.035em;--ls-heading:-.02em;--ls-mono:.14em;--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.5rem;--sp-6:2rem;--sp-7:2.5rem;--sp-8:3rem;--sp-9:4rem;--sp-10:5rem;--sp-11:6.5rem;--sp-12:8rem;--section-y:clamp(4.5rem, 9vw, 9rem);--page-max:1440px;--gutter:clamp(1.25rem, 4vw, 4.5rem);--header-h:68px;--control-h:40px;--r-xs:2px;--r-sm:4px;--r-md:10px;--r-lg:18px;--r-pill:999px;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-1:.16s;--dur-2:.32s;--dur-3:.62s;--z-grain:1;--z-header:60;--z-fab:70;--z-menu:80;--z-modal:90}@media (prefers-reduced-motion:reduce){:root{--dur-1:1ms;--dur-2:1ms;--dur-3:1ms}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + var(--sp-4))}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}body{min-height:100vh;font-family:var(--font-body);font-size:var(--fs-md);line-height:var(--lh-body);color:var(--ink);background:var(--surface);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-synthesis-weight:none;transition:background-color var(--dur-2) var(--ease-in-out), color var(--dur-2) var(--ease-in-out)}body:after{content:"";z-index:var(--z-grain);pointer-events:none;opacity:var(--grain-opacity);mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}body.no-scroll{overflow:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:600;line-height:var(--lh-snug);letter-spacing:var(--ls-heading);text-wrap:balance;color:var(--ink)}h1{font-size:var(--fs-display);line-height:var(--lh-tight);letter-spacing:var(--ls-display);font-weight:700}h2{font-size:var(--fs-xxl)}h3{font-size:var(--fs-lg)}h4{font-size:var(--fs-md)}p{text-wrap:pretty}a{color:inherit;transition:color var(--dur-1) var(--ease-out);text-decoration:none}img,video,svg{max-width:100%;height:auto;display:block}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}input,textarea,select{font:inherit;color:inherit}ul,ol{list-style:none}::selection{background:var(--accent);color:var(--accent-ink)}:focus-visible{outline:2px solid var(--cool);outline-offset:3px;border-radius:var(--r-xs)}@supports selector(::-webkit-scrollbar){::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-track{background:var(--surface-sunken)}::-webkit-scrollbar-thumb{background:var(--line-strong);border:3px solid var(--surface-sunken);border-radius:var(--r-pill)}::-webkit-scrollbar-thumb:hover{background:var(--accent)}}.shell{width:100%;max-width:var(--page-max);padding-inline:var(--gutter);margin-inline:auto}.section{padding-block:var(--section-y);position:relative}.section--sunken{background:var(--surface-sunken);border-block:1px solid var(--line)}.section-head{gap:var(--sp-4);margin-bottom:var(--sp-9);display:grid}.section-index{align-items:center;gap:var(--sp-4);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--accent-text);font-weight:500;display:flex}.section-index:after{content:"";background:linear-gradient(90deg, var(--accent-line), transparent);flex:1;height:1px}.section-head p.section-lede{max-width:58ch;font-size:var(--fs-lg);color:var(--ink-muted);line-height:1.5}.mono-label{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--ink-faint);font-weight:500}.lede{font-size:var(--fs-lg);color:var(--ink-muted);line-height:1.55}.text-outline{color:#0000;-webkit-text-stroke:1.5px var(--ink)}@supports not (-webkit-text-stroke:1px black){.text-outline{color:var(--ink-faint)}}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{top:var(--sp-3);left:var(--sp-3);z-index:200;padding:var(--sp-3) var(--sp-5);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--accent-ink);background:var(--accent);border-radius:var(--r-sm);transition:transform var(--dur-2) var(--ease-out);position:fixed;transform:translateY(-200%)}.skip-link:focus-visible{transform:translateY(0)}.grid-backdrop{pointer-events:none;background-image:linear-gradient(90deg, var(--grid-line) 1px, transparent 1px), linear-gradient(var(--grid-line) 1px, transparent 1px);background-size:88px 88px;position:absolute;inset:0;mask-image:radial-gradient(80% 60% at 50% 0,#000 30%,#0000 78%)}.reveal{opacity:0;transition:opacity var(--dur-3) var(--ease-out), transform var(--dur-3) var(--ease-out);will-change:opacity, transform;transform:translateY(26px)}.reveal.is-visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}}.btn{--btn-pad-y:.85rem;--btn-pad-x:1.6rem;padding:var(--btn-pad-y) var(--btn-pad-x);font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;border-radius:var(--r-sm);cursor:pointer;transition:background-color var(--dur-1) var(--ease-out), border-color var(--dur-1) var(--ease-out), color var(--dur-1) var(--ease-out), transform var(--dur-1) var(--ease-out);border:1px solid #0000;justify-content:center;align-items:center;gap:.6em;font-weight:500;display:inline-flex}.btn:active{transform:translateY(1px)}.btn .icon{fill:currentColor;width:1em;height:1em}.btn--solid{color:var(--accent-ink);background:var(--accent)}.btn--solid:hover{background:var(--accent-hover)}.btn--ghost{color:var(--ink);border-color:var(--line-strong)}.btn--ghost:hover{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.icon-btn{width:var(--control-h);height:var(--control-h);color:var(--ink-muted);border:1px solid var(--line);border-radius:var(--r-sm);transition:color var(--dur-1) var(--ease-out), border-color var(--dur-1) var(--ease-out), background-color var(--dur-1) var(--ease-out);background:0 0;place-items:center;display:inline-grid}.icon-btn .icon{fill:currentColor;width:15px;height:15px}.icon-btn:hover{color:var(--accent-text);border-color:var(--accent-line);background:var(--accent-quiet)}.site-header{z-index:var(--z-header);height:var(--header-h);transition:background-color var(--dur-2) var(--ease-out), border-color var(--dur-2) var(--ease-out), backdrop-filter var(--dur-2) var(--ease-out);border-bottom:1px solid #0000;position:fixed;inset:0 0 auto}.site-header.is-stuck{background:color-mix(in srgb, var(--surface) 82%, transparent);border-bottom-color:var(--line);backdrop-filter:blur(14px)saturate(1.4)}@supports not (background:color-mix(in srgb, red 50%, transparent)){.site-header.is-stuck{background:var(--surface)}}.header-inner{justify-content:space-between;align-items:center;gap:var(--sp-5);height:100%;display:flex}.brand{flex-shrink:0;align-items:center;gap:.7rem;display:inline-flex}.brand-mark{width:34px;height:34px;font-family:var(--font-display);letter-spacing:.02em;color:var(--accent-ink);background:var(--accent);border-radius:var(--r-sm);transition:transform var(--dur-2) var(--ease-out);place-items:center;font-size:.8rem;font-weight:700;display:grid}.brand:hover .brand-mark{transform:rotate(-8deg)}.brand-name{flex-direction:column;line-height:1.1;display:flex}.brand-name strong{font-family:var(--font-display);letter-spacing:-.01em;font-size:.95rem;font-weight:600}.brand-name span{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint);font-size:.5625rem}.nav-list{align-items:center;gap:clamp(.25rem,1.4vw,1rem);display:flex}.nav-link{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.06em;color:var(--ink-muted);border-radius:var(--r-xs);align-items:center;padding:.5rem .7rem;display:inline-flex;position:relative}.nav-link:after{content:"";inset-inline:.7rem;background:var(--accent);transform-origin:0;height:1px;transition:transform var(--dur-2) var(--ease-out);position:absolute;bottom:.15rem;transform:scaleX(0)}.nav-link:hover,.nav-link.is-current{color:var(--ink)}.nav-link:hover:after,.nav-link.is-current:after{transform:scaleX(1)}.header-actions{align-items:center;gap:var(--sp-2);display:flex}.header-actions>*{height:var(--control-h);border-radius:var(--r-sm)}.header-actions .btn{padding-block:0}.theme-toggle{position:relative;overflow:hidden}.theme-toggle>span{transition:transform var(--dur-2) var(--ease-out), opacity var(--dur-1) var(--ease-out);place-items:center;display:grid;position:absolute;inset:0}.theme-toggle>span .icon{width:15px;height:15px}.theme-toggle .icon-sun{opacity:0;transform:translateY(120%)rotate(-90deg)}[data-theme=dark] .theme-toggle .icon-sun{opacity:1;transform:none}[data-theme=dark] .theme-toggle .icon-moon{opacity:0;transform:translateY(-120%)rotate(90deg)}.menu-toggle{display:none}.mobile-menu{z-index:var(--z-menu);grid-template-rows:var(--header-h) 1fr auto;background:var(--surface);visibility:hidden;opacity:0;transition:opacity var(--dur-2) var(--ease-out), visibility var(--dur-2);display:grid;position:fixed;inset:0}.mobile-menu.is-open{visibility:visible;opacity:1}.mobile-menu-head{padding-inline:var(--gutter);justify-content:flex-end;align-items:center;display:flex}.mobile-nav{justify-content:center;gap:var(--sp-2);padding:var(--sp-6) var(--gutter);flex-direction:column;display:flex}.mobile-nav a{padding-block:var(--sp-3);font-family:var(--font-display);letter-spacing:var(--ls-heading);border-bottom:1px solid var(--line);opacity:0;transition:opacity var(--dur-2) var(--ease-out), transform var(--dur-2) var(--ease-out);transition-delay:calc(var(--i,0) * 45ms + 90ms);align-items:center;font-size:clamp(1.9rem,9vw,2.9rem);font-weight:600;display:flex;transform:translateY(14px)}.mobile-menu.is-open .mobile-nav a{opacity:1;transform:none}.mobile-nav a:hover{color:var(--accent-text)}.mobile-menu-foot{padding:var(--sp-6) var(--gutter) var(--sp-8);border-top:1px solid var(--line)}@media (width<=900px){.nav{display:none}.menu-toggle{display:inline-grid}}.hero{min-height:100svh;padding-top:calc(var(--header-h) + var(--sp-8));padding-bottom:var(--sp-6);align-items:center;display:flex;position:relative;overflow:hidden}.hero-copy{z-index:2;max-width:62rem;position:relative}.hero-eyebrow{margin-bottom:var(--sp-5);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-muted);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface-raised);align-items:center;gap:.65rem;padding:.4rem .9rem .4rem .7rem;display:inline-flex}.status-dot{background:#3ddc84;border-radius:50%;flex-shrink:0;width:7px;height:7px;position:relative}.status-dot:before{content:"";animation:pulse-ring 2.4s var(--ease-out) infinite;border:1px solid #3ddc84;border-radius:50%;position:absolute;inset:-4px}@keyframes pulse-ring{0%{opacity:.9;transform:scale(.6)}70%,to{opacity:0;transform:scale(1.5)}}.hero-title{margin-bottom:var(--sp-5)}.hero-title .line{display:block}.hero-lede{max-width:56ch;margin-bottom:var(--sp-7);font-size:var(--fs-lg);color:var(--ink-muted);line-height:1.55}.hero-actions{gap:var(--sp-3);flex-wrap:wrap;display:flex}.hero-stats{align-items:center;gap:var(--sp-5);margin-top:var(--sp-9);padding-top:var(--sp-5);border-top:1px solid var(--line);grid-template-columns:repeat(3,1fr) auto;display:grid}.stat{gap:.15rem;display:grid}.stat-value{font-family:var(--font-display);letter-spacing:-.03em;font-size:clamp(1.6rem,3vw,2.3rem);font-weight:700;line-height:1}.stat-label{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}.scroll-cue{align-items:center;gap:var(--sp-3);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--ink-faint);display:flex}.scroll-cue-rail{background:var(--line);width:1px;height:42px;position:relative;overflow:hidden}.scroll-cue-rail:after{content:"";background:var(--accent);height:40%;animation:cue-slide 2s var(--ease-in-out) infinite;position:absolute;inset-inline:0}@keyframes cue-slide{0%{transform:translateY(-100%)}to{transform:translateY(250%)}}@media (width<=992px){.hero-stats{margin-top:var(--sp-7);grid-template-columns:repeat(3,1fr)}.scroll-cue{display:none}}@media (width<=560px){.hero-stats{row-gap:var(--sp-5);grid-template-columns:1fr 1fr}}.about-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:start;gap:clamp(2rem,5vw,5rem);display:grid}.about-body>*+*{margin-top:var(--sp-5)}.about-body h3{font-size:var(--fs-xl);max-width:30ch}.about-body p{max-width:66ch;color:var(--ink-muted)}.toolkit{border-top:1px solid var(--line);grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:0;display:grid}.toolkit-item{align-items:baseline;gap:var(--sp-3);border-bottom:1px solid var(--line);transition:color var(--dur-1) var(--ease-out);padding:.75rem .25rem;display:flex}.toolkit-item:hover{color:var(--accent-text)}.toolkit-item .num{font-family:var(--font-mono);color:var(--ink-faint);font-size:.625rem}.toolkit-item .name{font-size:var(--fs-sm)}@media (width<=992px){.about-grid{grid-template-columns:1fr}}.service-list{border-top:1px solid var(--line)}.service-row{gap:var(--sp-5);border-bottom:1px solid var(--line);transition:background-color var(--dur-2) var(--ease-out);grid-template-columns:4rem minmax(0,1fr);padding-block:clamp(1.5rem,3vw,2.4rem);display:grid;position:relative}.service-row:before{content:"";inset:0 calc(var(--gutter) * -.4);background:var(--accent-quiet);opacity:0;transition:opacity var(--dur-2) var(--ease-out);pointer-events:none;position:absolute}.service-row:hover:before{opacity:1}.service-num{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.1em;color:var(--ink-faint);transition:color var(--dur-1) var(--ease-out);padding-top:.35rem}.service-row:hover .service-num{color:var(--accent-text)}.service-main{gap:var(--sp-5);grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr) auto;align-items:start;display:grid}.service-title{font-size:var(--fs-lg);transition:transform var(--dur-2) var(--ease-out)}.service-row:hover .service-title{transform:translate(4px)}.service-text{font-size:var(--fs-sm);color:var(--ink-muted);max-width:62ch}.service-icon{width:46px;height:46px;color:var(--ink-faint);border:1px solid var(--line);border-radius:var(--r-sm);transition:color var(--dur-2) var(--ease-out), border-color var(--dur-2) var(--ease-out), transform var(--dur-2) var(--ease-out);place-items:center;display:grid}.service-icon .icon{fill:currentColor;width:18px;height:18px}.service-row:hover .service-icon{color:var(--accent-text);border-color:var(--accent-line);transform:rotate(-6deg)scale(1.05)}@media (width<=860px){.service-row{gap:var(--sp-4);grid-template-columns:2.5rem minmax(0,1fr)}.service-main{gap:var(--sp-3);grid-template-columns:minmax(0,1fr) auto}.service-text{grid-column:1/-1}}.work-toolbar{top:var(--header-h);z-index:20;justify-content:space-between;align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-7);padding-block:var(--sp-3);background:color-mix(in srgb, var(--surface) 88%, transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);flex-wrap:wrap;display:flex;position:sticky}@supports not (background:color-mix(in srgb, red 50%, transparent)){.work-toolbar{background:var(--surface)}}.filter-group{gap:var(--sp-2);flex-wrap:wrap;display:flex}.filter-btn{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted);border:1px solid var(--line);border-radius:var(--r-pill);transition:color var(--dur-1) var(--ease-out), background-color var(--dur-1) var(--ease-out), border-color var(--dur-1) var(--ease-out);align-items:center;gap:.5em;padding:.5rem .9rem;display:inline-flex}.filter-btn .count{color:var(--ink-faint);font-size:.5625rem}.filter-btn:hover{color:var(--ink);border-color:var(--line-strong)}.filter-btn.is-active{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.filter-btn.is-active .count{color:var(--accent-ink);opacity:.7}.work-count{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--ink-faint)}.work-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1rem,2.2vw,2rem);display:grid}.project-card[hidden]{display:none}@media (width<=1100px){.work-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.work-grid{grid-template-columns:minmax(0,1fr)}}.project-card{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-raised);cursor:pointer;transition:transform var(--dur-2) var(--ease-out), border-color var(--dur-2) var(--ease-out), box-shadow var(--dur-2) var(--ease-out);flex-direction:column;display:flex;position:relative}.project-card:hover,.project-card:focus-visible{border-color:var(--line-strong);box-shadow:var(--shadow-md);transform:translateY(-5px)}.card-media{aspect-ratio:4/3;background:var(--surface-sunken);border-bottom:1px solid var(--line);border-radius:var(--r-sm) var(--r-sm) 0 0;position:relative;overflow:hidden}.card-media img,.card-media video{object-fit:cover;width:100%;height:100%;filter:brightness(var(--img-tint));transition:transform var(--dur-3) var(--ease-out), filter var(--dur-2) var(--ease-out)}.project-card:hover .card-media img,.project-card:hover .card-media video{filter:brightness();transform:scale(1.045)}.card-open-btn{z-index:2;background:0 0;border:0;display:block;position:absolute;inset:0}.card-open{inset:auto var(--sp-3) var(--sp-3) auto;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-ink);background:var(--accent);border-radius:var(--r-pill);opacity:0;transition:opacity var(--dur-2) var(--ease-out), transform var(--dur-2) var(--ease-out);pointer-events:none;align-items:center;gap:.45em;padding:.4rem .75rem;font-size:.5625rem;display:inline-flex;position:absolute;transform:translateY(6px)}.card-open .icon{fill:currentColor;width:.75em;height:.75em}.project-card:hover .card-open,.card-open-btn:focus-visible .card-open{opacity:1;transform:none}.card-open-btn:focus-visible{outline:2px solid var(--cool);outline-offset:-3px}.card-badge{inset:var(--sp-3) auto auto var(--sp-3);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:#f4f2ee;backdrop-filter:blur(6px);border-radius:var(--r-xs);pointer-events:none;background:#0000008c;align-items:center;gap:.4em;padding:.3rem .6rem;font-size:.5625rem;display:inline-flex;position:absolute}.card-badge .icon{fill:currentColor;width:.7em;height:.7em}.card-body{gap:var(--sp-3);padding:var(--sp-4) var(--sp-4) var(--sp-5);flex-direction:column;flex:1;display:flex}.card-eyebrow{justify-content:space-between;align-items:center;gap:var(--sp-3);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);font-size:.5625rem;display:flex}.card-title{font-size:var(--fs-md);transition:color var(--dur-1) var(--ease-out);font-weight:600}.project-card:hover .card-title{color:var(--accent-text)}.card-tools{flex-wrap:wrap;gap:.3rem;margin-top:auto;display:flex}.tool-tag{font-family:var(--font-mono);letter-spacing:.06em;color:var(--ink-muted);border:1px solid var(--line);border-radius:var(--r-xs);padding:.2rem .5rem;font-size:.5625rem}.like-btn{font-family:var(--font-mono);color:var(--ink-faint);transition:color var(--dur-1) var(--ease-out);align-items:center;gap:.35em;padding:.15rem .1rem;font-size:.6875rem;display:inline-flex}.like-btn .icon{fill:currentColor;width:13px;height:13px}.like-btn:hover{color:var(--heart)}.like-count{font-variant-numeric:tabular-nums;text-align:left;min-width:1.2em}.like-btn .heart-solid{display:none}.like-btn.is-liked{color:var(--heart)}.like-btn.is-liked .heart-solid{animation:heart-pop var(--dur-2) var(--ease-out);display:block}.like-btn.is-liked .heart-outline{display:none}@keyframes heart-pop{0%{transform:scale(.6)}55%{transform:scale(1.35)}to{transform:scale(1)}}.sound-btn{inset:auto auto var(--sp-3) var(--sp-3);z-index:4;color:#f4f2ee;backdrop-filter:blur(6px);width:32px;height:32px;transition:background-color var(--dur-1) var(--ease-out);background:#0000008c;border-radius:50%;place-items:center;display:grid;position:absolute}.sound-btn:hover{background:#000000c7}.sound-btn .icon{fill:currentColor;width:13px;height:13px}.sound-btn .icon-vol-on,.sound-btn.is-muted .icon-vol-on{display:none}.sound-btn.is-muted .icon-vol-off,.sound-btn:not(.is-muted) .icon-vol-on{display:block}.sound-btn:not(.is-muted) .icon-vol-off{display:none}.slideshow{width:100%;height:100%;position:relative}.slide{opacity:0;transition:opacity .7s var(--ease-out);pointer-events:none;position:absolute;inset:0}.slide.is-active{opacity:1;pointer-events:auto}.slide.is-active img{animation:slow-zoom 7s var(--ease-out) forwards}@keyframes slow-zoom{0%{transform:scale(1)}to{transform:scale(1.07)}}@media (prefers-reduced-motion:reduce){.slide.is-active img{animation:none}}.slide-nav{z-index:3;color:#f4f2ee;backdrop-filter:blur(6px);opacity:0;width:34px;height:34px;transition:opacity var(--dur-2) var(--ease-out), background-color var(--dur-1) var(--ease-out);background:#00000080;border-radius:50%;place-items:center;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.slide-nav .icon{fill:currentColor;width:12px;height:12px}.slide-nav--prev{left:var(--sp-3)}.slide-nav--next{right:var(--sp-3)}.project-card:hover .slide-nav,.project-card:focus-within .slide-nav,.modal-media .slide-nav{opacity:1}.slide-nav:hover{background:var(--accent);color:var(--accent-ink)}.slide-dots{inset:auto 0 var(--sp-3);z-index:3;pointer-events:none;justify-content:center;gap:5px;display:flex;position:absolute}.slide-dots span{width:5px;height:5px;transition:background-color var(--dur-1) var(--ease-out), transform var(--dur-1) var(--ease-out);background:#ffffff73;border-radius:50%}.slide-dots span.is-active{background:var(--accent);transform:scale(1.4)}@media (hover:none){.slide-nav,.card-open{opacity:1}}.modal{z-index:var(--z-modal);padding:var(--sp-4);backdrop-filter:blur(10px);visibility:hidden;opacity:0;transition:opacity var(--dur-2) var(--ease-out), visibility var(--dur-2);background:#040406b8;place-items:center;display:grid;position:fixed;inset:0}.modal.is-open{visibility:visible;opacity:1}.modal-panel{background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--r-md);width:min(1180px,100%);max-height:min(88svh,900px);box-shadow:var(--shadow-lg);transition:transform var(--dur-3) var(--ease-out);grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);display:grid;position:relative;overflow:hidden;transform:translateY(18px)scale(.985)}.modal.is-open .modal-panel{transform:none}.modal-close{top:var(--sp-3);right:var(--sp-3);z-index:5;width:38px;height:38px;color:var(--ink);background:var(--surface-overlay);border:1px solid var(--line);transition:color var(--dur-1) var(--ease-out), background-color var(--dur-1) var(--ease-out), transform var(--dur-2) var(--ease-out);border-radius:50%;place-items:center;display:grid;position:absolute}.modal-close .icon{fill:currentColor;width:14px;height:14px}.modal-close:hover{color:var(--accent-ink);background:var(--accent);transform:rotate(90deg)}.modal-media{background:var(--surface-sunken);place-items:center;min-height:280px;display:grid;position:relative;overflow:hidden}.modal-media>*{width:100%;height:100%}.modal-media img,.modal-media video{object-fit:contain;width:100%;height:100%;max-height:min(88svh,900px)}.modal-media .slideshow{aspect-ratio:4/3;max-height:min(88svh,900px);position:relative}.modal-media .slideshow img{object-fit:contain}.modal-info{gap:var(--sp-4);padding:var(--sp-7) var(--sp-6) var(--sp-6);border-left:1px solid var(--line);flex-direction:column;display:flex;overflow-y:auto}.modal-eyebrow{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--accent-text)}.modal-title{font-size:var(--fs-xl)}.modal-description{color:var(--ink-muted);font-size:var(--fs-sm)}.modal-block{gap:var(--sp-3);padding-top:var(--sp-4);border-top:1px solid var(--line);display:grid}.modal-block h4{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--ink-faint);font-weight:500}.modal-tools{flex-wrap:wrap;gap:.35rem;display:flex}.modal-full-link{align-self:flex-start;margin-top:auto}.modal-links{gap:var(--sp-2);padding-top:var(--sp-2);flex-wrap:wrap;display:flex}.modal-foot{justify-content:space-between;align-items:center;gap:var(--sp-4);padding-top:var(--sp-4);border-top:1px solid var(--line);display:flex}@media (width<=960px){.modal{padding:0}.modal-panel{border:0;border-radius:0;grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);width:100%;height:100svh;max-height:100svh}.modal-media,.modal-media img,.modal-media video,.modal-media .slideshow{max-height:46svh}.modal-info{border-left:0;border-top:1px solid var(--line);padding:var(--sp-5) var(--sp-5) var(--sp-8)}}.project-page{padding-top:calc(var(--header-h) + var(--sp-8));padding-bottom:var(--section-y)}.breadcrumb{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-8);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--ink-faint);flex-wrap:wrap;display:flex}.breadcrumb a{color:var(--ink-faint);transition:color var(--dur-1) var(--ease-out)}.breadcrumb a:hover{color:var(--accent-text)}.breadcrumb [aria-current=page]{color:var(--ink-muted);text-overflow:ellipsis;white-space:nowrap;max-width:34ch;overflow:hidden}.project-article{gap:var(--sp-9);display:grid}.project-head{gap:var(--sp-5);max-width:62ch;display:grid}.project-head h1{letter-spacing:-.02em;font-size:clamp(2rem,5vw,3.25rem);line-height:1.05}.project-lede{color:var(--ink-muted)}.project-meta{gap:var(--sp-4);padding-block:var(--sp-5);border-block:1px solid var(--line);display:grid}.project-meta-row{gap:var(--sp-4);grid-template-columns:8rem 1fr;align-items:baseline;display:grid}.project-meta dt{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--ink-faint)}.project-meta dd{gap:var(--sp-2);font-size:var(--fs-sm);color:var(--ink-muted);flex-wrap:wrap;display:flex}@media (width<=560px){.project-meta-row{gap:var(--sp-2);grid-template-columns:1fr}}.project-links{gap:var(--sp-3);flex-wrap:wrap;display:flex}.project-media{gap:clamp(1rem,2.5vw,2rem);display:grid}.project-figure{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-sunken);margin:0;overflow:hidden}.project-figure img,.project-figure video{width:100%;height:auto;display:block}.project-pager{gap:var(--sp-4);margin-top:var(--sp-10);padding-top:var(--sp-7);border-top:1px solid var(--line);grid-template-columns:1fr auto 1fr;align-items:center;display:grid}.pager-link{gap:var(--sp-2);padding:var(--sp-4);border-radius:var(--r-sm);transition:border-color var(--dur-1) var(--ease-out), background var(--dur-1) var(--ease-out);border:1px solid #0000;display:grid}.pager-link:hover{border-color:var(--line);background:var(--surface-raised)}.pager-link .mono-label{color:var(--accent-text);align-items:center;gap:.4em;display:flex}.pager-link .icon{fill:currentColor;width:.85em;height:.85em}.pager-title{font-size:var(--fs-sm);color:var(--ink-muted)}.pager-next{text-align:right;justify-items:end}.pager-all{justify-items:center}@media (width<=640px){.project-pager{grid-template-columns:1fr}.pager-next{text-align:left;justify-items:start}.pager-all{justify-items:start}}.contact-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:clamp(2rem,5vw,5rem);display:grid}.contact-lead h2{max-width:18ch;margin-bottom:var(--sp-5)}.email-link{font-family:var(--font-display);letter-spacing:var(--ls-heading);color:var(--ink);word-break:break-all;background-image:linear-gradient(var(--accent), var(--accent));transition:background-size var(--dur-2) var(--ease-out), color var(--dur-1) var(--ease-out);background-position:0 100%;background-repeat:no-repeat;background-size:100% 1px;align-items:center;gap:.5em;font-size:clamp(1.15rem,2.4vw,1.75rem);font-weight:600;display:inline-flex}.email-link:hover{color:var(--accent-text);background-size:100% 2px}.contact-rows{margin-top:var(--sp-7);border-top:1px solid var(--line);display:grid}.contact-row{gap:var(--sp-4);padding-block:var(--sp-4);border-bottom:1px solid var(--line);grid-template-columns:2.5rem minmax(0,1fr);align-items:center;display:grid}.contact-row .icon-wrap{width:34px;height:34px;color:var(--accent-text);background:var(--accent-quiet);border-radius:var(--r-sm);place-items:center;display:grid}.contact-row .icon-wrap .icon{fill:currentColor;width:14px;height:14px}.contact-row dt{font-family:var(--font-mono);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--ink-faint);font-size:.5625rem}.contact-row dd{font-size:var(--fs-sm);color:var(--ink)}.contact-row dd a:hover{color:var(--accent-text)}.socials{gap:var(--sp-2);margin-top:var(--sp-6);flex-wrap:wrap;display:flex}.social-btn{width:44px;height:44px}.contact-form{gap:var(--sp-4);background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-sm);padding:clamp(1.5rem,3vw,2.5rem);display:grid}.form-head{gap:var(--sp-2);padding-bottom:var(--sp-4);border-bottom:1px solid var(--line);display:grid}.field{gap:.4rem;display:grid}.field-row{gap:var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.field label{font-family:var(--font-mono);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--ink-faint);font-size:.5625rem}.field label .req{color:var(--accent-text)}.control{width:100%;font-size:var(--fs-sm);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);transition:border-color var(--dur-1) var(--ease-out), box-shadow var(--dur-1) var(--ease-out), background-color var(--dur-1) var(--ease-out);padding:.8rem .9rem}.control::placeholder{color:var(--ink-faint)}.control:hover{border-color:var(--line-strong)}.control:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-quiet);outline:none}textarea.control{resize:vertical;min-height:130px}.form-foot{justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.form-note{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);font-size:.5625rem}@media (width<=960px){.contact-grid{grid-template-columns:minmax(0,1fr)}}@media (width<=520px){.field-row{grid-template-columns:1fr}}.site-footer{padding-block:var(--sp-8) var(--sp-6);border-top:1px solid var(--line);background:var(--surface-sunken)}.footer-top{justify-content:space-between;align-items:flex-start;gap:var(--sp-6);padding-bottom:var(--sp-6);border-bottom:1px solid var(--line);flex-wrap:wrap;display:flex}.footer-tagline{max-width:34ch;margin-top:var(--sp-3);font-size:var(--fs-sm);color:var(--ink-muted)}.footer-nav{gap:var(--sp-2) var(--sp-8);grid-template-columns:repeat(auto-fit,minmax(120px,auto));display:grid}.footer-nav a{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-muted);align-items:center;gap:.5em;display:inline-flex}.footer-nav a .icon{fill:currentColor;width:.85em;height:.85em}.footer-nav a:hover{color:var(--accent-text)}.footer-bottom{justify-content:space-between;align-items:center;gap:var(--sp-3);padding-top:var(--sp-5);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);flex-wrap:wrap;font-size:.625rem;display:flex}.footer-bottom a:hover{color:var(--accent-text)}#scroll-progress{z-index:100;background:linear-gradient(90deg, var(--accent), var(--cool));width:0;height:2px;transition:width 90ms linear;position:fixed;top:0;left:0}#to-top{z-index:var(--z-fab);width:44px;height:44px;color:var(--accent-ink);background:var(--accent);box-shadow:var(--shadow-md);opacity:0;pointer-events:none;transition:opacity var(--dur-2) var(--ease-out), transform var(--dur-2) var(--ease-out), background-color var(--dur-1) var(--ease-out);border-radius:50%;place-items:center;display:grid;position:fixed;bottom:clamp(1rem,3vw,2rem);right:clamp(1rem,3vw,2rem);transform:translateY(14px)scale(.9)}#to-top .icon{fill:currentColor;width:14px;height:14px}#to-top.is-visible{opacity:1;pointer-events:auto;transform:none}#to-top:hover{background:var(--accent-hover)}.icon{fill:currentColor;flex-shrink:0;width:1em;height:1em;display:inline-block}.theme-toggle .icon-sun,.theme-toggle .icon-moon{place-items:center;display:grid}@media (width<=700px){.btn-cv[data-astro-cid-nen7h5rs]{display:none}}@media (width<=420px){.brand-name[data-astro-cid-nen7h5rs] span[data-astro-cid-nen7h5rs]{display:none}}.footer-socials[data-astro-cid-jo6i4kqk]{gap:var(--sp-4);display:flex}.footer-socials[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk] .icon[data-astro-cid-jo6i4kqk]{width:14px;height:14px;color:var(--ink-faint);transition:color var(--dur-1) var(--ease-out)}.footer-socials[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover .icon[data-astro-cid-jo6i4kqk]{color:var(--accent-text)}
