:root{--ink:#0d0d0e;--paper:#f3f0e9;--muted:#96928b;--line:#f3f0e924;--orange:#ef6b2f;--orange-soft:#f5a06c;--panel:#171719;--green:#8fc29a;--serif:"Playfair Display",Georgia,serif;--sans:"DM Sans",Arial,sans-serif;--mono:"DM Mono",monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--ink);color:var(--paper);font-family:var(--sans);margin:0}a{color:inherit;text-decoration:none}button{font:inherit}.portfolio-shell{background:radial-gradient(circle at var(--spot-x,50%) var(--spot-y,50%),#ef6b2f14,transparent 25rem),var(--ink);min-height:100vh;transition:background .3s;overflow:hidden}.portfolio-shell:before{content:"";pointer-events:none;opacity:.045;background-image:linear-gradient(#ffffff59 1px,#0000 1px),linear-gradient(90deg,#ffffff59 1px,#0000 1px);background-size:56px 56px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 80%);mask-image:linear-gradient(#000,#0000 80%)}.top-nav{border-bottom:1px solid var(--line);z-index:5;justify-content:space-between;align-items:center;height:86px;padding:0 5vw;display:flex;position:relative}.brand{font-family:var(--mono);letter-spacing:.12em;align-items:center;gap:10px;font-size:11px;line-height:1.35;display:flex}.brand b{color:var(--orange-soft);font-weight:500}.brand-mark{border:1px solid var(--orange);width:31px;height:31px;color:var(--orange);border-radius:50%;place-items:center;display:grid}.nav-status{font:11px var(--mono);color:var(--muted);align-items:center;gap:8px;display:flex}.status-dot,.filter-pulse{background:var(--green);border-radius:50%;width:6px;height:6px;animation:2s infinite pulse;box-shadow:0 0 0 5px #8fc29a14}.nav-links{color:var(--muted);gap:28px;font-size:13px;display:flex}.nav-links a:hover{color:var(--paper)}.menu-button{color:var(--paper);background:0 0;border:0;display:none}.hero{grid-template-columns:1fr .9fr;align-items:center;gap:5vw;max-width:1240px;min-height:calc(100vh - 86px);margin:auto;padding:9vw 5vw 8vw;display:grid}.eyebrow{color:var(--orange-soft);font:11px var(--mono);letter-spacing:.14em;margin:0 0 24px}.eyebrow-line{background:var(--orange);vertical-align:middle;width:30px;height:1px;margin-right:8px;display:inline-block}.hero h1,.section-heading h2,.availability h2{font:600 clamp(3.5rem,8vw,7.8rem)/.92 var(--serif);letter-spacing:-.06em;margin:0}.hero h1 em,.section-heading h2 em,.availability h2 em{color:var(--orange-soft);font-style:italic}.hero-text{color:var(--muted);max-width:400px;margin:28px 0;font-size:15px;line-height:1.7}.hero-actions{align-items:center;gap:25px;display:flex}.primary-cta{background:var(--orange);color:#160d09;font:12px var(--mono);border-radius:3px;align-items:center;gap:12px;padding:14px 18px;transition:transform .25s,background .25s;display:inline-flex}.primary-cta:hover{background:var(--orange-soft);transform:translateY(-3px)}.text-link{font:12px var(--mono);border-bottom:1px solid var(--line);padding-bottom:5px}.hero-stats{gap:35px;margin-top:75px;display:flex}.hero-stats span{flex-direction:column;gap:5px;display:flex}.hero-stats b{font:22px var(--mono);color:var(--paper)}.hero-stats small{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:10px}.hero-visual{place-items:center;min-height:560px;display:grid;position:relative}.hero-image-wrap{aspect-ratio:.77;z-index:2;border:1px solid #ef6b2f8c;width:min(74%,390px);padding:10px;position:relative;box-shadow:22px 22px #ef6b2f1f}.hero-image-wrap:after{content:"";pointer-events:none;background:linear-gradient(135deg,#0000 60%,#ef6b2f33);position:absolute;inset:10px}.hero-image-wrap img{object-fit:cover;object-position:center top;filter:saturate(.9)contrast(1.04);width:100%;height:100%;display:block}.image-label{color:var(--paper);font:10px/1.6 var(--mono);z-index:1;position:absolute;bottom:20px;left:24px}.hero-orbit{aspect-ratio:1;width:70%;color:var(--muted);font:10px var(--mono);border:1px dashed #ef6b2f47;border-radius:50%;place-items:center;animation:24s linear infinite spin;display:grid;position:absolute}.hero-orbit:before,.hero-orbit:after{content:"";background:var(--orange);width:7px;height:7px;box-shadow:0 0 20px var(--orange);border-radius:50%;position:absolute;top:8%;left:22%}.hero-orbit:after{background:var(--paper);box-shadow:none;inset:auto 10% 15% auto}.orbit-ring{border:1px solid #f3f0e91a;border-radius:50%;width:76%;height:76%}.orbit-cross{font:32px var(--serif);color:var(--orange);position:absolute}.code-window{border:1px solid var(--line);z-index:3;background:#171719f0;width:260px;padding:12px;animation:5s ease-in-out infinite float;position:absolute;bottom:5%;right:0;box-shadow:0 18px 50px #00000059}.code-window-bar{border-bottom:1px solid var(--line);color:var(--muted);align-items:center;gap:8px;padding-bottom:10px;display:flex}.code-window-bar span{gap:4px;display:flex}.code-window-bar i{background:var(--orange);border-radius:50%;width:6px;height:6px}.code-window-bar i:nth-child(2){background:#b6a16c}.code-window-bar i:nth-child(3){background:#779b7b}.code-window-bar small{font:9px var(--mono);flex:1}.code-window pre{font:10px/1.8 var(--mono);white-space:pre-wrap;margin:12px 0 0}.code-muted{color:#5f5b57}.code-purple{color:#c59de8}.code-blue{color:#87b9dc}.code-green{color:#a9ce9b}.code-orange{color:var(--orange-soft)}.code-cursor{background:var(--orange);width:6px;height:14px;margin-left:4px;animation:1s steps(2,end) infinite blink;display:inline-block}.hero-index{color:var(--muted);font:10px var(--mono);letter-spacing:.1em;align-items:center;gap:8px;display:flex;position:absolute;bottom:0;left:0}.intro-strip,.stack-strip,.work-section,.availability,footer{max-width:1240px;margin:auto;padding-left:5vw;padding-right:5vw}.intro-strip{border-top:1px solid var(--line);grid-template-columns:.8fr 1.5fr .7fr;gap:5vw;padding-top:8vw;padding-bottom:8vw;display:grid}.intro-copy{font:clamp(2rem,4vw,4.4rem)/1.05 var(--serif);letter-spacing:-.04em;max-width:700px;margin:0}.intro-aside{font:11px var(--mono);color:var(--muted);align-content:center;gap:12px;display:grid}.intro-aside p{align-items:center;gap:8px;display:flex}.stack-strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--muted);font:10px var(--mono);justify-content:space-between;gap:20px;padding-top:22px;padding-bottom:22px;display:flex}.stack-strip div{color:var(--paper);flex-wrap:wrap;gap:28px;display:flex}.work-section{padding-top:11vw;padding-bottom:11vw}.section-heading{justify-content:space-between;align-items:end;margin-bottom:5vw;display:flex}.section-heading h2{font-size:clamp(3rem,6vw,6.3rem)}.section-note{color:var(--muted);font:12px/1.7 var(--mono);text-align:right}.filter-row{gap:9px;margin-bottom:30px;display:flex}.filter{border:1px solid var(--line);color:var(--muted);font:10px var(--mono);cursor:pointer;background:0 0;align-items:center;gap:8px;padding:9px 12px;transition:all .25s;display:flex}.filter:hover,.active-filter{color:var(--paper);border-color:var(--orange);background:#ef6b2f14}.filter-pulse{background:var(--orange)}.project-list{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.project-card{border:1px solid var(--line);background:var(--panel);transform-style:preserve-3d;transition:border-color .3s}.project-card:hover{border-color:#ef6b2fa6}.project-visual{background:#24262b;height:280px;padding:24px;position:relative;overflow:hidden}.project-orange{background:linear-gradient(135deg,#422518,#b96232)}.project-blue{background:linear-gradient(135deg,#182a35,#587f86)}.project-red{background:linear-gradient(135deg,#301b1d,#934b3e)}.visual-grid{opacity:.25;transform-origin:bottom;background-image:linear-gradient(#ffffff47 1px,#0000 1px),linear-gradient(90deg,#ffffff47 1px,#0000 1px);background-size:25px 25px;position:absolute;inset:0;transform:perspective(300px)rotateX(55deg)scale(1.5)}.visual-window{background:#0c0c0cb3;border:1px solid #ffffff59;width:72%;height:62%;transition:transform .3s;position:absolute;top:18%;left:14%;transform:rotate(-5deg);box-shadow:18px 20px #00000024}.project-card:hover .visual-window{transform:rotate(0)translateY(-6px)scale(1.03)}.visual-toolbar{border-bottom:1px solid #ffffff26;gap:4px;padding:8px;display:flex}.visual-toolbar span{background:var(--orange);border-radius:50%;width:5px;height:5px}.visual-toolbar span:nth-child(2){background:#c3a05b}.visual-toolbar span:nth-child(3){background:#83a783}.visual-body{height:calc(100% - 22px);display:flex}.visual-sidebar{border-right:1px solid #ffffff1a;width:22%}.visual-content{flex:1;padding:14px}.visual-content i,.visual-content b{background:#fff6;height:7px;margin-bottom:9px;display:block}.visual-content i:nth-child(2){width:70%}.visual-content i:nth-child(3){width:45%}.visual-content b{background:#ef6b2fa6;height:35px;margin-top:20px}.visual-tag{font:9px var(--mono);color:#fff;position:absolute;bottom:17px;left:20px}.visual-corner{color:#fff;position:absolute;top:18px;right:19px}.project-info{padding:20px}.project-meta{color:var(--muted);font:9px var(--mono);justify-content:space-between;margin-bottom:30px;display:flex}.project-title{justify-content:space-between;gap:12px;display:flex}.project-title h3{font:28px var(--serif);margin:0 0 8px}.project-title p{color:var(--muted);margin:0 0 15px;font-size:12px;line-height:1.6}.stack-tags{flex-wrap:wrap;gap:6px;display:flex}.stack-tags small{font:9px var(--mono);border:1px solid var(--line);color:var(--muted);padding:4px 6px}.availability{border-top:1px solid var(--line);grid-template-columns:.8fr 1.5fr;padding-top:8vw;padding-bottom:10vw;display:grid}.availability h2{font-size:clamp(3rem,6vw,6.2rem)}.availability p:not(.eyebrow){color:var(--muted);max-width:420px;margin:28px 0;font-size:14px;line-height:1.7}.availability .primary-cta{margin-top:10px}footer{border-top:1px solid var(--line);padding-top:50px;padding-bottom:25px}.footer-top{justify-content:space-between;gap:40px;display:flex}.footer-location{color:var(--muted);font:10px var(--mono);align-items:center;gap:8px;margin-top:20px;display:flex}.footer-contact{gap:15px;min-width:270px;display:grid}.footer-contact .eyebrow{margin:0}.footer-contact a{border-bottom:1px solid var(--line);font:12px var(--mono);justify-content:space-between;padding-bottom:10px;display:flex}.footer-bottom{border-top:1px solid var(--line);color:var(--muted);font:10px var(--mono);justify-content:space-between;align-items:center;margin-top:60px;padding-top:18px;display:flex}.social-links{gap:9px;display:flex}.social-links a{border:1px solid var(--line);place-items:center;width:29px;height:29px;display:grid}.social-links a:hover{color:var(--orange);border-color:var(--orange)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes float{50%{transform:translateY(-10px)}}@keyframes blink{50%{opacity:0}}@keyframes pulse{50%{box-shadow:0 0 0 7px #8fc29a05}}@media (max-width:800px){.top-nav{height:72px;padding:0 6vw}.nav-status{display:none}.menu-button{display:block}.nav-links{background:var(--panel);border-bottom:1px solid var(--line);flex-direction:column;gap:20px;padding:25px 6vw;display:none;position:absolute;top:72px;left:0;right:0}.nav-links.nav-open{display:flex}.hero{padding:17vw 6vw 22vw;display:block}.hero h1{font-size:clamp(3.2rem,15vw,5.5rem)}.hero-stats{gap:20px;margin-top:45px}.hero-visual{min-height:470px;margin-top:50px}.hero-image-wrap{width:82%;margin-inline:auto}.code-window{z-index:1;width:220px;bottom:6%;right:-18%;transform:rotate(2deg)}@media (max-width:680px){.hero-image-wrap{width:76%;margin-inline:0 0 auto}.code-window{width:190px;bottom:4%;right:-7%;transform:rotate(1deg)}}.intro-strip{padding:22vw 6vw;display:block}.intro-copy{margin:35px 0}.intro-aside{grid-template-columns:1fr 1fr;display:grid}.stack-strip{padding:20px 6vw;display:block}.stack-strip div{gap:16px;margin-top:20px}.work-section{padding:22vw 6vw}.section-heading{margin-bottom:40px;display:block}.section-note{text-align:left;margin-top:25px}.project-list{grid-template-columns:1fr}.project-visual{height:240px}.availability{padding:22vw 6vw;display:block}.availability h2{margin-top:35px}.footer-top{display:block}.footer-contact{margin-top:55px}.footer-bottom{line-height:1.7;display:block}.social-links{margin-top:20px}.footer-brand{display:inline-flex}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
