@import "https://fonts.googleapis.com/css2?family=Syne:wght@400;600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;1,9..40,300&display=swap";:root{--clr-charcoal:#454040;--clr-stone:#605b51;--clr-yellow:#d8d365;--clr-lime:#e6f082;--off-white:#faf8d2;--off-white-stronger:#f7f4b2;--bg:#1a1816;--bg-surface:var(--clr-charcoal);--bg-raised:var(--clr-stone);--text-primary:#f5f2ea;--text-secondary:#b8b2a7;--text-muted:#7a756d;--accent:var(--clr-yellow);--accent-soft:var(--clr-lime);--border:#d8d36526;--border-hover:#d8d36566;--font-display:"Syne", sans-serif;--font-body:"DM Sans", sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-3xl:2.5rem;--text-4xl:3.5rem;--text-5xl:5rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-12:3rem;--space-16:4rem;--space-24:6rem;--space-32:8rem;--max-width:1200px;--gutter:clamp(1.5rem, 5vw, 4rem);--radius-sm:4px;--radius-md:8px;--radius-lg:16px;--radius-xl:32px;--radius-full:9999px;--shadow-sm:0 1px 3px #0006;--shadow-md:0 4px 16px #00000080;--shadow-lg:0 12px 40px #0009;--glow-accent:0 0 32px #d8d36533;--transition-fast:.15s ease;--transition-base:.3s ease;--transition-slow:.6s cubic-bezier(.16, 1, .3, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-body);font-size:var(--text-base);color:var(--text-primary);background-color:var(--bg);min-height:100dvh;font-weight:300;line-height:1.7;overflow-x:hidden}.lenis{overflow:hidden}img,video,svg{max-width:100%;display:block}ul,ol{list-style:none}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit;color:inherit}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);letter-spacing:-.02em;color:var(--text-primary);font-weight:700;line-height:1.1}h1{font-size:var(--text-5xl);font-weight:800}h2{font-size:var(--text-4xl)}h3{font-size:var(--text-3xl)}h4{font-size:var(--text-2xl)}h5{font-size:var(--text-xl)}h6{font-size:var(--text-lg)}p{color:var(--text-secondary);max-width:65ch}strong{color:var(--text-primary);font-weight:600}em{color:var(--accent-soft);font-style:italic}small{font-size:var(--text-xs);color:var(--text-muted)}.display{font-size:clamp(3rem,10vw,8rem);font-family:var(--font-display);letter-spacing:-.04em;font-weight:800;line-height:.95}.eyebrow{font-family:var(--font-display);font-size:var(--text-xs);letter-spacing:.15em;text-transform:uppercase;color:var(--accent);font-weight:600}code,kbd,samp,pre{font-family:var(--font-mono);font-size:.9em}code{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--accent-soft);padding:.1em .4em}pre{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-6);overflow-x:auto}.container{width:100%;max-width:var(--max-width);padding-inline:var(--gutter);margin-inline:auto}.section{padding-block:var(--space-32)}.grid{display:grid}.grid-2{gap:var(--space-8);grid-template-columns:repeat(2,1fr);display:grid}.grid-3{gap:var(--space-8);grid-template-columns:repeat(3,1fr);display:grid}.grid-4{gap:var(--space-8);grid-template-columns:repeat(4,1fr);display:grid}.grid-auto{gap:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));display:grid}.flex{display:flex}.flex-center{justify-content:center;align-items:center;display:flex}.flex-between{justify-content:space-between;align-items:center;display:flex}.flex-col{flex-direction:column;display:flex}.gap-2{gap:var(--space-2)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.gap-8{gap:var(--space-8)}header{z-index:100;padding:var(--space-4) var(--gutter);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);transition:background var(--transition-base);background:#1a1816cc;justify-content:space-between;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}header .logo{font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:-.03em;color:var(--text-primary);font-weight:800}header .logo span{color:var(--accent)}nav{align-items:center;gap:var(--space-8);display:flex}nav a{font-size:var(--text-sm);color:var(--text-secondary);letter-spacing:.02em;transition:color var(--transition-fast);font-weight:400;position:relative}nav a:after{content:"";background:var(--accent);width:0;height:1px;transition:width var(--transition-base);position:absolute;bottom:-2px;left:0}nav a:hover{color:var(--text-primary)}nav a:hover:after{width:100%}nav a.active{color:var(--accent)}.btn{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);font-family:var(--font-display);font-size:var(--text-sm);letter-spacing:.02em;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;border:none;font-weight:600;display:inline-flex}.btn-primary{background:var(--accent);color:var(--bg)}.btn-primary:hover{background:var(--accent-soft);box-shadow:var(--glow-accent);transform:translateY(-1px)}.btn-outline{color:var(--text-primary);border:1px solid var(--border);background:0 0}.btn-outline:hover{border-color:var(--accent);color:var(--accent);box-shadow:var(--glow-accent)}.btn-ghost{color:var(--text-secondary);padding-inline:var(--space-3);background:0 0}.btn-ghost:hover{color:var(--text-primary)}.btn-sm{padding:var(--space-2) var(--space-4);font-size:var(--text-xs)}.btn-lg{padding:var(--space-4) var(--space-8);font-size:var(--text-base)}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-8);transition:border-color var(--transition-base), box-shadow var(--transition-base), transform var(--transition-base)}.card:hover{border-color:var(--border-hover);box-shadow:var(--shadow-lg), var(--glow-accent);transform:translateY(-4px)}.card-header{align-items:center;gap:var(--space-4);margin-bottom:var(--space-6);display:flex}.card-title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700}.card-body p{font-size:var(--text-sm)}.form-group{gap:var(--space-2);flex-direction:column;display:flex}label{font-family:var(--font-display);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);font-weight:600}input[type=text],input[type=email],input[type=password],input[type=number],textarea,select{width:100%;padding:var(--space-3) var(--space-4);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--text-base);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #d8d3651a}input::placeholder,textarea::placeholder{color:var(--text-muted)}textarea{resize:vertical;min-height:120px}hr{border:none;border-top:1px solid var(--border);margin-block:var(--space-8)}.divider{align-items:center;gap:var(--space-4);color:var(--text-muted);font-size:var(--text-sm);display:flex}.divider:before,.divider:after{content:"";background:var(--border);flex:1;height:1px}.badge{padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-family:var(--font-display);font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;align-items:center;font-weight:600;display:inline-flex}.badge-accent{color:var(--accent);background:#d8d36526;border:1px solid #d8d3654d}.badge-stone{color:var(--text-secondary);border:1px solid var(--border);background:#605b5166}.badge-lime{color:var(--accent-soft);background:#e6f0821a;border:1px solid #e6f0824d}.footer{z-index:10;padding:2.5rem var(--gutter) 1rem;background:linear-gradient(to bottom, transparent 0%, var(--bg-primary,#1a1816) 100%);opacity:0;will-change:opacity;flex-direction:column;justify-content:center;align-items:center;transition:opacity .4s;display:flex;position:fixed;bottom:0;left:0;right:0}.footer span{font-size:var(--text-base);color:var(--text-primary);transition:all var(--transition-base);margin-bottom:15px;font-weight:500}.footer span:hover{color:var(--off-white-stronger);opacity:1;text-shadow:0 0 8px #e6f08226}.projects{flex-direction:column;gap:0;width:45%;display:flex}.projects-span{width:fit-content;font-size:var(--text-lg);color:var(--text-secondary);transition:all var(--transition-base);margin-bottom:15px;font-weight:400}.projects-date{width:fit-content;font-size:var(--text-lg);color:var(--text-primary);transition:all var(--transition-base);margin-bottom:15px;font-weight:400}.projects-span:hover{color:var(--off-white-stronger);opacity:1;text-shadow:0 0 8px #e6f08226}.footer p{color:var(--text-muted);text-align:center;font-size:.82rem;font-style:italic;font-family:var(--font-display);letter-spacing:.04em;opacity:.7;font-weight:300}footer nav{gap:var(--space-6)}::selection{color:var(--text-primary);background:#d8d3654d}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--clr-stone);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--accent)}.text-center{text-align:center}.text-right{text-align:right}.text-accent{color:var(--accent)}.text-muted{color:var(--text-muted)}.text-sm{font-size:var(--text-sm)}.text-lg{font-size:var(--text-lg)}.mt-auto{margin-top:auto}.mx-auto{margin-inline:auto}.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}@keyframes fadeUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pulse-glow{0%,to{box-shadow:var(--glow-accent)}50%{box-shadow:0 0 48px #d8d36559}}.animate-fade-up{animation:fadeUp .6s var(--transition-slow) both}.animate-fade-in{animation:.6s both fadeIn}.delay-1{animation-delay:.1s}.delay-2{animation-delay:.2s}.delay-3{animation-delay:.3s}.delay-4{animation-delay:.4s}.delay-5{animation-delay:.5s}@media (width<=768px){h1{font-size:var(--text-3xl)}h2{font-size:var(--text-2xl)}h3{font-size:var(--text-xl)}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}nav{display:none}}@media (width<=480px){:root{--gutter:1.25rem}.section{padding-block:var(--space-16)}footer{text-align:center;flex-direction:column}}.social-link{color:var(--text-secondary);margin-right:15px;font-weight:400;text-decoration:none;transition:color .35s;position:relative}.social-link:after{content:"";background:#d8d36540;width:100%;height:1px;transition:all .45s;position:absolute;bottom:-1px;left:0}.social-link:hover{color:var(--off-white)}.social-link:hover:after{background:var(--accent);height:1.5px;box-shadow:0 0 8px #d8d36580}.menu-links{flex-direction:column;gap:.5rem;display:flex}.menu-item{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--text-secondary);width:fit-content;font-weight:600;text-decoration:none;transition:color .3s;position:relative}.menu-item:hover{color:var(--off-white)}.menu-item:before{content:"->";color:var(--accent);opacity:0;font-size:.85em;transition:opacity .3s;position:absolute;top:50%;left:-2.5rem;transform:translateY(-50%)}.menu-item:hover:before{opacity:1}.menu-item1{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--text-secondary);width:fit-content;font-weight:600;text-decoration:none;transition:color .3s;position:relative}.menu-item1:hover{color:var(--off-white)}.menu-item1:before{content:"<-";color:var(--accent);opacity:0;font-size:.85em;transition:opacity .3s;position:absolute;top:50%;left:-2.5rem;transform:translateY(-50%)}.menu-item1:hover:before{opacity:1}.socials{flex-wrap:wrap;align-items:center;gap:.25rem;display:flex}main,.container{padding-right:100px}.ascii-model table{border-collapse:collapse;border:none}.ascii-model td{padding:0;line-height:1}.shimmer-text{color:#0000;background:linear-gradient(90deg,currentColor 0%,#fff9 40% 60%,currentColor 100%) 0 0/50% 100% no-repeat;-webkit-background-clip:text;background-clip:text;animation:2s linear infinite shimmer;display:inline-block}@keyframes shimmer{0%{opacity:.4}50%{opacity:.7}to{opacity:.4}}.music-wrapper{align-items:center;gap:0;display:inline-flex;position:relative}#now-playing-container{opacity:0;pointer-events:none;vertical-align:baseline;white-space:nowrap;font-size:.82rem;font-style:italic;font-family:var(--font-display);letter-spacing:.06em;color:var(--text-muted);align-items:center;font-weight:300;text-decoration:none;transition:opacity .4s,transform .4s;display:inline-flex;position:relative;top:5px;transform:translate(-8px)}.music-wrapper a:hover~#now-playing-container{opacity:.7;color:var(--off-white);text-shadow:0 0 8px #d8d36580;transform:translate(0)}.np-container{max-width:200px;display:inline-block;overflow:hidden}.np-text{white-space:nowrap;letter-spacing:.08em;display:inline-block}.np-text.marquee{will-change:transform;animation:marquee var(--marquee-duration,10s) linear infinite}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}.contact-copy{cursor:pointer;vertical-align:bottom;background:0 0;border:none;flex-direction:column;height:1.7rem;padding:0;display:inline-flex;position:relative;overflow:visible}.copy-text{transition:transform .3s cubic-bezier(.16,1,.3,1),opacity .3s;display:block}.copy-text-in{opacity:1;transform:translateY(0)}.copy-text-out{opacity:0;position:absolute;top:0;transform:translateY(100%)}.contact-copy.copied .copy-text-in{opacity:0;transform:translateY(-100%)}.contact-copy.copied .copy-text-out{opacity:1;transform:translateY(0)}.paragraph-link{color:var(--text-secondary);transition:all var(--transition-base);border-radius:4px;padding:2px 6px;font-weight:400;text-decoration:none;position:relative}.paragraph-link:before{content:"";background:var(--off-white-stronger);opacity:.18;z-index:-1;width:100%;height:90%;transition:all var(--transition-slow);border-radius:3px;position:absolute;bottom:0;left:0}.paragraph-link:hover{color:#1a1816;font-weight:500}.paragraph-link:hover:before{opacity:.85;transform:scaleX(1.04)}.gif-button-wrapper{align-items:center;gap:var(--space-4);width:100%;max-width:400px;margin-top:3rem;display:inline-flex;position:relative}.gif-container{border-radius:var(--radius-md);transition:transform var(--transition-fast);cursor:pointer;width:100%;display:block;position:relative;overflow:visible}.gif-container:hover{transform:scale(1.02)}.gif-main{border-radius:inherit;z-index:1;width:100%;display:block;position:relative}.glow-ring{border-radius:inherit;z-index:0;pointer-events:none;opacity:0;box-shadow:0 0 0px var(--off-white-stronger);transition:opacity .2s;position:absolute;inset:-4px}.gif-container:hover .glow-ring{opacity:1;animation:1.8s ease-out forwards glowIntensify}.gif-container.clicked .glow-ring{animation:none;opacity:0!important}@keyframes glowIntensify{0%{box-shadow:0 0 8px var(--off-white-stronger)}50%{box-shadow:0 0 28px var(--off-white-stronger)}to{box-shadow:0 0 48px var(--off-white-stronger), 0 0 80px #f7f4b299}}.gif-socials{gap:var(--space-3);opacity:0;transition:opacity var(--transition-slow), transform var(--transition-slow);white-space:nowrap;pointer-events:none;flex-direction:column;display:flex;transform:translate(20px)}.gif-socials.visible{opacity:1;pointer-events:auto;transform:translate(0)}.gif-socials a{color:var(--text-secondary);font-weight:400;text-decoration:none;transition:color .35s;position:relative}.gif-socials a:after{content:"";background:#d8d36540;width:100%;height:1px;transition:all .45s;position:absolute;bottom:-1px;left:0}.gif-socials a:hover{color:var(--off-white)}.gif-socials a:hover:after{background:var(--accent);height:1.5px;box-shadow:0 0 8px #d8d36580}@media (width<=600px){.gif-button-wrapper{flex-direction:column;align-items:center;max-width:300px}.gif-socials{flex-flow:wrap;justify-content:center;transform:translateY(10px)}}.photos{flex-direction:column;gap:0;width:100%;display:flex}.photos-bg-title{font-family:var(--font-display);letter-spacing:-.05em;color:var(--text-primary);opacity:.05;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:0;white-space:nowrap;font-size:clamp(110px,25vw,420px);font-weight:800;line-height:1;position:fixed;bottom:-2vh;left:6vw}.photos-content{z-index:1;padding:10vh 6vw 30vh;position:relative}@media (width>=768px){.photos-content{padding:14vh 8vw 30vh}}.photos-nav{font-size:clamp(16px,3vw,20px);font-family:var(--font-display);align-items:center;gap:1.25rem;margin-bottom:6vh;display:flex}.photos-nav-current{color:var(--text-muted);font-family:var(--font-display);font-style:italic}.photos-grid{columns:1;gap:1rem}@media (width>=640px){.photos-grid{columns:2}}@media (width>=1024px){.photos-grid{columns:3}}.photo-card{break-inside:avoid;border-radius:var(--radius-md);cursor:pointer;opacity:0;margin-bottom:1rem;transition:opacity .5s,transform .5s,box-shadow .3s;position:relative;overflow:hidden;transform:translateY(16px)}.photo-card.loaded{opacity:1;transform:translateY(0)}.photo-card img{border-radius:var(--radius-md);filter:grayscale(15%);width:100%;height:auto;transition:transform .5s cubic-bezier(.16,1,.3,1),filter .3s;display:block}.photo-placeholder{background:var(--bg-surface);border-radius:var(--radius-md);width:100%;animation:1.5s infinite shimmer}.lightbox{z-index:1000;opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000000eb;justify-content:center;align-items:center;transition:opacity .3s;display:flex;position:fixed;inset:0}.lightbox.open{opacity:1;pointer-events:auto}.lightbox img{object-fit:contain;border-radius:var(--radius-md);max-width:90vw;max-height:90dvh;box-shadow:0 24px 80px #000c}.lightbox-close{color:var(--text-muted);cursor:pointer;font-size:1.5rem;font-family:var(--font-mono);background:0 0;border:none;padding:.5rem;transition:color .2s;position:absolute;top:1.5rem;right:1.5rem}.lightbox-close:hover{color:var(--accent)}.photos-empty{font-family:var(--font-display);color:var(--text-secondary);font-size:clamp(16px,2.2vw,20px);font-style:italic;line-height:1.5}.social-link,.gif-socials a,.paragraph-link{color:var(--text-secondary);border-radius:0;padding:0;font-weight:400;transition:color .35s;position:relative}.gif-socials a{width:fit-content}.paragraph-link:before{content:none}.social-link:after,.gif-socials a:after,.paragraph-link:after{content:"";background:#d8d36540;width:100%;height:1px;transition:background .35s,box-shadow .35s;position:absolute;bottom:-1px;left:0}.social-link:hover,.social-link:focus-visible,.gif-socials a:hover,.gif-socials a:focus-visible,.paragraph-link:hover,.paragraph-link:focus-visible{color:var(--off-white);font-weight:400}.social-link:hover:after,.social-link:focus-visible:after,.gif-socials a:hover:after,.gif-socials a:focus-visible:after,.paragraph-link:hover:after,.paragraph-link:focus-visible:after{background:var(--accent);height:1px;box-shadow:0 0 8px #d8d36580}.music-wrapper .social-link:hover:after{height:1.5px}.project-loader{width:1ch;color:var(--accent);text-align:center;margin-left:.35rem;font-family:monospace;line-height:1;animation:1.2s steps(8,end) infinite project-spin;display:inline-block}@keyframes project-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.project-loader{animation:none}}
