:root{--bg:#0f1613;--bg-raised:#141d19;--bg-raised-2:#182220;--line:#26332d;--line-soft:#1c2620;--copper:#c8823f;--copper-bright:#e2a165;--text:#eef1ea;--text-muted:#93a19a;--text-dim:#5f6d66;--led:#7fd1a0;--max:1240px}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:IBM Plex Sans,sans-serif;line-height:1.6}body:before{content:"";background-image:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px), radial-gradient(var(--copper) 1.3px, transparent 1.3px);opacity:.4;pointer-events:none;z-index:0;background-position:0 0,0 0,-.5px -.5px;background-size:64px 64px,64px 64px,64px 64px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#0000 0,#000 140px 90%,#0000 100%);mask-image:linear-gradient(#0000 0,#000 140px 90%,#0000 100%)}.aurora-wash{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.aurora-wash span{filter:blur(120px);border-radius:50%;position:absolute}.aurora-wash .w1{background:var(--copper);opacity:.07;width:560px;height:480px;top:-10%;left:-8%}.aurora-wash .w2{background:var(--led);opacity:.05;width:480px;height:420px;top:38%;right:-10%}.aurora-wash .w3{background:var(--copper);opacity:.05;width:520px;height:440px;bottom:-12%;left:18%}.aurora{pointer-events:none;z-index:0;position:absolute;inset:0;overflow:hidden}.aurora span{filter:blur(90px);opacity:.18;border-radius:50%;position:absolute}.aurora .a1{background:var(--copper);width:520px;height:420px;top:-180px;right:-120px}.aurora .a2{background:var(--led);opacity:.12;width:420px;height:380px;top:60px;right:280px}.aurora.aurora-quiet span{opacity:.12}.aurora.aurora-quiet .a2{opacity:.08}a{color:inherit;text-decoration:none}.wrap{max-width:var(--max);z-index:1;margin:0 auto;padding:0 32px;position:relative}code,.mono{font-family:IBM Plex Mono,monospace}.bracketed{position:relative}.bracketed:before,.bracketed:after,.bracketed .bl,.bracketed .br{content:"";border-color:var(--copper);opacity:.85;border-style:solid;width:14px;height:14px;position:absolute}.bracketed:before{border-width:2px 0 0 2px;top:-1px;left:-1px}.bracketed:after{border-width:2px 2px 0 0;top:-1px;right:-1px}.bracketed .bl{border-width:0 0 2px 2px;bottom:-1px;left:-1px}.bracketed .br{border-width:0 2px 2px 0;bottom:-1px;right:-1px}header{z-index:20;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);background:#0f1613e0;position:sticky;top:0}nav{max-width:var(--max);justify-content:space-between;align-items:center;margin:0 auto;padding:20px 32px;display:flex}.brand{letter-spacing:.02em;align-items:center;gap:10px;font-family:IBM Plex Mono,monospace;font-size:15px;font-weight:600;display:flex}.brand .dot{background:var(--led);border-radius:50%;width:7px;height:7px;box-shadow:0 0 8px 1px #7fd1a099}.navlinks{color:var(--text-muted);gap:36px;font-size:14.5px;display:flex}.navlinks a{transition:color .15s}.navlinks a:hover{color:var(--copper-bright)}.navstatus{color:var(--text-dim);align-items:center;gap:8px;font-family:IBM Plex Mono,monospace;font-size:12.5px;display:flex}@media (width<=720px){.navlinks{display:none}}.hero{border-bottom:1px solid var(--line);padding:96px 0 88px}.hero-grid{grid-template-columns:1.35fr .85fr;align-items:start;gap:64px;display:grid}@media (width<=860px){.hero-grid{grid-template-columns:1fr}}.kicker{color:var(--copper);align-items:center;gap:10px;margin-bottom:20px;font-family:IBM Plex Mono,monospace;font-size:13px;display:flex}.kicker .rule{background:var(--copper);width:28px;height:1px;display:inline-block}h1{letter-spacing:-.02em;max-width:12ch;font-size:clamp(38px,5.2vw,60px);font-weight:700;line-height:1.06}.role-line{color:var(--text-muted);max-width:44ch;margin-top:18px;font-size:18px}.bio{color:var(--text-muted);max-width:56ch;margin-top:22px;font-size:16px}.cta-row{flex-wrap:wrap;gap:14px;margin-top:34px;display:flex}.btn{border-radius:2px;align-items:center;gap:8px;padding:12px 22px;font-size:14.5px;font-weight:500;transition:all .15s;display:inline-flex}.btn-primary{background:var(--copper);color:#0f1613;font-weight:600}.btn-primary:hover{background:var(--copper-bright)}.btn-ghost{border:1px solid var(--line);color:var(--text)}.btn-ghost:hover{border-color:var(--copper);color:var(--copper-bright)}.bento-cluster{grid-template-columns:1fr 1fr;grid-auto-rows:auto;gap:14px;margin-top:8px;display:grid}.bento-tile{background:var(--bg-raised);border:1px solid var(--line);will-change:transform;transition:box-shadow .18s,border-color .18s;box-shadow:0 1px 2px #00000059,4px 4px #c8823f1a}.bento-tile:hover{border-color:var(--copper);box-shadow:0 16px 26px -10px #00000080,6px 6px #c8823f38}.spec-panel{transform-origin:50%;animation:5s ease-in-out infinite profileFloat,4s ease-in-out infinite profileGlow}@keyframes profileFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes profileGlow{0%,to{box-shadow:0 1px 2px #00000059,4px 4px #c8823f1a}50%{box-shadow:0 10px 28px -14px #c8823f8c,0 0 22px #c8823f1a,4px 4px #c8823f33}}.spec-panel{grid-column:1/-1;padding:26px 24px}.spec-title{color:var(--text-dim);text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--line-soft);margin-bottom:18px;padding-bottom:14px;font-family:IBM Plex Mono,monospace;font-size:11.5px}.spec-row{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:baseline;padding:11px 0;font-size:14px;display:flex}.spec-row:last-child{border-bottom:none}.spec-label{color:var(--text-muted)}.spec-value{color:var(--text);font-family:IBM Plex Mono,monospace;font-weight:500}.spec-value.copper{color:var(--copper-bright)}#skills,#experience{position:relative}section{border-bottom:1px solid var(--line);padding:72px 0}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:42px;display:flex}.section-head h2{letter-spacing:-.01em;font-size:28px;font-weight:600}.section-note{color:var(--text-dim);text-align:right;max-width:34ch;font-size:14px}@media (width<=640px){.section-note{text-align:left}}.projects-grid{z-index:1;perspective:1200px;scroll-snap-type:x proximity;scrollbar-width:thin;scrollbar-color:var(--line) transparent;align-items:stretch;gap:20px;width:100vw;max-width:none;margin-left:calc(50% - 50vw);padding:0 32px 10px;display:flex;position:relative;overflow:auto visible}.projects-grid::-webkit-scrollbar{height:7px}.projects-grid::-webkit-scrollbar-track{background:0 0}.projects-grid::-webkit-scrollbar-thumb{background:var(--line);border-radius:10px}.project{scroll-snap-align:start;flex:0 0 min(390px,82vw);height:500px;overflow:hidden}.project p{-webkit-line-clamp:4;line-clamp:4;text-overflow:ellipsis;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.proj-xl,.proj-wide,.proj-tall{grid-area:auto}.proj-tall .project-thumb,.proj-xl .project-thumb{aspect-ratio:4/3;object-fit:cover}.project-thumb{aspect-ratio:4/3;object-fit:cover;border:1px solid var(--line);filter:saturate(.85)contrast(1.02);width:100%;margin-bottom:20px}.project{background:var(--bg-raised);border:1px solid var(--line);will-change:transform;flex-direction:column;flex:none;width:100%;min-width:280px;max-width:390px;height:480px;padding:26px;transition:box-shadow .18s,border-color .18s;display:flex;position:relative;box-shadow:0 1px 2px #00000059,5px 5px #c8823f1a}.project:hover{border-color:var(--copper);box-shadow:0 18px 30px -12px #0000008c,8px 8px #c8823f3d}.project-id{color:var(--bg);background:var(--copper);letter-spacing:.02em;padding:4px 9px;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:600;position:absolute;top:-1px;right:-1px}.project-thumb{object-fit:cover;border:1px solid var(--line);filter:saturate(.85)contrast(1.02);flex-shrink:0;width:100%;height:180px;margin-bottom:16px}.proj-tall .project-thumb,.proj-xl .project-thumb{aspect-ratio:auto;flex:1;min-height:180px}.project h3{margin-bottom:8px;font-size:19px;font-weight:600}.proj-xl h3{font-size:23px}.project p{color:var(--text-muted);flex-grow:0;margin-bottom:16px;font-size:14.5px}.tags{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.tag{color:var(--text-muted);border:1px solid var(--line);padding:4px 9px;font-family:IBM Plex Mono,monospace;font-size:11.5px}.project-link{color:var(--copper);align-items:center;gap:6px;margin-top:auto;font-size:13.5px;font-weight:600;display:inline-flex}.project-link:hover{color:var(--copper-bright)}.project-link svg{width:12px;height:12px;transition:transform .15s}.project-link:hover svg{transform:translate(2px,-2px)}.skills-bento{grid-template-columns:repeat(3,1fr);align-items:stretch;gap:18px;display:grid}.skill-tier{background:var(--bg-raised);border:1px solid var(--line);will-change:transform;padding:28px;transition:box-shadow .18s,border-color .18s;box-shadow:0 1px 2px #00000059,4px 4px #c8823f14}.skill-tier:hover{border-color:var(--copper);box-shadow:0 16px 26px -10px #00000080,6px 6px #c8823f33}.tier-1,.tier-2,.tier-3{grid-area:auto}@media (width<=900px){.skills-bento{grid-template-columns:1fr}}.tier-head{flex-direction:column;align-items:flex-start;gap:4px;margin-bottom:20px;display:flex}.tier-name{font-size:17px;font-weight:600}.tier-desc{color:var(--text-dim);font-size:13.5px;line-height:1.45}.chip-row{flex-wrap:wrap;gap:10px;display:flex}.chip{border:1px solid var(--line);color:var(--text);padding:7px 14px;font-family:IBM Plex Mono,monospace;font-size:13px}.tier-1{border-color:#c8823f8c}.tier-1 .chip{color:var(--copper-bright);background:#c8823f17;border-color:#c8823fb3}.tier-2 .tier-name{color:#fff}.tier-2 .chip{color:#fff;background:#ffffff0b;border-color:#ffffff4d}.tier-3{background:linear-gradient(145deg, var(--bg-raised), #50417829)}.tier-3 .tier-name{color:#fff}.tier-3 .chip{color:#d8d8d8;background:#fff1;border-color:#ffffff52;padding:8px 15px;font-size:13.5px}.timeline{border-left:1px solid var(--line);flex-direction:column;gap:44px;padding-left:32px;display:flex}.tl-item{position:relative}.tl-item:before{content:"";background:var(--bg);border:2px solid var(--copper);border-radius:50%;width:9px;height:9px;position:absolute;top:4px;left:-37.5px}.tl-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:6px;display:flex}.tl-role{font-size:17px;font-weight:600}.tl-org{color:var(--copper-bright);margin-top:2px;font-size:14.5px}.tl-meta{color:var(--text-dim);text-align:right;font-family:IBM Plex Mono,monospace;font-size:12.5px}.tl-desc{flex-direction:column;gap:6px;margin:14px 0 16px;padding:0;list-style:none;display:flex}.tl-desc li{color:var(--text-muted);padding-left:16px;font-size:14.5px;position:relative}.tl-desc li:before{content:"—";color:var(--text-dim);position:absolute;left:0}footer{padding:64px 0 40px;position:relative;overflow:hidden}.contact-grid{grid-template-columns:1.2fr 1fr;gap:48px;display:grid}@media (width<=640px){.contact-grid{grid-template-columns:1fr}}footer h2{letter-spacing:-.01em;max-width:14ch;margin-bottom:16px;font-size:30px;font-weight:600}footer p{color:var(--text-muted);max-width:42ch;margin-bottom:24px}.email-link{color:var(--copper);border-bottom:1px solid var(--copper);padding-bottom:3px;font-family:IBM Plex Mono,monospace;font-size:19px}.email-link:hover{color:var(--copper-bright);border-color:var(--copper-bright)}.meta-list{flex-direction:column;gap:14px;font-size:14.5px;display:flex}.meta-list .row{border-bottom:1px solid var(--line-soft);justify-content:space-between;padding-bottom:12px;display:flex}.meta-list .k{color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;font-family:IBM Plex Mono,monospace;font-size:12.5px}.meta-list .v a:hover{color:var(--copper-bright)}.foot-bottom{max-width:var(--max);border-top:1px solid var(--line);color:var(--text-dim);justify-content:space-between;margin:56px auto 0;padding:20px 32px 0;font-family:IBM Plex Mono,monospace;font-size:12.5px;display:flex}@media (width<=500px){.foot-bottom{flex-direction:column;gap:8px}}.load-in{opacity:0;animation:.6s forwards riseIn;transform:translateY(10px)}.load-in.d1{animation-delay:50ms}.load-in.d2{animation-delay:.14s}.load-in.d3{animation-delay:.22s}.load-in.d4{animation-delay:.3s}@keyframes riseIn{to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.load-in{opacity:1;animation:none;transform:none}.spec-panel{animation:none}}
