@import"https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,500;0,600;1,500;1,600&display=swap";@import"https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400;1,9..40,500&family=Syne:wght@600;700;800&display=swap";@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Syne:wght@700;800&display=swap";*{margin:0;padding:0;box-sizing:border-box}body{margin:0;padding:0;overflow-x:hidden;background:#f7f5f2;color:#111;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{font-size:16px}@media(max-width:768px){html{font-size:15px}}@media(max-width:480px){html{font-size:14px}}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.skills-playground{position:relative;width:100%;height:100%;min-height:min(52vh,420px);margin:0;overflow:hidden;touch-action:pan-y;user-select:none;-webkit-user-select:none}.skills-playground.is-dragging{cursor:grabbing;touch-action:none}.skills-hud{position:absolute;top:.35rem;left:50%;transform:translate(-50%);z-index:4;width:min(920px,calc(100% - 1.25rem));display:flex;align-items:flex-end;justify-content:space-between;gap:.75rem;pointer-events:none}.skills-hud-copy{min-width:0}.skills-label{margin:0;font-family:DM Sans,sans-serif;font-size:.78rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:#ffffff8c;white-space:nowrap}.skills-hint{margin:.2rem 0 0;font-family:DM Sans,sans-serif;font-size:.72rem;font-weight:400;letter-spacing:.01em;color:#ffffff52}.skills-score{display:flex;flex-direction:column;align-items:flex-end;gap:.12rem;flex-shrink:0}.skills-score-main{font-family:Syne,sans-serif;font-size:1.55rem;font-weight:800;line-height:1;letter-spacing:-.04em;color:#f5f5f5}.skills-score-meta{display:flex;gap:.55rem;font-family:DM Sans,sans-serif;font-size:.68rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#ffffff61}.skills-score-meta .is-good{color:#9fd4a8}.skills-score-meta .is-bad{color:#fcb1b1}.skills-score-meta .is-combo{color:#e8d48f}.skills-chips{position:absolute;inset:0;z-index:1}.skill-chip{position:absolute;top:0;left:0;display:inline-flex;align-items:center;justify-content:center;padding:.55rem .95rem;font-family:DM Sans,sans-serif;font-size:clamp(.64rem,1.1vw,.78rem);font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#111;white-space:nowrap;cursor:grab;box-shadow:0 6px 18px #00000047;transform:translate3d(-9999px,-9999px,0);touch-action:none;z-index:1}.skill-chip.is-held{cursor:grabbing;z-index:5;box-shadow:0 10px 28px #0006;will-change:transform}.skill-chip.is-scored{opacity:0;pointer-events:none;transition:opacity .18s ease}.skill-chip.is-wrong{animation:chipNope .42s ease}@keyframes chipNope{0%,to{filter:none}25%{filter:saturate(1.2) brightness(.95);box-shadow:0 0 0 2px #fcb1b1}50%{filter:none}}.skill-chip--pill{border-radius:999px}.skill-chip--rounded{border-radius:16px;padding:.75rem 1.2rem}.skill-chip--circle{width:68px;height:68px;padding:0;border-radius:50%;font-size:.72rem}.skill-chip--square{width:72px;height:72px;padding:.4rem;border-radius:12px;font-size:.7rem;text-align:center;white-space:normal;line-height:1.15}.skill-chip--hex{width:78px;height:78px;padding:.45rem;border-radius:0;clip-path:polygon(50% 0%,100% 25%,100% 75%,50% 100%,0% 75%,0% 25%);font-size:.68rem;text-align:center;white-space:normal;line-height:1.1;box-shadow:none;filter:drop-shadow(0 6px 14px rgba(0,0,0,.3))}.skill-chip--diamond{width:78px;height:78px;padding:.5rem;border-radius:10px;clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%);font-size:.62rem;text-align:center;white-space:normal;line-height:1.1;box-shadow:none;filter:drop-shadow(0 6px 14px rgba(0,0,0,.3))}.skills-playground.is-dragging .skill-chip:not(.is-held){cursor:grab}.skill-bins{position:absolute;left:0;right:0;bottom:.45rem;z-index:3;display:flex;flex-wrap:wrap;justify-content:center;gap:.35rem;padding:0 .6rem;pointer-events:none}.skill-bin{--bin-color: #cdb4db;min-width:4.8rem;padding:.36rem .55rem .32rem;border:1px dashed var(--bin-color);border-radius:14px;background:#ffffff0a;display:flex;flex-direction:column;align-items:center;gap:.08rem;transition:transform .16s ease,background .16s ease,border-color .16s ease,box-shadow .16s ease}.skill-bin-label{font-family:Syne,sans-serif;font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--bin-color)}.skill-bin-count{font-family:DM Sans,sans-serif;font-size:.62rem;font-weight:600;letter-spacing:.06em;color:#fff6}.skill-bin.is-hot{transform:translateY(-3px) scale(1.04);background:#ffffff14;border-style:solid;border-color:var(--bin-color);box-shadow:0 0 0 1px var(--bin-color)}.skill-bin.is-full{border-style:solid;border-color:var(--bin-color);background:#ffffff0f}.skill-bin.is-reject{animation:binNope .42s ease;border-color:#fcb1b1}@keyframes binNope{0%,to{transform:translate(0)}25%{transform:translate(-5px)}50%{transform:translate(5px)}75%{transform:translate(-3px)}}.skill-pop{position:absolute;z-index:6;transform:translate(-50%,-120%);font-family:Syne,sans-serif;font-size:1.05rem;font-weight:800;letter-spacing:-.03em;pointer-events:none;animation:popFloat .78s ease forwards}.skill-pop--good{color:#9fd4a8}.skill-pop--bad{color:#fcb1b1}@keyframes popFloat{0%{opacity:0;transform:translate(-50%,-80%) scale(.8)}18%{opacity:1;transform:translate(-50%,-130%) scale(1)}to{opacity:0;transform:translate(-50%,-180%) scale(1)}}.skills-complete{position:absolute;inset:0;z-index:7;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;background:#080808b8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);text-align:center;padding:1.5rem}.skills-complete-kicker{margin:0;font-family:DM Sans,sans-serif;font-size:.72rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:#ffffff6b}.skills-complete-title{margin:0;font-family:Syne,sans-serif;font-size:clamp(1.4rem,3vw,2rem);font-weight:800;letter-spacing:-.04em;color:#f5f5f5}.skills-complete-stats{margin:.15rem 0 .7rem;font-family:DM Sans,sans-serif;font-size:.82rem;color:#ffffff7a}.skills-again{pointer-events:auto;border:0;border-radius:999px;padding:.65rem 1.25rem;font-family:DM Sans,sans-serif;font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#111;background:#f5f5f5;cursor:pointer}.skills-again:hover{background:#fff}.skill-guide{position:absolute;top:4.05rem;left:.7rem;z-index:6;display:flex;align-items:flex-start;gap:.55rem;max-width:min(460px,calc(100% - 1.4rem));pointer-events:auto;animation:guideIn .28s cubic-bezier(.2,.9,.3,1.2)}.skill-guide-face{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:.25rem}.skill-guide-portrait{width:76px;height:76px;overflow:visible;background:transparent}.skill-guide-portrait img{display:block;width:100%;height:100%;margin:0;object-fit:contain;object-position:center;filter:drop-shadow(0 6px 12px rgba(0,0,0,.45))}.skill-guide-portrait.is-talking img{animation:guideTalk .28s steps(2) infinite}.skill-guide-name{font-family:Syne,sans-serif;font-size:.58rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#e8d48f}@keyframes guideTalk{0%,to{transform:translateY(0)}50%{transform:translateY(2px)}}.skill-guide-bubble{position:relative;min-width:0;padding:.7rem .85rem .65rem;border:2px solid #f5f5f5;border-radius:18px 18px 18px 6px;background:#141414;box-shadow:0 12px 28px #0006}.skill-guide-bubble:before{content:"";position:absolute;left:-9px;bottom:18px;width:14px;height:14px;background:#141414;border-left:2px solid #f5f5f5;border-bottom:2px solid #f5f5f5;transform:rotate(45deg)}.skill-guide-title{margin:0 0 .28rem;display:flex;align-items:baseline;flex-wrap:wrap;gap:.4rem;font-family:Syne,sans-serif;font-size:.92rem;font-weight:800;letter-spacing:-.03em;color:#fcb1b1}.skill-guide-title span{font-family:DM Sans,sans-serif;font-size:.58rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#e8d48f;border:1px solid rgba(232,212,143,.45);border-radius:999px;padding:.12rem .4rem}.skill-guide-body{margin:0;min-height:2.4em;font-family:DM Sans,sans-serif;font-size:.8rem;line-height:1.4;color:#f0f0f0}.skill-guide-caret{display:inline-block;width:7px;height:.9em;margin-left:2px;background:#f5f5f5;vertical-align:text-bottom;animation:caretBlink .7s step-end infinite}.skill-guide-hint{margin:.4rem 0 0;font-family:DM Sans,sans-serif;font-size:.72rem;color:#ffffff8c}.skill-guide-hint em{font-style:normal;font-weight:700;color:#9fd4a8}.skill-guide-ok{margin-top:.45rem;border:0;border-radius:999px;padding:.28rem .7rem;font-family:DM Sans,sans-serif;font-size:.65rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#111;background:#f5f5f5;cursor:pointer}.skill-guide-ok:hover{background:#fff}@keyframes guideIn{0%{opacity:0;transform:translate(-18px) translateY(8px)}to{opacity:1;transform:none}}@keyframes caretBlink{0%,to{opacity:1}50%{opacity:0}}@media(max-width:640px){.skills-playground{min-height:min(42vh,300px)}.skills-hud{align-items:flex-start}.skills-hint{display:none}.skills-label{font-size:.64rem}.skills-score-main{font-size:1.05rem}.skills-score-meta{font-size:.56rem;gap:.35rem}.skill-chip{padding:.26rem .46rem;font-size:.5rem;letter-spacing:.02em;box-shadow:0 3px 10px #00000040}.skill-chip--rounded{padding:.3rem .5rem;border-radius:10px}.skill-chip--circle{width:40px;height:40px;padding:0;font-size:.46rem}.skill-chip--square{width:42px;height:42px;padding:.18rem;font-size:.44rem;border-radius:8px}.skill-chip--hex,.skill-chip--diamond{width:44px;height:44px;padding:.18rem;font-size:.42rem;clip-path:none;filter:none;border-radius:10px;box-shadow:0 3px 10px #00000040}.skill-bins{gap:.28rem;padding:0 .4rem}.skill-bin{min-width:3.5rem;padding:.22rem .34rem;border-radius:10px}.skill-bin-label{font-size:.52rem}.skill-bin-count{font-size:.5rem}.skill-guide{top:2.55rem;left:.4rem;max-width:calc(100% - .8rem);gap:.4rem}.skill-guide-portrait{width:56px;height:56px}.skill-guide-bubble{padding:.5rem .65rem}.skill-guide-title{font-size:.76rem}.skill-guide-body{font-size:.66rem;min-height:2em}}.skills-playground.is-lite .skill-chip{box-shadow:none}.skills-playground.is-lite .skill-chip--hex,.skills-playground.is-lite .skill-chip--diamond{clip-path:none;filter:none;border-radius:12px}.skills-playground.is-lite .skills-complete{-webkit-backdrop-filter:none;backdrop-filter:none;background:#080808e0}.skills-playground.is-lite .skill-guide{animation:none}.skills-playground.is-lite .skill-guide-portrait img{filter:none}.skills-playground.is-lite .skill-guide-portrait.is-talking img{animation:none}.skills-playground.is-lite .skill-pop{animation-duration:.45s}.portfolio-sections{position:relative;z-index:2;background:#0c0c0c;padding:clamp(1.5rem,4vw,3rem) clamp(1.25rem,6vw,4.5rem) clamp(2rem,5vh,3.5rem);display:flex;flex-direction:column;gap:0}.portfolio-card-slot{position:sticky;top:var(--stick-top, 1.25rem);height:auto;min-height:0;display:flex;align-items:flex-start;margin-bottom:1rem;pointer-events:none}.portfolio-card-slot:last-child{margin-bottom:0;height:auto;min-height:0;padding-bottom:1rem}.portfolio-card{pointer-events:auto;position:relative;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(180px,.8fr);align-items:center;gap:clamp(1.25rem,3vw,2.5rem);width:100%;height:auto;min-height:0;padding:clamp(1.35rem,3.2vw,2.25rem) clamp(1.75rem,5vw,4rem);border-radius:clamp(28px,4vw,48px);color:#111;overflow:hidden;box-shadow:0 -12px 40px #00000059}.portfolio-card-slot:last-child .portfolio-card{height:auto;min-height:0}.portfolio-card--pink{background:#f7c6d8}.portfolio-card--mint{background:#b8f0d4}.portfolio-card--blue{background:#b7e3f4}.portfolio-card--coral{background:#ff8f6b}.portfolio-card__text{max-width:36rem}.portfolio-card__text h2{margin:0 0 .85rem;font-family:Syne,sans-serif;font-weight:800;font-size:clamp(2rem,5vw,3.6rem);line-height:1;letter-spacing:-.04em}.portfolio-card__text p{margin:0;font-family:DM Sans,sans-serif;font-size:clamp(1rem,1.8vw,1.2rem);line-height:1.45;font-weight:500;color:#111111e0}.portfolio-card__text p strong{display:block;font-weight:800;color:#111;margin-bottom:.15rem}.portfolio-card__jobs{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:1.2rem}.portfolio-card__jobs li{display:flex;flex-direction:column}.portfolio-card__jobs li+li{padding-top:1.15rem;border-top:2px solid rgba(17,17,17,.1)}.portfolio-card__jobs strong{display:block;font-family:DM Sans,sans-serif;font-weight:800;color:#111;font-size:clamp(1rem,1.8vw,1.2rem);margin-bottom:.15rem}.portfolio-card__jobs p{margin:0}.portfolio-card__jobs .portfolio-card__links{margin-top:.75rem}.exp-dates{display:block;margin-bottom:.55rem;font-size:.92em;font-weight:600;color:#1119}.portfolio-card__links{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.15rem}.portfolio-card__link{display:inline-flex;align-items:center;padding:.7rem 1.15rem;border-radius:999px;background:#111;color:#fff;font-family:DM Sans,sans-serif;font-size:clamp(.82rem,1.3vw,.95rem);font-weight:700;text-decoration:none;transition:transform .15s ease,opacity .15s ease}.portfolio-card__link:hover{opacity:.85;transform:translateY(-1px)}.portfolio-card--mint .portfolio-card__link{color:#b8f0d4}.portfolio-card--pink .portfolio-card__link{color:#f7c6d8}.portfolio-card__list{margin:1.25rem 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.55rem}.portfolio-card__list li{position:relative;padding-left:1.15rem;font-family:DM Sans,sans-serif;font-size:clamp(.95rem,1.5vw,1.1rem);font-weight:600;color:#111}.portfolio-card__list li:before{content:"";position:absolute;left:0;top:.55em;width:.45rem;height:.45rem;border-radius:50%;background:#111}.portfolio-card__wins{margin:1.35rem 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.7rem}.portfolio-card__wins li{display:grid;grid-template-columns:auto 1fr;gap:.85rem;align-items:start}.win-rank{display:inline-flex;align-items:center;justify-content:center;min-width:3.4rem;padding:.28rem .55rem;border-radius:999px;background:#111;color:#b7e3f4;font-family:Syne,sans-serif;font-size:.78rem;font-weight:800;letter-spacing:.02em;line-height:1}.win-meta{display:flex;flex-direction:column;gap:.1rem;min-width:0}.win-meta strong{font-family:DM Sans,sans-serif;font-size:clamp(.95rem,1.5vw,1.08rem);font-weight:700;color:#111;line-height:1.25}.win-meta em{font-family:DM Sans,sans-serif;font-style:normal;font-size:.88rem;font-weight:500;color:#111111a6}.portfolio-card__cta{display:inline-flex;margin-top:1.5rem;appearance:none;background:transparent;border:none;border-bottom:3px solid #111;border-radius:0;padding:0 0 .15rem;font-family:Syne,sans-serif;font-weight:800;font-size:clamp(.95rem,1.5vw,1.15rem);letter-spacing:.06em;text-decoration:none;color:#111;cursor:pointer;transition:opacity .2s ease}.portfolio-card__cta:hover{opacity:.7}.featured-projects{display:grid;grid-template-columns:1fr;gap:.75rem;margin-top:1.35rem}.featured-project{display:flex;flex-direction:column;gap:.3rem;padding:.95rem 1.05rem;border-radius:18px;background:#1111111a;border:2px solid rgba(17,17,17,.12)}.featured-project__head{display:flex;align-items:center;gap:.45rem;margin-bottom:.15rem}.featured-project__tag{font-family:DM Sans,sans-serif;font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#1111118c}.featured-project__private{padding:.15rem .45rem;border-radius:999px;background:#111;color:#ff8f6b;font-family:DM Sans,sans-serif;font-size:.62rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.featured-project strong{font-family:Syne,sans-serif;font-size:clamp(1.05rem,2vw,1.25rem);font-weight:800;letter-spacing:-.02em;color:#111;line-height:1.15}.featured-project span:last-child{font-family:DM Sans,sans-serif;font-size:.9rem;font-weight:500;line-height:1.35;color:#111111b8}@media(min-width:900px){.featured-projects{grid-template-columns:1fr 1fr}}.portfolio-card__art{display:flex;justify-content:center;align-items:center;justify-self:end}.section-graphic{width:min(100%,200px);height:auto;filter:drop-shadow(0 10px 0 rgba(17,17,17,.08));transform:rotate(-6deg)}.section-graphic--avatar{width:min(100%,230px);transform:rotate(16deg)}.section-graphic--avatar img{display:block;width:100%;height:auto;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.portfolio-card--blue .section-graphic{transform:rotate(8deg)}.portfolio-card--mint .section-graphic{transform:rotate(5deg)}.portfolio-card--coral .section-graphic{transform:rotate(-10deg)}@media(max-width:800px){.portfolio-sections{padding-left:clamp(.85rem,4vw,1.25rem);padding-right:clamp(.85rem,4vw,1.25rem)}.portfolio-card-slot{position:relative;top:auto;height:auto;min-height:0;margin-bottom:1rem}.portfolio-card,.portfolio-card-slot:last-child .portfolio-card{grid-template-columns:1fr;height:auto;min-height:0;padding:2rem 1.5rem 1.75rem;box-shadow:none}.portfolio-card__art{justify-self:center;order:-1}.section-graphic{width:min(42vw,160px);filter:none}}@media(prefers-reduced-motion:reduce){.portfolio-card-slot{position:relative;top:auto!important;height:auto;min-height:0}}.site-footer{position:relative;z-index:6;background:#070707;color:#f5f5f5;padding:clamp(2.5rem,6vw,4.5rem) clamp(1.25rem,6vw,4.5rem) clamp(1.25rem,3vw,2rem);overflow:hidden}.site-footer__inner{position:relative;max-width:1400px;margin:0 auto}.site-footer__top{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem}.site-footer__intro{max-width:22rem}.site-footer__eyes{display:flex;align-items:center;gap:0;margin:0 0 1.15rem;height:4.85rem}.eye{position:relative;display:block;flex-shrink:0;width:2.7rem;height:4.5rem;overflow:hidden;border-radius:999px;background:#fff}.eye__pupil{position:absolute;width:.78rem;height:.78rem;border-radius:50%;background:#070707;will-change:transform}.eye--left .eye__pupil{top:58%;left:48%}.eye--right .eye__pupil{top:58%;left:22%}.eye__pupil:after{content:"";position:absolute;top:14%;right:16%;width:34%;height:34%;border-radius:50%;background:#fff}.site-footer__intro p{margin:0;font-family:DM Sans,sans-serif;font-size:clamp(.95rem,1.6vw,1.12rem);font-weight:500;line-height:1.45;color:#f5f5f5b8}.site-footer__socials{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.65rem;padding-top:.35rem}.site-footer__icon{display:inline-flex;align-items:center;justify-content:center;width:2.85rem;height:2.85rem;border-radius:50%;background:#1a1a1a;color:#f5f5f5;text-decoration:none;transition:transform .18s ease,background .18s ease,color .18s ease}.site-footer__icon svg,.site-footer__icon img{width:1.05rem;height:1.05rem}.site-footer__icon img{filter:invert(1);object-fit:contain}.site-footer__icon:hover{background:#ffe566;color:#111;transform:translateY(-2px)}.site-footer__icon:hover img{filter:none}.site-footer__name-wrap{position:relative;margin:clamp(2.5rem,8vh,5.5rem) 0 clamp(1.5rem,4vh,2.5rem);min-height:8rem}.site-footer__name{margin:0;display:flex;flex-direction:column;font-family:Playfair Display,serif;font-style:italic;font-weight:500;font-size:clamp(3.4rem,10.6vw,9.4rem);line-height:.86;letter-spacing:-.045em;color:#f7f4ee}.site-footer__name-left{align-self:flex-start}.site-footer__name-right{align-self:flex-end;text-align:right;white-space:nowrap}.site-footer__copy{position:absolute;top:0;left:0;z-index:2;display:inline-flex;align-items:center;gap:.45rem;padding:.72rem 1.2rem;border:0;border-radius:999px;background:#ffe566;color:#111;font-family:DM Sans,sans-serif;font-size:clamp(.78rem,1.3vw,.92rem);font-weight:700;letter-spacing:.01em;cursor:pointer;white-space:nowrap;box-shadow:0 10px 24px #00000047;will-change:transform;transition:background .15s ease}.site-footer__copy svg{width:.95rem;height:.95rem}.site-footer__copy:hover{background:#fff08a}.site-footer__copy.is-copied{background:#7cffb2}@media(max-width:800px){.site-footer{padding-top:2.25rem}.site-footer__top{flex-direction:column}.site-footer__socials{justify-content:flex-start}.site-footer__name{font-size:clamp(2.6rem,14vw,4.2rem)}.site-footer__name-right{white-space:normal}}@media(max-width:480px){.site-footer__icon{width:2.55rem;height:2.55rem}.eye{width:2.05rem;height:3.5rem}.site-footer__eyes{height:3.7rem;gap:0}.eye__pupil{width:.62rem;height:.62rem}}@media(hover:none){.site-footer__copy{left:50%;top:50%;transform:translate(-50%,-50%)!important}}@media(prefers-reduced-motion:reduce){.eye__pupil,.site-footer__copy{transition:none}}.hero-track{position:relative;height:320vh;background:#f7f5f2}.hero-sticky{--mouth-x: 50%;--mouth-y: 78%;--mouth-r: 0%;position:sticky;top:0;height:100vh;width:100%;overflow:hidden;isolation:isolate}.hero-bg{position:absolute;inset:0;background:radial-gradient(ellipse 80% 60% at 50% 40%,#fff,#f7f5f2 55%,#ebe6df);z-index:0}.hero-name{position:absolute;top:clamp(1.25rem,3vw,2rem);left:clamp(1.25rem,3vw,2.5rem);z-index:5;margin:0;display:flex;flex-direction:column;font-family:Syne,sans-serif;font-weight:800;font-size:clamp(2.4rem,7vw,5.5rem);line-height:.95;letter-spacing:-.04em;color:#111;pointer-events:none;transition:opacity .1s linear}.hero-name span{display:block}.hero-tag{position:absolute;bottom:clamp(1.25rem,3vw,2rem);right:clamp(1.25rem,3vw,2.5rem);z-index:5;margin:0;display:flex;flex-direction:column;align-items:flex-end;text-align:right;font-family:Syne,sans-serif;font-style:normal;font-weight:800;font-size:clamp(2.4rem,7vw,5.5rem);line-height:.78;letter-spacing:-.04em;color:#111;pointer-events:none;transition:opacity .1s linear;gap:0}.hero-tag span{display:block;margin:0;padding:0}.hero-tag span+span{margin-top:-.12em}.avatar-wrap{--avatar-size: min(78vw, 460px);position:absolute;top:48%;left:50%;z-index:2;width:var(--avatar-size);height:calc(var(--avatar-size) * 1.06);transform:translate(-50%,-50%)}.avatar{position:relative;width:100%;height:100%}.avatar-img{display:block;width:100%;height:100%;object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;filter:drop-shadow(0 18px 40px rgba(17,17,17,.08))}.mouth-anchor{position:absolute;left:49.5%;top:82.5%;width:7.2%;height:6.8%;transform:translate(-50%,-50%);border-radius:50%;background:transparent;pointer-events:none}.mouth-cover{display:none}.mouth-portal{position:absolute;inset:0;z-index:3;background:#0c0c0c;clip-path:circle(var(--mouth-r) at var(--mouth-x) var(--mouth-y));pointer-events:none}.mouth-portal.is-open{pointer-events:auto}.mouth-portal.is-full{clip-path:none}.portal-inner{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(.85rem,3vw,2.2rem) 0 clamp(.4rem,1.5vw,1rem);gap:1.1rem}.portal-content{width:min(960px,92%);text-align:center;flex-shrink:0}.portal-skills{width:100%;flex:1 1 auto;min-height:0;display:flex;align-items:stretch}.portal-lead{margin:0;font-family:Syne,sans-serif;font-weight:700;font-size:clamp(1.55rem,4.2vw,3.15rem);line-height:1.2;letter-spacing:-.03em;color:#f5f5f5}.accent{font-style:normal}.accent-ai{color:#f2a0b8}.accent-nlp{color:#8fd4e8}.accent-xr{color:#e8d48f}.accent-web{color:#9fd4a8}.scroll-hint{position:absolute;bottom:clamp(1.5rem,4vw,2.5rem);left:50%;transform:translate(-50%);z-index:4;display:flex;flex-direction:column;align-items:center;gap:.55rem;font-family:DM Sans,sans-serif;font-size:.72rem;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:#111;pointer-events:none}.scroll-hint-line{display:block;width:1px;height:2.25rem;background:linear-gradient(to bottom,#111,transparent);animation:hintPulse 1.6s ease-in-out infinite}@keyframes hintPulse{0%,to{opacity:.35;transform:scaleY(.85)}50%{opacity:1;transform:scaleY(1)}}.hero-sticky--lite .mouth-cover{display:block;position:absolute;left:var(--mouth-x);top:var(--mouth-y);width:20px;height:20px;border-radius:50%;background:#0c0c0c;transform:translate(-50%,-50%) scale(0);transform-origin:center;z-index:3;pointer-events:none}.hero-sticky--lite .mouth-portal{clip-path:none;opacity:0;transition:opacity .18s linear}.hero-sticky--lite .mouth-portal.is-full{opacity:1}.hero-sticky--lite .avatar-img{filter:none}@media(max-width:768px){.hero-track{height:240vh}.hero-sticky{height:100svh;height:var(--vvh, 100svh)}.hero-name{top:max(.65rem,env(safe-area-inset-top,0px));left:1rem;font-size:clamp(1.65rem,8.4vw,2.15rem);line-height:.92}.hero-tag{bottom:max(.7rem,env(safe-area-inset-bottom,0px));right:1rem;font-size:clamp(1.65rem,8.4vw,2.15rem)}.avatar-wrap{--avatar-size: min(68vw, 270px);top:48%}.scroll-hint{bottom:max(.45rem,env(safe-area-inset-bottom,0px));font-size:.64rem}.scroll-hint-line{height:1.5rem}.portal-inner{padding:max(.55rem,env(safe-area-inset-top,0px)) 0 max(.4rem,env(safe-area-inset-bottom,0px));gap:.55rem}.portal-lead{font-size:clamp(1.15rem,5.6vw,1.55rem)}}@media(prefers-reduced-motion:reduce){.scroll-hint-line{animation:none}.mouth-portal{clip-path:none}}.all-projects{min-height:100vh;background:#0c0c0c;color:#f5f5f5;padding:clamp(1.5rem,4vw,3rem) clamp(1.25rem,5vw,4rem) clamp(1.5rem,4vw,2.5rem)}.all-projects__header{max-width:52rem;margin-bottom:clamp(2.5rem,6vw,4rem)}.all-projects__back{appearance:none;border:none;background:transparent;color:#ffffff8c;font-family:DM Sans,sans-serif;font-size:.9rem;font-weight:600;letter-spacing:.04em;cursor:pointer;padding:0;margin-bottom:1.75rem;transition:color .15s ease}.all-projects__back:hover{color:#fff}.all-projects__eyebrow{margin:0 0 .6rem;font-family:DM Sans,sans-serif;font-size:.78rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:#fff6}.all-projects__header h1{margin:0 0 .85rem;font-family:Syne,sans-serif;font-weight:800;font-size:clamp(2.6rem,7vw,4.5rem);line-height:.95;letter-spacing:-.04em}.all-projects__lead{margin:0;font-family:DM Sans,sans-serif;font-size:clamp(1rem,2vw,1.2rem);line-height:1.5;color:#fff9;max-width:36rem}.all-projects__category{margin-bottom:clamp(2.5rem,6vw,4rem)}.all-projects__category h2{margin:0 0 1.25rem;font-family:Syne,sans-serif;font-weight:800;font-size:clamp(1.35rem,3vw,1.85rem);letter-spacing:-.03em;color:#fff}.all-projects__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:1rem}.project-tile{display:flex;flex-direction:column;gap:.85rem;padding:1.35rem 1.4rem 1.25rem;border-radius:22px;background:#171717;border:1px solid rgba(255,255,255,.06);transition:border-color .2s ease,transform .2s ease}.project-tile:hover{border-color:#ffffff29;transform:translateY(-2px)}.project-tile__top{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.project-tile h3{margin:0;font-family:Syne,sans-serif;font-weight:700;font-size:1.15rem;letter-spacing:-.02em;color:#fff}.project-tile__badge{flex-shrink:0;padding:.25rem .55rem;border-radius:999px;background:#ff8f6b33;color:#ff8f6b;font-family:DM Sans,sans-serif;font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.project-tile p{margin:0;font-family:DM Sans,sans-serif;font-size:.92rem;line-height:1.45;color:#ffffff8c;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.project-tile__tags{display:flex;flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none}.project-tile__tags li{padding:.28rem .55rem;border-radius:999px;background:#ffffff0f;font-family:DM Sans,sans-serif;font-size:.68rem;font-weight:600;letter-spacing:.03em;color:#ffffff8c}.project-tile__link{margin-top:auto;align-self:flex-start;font-family:Syne,sans-serif;font-weight:700;font-size:.88rem;letter-spacing:.04em;color:#8fd4e8;text-decoration:none}.project-tile__link:hover{text-decoration:underline}.page-shell{min-height:100vh}.page-shell--enter{animation:pageIn .55s cubic-bezier(.22,1,.36,1) both}.page-shell--exit{animation:pageOut .35s ease both;pointer-events:none}@keyframes pageIn{0%{opacity:0;transform:translateY(28px) scale(.985);filter:blur(6px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}@keyframes pageOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(16px)}}@media(prefers-reduced-motion:reduce){.page-shell--enter,.page-shell--exit{animation:none}}#root{margin:0;padding:0}
