:root{--metal-950:#0e0d0c;--metal-900:#141210;--metal-800:#1c1916;--metal-700:#2a2520;--espresso:#241a14;--walnut-700:#3d281b;--walnut-500:#5a3c29;--walnut-300:#a9784f;--brass:#e3a457;--brass-soft:#e3a45729;--brass-line:#e3a45761;--text-main:#efe5d6;--text-muted:#c4b5a1;--text-dim:#948470;--ok:#9fc98a;--line:#efe5d61a;--line-strong:#efe5d62e;--font-display:"Big Shoulders Display", "Arial Narrow", sans-serif;--font-body:"Schibsted Grotesk", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--ease-out:cubic-bezier(.16, 1, .3, 1);--shadow-soft:0 18px 40px -18px #000000bf, 0 2px 6px #00000059;--wood-grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='300'%3E%3Cfilter id='g' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.0016 0.045' numOctaves='5' seed='11' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.16 0 0 0 0 0.09 0 0 0 0 0.05 0 0 0 1.6 -0.45'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E");--container:1200px;--header-height:72px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;text-rendering:optimizelegibility;scrollbar-color:var(--metal-700) var(--metal-950)}body{background-color:var(--metal-900);color:var(--text-main);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:1.0625rem;line-height:1.6;overflow-x:hidden}::selection{background:var(--brass);color:var(--metal-950)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}ul,ol{list-style:none}section{position:relative}section[id]{scroll-margin-top:calc(var(--header-height) + 12px)}.wrap{max-width:var(--container);margin:0 auto;padding:0 clamp(16px,5vw,48px)}h1,h2,h3,h4,h5,h6,.font-display{font-family:var(--font-display);letter-spacing:0;text-wrap:balance;font-weight:700}.font-mono{font-family:var(--font-mono)}a:focus-visible,button:focus-visible{outline:2px solid var(--brass);outline-offset:3px;border-radius:2px}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:var(--metal-950)}::-webkit-scrollbar-thumb{background:var(--metal-700);border:2px solid var(--metal-950);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--walnut-500)}.btn{font-family:var(--font-body);cursor:pointer;transition:transform .25s var(--ease-out), background .2s ease, border-color .2s ease, color .2s ease;border:1px solid #0000;border-radius:3px;align-items:center;gap:.55rem;padding:.8rem 1.35rem;font-size:.95rem;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:var(--brass);color:var(--metal-950);box-shadow:0 8px 22px -10px #e3a4578c}.btn-primary:hover{background:#eeb470;transform:translateY(-1px)}.btn-ghost{border-color:var(--line-strong);color:var(--text-main);background:0 0}.btn-ghost:hover{border-color:var(--brass-line);color:var(--brass);transform:translateY(-1px)}.section{padding-block:clamp(88px,12vw,148px)}.section-head{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) minmax(0,34ch);align-items:end;gap:1.25rem 3rem;margin-bottom:clamp(2.5rem,5vw,4rem);padding-bottom:1.5rem;display:grid}.section-title{text-transform:uppercase;color:var(--text-main);font-size:clamp(2.75rem,7vw,5.25rem);font-weight:800;line-height:.9}.section-desc{color:var(--text-muted);font-size:1.05rem}@media (width<=760px){.section-head{grid-template-columns:1fr}}.reveal{opacity:0;transition:opacity .7s var(--ease-out), transform .7s var(--ease-out);transform:translateY(16px)}.reveal.in{opacity:1;transform:none}.header{z-index:50;height:var(--header-height);border-bottom:1px solid #0000;transition:background .3s,border-color .3s;position:fixed;inset:0 0 auto}.header-scrolled{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom-color:var(--line);background:#0e0d0ce0}.nav{justify-content:space-between;align-items:center;gap:2rem;height:100%;display:flex}.logo{text-transform:uppercase;color:var(--text-main);white-space:nowrap;align-items:center;gap:.6rem;font-size:1.5rem;font-weight:800;display:inline-flex}.nav-links{gap:1.75rem;display:flex}.nav-links a{color:var(--text-muted);padding-block:.4rem;font-size:.92rem;font-weight:500;transition:color .2s;position:relative}.nav-links a:after{content:"";background:var(--brass);transform-origin:0;height:1px;transition:transform .35s var(--ease-out);position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.nav-links a:hover,.nav-links a.active{color:var(--text-main)}.nav-links a.active:after,.nav-links a:hover:after{transform:scaleX(1)}.nav-actions{align-items:center;gap:.75rem;display:flex}.nav-cta{padding:.6rem 1.05rem;font-size:.88rem}.burger{border:1px solid var(--line-strong);color:var(--text-main);cursor:pointer;background:0 0;border-radius:3px;justify-content:center;align-items:center;width:44px;height:44px;display:none}.mobile-menu{display:none}@media (width<=960px){.nav-links,.nav-cta{display:none}.burger{display:inline-flex}.mobile-menu{top:var(--header-height);background:var(--metal-950);border-bottom:1px solid var(--line);opacity:0;visibility:hidden;transition:opacity .25s ease, transform .35s var(--ease-out), visibility .25s;flex-direction:column;padding:.5rem clamp(16px,5vw,48px) 1.25rem;display:flex;position:absolute;left:0;right:0;transform:translateY(-8px)}.mobile-menu.open{opacity:1;visibility:visible;transform:none}.mobile-menu a{font-family:var(--font-display);text-transform:uppercase;border-bottom:1px solid var(--line);color:var(--text-muted);padding:.55rem 0;font-size:1.6rem;font-weight:700}.mobile-menu a.active{color:var(--brass)}.header:has(.mobile-menu.open){background:var(--metal-950)}}.terminal{background:#100e0c;flex-direction:column;flex:1;display:flex}.terminal-bar{background:var(--metal-950);border-bottom:1px solid var(--line);justify-content:space-between;align-items:stretch;display:flex}.tname{color:var(--text-main);border-right:1px solid var(--line);box-shadow:inset 0 2px 0 var(--brass);background:#100e0c;align-items:center;gap:.45rem;padding:.6rem 1rem;font-size:.78rem;display:inline-flex}.terminal-actions{align-items:center;gap:.25rem;padding-right:.5rem;display:flex}.tbtn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:32px;height:32px;transition:color .2s,background .2s;display:flex}.tbtn:hover{color:var(--text-main);background:#ffffff0f}.terminal-body{color:var(--text-muted);flex:1;padding:clamp(1rem,2.4vw,1.75rem) clamp(.75rem,2vw,1.5rem);font-size:clamp(.78rem,1.05vw,.95rem);line-height:1.85;overflow-x:auto}.tline{white-space:pre;align-items:baseline;display:flex}.ln{color:#5a4f43;-webkit-user-select:none;user-select:none;text-align:right;font-variant-numeric:tabular-nums;min-width:1.2em;margin-right:1.25rem;font-size:.85em}.kw{color:#d98f5c;font-weight:600}.fn{color:var(--brass);font-weight:600}.str{color:#b9c98a}.key{color:#e0c9a6}.com{color:#7a6b5b;font-style:italic}.cursor{background:var(--brass);vertical-align:text-bottom;width:8px;height:1.1em;margin-left:2.45em;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}@media (width<=600px){.terminal-body{overflow-x:visible}.tline{white-space:pre-wrap}}.text-ok{color:var(--ok)}.hero{isolation:isolate;background:#0d0b09;position:relative}.hero-view{height:max(100svh,620px);position:relative;overflow:hidden}.hero-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.hero-view:after{content:"";pointer-events:none;background:linear-gradient(180deg, #0d0b09bf, transparent 18%), linear-gradient(0deg, var(--metal-900), transparent 14%);position:absolute;inset:0}.screen-ui{z-index:1;transform-origin:0 0;opacity:0;transition:opacity .8s var(--ease-out);backface-visibility:hidden;position:absolute;top:0;left:0;overflow:hidden}.is-ready .screen-ui{opacity:1}.screen-left,.screen-right{width:360px;height:640px}.screen-center{width:760px;height:428px;display:flex}.screen-left{background:radial-gradient(90% 60% at 100% 0,#e3a4571a,#0000 60%),#100e0c;flex-direction:column;justify-content:center;padding:34px 30px;display:flex}.hero-title{text-transform:uppercase;color:var(--text-main);font-size:50px;font-weight:800;line-height:.88}.hero-title span{color:var(--brass);display:block}.hero-sub{color:var(--text-muted);margin-top:18px;font-size:15.5px;line-height:1.55}.hero-actions{flex-wrap:wrap;gap:10px;margin-top:24px;display:flex}.hero-actions .btn{padding:11px 16px;font-size:14px}.hero-meta{border-top:1px solid var(--line);color:var(--text-dim);margin-top:26px;padding-top:16px;font-size:13px}.hero-meta strong{color:var(--text-main);font-weight:600}.screen-right{background:#0f0d0b;padding:30px 24px}.files-path{color:var(--text-dim);border-bottom:1px solid var(--line);padding-bottom:14px;font-size:13px}.files ul{gap:6px;margin-top:14px;display:grid}.files-item{text-align:left;width:100%;color:var(--text-main);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:3px;grid-template-columns:auto 1fr;gap:2px 12px;padding:14px 12px;transition:background .2s,border-color .2s;display:grid}.files-item svg{color:var(--brass);grid-row:span 2;margin-top:2px}.files-item:hover{background:var(--brass-soft);border-color:var(--brass-line)}.files-name{font-size:15px;font-weight:600}.files-desc{color:var(--text-dim);font-size:13px}.steam{z-index:1;pointer-events:none;width:46px;height:70px;position:absolute;top:0;left:0;overflow:visible}.steam path{stroke:#efe5d699;stroke-width:3.5px;stroke-linecap:round;filter:blur(1.8px);opacity:0;animation:6s ease-out infinite steam}.steam path:nth-child(2){animation-delay:2s}.steam path:nth-child(3){animation-delay:4s}@keyframes steam{0%{opacity:0;transform:translateY(12px)scaleX(.8)}25%{opacity:.75}to{opacity:0;transform:translateY(-36px)scaleX(1.3)}}@media (prefers-reduced-motion:reduce){.steam path{opacity:.35;animation:none}}.is-flat .steam,.is-loading .steam{display:none}.screen-tabs{left:50%;bottom:max(20px, env(safe-area-inset-bottom));z-index:3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line-strong);background:#0e0d0cd1;border-radius:999px;gap:4px;padding:4px;display:flex;position:absolute;transform:translate(-50%)}.screen-tabs button{min-height:40px;color:var(--text-muted);font:600 .82rem var(--font-body);white-space:nowrap;cursor:pointer;transition:background .25s var(--ease-out), color .25s ease;background:0 0;border:none;border-radius:999px;padding:0 14px}.screen-tabs button.is-active{background:var(--brass);color:var(--metal-950)}@media (width<=899px){.screen-center{width:440px;height:248px}.screen-center .terminal-bar .tname{padding:6px 10px;font-size:11px}.screen-center .terminal-body{padding:10px 12px;font-size:12.5px;line-height:1.55;overflow:hidden}.screen-center .tline{white-space:pre}}.is-flat .hero-view{height:auto;padding:calc(var(--header-height) + 32px) clamp(16px, 5vw, 48px) 48px;max-width:var(--container);gap:24px;margin:0 auto;display:grid}.is-flat .hero-view:after{display:none}.is-flat .screen-ui{opacity:1;border:10px solid var(--metal-950);border-radius:6px;width:auto;height:auto;position:static;transform:none!important}.is-flat .screen-right{display:none}.about{background:var(--metal-900)}.about-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start;gap:clamp(2rem,6vw,6rem);display:grid}.about-lead{text-transform:uppercase;color:var(--text-main);font-size:clamp(2rem,4.2vw,3.6rem);font-weight:700;line-height:1}.about-body{max-width:62ch;color:var(--text-muted);gap:1.1rem;display:grid}.about-body strong{color:var(--text-main);font-weight:600}.about-tags{flex-wrap:wrap;gap:.5rem;margin-top:.75rem;display:flex}.about-tags li{border:1px solid var(--brass-line);color:var(--text-main);background:var(--brass-soft);border-radius:2px;padding:.4rem .8rem;font-size:.88rem;font-weight:500}@media (width<=860px){.about-grid{grid-template-columns:1fr}}.stack{background:var(--metal-950);overflow:hidden}.stack-stage{--mx:-999px;--my:-999px;display:grid;position:relative}.stack-board{grid-area:1/1}.stack-stage:before{content:"";pointer-events:none;background:radial-gradient(260px circle at calc(var(--mx) + 80px) calc(var(--my) + 80px), #ffbe731f, transparent 70%);position:absolute;inset:-80px}.stack-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,13rem) minmax(0,1fr);align-items:baseline;gap:.75rem 2.5rem;padding-block:clamp(1.25rem,2.6vw,2rem);display:grid}.stack-row-title{font-family:var(--font-body);text-transform:none;color:var(--text-dim);font-size:.92rem;font-weight:600}.stack-row-items{flex-wrap:wrap;gap:.1rem 1.6rem;display:flex}.stack-row-items li{font-family:var(--font-display);text-transform:uppercase;color:#8c7c69;font-size:clamp(1.9rem,4.2vw,3.4rem);font-weight:700;line-height:1.05}.stack-row-items li.is-main{color:var(--brass)}.stack-board.is-lit{pointer-events:none;-webkit-mask-image:radial-gradient(220px circle at var(--mx) var(--my), #000 30%, transparent 75%);-webkit-mask-image:radial-gradient(220px circle at var(--mx) var(--my), #000 30%, transparent 75%);mask-image:radial-gradient(220px circle at var(--mx) var(--my), #000 30%, transparent 75%)}.stack-board.is-lit .stack-row{border-color:#0000}.stack-board.is-lit .stack-row-title{color:var(--text-main)}.stack-board.is-lit li{color:var(--text-main);text-shadow:0 0 24px #ffc47859}.stack-board.is-lit li.is-main{color:#ffd29a}@media (hover:none){.stack-board.is-lit,.stack-stage:before{display:none}.stack-row-items li{color:var(--text-main)}.stack-row-items li.is-main{color:var(--brass)}}@media (width<=720px){.stack-row{grid-template-columns:minmax(0,1fr)}}.experience{background:var(--metal-900)}.exp{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:clamp(2rem,6vw,5rem);display:grid}.exp-role{text-transform:uppercase;font-size:clamp(2.2rem,4.4vw,3.4rem);font-weight:800;line-height:.92}.exp-org{color:var(--text-muted);margin-top:.6rem}.exp-org strong{color:var(--brass);font-weight:600}.exp-date{color:var(--text-dim);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-top:.4rem;font-size:.92rem;display:flex}.exp-status{color:var(--ok);align-items:center;gap:.45rem;display:inline-flex}.exp-pulse{background:var(--ok);border-radius:50%;width:8px;height:8px;animation:2.4s ease-out infinite exp-pulse}@keyframes exp-pulse{0%{box-shadow:0 0 #9fc98a8c}to{box-shadow:0 0 0 9px #9fc98a00}}.exp-links{flex-wrap:wrap;gap:.5rem;margin-top:1.5rem;display:flex}.exp-summary{color:var(--text-main);font-size:clamp(1.15rem,1.6vw,1.35rem);line-height:1.45}.exp-facts{gap:1.25rem;margin-top:1.75rem;display:grid}.exp-facts>div{border-top:1px solid var(--line);grid-template-columns:6.5rem minmax(0,1fr);gap:1rem;padding-top:1.25rem;display:grid}.exp-facts dt{color:var(--brass);font-size:.88rem;font-weight:600}.exp-done{color:var(--text-muted);gap:.35rem;display:grid}.exp-stack{color:var(--text-muted)}@media (width<=860px){.exp{grid-template-columns:minmax(0,1fr)}.exp-facts>div{grid-template-columns:minmax(0,1fr);gap:.4rem}}.projects{background:radial-gradient(70% 40% at 20% 0%, #e3a45712, transparent 70%), var(--espresso)}.proj-list{gap:clamp(4rem,9vw,7rem);display:grid}.proj{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:center;gap:clamp(2rem,5vw,4.5rem);display:grid}.proj:nth-child(2n) .shot{order:2}.shot{aspect-ratio:16/10;border:10px solid var(--metal-950);box-shadow:var(--shadow-soft), 0 0 0 1px #0009;background:#0f0d0b;border-bottom-width:16px;border-radius:6px;overflow:hidden}.shot img{object-fit:cover;object-position:top;width:100%;height:100%}.shot-pending{text-align:center;color:var(--text-dim);border:1px dashed #e3a45759;border-radius:2px;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;height:calc(100% - 20px);margin:10px;padding:1rem;display:flex}.shot-pending span{color:var(--text-muted);font-weight:600}.shot-pending code{font-family:var(--font-mono);color:var(--brass);font-size:.78rem}.proj-category{color:var(--brass);margin-top:.6rem;font-size:.9rem;font-weight:600}.proj-name{text-transform:uppercase;font-size:clamp(2.6rem,5vw,4rem);font-weight:800;line-height:.9}.proj-summary{color:var(--text-main);max-width:52ch;margin-top:1rem;font-size:1.08rem}.proj-points{gap:.55rem;margin-top:1.25rem;display:grid}.proj-points li{color:var(--text-muted);padding-left:1.2rem;font-size:.97rem;position:relative}.proj-points li:before{content:"";background:var(--brass);width:6px;height:1px;position:absolute;top:.68em;left:0}.proj-stack{flex-wrap:wrap;gap:.4rem;margin-top:1.4rem;display:flex}.proj-stack li{border:1px solid var(--line-strong);color:var(--text-muted);border-radius:2px;padding:.25rem .55rem;font-size:.82rem;font-weight:500}.proj-links{flex-wrap:wrap;gap:.6rem;margin-top:1.6rem;display:flex}.proof-link{border:1px solid var(--brass-line);min-height:44px;color:var(--text-main);border-radius:3px;align-items:center;gap:.4rem;padding:.6rem 1rem;font-size:.92rem;font-weight:600;transition:background .2s,color .2s,border-color .2s;display:inline-flex}a.proof-link:hover{background:var(--brass);border-color:var(--brass);color:var(--metal-950)}.proof-link.is-pending{border-style:dashed;border-color:var(--line-strong);color:var(--text-dim);cursor:not-allowed}@media (width<=860px){.proj{grid-template-columns:1fr}.proj:nth-child(2n) .shot{order:0}}.education{background:var(--metal-900);padding-top:clamp(64px,8vw,104px)}.edu-layout{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);align-items:start;gap:1.5rem clamp(2rem,6vw,5rem);display:grid}.edu{border-top:1px solid var(--brass-line);padding-top:.6rem}.edu-date{color:var(--brass);font-size:.9rem;font-weight:600}.edu-name{text-transform:uppercase;margin-top:.9rem;font-size:clamp(1.9rem,3.6vw,2.9rem);font-weight:800;line-height:.95}.edu-org{color:var(--text-main);margin-top:.75rem;font-weight:500}.edu-details{max-width:56ch;color:var(--text-muted);margin-top:.5rem}@media (width<=760px){.edu-layout{grid-template-columns:minmax(0,1fr)}}.footer{border-top:1px solid var(--line);color:var(--text-dim);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem;margin-top:clamp(4rem,9vw,7rem);padding-block:1.75rem;font-size:.85rem;display:flex}.footer-left{flex-direction:column;gap:.2rem;display:flex}.back-top-btn{border:1px solid var(--line-strong);min-height:44px;color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border-radius:3px;align-items:center;gap:.5rem;padding:.5rem .9rem;transition:color .2s,border-color .2s;display:inline-flex}.back-top-btn:hover{color:var(--brass);border-color:var(--brass-line)}.contact{background:var(--espresso);isolation:isolate;padding-bottom:0;overflow:hidden}.contact-glow{z-index:-1;pointer-events:none;background:radial-gradient(45% 55% at 50% 30%,#ffbe7333,#e3a4570d 45%,#0000 72%);height:90%;position:absolute;inset:-20% -10% auto}.contact-header{max-width:900px}.contact-title{text-transform:uppercase;font-size:clamp(3rem,8vw,6rem);font-weight:800;line-height:.9}.contact-title .accent{color:var(--brass)}.contact-sub{max-width:52ch;color:var(--text-muted);margin-top:1.25rem;font-size:1.1rem}.contact-list{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(1.5rem,4vw,3.5rem);margin-top:clamp(2.5rem,6vw,4.5rem);display:grid}.contact-row{border-bottom:1px solid var(--line);grid-template-columns:auto minmax(0,11.5rem) minmax(0,1fr) auto;align-items:center;gap:1rem;min-height:64px;padding-block:1.1rem;transition:color .2s;display:grid;position:relative}.contact-icon{color:var(--brass)}.contact-label{color:var(--text-dim);font-size:.88rem}.contact-val{color:var(--text-main);overflow-wrap:anywhere;font-weight:600;transition:color .2s}.contact-trail{color:var(--text-dim)}.contact-row:hover .contact-val{color:var(--brass)}.copied-toast{color:var(--ok);font-size:.78rem;position:absolute;bottom:-.2rem;right:0}@media (width<=760px){.contact-list{grid-template-columns:1fr}.contact-row{grid-template-columns:auto minmax(0,1fr) auto;row-gap:.1rem}.contact-label{grid-column:2}.contact-val{grid-area:2/2}.contact-trail,.contact-row .text-ok{grid-area:1/3/span 2}}
