@font-face{font-family:Rubik Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/rubik-arabic-wght-normal-CGnJ-sf6.woff2)format("woff2-variations");unicode-range:U+6??,U+750-77F,U+870-88E,U+890-891,U+897-8E1,U+8E3-8FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:Rubik Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/rubik-cyrillic-ext-wght-normal-BjodpZir.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Rubik Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/rubik-cyrillic-wght-normal-DveCct9I.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Rubik Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/rubik-hebrew-wght-normal-BIkpbuMU.woff2)format("woff2-variations");unicode-range:U+307-308,U+590-5FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}@font-face{font-family:Rubik Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/rubik-latin-ext-wght-normal-OacczzuJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Rubik Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/rubik-latin-wght-normal-CnQIisVs.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@property --angle{syntax:"<angle>";inherits:false;initial-value:0deg}:root{--ink:#15131f;--ink-2:#4a4760;--muted:#77738c;--bg:#fbfaff;--card:#fff;--line:#281e5a17;--purple:#6a11cb;--blue:#2575fc;--pink:#ff758c;--accent:linear-gradient(135deg, var(--purple), var(--blue) 55%, var(--pink));--pastel:linear-gradient(135deg, #d0c4fc, #b5d0ff 55%, #ffdee3);--radius:24px;--shadow:0 1px 2px #1e14500d, 0 8px 30px -12px #281e6e2e;--shadow-lg:0 2px 4px #1e14500f, 0 30px 60px -20px #321e8c59;--ease:cubic-bezier(.22, 1, .36, 1);--font:"Rubik Variable", "Rubik", system-ui, -apple-system, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:80px}html.modal-open{overflow:hidden}body{font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;line-height:1.6;overflow-x:clip}img{max-width:100%;display:block}a{color:inherit}h1,h2,h3,h4{letter-spacing:-.02em;margin:0;line-height:1.15}p{margin:0}svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;width:1.1em;height:1.1em}svg.fill{fill:currentColor;stroke:none}::selection{color:var(--ink);background:#d0c4fc}:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:8px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip{z-index:100;background:var(--ink);color:#fff;border-radius:12px;padding:10px 16px;text-decoration:none;transition:top .2s;position:fixed;top:-60px;left:16px}.skip:focus{top:16px}.wrap{width:min(1120px,100% - 48px);margin-inline-start:auto;margin-inline-end:auto}.grad-text{background:var(--accent);color:#0000;-webkit-background-clip:text;background-clip:text}.btn{--pad:14px 22px;padding:var(--pad);font:500 1rem/1 var(--font);cursor:pointer;transition:transform .25s var(--ease), box-shadow .25s var(--ease), background .25s, color .25s;border:0;border-radius:999px;align-items:center;gap:10px;text-decoration:none;display:inline-flex}.btn svg{transition:transform .25s var(--ease)}.btn:hover svg{transform:translate(3px)}.btn:active{transform:scale(.97)}.btn-sm{--pad:9px 16px;font-size:.9rem}.btn-light{color:var(--ink);background:#fff;box-shadow:0 10px 30px -10px #00000073}.btn-light:hover{transform:translateY(-2px)}.btn-glass{color:#fff;-webkit-backdrop-filter:blur(10px);background:#140e2d52;box-shadow:inset 0 0 0 1px #ffffff59}.btn-glass:hover{background:#140e2d73;transform:translateY(-2px)}.btn-ghost{color:#fff;-webkit-backdrop-filter:blur(10px);background:#ffffff1a;box-shadow:inset 0 0 0 1px #ffffff4d}.btn-grad{color:#fff;background:var(--accent);background-size:160% 160%;box-shadow:0 14px 30px -12px #6a11cb99}.btn-grad:hover{background-position:100%;transform:translateY(-2px);box-shadow:0 18px 36px -12px #2575fc99}.topbar{z-index:40;padding:16px clamp(20px,4vw,40px);padding-top:max(16px, env(safe-area-inset-top));justify-content:space-between;align-items:center;transition:background .35s,box-shadow .35s,padding .35s;display:flex;position:fixed;top:0;bottom:auto;left:0;right:0}.wordmark{letter-spacing:-.03em;color:#fff;font-size:1.15rem;font-weight:700;text-decoration:none;transition:color .35s}.wordmark span{opacity:.6;font-weight:400}.topbar.scrolled{-webkit-backdrop-filter:saturate(1.6)blur(16px);box-shadow:0 1px 0 var(--line);background:#fbfaffb8;padding-block-start:10px;padding-block-end:10px}.topbar.scrolled .wordmark{color:var(--ink)}.topbar.scrolled .btn-ghost{color:var(--ink);box-shadow:inset 0 0 0 1px var(--line), var(--shadow);background:#fff}.pill-nav{z-index:45;position:fixed;top:50%;left:20px;transform:translateY(-50%)}.pill-nav ul{-webkit-backdrop-filter:blur(14px);transition:padding .35s var(--ease);background:#0f0c1eb8;border-radius:999px;flex-direction:column;gap:6px;margin:0;padding:12px 8px;list-style:none;display:flex;box-shadow:inset 0 0 0 1px #ffffff1a,0 20px 40px -20px #0009}.pill-nav a{width:20px;height:20px;transition:width .35s var(--ease), height .35s var(--ease);place-items:center;text-decoration:none;display:grid;position:relative}.pill-nav .dot{background:var(--accent);width:10px;height:10px;color:var(--ink);transition:width .35s var(--ease), height .35s var(--ease), background .3s, transform .25s var(--ease), box-shadow .3s;border-radius:50%;place-items:center;display:grid}.pill-nav .dot svg{opacity:0;width:16px;height:16px;transition:opacity .3s, transform .3s var(--ease);transform:scale(.6)}.pill-nav a.active .dot{box-shadow:0 0 0 3px #ffffffe6,0 0 18px #6a11cbe6}.pill-nav ul:hover,.pill-nav ul:focus-within{padding:12px 10px}.pill-nav ul:hover a,.pill-nav ul:focus-within a{width:42px;height:42px}.pill-nav ul:hover .dot,.pill-nav ul:focus-within .dot{width:40px;height:40px;box-shadow:none;background:#fff}.pill-nav ul:hover .dot svg,.pill-nav ul:focus-within .dot svg{opacity:1;transform:scale(1)}.pill-nav a:hover .dot,.pill-nav ul:hover a.active .dot{background:var(--accent);color:#fff;transform:scale(1.12)}.pill-nav a:focus-visible .dot{background:var(--accent);color:#fff;transform:scale(1.12)}.nav-label{color:#fff;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s, transform .25s var(--ease);background:#0f0c1ed9;border-radius:10px;padding:6px 12px;font-size:.85rem;position:absolute;top:50%;left:calc(100% + 16px);transform:translate(-6px,-50%)}.pill-nav a:hover .nav-label{opacity:1;transform:translateY(-50%)}.pill-nav a:focus-visible .nav-label{opacity:1;transform:translateY(-50%)}.hero{height:100vh;color:#fff;isolation:isolate;background:#29323c;place-items:center;height:100svh;min-height:560px;display:grid;position:relative;overflow:hidden}.hero-fallback{z-index:-3;background-blend-mode:multiply;background:linear-gradient(#29323c,#485563) 50%/cover,url(/img/snow.webp) 50%/cover;animation:32s linear infinite fallback-hue;position:absolute;top:0;bottom:0;left:0;right:0}@keyframes fallback-hue{0%,to{filter:hue-rotate()saturate()}33%{filter:hue-rotate(-40deg)saturate(1.4)}66%{filter:hue-rotate(20deg)saturate(1.2)}}.hero-canvas{z-index:-2;opacity:0;width:100%;height:100%;transition:opacity 1.4s var(--ease);position:absolute;top:0;bottom:0;left:0;right:0}.hero-canvas.ready{opacity:1}.hero-scrim{z-index:-1;pointer-events:none;background:radial-gradient(62% 50% at 50% 50%, #0c0a1e66, transparent 72%), linear-gradient(180deg, #0a081959, transparent 22%, transparent 70%, var(--bg) 100%);position:absolute;top:0;bottom:0;left:0;right:0}.hero-content{text-align:center;max-width:980px;padding:0 24px;translate:0 -2vh}.eyebrow{letter-spacing:.02em;-webkit-backdrop-filter:blur(8px);animation:rise .9s var(--ease) both;background:#ffffff1f;border-radius:999px;align-items:center;gap:10px;margin-bottom:26px;padding:7px 14px 7px 12px;font-size:.85rem;display:inline-flex;box-shadow:inset 0 0 0 1px #ffffff40}.pulse{background:#7cf5b5;border-radius:50%;width:8px;height:8px;animation:2s infinite pulse;box-shadow:0 0 #7cf5b5b3}@keyframes pulse{70%{box-shadow:0 0 0 10px #7cf5b500}to{box-shadow:0 0 #7cf5b500}}.hero h1{letter-spacing:-.045em;text-shadow:0 6px 40px #00000040;animation:rise 1s 80ms var(--ease) both;font-size:clamp(2.6rem,8vw,6.4rem);font-weight:700;line-height:1}.hero h1 .grad-text{background:linear-gradient(110deg,#e3d7ff,#b5d0ff 45%,#ffc2cf);text-shadow:none;filter:drop-shadow(0 6px 30px #6a11cb59);-webkit-background-clip:text;background-clip:text}.tagline{color:#ffffffeb;text-shadow:0 2px 16px #00000059;min-height:3.4em;animation:rise 1s .16s var(--ease) both;margin-top:22px;font-size:clamp(1.05rem,2.2vw,1.35rem);font-weight:400}.caret{vertical-align:-.18em;background:#fff;width:2px;height:1.15em;margin-left:3px;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.hero-cta{animation:rise 1s .24s var(--ease) both;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:18px;display:flex}@keyframes rise{0%{opacity:0;transform:translateY(18px)}}.scroll-cue{bottom:max(28px, env(safe-area-inset-bottom));border-radius:999px;width:26px;height:42px;position:absolute;left:50%;translate:-50%;box-shadow:inset 0 0 0 2px #15131f59}.scroll-cue span{background:var(--ink-2);width:4px;height:8px;animation:cue 1.8s var(--ease) infinite;border-radius:4px;margin-left:-2px;position:absolute;top:8px;left:50%}@keyframes cue{0%{opacity:1;transform:translateY(0)}80%,to{opacity:0;transform:translateY(14px)}}.section{padding:clamp(72px,11vw,130px) 0 0}.section.tight{padding-top:clamp(56px,8vw,96px)}.section-title{align-items:baseline;gap:14px;margin-bottom:clamp(28px,4vw,44px);font-size:clamp(1.9rem,4vw,2.8rem);font-weight:600;display:flex}.section-title.sub{margin-top:clamp(64px,9vw,110px);font-size:clamp(1.5rem,3vw,2rem)}.kicker{letter-spacing:.06em;background:var(--pastel);color:var(--purple);border-radius:999px;padding:4px 10px;font-size:.9rem;font-weight:600;translate:0 -.35em}.muted{color:var(--muted);font-size:.7em;font-weight:400}.time-text{color:var(--muted);font-size:.98rem;font-weight:300}.reveal{opacity:0;transition:opacity .9s var(--ease) var(--d,0s), transform .9s var(--ease) var(--d,0s);transform:translateY(26px)}.reveal.in{opacity:1;transform:none}.glow-card{background:var(--card);border-radius:var(--radius);box-shadow:inset 0 0 0 1px var(--line), var(--shadow);transition:box-shadow .4s var(--ease), transform .4s var(--ease);position:relative}.glow-card:before{content:"";border-radius:inherit;background:conic-gradient(from var(--angle), var(--purple), var(--blue), var(--pink), var(--purple));-webkit-mask-composite:xor;opacity:0;pointer-events:none;padding:1.5px;transition:opacity .4s;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.glow-card:hover{box-shadow:inset 0 0 0 1px #0000,0 2px 4px #1e14500f,0 30px 60px -24px #6a11cb66,0 20px 50px -30px #2575fc80}.glow-card:hover:before{opacity:1;animation:4s linear infinite spin}@keyframes spin{to{--angle:360deg}}.tilt{--rx:0deg;--ry:0deg;transform-style:preserve-3d}.tilt.in{transform:perspective(1000px) rotateX(var(--rx)) rotateY(var(--ry));transition:opacity .9s var(--ease) var(--d,0s), transform .5s var(--ease)}.intro{grid-template-columns:1.6fr 1fr;align-items:center;gap:clamp(32px,6vw,80px);display:grid}.fun-fact{background:var(--pastel);color:var(--ink-2);border-radius:14px;margin-bottom:22px;padding:8px 16px;font-size:.98rem;display:inline-block}.lead{color:var(--ink-2);font-size:clamp(1.05rem,1.6vw,1.2rem);line-height:1.75}.bold-text{margin-top:22px;font-size:1.2rem;font-weight:600;display:inline-block}.photo-ring{background:var(--accent);box-shadow:var(--shadow-lg);border-radius:32px;padding:6px;position:relative}.photo-ring:before{content:"";z-index:-1;background:var(--pastel);border-radius:32px;position:absolute;top:18px;bottom:-18px;left:14px;right:-14px}.photo-ring img{aspect-ratio:4/5;object-fit:cover;border-radius:27px;width:100%;height:auto}.timeline{--progress:0;gap:26px;max-width:820px;margin:0;padding:0 0 0 44px;list-style:none;display:grid;position:relative}.timeline:before,.timeline:after{content:"";border-radius:3px;width:3px;position:absolute;top:6px;bottom:6px;left:13px}.timeline:before{background:var(--line)}.timeline:after{background:linear-gradient(180deg, var(--purple), var(--blue), var(--pink));transform-origin:top;transform:scaleY(var(--progress))}.tl-item{position:relative}.tl-node{z-index:1;background:#fff;border-radius:50%;width:15px;height:15px;position:absolute;top:30px;left:-38px;box-shadow:0 0 0 3px #b5d0ff,0 4px 10px #2575fc59}.tl-card{grid-template-columns:64px 1fr;gap:20px;padding:24px 26px;display:grid}.tl-card:hover{transform:translateY(-3px)}.tl-logo{background:var(--pastel);border-radius:18px;place-items:center;width:64px;height:64px;display:grid;overflow:hidden}.tl-logo img{object-fit:contain;mix-blend-mode:multiply;width:44px;height:44px}.tl-date{letter-spacing:.06em;text-transform:uppercase;color:var(--purple);margin-bottom:6px;font-size:.82rem;font-weight:600}.tl-card h3{font-size:1.3rem;font-weight:600}.tl-card h4{color:var(--ink-2);margin:4px 0 10px;font-size:1rem;font-weight:500}.tl-card p:last-child{color:var(--ink-2)}.project-grid{gap:24px;display:grid}.project-grid.current{grid-template-columns:repeat(2,1fr)}.project-grid.completed{flex-wrap:wrap;justify-content:center;display:flex}.project-grid.completed .project-card{flex:0 calc(33.3333% - 16px)}.project-card{cursor:pointer;flex-direction:column;display:flex;overflow:visible}.project-hit{z-index:3;border-radius:inherit;cursor:pointer;background:0 0;border:0;position:absolute;top:0;bottom:0;left:0;right:0}.project-media{aspect-ratio:16/10;border-radius:calc(var(--radius) - 6px);background:var(--pastel);margin:8px 8px 0;position:relative;overflow:hidden}.project-card.big .project-media{aspect-ratio:16/9}.project-media img{object-fit:cover;width:100%;height:100%;transition:transform .8s var(--ease)}.project-media.contain{box-shadow:inset 0 0 0 1px var(--line);background:#fff}.project-media.contain img{object-fit:contain;padding:6%}.project-card:hover .project-media img{transform:scale(1.045)}.project-media:after{content:"";background:radial-gradient(circle at var(--mx,50%) var(--my,50%), #ffffff47, transparent 45%);opacity:0;pointer-events:none;transition:opacity .3s;position:absolute;top:0;bottom:0;left:0;right:0}.project-card:hover .project-media:after{opacity:1}.project-body{flex-direction:column;flex:1;padding:20px 24px 24px;display:flex}.project-body h3{margin:4px 0 10px;font-size:1.35rem;font-weight:600}.project-card.big h3{font-size:1.6rem}.project-summary{color:var(--ink-2);font-size:1rem}.project-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:auto;padding-top:18px;display:flex}.see-more{color:var(--purple);align-items:center;gap:6px;font-size:.95rem;font-weight:500;display:inline-flex}.see-more svg{transition:transform .3s var(--ease)}.project-card:hover .see-more svg{transform:translate(4px)}.chips{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.chips li{color:#4b3c8f;background:#f1eeff;border-radius:999px;padding:4px 10px;font-size:.8rem}.chips li.more{box-shadow:inset 0 0 0 1px var(--line);color:var(--muted);background:0 0}.resume-card{background:radial-gradient(120% 140% at 100% 0,#b5d0ff8c,#0000 55%),radial-gradient(120% 140% at 0 100%,#ffdee3b3,#0000 55%),#fff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;padding:clamp(28px,4vw,44px);display:flex}.resume-card .section-title{margin-bottom:10px}.resume-card p{color:var(--ink-2);font-size:1.1rem}.lang-grid{grid-template-columns:repeat(2,1fr);gap:22px 36px;max-width:900px;display:grid}.lang-top{justify-content:space-between;margin-bottom:10px;font-weight:500;display:flex}.lang-top em{color:var(--muted);font-style:normal;font-weight:400}.lang-pct{font-variant-numeric:tabular-nums;color:var(--ink-2)}.bar{background:#ece8ff;border-radius:999px;height:14px;padding:3px}.bar-fill{width:0;height:100%;transition:width 1.4s var(--ease) calc(var(--d,0s) + .2s);background:linear-gradient(90deg,#3d348b,#7678ed 60%,#b5a8ff);border-radius:999px;box-shadow:0 2px 10px #7678ed80}.lang.in .bar-fill{width:var(--w)}.hobby-grid{grid-template-columns:repeat(3,1fr);gap:18px;display:grid}.hobby{border-radius:var(--radius);aspect-ratio:4/5;background:var(--pastel);box-shadow:var(--shadow);margin:0;position:relative;overflow:hidden}.hobby img{object-fit:cover;width:100%;height:100%;transition:transform .9s var(--ease)}.hobby:hover img{transform:scale(1.07)}.hobby:after{content:"";background:linear-gradient(#0000 55%,#0f0a28a6);position:absolute;top:0;bottom:0;left:0;right:0}.hobby figcaption{z-index:1;color:#fff;-webkit-backdrop-filter:blur(10px);background:#ffffff29;border-radius:999px;padding:7px 14px;font-weight:500;position:absolute;bottom:14px;left:16px;box-shadow:inset 0 0 0 1px #ffffff4d}.contact-card{color:#fff;isolation:isolate;background:#191334;border-radius:32px;grid-template-columns:280px 1fr;align-items:center;gap:clamp(28px,5vw,60px);padding:clamp(28px,5vw,56px);display:grid;position:relative;overflow:hidden}.contact-aurora{z-index:-1;filter:blur(30px);background:radial-gradient(35% 40% at 25% 30%,#6a11cbd9,#0000 70%),radial-gradient(35% 40% at 75% 40%,#2575fcbf,#0000 70%),radial-gradient(30% 35% at 55% 80%,#ff758cb3,#0000 70%);animation:18s ease-in-out infinite alternate aurora;position:absolute;top:-40%;bottom:-40%;left:-40%;right:-40%}@keyframes aurora{to{transform:rotate(25deg)scale(1.1)}}.contact-photo{aspect-ratio:561/829;object-fit:cover;border-radius:22px;width:100%;box-shadow:0 30px 60px -25px #0009}.contact-text .section-title{color:#fff}.contact-text .kicker{color:#fff;background:#ffffff29}.contact-text p{color:#ffffffe0;max-width:34ch;font-size:clamp(1.1rem,2vw,1.35rem)}.socials{gap:14px;margin-top:30px;display:flex}.social{color:#fff;width:58px;height:58px;transition:transform .3s var(--ease), box-shadow .3s;border-radius:50%;place-items:center;font-size:1.3rem;display:grid;box-shadow:0 10px 24px -10px #0009}.social:hover{transform:translateY(-4px)scale(1.06)}.social.email{background:#921df2}.social.linkedin{background:#0077b5}.social.github{background:#171515;box-shadow:inset 0 0 0 1px #ffffff26,0 10px 24px -10px #0009}.footer{text-align:center;color:var(--muted);padding:64px 24px 48px;font-size:.9rem}.modal{width:min(1040px,100% - 32px);max-height:min(92vh,1000px);color:var(--ink);overscroll-behavior:contain;background:#fff;border:0;border-radius:28px;padding:0;overflow:auto;box-shadow:0 40px 120px -30px #140a3c99}.modal[open]{animation:modal-in .4s var(--ease)}.modal.closing{animation:.18s ease-in forwards modal-out}.modal::backdrop{-webkit-backdrop-filter:blur(6px);background:#120c2880}.modal[open]::backdrop{animation:.3s fade}@keyframes modal-in{0%{opacity:0;transform:translateY(24px)scale(.97)}}@keyframes modal-out{to{opacity:0;transform:translateY(12px)scale(.98)}}@keyframes fade{0%{opacity:0}}.modal-inner{padding:clamp(22px,4vw,40px);position:relative}.modal-close{float:right;z-index:5;cursor:pointer;width:42px;height:42px;color:var(--ink);transition:background .2s, transform .2s var(--ease);background:#f3f1fb;border:0;border-radius:50%;margin:-6px -6px 0 12px;font-size:1.6rem;line-height:1;position:sticky;top:0}.modal-close:hover{background:#e7e2fa;transform:rotate(90deg)}.modal-title{padding-right:20px;font-size:clamp(1.5rem,3vw,2.1rem);font-weight:600}.modal-dates{margin:6px 0 22px}.carousel{background:var(--pastel);border-radius:20px;position:relative;overflow:hidden}.carousel-track{scroll-snap-type:x mandatory;scrollbar-width:none;display:flex;overflow-x:auto}.carousel-track::-webkit-scrollbar{display:none}.slide{scroll-snap-align:start;aspect-ratio:16/9;background:#f6f4ff;flex:0 0 100%;place-items:center;display:grid}.slide img{object-fit:contain;width:100%;height:100%}.carousel-btn{cursor:pointer;width:44px;height:44px;color:var(--ink);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:var(--shadow);transition:transform .2s var(--ease);background:#ffffffd9;border:0;border-radius:50%;font-size:1.6rem;line-height:1;position:absolute;top:50%;translate:0 -50%}.carousel-btn:hover{transform:scale(1.08)}.carousel-btn.prev{left:14px}.carousel-btn.next{right:14px}.carousel-dots{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffb3;border-radius:999px;gap:6px;padding:6px 10px;display:flex;position:absolute;bottom:12px;left:50%;translate:-50%}.carousel-dots button{cursor:pointer;width:8px;height:8px;transition:width .3s var(--ease), background .3s;background:#15131f40;border:0;border-radius:999px;padding:0}.carousel-dots button.active{background:var(--accent);width:22px}.modal-description{color:var(--ink-2);margin:24px 0;font-size:1.1rem;line-height:1.7}.modal-grid{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}.mbox{background:linear-gradient(135deg,#d0c4fc73,#b5d0ff73 55%,#ffdee38c),#fff;border-radius:20px;padding:20px 22px;box-shadow:inset 0 0 0 1px #6a11cb14}.mbox h3{text-transform:uppercase;letter-spacing:.08em;color:var(--purple);margin-bottom:12px;font-size:.85rem}.mbox ul:not(.chips){color:var(--ink-2);margin:0;padding-left:18px;list-style:square}.mbox ul:not(.chips) li+li{margin-top:6px}.mbox .chips li{background:#fff;font-size:.88rem}.mbox .links{padding:0;list-style:none}.mbox .links a{color:var(--blue);border-bottom:1px solid #2575fc59;font-weight:500;text-decoration:none}.mbox .links a:hover{border-color:var(--blue)}.hero{cursor:crosshair}.hero a,.hero button{cursor:pointer}.hero-hint{left:clamp(20px,4vw,40px);bottom:max(30px, env(safe-area-inset-bottom));color:var(--ink-2);-webkit-backdrop-filter:blur(10px);pointer-events:none;opacity:0;transition:opacity .6s .8s, transform .6s .8s var(--ease);background:#ffffff8c;border-radius:999px;align-items:center;gap:8px;padding:8px 14px;font-size:.85rem;display:inline-flex;position:absolute;transform:translateY(8px);box-shadow:inset 0 0 0 1px #fff9}.hero-canvas.interactive~.hero-hint{opacity:1;transform:none}.hero-hint svg{color:var(--purple)}.hero-canvas.interactive~.hero-hint.used{opacity:0;transition-delay:0s;transform:translateY(8px)}.hint-touch{display:none}@media (hover:none){.hint-touch{display:inline}.hint-mouse{display:none}}.pg-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px 40px;margin-bottom:clamp(24px,3vw,36px);display:flex}.pg-head .section-title{margin-bottom:0}.pg-sub{max-width:46ch;color:var(--ink-2)}.playground{height:clamp(440px,62vw,640px);box-shadow:var(--shadow-lg);isolation:isolate;touch-action:pan-y pinch-zoom;background:linear-gradient(#29323c,#485563);border-radius:32px;position:relative;overflow:hidden}.playground canvas{cursor:grab;opacity:0;width:100%;height:100%;transition:opacity .8s var(--ease);position:absolute;top:0;bottom:0;left:0;right:0}.playground.ready canvas{opacity:1}.playground.grabbing canvas{cursor:grabbing}.pg-loading{pointer-events:none;place-items:center;transition:opacity .5s;display:grid;position:absolute;top:0;bottom:0;left:0;right:0}.pg-loading span{border:3px solid #ffffff40;border-top-color:#fff;border-radius:50%;width:34px;height:34px;animation:.9s linear infinite spin-r}@keyframes spin-r{to{transform:rotate(360deg)}}.playground.ready .pg-loading{opacity:0}.playground.no-webgl .pg-loading span{display:none}.playground.no-webgl .pg-loading:after{content:"Your browser can't show 3D here, but the rest of the site works fine.";color:#fff;text-align:center;padding:24px}.pg-top,.pg-controls{pointer-events:none;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex;position:absolute;left:18px;right:18px}.pg-top{top:18px}.pg-controls{bottom:18px}.pg-controls>*{pointer-events:auto}.pg-seed,.pg-tip{color:#fff;-webkit-backdrop-filter:blur(10px);background:#0f0c1e59;border-radius:999px;padding:7px 14px;font-size:.85rem;box-shadow:inset 0 0 0 1px #ffffff2e}.pg-seed b{font-variant-numeric:tabular-nums;letter-spacing:.04em;font-weight:600}.playground.used .pg-tip{opacity:0;transition:opacity .6s}.swatches{-webkit-backdrop-filter:blur(10px);background:#0f0c1e59;border-radius:999px;gap:8px;padding:6px;display:flex;box-shadow:inset 0 0 0 1px #ffffff2e}.swatch{cursor:pointer;background:linear-gradient(180deg, var(--a), var(--b));width:30px;height:30px;transition:transform .25s var(--ease), box-shadow .25s;border:0;border-radius:50%;padding:0;box-shadow:inset 0 0 0 2px #ffffff80}.swatch:hover{transform:scale(1.12)}.swatch[aria-pressed=true]{box-shadow:inset 0 0 0 2px #fff,0 0 0 3px #ffffff73}.hobby video{object-fit:cover;width:100%;height:100%;transition:transform .9s var(--ease);display:block}.hobby:hover video{transform:scale(1.04)}.play-badge{z-index:1;color:#fff;-webkit-backdrop-filter:blur(10px);width:38px;height:38px;transition:opacity .3s, transform .3s var(--ease);background:#ffffff2e;border-radius:50%;place-items:center;display:grid;position:absolute;top:14px;right:14px;box-shadow:inset 0 0 0 1px #ffffff59}.play-badge svg{width:15px;height:15px;margin-left:2px}.hobby.playing .play-badge{opacity:0;transform:scale(.8)}.hobby figcaption{border-radius:16px;flex-direction:column;gap:1px;display:flex}.hobby figcaption small{opacity:.85;font-size:.72rem;font-weight:400}@media (max-width:1100px){.pill-nav{left:12px}}@media (max-width:900px){.project-grid.completed .project-card{flex-basis:calc(50% - 12px)}.contact-card{grid-template-columns:200px 1fr}}@media (max-width:760px){.pill-nav{top:auto;left:50%;bottom:max(14px, env(safe-area-inset-bottom));transition:transform .45s var(--ease);transform:translate(-50%,140%)}body.past-hero .pill-nav{transform:translate(-50%)}.pill-nav ul,.pill-nav ul:hover,.pill-nav ul:focus-within{flex-direction:row;gap:4px;padding:6px}.pill-nav a,.pill-nav ul:hover a,.pill-nav ul:focus-within a{width:46px;height:46px}.pill-nav .dot,.pill-nav ul:hover .dot,.pill-nav ul:focus-within .dot{color:#ffffffbf;width:42px;height:42px;box-shadow:none;background:0 0}.pill-nav .dot svg{opacity:1;width:19px;height:19px;transform:none}.pill-nav a.active .dot,.pill-nav ul:hover a.active .dot{background:var(--accent);color:#fff;box-shadow:none;transform:none}.nav-label{display:none}.intro{grid-template-columns:1fr}.intro-photo{order:-1;max-width:300px}.project-grid.current,.lang-grid,.modal-grid{grid-template-columns:1fr}.project-grid.completed .project-card{flex-basis:100%}.hobby-grid{grid-template-columns:repeat(2,1fr);gap:12px}.hobby figcaption{padding:5px 11px;font-size:.85rem;bottom:10px;left:10px}.tl-card{grid-template-columns:1fr;gap:14px;padding:20px}.timeline{padding-left:34px}.timeline:before,.timeline:after{left:8px}.tl-node{left:-33px}.contact-card{text-align:left;grid-template-columns:1fr}.contact-photo{max-width:220px}.footer{padding-bottom:100px}.hero-hint{bottom:84px;left:50%;translate:-50%}.pg-tip{display:none}.playground{border-radius:26px;height:min(420px,112vw)}.pg-controls{justify-content:center}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.reveal{opacity:1;transform:none}}
