html,body{max-width:100%;overflow-x:clip}main{position:relative;z-index:1;background:var(--color-bg)}a{color:inherit}.portfolio-shell{width:min(calc(100% - 3rem),76rem);margin-inline:auto}.portfolio-hero{display:flex;min-height:min(58rem,100dvh);padding:clamp(7.5rem,13vw,10.5rem) 0 clamp(4rem,8vw,7rem);align-items:center;background:var(--color-dark-surface);color:var(--color-dark-text)}.portfolio-hero__grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(18rem,.65fr);gap:clamp(3rem,8vw,7rem);align-items:center}.portfolio-eyebrow,.portfolio-section__label,.project-card__number{margin:0;color:var(--color-accent);font-size:.78rem;font-weight:600;letter-spacing:.02em}.portfolio-hero .portfolio-eyebrow{color:var(--color-link-dark)}.portfolio-hero__title{max-width:12ch;margin:1.25rem 0 1.75rem;color:#f5f5f7;font-size:clamp(3.25rem,7vw,6.75rem);font-weight:600;letter-spacing:-.06em;line-height:.98;text-wrap:balance}.portfolio-hero__intro{display:grid;gap:.8rem;max-width:61ch;color:var(--color-dark-muted);font-size:clamp(1.05rem,1.6vw,1.2rem);line-height:1.6}.portfolio-hero__intro p{margin:0}.portfolio-hero__intro p:last-child{color:#86868b;font-size:.94rem}.portfolio-hero__actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:2rem}.brand-button--primary{background:#f5f5f7;color:#0b0b0c}.brand-button--primary:hover{background:#fff}.brand-button--text{color:var(--color-link-dark)}.brand-button--text:hover{color:#64b5ff}.portfolio-hero__portrait{margin:0;overflow:hidden;border-radius:var(--radius-medium);background:var(--color-dark-tile);box-shadow:0 1.5rem 4rem #0000003d}.portfolio-hero__portrait img{display:block;width:100%;aspect-ratio:1 / 1;object-fit:cover;object-position:center top;filter:saturate(.84) contrast(1.02);transition:transform var(--motion-media-duration) var(--motion-ease),filter var(--motion-media-duration) var(--motion-ease)}.portfolio-hero__portrait:hover img{transform:scale(1.015);filter:none}.hero-sequence{opacity:0;transform:translateY(.75rem);animation:hero-in var(--motion-hero-duration) var(--motion-ease) forwards}.hero-sequence:nth-child(2){animation-delay:var(--motion-stagger)}.hero-sequence:nth-child(3){animation-delay:calc(var(--motion-stagger) * 2)}.hero-sequence:nth-child(4){animation-delay:calc(var(--motion-stagger) * 3)}.portfolio-hero__portrait.hero-sequence{animation-delay:calc(var(--motion-stagger) * 5)}@keyframes hero-in{to{opacity:1;transform:none}}.proof-strip{border-bottom:1px solid var(--color-border);background:var(--color-surface)}.proof-strip__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-block:0}.proof-strip__grid>div{min-width:0;padding:1.5rem 1.5rem 1.5rem 0}.proof-strip__grid>div+div{padding-left:1.5rem;border-left:1px solid var(--color-border)}.proof-strip dt{margin-bottom:.3rem;color:var(--color-muted);font-size:.76rem}.proof-strip dd{margin:0;color:var(--color-text);font-size:.94rem;font-weight:600;font-variant-numeric:tabular-nums}.proof-strip__credentials{display:flex;flex-wrap:wrap;gap:.25rem .85rem}.proof-strip__credential{display:inline-flex;gap:.35rem;align-items:baseline;white-space:nowrap}.proof-strip__credential+.proof-strip__credential{position:relative}.proof-strip__credential+.proof-strip__credential:before{position:absolute;right:calc(100% + .4rem);color:var(--color-subtle);content:"·"}.proof-strip__credential strong{font-weight:600}.portfolio-section{padding-block:var(--section-spacing)}.portfolio-section+.portfolio-section{border-top:1px solid var(--color-border)}.portfolio-section__intro{display:grid;grid-template-columns:minmax(8rem,.34fr) minmax(0,1fr);gap:clamp(2rem,6vw,5rem);margin-bottom:clamp(3rem,7vw,5.5rem)}.portfolio-section__intro h2,.portfolio-contact h2{max-width:15ch;margin:0;color:var(--color-text);font-size:clamp(2.5rem,5.5vw,5rem);font-weight:600;letter-spacing:-.055em;line-height:1;text-wrap:balance}.portfolio-section__intro>div>p{max-width:58ch;margin:1rem 0 0;color:var(--color-muted);line-height:1.65}.experience-list{border-top:1px solid var(--color-border)}.experience-row{display:grid;grid-template-columns:minmax(10rem,.34fr) minmax(0,1fr);gap:clamp(2rem,6vw,5rem);padding:clamp(2rem,4vw,3rem) 0;border-bottom:1px solid var(--color-border)}.experience-row__date{margin:0;color:var(--color-muted);font-size:.88rem;font-variant-numeric:tabular-nums}.experience-row__kind{margin:0 0 .45rem;color:var(--color-accent);font-size:.78rem;font-weight:600}.experience-row h3{margin:0 0 .45rem;font-size:clamp(1.4rem,3vw,2rem);font-weight:600;letter-spacing:-.035em}.experience-row div>p:not(.experience-row__kind){margin:.15rem 0 0;color:var(--color-muted)}.experience-row__bullets{display:grid;gap:.65rem;margin:1.25rem 0 0;padding-left:1.15rem;color:var(--color-muted);font-size:.95rem;line-height:1.6}.experience-row__bullets li::marker{color:var(--color-accent)}.toeic-score-list{max-width:38rem;margin:1rem 0 0;border-top:1px solid var(--color-border)}.toeic-score-list>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.5rem;align-items:baseline;padding:.7rem 0;border-bottom:1px solid var(--color-border)}.toeic-score-list dt{color:var(--color-muted);font-size:.88rem}.toeic-score-list dd{margin:0;color:var(--color-text);font-size:1.05rem;font-weight:600;font-variant-numeric:tabular-nums}.projects-section{padding-bottom:0;background:var(--color-surface)}.project-showcase{min-width:0;background:#e8e8eb}.project-carousel-shell{position:relative;overflow:hidden}.project-carousel__controls{display:flex;justify-content:space-between;gap:1.5rem;align-items:center;padding-block:1rem}.project-carousel__progress{display:flex;gap:.5rem;align-items:center}.project-carousel__actions{display:flex;gap:.25rem;align-items:center;padding:.25rem;border:1px solid rgba(0,0,0,.08);border-radius:999px;background:#ffffffd1;box-shadow:0 .5rem 1.5rem #28282c14}.project-carousel__counter{min-width:4.25rem;color:var(--color-muted);font-family:var(--font-mono);font-size:.72rem;font-variant-numeric:tabular-nums}.project-carousel__pagination{position:static;display:flex;gap:0;width:auto}.project-carousel__pagination .swiper-pagination-bullet{position:relative;display:grid;width:2.75rem;height:2.75rem;margin:0;place-items:center;border-radius:0;background:transparent;opacity:1}.project-carousel__pagination .swiper-pagination-bullet:before{width:1.75rem;height:2px;background:#c5c5ca;content:""}.project-carousel__pagination .swiper-pagination-bullet:after{position:absolute;left:.5rem;width:0;height:2px;background:var(--color-accent);content:""}.project-carousel-shell.is-autoplaying .project-carousel__pagination .swiper-pagination-bullet-active:after{animation:project-progress 10s linear forwards}.project-carousel-shell.is-autoplay-paused .project-carousel__pagination .swiper-pagination-bullet-active:after,.project-carousel__pagination .swiper-pagination-bullet-active:after{width:1.75rem}.project-carousel__button{display:grid;width:2.75rem;min-height:2.75rem;padding:0;place-items:center;border:0;border-radius:50%;background:transparent;color:var(--color-text);font:inherit;cursor:pointer;transition:background-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast)}.project-carousel__button span{display:block;font-size:1.6rem;font-weight:400;line-height:1;transform:translateY(-.08rem)}.project-carousel__previous:hover{background:#f0f0f2;color:var(--color-accent)}.project-carousel__next{background:var(--color-text);color:#fff;box-shadow:0 .35rem .9rem #1d1d1f2e}.project-carousel__next:hover{background:var(--color-accent);box-shadow:0 .45rem 1rem #0066cc38}.project-carousel__button:hover{transform:translateY(-1px)}.project-carousel__button:active{transform:scale(.96)}.project-carousel__button:focus-visible,.project-carousel__pagination .swiper-pagination-bullet:focus-visible,.project-swiper:focus-visible,.project-card__links a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-swiper:focus-visible{outline-offset:-2px}.project-carousel__status{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.project-swiper{min-width:0;background:#fff}.project-swiper .swiper-wrapper{align-items:stretch}.project-swiper .project-card{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(22rem,.92fr);height:auto;min-height:41rem;background:#fff;color:var(--color-text)}.project-card__media{display:grid;min-width:0;min-height:100%;margin:0;padding:clamp(1.25rem,4vw,4rem);place-items:center;overflow:hidden;background:#ececef}.project-card__media--dark{background:#171719}.project-browser{width:100%;overflow:hidden;border:1px solid rgba(20,20,22,.15);border-radius:var(--radius-medium);background:#fff;box-shadow:0 1.25rem 3.5rem #00000029}.project-browser--dark{border-color:#ffffff29;background:#0b0b0c;box-shadow:0 1.25rem 3.5rem #00000057}.project-browser__bar{display:grid;grid-template-columns:3.75rem minmax(0,1fr) 3.75rem;gap:.75rem;align-items:center;min-height:2.5rem;padding:.45rem .75rem;border-bottom:1px solid rgba(20,20,22,.1);background:#f4f4f5}.project-browser--dark .project-browser__bar{border-color:#ffffff1a;background:#202024}.project-browser__lights{display:flex;gap:.3rem}.project-browser__lights i{width:.5rem;height:.5rem;border-radius:50%;background:#a7a7ac}.project-browser__address{min-width:0;padding:.28rem .75rem;overflow:hidden;border-radius:999px;background:#e7e7e9;color:#6e6e73;font-family:var(--font-mono);font-size:.62rem;text-align:center;text-overflow:ellipsis;white-space:nowrap}.project-browser--dark .project-browser__address{background:#303034;color:#a9a9af}.project-browser__viewport{overflow:hidden;background:#fff}.project-browser__viewport img{display:block;width:100%;height:auto;object-fit:contain}.project-media-fallback{display:grid;width:100%;min-height:18rem;padding:2rem;place-items:center;border:1px solid var(--color-border);color:var(--color-muted);text-align:center}.project-card__content{display:flex;flex-direction:column;justify-content:center;padding:clamp(2.5rem,5vw,4.5rem)}.project-card h3{margin:.85rem 0 .75rem;font-size:clamp(2.15rem,4vw,3.75rem);font-weight:600;letter-spacing:-.055em;line-height:1}.project-card__value{margin:0 0 1.55rem;color:var(--color-muted);font-size:.96rem;line-height:1.58}.project-card__details{display:grid;gap:0;margin:0}.project-card__details div{display:grid;grid-template-columns:5.5rem minmax(0,1fr);gap:1rem;padding:.72rem 0;border-top:1px solid var(--color-border)}.project-card__details dt{color:var(--color-text);font-size:.72rem;font-weight:600}.project-card__details dd{margin:0;color:var(--color-muted);font-size:.84rem;line-height:1.52}.project-card__tech{margin:1.15rem 0 0;color:var(--color-muted);font-family:var(--font-mono);font-size:.66rem;line-height:1.65}.project-card__links{display:flex;flex-wrap:wrap;gap:.6rem;margin:0 0 1.55rem}.inline-link,.project-card__links a{display:inline-flex;align-items:center;min-height:2.75rem;gap:.35rem;padding:0 .95rem;border:1px solid var(--color-accent);border-radius:999px;color:var(--color-accent);font-size:.86rem;font-weight:600;text-decoration:none;transition:background-color var(--transition-fast),color var(--transition-fast)}.project-card__links a.project-card__link--demo,.project-card__link--repository:hover{background:var(--color-accent);color:#fff}.project-card__link--demo:hover{background:#05a;border-color:#05a}.project-card__links a span:last-child{transition:transform var(--transition-fast)}.project-card__links a:hover span:last-child{transform:translate(.2rem,-.08rem)}.no-script-projects{display:grid;width:min(calc(100% - 2rem),76rem);margin-inline:auto;padding:2rem 0;border-top:1px solid var(--color-border)}.no-script-projects a{display:flex;align-items:center;min-height:2.75rem;padding:1rem 0;border-bottom:1px solid var(--color-border);color:var(--color-accent);font-weight:600;text-decoration:none}.no-script-projects span{display:flex;align-items:center;min-height:2.75rem;padding:1rem 0;border-bottom:1px solid var(--color-border);color:var(--color-text);font-weight:600}.no-script-note{padding:1.5rem 0;color:var(--color-muted)}@keyframes project-progress{0%{width:0}to{width:1.75rem}}.tools-block{padding-block:var(--section-spacing)}.tool-list{border-top:1px solid var(--color-border)}.tool-row{display:grid;grid-template-columns:minmax(12rem,.8fr) minmax(0,1.6fr) minmax(12rem,.8fr);gap:clamp(1.25rem,3vw,2.5rem);align-items:start;padding:1.75rem 0;border-bottom:1px solid var(--color-border)}.tool-row h3{margin:0;font-size:1.18rem;font-weight:600;letter-spacing:-.025em}.tool-row h3 a{display:inline-flex;align-items:center;min-height:2.75rem;text-decoration:none}.tool-row h3 a:hover{color:var(--color-accent)}.tool-row__summary p{margin:0;color:var(--color-muted);font-size:.91rem;line-height:1.6}.tool-row__summary p+p{margin-top:.4rem;color:var(--color-text)}.tool-row__meta{color:var(--color-muted);font-family:var(--font-mono);font-size:.68rem;text-align:right}.project-stars{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;color:var(--color-muted);font-family:var(--font-sans);font-size:.75rem}.project-stars[hidden]{display:none}.workflow-track{position:relative}.workflow-list{margin:0;padding:0;list-style:none;border-top:1px solid var(--color-border)}#workflow-line{position:absolute;inset:0 auto auto 0;width:2px;height:0;background:var(--color-accent)}.workflow-item{display:grid;grid-template-columns:5rem minmax(0,1fr);gap:clamp(1.5rem,5vw,4rem);padding:2rem 0 2rem 1.5rem;border-bottom:1px solid var(--color-border)}.workflow-item>span{color:var(--color-accent);font-variant-numeric:tabular-nums}.workflow-item h3{margin:0 0 .4rem;font-size:1.3rem;font-weight:600;letter-spacing:-.025em}.workflow-item p{max-width:58ch;margin:0;color:var(--color-muted);font-size:.94rem}.capabilities-section{background:var(--color-surface)}.capabilities-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--color-border)}.capabilities-grid>div{padding:1.8rem 2rem 1.8rem 0;border-bottom:1px solid var(--color-border)}.capabilities-grid>div:nth-child(2n){padding-left:2rem;border-left:1px solid var(--color-border)}.capabilities-grid h3{margin:0 0 .45rem;font-size:1rem;font-weight:600}.capabilities-grid p{margin:0;color:var(--color-muted);font-size:.9rem;line-height:1.6}.services-note{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2rem;align-items:end;margin-top:4rem;padding-top:2rem;border-top:1px solid var(--color-border)}.services-note h3{margin:0 0 .6rem;font-size:clamp(1.5rem,3vw,2.25rem);font-weight:600;letter-spacing:-.035em}.services-note p{max-width:60ch;margin:0;color:var(--color-muted)}.portfolio-contact{padding-block:clamp(7rem,14vw,12rem);background:var(--color-dark-surface);color:var(--color-dark-text)}.portfolio-contact .portfolio-section__label{color:var(--color-link-dark)}.portfolio-contact h2{max-width:12ch;margin-top:1.25rem;color:var(--color-dark-text)}.portfolio-contact>div>p:not(.portfolio-section__label){max-width:58ch;margin:1.5rem 0 0;color:var(--color-dark-muted)}.portfolio-contact__action{display:inline-flex;align-items:center;min-height:2.75rem;gap:.6rem;margin-top:2.5rem;color:var(--color-link-dark);font-size:clamp(1.15rem,2vw,1.5rem);font-weight:600;text-decoration:none}.portfolio-contact__action:hover span:last-child{transform:translate(.2rem,-.1rem)}.portfolio-contact__links{display:flex;gap:1.75rem;margin-top:5rem}.portfolio-contact__links a{display:inline-flex;align-items:center;min-height:2.75rem;color:var(--color-dark-muted);font-size:.88rem;text-decoration:none;transition:color var(--transition-fast)}.portfolio-contact__links a:hover{color:var(--color-dark-text)}@media(max-width:900px){.portfolio-hero{min-height:auto}.portfolio-hero__grid{grid-template-columns:minmax(0,1fr) minmax(14rem,.45fr);gap:2.5rem}.portfolio-hero__title{font-size:clamp(3.2rem,8vw,5.5rem)}.project-swiper .project-card{grid-template-columns:1fr;min-height:0}.project-card__media{min-height:0;padding:2rem}.project-card__content{padding:3rem 2rem 4rem}}@media(max-width:700px){.portfolio-shell{width:min(calc(100% - 2rem),76rem)}.portfolio-hero{padding-top:7rem}.portfolio-hero__grid{grid-template-columns:1fr}.portfolio-hero__copy{order:1}.portfolio-hero__portrait{order:2;width:100%;margin-top:.5rem}.portfolio-hero__portrait img{aspect-ratio:4 / 3;object-position:50% 24%}.portfolio-hero__title{max-width:100%;font-size:clamp(2.75rem,13vw,4.5rem);overflow-wrap:anywhere}.proof-strip__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.proof-strip__grid>div{padding:1.25rem 0}.proof-strip__grid>div+div{padding-left:1rem}.proof-strip__grid>div:nth-child(3){padding-left:0;border-left:0;border-top:1px solid var(--color-border)}.proof-strip__grid>div:nth-child(4){border-top:1px solid var(--color-border)}.proof-strip__credentials{display:grid;gap:.1rem}.proof-strip__credential+.proof-strip__credential:before{content:none}.portfolio-section__intro,.experience-row{grid-template-columns:1fr;gap:1rem}.portfolio-section__intro h2{font-size:clamp(2.4rem,12vw,4rem)}.project-carousel__controls{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:.25rem}.project-carousel__progress{justify-content:space-between}.project-carousel__actions{width:fit-content;justify-self:end}.project-card__media{min-height:16rem;padding:1rem}.project-card__content{padding:2.5rem 1rem 3.5rem}.project-card__details div{grid-template-columns:1fr;gap:.25rem}.tool-row{grid-template-columns:1fr;gap:.7rem}.tool-row__meta{text-align:left}.workflow-item{grid-template-columns:2.5rem minmax(0,1fr);padding-left:1rem}.capabilities-grid{grid-template-columns:1fr}.capabilities-grid>div,.capabilities-grid>div:nth-child(2n){padding:1.5rem 0;border-left:0}.services-note{grid-template-columns:1fr;align-items:start}}@media(prefers-reduced-motion:reduce){.hero-sequence{opacity:1;transform:none;animation:none}.project-carousel-shell.is-autoplaying .project-carousel__pagination .swiper-pagination-bullet-active:after{animation:none;width:1.75rem}.project-browser__viewport img{transform:none;transition:none}}
