:root{--bg:#0b0a09;--bg-elev:#151311;--fg:#f4eee6;--muted:#9c9388;--accent:#e8a45a;--accent-deep:#c45c3e;--line:#f4eee61f;--shadow:0 18px 50px #00000059;--radius:18px;--nav-h:3.75rem;--font-display:"Syne", system-ui, sans-serif;--font-body:"Figtree", system-ui, sans-serif;--ease:cubic-bezier(.22, 1, .36, 1)}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}html.reduce-motion,html.reduce-motion *{transition:none!important;animation:none!important}body{min-height:100dvh;font-family:var(--font-body);color:var(--fg);background:var(--bg);margin:0;font-size:1.05rem;line-height:1.6;overflow-x:hidden}body.nav-open{overflow:hidden}#app{isolation:isolate;position:relative}img,svg{max-width:100%;display:block}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.04em;margin:0;font-weight:800;line-height:1.05}h2{font-size:clamp(1.8rem,6vw,3.1rem)}h3{letter-spacing:-.03em;font-size:1.2rem}p{margin:0}ul,ol{margin:0;padding:0;list-style:none}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.atmosphere{pointer-events:none;z-index:-1;position:fixed;inset:0;overflow:hidden}.orb{filter:blur(70px);opacity:.55;animation:drift 18s var(--ease) infinite alternate;border-radius:50%;position:absolute}.orb--a{background:radial-gradient(circle,#e8a45a 0%,#0000 70%);width:min(70vw,28rem);height:min(70vw,28rem);top:-8%;right:-12%}.orb--b{background:radial-gradient(circle,#c45c3e 0%,#0000 70%);width:min(60vw,22rem);height:min(60vw,22rem);animation-duration:22s;animation-delay:-4s;top:28%;left:-18%}.orb--c{background:radial-gradient(circle,#6b4a32 0%,#0000 70%);width:18rem;height:18rem;animation-duration:26s;display:none;bottom:8%;right:12%}.noise{opacity:.09;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:absolute;inset:0}.nav{z-index:20;min-height:var(--nav-h);padding:.6rem 1.15rem;padding-top:max(.6rem, env(safe-area-inset-top));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);background:#0b0a09b8;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.nav__brand{font-family:var(--font-display);letter-spacing:-.04em;font-size:1.15rem;font-weight:800}.nav__end{align-items:center;gap:.25rem;margin-left:auto;display:flex}.lang{border:1px solid var(--line);border-radius:999px;align-items:center;gap:.1rem;padding:.15rem;display:flex}.lang__btn{letter-spacing:.08em;min-width:2.45rem;min-height:2.2rem;color:var(--muted);border-radius:999px;font-size:.72rem;font-weight:700}.lang__btn[aria-pressed=true]{background:var(--fg);color:var(--bg)}.nav__toggle{border-radius:999px;place-content:center;gap:6px;width:2.75rem;height:2.75rem;display:grid}.nav__toggle-bar{background:var(--fg);width:1.15rem;height:1.5px;transition:transform .25s var(--ease), opacity .2s;display:block}.nav-open .nav__toggle-bar:first-of-type{transform:translateY(3.75px)rotate(45deg)}.nav-open .nav__toggle-bar:last-of-type{transform:translateY(-3.75px)rotate(-45deg)}.nav__panel{inset:var(--nav-h) 0 0;transition:transform .35s var(--ease);background:#0b0a09f5;flex-direction:column;gap:.35rem;padding:1.5rem 1.15rem 2rem;display:flex;position:fixed;transform:translate(100%)}.nav-open .nav__panel{transform:none}.nav__link{font-family:var(--font-display);padding:.35rem 0;font-size:clamp(1.7rem,7vw,2.4rem)}.nav__link[aria-current=page]{color:var(--accent)}.hero,.section,.footer{width:min(72rem,100% - 2.3rem);margin-inline:auto}.hero{padding:3.5rem 0 4.5rem}.hero--page{padding-bottom:2.5rem}.hero__name{margin-bottom:.35rem;font-size:clamp(3.2rem,14vw,7.2rem)}.hero--page .hero__name{font-size:clamp(2.4rem,10vw,4.6rem)}.hero__lead{max-width:28rem;color:var(--muted);margin-top:1.4rem;font-size:1.12rem}.hub{gap:.9rem;max-width:38rem;margin-top:2.4rem;display:grid}.hub-card{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#151311b8;gap:.35rem;padding:1.35rem 1.2rem 1.25rem;display:grid;position:relative}.hub-card h2{font-size:clamp(1.6rem,5vw,2.1rem)}.hub-card p{color:var(--muted);padding-right:2rem}.hub-card__arrow{color:var(--accent);font-size:1.25rem;position:absolute;top:1.35rem;right:1.2rem}.btn,.social,.project,.hub-card,.chip{transition:transform .25s var(--ease), border-color .25s var(--ease), background .25s var(--ease), color .25s var(--ease), box-shadow .25s var(--ease)}.btn{border:1px solid var(--line);border-radius:999px;justify-content:center;align-items:center;min-height:2.85rem;padding:.7rem 1.2rem;font-weight:600;display:inline-flex}.btn--solid{background:var(--fg);color:var(--bg);border-color:var(--fg)}.btn--ghost:hover,.btn--solid:hover,.project:hover,.hub-card:hover,.social:hover,.chip:hover{transform:translateY(-2px)}.project:hover,.hub-card:hover,.social:hover{border-color:#e8a45a73;box-shadow:0 16px 44px #e8a45a29}.section{border-top:1px solid var(--line);padding:3.25rem 0}.section--last{padding-bottom:4.5rem}.section__head{margin-bottom:1.6rem}.eyebrow{color:var(--accent);letter-spacing:.14em;text-transform:uppercase;margin-bottom:.45rem;font-size:.78rem}.section__intro,.prose{max-width:38rem;color:var(--muted)}.prose p+p{margin-top:1rem}.is-placeholder{opacity:.72}.projects{gap:1rem;display:grid}.projects--web{max-width:26rem}.oss-more{margin-top:1.15rem}.project{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#151311b8;padding:1.2rem 1.15rem 1.15rem}.project p{color:var(--muted);margin:.55rem 0 .9rem}.tags{flex-wrap:wrap;gap:.4rem;display:flex}.tags li{letter-spacing:.04em;text-transform:uppercase;color:var(--accent);font-size:.75rem}.project__links{flex-wrap:wrap;gap:.5rem;display:flex;margin-top:1rem!important}.chip{border:1px solid var(--line);border-radius:999px;align-items:center;min-height:2rem;padding:.2rem .75rem;font-size:.88rem;font-weight:650;display:inline-flex}.chip:hover{border-color:var(--accent);color:var(--accent)}.socials{gap:.85rem;display:grid}.social{border:1px solid var(--line);border-radius:var(--radius);min-height:5.2rem;box-shadow:var(--shadow);background:#151311b8;grid-template-columns:auto 1fr auto;align-items:center;gap:.95rem;padding:1.05rem 1.15rem;display:grid;position:relative}.social__icon{width:2.6rem;height:2.6rem;color:var(--accent);background:#e8a45a1f;border-radius:.85rem;place-items:center;display:grid}.social__icon svg{width:1.25rem;height:1.25rem}.social__text{gap:.15rem;min-width:0;display:grid}.social__label{font-family:var(--font-display);font-size:1.15rem;font-weight:700}.social__hint{color:var(--muted);font-size:.9rem}.social__arrow{color:var(--accent);font-size:1.1rem}.social.is-placeholder{pointer-events:none}.social.is-placeholder .social__icon{color:var(--muted);background:#f4eee60a}.footer{color:var(--muted);padding:1.4rem 0 2.2rem;font-size:.9rem}.reveal,.hero__name,.hub-card{opacity:0}.reduce-motion .reveal,.reduce-motion .hero__name,.reduce-motion .hub-card{opacity:1}@media (width>=720px){.nav{padding-inline:1.6rem}.nav__toggle{display:none}.nav__panel{background:0 0;flex-direction:row;gap:1.25rem;margin-left:auto;padding:0;position:static;inset:auto;transform:none}.nav__end{margin-left:1.1rem}.nav__link{font-family:var(--font-body);font-size:.95rem;font-weight:600}.hub{grid-template-columns:repeat(2,minmax(0,1fr));max-width:42rem}.hero,.section,.footer{width:min(72rem,100% - 3.2rem)}.hero{padding:6rem 0 7rem}.hero--page{padding:3.5rem 0 1.75rem}.orb--c{display:block}.projects:not(.projects--web),.socials{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1080px){.projects:not(.projects--web){grid-template-columns:repeat(3,minmax(0,1fr))}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.orb{animation:none}}@keyframes drift{0%{transform:translate(0,0)scale(1)}to{transform:translate(-6%,8%)scale(1.08)}}
