*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#000;--text:#84898e;--text-bright:#fff;--accent:#ffc700;--border:#a891414d;--font:"JetBrains Mono", monospace}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font);text-transform:uppercase;letter-spacing:-.02em;-webkit-font-smoothing:antialiased;line-height:1.4}a{color:inherit;text-decoration:none}::selection{background:var(--accent);color:var(--bg)}.hero{border-bottom:1px solid var(--border);align-items:flex-end;min-height:100vh;padding:0 3vw 8vh;display:flex;position:relative}.hero:before{content:"";pointer-events:none;background:repeating-linear-gradient(45deg,#0000,#0000 10px,#ffc70004 10px 11px);position:absolute;inset:0}.hero-name{color:var(--text-bright);letter-spacing:-.04em;font-size:clamp(3rem,10vw,8rem);font-weight:700;line-height:.95}.hero-tagline{color:var(--accent);margin-top:2vh;font-size:clamp(.9rem,2vw,1.4rem)}.hero-meta{gap:.8em;margin-top:2vh;font-size:clamp(.7rem,1.2vw,.9rem);display:flex}.hero-sep{color:var(--accent)}.marquee{border-bottom:1px solid var(--border);white-space:nowrap;padding:1.5vw 0;overflow:hidden}.marquee-track{animation:60s linear infinite scroll;display:inline-flex}.marquee-text{color:var(--text);flex-shrink:0;padding-right:1vw;font-size:clamp(.8rem,1.5vw,1.2rem)}@keyframes scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}.projects{border-bottom:1px solid var(--border);padding:0 3vw}.projects-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:3vw 0;display:flex}.section-label{color:var(--accent);font-size:clamp(.7rem,1.2vw,.9rem)}.project-count{font-size:clamp(.7rem,1.2vw,.9rem)}.projects-list{flex-direction:column;display:flex}.project-row{border-bottom:1px solid var(--border);cursor:pointer;padding:2.5vw 0;transition:padding .3s,opacity .3s}.project-row:last-child{border-bottom:none}.project-row:hover:not(.expanded){padding:3.2vw 0}.project-row:hover:not(.expanded) .project-name{color:var(--text-bright)}.project-row.dimmed{opacity:.3}.project-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.project-row-header{grid-template-columns:4rem 1fr auto;align-items:center;gap:2vw;display:grid}.project-expanded-content{grid-template-rows:0fr;transition:grid-template-rows .5s;display:grid}.project-row.expanded .project-expanded-content{grid-template-rows:1fr}.project-expanded-content>*{overflow:hidden}.project-expanded-inner{opacity:0;flex-direction:column;gap:2rem;padding-top:0;padding-left:calc(6rem + 2vw);transition:opacity .3s,padding-top .3s;display:flex}.project-row.expanded .project-expanded-inner{opacity:1;padding-top:2rem;transition:opacity .3s .2s,padding-top .3s}.project-expanded-desc{color:var(--text);max-width:700px;font-size:clamp(.85rem,1.4vw,1.1rem);line-height:1.7}.project-expanded-screenshot{border:1px solid var(--border);border-radius:4px;width:fit-content;max-width:100%;margin-top:1.5rem;overflow:hidden}.project-expanded-screenshot img{object-fit:contain;width:auto;max-width:100%;height:auto;max-height:100px;display:block}.project-screenshot-placeholder{aspect-ratio:16/9;width:100vw;max-width:100px;color:var(--text);opacity:.4;text-transform:uppercase;background:#ffffff08;justify-content:center;align-items:center;font-size:clamp(.7rem,1.2vw,.9rem);display:flex}.project-index{color:var(--accent);font-size:clamp(.7rem,1vw,.85rem)}.project-info{flex-direction:column;gap:.3em;display:flex}.project-name{color:var(--text);font-size:clamp(1rem,2.5vw,1.8rem);font-weight:700;transition:color .3s}.project-desc{text-transform:uppercase;font-size:clamp(.65rem,1vw,.8rem);transition:opacity .3s}.project-row.expanded .project-desc{opacity:0}.project-tech{border:1px solid var(--border);align-self:flex-start;width:fit-content;margin-top:.3em;padding:.3em .8em;font-size:clamp(.6rem,.9vw,.75rem)}.project-links{align-items:center;gap:.75em;display:flex}.project-link{border:1px solid var(--border);cursor:pointer;text-transform:uppercase;padding:.4em .9em;font-size:clamp(.6rem,.9vw,.75rem);transition:color .3s,border-color .3s,font-size .3s,padding .3s}.project-link:hover{color:var(--accent);border-color:var(--accent)}.project-row.expanded .project-link{padding:.65em 1.3em;font-size:clamp(.8rem,1.3vw,1.05rem);font-weight:700}.project-link-live{border-color:var(--accent);color:var(--accent)}.project-link-live:hover{color:var(--text-bright);border-color:var(--text-bright)}.project-link-soon{border:1px solid var(--border);opacity:.4;cursor:default;text-transform:uppercase;padding:.4em .9em;font-size:clamp(.6rem,.9vw,.75rem)}@media (width<=600px){.project-row-header{grid-template-columns:2.5rem 1fr;gap:3vw}.project-row{padding:5vw 0}.project-row:hover:not(.expanded){padding:6vw 0}.project-links{grid-column:1/-1;justify-content:flex-end}.project-expanded-inner{padding-left:calc(3.5rem + 3vw)}}.socials{border-bottom:1px solid var(--border);padding:0 3vw}.socials-header{border-bottom:1px solid var(--border);padding:3vw 0}.socials-grid{grid-template-columns:repeat(3,1fr);display:grid}.social-link{border-bottom:1px solid var(--border);border-right:1px solid var(--border);justify-content:space-between;align-items:center;padding:2vw 1.5vw;transition:color .3s,background .3s;display:flex}.social-link:nth-child(3n){border-right:none}.social-link:nth-last-child(-n+3){border-bottom:none}.social-link:hover{color:var(--text-bright);background:#ffc70008}.social-link:hover .social-arrow{color:var(--accent);transform:translate(4px)}.social-name{font-size:clamp(.75rem,1.3vw,1rem);font-weight:700}.social-arrow{font-size:clamp(.7rem,1vw,.85rem);transition:color .3s,transform .3s}@media (width<=600px){.socials-grid{grid-template-columns:1fr 1fr}.social-link:nth-child(3n){border-right:1px solid var(--border)}.social-link:nth-child(2n){border-right:none}.social-link:nth-last-child(-n+3){border-bottom:1px solid var(--border)}.social-link:nth-last-child(-n+2){border-bottom:none}.social-link{padding:4vw 3vw}}.footer{justify-content:space-between;align-items:center;padding:3vw;font-size:clamp(.6rem,1vw,.75rem);display:flex}.footer-name,.footer-year{color:var(--text)}.site{width:100vw;min-height:100vh;overflow-x:hidden}.resume-page{border-top:1px solid var(--border);min-height:100vh}.resume-nav{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:1.5vw 3vw;font-size:clamp(.7rem,1.2vw,.9rem);display:flex}.resume-back,.resume-download{border:1px solid var(--border);padding:.4em .9em;transition:color .3s,border-color .3s}.resume-back:hover,.resume-download:hover{color:var(--accent);border-color:var(--accent)}.resume-download{border-color:var(--accent);color:var(--accent)}.resume-download:hover{color:var(--text-bright);border-color:var(--text-bright)}.resume-hero{border-bottom:1px solid var(--border);padding:6vh 3vw;position:relative}.resume-hero:before{content:"";pointer-events:none;background:repeating-linear-gradient(45deg,#0000,#0000 10px,#ffc70004 10px 11px);position:absolute;inset:0}.resume-name{color:var(--text-bright);letter-spacing:-.04em;font-size:clamp(2.2rem,7vw,5.5rem);font-weight:700;line-height:.95}.resume-label{color:var(--accent);margin-top:1.5vh;font-size:clamp(.9rem,1.6vw,1.2rem)}.resume-contact{flex-wrap:wrap;gap:.8em 1.6em;margin-top:2.5vh;font-size:clamp(.7rem,1.1vw,.85rem);display:flex}.resume-contact-link{transition:color .3s}.resume-contact-link:hover{color:var(--accent)}.resume-summary{text-transform:none;letter-spacing:0;max-width:70ch;color:var(--text);margin-top:3vh;font-size:clamp(.8rem,1.2vw,.95rem);line-height:1.7}.resume-profiles{flex-wrap:wrap;gap:.8em;margin-top:3vh;display:flex}.resume-profile-link{border:1px solid var(--border);padding:.4em .9em;font-size:clamp(.65rem,1vw,.8rem);transition:color .3s,border-color .3s}.resume-profile-link:hover{color:var(--accent);border-color:var(--accent)}.resume-section{border-bottom:1px solid var(--border);padding:0 3vw}.resume-section-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:3vw 0;display:flex}.resume-section-count{font-size:clamp(.7rem,1.2vw,.9rem)}.resume-section-body{flex-direction:column;display:flex}.resume-row{border-bottom:1px solid var(--border);grid-template-columns:4rem 1fr;gap:2vw;padding:2.5vw 0;display:grid}.resume-row:last-child{border-bottom:none}.resume-row-index{color:var(--accent);padding-top:.4em;font-size:clamp(.7rem,1vw,.85rem)}.resume-row-body{flex-direction:column;gap:.8em;display:flex}.resume-row-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.8em 1.6em;display:flex}.resume-row-title{color:var(--text-bright);font-size:clamp(.95rem,1.8vw,1.3rem);font-weight:700}.resume-row-at{color:var(--text);font-weight:400}.resume-row-date{color:var(--accent);white-space:nowrap;font-size:clamp(.65rem,1vw,.8rem)}.resume-row-link{border:1px solid var(--accent);color:var(--accent);padding:.4em .9em;font-size:clamp(.6rem,.9vw,.75rem);transition:color .3s,border-color .3s}.resume-row-link:hover{color:var(--text-bright);border-color:var(--text-bright)}.resume-row-desc{text-transform:none;letter-spacing:0;color:var(--text);max-width:70ch;font-size:clamp(.8rem,1.2vw,.95rem);line-height:1.6}.resume-bullets{flex-direction:column;gap:.6em;margin-top:.4em;list-style:none;display:flex}.resume-bullets li{text-transform:none;letter-spacing:0;color:var(--text);max-width:80ch;padding-left:1.2em;font-size:clamp(.8rem,1.2vw,.95rem);line-height:1.6;position:relative}.resume-bullets li:before{content:"—";color:var(--accent);position:absolute;left:0}.resume-skills{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:2vw;padding:2.5vw 0;display:grid}.resume-skill-group{flex-direction:column;gap:.8em;display:flex}.resume-skill-heading{color:var(--accent);font-size:clamp(.7rem,1vw,.85rem);font-weight:400}.resume-tags{flex-wrap:wrap;gap:.4em;display:flex}.resume-tag{border:1px solid var(--border);color:var(--text);padding:.3em .7em;font-size:clamp(.6rem,.9vw,.75rem)}@media (width<=600px){.resume-row{grid-template-columns:2.5rem 1fr;gap:3vw;padding:5vw 0}.resume-nav{padding:4vw}.resume-hero{padding:8vw 4vw}.resume-section{padding:0 4vw}}
