:root{--bg:#f7f6fb;--ink:#17132a;--muted:#625c78;--brand:#4b388a;--brand-2:#5e378a;--brand-deep:#2f2160;--dot:#d6d1e6;--dot-hi:#5b3fb0;--line:#e2ddee;--card-line:#e6e2f0;--card-line-hover:#c9bfea;--pill-line:#dcd6ec;--font-sans:"Sora", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--spot:220px;--glow:528px;--tilt:18deg;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0}a{color:var(--brand)}a:hover{color:var(--brand-deep)}.page{--mx:-1000px;--my:-1000px;--tx:0;--ty:0;--spot-on:0;min-height:100vh;position:relative;overflow:hidden}.bg{pointer-events:none;position:absolute;inset:0}.bg-dots{background-image:radial-gradient(circle, var(--dot) 1.1px, transparent 1.6px);background-size:22px 22px}.bg-glow{background:radial-gradient(var(--glow) circle at var(--mx) var(--my), #5e378a1a, transparent 70%);opacity:var(--spot-on);transition:opacity .5s}.bg-spot{--mask:radial-gradient(var(--spot) circle at var(--mx) var(--my), #000 0%, #00000059 50%, transparent 100%);background-image:radial-gradient(circle, var(--dot-hi) 1.7px, transparent 2.2px);-webkit-mask-image:var(--mask);-webkit-mask-image:var(--mask);mask-image:var(--mask);opacity:var(--spot-on);background-size:22px 22px;transition:opacity .5s}.container{max-width:1080px;margin:0 auto;padding:0 20px;position:relative}.label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink);margin:0;font-size:12px;font-weight:500}.hero{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:36px;min-height:620px;padding:96px 0 64px;display:flex}.floaty{animation:6s ease-in-out infinite floaty}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.tilt{background:linear-gradient(160deg, var(--brand) 0%, var(--brand-2) 100%);width:136px;height:136px;transform:perspective(700px) rotateX(calc(var(--ty) * var(--tilt) * -1)) rotateY(calc(var(--tx) * var(--tilt)));box-shadow:calc(var(--tx) * -28px) calc(22px - var(--ty) * 20px) 48px -14px #4b388a8c;border-radius:34px;justify-content:center;align-items:center;transition:transform .25s ease-out,box-shadow .25s ease-out;display:flex}.hero-text{flex-direction:column;align-items:center;gap:22px;display:flex}.title{letter-spacing:-.045em;color:var(--ink);margin:0;font-size:clamp(52px,10vw,112px);font-weight:700;line-height:1}.title span{color:var(--brand)}.pill{border:1px solid var(--pill-line);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--brand);background:#ffffffbf;border-radius:999px;align-items:center;gap:10px;margin:0;padding:8px 16px;font-size:12px;display:inline-flex}.pill-dot{background:var(--brand-2);border-radius:50%;width:7px;height:7px}.projects{padding:24px 0 96px}.section-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:24px;padding-bottom:20px;display:flex}.count{font-family:var(--font-mono);letter-spacing:.14em;color:var(--muted);font-size:12px}.proj-grid{flex-wrap:wrap;justify-content:center;gap:16px;display:flex}.proj{border:1px solid var(--card-line);background:#fff;border-radius:18px;flex-direction:column;flex:0 0 calc(25% - 12px);gap:12px;min-width:0;height:184px;padding:16px;text-decoration:none;transition:border-color .25s,transform .25s,box-shadow .25s;display:flex}@media (width<=860px){.proj{flex-basis:calc(50% - 8px)}}.proj-media{flex:1;justify-content:center;align-items:center;min-height:0;display:flex}.proj-media .logo{max-width:92%;height:auto}.proj img,.proj .logo{filter:grayscale()contrast(1.05);opacity:.6;transition:filter .35s,opacity .35s,transform .35s}.proj:hover img,.proj:focus-visible img,.proj:hover .logo,.proj:focus-visible .logo{filter:none;opacity:1;transform:scale(1.05)}@media (hover:none){.proj img,.proj .logo{filter:none;opacity:1}}.proj:hover{border-color:var(--card-line-hover)}a.proj:hover{transform:translateY(-3px);box-shadow:0 18px 34px -22px #4b388a8c}a.proj:focus-visible{outline:3px solid var(--brand);outline-offset:3px}.proj-meta{font-family:var(--font-mono);flex-direction:column;gap:2px;min-width:0;font-size:11px;line-height:1.4;display:flex}.proj-name,.proj-url{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.proj-name{color:var(--ink);font-weight:500}.proj-url,.proj-none{color:var(--muted);transition:color .25s}a.proj:hover .proj-url{color:var(--brand)}.footer{border-top:1px solid var(--line);flex-direction:column;gap:72px;padding:72px 0 40px;display:flex}.contact{flex-direction:column;gap:16px;display:flex}.mail{letter-spacing:-.035em;color:var(--ink);word-break:break-word;background-image:linear-gradient(var(--brand), var(--brand));background-position:0 100%;background-repeat:no-repeat;background-size:0% 3px;align-self:flex-start;padding-bottom:6px;font-size:clamp(30px,6vw,64px);font-weight:600;line-height:1.15;text-decoration:none;transition:background-size .35s,color .25s}.mail:hover,.mail:focus-visible{color:var(--brand);background-size:100% 3px}.footer-meta{font-family:var(--font-mono);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:12px;display:flex}@media (prefers-reduced-motion:reduce){.floaty{animation:none}.proj,.proj img,.proj .logo,.tilt{transition:none!important}}
