*,*:before,*:after{box-sizing:border-box}body{margin:0;background:#f2f4f7;color:#141414}#root{min-height:100vh}html,body,#root{font-family:Futura,Futura PT,Avenir,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,.handle,.nav,.index{font-weight:700}.caption,.meta,.focus span,.info-block h2,.projects h2,.info-block li span:first-child{font-family:Futura,Futura PT,Avenir,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700}:root{--paper: #f6f7f9;--ink: #141414;--ink-soft: #2b2b2b;--muted: #8d8d8d;--accent: #e1181c;--accent-soft: rgba(225, 24, 28, .12);--space-1: 8px;--space-2: 16px;--space-3: 24px;--space-4: 40px;--space-5: 56px}.app{position:relative;min-height:100vh;padding:var(--space-5) 6vw calc(var(--space-5) + var(--space-2));overflow:hidden;background:var(--paper)}.app:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at 15% 20%,rgba(225,24,28,.08),transparent 40%),radial-gradient(circle at 80% 10%,rgba(20,20,20,.08),transparent 45%);opacity:.7;pointer-events:none;z-index:0}.app:after{content:"";position:absolute;inset:0;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180' viewBox='0 0 180 180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='2' stitchTiles='stitch'/></filter><rect width='180' height='180' filter='url(%23n)' opacity='0.15'/></svg>");mix-blend-mode:multiply;opacity:.25;pointer-events:none;z-index:0}.masthead{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;position:relative;z-index:2}.masthead-left{max-width:640px}.handle{margin:0;font-size:1.1rem;letter-spacing:.04em;text-transform:uppercase}.nav{margin-top:14px;font-size:clamp(1.2rem,1vw + .9rem,2.2rem);display:flex;flex-wrap:wrap;gap:12px 16px}.nav a{color:inherit;text-decoration:none}.nav a:visited,.nav a:hover,.nav a:active,.nav a:focus{color:inherit;text-decoration:none}.nav a:after{content:";";margin-left:6px;color:var(--accent)}.nav a:last-child:after{content:"."}.masthead-right{text-align:right}.index{font-size:clamp(2.8rem,4vw,4.8rem);letter-spacing:-.04em}.arrow{margin-top:10px;font-size:2.2rem;color:var(--accent)}.ticker{margin-top:24px;max-width:1000px;font-size:clamp(1.6rem,3vw,3rem);color:var(--muted);line-height:1.1}.content{margin-top:var(--space-4);display:grid;gap:calc(var(--space-5) + 16px);position:relative;z-index:1}.intro{display:flex;gap:var(--space-5);align-items:flex-start}.intro-left{flex:1;display:flex;flex-direction:column;gap:var(--space-3)}.hero-copy h1{margin:0 0 12px;font-size:clamp(2.8rem,6vw,5.8rem);letter-spacing:-.03em}.roles{margin:0 0 16px;font-size:clamp(1.2rem,2.2vw,2rem);color:var(--ink-soft)}.bio{margin:0;max-width:48ch;font-size:1.15rem;line-height:1.65}.meta{margin-top:18px;display:flex;flex-direction:column;gap:6px;font-size:.85rem;text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}.focus{margin-top:20px;display:flex;flex-wrap:wrap;gap:10px}.focus span{border-bottom:2px solid var(--ink);padding:2px 0;font-size:.75rem;text-transform:uppercase;letter-spacing:.14em}.hero-art{flex:1;display:flex;flex-direction:column;gap:var(--space-2);align-items:stretch}.canvas-frame{width:100%;padding:10px;border:2px solid var(--ink);aspect-ratio:4 / 3}.shader-canvas{width:100%;height:100%;display:block;background:#d8dde8;cursor:crosshair;touch-action:none}.caption{margin:0;font-size:.72rem;text-transform:uppercase;letter-spacing:.22em;color:var(--muted);padding-left:var(--space-1)}.info-block{border-top:2px solid var(--ink);padding-top:16px}.info-block h2,.projects h2{margin:0 0 12px;font-size:.95rem;text-transform:uppercase;letter-spacing:.24em;position:relative;padding-left:18px}.info-block h2:before,.projects h2:before{content:"";position:absolute;left:0;top:50%;width:10px;height:10px;transform:translateY(-50%) rotate(45deg);background:var(--accent)}.info-block p{margin:0;max-width:42ch;line-height:1.7}.info-block ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}.info-block li{display:flex;justify-content:space-between;gap:12px;font-size:.9rem}.info-block li span:first-child{color:var(--muted);text-transform:uppercase;letter-spacing:.1em}.contact-list{align-self:flex-end}.contact-list li{justify-content:space-between}.contact-list li span:first-child{min-width:90px}.info-block li a{color:inherit;text-decoration:none}.info-block li a:visited,.info-block li a:hover,.info-block li a:active,.info-block li a:focus{color:inherit;text-decoration:none}.projects{display:grid;gap:var(--space-3);border-top:2px solid var(--ink);padding-top:var(--space-3)}.resume{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4);border-top:2px solid var(--ink);padding-top:var(--space-3)}.resume-column{display:grid;gap:var(--space-4)}.resume-item{display:grid;gap:8px}.resume-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.resume-head h3{margin:0;font-size:1.05rem}.resume-head span{font-size:.85rem;color:var(--muted)}.resume-sub{margin:0;font-size:.95rem}.resume-meta{margin:0;font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.bullet-list{list-style:disc;margin:0;padding-left:20px;display:grid;gap:8px}.bullet-list li{display:list-item;font-size:.9rem;line-height:1.6}.skill-list{display:grid;gap:12px}.skill-row{display:grid;gap:6px}.skill-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.22em;color:var(--muted)}.skill-items{font-size:.95rem;line-height:1.6}.experience-list{display:grid;gap:24px}.experience-card{border:2px solid var(--ink);padding:var(--space-3);background:linear-gradient(135deg,#f9fafc,#eef1f5);position:relative;box-shadow:5px 5px #14141473}.experience-card:before{content:"";position:absolute;left:-2px;top:-2px;width:72px;height:6px;background:var(--accent)}.experience-card:after{content:"";position:absolute;inset:10px;border:1px dashed rgba(20,20,20,.18);pointer-events:none}.experience-header{display:flex;align-items:center;gap:16px;margin-bottom:12px}.experience-index{font-size:.75rem;letter-spacing:.3em;text-transform:uppercase;border:2px solid var(--accent);color:var(--accent);background:var(--accent-soft);padding:6px 10px}.experience-title h3{margin:0}.experience-company{margin:6px 0 0;font-size:1rem}.experience-meta{display:flex;flex-wrap:wrap;gap:10px;font-size:.75rem;text-transform:uppercase;letter-spacing:.18em}.experience-meta span{border:1px solid rgba(20,20,20,.35);color:var(--ink-soft);padding:6px 10px}.interest-list{display:flex;flex-wrap:wrap;gap:10px}.interest-list span{border-bottom:2px solid var(--accent);padding:2px 0;font-size:.75rem;text-transform:uppercase;letter-spacing:.12em}.project-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3)}.project-card{border:2px solid var(--ink);padding:var(--space-3);color:inherit;text-decoration:none;display:block;position:relative;box-shadow:6px 6px 0 0 var(--accent-soft)}.project-card:visited,.project-card:hover,.project-card:active,.project-card:focus{color:inherit;text-decoration:none}.project-image{width:100%;aspect-ratio:4 / 3;margin-bottom:14px;border:2px solid var(--ink);background:#f2f2f2;overflow:hidden;position:relative}.project-image img{width:100%;height:100%;object-fit:cover;display:block;position:absolute;inset:0;transition:opacity .3s ease}.project-image-hover{opacity:0}.project-card:hover .project-image-hover,.project-card:focus-visible .project-image-hover{opacity:1}.project-card:hover .project-image-main,.project-card:focus-visible .project-image-main{opacity:0}.project-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.project-card h3{margin:0;font-size:1.15rem}.project-card span{font-size:.85rem;color:var(--muted)}.project-card p{margin:12px 0 0;line-height:1.6}.project-tech{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px}.project-tech span{border:1px solid var(--accent);padding:4px 8px;font-size:.72rem;text-transform:uppercase;letter-spacing:.12em}.stagger>*{animation:fadeUp .7s ease both}.stagger>*:nth-child(2){animation-delay:.08s}.stagger>*:nth-child(3){animation-delay:.16s}.stagger>*:nth-child(4){animation-delay:.24s}.stagger>*:nth-child(5){animation-delay:.32s}.stagger>*:nth-child(6){animation-delay:.4s}@keyframes fadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@media(max-width:980px){.intro{flex-direction:column}.resume{grid-template-columns:1fr}.project-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.app{padding:36px 6vw 64px}.masthead{flex-direction:column}.masthead-right{text-align:left}.project-list{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.stagger>*{animation:none}}
