:root{--bg: #050506;--gold: #e8c547;--gold-2: #f4e4a4;--ink: #ece7dc;--muted: #9a9488;--line: rgba(232, 197, 71, .18);--glass: rgba(8, 8, 10, .55)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;background:var(--bg);color:var(--ink)}body{font-family:Outfit,system-ui,sans-serif;font-weight:400;letter-spacing:.01em;overflow-x:hidden}::selection{background:var(--gold);color:#111}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}.canvas-wrap{position:fixed;inset:0;z-index:0;pointer-events:none}.canvas-wrap canvas{width:100%!important;height:100%!important}.canvas-fallback{position:fixed;inset:0;z-index:0;background:url(/bat-wire.png) center 38%/min(720px,70vw) no-repeat,#000}.grain,.vignette{position:fixed;inset:0;pointer-events:none;z-index:2}.grain{opacity:.09;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.9'/%3E%3C/svg%3E")}.vignette{background:radial-gradient(ellipse at center,transparent 40%,rgba(0,0,0,.55) 100%)}.cursor{position:fixed;width:14px;height:14px;border:1px solid var(--gold);border-radius:50%;pointer-events:none;z-index:80;mix-blend-mode:difference;transform:translate(-50%,-50%);transition:width .2s,height .2s,background .2s}.cursor.hot{width:42px;height:42px;background:#e8c5471f}@media(pointer:coarse){.cursor{display:none}}.preloader{position:fixed;inset:0;z-index:90;background:#020203;display:grid;place-items:center}.preloader-inner{text-align:center}.preloader-mark{width:min(280px,58vw);height:auto;display:block;margin:0 auto;animation:pulse 1.6s ease infinite;filter:drop-shadow(0 0 24px rgba(244,238,227,.25))}.preloader p{margin:28px 0 0;font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.42em;text-transform:uppercase;color:var(--gold);animation:pulse 1.4s ease infinite}@keyframes draw{to{stroke-dashoffset:0}}@keyframes pulse{0%,to{opacity:.35}50%{opacity:1}}.nav{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:18px 28px;background:linear-gradient(to bottom,rgba(5,5,6,.75),transparent)}.nav a.brand{font-family:Syne,sans-serif;font-weight:800;letter-spacing:.18em;font-size:12px;text-transform:uppercase}.nav-links{display:flex;gap:22px;font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:.22em;text-transform:uppercase;opacity:.8}.nav-links a:hover{opacity:1}.nav-cta{font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:.2em;text-transform:uppercase;border:1px solid var(--gold);padding:8px 14px;color:var(--gold)}.nav-cta:hover{background:var(--gold);color:#111}.burger{display:none;background:none;border:0;color:var(--ink);font-size:13px;letter-spacing:.2em}.content{position:relative;z-index:3}.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;max-width:none;padding:0 7vw 10vh}.hero-copy{position:relative;z-index:5;max-width:640px;background:none;border:0;padding:0}.hero h1{font-size:clamp(44px,7vw,96px);line-height:.92;text-transform:uppercase;color:#f7f4ee}.hero .aside{font-family:Outfit,sans-serif;font-weight:400;font-size:clamp(18px,2vw,26px);color:var(--gold);margin:18px 0 20px;font-style:italic}.hero .hero-body{max-width:540px;font-size:17px;line-height:1.7;font-weight:400;color:#e6dfd2;margin:0 0 36px}.kicker{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.38em;text-transform:uppercase;color:var(--gold);margin:0 0 18px}h1,h2{font-family:Syne,sans-serif;font-weight:800;letter-spacing:-.04em;margin:0}.row{display:flex;flex-wrap:wrap;gap:14px}.btn{display:inline-flex;align-items:center;gap:8px;padding:14px 22px;border-radius:999px;font-size:13px;letter-spacing:.08em;text-transform:uppercase;border:1px solid transparent;position:relative;z-index:4;pointer-events:auto;transition:transform .25s,background .25s,color .25s}.btn:hover{transform:translateY(-2px)}.btn.primary{background:var(--gold);color:#111;font-weight:600}.btn.ghost{border-color:#ece7dc47;color:var(--ink);background:transparent}.section{padding:10vh 6vw;max-width:1400px;margin:0 4vw 6vh;background:#0505066b;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:24px}.section-head{display:grid;grid-template-columns:160px 1fr;gap:24px;margin-bottom:56px;align-items:baseline}.index{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.28em;color:var(--gold)}.section h2{font-size:clamp(32px,5vw,64px);line-height:.95;text-transform:uppercase}.lede{color:var(--muted);max-width:640px;font-size:17px;line-height:1.7;margin:12px 0 0}.about-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:48px}.about-grid p{font-size:18px;line-height:1.75;color:#cfc8ba}.specs{border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);padding:28px;display:grid;gap:18px}.spec dt{font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:.28em;text-transform:uppercase;color:var(--gold);margin:0 0 6px}.spec dd{margin:0;font-size:16px}.skills{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.skill-card{border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.03),transparent);padding:22px;min-height:180px;transition:border-color .3s,transform .35s}.skill-card:hover{border-color:#e8c54780;transform:translateY(-6px)}.skill-card h3{font-family:Syne,sans-serif;margin:0 0 16px;font-size:18px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{font-size:12px;padding:6px 10px;border:1px solid rgba(236,231,220,.12);color:var(--muted)}.projects{display:grid;gap:22px}.project{display:grid;grid-template-columns:90px 1.1fr 1.4fr auto;gap:24px;padding:32px 0;border-top:1px solid var(--line);align-items:start}.project:hover h3{color:var(--gold)}.year{font-family:IBM Plex Mono,monospace;color:var(--gold);font-size:12px}.project h3{font-family:Syne,sans-serif;font-size:28px;margin:0 0 6px;transition:color .25s}.sub{color:var(--muted);margin:0}.meta p{margin:0 0 10px;color:#cfc8ba;font-size:15px;line-height:1.6}.meta strong{color:var(--gold);font-weight:500;font-size:11px;letter-spacing:.16em;text-transform:uppercase;display:block;margin-bottom:4px}.posts{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.post-card{border:1px solid var(--line);padding:28px;min-height:260px;display:flex;flex-direction:column;background:#05050659;transition:transform .35s,border-color .3s}.post-card:hover{transform:translateY(-8px);border-color:var(--gold)}.post-card h3{font-family:Syne,sans-serif;font-size:22px;margin:12px 0}.post-card p{color:var(--muted);flex:1}.contact{padding-bottom:12vh}.contact h2{font-size:clamp(40px,8vw,96px)}.contact-links{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:40px;max-width:820px}.contact-links a{border:1px solid var(--line);padding:22px 24px;display:flex;flex-direction:column;gap:8px;background:var(--glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.contact-links a:hover{border-color:var(--gold)}.contact-links span{font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:.28em;text-transform:uppercase;color:var(--gold)}footer{padding:28px 7vw 40px;color:var(--muted);font-size:11px;letter-spacing:.06em;text-transform:uppercase;text-align:center;border-top:1px solid var(--line);background:transparent}footer p{margin:0}.page{position:relative;z-index:3;padding:18vh 7vw 12vh;max-width:820px}.resume-page{max-width:1100px}.resume-frame{width:100%;height:min(1600px,calc(100svh - 220px));min-height:720px;border:1px solid var(--line);background:#111;border-radius:12px;overflow:hidden}.resume-frame iframe{width:100%;height:100%;border:0;background:#fff}.page h1{font-family:Syne,sans-serif;font-size:clamp(36px,6vw,72px);text-transform:uppercase;margin:0 0 24px}.page article p{font-size:18px;line-height:1.8;color:#d5cfc2}.back{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);display:inline-block;margin-bottom:28px}.mobile-menu{display:none}@media(max-width:980px){.nav-links{display:none}.burger{display:block}.mobile-menu.open{display:flex;position:fixed;inset:0;z-index:19;background:#050506f5;flex-direction:column;justify-content:center;padding:80px 32px;gap:22px;font-family:Syne,sans-serif;font-size:28px}.hero{grid-template-columns:1fr;max-width:100%}.hero-copy{border-right:0;padding:0}.about-grid,.skills,.posts,.contact-links,.project,.section-head{grid-template-columns:1fr}.nav{mix-blend-mode:normal;background:linear-gradient(to bottom,rgba(5,5,6,.8),transparent)}}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-property:overflow;transition-duration:1ms;transition-behavior:allow-discrete}
