:root{--bg:#fafaf9;--fg:#0c0d10;--mut:#62666f;--ln:#e3e3df;--card:#fff;--ac:#0ea5c6;--ac2:#6d5efc;--dim:#0c0d101f;color-scheme:light;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#000;--fg:#f4f4f2;--mut:#8b8f98;--ln:#202226;--card:#0a0a0b;--ac:#22d3ee;--ac2:#8b7cff;--dim:#ffffff1f;color-scheme:dark}}:root[data-theme=dark]{--bg:#000;--fg:#f4f4f2;--mut:#8b8f98;--ln:#202226;--card:#0a0a0b;--ac:#22d3ee;--ac2:#8b7cff;--dim:#ffffff1f;color-scheme:dark}*{box-sizing:border-box;margin:0}html{scroll-padding-top:env(safe-area-inset-top,0px);scroll-behavior:smooth}body{background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;font:400 16px/1.55 Geist,system-ui,-apple-system,Segoe UI,sans-serif}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--ac);outline-offset:3px;border-radius:6px}.w{max-width:1120px;margin:0 auto;padding:0 20px}.mono{font-family:Geist Mono,ui-monospace,monospace}header{top:env(safe-area-inset-top,0px);z-index:5;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--ln);position:sticky}header .w{align-items:center;gap:20px;height:56px;display:flex}.lg{letter-spacing:-.02em;align-items:center;gap:10px;font-weight:600;display:flex}.mark{object-fit:contain;background:#000;border-radius:6px;flex-shrink:0;width:32px;height:32px}nav{color:var(--mut);gap:22px;margin-left:auto;font-size:14px;display:flex}nav a:hover{color:var(--fg)}.btn{border:1px solid var(--ln);background:var(--card);cursor:pointer;height:40px;color:var(--fg);border-radius:8px;align-items:center;gap:8px;padding:0 18px;font-family:inherit;font-size:14px;font-weight:500;transition:border-color .2s,transform .2s;display:inline-flex}.btn:hover{border-color:var(--fg)}.btn.p{background:var(--fg);color:var(--bg);border-color:var(--fg)}.hero{border-bottom:1px solid var(--ln);background:linear-gradient(var(--ln) 1px,transparent 1px) 0 0/100% 64px;padding:72px 0 56px}.wm{letter-spacing:-.07em;color:#0000;-webkit-background-clip:text;background-clip:text;background-image:radial-gradient(circle 26rem at var(--x,28%) var(--y,40%),var(--ac),var(--ac2) 38%,var(--dim) 78%);margin:0 0 28px;padding-bottom:.06em;font-size:clamp(3.8rem,20vw,14rem);font-weight:700;line-height:.9;animation:1.2s cubic-bezier(.2,.7,.1,1) both wipe}@keyframes wipe{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}.lead{max-width:34em;color:var(--mut);letter-spacing:-.01em;font-size:clamp(1.05rem,2.4vw,1.3rem)}.lead b{color:var(--fg);font-weight:500}.stack{max-width:34em;margin-top:24px}.stack-label{color:var(--mut);margin-bottom:10px;font-size:13px;display:block}.stack ul{flex-wrap:wrap;gap:10px;padding:0;list-style:none;display:flex}.stack li{border:1px solid var(--ln);background:var(--card);border-radius:8px;flex-wrap:wrap;align-items:baseline;gap:8px 12px;padding:10px 14px;font-weight:500;display:flex}.stack-role{color:var(--mut);font-size:12px;font-weight:400}.acts{flex-wrap:wrap;gap:10px;margin-top:28px;display:flex}.sv{border-left:1px solid var(--ln);grid-template-columns:repeat(3,1fr);display:grid}.sv>div{border:1px solid var(--ln);border-left:0;margin-top:-1px;padding:28px 24px;position:relative}.sv>div:before,.sv>div:after{content:"+";color:var(--mut);background:var(--bg);font:12px/1 Geist Mono,monospace;position:absolute;top:-10px}.sv>div:before{left:-5px}.sv>div:after{right:-5px}.sv h3{letter-spacing:-.02em;margin-bottom:6px;font-size:18px}.sv p{color:var(--mut);font-size:14px}section{padding:80px 0}h2{letter-spacing:-.045em;font-size:clamp(1.9rem,5vw,3rem);line-height:1.05}.case{grid-template-columns:1fr auto;align-items:end;gap:24px;margin-bottom:28px;display:grid}.case p{color:var(--mut);max-width:38em;margin-top:12px}.tags{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.tags span{border:1px solid var(--ln);color:var(--mut);background:var(--card);border-radius:6px;padding:3px 9px;font:12px Geist Mono,monospace}.tabs{border:1px solid var(--ln);background:var(--card);border-radius:10px;margin-bottom:14px;padding:4px;display:inline-flex}.tabs button{color:var(--mut);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:7px 18px;font:500 14px/1.4 Geist,system-ui,sans-serif}.tabs button[aria-selected=true]{background:var(--fg);color:var(--bg)}.stage{border:1px solid var(--ln);background:var(--card);border-radius:14px;overflow:hidden}project-gallery{display:block}[hidden]{display:none!important}.gallery-view[data-device=mobile]{display:none}.bar{border-bottom:1px solid var(--ln);color:var(--mut);align-items:center;gap:7px;padding:10px 14px;font:12px Geist Mono,monospace;display:flex}.bar i{background:var(--ln);border-radius:50%;width:9px;height:9px}.bar span{white-space:nowrap;text-overflow:ellipsis;flex:1;margin-left:10px;overflow:hidden}.track{scroll-snap-type:x mandatory;scrollbar-width:none;display:flex;overflow-x:auto}.track::-webkit-scrollbar{display:none}.sl{scroll-snap-align:center;flex:0 0 100%;min-width:0}.f{aspect-ratio:16/9;background:radial-gradient(ellipse at 50% 40%,var(--dim),transparent 70%),var(--bg);position:relative}.project-screenshot{object-fit:contain;width:100%;height:100%;padding:24px;position:absolute;inset:0}.ctl{border-top:1px solid var(--ln);align-items:center;gap:10px;padding:12px 14px;display:flex}.ctl .cap{color:var(--mut);flex:1;font-size:14px}.ctl .cap b{color:var(--fg);font-weight:500}.ctl .cap span{white-space:nowrap;margin-left:12px;font:12px Geist Mono,monospace}.dots{gap:6px;display:flex}.dots button{cursor:pointer;background:0 0;border:0;width:22px;height:28px;padding:0;transition:width .2s;position:relative}.dots button:after{content:"";background:var(--ln);border-radius:4px;height:4px;transition:background .2s;position:absolute;top:12px;left:0;right:0}.dots button.on{width:34px}.dots button.on:after,.dots button:hover:after{background:var(--fg)}.ar{border:1px solid var(--ln);background:var(--card);width:40px;height:40px;color:var(--fg);cursor:pointer;border-radius:8px;flex-shrink:0;font-size:16px}.ar:hover{border-color:var(--fg)}.cg{grid-template-columns:repeat(3,1fr);gap:12px;margin-top:32px;display:grid}.contact-intro{max-width:38em;color:var(--mut);margin-top:16px}.ct{border:1px solid var(--ln);background:var(--card);border-radius:12px;flex-direction:column;gap:36px;padding:22px;transition:border-color .2s,transform .2s;display:flex}.ct:hover{border-color:var(--fg);transform:translateY(-2px)}.ct svg{width:30px;height:30px}.ct b{font-weight:500;display:block}.ct span{color:var(--mut);font-size:14px}.tg svg{color:#2aabee}.ds svg{color:#7c85f5}.ml svg{color:var(--fg)}footer{border-top:1px solid var(--ln);color:var(--mut);padding:24px 0 32px;font-size:13px}footer .w{flex-wrap:wrap;justify-content:space-between;gap:12px;display:flex}@media (width<=760px){.gallery-view[data-device=desktop]{display:none}.gallery-view[data-device=mobile]{display:block}.f{aspect-ratio:585/1280}.project-screenshot{padding:0}.sv,.cg,.case{grid-template-columns:1fr}nav a:not(.keep){display:none}.hero{padding-top:48px}section{padding:56px 0}.ctl{flex-wrap:wrap}.ctl .cap{flex-basis:100%;order:-1}.stage{max-width:420px;margin:0 auto}.tabs{max-width:420px;margin:0 auto 14px;display:flex}.tabs button{flex:1}.dots button{width:16px}.dots button.on{width:24px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
