.site-header{z-index:10;border-bottom:1px solid #0000;transition:border-color .2s;position:sticky;top:0}.site-header:before{content:"";z-index:-1;background:0 0;transition:background-color .2s;position:absolute;inset:0}.site-header.scrolled{border-bottom-color:var(--line)}.site-header.scrolled:before{background:var(--bg)}.site-header:after{content:"";background:var(--accent);height:2px;transform:scaleX(var(--p,0));transform-origin:0;opacity:0;pointer-events:none;transition:opacity .2s;position:absolute;bottom:-1px;left:0;right:0}.site-header.scrolled:after{opacity:1}.menu-open .site-header:after{opacity:0}@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){@media (width>=768px){.site-header.scrolled:before{background:var(--bar);backdrop-filter:blur(10px)}}}.header-in{min-height:var(--head);align-items:center;gap:12px;display:flex}.brand{z-index:1;color:var(--text);white-space:nowrap;align-items:center;gap:10px;font-size:1rem;font-weight:600;text-decoration:none;display:inline-flex;position:relative}.brand:hover{color:var(--text)}.mono{border:1px solid var(--accent);width:30px;height:30px;color:var(--text);font:600 .75rem/1 var(--font);letter-spacing:.02em;border-radius:8px;flex:none;place-items:center;transition:background-color .15s;display:inline-grid}.brand:hover .mono{background:rgb(var(--accent-rgb) / .12)}.menu-btn{z-index:1;border:1px solid var(--line-strong);border-radius:var(--r);min-height:44px;color:var(--text);font:500 .9375rem var(--font);cursor:pointer;background:0 0;align-items:center;gap:8px;margin-left:auto;padding:0 10px;transition:border-color .15s;display:none;position:relative}.menu-btn:hover{border-color:var(--accent)}.menu-btn .ic{width:1.125rem;height:1.125rem}.menu-btn[aria-expanded=true] .l1{transform:translateY(7px)rotate(45deg)}.menu-btn[aria-expanded=true] .l2{opacity:0}.menu-btn[aria-expanded=true] .l3{transform:translateY(-7px)rotate(-45deg)}.menu-btn path{transform-box:fill-box;transform-origin:50%;transition:transform .2s,opacity .2s}.panel{flex-wrap:wrap;order:3;align-items:center;gap:0 8px;width:100%;display:flex}.nav{flex-wrap:wrap;gap:0 4px;display:flex}.nav a{min-height:44px;color:var(--text-2);border-bottom:2px solid #0000;align-items:center;padding:0 10px;font-size:.9375rem;text-decoration:none;transition:color .15s,border-color .15s;display:inline-flex}.nav a:hover{color:var(--text)}.nav a[aria-current]{color:var(--text);border-bottom-color:var(--accent)}.ink{background:var(--accent);opacity:0;pointer-events:none;width:0;height:2px;transition:transform .28s cubic-bezier(.4,0,.2,1),width .28s cubic-bezier(.4,0,.2,1),opacity .2s;display:none;position:absolute;bottom:0;left:0}.nav-cta{border:1px solid rgb(var(--accent-rgb) / .55);border-radius:var(--r);min-height:44px;color:var(--text);white-space:nowrap;justify-content:center;align-items:center;padding:0 16px;font-size:.9375rem;font-weight:500;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-flex}.nav-cta:hover,.nav-cta[aria-current]{background:rgb(var(--accent-rgb) / .1);border-color:var(--accent);color:var(--text)}@media (width<=379.98px){.header-in{gap:8px}.brand{font-size:.9375rem}.menu-btn{justify-content:center;width:44px;padding:0}.menu-btn span{display:none}}@media (width<=767.98px) and (scripting:enabled){.menu-btn{display:inline-flex}.panel{z-index:0;width:auto;padding:calc(var(--head) + 12px) var(--gut) 28px;background:var(--bg);visibility:hidden;opacity:0;flex-flow:column;order:0;align-items:stretch;gap:0;transition:opacity .2s,transform .2s,visibility 0s .2s;position:fixed;inset:0;overflow-y:auto;transform:translateY(-8px)}.panel.open{visibility:visible;opacity:1;transition-delay:0s;transform:none}.nav{flex-flow:column;gap:0}.nav a{border-bottom:1px solid var(--line);border-left:2px solid #0000;min-height:56px;padding:0 14px;font-size:1.25rem;font-weight:500}.nav a[aria-current]{border-left-color:var(--accent)}.nav-cta{min-height:52px;margin-top:24px;font-size:1rem}.panel .lang{margin:16px 0 0 -4px}.menu-open{overflow:hidden}}@media (width<=767.98px){.site-header:before{background:var(--bg)}.site-header{border-bottom-color:var(--line)}}@media (width>=768px){.header-in{gap:16px}.panel{flex-wrap:nowrap;order:0;gap:0 clamp(8px,1.4vw,16px);width:auto;margin-left:auto}.nav{flex-wrap:nowrap;position:relative}.nav a{padding:0 clamp(8px,1.2vw,14px)}.ink{display:block}.has-ink a[aria-current]{border-bottom-color:#0000}.lang{margin-left:0}.site-header.scrolled{--head:56px}}@media (width>=768px) and (width<=899.98px){.header-in{gap:10px}.panel{gap:0 6px}.nav a{padding:0 7px}.nav-cta{padding:0 12px}.panel .lang .ic{display:none}.panel .lang a{min-width:40px}}.lang{align-items:center;margin-left:auto;display:flex}.lang .ic{width:1rem;height:1rem;color:var(--text-2);margin-right:2px}.lang a{min-width:44px;min-height:44px;color:var(--text-2);font:500 .875rem var(--font);letter-spacing:.04em;border-bottom:2px solid #0000;justify-content:center;align-items:center;text-decoration:none;transition:color .15s;display:inline-flex}.lang a:hover{color:var(--text)}.lang a[aria-current=page]{color:var(--text);border-bottom-color:var(--accent)}.foot-tools .lang{margin-left:0}.hero{border-top:0;padding-top:clamp(20px,6vw,96px)}.hero-in{grid-template-columns:clamp(88px,26vw,140px) minmax(0,1fr);grid-template-areas:"photo title""pitch pitch""cta cta";align-items:center;gap:20px 16px;display:grid}.hero-title{grid-area:title}.photo{grid-area:photo;width:100%}.pitch{grid-area:pitch}.cta{grid-area:cta}h1{letter-spacing:-.02em;font-size:clamp(1.75rem,1rem + 3.8vw,4rem);font-weight:600;line-height:1.1}.role{color:var(--text-2);margin-top:8px;font-size:clamp(.9375rem,.85rem + .6vw,1.375rem);line-height:1.5}.pitch{max-width:36rem;font-size:clamp(1.0625rem,1rem + .35vw,1.25rem)}.cta{flex-direction:column;align-items:stretch;gap:4px 28px;display:flex}.photo-img{aspect-ratio:4/5;object-fit:cover;background:var(--surface);border-radius:12px;width:100%;height:auto;display:block}@media (width>=480px){.cta{flex-flow:wrap;align-items:center}}@media (width>=768px){.hero-in{grid-template-columns:minmax(0,1fr) clamp(200px,24vw,320px);grid-template-areas:"title photo""pitch photo""cta photo";align-items:start;gap:20px clamp(32px,6vw,96px)}.hero-title{align-self:end}.photo{grid-row:1/span 3;align-self:center}.pitch,.cta{margin-top:12px}}.about p{max-width:44rem;font-size:clamp(1.0625rem,1rem + .35vw,1.25rem)}.feature h3{letter-spacing:-.01em;font-size:clamp(1.375rem,1rem + 1.6vw,2.125rem);font-weight:600;line-height:1.2}.meta{color:var(--text-2);margin-bottom:10px;font-size:.875rem;display:block}.lead{max-width:44rem;margin-top:16px}.dl{margin-top:28px;display:grid}.dl div{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr);gap:2px;padding:12px 0;display:grid}.dl dt{color:var(--text-2);font-size:.9375rem}@media (width>=480px){.dl div{grid-template-columns:minmax(110px,160px) minmax(0,1fr);gap:16px}}.stack{color:var(--text-2);margin-top:20px;font-size:.9375rem}.stack b{color:var(--text);font-weight:500}.showcase{background:var(--surface);border:1px solid var(--line);border-radius:14px;gap:24px;min-width:0;margin-top:32px;padding:16px;display:grid}.showcase figure{min-width:0;margin:0}.showcase figcaption{color:var(--text-2);margin-top:12px;font-size:.875rem;line-height:1.5}.shot{width:100%;color:inherit;cursor:default;background:0 0;border:0;padding:0;display:block;position:relative}.shot img{width:100%;height:auto;display:block}.shot:after{content:"";background:var(--shot-veil);opacity:0;pointer-events:none;transition:opacity .15s;position:absolute;inset:0}.zoom{z-index:1;background:var(--bg);color:var(--text);border:1px solid var(--line-strong);font:500 .75rem/1 var(--font);pointer-events:none;border-radius:8px;align-items:center;gap:6px;padding:5px;transition:opacity .15s;display:none;position:absolute;bottom:8px;right:8px}.zoom .ic{width:1rem;height:1rem}.zoom-t{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (scripting:enabled){.shot{cursor:zoom-in}.zoom{display:inline-flex}}@media (hover:hover) and (scripting:enabled){.zoom{opacity:0;padding:6px 10px 6px 8px}.zoom-t{clip-path:none;width:auto;height:auto;position:static;overflow:visible}.shot:hover:after,.shot:focus-visible:after,.shot:hover .zoom,.shot:focus-visible .zoom{opacity:1}}.shot:focus-visible{outline-offset:-3px}.browser{border:1px solid var(--line-strong);background:var(--bg);border-radius:10px;transition:border-color .15s;overflow:hidden}.browser:hover,.browser:has(:focus-visible){border-color:var(--accent)}.browser-bar{background:var(--surface);border-bottom:1px solid var(--line);align-items:center;gap:6px;height:30px;padding:0 12px;display:flex}.browser-bar i{background:var(--line-strong);border-radius:50%;flex:none;width:8px;height:8px}.url{background:var(--bg);min-width:0;max-width:260px;height:20px;color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;border-radius:6px;flex:1;margin-left:8px;padding:0 10px;font-size:.75rem;line-height:20px;overflow:hidden}.phones{scroll-snap-type:x mandatory;scrollbar-width:thin;scrollbar-color:var(--text-2) var(--line);gap:12px;margin:-4px -4px 0;padding:4px 4px 10px;display:flex;overflow-x:auto}.phones li{scroll-snap-align:start;flex:0 0 52%;max-width:260px}.shot.phone{border:1px solid var(--line-strong);background:var(--bg);border-radius:20px;transition:border-color .15s;overflow:hidden}.shot.phone:hover{border-color:var(--accent)}@media (width>=1024px){.showcase{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:center;gap:32px;min-height:420px;padding:32px}.phones{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:10px;margin:0;padding:0;display:grid;overflow:visible}.phones li{max-width:none}.phones li:nth-child(odd){margin-top:28px}.shot.phone{border-radius:18px}}.lightbox{border:1px solid var(--line-strong);border-radius:var(--r);background:var(--surface);color:var(--text);width:fit-content;min-width:min(100vw - 32px,440px);max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);padding:0;overflow:auto}.lightbox::backdrop{background:var(--veil)}.lb-bar{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 12px;padding:6px 8px 6px 16px;display:flex}.lb-bar p{color:var(--text-2);font-size:.9375rem}.lb-ctrl{gap:6px;margin-left:auto;display:flex}.lb-close,.lb-nav{border:1px solid var(--line-strong);border-radius:var(--r);min-width:44px;min-height:44px;color:var(--text);font:500 .9375rem var(--font);cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:6px;padding:0 12px;transition:border-color .15s,color .15s;display:inline-flex}.lb-close:hover,.lb-nav:hover{border-color:var(--accent);color:var(--accent)}.lb-img{place-items:center;padding:12px;display:grid}.lb-img img{border-radius:8px;width:auto;max-width:100%;height:auto;max-height:min(90vh,100dvh - 140px);display:block}body:has(dialog[open]){overflow:hidden}.sr{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.others{margin-top:clamp(40px,7vw,88px)}.proj{border-top:1px solid var(--line);padding:24px 0}.proj-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 16px;display:flex}.proj h3{transition:color .15s}.proj:hover h3,.proj:focus-within h3{color:var(--accent)}.proj-head .when{color:var(--text-2);font-size:.9375rem}.proj p{max-width:46rem;color:var(--text-2);margin-top:8px;font-size:1rem}.proj .ctx-line{color:var(--text-2);flex-wrap:wrap;align-items:center;margin-top:4px;font-size:.9375rem;display:flex}.ctx-line .sep{margin:0 2px 0 8px}.ctx-line a{align-items:center;min-height:44px;padding:0 6px;display:inline-flex}.ctx-line .sep+a{margin-left:2px}:is(.proj,.feature) h3 a.ext{color:inherit;align-items:center;gap:6px;min-height:32px;text-decoration:none;display:inline-flex}:is(.proj,.feature) h3 a.ext .ic{width:1em;height:1em;color:var(--text-2);transition:color .15s,transform .2s}:is(.proj,.feature) h3 a.ext:hover,:is(.proj,.feature) h3 a.ext:hover .ic,:is(.proj,.feature) h3 a.ext:focus-visible .ic{color:var(--accent)}:is(.proj,.feature) h3 a.ext:hover .ic{transform:translate(2px,-2px)}.proj p.domain,.feature p.domain{color:var(--text-2);margin-top:2px;font-size:.875rem}.ctx{align-items:center;gap:8px;min-height:44px;font-size:.9375rem;text-decoration:none;display:inline-flex}.ctx:hover,.ctx:focus-visible{text-decoration:underline}.ctx:hover .arr,.ctx:focus-visible .arr,.proj:hover .ctx .arr{transform:translate(4px)}.ctx .k{color:var(--text-2)}.figs{flex-wrap:wrap;gap:4px 28px;margin-top:8px;display:flex}.fig{color:var(--text-2);font-size:.9375rem}.fig b{color:var(--text);margin-right:4px;font-size:1.5rem;font-weight:600;line-height:1.2}@media (width>=1024px){.proj{padding:28px 0}}.tags{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.tags li{background:rgb(var(--accent-rgb) / .09);border:1px solid rgb(var(--accent-rgb) / .28);min-height:28px;color:var(--text);border-radius:999px;align-items:center;gap:6px;padding:3px 10px 3px 8px;font-size:.8125rem;line-height:1.3;transition:border-color .15s,background-color .15s;display:inline-flex}.tags li.no-logo{padding-left:10px}.tags .ic{width:14px;height:14px;color:var(--text-2);transition:color .15s}.tags li:hover{background:rgb(var(--accent-rgb) / .12);border-color:rgb(var(--accent-rgb) / .5)}.tags li:hover .ic{color:var(--accent)}.stack-row{flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:24px;display:flex}.stack-k{color:var(--text-2);letter-spacing:.06em;text-transform:uppercase;font-size:.8125rem;font-weight:500}.stack-row .tags{margin-top:0}.feature .tags li{background:rgb(var(--accent-rgb) / .11);border-color:rgb(var(--accent-rgb) / .34);min-height:32px;padding:4px 12px 4px 10px;font-size:.875rem}.feature .tags li.no-logo{padding-left:12px}.tl-group+.tl-group{margin-top:48px}.tl-group h3{color:var(--text-2);margin-bottom:8px;font-size:.9375rem;font-weight:500}.tl{position:relative}.tl:before{content:"";background:var(--line-strong);width:1px;position:absolute;top:28px;bottom:28px;left:5px}.tl li{grid-template-columns:minmax(0,1fr);gap:2px 24px;padding:16px 0 16px 32px;display:grid;position:relative}.tl li:before{content:"";background:var(--bg);border:2px solid var(--line-strong);border-radius:50%;width:11px;height:11px;transition:border-color .15s;position:absolute;top:calc(16px + .72em);left:0}.tl li:hover:before{border-color:var(--accent)}.tl li.current:before{background:var(--accent);border-color:var(--accent);outline:1px solid var(--accent);outline-offset:3px}.tl .when{color:var(--text-2);font-variant-numeric:tabular-nums;font-size:.9375rem}.tl .what{font-weight:500;line-height:1.45}.tl .where,.tl .note{color:var(--text-2);margin-top:2px;font-size:.9375rem;font-weight:400;display:block}.tl .links{flex-wrap:wrap;gap:0 20px;margin-top:2px;font-weight:400;display:flex}.tl li:target{scroll-margin-top:calc(var(--head) + 16px)}@media (width>=640px){.tl li{grid-template-columns:minmax(120px,12rem) minmax(0,1fr);padding-left:36px}}@media (width>=1024px){.tl li{padding-top:18px;padding-bottom:18px}}.sk-group+.sk-group{margin-top:32px}.sk-group h3{color:var(--text-2);margin-bottom:12px;font-size:.9375rem;font-weight:500}.chips{grid-template-columns:repeat(auto-fill,minmax(min(100%,8.75rem),1fr));gap:8px;display:grid}.chips li{border:1px solid var(--line);border-radius:var(--r);min-height:44px;color:var(--text);align-items:center;gap:10px;padding:8px 12px;font-size:.9375rem;line-height:1.3;transition:border-color .15s;display:flex}.chips .ic{color:var(--text-2);transition:color .15s}.chips li:hover{border-color:var(--line-strong)}.chips li:hover .ic{color:var(--accent)}.sk-pair{gap:32px;margin-top:32px;display:grid}.sk-pair>.sk-group{margin-top:0}@media (width>=640px){.sk-pair{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 24px}}.code{border:1px solid var(--line-strong);min-width:28px;height:24px;color:var(--text-2);font:600 .75rem/1 var(--font);letter-spacing:.06em;border-radius:6px;flex:none;place-items:center;padding:0 4px;transition:color .15s,border-color .15s;display:inline-grid}.chips li:hover .code{color:var(--accent);border-color:var(--accent)}.lv{color:var(--text-2);font-size:.8125rem;line-height:1.3;display:block}.chips-soft li{border-style:dashed;border-color:var(--line-strong);color:var(--text-2)}.sk-note{color:var(--text-2);margin-top:10px;font-size:.8125rem}.contact-lead{letter-spacing:-.01em;max-width:30rem;font-size:clamp(1.375rem,1rem + 1.8vw,2.25rem);font-weight:600;line-height:1.25}.contact-list{flex-direction:column;gap:4px 28px;margin-top:24px;display:flex}.contact-list a{min-height:48px;color:var(--text);align-items:center;gap:12px;font-size:1rem;text-decoration:none;transition:color .15s;display:inline-flex}.contact-list .ic{width:1.375rem;height:1.375rem;color:var(--text-2);transition:color .15s}.contact-list span{overflow-wrap:anywhere;min-width:0}.contact-list a:hover,.contact-list a:hover .ic,.contact-list a:focus-visible .ic{color:var(--accent)}@media (width>=768px){.contact-list{flex-flow:wrap}}.site-footer{border-top:1px solid var(--line);background:var(--surface);color:var(--text-2);padding:clamp(32px,5vw,56px) 0 8px;font-size:.9375rem}.foot-top{grid-template-columns:minmax(0,1fr);gap:28px;display:grid}.foot-id p+p{margin-top:2px}.foot-name{color:var(--text);font-size:1.0625rem;font-weight:600}.foot-nav{flex-wrap:wrap;column-gap:20px;display:flex}@media (width>=768px){.foot-nav{flex-direction:column}}.foot-nav a,.to-top,.site-footer .link-cv{align-items:center;min-height:44px;display:inline-flex}.foot-nav a{color:var(--text-2);text-decoration:none}.foot-nav a:hover{color:var(--text)}.foot-contact{flex-direction:column;align-items:flex-start;gap:4px;display:flex}.foot-icons{gap:4px;margin-left:-10px;display:flex}.foot-icons a{width:44px;height:44px;color:var(--text-2);justify-content:center;align-items:center;transition:color .15s;display:inline-flex}.foot-icons a:hover,.foot-icons a:focus-visible{color:var(--accent)}.foot-icons .ic{width:1.375rem;height:1.375rem}.foot-bottom{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:0 16px;margin-top:20px;padding-top:8px;display:flex}.foot-tools{flex-wrap:wrap;align-items:center;gap:0 16px;display:flex}.to-top{color:var(--text-2);gap:6px;text-decoration:none}.to-top:hover{color:var(--text)}.to-top .ic{width:1rem;height:1rem}@media (width>=768px){.foot-top{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,4vw,64px)}.foot-contact{align-items:flex-start}}
