:root{--ink: #070a13;--dusk: #0e1524;--panel: #111a2d;--line: rgba(233, 237, 246, .08);--text: #e9edf6;--muted: #97a3b8;--amber: #ffb25e;--mint: #8ce8c6;--pink: #f0a8b4;--font-display: "Bricolage Grotesque", system-ui, sans-serif;--font-body: "Instrument Sans", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--pad: clamp(1.25rem, 5vw, 6rem)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:auto}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}body{font-family:var(--font-body);background:var(--ink);color:var(--text);line-height:1.6;overflow-x:hidden;-webkit-font-smoothing:antialiased}::selection{background:var(--amber);color:var(--ink)}.mono{font-family:var(--font-mono)}.accent{color:var(--amber)}#webgl{position:fixed;inset:0;width:100%;height:100%;z-index:0;display:block}.vignette{position:fixed;inset:0;z-index:1;pointer-events:none;background:radial-gradient(120% 90% at 50% 40%,transparent 55%,rgba(4,6,12,.55) 100%)}.loader{position:fixed;inset:0;z-index:50;background:var(--ink);display:grid;place-content:center;gap:1.25rem;justify-items:center;transition:opacity .7s ease,visibility .7s}.loader.is-done{opacity:0;visibility:hidden}.loader__box{width:52px;height:68px;border:2px solid var(--amber);border-radius:6px;position:relative;animation:box-float 1.6s ease-in-out infinite}.loader__box span{position:absolute;inset:8px;border-radius:3px;background:linear-gradient(160deg,#ffb25e59,#8ce8c633)}@keyframes box-float{0%,to{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-10px) rotate(3deg)}}.loader__label{color:var(--muted);font-size:.8rem;letter-spacing:.12em}.nav{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.1rem var(--pad);background:linear-gradient(to bottom,rgba(7,10,19,.85),transparent)}.nav__brand{color:var(--text);text-decoration:none;font-size:.95rem;letter-spacing:.14em;font-weight:500}.nav__right{display:flex;align-items:center;gap:.7rem}.nav__links{display:flex;gap:clamp(.9rem,2.5vw,2rem)}.nav__links a{color:var(--muted);text-decoration:none;font-size:.92rem;transition:color .25s ease}.nav__links a:hover,.nav__links a:focus-visible{color:var(--amber)}.nav__audio{display:flex;align-items:center;gap:.55rem;background:#111a2db3;border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:.45rem .9rem;font-size:.72rem;letter-spacing:.1em;cursor:pointer;transition:color .25s ease,border-color .25s ease}.nav__audio:hover{color:var(--text);border-color:#ffb25e66}.eq{display:flex;align-items:flex-end;gap:2px;height:12px}.eq i{width:2.5px;height:30%;background:currentColor;border-radius:1px;transition:height .3s ease}.nav__audio[aria-pressed=true]{color:var(--amber)}.nav__burger{display:none;flex-direction:column;justify-content:center;gap:6px;width:42px;height:42px;padding:0 10px;background:#111a2db3;border:1px solid var(--line);border-radius:999px;cursor:pointer}.nav__burger span{display:block;height:2px;border-radius:1px;background:var(--text);transition:transform .3s ease}.nav__burger[aria-expanded=true] span:first-child{transform:translateY(4px) rotate(45deg)}.nav__burger[aria-expanded=true] span:last-child{transform:translateY(-4px) rotate(-45deg)}.mobilenav{position:fixed;inset:0;z-index:15;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3rem;background:#070a13f0;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);opacity:0;visibility:hidden;transition:opacity .35s ease,visibility .35s}.mobilenav.is-open{opacity:1;visibility:visible}.mobilenav__links{display:flex;flex-direction:column;align-items:center;gap:1.4rem}.mobilenav__links a{font-family:var(--font-display);font-size:clamp(2rem,9vw,2.8rem);font-weight:700;letter-spacing:-.02em;color:var(--text);text-decoration:none;transition:color .25s ease}.mobilenav__links a:hover,.mobilenav__links a:focus-visible{color:var(--amber)}.mobilenav__foot{color:var(--muted);font-size:.75rem;letter-spacing:.12em}.nav__audio[aria-pressed=true] .eq i{animation:eq .9s ease-in-out infinite}.nav__audio[aria-pressed=true] .eq i:nth-child(2){animation-delay:.2s}.nav__audio[aria-pressed=true] .eq i:nth-child(3){animation-delay:.45s}@keyframes eq{0%,to{height:30%}50%{height:100%}}main{position:relative;z-index:10}.section{position:relative;min-height:100vh;min-height:100svh;padding:clamp(5rem,14vh,9rem) var(--pad);display:flex;flex-direction:column;justify-content:center}.eyebrow{color:var(--amber);font-size:.75rem;letter-spacing:.22em;text-transform:uppercase;margin-bottom:1.2rem}.section__title{font-family:var(--font-display);font-weight:700;font-size:clamp(2.6rem,6.5vw,5rem);line-height:.98;letter-spacing:-.02em;margin-bottom:1.6rem}.hero{justify-content:center}.hero__copy{max-width:44rem}.hero__title{font-family:var(--font-display);font-weight:800;font-size:clamp(3.2rem,10vw,8rem);line-height:.94;letter-spacing:-.03em;margin:.6rem 0 1.6rem}.hero__line{display:block;overflow:hidden}.hero__line span{display:inline-block}.hero__line--accent span{color:transparent;-webkit-text-stroke:1.5px var(--amber)}.hero__sub{max-width:30rem;color:var(--muted);font-size:clamp(1rem,1.4vw,1.15rem);margin-bottom:2.2rem}.hero__cta{display:flex;gap:.9rem;flex-wrap:wrap}.btn{display:inline-block;text-decoration:none;font-weight:600;font-size:.95rem;padding:.85rem 1.7rem;border-radius:999px;transition:transform .25s ease,background .25s ease,color .25s ease,border-color .25s ease}.btn:hover{transform:translateY(-2px)}.btn--solid{background:var(--amber);color:var(--ink)}.btn--solid:hover{background:#ffc37e}.btn--ghost{border:1px solid var(--line);color:var(--text)}.btn--ghost:hover{border-color:var(--mint);color:var(--mint)}.about{flex-direction:row;align-items:center;justify-content:space-between;gap:clamp(2rem,4vw,4rem);flex-wrap:wrap}.about__copy{max-width:34rem;background:#070a139e;border:1px solid var(--line);border-radius:20px;padding:clamp(1.4rem,3vw,2.4rem);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.about__bio p{color:var(--muted);margin-bottom:1rem}.about__bio p strong{color:var(--text);font-weight:600}.about__roles{list-style:none;margin-top:2rem;border-top:1px solid var(--line)}.about__roles li{display:flex;justify-content:space-between;gap:1rem;padding:.9rem 0;border-bottom:1px solid var(--line)}.about__roles .role{font-weight:600}.about__roles .org{color:var(--muted);text-align:right}.skills__note{color:var(--muted);max-width:26rem;margin-bottom:2.4rem}.skills__grid{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.8rem;max-width:58rem}.skill{position:relative;background:#111a2da8;border:1px solid var(--line);border-radius:12px;padding:1rem 1.1rem .9rem;backdrop-filter:blur(6px);cursor:default;transition:border-color .25s ease,background .25s ease;will-change:transform}.skill:hover{border-color:#ffb25e73;background:#172137d9}.skill__name{font-weight:600;font-size:.98rem}.skill__cat{display:block;margin-top:.35rem;font-family:var(--font-mono);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.skill[data-cat=frontend] .skill__cat{color:var(--mint)}.skill[data-cat=backend] .skill__cat,.skill[data-cat=database] .skill__cat{color:var(--amber)}.skill[data-cat=language] .skill__cat{color:var(--pink)}.skill[data-cat=creative] .skill__cat{color:var(--amber)}.projects__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(21rem,100%),1fr));gap:1.4rem;margin-top:1rem}.project{position:relative;display:flex;flex-direction:column;background:#0e1524c7;border:1px solid var(--line);border-radius:16px;overflow:hidden;text-decoration:none;color:inherit;backdrop-filter:blur(8px);transition:border-color .3s ease;will-change:transform}.project:hover{border-color:#8ce8c666}.project__shot{aspect-ratio:16 / 9.4;overflow:hidden;border-bottom:1px solid var(--line);background:var(--dusk)}.project__shot img{width:100%;height:100%;object-fit:cover;object-position:top;transition:transform .6s cubic-bezier(.16,1,.3,1),filter .6s ease;filter:saturate(.85)}.project:hover .project__shot img{transform:scale(1.05);filter:saturate(1)}.project__body{padding:1.2rem 1.3rem 1.35rem;display:flex;flex-direction:column;gap:.6rem;flex:1}.project__head{display:flex;align-items:baseline;justify-content:space-between;gap:.8rem}.project__title{font-family:var(--font-display);font-size:1.25rem;font-weight:700;letter-spacing:-.01em}.project__arrow{font-family:var(--font-mono);color:var(--amber);font-size:.9rem;opacity:0;transform:translate(-6px,4px);transition:opacity .3s ease,transform .3s ease}.project:hover .project__arrow{opacity:1;transform:translate(0)}.project__desc{color:var(--muted);font-size:.92rem;flex:1}.project__tech{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.4rem}.project__tech span{font-family:var(--font-mono);font-size:.62rem;letter-spacing:.08em;color:var(--mint);border:1px solid rgba(140,232,198,.25);border-radius:999px;padding:.22rem .6rem}.polaroid{background:#f4f1ea;padding:14px 14px 3.4rem;border-radius:4px;transform:rotate(-2.5deg);box-shadow:0 30px 60px #0000008c;transition:transform .5s cubic-bezier(.16,1,.3,1);max-width:min(400px,78vw)}.polaroid:hover{transform:rotate(-.5deg) scale(1.02)}.polaroid__img{position:relative;overflow:hidden}.polaroid__img img{display:block;width:100%;height:auto;filter:contrast(1.05) sepia(.14)}.polaroid__grain{position:absolute;inset:0;pointer-events:none;opacity:.5;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E")}.polaroid figcaption{margin-top:1rem;text-align:center;color:#57534e;font-size:.75rem;letter-spacing:.14em}.polaroid--about{flex-shrink:0;transform:rotate(-5deg);transition:none}.contact{text-align:center;align-items:center}.contact__title{font-family:var(--font-display);font-weight:800;font-size:clamp(3rem,9vw,7rem);line-height:.96;letter-spacing:-.03em;margin-bottom:2.4rem}.contact__email{font-family:var(--font-mono);font-size:clamp(1rem,2.6vw,1.6rem);color:var(--mint);text-decoration:none;border-bottom:1px solid rgba(140,232,198,.35);padding-bottom:.3rem;transition:color .3s ease,border-color .3s ease}.contact__email:hover{color:var(--amber);border-color:var(--amber)}.contact__links{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center;margin-top:2.6rem}.contact__links a{color:var(--muted);text-decoration:none;font-size:.92rem;border:1px solid var(--line);border-radius:999px;padding:.7rem 1.4rem;transition:color .25s ease,border-color .25s ease,transform .25s ease}.contact__links a:hover{color:var(--text);border-color:#ffb25e80;transform:translateY(-2px)}.footer{position:absolute;bottom:1.6rem;left:var(--pad);right:var(--pad);display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;color:var(--muted);font-size:.68rem;letter-spacing:.12em}@media(max-width:860px){.nav{padding:.9rem var(--pad)}.nav__links{display:none}.nav__burger{display:flex}.hero{justify-content:flex-end;padding-bottom:5rem}.hero__title{font-size:clamp(2.9rem,13vw,5rem)}.hero__sub{font-size:1rem}.about{flex-direction:column;align-items:flex-start}.about__roles .org{max-width:55%}.polaroid--about{margin:1rem 0}.contact{text-align:left;align-items:flex-start}.contact__links{justify-content:flex-start}}@media(max-width:640px){.nav__audio-label{display:none}.nav__audio{padding:.55rem .8rem}.skills__grid{grid-template-columns:repeat(2,1fr)}.footer{position:static;margin-top:4rem;flex-direction:column;align-items:flex-start;gap:.4rem}}@media(max-width:400px){.skills__grid{gap:.6rem}.btn{padding:.8rem 1.4rem;font-size:.9rem}.contact__email{font-size:1rem;word-break:break-all}}@media(max-height:480px)and (orientation:landscape){.section{min-height:auto;padding-top:5rem;padding-bottom:5rem}.hero{min-height:100svh}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}:focus-visible{outline:2px solid var(--amber);outline-offset:3px}
