@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/93a6e477e1480c92-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c7e0cf6c760983e7-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/9d5a263311222317-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Bricolage Grotesque Fallback;src:local("Arial");ascent-override:88.21%;descent-override:25.61%;line-gap-override:0.00%;size-adjust:105.43%}.__className_1243c3{font-family:Bricolage Grotesque,Bricolage Grotesque Fallback;font-style:normal}.__variable_1243c3{--font-sans:"Bricolage Grotesque","Bricolage Grotesque Fallback"}:root{--ink:#1c1a3b;--ink-2:#4a4866;--ink-3:#6c6a88;--violet:#7a5af0;--violet-deep:#4b2fb8;--violet-soft:#e6e0ff;--mist:#f1f4fb;--paper:#ffffff;--mint:#8fd6a8;--mint-ink:#0d3b2a;--peach:#f7d8cb;--line:rgba(28,26,59,0.1);--radius-lg:28px;--radius-md:20px;--ease:cubic-bezier(0.2,0.8,0.2,1);--spring:cubic-bezier(0.34,1.56,0.64,1);--font:var(--font-sans),system-ui,-apple-system,"Segoe UI",sans-serif}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:4.5rem;-webkit-text-size-adjust:100%}body{margin:0;background:var(--mist);color:var(--ink);font-family:var(--font);font-optical-sizing:auto;font-size:1.0625rem;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}img,svg{display:block;max-width:100%}a{color:inherit}blockquote,dd,dl,h1,h2,h3,ol,p,ul{margin:0}ol,ul{padding:0;list-style:none}.wrap{width:min(100% - 2.5rem,72rem);margin-inline:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:3px solid var(--violet);outline-offset:3px;border-radius:8px}.skip{position:fixed;top:-4rem;left:1rem;z-index:100;padding:.7rem 1.1rem;background:var(--ink);color:#fff;border-radius:12px;font-weight:600;text-decoration:none;transition:top .2s var(--ease)}.skip:focus{top:1rem}.progress{position:fixed;inset:0 0 auto 0;height:3px;z-index:70;pointer-events:none}.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--violet),var(--mint));transform-origin:left;transform:scaleX(var(--progress,0))}.topnav{display:none}@media (min-width:768px){.topnav{display:block;position:fixed;top:1rem;left:50%;translate:-50% 0;z-index:60}}.topnav__pill{position:relative;padding:.35rem;background:rgba(255,255,255,.72);-webkit-backdrop-filter:blur(14px) saturate(1.4);backdrop-filter:blur(14px) saturate(1.4);border:1px solid var(--line);border-radius:999px;box-shadow:0 14px 30px -20px rgba(28,26,59,.4)}.topnav__pill ul{display:flex;gap:.15rem}.topnav__ind{position:absolute;top:.35rem;bottom:.35rem;left:0;width:var(--ind-w,0);transform:translateX(var(--ind-x,0));background:var(--ink);border-radius:999px;transition:transform .55s var(--ease),width .55s var(--ease)}.topnav__link{position:relative;display:block;padding:.55rem 1.1rem;border-radius:999px;font-size:.9375rem;font-weight:600;text-decoration:none;color:var(--ink-2);transition:color .3s}.topnav__link:hover{color:var(--ink)}.topnav__link[aria-current]{color:#fff}.dock{position:fixed;left:50%;bottom:calc(.75rem + env(safe-area-inset-bottom, 0px));translate:-50% 0;width:min(100% - 1.5rem,26rem);z-index:60}@media (min-width:768px){.dock{display:none}}.dock__pill{position:relative;padding:.4rem;background:rgba(255,255,255,.84);-webkit-backdrop-filter:blur(16px) saturate(1.5);backdrop-filter:blur(16px) saturate(1.5);border:1px solid var(--line);border-radius:26px;box-shadow:0 18px 40px -18px rgba(28,26,59,.4)}.dock__pill ul{display:grid;grid-template-columns:repeat(5,1fr)}.dock__ind{position:absolute;top:.4rem;bottom:.4rem;left:.4rem;width:calc((100% - .8rem) / 5);background:var(--ink);border-radius:20px;transform:translateX(calc(var(--i, 0) * 100%));transition:transform .55s var(--spring)}.dock__link{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;min-height:58px;border-radius:20px;font-size:.6875rem;font-weight:600;text-decoration:none;color:var(--ink-3);transition:color .3s;-webkit-tap-highlight-color:transparent}.dock__link svg{transition:transform .45s var(--spring)}.dock__link:active svg{transform:scale(.88)}.dock__link[aria-current]{color:#fff}.dock__link[aria-current] svg{transform:translateY(-1px) scale(1.1)}.hero{position:relative;display:flex;align-items:center;min-height:100vh;min-height:100svh;padding:4.5rem 0 8.5rem;overflow:hidden}@media (min-width:768px){.hero{padding:7rem 0 4rem}}.hero__stage{position:relative}.blobs{inset:-30% -40%;pointer-events:none;z-index:0}.blob,.blobs{position:absolute}.blob{border-radius:50%;translate:calc(var(--px, 0) * -22px) calc(var(--py, 0) * -22px);transition:translate .6s var(--ease)}.blob--violet{width:min(80vw,54rem);aspect-ratio:1;right:4%;top:8%;background:radial-gradient(circle at 40% 40%,rgba(122,90,240,.34),rgba(122,90,240,0) 66%);animation:drift 18s ease-in-out infinite alternate}.blob--mint{width:min(64vw,42rem);aspect-ratio:1;left:6%;bottom:8%;background:radial-gradient(circle at 50% 50%,rgba(143,214,168,.5),rgba(143,214,168,0) 66%);animation:drift 23s ease-in-out infinite alternate-reverse}.blob--peach{width:min(48vw,30rem);aspect-ratio:1;left:38%;top:14%;background:radial-gradient(circle at 50% 50%,rgba(247,216,203,.95),rgba(247,216,203,0) 66%);animation:drift 27s ease-in-out infinite alternate}@keyframes drift{0%{transform:translateZ(0) scale(1)}to{transform:translate3d(5%,7%,0) scale(1.12)}}.hero__inner{position:relative;z-index:1;display:grid;justify-items:start;grid-gap:1.75rem;gap:1.75rem}@media (min-width:960px){.hero__inner{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);grid-template-areas:"frame intro" "frame role" "frame quote" "frame actions";column-gap:4.5rem;row-gap:1.75rem;align-content:center;align-items:center}.hero__intro{grid-area:intro}.framebox{grid-area:frame}.hero__role{grid-area:role}.quote{grid-area:quote}.hero__actions{grid-area:actions}}.hero__intro{display:flex;align-items:center;flex-wrap:wrap;gap:.9rem}.avatar{position:relative;width:88px;height:88px;border-radius:50%;overflow:hidden;border:3px solid #fff;box-shadow:0 0 0 2px var(--violet);background:var(--violet-soft);opacity:0;transform:scale(.5) rotate(-12deg);animation:pop-in .9s var(--spring) .1s forwards}.avatar img{width:100%;height:100%;object-fit:cover}@media (min-width:960px){.avatar{width:112px;height:112px}}.place{display:inline-flex;align-items:center;gap:.45rem;padding:.5rem .95rem .5rem .75rem;border-radius:999px;background:rgba(255,255,255,.78);border:1px solid var(--line);font-size:.9375rem;font-weight:600;color:var(--ink-2);opacity:0;animation:fade-up .7s var(--ease) .45s forwards}.place svg{color:var(--violet-deep)}@keyframes pop-in{to{opacity:1;transform:none}}@keyframes fade-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.framebox{--pad-x:clamp(1rem,3vw,2.25rem);container-type:inline-size;width:100%;margin:.6rem 0 1.9rem}.frame{position:relative;display:block;width:-moz-fit-content;width:fit-content;max-width:100%;padding:clamp(.75rem,2.4vw,1.75rem) var(--pad-x)}.frame:before{content:"";position:absolute;inset:0;border:2px solid var(--violet);border-radius:6px;background:rgba(122,90,240,.05);opacity:0;transform:scale(1.05);animation:frame-in .8s var(--ease) 1.05s forwards;pointer-events:none}@keyframes frame-in{to{opacity:1;transform:none}}.name{position:relative;font-size:clamp(3.4rem,19vw,7rem);font-size:min(calc((100cqi - 2 * var(--pad-x)) / 3.5),9rem);font-weight:800;line-height:.92;letter-spacing:-.045em}@media (min-width:960px){.name{font-size:min(calc((100cqi - 2 * var(--pad-x)) / 3.5),10.5rem)}}.name__line{display:block;white-space:nowrap;overflow:hidden;padding-bottom:.06em}.ch{display:inline-block;opacity:0;transform:translateY(105%) rotate(7deg);animation:rise .95s var(--ease) forwards;animation-delay:calc(var(--i) * 60ms + .2s)}@keyframes rise{to{opacity:1;transform:none}}.handle{position:absolute;width:11px;height:11px;background:#fff;border:2px solid var(--violet);border-radius:2px;transform:scale(0);animation:pop .45s var(--spring) forwards;animation-delay:calc(1.25s + var(--k, 0) * 80ms)}.handle--tl{--k:0;left:-6px;top:-6px}.handle--tr{--k:1;right:-6px;top:-6px}.handle--br{--k:2;right:-6px;bottom:-6px}.handle--bl{--k:3;left:-6px;bottom:-6px}@keyframes pop{to{transform:scale(1)}}.frame__tag{position:absolute;top:100%;left:50%;translate:-50% 0;margin-top:.75rem;padding:.3rem .65rem;border-radius:6px;background:var(--violet);color:#fff;font-size:.8125rem;font-weight:600;white-space:nowrap;opacity:0;animation:tag-in .6s var(--ease) 1.55s forwards}@keyframes tag-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.cursor{position:absolute;z-index:3;display:flex;align-items:flex-start;color:var(--c);pointer-events:none;opacity:0;translate:calc(var(--px, 0) * var(--m, 14px)) calc(var(--py, 0) * var(--m, 14px));transition:translate .5s var(--ease);animation:cursor-in 1.1s var(--ease) var(--delay) forwards,float 5.5s ease-in-out calc(var(--delay) + 1.1s) infinite alternate}.cursor__label{margin:15px 0 0 -3px;padding:.25rem .65rem .28rem;border-radius:0 12px 12px 12px;background:var(--c);color:var(--on);font-size:.8125rem;font-weight:600;line-height:1.3;white-space:nowrap}.cursor--dev{--c:#5b3fd1;--on:#fff;--delay:1.8s;--m:18px;right:3%;top:-2rem}.cursor--design{--c:var(--mint);--on:var(--mint-ink);--delay:2s;--m:-14px;left:6%;bottom:-1.3rem}@keyframes cursor-in{0%{opacity:0;transform:translate(-70px,90px)}to{opacity:1;transform:translate(0)}}@keyframes float{0%{transform:translate(0);opacity:1}to{transform:translate(10px,-9px);opacity:1}}.hero__role{font-size:clamp(1.7rem,6vw,2.4rem);font-weight:700;line-height:1.1;letter-spacing:-.025em;color:var(--violet);opacity:0;animation:fade-up .8s var(--ease) .9s forwards}.hero__role span{display:block;margin-top:.4rem;font-size:.64em;font-weight:500;letter-spacing:-.01em;color:var(--ink-2)}.quote{max-width:24rem;padding-left:1.1rem;border-left:3px solid var(--violet-soft);opacity:0;animation:fade-up .8s var(--ease) 1.05s forwards}.quote p{font-size:1.1875rem;font-weight:600;line-height:1.3;letter-spacing:-.01em}.quote footer{margin-top:.45rem;font-size:.875rem;color:var(--ink-3)}.quote cite{font-style:normal}.hero__actions{display:flex;flex-wrap:wrap;gap:.7rem;opacity:0;animation:fade-up .8s var(--ease) 1.2s forwards}.btn{display:inline-flex;align-items:center;gap:.55rem;min-height:48px;padding:.75rem 1.2rem;border-radius:999px;border:1.5px solid var(--line);background:var(--paper);color:var(--ink);font-weight:600;text-decoration:none;transition:transform .35s var(--spring),background .25s,color .25s,border-color .25s;-webkit-tap-highlight-color:transparent}.btn svg{transition:transform .35s var(--spring)}.btn:hover{transform:translateY(-3px);border-color:var(--violet)}.btn:hover svg{transform:rotate(-8deg) scale(1.1)}.btn:active{transform:scale(.96)}.btn--primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn--primary:hover{background:var(--violet-deep);border-color:var(--violet-deep)}.section{position:relative;padding:4.5rem 0}.section--tight{padding-top:0}@media (min-width:768px){.section{padding:7rem 0}.section--tight{padding-top:0}}.section__head{display:flex;align-items:center;gap:1.25rem;margin-bottom:2.25rem}.section__title{font-size:clamp(2.3rem,8.5vw,4.25rem);font-weight:800;line-height:1;letter-spacing:-.045em}.section__rule{flex:1 1;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--violet),rgba(122,90,240,0));transform-origin:left}.js .reveal{opacity:0;transform:translateY(26px);transition:opacity .8s var(--ease) var(--d,0s),transform .8s var(--ease) var(--d,0s)}.js .reveal.is-in{opacity:1;transform:none}.js .reveal .section__rule{transform:scaleX(0);transition:transform 1.2s var(--ease) .25s}.js .reveal.is-in .section__rule{transform:scaleX(1)}.projects{display:grid;grid-gap:1.25rem;gap:1.25rem}.project-cell{display:flex}.project-cell>.tilt{flex:1 1;min-width:0}@media (min-width:768px){.projects{grid-template-columns:repeat(12,minmax(0,1fr));gap:1.5rem}.project-cell--wide{grid-column:span 7}.project-cell--narrow{grid-column:span 5}}.project{display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg)}.project,.project__media{position:relative;overflow:hidden}.project__media{aspect-ratio:4/3}@media (min-width:768px){.project__media{aspect-ratio:auto;height:clamp(15rem,27vw,23rem)}}.project__img{object-fit:cover;transition:transform .9s var(--ease)}.project__img--contain{object-fit:contain;mix-blend-mode:multiply;padding:.75rem}.project:hover .project__img--cover{transform:scale(1.05)}.project:hover .project__img--contain{transform:scale(1.03)}.project__body{display:flex;flex:1 1;flex-direction:column;gap:.55rem;padding:1.4rem 1.5rem 1.6rem}.project__title{font-size:1.4rem;font-weight:700;line-height:1.15;letter-spacing:-.025em}.project__body p{color:var(--ink-2);max-width:34rem}.link{display:inline-flex;align-items:center;align-self:flex-start;gap:.55rem;min-height:44px;margin-top:auto;padding:.35rem 1rem .35rem .4rem;border-radius:999px;background:var(--violet-soft);color:var(--violet-deep);font-size:.9375rem;font-weight:600;text-decoration:none;overflow-wrap:anywhere;transition:background .25s,color .25s,transform .35s var(--spring)}.project__body p+.link{margin-top:.6rem}.link__icon{display:grid;place-items:center;width:32px;height:32px;flex:none;border-radius:50%;background:#fff}.link:hover{background:var(--violet-deep);color:#fff;transform:translateX(3px)}.tilt:after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .35s;background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),rgba(122,90,240,.16),transparent 60%)}@media (hover:hover) and (pointer:fine){.tilt{transform:perspective(1000px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .45s var(--ease),box-shadow .45s var(--ease)}.tilt:hover{box-shadow:0 34px 60px -34px rgba(75,47,184,.4)}.tilt:hover:after{opacity:1}}.timeline{--p:0;position:relative;display:grid;grid-gap:1.1rem;gap:1.1rem;padding-left:2.25rem}.timeline:after,.timeline:before{content:"";position:absolute;left:.5rem;top:1.4rem;bottom:1.4rem;width:2px;border-radius:2px}.timeline:before{background:var(--line)}.timeline:after{background:linear-gradient(var(--violet),var(--violet-deep));transform-origin:top;transform:scaleY(var(--p))}.exp{position:relative}.exp:before{content:"";position:absolute;z-index:1;left:calc(-2.25rem + .5rem + 1px - 8px);top:1.5rem;width:16px;height:16px;border-radius:50%;background:var(--mist);border:2px solid var(--ink-3);transition:background .4s,border-color .4s,transform .5s var(--spring),box-shadow .5s}.exp.is-on:before{background:var(--violet);border-color:var(--violet);transform:scale(1.12);box-shadow:0 0 0 7px rgba(122,90,240,.18)}html:not(.js) .timeline{--p:1}.exp__card{display:grid;grid-template-columns:auto 1fr;align-items:center;grid-gap:.4rem 1rem;gap:.4rem 1rem;padding:1.15rem 1.25rem;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);transition:transform .45s var(--ease),box-shadow .45s var(--ease)}.exp__card:hover{transform:translateX(6px);box-shadow:0 22px 40px -28px rgba(75,47,184,.45)}.logo{display:block;width:48px;height:48px;flex:none;overflow:hidden;border-radius:12px;background:var(--mist)}.logo--text{display:grid;place-items:center;background:var(--violet-soft);color:var(--violet-deep);font-size:1.05rem;font-weight:800;letter-spacing:-.03em}.logo--contain{padding:9px 11px;background:#fff;border:1px solid var(--line)}.logo.logo--contain img{object-fit:contain}.logo img{width:100%;height:100%;object-fit:cover}.exp__role{font-size:.9375rem;color:var(--ink-3);line-height:1.3}.exp__company{font-size:1.3rem;font-weight:700;letter-spacing:-.025em;line-height:1.2}.exp__meta{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:.35rem .9rem;margin-top:.4rem;font-size:.9rem;color:var(--ink-2)}.exp__period{gap:.5rem;font-weight:600}.exp__period,.exp__place{display:inline-flex;align-items:center}.exp__place{gap:.35rem;color:var(--ink-3)}.live{width:9px;height:9px;border-radius:50%;background:#2fb36f;animation:pulse 2.2s ease-out infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(47,179,111,.55)}70%,to{box-shadow:0 0 0 9px rgba(47,179,111,0)}}@media (min-width:768px){.timeline{gap:1.25rem;padding-left:3.25rem}.timeline:after,.timeline:before{left:.75rem}.exp:before{left:calc(-3.25rem + .75rem + 1px - 8px)}.exp__card{grid-template-columns:auto 1fr auto;padding:1.3rem 1.6rem}.exp__meta{grid-column:auto;flex-direction:column;align-items:flex-end;margin-top:0}}.skills{display:grid;grid-gap:1.25rem;gap:1.25rem}@media (min-width:900px){.skills{grid-template-columns:1fr 1fr}}.skillgroup{height:100%;padding:1.6rem;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg)}.skillgroup__head{display:flex;align-items:center;gap:.8rem;margin-bottom:1.4rem;font-size:1.45rem;font-weight:700;letter-spacing:-.025em}.skillgroup__icon{display:grid;place-items:center;width:46px;height:46px;border-radius:15px;background:var(--violet-soft);color:var(--violet-deep)}.skillgroup--ai .skillgroup__icon{background:var(--peach);color:#8a3b1c}.skillgroup--ai .chip:hover{background:var(--peach);border-color:var(--peach);color:var(--ink)}.skillgroup__note{max-width:46rem;margin:-.6rem 0 1.4rem;color:var(--ink-2)}@media (min-width:900px){.skills__cell--wide{grid-column:1/-1}}.skillgroup--design .skillgroup__icon{background:#dff3e6;color:#1b6a47}.chips{display:flex;flex-wrap:wrap;gap:.6rem}.chip{padding:.55rem 1.05rem;border-radius:999px;background:var(--mist);border:1px solid var(--line);font-size:.97rem;font-weight:600;cursor:default;transition:transform .4s var(--spring),background .2s,color .2s,border-color .2s}.chip:hover{transform:translateY(-4px) rotate(-2.5deg);background:var(--violet);border-color:var(--violet);color:#fff}.skillgroup--design .chip:hover{background:var(--mint);border-color:var(--mint);color:var(--mint-ink)}.js .reveal:not(.is-in) .chip{opacity:0}.js .reveal.is-in .chip{animation:chip-in .6s var(--spring) backwards;animation-delay:calc(var(--n) * 55ms + .25s)}@keyframes chip-in{0%{opacity:0;transform:translateY(14px) scale(.9)}}.edu{display:grid;grid-gap:1rem;gap:1rem}@media (min-width:768px){.edu{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}}.edu__cell{display:flex}.edu__cell>.edu__card{flex:1 1}.edu__card{display:flex;flex-direction:column;gap:.35rem;padding:1.5rem;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);transition:transform .45s var(--ease),box-shadow .45s var(--ease)}.edu__card:hover{transform:translateY(-5px);box-shadow:0 26px 44px -30px rgba(75,47,184,.45)}.edu__card .logo{margin-bottom:.8rem}.edu__school{font-size:.9375rem;font-weight:600;color:var(--ink-3)}.edu__program{font-size:1.3rem;font-weight:700;line-height:1.2;letter-spacing:-.025em}.edu__years{margin-top:auto;padding-top:.9rem;font-size:.9rem;color:var(--ink-3)}.contact{padding-bottom:3rem}.contact__mail{display:inline-block;padding-bottom:.12em;font-size:clamp(1.4rem,6.6vw,4rem);font-weight:800;line-height:1.1;letter-spacing:-.04em;text-decoration:none;overflow-wrap:anywhere;background:linear-gradient(var(--violet),var(--violet)) 0 100% /0 .1em no-repeat;transition:background-size .6s var(--ease),color .3s}.contact__mail:hover{background-size:100% .1em;color:var(--violet-deep)}.facts{display:grid;grid-gap:.75rem;gap:.75rem;margin-top:2.5rem}@media (min-width:640px){.facts{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:960px){.facts{grid-template-columns:repeat(3,minmax(0,1fr))}}.fact{display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);transition:transform .4s var(--ease),border-color .3s}.fact:hover{transform:translateY(-3px);border-color:rgba(122,90,240,.5)}.fact__icon{display:grid;place-items:center;width:44px;height:44px;flex:none;border-radius:14px;background:var(--mist);color:var(--violet-deep)}.fact>div{min-width:0}.fact__label{display:block;font-size:.8125rem;color:var(--ink-3)}.fact__value{display:block;font-weight:600;overflow-wrap:anywhere}.fact__value a{text-decoration:none;background:linear-gradient(var(--violet),var(--violet)) 0 100% /0 2px no-repeat;transition:background-size .4s var(--ease)}.fact__value a:hover{background-size:100% 2px}.langs__title{margin-top:3rem;margin-bottom:1rem;font-size:1.45rem;font-weight:700;letter-spacing:-.025em}.langs{display:grid;grid-gap:.75rem;gap:.75rem}@media (min-width:768px){.langs{grid-template-columns:repeat(3,minmax(0,1fr))}}.lang{display:flex;align-items:center;gap:.9rem;padding:1rem 1.25rem;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md)}.lang__flag{width:36px;height:36px;flex:none;overflow:hidden;border-radius:50%;box-shadow:0 0 0 1px var(--line)}.lang__flag svg{width:100%;height:100%}.lang__text{display:flex;flex:1 1;flex-direction:column;min-width:0;line-height:1.25}.lang__name{font-weight:600}.lang__level{font-size:.8125rem;color:var(--ink-3)}.dots{display:flex;gap:4px}.dot{width:9px;height:9px;border-radius:50%;background:var(--line)}.js .reveal .dot--on{transform:scale(0);transition:transform .5s var(--spring) calc(var(--n) * 80ms + .4s)}.js .reveal.is-in .dot--on{transform:scale(1)}.dot--on{background:var(--violet)}.footer{padding:2rem 0 calc(7.5rem + env(safe-area-inset-bottom, 0px));font-size:.875rem;color:var(--ink-3)}@media (min-width:768px){.footer{padding-bottom:3rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation-duration:.001ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.001ms!important;transition-delay:0s!important}.js .reveal{opacity:1;transform:none}}