@import "https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,600;0,700;1,300;1,600;1,700&family=Outfit:wght@300;400;500&family=DM+Mono:wght@400&display=swap";:root{--bg:#f7f4ef;--bg-2:#ede9e1;--ink:#0e0c0a;--ink-2:#3d3830;--ink-3:#54493f;--accent:#c8410b;--accent-2:#e8561a;--border:#0e0c0a29;--border-strong:#0e0c0a47;--accent-fill:#c8410b;--accent-fill-hover:#a8350a;--on-accent:#fff;--plate:#0e0c0a;--plate-edge:transparent;--font-display:"Cormorant Garamond", Georgia, serif;--font-body:"Outfit", system-ui, sans-serif;--font-mono:"DM Mono", "Courier New", monospace;--transition-color:background-color .3s ease, color .3s ease, border-color .3s ease}[data-theme=dark]{--bg:#0c0b09;--bg-2:#161410;--ink:#f0ebe3;--ink-2:#c4bbb0;--ink-3:#aaa29a;--accent:#e8561a;--accent-2:#ff6b2b;--border:#f0ebe324;--border-strong:#f0ebe342;--accent-fill:#c8410b;--accent-fill-hover:#a8350a;--on-accent:#fff;--plate:#161410;--plate-edge:#f0ebe31a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:16px}body{font-family:var(--font-body);background-color:var(--bg);color:var(--ink);transition:var(--transition-color);font-weight:400;line-height:1.6;overflow-x:hidden}img,svg{max-width:100%;display:block}a{color:inherit;text-decoration:none}ul,ol{list-style:none}button{cursor:pointer;font:inherit;color:inherit;background:0 0;border:none}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:1px}:focus:not(:focus-visible){outline:none}.font-display{font-family:var(--font-display)}.font-mono{font-family:var(--font-mono)}body:before{content:"";opacity:.025;pointer-events:none;z-index:9999;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");position:fixed;inset:0}.js .reveal{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(28px)}.js .reveal.visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){.js .reveal{opacity:1;transform:none}}@media print{.js .reveal{opacity:1;transform:none}}section[id]{scroll-margin-top:88px}section{padding:clamp(64px,10vw,120px) 0}.container{width:min(1200px,92vw);margin:0 auto}.section-label{font-family:var(--font-mono);color:var(--ink-3);letter-spacing:.12em;text-transform:uppercase;margin-bottom:60px;font-size:.7rem;font-weight:400}section{position:relative}.section-shapes{pointer-events:none;z-index:0;position:absolute;inset:0;overflow:hidden}section>.container,section>div:not(.section-shapes){z-index:1;position:relative}.s-shape{--px:0px;--py:0px;translate:var(--px) var(--py);will-change:transform, translate;position:absolute}.s-shape--circle{border-radius:50%}.s-shape--triangle{clip-path:polygon(50% 0%,0% 100%,100% 100%)}.s-shape--bar{height:1.5px}@keyframes s-drift-a{0%{transform:translate(0)rotate(0)}to{transform:translate(24px,-18px)rotate(8deg)}}@keyframes s-drift-b{0%{transform:translate(0)rotate(0)}to{transform:translate(-20px,26px)rotate(-10deg)}}@keyframes s-drift-c{0%{transform:translate(0)rotate(0)}to{transform:translate(18px,20px)rotate(15deg)}}@keyframes s-drift-d{0%{transform:translate(0)}to{transform:translate(-14px,-22px)}}@keyframes s-drift-e{0%{transform:translate(0)scaleX(1)}to{transform:translate(16px,-6px)scaleX(1.25)}}@keyframes s-drift-f{0%{transform:translate(0)scale(1)}to{transform:translate(-18px,20px)scale(.88)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.divider{background:var(--border-strong);border:none;width:100%;height:1px}.navbar{z-index:200;border-bottom:1px solid #0000;transition:background-color .3s,-webkit-backdrop-filter .3s,backdrop-filter .3s,border-color .3s;position:fixed;top:0;left:0;right:0}.navbar--scrolled{background-color:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(12px);border-bottom-color:var(--border)}.navbar.menu-open{-webkit-backdrop-filter:none;background-color:#0000;border-bottom-color:#0000}.navbar__progress{z-index:202;background:0 0;height:1.5px;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.navbar__progress-bar{transform-origin:0;background:var(--accent);will-change:transform;width:100%;height:100%;transform:scaleX(0)}.navbar__inner{z-index:201;justify-content:space-between;align-items:center;height:64px;display:flex;position:relative}.navbar__logo{font-family:var(--font-display);color:var(--ink);letter-spacing:-.01em;flex-shrink:0;align-items:center;min-width:44px;min-height:44px;padding-right:8px;font-size:1.35rem;font-style:italic;font-weight:700;transition:color .2s;display:inline-flex}.navbar__logo:hover{color:var(--accent)}.navbar__links{gap:36px;display:flex}.navbar__link{font-family:var(--font-body);color:var(--ink-2);letter-spacing:.06em;text-transform:uppercase;font-size:.78rem;font-weight:400;transition:color .2s;position:relative}.navbar__link:after{content:"";background:var(--accent);width:0;height:1px;transition:width .25s;position:absolute;bottom:-3px;left:0}.navbar__link:hover,.navbar__link.is-active{color:var(--ink)}.navbar__link:hover:after,.navbar__link.is-active:after{width:100%}.navbar__link.is-active{color:var(--accent)}.navbar__link.is-active:after{background:var(--accent)}.navbar__controls{align-items:center;gap:16px;display:flex}.navbar__toggle-lang{letter-spacing:.1em;color:var(--ink-2);border:1px solid var(--border-strong);border-radius:2px;min-width:44px;min-height:44px;padding:4px 12px;font-size:.68rem;font-weight:400;line-height:1;transition:color .2s,border-color .2s}.navbar__toggle-lang:hover{color:var(--accent);border-color:var(--accent)}.navbar__toggle-theme{width:44px;height:44px;color:var(--ink-2);border-radius:50%;justify-content:center;align-items:center;transition:color .2s,transform .2s;display:flex}.navbar__toggle-theme:hover{color:var(--accent);transform:rotate(15deg)}.navbar__hamburger{z-index:201;flex-shrink:0;width:44px;height:44px;display:none;position:relative}.navbar__hamburger span{background:var(--ink);transform-origin:50%;will-change:transform, opacity;width:20px;height:1.5px;transition:transform .4s cubic-bezier(.16,1,.3,1),opacity .25s;display:block;position:absolute;left:12px}.navbar__hamburger span:first-child{top:16px}.navbar__hamburger span:nth-child(2){top:21px}.navbar__hamburger span:nth-child(3){top:26px}.navbar__hamburger.is-open span:first-child{transform:translateY(5px)rotate(45deg)}.navbar__hamburger.is-open span:nth-child(2){opacity:0;transform:scaleX(0)}.navbar__hamburger.is-open span:nth-child(3){transform:translateY(-5px)rotate(-45deg)}.navbar__overlay{background:var(--bg);z-index:199;pointer-events:none;clip-path:inset(0 0 100%);will-change:clip-path;flex-direction:column;justify-content:center;align-items:center;transition:clip-path .5s cubic-bezier(.16,1,.3,1);display:flex;position:fixed;inset:0}.navbar__overlay.is-open{pointer-events:all;clip-path:inset(0 0 0%)}.navbar__overlay-links{flex-direction:column;align-items:center;gap:4px;display:flex}.navbar__overlay-link{font-family:var(--font-display);color:var(--ink);letter-spacing:-.02em;opacity:0;will-change:transform, opacity;padding:10px 24px;font-size:clamp(2.2rem,10vw,4rem);font-weight:300;transition:color .2s,opacity .4s,transform .4s cubic-bezier(.16,1,.3,1);transform:translateY(12px)}.navbar__overlay.is-open .navbar__overlay-link{opacity:1;transform:translateY(0)}.navbar__overlay.is-open .navbar__overlay-link:first-child{transition-delay:.15s}.navbar__overlay.is-open .navbar__overlay-link:nth-child(2){transition-delay:.2s}.navbar__overlay.is-open .navbar__overlay-link:nth-child(3){transition-delay:.25s}.navbar__overlay.is-open .navbar__overlay-link:nth-child(4){transition-delay:.3s}.navbar__overlay.is-open .navbar__overlay-link:nth-child(5){transition-delay:.35s}.navbar__overlay-link:hover,.navbar__overlay-link.is-active{color:var(--accent);font-style:italic}.navbar__overlay-lang{letter-spacing:.12em;color:var(--ink-3);border:1px solid var(--border);opacity:0;border-radius:2px;margin-top:32px;padding:6px 14px;font-size:.72rem;transition:color .2s,border-color .2s,opacity .4s .4s,transform .4s cubic-bezier(.16,1,.3,1) .4s;transform:translateY(12px)}.navbar__overlay.is-open .navbar__overlay-lang{opacity:1;transform:translateY(0)}.navbar__overlay-lang:hover{color:var(--accent);border-color:var(--accent)}@media (width<=768px){.navbar__links{display:none}.navbar__hamburger{display:flex}}.navbar__overlay-lang{min-width:44px;min-height:44px}.hero{align-items:flex-end;min-height:100vh;padding-top:0;padding-bottom:120px;display:flex}.hero__inner{flex-direction:column;gap:0;display:flex}.hero__label{color:var(--ink-3);letter-spacing:.1em;text-transform:uppercase;opacity:0;margin-bottom:40px;font-size:.72rem;animation:.6s 50ms forwards fadeInLabel;display:block}@keyframes fadeInLabel{to{opacity:1}}.hero__headline{margin:0 0 28px;container-type:inline-size}.hero__line-wrap{overflow-clip-margin:.05em;line-height:.9;overflow:clip}.hero__name{font-family:var(--font-display);letter-spacing:-.03em;color:var(--ink);opacity:0;white-space:nowrap;font-size:clamp(3rem,16cqw,14rem);font-weight:700;line-height:.9;display:block}.hero__name--2{color:var(--accent);font-style:italic}.hero__rule{opacity:0;margin-bottom:56px}.hero__bottom{opacity:0;justify-content:space-between;align-items:flex-end;gap:40px;display:flex}.hero__tagline{font-family:var(--font-body);color:var(--ink-2);font-size:clamp(1.05rem,1.8vw,1.3rem);font-weight:300;line-height:1.55}.hero__actions{flex-shrink:0;align-items:center;gap:28px;display:flex}.hero__work{letter-spacing:.04em;min-height:44px;color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong);text-underline-offset:6px;align-items:center;font-size:.85rem;font-weight:500;text-decoration-thickness:1px;transition:text-decoration-color .2s,color .2s;display:inline-flex}.hero__work:hover{color:var(--accent);text-decoration-color:currentColor}.hero__cta{font-family:var(--font-body);color:var(--bg);background:var(--ink);letter-spacing:.04em;white-space:nowrap;border-radius:2px;flex-shrink:0;align-items:center;gap:10px;padding:14px 28px;font-size:.85rem;font-weight:500;transition:background-color .25s,transform .25s,color .25s;display:inline-flex}.hero__cta:hover{background:var(--accent);color:#fff;transform:translate(-2px,-2px)}.hero__cta svg{transition:transform .25s}.hero__cta:hover svg{transform:translate(4px)}@media (width<=768px){.hero__rule{margin-bottom:36px}.hero__label{margin-bottom:28px}.hero__headline{margin-bottom:20px}}@media (width<=600px){.hero{min-height:100svh;padding-bottom:80px}.hero__bottom{flex-direction:column;align-items:flex-start;gap:24px}.hero__actions{flex-direction:column-reverse;align-self:stretch;align-items:stretch;gap:8px}.hero__cta,.hero__work{justify-content:center}}.journey{--journey-bezel:#0e0c0a;--journey-frame-bg:#161410;border-top:1px solid var(--border);margin:0 0 48px 84px;padding-top:32px}.journey__head{flex-direction:column;gap:8px;margin-bottom:40px;display:flex}.journey__label{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-size:.6875rem}.journey__intro{color:var(--ink-2);max-width:62ch;font-size:.9375rem;line-height:1.6}.journey__list{flex-direction:column;display:flex}.journey-frame{-moz-column-gap:40px;border-bottom:1px solid var(--border);grid-template-columns:1fr 1fr;grid-template-areas:"head head""shots text";align-items:start;gap:20px 40px;padding:32px 0;display:grid}.journey-frame:last-child{border-bottom:none;padding-bottom:8px}.journey-frame__head{grid-area:head;align-items:baseline;gap:16px;display:flex}.journey-frame__index{color:var(--ink-3);letter-spacing:.06em;font-size:.75rem}.journey-frame__title{color:var(--ink);font-size:1.5rem;font-weight:600;line-height:1.2}.journey-frame__shots{grid-area:shots;align-items:flex-start;gap:16px;display:flex}.journey-frame__shots.is-pair .journey-shot--web{flex:auto;min-width:0}.journey-frame__shots.is-pair .journey-shot--app{flex:0 0 116px}.journey-shot{flex-direction:column;flex:auto;gap:8px;min-width:0;display:flex}.journey-shot--app{flex:0 0 168px;max-width:168px}.journey-shot__frame{background:var(--journey-frame-bg);border:1px solid var(--journey-bezel);position:relative;overflow:hidden}.journey-shot--web .journey-shot__frame{border-radius:8px}.journey-shot--app .journey-shot__frame{border-width:2px;border-radius:24px}.journey-shot__frame img{width:100%;height:auto;display:block}.journey-shot__bar{background:var(--journey-bezel);align-items:center;gap:5px;padding:7px 10px;display:flex}.journey-shot__bar span{background:#f0ebe338;border-radius:50%;width:6px;height:6px}.journey-shot__pending{aspect-ratio:16/10;color:#f0ebe366;letter-spacing:.1em;text-transform:uppercase;place-items:center;font-size:.6875rem;display:grid}.journey-shot--app .journey-shot__pending{aspect-ratio:9/19.5}.journey-shot__route{color:var(--ink-3);letter-spacing:.02em;word-break:break-all;font-size:.6875rem}.journey-frame__text{flex-direction:column;grid-area:text;gap:16px;padding-top:4px;display:flex}.journey-frame__caption{color:var(--ink-2);max-width:62ch;font-size:.9375rem;line-height:1.7}.journey-frame__note{border-left:2px solid var(--ink-3);color:var(--ink-3);max-width:58ch;padding-left:16px;font-size:.875rem;line-height:1.6}@media (width<=900px){.journey{margin-left:0}.journey-frame{grid-template-columns:1fr;grid-template-areas:"head""shots""text";row-gap:24px}.journey-frame__shots{max-width:520px}}@media (width<=600px){.journey{margin-bottom:32px}.journey-frame__title{font-size:1.25rem}.journey-frame__shots.is-pair{flex-direction:column;align-items:stretch}.journey-frame__shots.is-pair .journey-shot--app{flex:none;max-width:168px}}.featured__head{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:end;gap:56px;margin-bottom:56px;display:grid}.featured__title{font-family:var(--font-display);flex-direction:column;gap:4px;margin:0;line-height:.92;display:flex}.featured__name{letter-spacing:-.03em;color:var(--ink);font-size:clamp(3rem,8.5vw,6rem);font-weight:700}.featured__sub{letter-spacing:-.01em;color:var(--accent);font-size:clamp(1.5rem,3.2vw,2.5rem);font-style:italic;font-weight:600}.featured__intro{flex-direction:column;gap:28px;display:flex}.featured__lede{color:var(--ink-2);text-wrap:pretty;max-width:52ch;font-size:clamp(1rem,1.4vw,1.125rem);line-height:1.65}.featured__meta{border-top:1px solid var(--border-strong);grid-template-columns:1fr 1fr;gap:16px 32px;padding-top:20px;display:grid}.featured__meta>div:last-child{grid-column:1/-1}.featured__meta dt{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:4px;font-size:.6875rem}.featured__meta dd{font-family:var(--font-display);color:var(--ink);font-size:1.05rem;font-weight:600;line-height:1.3}.featured__tags{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.featured__tag{letter-spacing:.06em;color:var(--ink-2);border:1px solid var(--border-strong);border-radius:1px;padding:3px 8px;font-size:.6875rem;font-weight:400}.featured__stage{margin:0 0 56px}.featured__plate{--journey-bezel:#24201b;--journey-frame-bg:#161410;background:var(--plate);border:1px solid var(--plate-edge);border-radius:2px;justify-content:center;align-items:flex-end;gap:clamp(16px,3vw,40px);padding:clamp(24px,5vw,64px) clamp(20px,6vw,88px) clamp(20px,3.5vw,40px);display:flex}.featured__plate .journey-shot--web{flex:auto;min-width:0;max-width:820px}.featured__plate .journey-shot--app{flex:0 0 clamp(92px,21%,220px);max-width:none}.featured__plate .journey-shot__route{color:#f0ebe38f}.featured__caption{grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:32px;padding-top:20px;display:grid}.featured__caption-title{color:var(--ink);font-size:1.5rem;font-weight:600;line-height:1.2}.featured__caption-text{color:var(--ink-2);max-width:64ch;font-size:.9375rem;line-height:1.7}.featured__proof{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;margin-bottom:48px;display:grid}.featured__proof li{border-top:1px solid var(--border-strong);color:var(--ink);text-wrap:pretty;padding-top:16px;font-size:.9375rem;line-height:1.6}.featured__toggle{min-height:44px;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink);border:1px solid var(--border-strong);border-radius:1px;align-items:center;gap:12px;padding:12px 20px;font-size:.72rem;transition:border-color .2s,background-color .2s;display:inline-flex}.featured__toggle:hover{border-color:var(--ink);background-color:color-mix(in srgb, var(--ink) 4%, transparent)}.featured__toggle svg{transition:transform .35s cubic-bezier(.16,1,.3,1)}.featured__toggle.is-open svg{transform:rotate(180deg)}.featured__case{grid-template-rows:0fr;transition:grid-template-rows .5s cubic-bezier(.16,1,.3,1);display:grid}.featured__case.is-open{grid-template-rows:1fr}.featured__case-inner{overflow:hidden}.featured__case-body{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"desc list""learn list";gap:32px 56px;padding:48px 0;display:grid}.featured__case-desc{grid-area:desc}.featured__case-body>div:nth-child(2){grid-area:list}.featured__case-body>div:nth-child(3){grid-area:learn}.featured__case-desc{color:var(--ink-2);max-width:62ch;font-size:1rem;line-height:1.75}.featured__case-label{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:14px;font-size:.6875rem;display:block}.featured__case-list{flex-direction:column;gap:10px;display:flex}.featured__case-list li{color:var(--ink-2);padding-left:18px;font-size:.88rem;line-height:1.55;position:relative}.featured__case-list li:before{content:"";background:var(--ink-3);width:8px;height:1.5px;position:absolute;top:.58em;left:0}.featured__case-learn{font-family:var(--font-display);color:var(--ink);max-width:60ch;font-size:1.05rem;font-style:italic;font-weight:300;line-height:1.65}.featured .journey{margin-left:0}@media (width<=900px){.featured__head{grid-template-columns:1fr;gap:28px;margin-bottom:40px}.featured__caption{grid-template-columns:1fr;gap:8px}.featured__proof{grid-template-columns:1fr;gap:20px}.featured__case-body{grid-template-columns:1fr;grid-template-areas:"desc""list""learn"}}@media (width<=600px){.featured__stage{margin-inline:-4vw;margin-bottom:40px}.featured__caption{padding-inline:4vw}.featured__plate{border-radius:0;gap:12px}.featured__plate .journey-shot__route{display:none}.featured__meta{grid-template-columns:1fr}.featured__toggle{justify-content:space-between;width:100%}}.about__grid{grid-template-columns:1fr 1fr;align-items:start;gap:80px;margin-bottom:80px;display:grid}.about__quote{font-family:var(--font-display);color:var(--ink);letter-spacing:-.02em;quotes:"“" "”";border:none;font-size:clamp(1.5rem,3vw,2.6rem);font-style:italic;font-weight:300;line-height:1.25}.about__quote:before{content:open-quote;color:var(--accent)}.about__bio{flex-direction:column;gap:20px;display:flex}.about__bio p{color:var(--ink-2);font-size:clamp(.9rem,1.3vw,1rem);font-weight:300;line-height:1.75}.about__bio em{font-family:var(--font-display);color:var(--ink);font-size:1.1em;font-style:italic}.about__meta{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.about__chip{color:var(--ink-3);border:1px solid var(--border);letter-spacing:.04em;border-radius:2px;padding:5px 12px;font-size:.72rem;transition:color .2s,border-color .2s;display:inline-block}.about__chip--link:hover{color:var(--accent);border-color:var(--accent)}.about__stats{border-top:1px solid var(--border);border-left:1px solid var(--border);grid-template-columns:repeat(4,1fr);gap:0;display:grid}.about__stat{border-right:1px solid var(--border);border-bottom:1px solid var(--border);flex-direction:column;gap:8px;padding:clamp(24px,4vw,40px) clamp(20px,3vw,32px);display:flex}.about__stat-value{font-family:var(--font-display);color:var(--ink);letter-spacing:-.03em;font-size:clamp(2rem,5vw,4rem);font-weight:300;line-height:1}.about__stat-label{color:var(--ink-3);letter-spacing:.08em;text-transform:uppercase;font-size:.68rem}@media (width<=900px){.about__grid{grid-template-columns:1fr;gap:40px;margin-bottom:56px}}@media (width<=600px){.about__stats{grid-template-columns:1fr 1fr}}.about__chip--link{align-items:center;min-height:44px;display:inline-flex}.skills{background:var(--bg-2);transition:background-color .3s}.skills__layout{grid-template-columns:1fr 1px 1fr;align-items:start;gap:0 64px;display:grid}.skills__primary{flex-direction:column;display:flex}.skills__primary-item{border-bottom:1px solid var(--border);cursor:default;align-items:baseline;gap:16px;padding:20px 0;display:flex;position:relative;overflow:hidden}.skills__primary-item:first-child{border-top:1px solid var(--border)}.skills__primary-item:after{content:"";background:var(--accent);width:0;height:1px;transition:width .5s cubic-bezier(.16,1,.3,1);position:absolute;bottom:-1px;left:0}.skills__primary-item:hover:after{width:100%}.skills__primary-num{font-family:var(--font-mono);letter-spacing:.1em;color:var(--ink-3);opacity:.5;flex-shrink:0;font-size:.6rem;transition:opacity .2s,color .2s;position:relative;top:-2px}.skills__primary-item:hover .skills__primary-num{opacity:1;color:var(--accent)}.skills__primary-name{font-family:var(--font-display);letter-spacing:-.03em;color:var(--ink);font-size:clamp(2.2rem,4vw,3.6rem);font-style:italic;font-weight:600;line-height:1;transition:color .2s}.skills__primary-item:hover .skills__primary-name{color:var(--accent)}.skills__divider{background:var(--border);align-self:stretch}.skills__secondary-label{font-family:var(--font-display);color:var(--ink-3);letter-spacing:.04em;margin-bottom:20px;font-size:.8rem;font-style:italic;font-weight:300}.skills__secondary-grid{flex-direction:column;display:flex}.skills__secondary-item{border-bottom:1px solid var(--border);cursor:default;justify-content:space-between;align-items:baseline;gap:12px;padding:11px 0;display:flex;position:relative;overflow:hidden}.skills__secondary-item:first-child{border-top:1px solid var(--border)}.skills__secondary-item:after{content:"";background:var(--accent);width:0;height:1px;transition:width .4s cubic-bezier(.16,1,.3,1);position:absolute;bottom:-1px;left:0}.skills__secondary-item:hover:after{width:100%}.skills__secondary-name{font-family:var(--font-body);color:var(--ink-2);font-size:.88rem;font-weight:300;transition:color .2s}.skills__secondary-item:hover .skills__secondary-name{color:var(--ink)}.skills__secondary-tag{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);opacity:0;white-space:nowrap;font-size:.58rem;transition:opacity .2s,color .2s}.skills__secondary-item:hover .skills__secondary-tag{opacity:1;color:var(--accent)}@media (width<=768px){.skills__layout{grid-template-columns:1fr;gap:40px 0}.skills__divider{align-self:auto;width:100%;height:1px}.skills__primary-name{font-size:clamp(2rem,8vw,3rem)}}@media (width<=480px){.skills__secondary-tag{display:none}}.experience__layout{grid-template-columns:170px 1fr;align-items:start;gap:56px;display:grid}.experience__sidebar{position:sticky;top:100px}.experience__sticky-label{margin-bottom:0}.experience__entries{flex-direction:column;display:flex;position:relative}.experience__entries:before{content:"";background:var(--border);width:1px;position:absolute;top:8px;bottom:48px;left:0}.exp__entry{padding:0 0 clamp(40px,6vw,64px) 32px;position:relative}.exp__entry:before{content:"";background:var(--bg);border:1.5px solid var(--accent);border-radius:50%;width:7px;height:7px;transition:background-color .2s;position:absolute;top:10px;left:-3px}.exp__entry:hover:before{background:var(--accent)}.exp__header{justify-content:space-between;align-items:baseline;margin-bottom:16px;display:flex;overflow:hidden}.exp__date{font-family:var(--font-mono);color:var(--ink-3);letter-spacing:.1em;text-transform:uppercase;font-size:.68rem}.exp__year-mark{font-family:var(--font-display);color:var(--ink);opacity:.04;letter-spacing:-.04em;-webkit-user-select:none;user-select:none;font-size:clamp(2rem,5vw,4rem);font-style:italic;font-weight:700;line-height:1;transition:opacity .3s}.exp__entry:hover .exp__year-mark{opacity:.09}.exp__company{font-family:var(--font-display);color:var(--ink);letter-spacing:-.03em;margin-bottom:8px;font-size:clamp(1.6rem,3.5vw,2.8rem);font-weight:600;line-height:1;transition:color .2s}.exp__entry:hover .exp__company{color:var(--accent)}.exp__role{font-family:var(--font-mono);color:var(--accent);letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:8px;margin-bottom:24px;font-size:.68rem;font-weight:400;display:inline-flex}.exp__role:before{content:"";background:var(--accent);opacity:.5;width:20px;height:1px;display:block}.exp__bullets{flex-direction:column;gap:12px;display:flex}.exp__bullets li{color:var(--ink-2);padding-left:20px;font-size:.88rem;font-weight:300;line-height:1.7;position:relative}.exp__bullets li:before{content:"";background:var(--ink-3);width:8px;height:1px;transition:width .25s,background-color .25s;position:absolute;top:.65em;left:0}.exp__entry:hover .exp__bullets li:before{background:var(--accent);width:12px}.exp__divider{display:none}@media (width<=768px){.experience__layout{grid-template-columns:1fr;gap:0}.experience__sidebar{margin-bottom:40px;position:static}.experience__entries:before{left:0}.exp__entry{padding-left:28px}}@media (width<=600px){.exp__year-mark{display:none}.exp__company{font-size:clamp(1.4rem,7vw,2rem)}}.experience__count{letter-spacing:.06em;color:var(--ink-3);margin-top:10px;font-size:.72rem}.projects__header{grid-template-columns:60px 1fr 220px 80px 32px;align-items:center;gap:24px;padding:0 0 16px;display:grid}.projects__header-cell{color:var(--ink-3);letter-spacing:.1em;text-transform:uppercase;font-size:.65rem}.project-item{border-left:2px solid #0000;scroll-margin-top:88px;transition:border-left-color .25s}.project-item.is-open{border-left-color:var(--accent)}.project-row{text-align:left;width:100%;color:var(--ink);cursor:pointer;background:0 0;border:none;grid-template-columns:60px 1fr 220px 80px 32px;align-items:center;gap:24px;padding:28px 0;transition:background-color .2s;display:grid}.project-item.is-open .project-row,.project-row:hover{background-color:color-mix(in srgb, var(--ink) 3%, transparent)}.project-row__index,.project-row__name,.project-row__tags{--row-shift:16px;transition:translate .25s,color .2s}.project-item.is-open :is(.project-row__index,.project-row__name,.project-row__tags),.project-row:hover :is(.project-row__index,.project-row__name,.project-row__tags){translate:var(--row-shift) 0}.project-row__index{font-family:var(--font-display);color:var(--ink-3);font-size:1.1rem;font-style:italic;font-weight:300;transition:translate .25s,color .2s}.project-item.is-open .project-row__index,.project-row:hover .project-row__index{color:var(--accent)}.project-row__name{font-family:var(--font-display);color:var(--ink);letter-spacing:-.02em;font-size:clamp(1.3rem,2.5vw,2rem);font-weight:600;transition:translate .25s,color .2s}.project-item.is-open .project-row__name,.project-row:hover .project-row__name{color:var(--accent)}.project-row__tags{flex-wrap:wrap;gap:6px;display:flex}.project-row__tag{color:var(--ink-3);border:1px solid var(--border);letter-spacing:.06em;white-space:nowrap;border-radius:1px;padding:3px 8px;font-size:.65rem;transition:color .2s,border-color .2s}.project-row:hover .project-row__tag{color:var(--ink-2);border-color:color-mix(in srgb, var(--border) 200%, transparent)}.project-row__year{color:var(--ink-3);letter-spacing:.08em;font-size:.72rem}.project-row__chevron{color:var(--ink-3);flex-shrink:0;justify-content:center;align-items:center;transition:transform .35s cubic-bezier(.16,1,.3,1),color .2s;display:flex}.project-row:hover .project-row__chevron{color:var(--accent)}.project-item.is-open .project-row__chevron{color:var(--accent);transform:rotate(180deg)}.project-panel{grid-template-rows:0fr;transition:grid-template-rows .5s cubic-bezier(.16,1,.3,1);display:grid}.project-item.is-open .project-panel{grid-template-rows:1fr}.project-panel__inner{overflow:hidden}.project-panel__body{border-top:1px solid var(--border);grid-template-columns:1fr 260px;gap:0;margin-top:0;padding:8px 0 48px 84px;display:grid}.project-panel__left{border-right:1px solid var(--border);flex-direction:column;gap:32px;padding-top:32px;padding-right:56px;display:flex}.project-panel__desc{font-family:var(--font-body);color:var(--ink-2);max-width:580px;font-size:1rem;line-height:1.75}.project-panel__highlights .project-panel__label{margin-bottom:14px;display:block}.project-panel__highlights ul{flex-direction:column;gap:10px;padding:0;list-style:none;display:flex}.project-panel__highlights li{color:var(--ink-2);padding-left:18px;font-size:.88rem;line-height:1.55;position:relative}.project-panel__highlights li:before{content:"";background:var(--accent);width:8px;height:1.5px;position:absolute;top:.58em;left:0}.project-panel__learnings .project-panel__label{margin-bottom:10px;display:block}.project-panel__learnings p{font-family:var(--font-display);color:var(--ink);max-width:520px;font-size:1.05rem;font-style:italic;font-weight:300;line-height:1.65}.project-panel__sidebar{flex-direction:column;gap:32px;padding:32px 0 0 36px;display:flex}.project-panel__label{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-size:.6rem}.project-panel__meta-list{flex-direction:column;gap:20px;display:flex}.project-panel__meta-item{flex-direction:column;gap:5px;display:flex}.project-panel__meta-value{font-family:var(--font-display);color:var(--ink);letter-spacing:-.01em;font-size:1rem;font-weight:600}.project-panel__tags-list{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.project-panel__links{flex-direction:column;gap:10px;display:flex}.project-panel__cta{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;border-radius:1px;align-items:center;gap:7px;width:fit-content;padding:10px 16px;font-size:.68rem;transition:background-color .2s,color .2s,border-color .2s;display:inline-flex}.project-panel__cta:not(.project-panel__cta--ghost){background:var(--accent-fill);color:var(--on-accent);min-height:44px}.project-panel__cta:not(.project-panel__cta--ghost):hover{background:var(--accent-fill-hover)}.project-panel__cta--ghost{border:1px solid var(--border-strong);color:var(--ink-2);min-height:44px}.project-panel__cta--ghost:hover{border-color:var(--accent);color:var(--accent)}@media (width<=900px){.projects__header{grid-template-columns:48px 1fr 80px 24px}.projects__header--tags{display:none}.project-row{grid-template-columns:48px 1fr 80px 24px}.project-row__tags{display:none}.project-panel__body{grid-template-columns:1fr 200px;padding-left:0}.project-panel__left{padding-right:32px}.project-panel__sidebar{padding-left:24px}}@media (width<=600px){.projects__header{display:none}.project-row__index,.project-row__name,.project-row__tags{--row-shift:12px}.project-row{grid-template-columns:auto 1fr auto;grid-template-areas:"index year chevron""name name name""tags tags tags";align-items:center;gap:8px 10px;padding:22px 0;display:grid}.project-row__index{grid-area:index;font-size:.78rem}.project-row__name{grid-area:name;font-size:clamp(1.3rem,6vw,1.7rem)}.project-row__tags{flex-wrap:wrap;grid-area:tags;display:flex}.project-row__tags .project-row__tag:nth-child(n+4){display:none}.project-row__year{grid-area:year;justify-self:start;font-size:.72rem;display:block}.project-row__year:before{content:"·";color:var(--ink-3);margin-right:10px}.project-row__chevron{grid-area:chevron;justify-self:end;display:flex}.project-panel__body{grid-template-columns:1fr;gap:0;padding-left:0}.project-panel__left{border-right:none;border-bottom:1px solid var(--border);gap:24px;padding-bottom:28px;padding-right:0}.project-panel__sidebar{gap:20px;padding-top:24px;padding-left:0}.project-panel__links{flex-flow:wrap}}.project-panel__nolink{letter-spacing:.06em;color:var(--ink-3);padding:10px 0;font-size:.68rem}.contact{background:var(--bg-2);transition:background-color .3s}.contact__inner{text-align:center;flex-direction:column;align-items:center;gap:clamp(40px,6vw,60px);display:flex}.contact__title{font-family:var(--font-display);color:var(--ink);letter-spacing:-.04em;font-size:clamp(2.2rem,7vw,7rem);font-weight:300;line-height:1.05}.contact__title em{color:var(--accent);font-style:italic}.contact__body{flex-direction:column;align-items:center;gap:32px;display:flex}.contact__email{font-family:var(--font-display);color:var(--ink);letter-spacing:-.01em;word-break:break-all;padding-bottom:4px;font-size:clamp(1rem,2.5vw,2rem);font-weight:300;transition:color .2s;position:relative}.contact__email:after{content:"";background:var(--accent);width:0;height:1px;transition:width .35s cubic-bezier(.16,1,.3,1);position:absolute;bottom:0;left:0}.contact__email:hover{color:var(--accent)}.contact__email:hover:after{width:100%}.contact__socials{gap:20px;display:flex}.contact__social{color:var(--ink-3);justify-content:center;align-items:center;transition:color .25s,transform .25s;display:flex}.contact__social:hover{color:var(--accent)}.social-svg{display:block}.social-svg__border,.social-svg__path{stroke-dasharray:1;stroke-dashoffset:0}.contact__social:hover .social-svg__border{animation:.7s cubic-bezier(.16,1,.3,1) forwards svg-trace}.contact__social:hover .social-svg__path{animation:.6s cubic-bezier(.16,1,.3,1) .2s forwards svg-trace}@keyframes svg-trace{0%{stroke-dashoffset:0}45%{stroke-dashoffset:1px}46%{stroke-dashoffset:-1px}to{stroke-dashoffset:0}}.contact__footer{border-top:1px solid var(--border);width:100%;color:var(--ink-3);letter-spacing:.08em;justify-content:space-between;align-items:center;padding-top:40px;font-size:.68rem;display:flex}.contact__footer-note{color:var(--ink-3)}@media (width<=600px){.contact__footer{text-align:center;flex-direction:column;gap:8px}}.contact__email-row{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.contact__copy{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--border-strong);border-radius:2px;min-height:44px;padding:0 16px;font-size:.68rem;transition:color .2s,border-color .2s}.contact__copy:hover{color:var(--accent);border-color:var(--accent)}.contact__email{align-items:center;min-height:44px;display:inline-flex}
