html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}:root{--bg:#f3f1ed;--fg:#111110;--muted:#6b6863;--faint:#a5a19b;--card:#fbfaf8;--surface:#e9e6e0;--line:#1111101a;--line-strong:#1111102e;--shadow:0 1px 2px #0000000a, 0 12px 32px -14px #1e19142e;--shadow-lg:0 2px 4px #0000000a, 0 30px 60px -24px #1e19144d;--accent:#ff5a36;--accent-soft:color-mix(in srgb, var(--accent) 14%, transparent);--blue:#2f6fde;--violet:#7c5cff;--mint:#16a37b;--amber:#e8930c;--rose:#e5487a;--ok:#22c55e;--warn:#f5a524;--sans:"Inter", system-ui, -apple-system, sans-serif;--mono:"JetBrains Mono", ui-monospace, monospace;--ease:cubic-bezier(.22, 1, .36, 1);--pad:clamp(18px, 4vw, 48px);--max:1240px;--nav-h:68px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#0e0e0f;--fg:#f1efea;--muted:#92908b;--faint:#5a5752;--card:#161617;--surface:#1e1e20;--line:#ffffff17;--line-strong:#ffffff29;--shadow:0 1px 2px #0000004d, 0 12px 32px -14px #000000b3;--shadow-lg:0 2px 4px #0000004d, 0 30px 60px -24px #000c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg);color:var(--fg);font-family:var(--sans);font-optical-sizing:auto;font-feature-settings:"ss01", "cv11";-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-tap-highlight-color:transparent;transition:background-color .5s var(--ease), color .5s var(--ease);font-size:16px}body{overflow-x:hidden}html.palette-open{overflow:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}input,textarea{font:inherit;color:inherit}img{max-width:100%;display:block}ul,ol{list-style:none}::selection{background:var(--accent);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}.skip{z-index:200;background:var(--fg);color:var(--bg);border-radius:10px;padding:10px 16px;transition:top .3s;position:fixed;top:-60px;left:12px}.skip:focus{top:12px}.mono{font-family:var(--mono);letter-spacing:0;text-transform:uppercase;font-size:12px}.muted{color:var(--faint)}.empty{color:var(--muted);padding:24px 0}.textlink{border-bottom:1px solid var(--line-strong);transition:border-color .3s,color .3s}.textlink:hover{border-color:var(--accent);color:var(--accent)}[data-in],[data-reveal],[data-eyebrow],[data-rise],.hero__name,.prow,.service,.lang,.step,.now__item,.repo,.nrow,.quote{opacity:0}.stage{z-index:30;inset:0;position:fixed!important}.stage,.stage *{pointer-events:none!important}.btn{white-space:nowrap;height:46px;transition:background-color .3s, color .3s, border-color .3s, transform .4s var(--ease), box-shadow .4s var(--ease);border-radius:999px;align-items:center;gap:10px;padding:0 20px;font-size:15px;font-weight:500;display:inline-flex}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.6;cursor:progress}.btn--dark{background:var(--fg);color:var(--bg)}.btn--dark:hover{box-shadow:0 10px 24px -10px color-mix(in srgb, var(--fg) 60%, transparent)}.btn--line{border:1px solid var(--line-strong)}.btn--line:hover{border-color:var(--fg)}.btn__label{vertical-align:bottom;line-height:1.3;display:inline-block;position:relative;overflow:hidden}.btn__label:after{content:attr(data-text);position:absolute;top:100%;left:0}.btn__label,.btn__label:after{transition:transform .55s var(--ease)}@media (hover:hover){.btn:hover .btn__label{transform:translateY(-100%)}.btn:hover svg{transform:translate(2px,2px)}}.btn svg{transition:transform .5s var(--ease)}.icon-btn{border:1px solid var(--line-strong);width:46px;height:46px;transition:background-color .3s, color .3s, transform .4s var(--ease);border-radius:50%;place-items:center;display:grid}.icon-btn:hover{background:var(--fg);color:var(--bg);transform:translateY(-2px)}.status{height:26px;font-family:var(--mono);text-transform:uppercase;white-space:nowrap;border:1px solid var(--line);color:var(--muted);border-radius:999px;align-items:center;gap:7px;width:max-content;padding:0 10px;font-size:10.5px;display:inline-flex}.status i{background:var(--faint);border-radius:50%;width:6px;height:6px}.status--live{color:color-mix(in srgb, var(--amber) 75%, var(--fg));border-color:color-mix(in srgb, var(--amber) 35%, transparent)}.status--live i{background:var(--amber);animation:1.6s ease-in-out infinite blink}.status--done{color:color-mix(in srgb, var(--mint) 75%, var(--fg));border-color:color-mix(in srgb, var(--mint) 35%, transparent)}.status--done i{background:var(--mint)}@keyframes blink{50%{opacity:.3}}.status-dot{align-items:center;gap:9px;font-size:14px;display:inline-flex}.pulse{background:var(--ok);border-radius:50%;flex-shrink:0;width:7px;height:7px;display:inline-block;position:relative}.pulse:after{content:"";background:inherit;animation:ping 2.2s var(--ease) infinite;border-radius:50%;position:absolute;inset:0}@keyframes ping{0%{opacity:.7;transform:scale(1)}80%,to{opacity:0;transform:scale(3)}}.tags{flex-wrap:wrap;gap:6px;display:flex}.tags li{font-family:var(--mono);text-transform:uppercase;color:var(--muted);background:var(--surface);border-radius:6px;padding:4px 9px;font-size:11px}.back{color:var(--muted);transition:color .3s, gap .4s var(--ease);align-items:center;gap:8px;display:inline-flex}.back:hover{color:var(--fg);gap:12px}[data-spot]{isolation:isolate;position:relative}[data-spot]:after{content:"";z-index:-1;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .45s var(--ease);background:radial-gradient(320px circle at var(--mx,50%) var(--my,0%), color-mix(in srgb, var(--c,var(--accent)) 11%, transparent), transparent 70%);position:absolute;inset:-1px}[data-spot]:hover:after{opacity:1}.nav{z-index:50;height:var(--nav-h);padding:0 var(--pad);transition:transform .6s var(--ease), background-color .4s, border-color .4s;border-bottom:1px solid #0000;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;display:grid;position:fixed;top:0;left:0;right:0}.nav.is-scrolled{background:color-mix(in srgb, var(--bg) 80%, transparent);-webkit-backdrop-filter:blur(16px)saturate(1.4);border-bottom-color:var(--line)}.nav.is-hidden{transform:translateY(-100%)}.nav__progress{background:var(--accent);transform-origin:0;pointer-events:none;height:2px;position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.nav__brand{letter-spacing:-.02em;align-items:center;gap:10px;width:max-content;font-weight:500;display:flex}.nav__mark{background:var(--fg);width:30px;height:30px;color:var(--bg);transition:transform .6s var(--ease), border-radius .6s var(--ease), background-color .4s;border-radius:9px;place-items:center;font-size:14px;font-weight:600;display:grid}.nav__brand:hover .nav__mark{background:var(--accent);border-radius:50%;transform:rotate(-90deg)}.nav__links{border-radius:999px;align-items:center;gap:2px;padding:4px;display:flex}.nav__links a{color:var(--muted);padding:8px 13px;font-size:14.5px;transition:color .3s;position:relative}.nav__links a:after{content:"";background:var(--accent);transform-origin:100%;height:1.5px;transition:transform .5s var(--ease);border-radius:2px;position:absolute;bottom:3px;left:13px;right:13px;transform:scaleX(0)}.nav__links a:hover,.nav__links a.is-active{color:var(--fg)}.nav__links a:hover:after,.nav__links a.is-active:after{transform-origin:0;transform:scaleX(1)}.nav__tools{justify-content:flex-end;align-items:center;gap:6px;display:flex}.nav__k{border:1px solid var(--line-strong);height:34px;color:var(--muted);border-radius:9px;padding:0 11px;font-size:11px;transition:color .3s,border-color .3s}.nav__k:hover{color:var(--fg);border-color:var(--fg)}.nav__icon{border:1px solid var(--line-strong);border-radius:50%;place-items:center;width:34px;height:34px;transition:background-color .3s;display:grid;position:relative}.nav__icon:hover{background:var(--surface)}.nav__icon>span{transition:transform .6s var(--ease), opacity .4s;display:grid;position:absolute}.nav__icon>span.is-hidden{opacity:0;transform:rotate(-90deg)scale(.5)}.nav__swatch{background:var(--accent);width:14px;height:14px;box-shadow:0 0 0 3px var(--accent-soft);border-radius:50%}.nav__picker{position:relative}.swatches{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;transform-origin:100% 0;transition:opacity .3s, transform .45s var(--ease), visibility .3s;border-radius:999px;gap:6px;padding:8px;display:flex;position:absolute;top:calc(100% + 10px);right:-6px;transform:translateY(-6px)scale(.96)}.swatches.is-open{opacity:1;visibility:visible;transform:none}.swatches button{width:22px;height:22px;transition:transform .4s var(--ease), box-shadow .3s;border-radius:50%}.swatches button:hover{transform:scale(1.15)}.swatches button.is-active{box-shadow:0 0 0 2px var(--card), 0 0 0 4px var(--fg)}.nav__burger{border:1px solid var(--line-strong);border-radius:50%;width:38px;height:38px;display:none;position:relative}.nav__burger span{background:var(--fg);height:1.5px;transition:transform .5s var(--ease), top .5s var(--ease);border-radius:2px;position:absolute;left:11px;right:11px}.nav__burger span:first-child{top:15px}.nav__burger span:last-child{top:21px}.nav__burger.is-open span:first-child{top:18px;transform:rotate(45deg)}.nav__burger.is-open span:last-child{top:18px;transform:rotate(-45deg)}.sheet{display:none}html.menu-open{overflow:hidden}.palette{z-index:100;background:color-mix(in srgb, var(--bg) 55%, transparent);-webkit-backdrop-filter:blur(8px);opacity:0;visibility:hidden;place-items:start center;padding:12vh 16px 16px;transition:opacity .25s,visibility .25s;display:grid;position:fixed;inset:0}.palette.is-open{opacity:1;visibility:visible}.palette__box{background:var(--card);border:1px solid var(--line);width:min(600px,100%);box-shadow:var(--shadow-lg);transition:transform .4s var(--ease);border-radius:18px;overflow:hidden;transform:translateY(-10px)scale(.98)}.palette.is-open .palette__box{transform:none}.palette__search{border-bottom:1px solid var(--line);height:56px;color:var(--muted);align-items:center;gap:12px;padding:0 16px;display:flex}.palette__search input{height:100%;color:var(--fg);background:0 0;border:0;outline:0;flex:1;font-size:16px}.palette__search kbd{border:1px solid var(--line-strong);border-radius:5px;padding:3px 6px;font-size:10.5px}.palette__list{overscroll-behavior:contain;max-height:min(420px,60vh);padding:8px;overflow-y:auto}.palette__group{color:var(--faint);padding:10px 10px 6px;font-size:10.5px}.palette__item{text-align:left;width:100%;color:var(--muted);border-radius:10px;align-items:center;gap:12px;padding:10px;font-size:15px;display:flex}.palette__item span:nth-child(2){color:var(--fg)}.palette__item.is-sel{background:var(--surface)}.palette__hint{color:var(--faint);margin-left:auto;font-size:13px}.palette__swatch{border-radius:50%;width:16px;height:16px}.palette__empty{color:var(--muted);padding:18px 10px}.hero{max-width:var(--max);padding:calc(var(--nav-h) + 40px) var(--pad) 0;margin:0 auto}.hero__meta{border-bottom:1px solid var(--line);color:var(--muted);align-items:center;gap:22px;padding-bottom:18px;display:flex}.hero__since{margin-left:auto}.hero__name{letter-spacing:-.065em;white-space:nowrap;margin:clamp(18px,3vw,34px) 0 0 -.06em;font-size:clamp(64px,13.4vw,196px);font-weight:500;line-height:.88;display:inline-block}.hero__row{justify-content:space-between;align-items:flex-end;gap:32px;margin-top:clamp(22px,3vw,36px);display:flex}.hero__intro{letter-spacing:-.02em;max-width:560px;font-size:clamp(19px,1.8vw,24px);line-height:1.32}.hero__ctas{flex-shrink:0;gap:10px;display:flex}.hcard{cursor:grab;touch-action:pan-y;-webkit-user-select:none;user-select:none;background:radial-gradient(60% 50% at 18% 0%, color-mix(in srgb, var(--accent) 12%, transparent), transparent 70%), radial-gradient(50% 50% at 90% 100%, color-mix(in srgb, var(--blue) 10%, transparent), transparent 70%), radial-gradient(120% 90% at 50% 10%, var(--card), var(--surface));border:1px solid var(--line);border-radius:28px;height:clamp(380px,100svh - 500px,600px);margin-top:clamp(28px,4vw,48px);position:relative;overflow:hidden}.hcard.is-dragging,.work__screen.is-dragging,.contact__spot.is-dragging,.case__stage.is-dragging{cursor:grabbing}.hcard__grid{pointer-events:none;background-image:radial-gradient(circle, var(--line-strong) 1px, transparent 1.4px);background-size:22px 22px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(75% 70% at 50% 45%,#000 20%,#0000 80%);mask-image:radial-gradient(75% 70% at 50% 45%,#000 20%,#0000 80%)}.hcard__hint{color:var(--muted);pointer-events:none;align-items:center;gap:8px;display:inline-flex;position:absolute;bottom:18px;left:20px}.hcard__now{z-index:31;background:color-mix(in srgb, var(--card) 88%, transparent);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);height:36px;animation:chip-in .6s var(--ease);border-radius:999px;align-items:center;gap:8px;padding:0 14px;font-size:14px;display:inline-flex;position:absolute;bottom:14px;right:16px}@keyframes chip-in{0%{opacity:0;transform:translateY(8px)}}.hcard__now i{background:var(--accent);border-radius:50%;width:6px;height:6px}.hcard__now .mono{color:var(--muted);font-size:11px}.hcard__now b{font-weight:500}.marquee{max-width:var(--max);margin:clamp(28px,4vw,44px) auto 0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000);mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000)}.marquee__track{will-change:transform;width:max-content;display:flex}.marquee__row{gap:40px;padding-right:40px;display:flex}.marquee__row li{color:var(--muted);white-space:nowrap;align-items:center;gap:10px;font-size:16px;font-weight:500;display:inline-flex}.section{max-width:var(--max);padding:clamp(88px, 11vw, 140px) var(--pad) 0;margin:0 auto;scroll-margin-top:40px}.shead{margin-bottom:clamp(32px,4vw,52px)}.shead__label{color:var(--muted);gap:8px;margin-bottom:18px;display:flex}.shead__label span{color:var(--accent)}.shead__row{justify-content:space-between;align-items:flex-end;gap:24px;display:flex}.shead__title{letter-spacing:-.05em;max-width:900px;font-size:clamp(36px,5vw,68px);font-weight:500;line-height:1}.shead__aside{color:var(--muted);flex-shrink:0;padding-bottom:8px}.work__layout{grid-template-columns:1.15fr 1fr;align-items:start;gap:clamp(24px,4vw,56px);display:grid}.projects{border-top:1px solid var(--line)}.prow{border-bottom:1px solid var(--line);grid-template-columns:34px 1fr auto 40px;align-items:center;gap:18px;padding:26px 0;display:grid;position:relative}.prow:before{content:"";background:var(--accent);width:3px;transition:transform .5s var(--ease);border-radius:3px;position:absolute;top:26px;bottom:26px;left:-2px;transform:scaleY(0)}.prow.is-hover:before{transform:scaleY(1)}.prow__idx{color:var(--faint);transition:color .3s}.prow.is-hover .prow__idx{color:var(--accent)}.prow__main{min-width:0;transition:transform .6s var(--ease);gap:6px;display:grid}.prow.is-hover .prow__main{transform:translate(8px)}.prow__title{letter-spacing:-.045em;font-size:clamp(26px,2.8vw,40px);font-weight:500;line-height:1}.prow__meta{color:var(--muted);font-size:11px}.prow__desc{max-width:440px;color:var(--muted);font-size:14.5px;line-height:1.45}.prow__new{vertical-align:.5em;letter-spacing:0;color:var(--accent);background:var(--accent-soft);border-radius:5px;margin-left:10px;padding:3px 7px;font-size:10px;font-weight:500;display:inline-block}.prow__tags{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.prow__tags i{font-style:normal;font-family:var(--mono);text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:3px 8px;font-size:10.5px;transition:border-color .3s,color .3s}.prow.is-hover .prow__tags i{border-color:var(--line-strong);color:var(--fg)}.prow__arrow{border:1px solid var(--line-strong);width:40px;height:40px;transition:background-color .3s, color .3s, border-color .3s, transform .5s var(--ease);border-radius:50%;place-items:center;display:grid}.prow.is-hover .prow__arrow{background:var(--accent);border-color:var(--accent);color:#fff;transform:rotate(45deg)}.prow__thumb{display:none}.work__panel{top:calc(var(--nav-h) + 24px);position:sticky}.work__screen{aspect-ratio:5/4;cursor:grab;touch-action:pan-y;-webkit-user-select:none;user-select:none;border:1px solid var(--line);background:radial-gradient(70% 60% at 50% 40%, color-mix(in srgb, var(--accent) 10%, transparent), transparent 70%), radial-gradient(120% 90% at 50% 10%, var(--card), var(--surface));border-radius:24px}.work__caption{color:var(--muted);min-height:16px;margin-top:12px;font-size:11px}.work__caption b{color:var(--fg);font-weight:500}.feature{border:1px solid var(--line);background:radial-gradient(60% 80% at 100% 0%, color-mix(in srgb, var(--pc) 16%, transparent), transparent 70%), radial-gradient(50% 60% at 0% 100%, color-mix(in srgb, var(--pc) 7%, transparent), transparent 70%), var(--card);border-radius:28px;grid-template-columns:.8fr 1.2fr;align-items:center;gap:clamp(24px,4vw,56px);margin-bottom:clamp(48px,6vw,80px);padding:clamp(20px,3vw,40px);display:grid}.feature__eyebrow{color:var(--muted);align-items:center;gap:10px;display:flex}.feature__eyebrow b{color:#fff;background:var(--pc);border-radius:5px;padding:3px 7px;font-weight:500}.feature__title{letter-spacing:-.06em;margin-top:20px;font-size:clamp(48px,6.4vw,92px);font-weight:500;line-height:.9}.feature__title a{transition:color .4s}.feature__title a:hover{color:var(--pc)}.feature__desc{max-width:420px;color:var(--muted);margin-top:18px;font-size:17px;line-height:1.5}.feature .tags{margin-top:22px}.feature__ctas{flex-wrap:wrap;gap:10px;margin-top:28px;display:flex}.feature__media{perspective:1400px;display:block}.feature__frame{border:1px solid var(--line);background:var(--card);box-shadow:0 2px 4px #0000000a, 0 40px 80px -30px color-mix(in srgb, var(--pc) 45%, #14140a66);transform-origin:50% 100%;will-change:transform;border-radius:16px;overflow:hidden}.feature__frame img{aspect-ratio:16/10;object-fit:cover;width:100%;transition:transform 1.2s var(--ease)}.feature__media:hover .feature__frame img{transform:scale(1.03)}.services{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.service{--c:var(--accent);background:var(--card);border:1px solid var(--line);transition:transform .5s var(--ease), box-shadow .5s var(--ease), border-color .3s;border-radius:22px;padding:22px}.service:hover{box-shadow:var(--shadow-lg);border-color:color-mix(in srgb, var(--c) 35%, transparent);transform:translateY(-4px)}.service__top{justify-content:space-between;align-items:center;display:flex}.service__n{color:var(--faint)}.service__icon{width:42px;height:42px;color:var(--c);background:color-mix(in srgb, var(--c) 13%, transparent);transition:transform .5s var(--ease);border-radius:12px;place-items:center;display:grid}.service:hover .service__icon{transform:rotate(-8deg)scale(1.06)}.service h3{letter-spacing:-.03em;margin-top:40px;font-size:21px;font-weight:500}.service p{color:var(--muted);margin-top:10px;font-size:15px;line-height:1.55}.about__statement{letter-spacing:-.045em;max-width:1060px;font-size:clamp(32px,4.4vw,60px);font-weight:500;line-height:1.04}.about__grid{grid-template-columns:1fr 1.25fr;gap:clamp(32px,6vw,96px);margin-top:clamp(40px,5vw,64px);display:grid}.stats{border-top:1px solid var(--line-strong);grid-template-columns:repeat(3,1fr);align-content:start;gap:16px;padding-top:22px;display:grid}.stat dt{letter-spacing:-.05em;font-variant-numeric:tabular-nums;font-size:clamp(34px,3.6vw,52px);font-weight:500}.stat:first-child dt{color:var(--accent)}.stat dd{color:var(--muted);margin-top:6px;font-size:10.5px}.about__text{border-top:1px solid var(--line-strong);gap:16px;padding-top:22px;display:grid}.about__text p{color:var(--muted);font-size:17px;line-height:1.6}.about__text p:first-child{color:var(--fg)}.now{grid-template-columns:repeat(4,1fr);gap:0 28px;display:grid}.now__item{border-top:1px solid var(--line-strong);padding-top:20px}.now__label{color:var(--muted);align-items:center;gap:9px;display:flex}.now__item:first-child .pulse{background:var(--accent)}.now__item:nth-child(2) .pulse{background:var(--blue)}.now__item:nth-child(3) .pulse{background:var(--violet)}.now__item:nth-child(4) .pulse{background:var(--mint)}.now__item p{letter-spacing:-.02em;margin-top:14px;font-size:19px;line-height:1.35}.repos{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.repo{background:var(--card);border:1px solid var(--line);min-height:124px;transition:transform .5s var(--ease), box-shadow .5s var(--ease), border-color .3s;border-radius:20px;flex-direction:column;gap:10px;padding:20px;display:flex}.repo:hover{box-shadow:var(--shadow-lg);border-color:var(--line-strong);transform:translateY(-4px)}.repo--skeleton{opacity:1;background:linear-gradient(90deg, var(--card), var(--surface), var(--card));background-size:200% 100%;animation:1.4s linear infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.repo__top{color:var(--muted);align-items:center;gap:10px;display:flex}.repo__name{color:var(--fg);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.repo__arrow{opacity:0;transition:opacity .3s, transform .5s var(--ease);margin-left:auto;transform:translate(-4px,4px)}.repo:hover .repo__arrow{opacity:1;color:var(--accent);transform:none}.repo__desc{color:var(--muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:14.5px;line-height:1.5;display:-webkit-box;overflow:hidden}.repo__meta{color:var(--muted);gap:14px;margin-top:auto;font-size:10.5px;display:flex}.repo__meta span{align-items:center;gap:6px;display:inline-flex}.repo__meta i{border-radius:50%;width:8px;height:8px}.langs{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:36px;display:flex}.langs__label{color:var(--muted);margin-right:10px}.lang{background:var(--card);border:1px solid var(--line);letter-spacing:-.01em;height:42px;transition:transform .45s var(--ease), border-color .3s;border-radius:999px;align-items:center;gap:9px;padding:0 16px 0 12px;font-weight:500;display:inline-flex}.lang:hover{border-color:var(--line-strong);transform:translateY(-3px)}.tabs{background:var(--surface);border-radius:12px;flex-wrap:wrap;gap:2px;max-width:100%;margin-bottom:16px;padding:4px;display:inline-flex;position:relative}.tabs button{z-index:1;color:var(--muted);border-radius:9px;padding:8px 14px;font-size:14px;font-weight:500;transition:color .3s;position:relative}.tabs button.is-active{color:var(--fg)}.tabs sup{font-family:var(--mono);color:var(--faint);margin-left:2px;font-size:10px}.tabs__pill{background:var(--card);box-shadow:var(--shadow);transition:transform .55s var(--ease), width .55s var(--ease);border-radius:9px;position:absolute;top:4px;bottom:4px;left:0}.tools{border-top:1px solid var(--line);grid-template-columns:repeat(3,1fr);gap:0 28px;display:grid}.tool{border-bottom:1px solid var(--line);align-items:center;gap:14px;padding:16px 36px 16px 0;display:flex;position:relative}.tool__icon{background:var(--card);border:1px solid var(--line);width:44px;height:44px;box-shadow:var(--shadow);transition:transform .5s var(--ease);border-radius:12px;flex-shrink:0;place-items:center;display:grid}.tool:hover .tool__icon{transform:scale(1.08)rotate(-6deg)}.tool__text{gap:2px;min-width:0;display:grid}.tool__name{letter-spacing:-.015em;font-weight:500}.tool__desc{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;overflow:hidden}.tool__arrow{color:var(--faint);opacity:0;transition:opacity .3s, transform .5s var(--ease);position:absolute;right:4px;transform:translate(-6px,6px)}.tool:hover .tool__arrow{opacity:1;color:var(--accent);transform:none}.brand{color:var(--brand);flex-shrink:0}.brand--mono{color:#fff;background:var(--brand);border-radius:6px;place-items:center;font-size:10px;font-weight:700;display:inline-grid}.steps{border-top:1px solid var(--line)}.step{border-bottom:1px solid var(--line);grid-template-columns:220px 1fr 260px;align-items:start;gap:28px;padding:32px 0;display:grid;position:relative}.step__line{width:100%;height:1px;position:absolute;top:-1px;left:0;overflow:hidden}.step__line i{background:var(--accent);transform-origin:0;transition:transform 1.2s var(--ease) .2s;position:absolute;inset:0;transform:scaleX(0)}.step.is-in .step__line i{transform:scaleX(1)}.step__year{letter-spacing:-.05em;align-items:center;gap:10px;font-size:clamp(30px,3.4vw,44px);font-weight:500;line-height:1;display:flex}.step__year b{color:var(--accent);background:var(--accent-soft);border-radius:5px;padding:3px 7px;font-size:10.5px;font-weight:500}.step__body h3{letter-spacing:-.03em;font-size:22px;font-weight:500}.step__body p{max-width:520px;color:var(--muted);margin-top:8px;font-size:16px;line-height:1.55}.step .tags{justify-content:flex-end}.notes{border-top:1px solid var(--line)}.nrow{border-bottom:1px solid var(--line);grid-template-columns:130px 1fr auto 40px;align-items:center;gap:20px;padding:24px 0;display:grid}.nrow__date,.nrow__read{color:var(--muted)}.nrow__main{transition:transform .6s var(--ease);gap:4px;display:grid}.nrow:hover .nrow__main{transform:translate(8px)}.nrow__title{letter-spacing:-.03em;font-size:22px;font-weight:500}.nrow__summary{color:var(--muted);font-size:15px}.nrow:hover .prow__arrow{background:var(--accent);border-color:var(--accent);color:#fff;transform:rotate(45deg)}.quotes{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px;display:grid}.quote{background:var(--card);border:1px solid var(--line);border-radius:22px;align-content:space-between;gap:22px;padding:26px;display:grid}.quote blockquote{letter-spacing:-.02em;font-size:19px;line-height:1.45}.quote figcaption{grid-template-columns:36px 1fr;align-items:center;gap:0 12px;font-size:14px;display:grid}.quote figcaption span:last-child{color:var(--muted);grid-column:2}.quote__avatar{background:var(--accent-soft);width:36px;height:36px;color:var(--accent);border-radius:50%;grid-row:span 2;place-items:center;font-weight:600;display:grid}.contact{padding-bottom:clamp(80px,10vw,130px)}.contact__top{grid-template-columns:1fr 340px;align-items:end;gap:24px;display:grid}.contact__email{text-align:left;min-width:0;display:block}.contact__email-text{letter-spacing:-.06em;white-space:nowrap;font-size:clamp(30px,5.6vw,84px);font-weight:500;line-height:1;transition:color .4s;display:block}.contact__email:hover .contact__email-text{color:var(--accent)}.contact__copy{color:var(--muted);align-items:center;gap:8px;margin-top:16px;display:inline-flex}.contact__copy.is-copied{color:var(--ok)}.contact__spot{cursor:grab;touch-action:pan-y;-webkit-user-select:none;user-select:none;border-radius:24px;height:250px}.contact__row{border-top:1px solid var(--line);justify-content:space-between;align-items:flex-end;gap:28px;margin-top:clamp(36px,5vw,56px);padding-top:24px;display:flex}.contact__note{max-width:360px;color:var(--muted);font-size:17px;line-height:1.5}.contact__links{flex-wrap:wrap;gap:8px;display:flex}.cform{background:var(--card);border:1px solid var(--line);border-radius:24px;grid-template-columns:1fr 1fr;gap:14px;margin-top:40px;padding:24px;display:grid}.cform label{gap:8px;display:grid}.cform label .mono{color:var(--muted);font-size:11px}.cform input,.cform textarea{border:1px solid var(--line-strong);background:var(--bg);resize:vertical;border-radius:12px;outline:0;width:100%;padding:12px 14px;transition:border-color .3s,box-shadow .3s}.cform input:focus,.cform textarea:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.cform__wide,.cform__foot{grid-column:1/-1}.cform__foot{justify-content:space-between;align-items:center;gap:16px;display:flex}.cform__status{color:var(--muted)}.toast{z-index:60;background:var(--fg);color:var(--bg);opacity:0;visibility:hidden;transition:transform .6s var(--ease), opacity .4s, visibility .4s;border-radius:999px;padding:11px 18px;font-size:14px;font-weight:500;position:fixed;bottom:24px;left:50%;transform:translate(-50%,16px)}.toast.is-visible{opacity:1;visibility:visible;transform:translate(-50%)}.subpage{min-height:70vh}.page{max-width:var(--max);padding:calc(var(--nav-h) + 48px) var(--pad) clamp(80px, 10vw, 130px);margin:0 auto}.page__title{letter-spacing:-.06em;max-width:1000px;margin-top:26px;font-size:clamp(44px,7vw,104px);font-weight:500;line-height:.95}.page__lead{max-width:560px;color:var(--muted);margin:20px 0 40px;font-size:19px;line-height:1.45}.case__eyebrow{color:var(--muted);gap:10px;margin-top:28px;display:flex}.case__eyebrow span{color:var(--pc,var(--accent))}.case__title{letter-spacing:-.065em;margin-top:14px;font-size:clamp(54px,10vw,150px);font-weight:500;line-height:.9}.case__lead{letter-spacing:-.02em;max-width:640px;color:var(--muted);margin-top:22px;font-size:clamp(19px,1.8vw,24px);line-height:1.35}.case__facts{border-top:1px solid var(--line-strong);grid-template-columns:repeat(4,1fr);gap:16px;margin-top:40px;padding-top:20px;display:grid}.case__facts dt{color:var(--muted);font-size:11px}.case__facts dd{margin-top:8px;font-size:15px}.case__stage{cursor:grab;touch-action:pan-y;-webkit-user-select:none;user-select:none;border:1px solid var(--line);background:radial-gradient(60% 55% at 50% 35%, color-mix(in srgb, var(--pc,var(--accent)) 18%, transparent), transparent 70%), radial-gradient(120% 90% at 50% 10%, var(--card), var(--surface));border-radius:28px;height:clamp(360px,64vh,640px);margin-top:40px;position:relative}.case__visit{z-index:31;position:absolute;bottom:16px;right:16px}.case__body{grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,72px);margin-top:clamp(48px,6vw,80px);display:grid}.case__h{color:var(--muted);border-bottom:1px solid var(--line-strong);margin-bottom:18px;padding-bottom:14px}.case__text{letter-spacing:-.01em;font-size:19px;line-height:1.55}.case__list{gap:12px;display:grid}.case__list li{gap:12px;font-size:17px;line-height:1.45;display:flex}.case__list li:before{content:"";background:var(--pc,var(--accent));border-radius:2px;flex:0 0 8px;height:8px;margin-top:.5em}.case__shot{border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow-lg);border-radius:18px;margin-top:clamp(48px,6vw,80px);overflow:hidden}.case__shot img{width:100%}.frame__bar{border-bottom:1px solid var(--line);background:var(--surface);align-items:center;gap:6px;height:36px;padding:0 14px;display:flex}.frame__bar i{border-radius:50%;width:10px;height:10px}.frame__bar i:first-child{background:#ff5f57}.frame__bar i:nth-child(2){background:#febc2e}.frame__bar i:nth-child(3){background:#28c840}.frame__url{color:var(--muted);text-transform:none;margin:0 auto;font-size:11px}.case__next{border-top:1px solid var(--line-strong);color:var(--muted);gap:10px;margin-top:clamp(56px,8vw,110px);padding-top:24px;display:grid}.case__next-title{color:var(--fg);letter-spacing:-.055em;transition:color .4s, gap .6s var(--ease);align-items:center;gap:16px;font-size:clamp(40px,6vw,88px);font-weight:500;line-height:1;display:flex}.case__next:hover .case__next-title{color:var(--pc,var(--accent));gap:28px}.note{max-width:820px}.note__meta{color:var(--muted);margin-top:28px}.note .page__title{margin-top:14px;font-size:clamp(40px,6vw,76px)}.note .tags{margin-top:20px}.prose{margin-top:40px;font-size:18px;line-height:1.7}.prose>*+*{margin-top:1.1em}.prose h2{letter-spacing:-.035em;margin-top:2em;font-size:28px;font-weight:500;line-height:1.15}.prose h3{margin-top:1.6em;font-size:21px;font-weight:500}.prose a{color:var(--accent);border-bottom:1px solid}.prose ul,.prose ol{padding-left:1.3em;list-style:outside}.prose ol{list-style:decimal}.prose code{font-family:var(--mono);background:var(--surface);border-radius:6px;padding:2px 6px;font-size:.86em}.prose pre{color:#e9e7e2;background:#121214;border-radius:14px;padding:18px 20px;font-size:14px;line-height:1.6;overflow-x:auto}.prose pre code{color:inherit;background:0 0;padding:0}.prose blockquote{border-left:3px solid var(--accent);color:var(--muted);padding-left:18px}.prose img{border-radius:14px}.notfound{align-content:center;justify-items:start;gap:24px;min-height:70vh;display:grid}.notfound .mono{color:var(--accent)}.resume__bar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:28px;display:flex}.cv{background:var(--card);border:1px solid var(--line);max-width:860px;box-shadow:var(--shadow);color:var(--fg);border-radius:20px;margin:0 auto;padding:clamp(28px,5vw,64px);font-size:14.5px;line-height:1.55}.cv__head{border-bottom:2px solid var(--fg);justify-content:space-between;gap:24px;padding-bottom:22px;display:flex}.cv__head h1{letter-spacing:-.04em;font-size:40px;font-weight:600;line-height:1}.cv__headline{color:var(--accent);margin-top:8px;font-weight:500}.cv__contact{text-align:right;color:var(--muted);font-size:13px;line-height:1.6}.cv__sec{padding-top:22px}.cv__sec h2{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);border-bottom:1px solid var(--line-strong);margin-bottom:12px;padding-bottom:8px;font-size:11.5px;font-weight:500}.cv__sec>p+p{margin-top:6px}.cv__item+.cv__item{margin-top:14px}.cv__row{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.cv__row h3{font-size:15.5px;font-weight:600}.cv__row h3 span{color:var(--muted);font-weight:400}.cv__date{color:var(--muted);flex-shrink:0;font-size:13px}.cv__item ul,.cv__cols{margin-top:6px;padding-left:1.1em;list-style:outside}.cv__meta{color:var(--muted);margin-top:4px;font-size:13px}@media print{@page{size:A4;margin:14mm}:root,:root[data-theme=dark]{--bg:#fff;--fg:#111;--muted:#555;--card:#fff;--line:#ddd;--line-strong:#bbb;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html{background:#fff}.nav,.footer,.stage,.palette,.toast,.no-print{display:none!important}.page{padding:0}.cv{box-shadow:none;border:0;max-width:none;padding:0;font-size:12.5px}.cv__item{break-inside:avoid}[data-in],[data-reveal],[data-rise]{opacity:1!important}}.footer{background:var(--fg);color:var(--bg);padding:clamp(56px, 7vw, 88px) var(--pad) 24px;z-index:31;border-radius:28px 28px 0 0;position:relative;overflow:hidden}.footer__cols{max-width:var(--max);grid-template-columns:1fr 1fr 2fr;gap:28px;margin:0 auto;display:grid}.footer__cols>div{align-content:start;gap:8px;display:grid}.footer__cols a{opacity:.72;width:max-content;transition:opacity .3s,color .3s}.footer__cols a:hover{opacity:1;color:var(--accent)}.footer__h{opacity:.5;margin-bottom:6px}.footer__clock{text-align:right;justify-items:end}.footer__time{letter-spacing:-.05em;font-variant-numeric:tabular-nums;font-size:clamp(40px,5vw,64px);font-weight:500}.footer__big-wrap{max-width:var(--max);margin:clamp(40px,6vw,80px) auto 0;overflow:hidden}.footer__big{letter-spacing:-.07em;white-space:nowrap;margin-left:-.05em;padding-bottom:.03em;font-weight:500;line-height:.85;display:inline-block}.footer__bar{max-width:var(--max);opacity:.55;justify-content:space-between;gap:16px;margin:28px auto 0;font-size:11px;display:flex}.footer__bar button{text-transform:uppercase}@media (width<=1100px){.nav{grid-template-columns:auto 1fr auto}.nav__links{justify-content:center}.services{grid-template-columns:1fr 1fr}.now{grid-template-columns:1fr 1fr;gap:28px}.repos,.tools{grid-template-columns:1fr 1fr}.step{grid-template-columns:150px 1fr}.step .tags{grid-column:2;justify-content:flex-start}.case__facts{grid-template-columns:1fr 1fr}}@media (hover:none){.work__hint:after{content:" (scroll the list)"}}@media (width<=899px){.work__layout,.feature{grid-template-columns:1fr}.feature__media{order:-1}.work__panel{top:calc(var(--nav-h) - 6px);z-index:2;margin:0 calc(var(--pad) * -1);padding:8px var(--pad) 10px;background:var(--bg);box-shadow:0 12px 16px -12px color-mix(in srgb, var(--bg) 100%, transparent);order:-1}.work__caption{margin-top:8px}.work__screen{aspect-ratio:auto;border-radius:20px;height:34vh;min-height:220px}.contact__top{grid-template-columns:1fr}.contact__spot{order:-1;height:230px}}@media (width<=720px){:root{--nav-h:60px}.contact__email-text{white-space:normal;overflow-wrap:anywhere;font-size:clamp(30px,10.5vw,56px)}.nav{grid-template-columns:1fr auto;gap:8px}.nav__links,.nav__k,.nav__picker{display:none}.nav__tools{gap:6px}.nav__burger{display:block}.nav.is-scrolled,.menu-open .nav{background:color-mix(in srgb, var(--bg) 92%, transparent)}.menu-open .nav{transform:none}.sheet{left:0;right:0;top:var(--nav-h);height:calc(100dvh - var(--nav-h));padding:28px var(--pad) calc(28px + env(safe-area-inset-bottom));background:var(--bg);clip-path:inset(0 0 100%);transition:clip-path .7s var(--ease);z-index:-1;flex-direction:column;justify-content:space-between;display:flex;position:fixed}.sheet.is-open{clip-path:inset(0)}.sheet__links{display:grid}.sheet__links a{border-bottom:1px solid var(--line);letter-spacing:-.05em;opacity:0;transition:opacity .5s, transform .7s var(--ease);align-items:baseline;gap:14px;padding:12px 0;font-size:40px;font-weight:500;line-height:1;display:flex;transform:translateY(24px)}.sheet__links a .mono{color:var(--accent);letter-spacing:0;font-size:11px}.sheet.is-open .sheet__links a{opacity:1;transition-delay:calc(.15s + var(--i) * 50ms);transform:none}.sheet__foot{color:var(--muted);justify-content:space-between;align-items:center;display:flex}.sheet__swatches{gap:10px;display:flex}.sheet__swatches button{border-radius:50%;width:28px;height:28px}.sheet__swatches button.is-active{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--fg)}.hero{padding-top:calc(var(--nav-h) + 24px)}.hero__meta{flex-wrap:wrap;gap:6px 16px}.hero__since{display:none}.hero__name{white-space:normal;font-size:clamp(60px,19vw,96px)}.hero__row{flex-direction:column;align-items:flex-start}.hcard{border-radius:22px;height:360px}.hcard__hint{font-size:10.5px;inset:14px 14px auto}.hcard__hint:after{content:" · tap to switch"}.hcard__now{justify-content:center;left:12px;right:12px}.shead__row{flex-direction:column;align-items:flex-start}.prow{grid-template-columns:1fr 40px;gap:14px;padding:22px 0}.prow__idx,.prow .status,.prow:before{display:none}.services,.now,.repos,.tools{grid-template-columns:1fr}.service h3{margin-top:22px}.about__grid{grid-template-columns:1fr}.step{grid-template-columns:1fr;gap:12px}.step .tags{grid-column:auto}.nrow{grid-template-columns:1fr 40px;gap:6px 14px}.nrow__date{grid-column:1}.nrow__read{display:none}.nrow .prow__arrow{grid-area:1/2/span 2}.contact__row{flex-direction:column;align-items:flex-start}.cform,.case__body{grid-template-columns:1fr}.cv__head{flex-direction:column}.cv__contact{text-align:left}.cv__row{flex-direction:column;gap:2px}.footer__cols{grid-template-columns:1fr 1fr}.footer__clock{text-align:left;grid-column:1/-1;justify-items:start}.footer__bar{flex-direction:column}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation:none!important}}
