/* Shared portfolio identity. Page-specific layouts remain in their documents. */
:root{--bg:#141512;--bg2:#1c1d19;--bg3:#24251f;--card:#1c1d19;--text:#eeeae0;--muted:#a6a69a;--accent:#ff7847;--accent2:#c9cbb2;--yellow:#ff7847;--mint:#c9cbb2;--border:#ffffff20;--border2:#ffffff38;--line:#ffffff20;--sans:'DM Sans',Arial,sans-serif;--mono:'DM Mono',monospace}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:105px}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.65 var(--sans);overflow-x:hidden}a{color:inherit}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}::selection{background:var(--accent);color:var(--bg)}:focus-visible{outline:2px solid var(--accent)!important;outline-offset:5px}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--sans);letter-spacing:-.055em}a{text-underline-offset:5px}.skip-link{position:fixed;top:-80px;left:20px;z-index:300;background:var(--accent);color:#141512;padding:10px 20px}.skip-link:focus{top:12px}#top{position:absolute;top:0}.site-nav{position:relative;inset:auto;z-index:30;max-width:none;height:94px;padding:0 5%;display:flex;align-items:center;gap:27px;justify-content:space-between;background:var(--bg);border-bottom:1px solid var(--border);backdrop-filter:none}.brand{font:bold 40px/.9 var(--sans);letter-spacing:-6px;text-decoration:none;display:flex;align-items:center;color:var(--text)}.brand span{color:var(--accent)}.brand i{font:11px var(--mono);letter-spacing:0;margin:-20px 0 0 8px}.nav-note{font:9px var(--mono);letter-spacing:.09em;color:var(--muted);margin-right:auto}.site-links{list-style:none;display:flex;align-items:center;gap:27px;padding:0;margin:0}.site-links a{font:12px var(--sans);color:var(--muted);text-decoration:none;white-space:nowrap}.site-links a:hover,.site-links a[aria-current]{color:var(--text)}.site-links a[aria-current]::before{content:'•';color:var(--accent);margin-right:6px}.site-links li:last-child a{border:1px solid var(--border2);padding:10px 16px;border-radius:3px;color:var(--text)}.menu-toggle{display:none}.site-footer{background:var(--bg);padding:35px 5%;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:25px;color:var(--muted);font:11px/1.8 var(--mono)}.site-footer a{text-decoration:none}.footer-name{color:var(--text);font:600 14px var(--sans)}.footer-name span{display:block;font:11px var(--mono);color:var(--muted);margin-top:8px}.site-footer>a:last-child{color:var(--text)}
.home-main{max-width:1440px;padding:0 5%;margin:auto}.intro-hero{padding-top:37px}.hero-topline,.hero-bottom{display:flex;justify-content:space-between;gap:20px;font:10px var(--mono);letter-spacing:.08em;color:var(--muted)}.hero-topline>span:first-child{color:var(--text)}.status-dot{display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%;margin:0 9px 1px 0}.hero-layout{display:grid;grid-template-columns:1.2fr 1fr;gap:6%;padding:62px 0 57px;align-items:center}.hero-kicker{font:11px var(--mono);color:var(--muted);margin-bottom:20px}.intro-hero h1{font-size:clamp(58px,6.4vw,92px);font-weight:500;line-height:.98;letter-spacing:-.065em}.intro-hero h1 em{font-style:normal;color:var(--accent)}.asterisk{display:inline-block;color:var(--accent);font-size:.7em;vertical-align:top;margin-left:6px}.hero-description{max-width:435px;color:var(--muted);font-size:14px;line-height:1.8;margin:27px 0}.hero-actions{display:flex;align-items:center;gap:28px}.action-primary{display:inline-flex;justify-content:space-between;align-items:center;gap:35px;padding:15px 20px;border:1px solid var(--accent);background:var(--accent);color:#141512;font-size:12px;font-weight:600;text-decoration:none;border-radius:3px;transition:background .2s,transform .2s}.action-primary:hover{background:#ff946c;transform:translateY(-2px)}.action-primary span{font-size:19px}.text-link{font-size:12px;text-decoration:none;border-bottom:1px solid var(--border2);padding-bottom:5px;display:inline-block}.text-link:hover{color:var(--accent);border-color:var(--accent)}.bench{transform:rotate(2deg);border:1px solid #686a56;background:#20221c;position:relative;margin-top:3px}.bench-label{display:flex;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid #ffffff20;font:9px var(--mono);letter-spacing:.08em;color:#c9cbb2}.live-label{color:var(--accent)}.bench-visual{height:310px;background-color:#24271f;background-image:linear-gradient(#ffffff08 1px,transparent 1px),linear-gradient(90deg,#ffffff08 1px,transparent 1px);background-size:25px 25px;position:relative;padding:20px;display:flex;justify-content:center;align-items:center}.bench-visual video{width:100%;height:100%;object-fit:contain}.axis{position:absolute;font:10px var(--mono);color:#c9cbb2;pointer-events:none}.axis-x{right:12px;bottom:10px}.axis-y{top:10px;left:10px}.bench-caption{border-top:1px solid #ffffff20;padding:17px 20px;display:flex;justify-content:space-between;align-items:center}.micro{font:9px/1.5 var(--mono);letter-spacing:.1em;color:var(--muted)}.bench-caption h2{font-size:19px;font-weight:500;margin-top:4px;letter-spacing:-.035em}.bench-caption>a{font:27px var(--sans);text-decoration:none;color:var(--accent)}.bench-note{position:absolute;top:calc(100% + 14px);font:10px var(--mono);color:var(--muted);width:100%;text-align:center}.hero-bottom{border-top:1px solid var(--border);padding:20px 0;font-size:8px}.hero-bottom a{color:var(--muted);text-decoration:none}.work-section{padding:75px 0 60px}.section-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:28px;gap:20px}.section-heading h2{font-size:42px;line-height:1.2;font-weight:500;margin-top:10px}.featured-grid{display:grid;grid-template-columns:1fr 1fr;gap:27px}.work-card{text-decoration:none;min-width:0}.work-image{height:310px;position:relative;background:#252821;overflow:hidden;border:1px solid var(--border)}.work-image img,.work-image video{width:100%;height:100%;object-fit:cover;transition:transform .35s}.work-card:hover .work-image img,.work-card:hover .work-image video{transform:scale(1.035)}.image-number{position:absolute;top:16px;left:16px;background:#141512dd;color:var(--text);font:9px var(--mono);padding:7px 10px}.card-arrow{position:absolute;right:15px;bottom:15px;border-radius:50%;background:var(--text);color:var(--bg);width:37px;height:37px;display:grid;place-items:center;font-size:22px}.work-copy{padding:20px 0 23px}.work-copy>.micro{color:var(--accent)}.work-copy h3{font-size:24px;font-weight:500;margin:8px 0}.work-copy p{font-size:13px;line-height:1.8;color:var(--muted);max-width:470px}.work-title{display:block;font:10px var(--mono);margin-top:17px;color:var(--text)}.research-strip{display:flex;align-items:center;gap:28px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:29px 0;margin-top:16px;text-decoration:none}.research-symbol{color:var(--accent);font-size:55px;line-height:1}.research-strip h3{font-size:23px;font-weight:500;letter-spacing:-.035em;margin:4px 0}.research-strip p{color:var(--muted);font-size:12px}.strip-arrow{margin-left:auto;font-size:30px;color:var(--accent)}.about-section{display:grid;grid-template-columns:1fr 1fr;gap:8%;padding:42px 0 70px}.about-section h2{font-size:48px;font-weight:500;line-height:1.1;margin-top:19px}.about-section h2 em{font-family:Georgia,serif;color:var(--accent);font-weight:400}.about-copy{padding-top:5px}.about-copy p{font-size:14px;color:var(--muted);margin-bottom:20px}.about-copy p:first-child{font-size:18px;color:var(--text);line-height:1.65}.about-copy .aside-note{font:11px/1.9 var(--mono);padding-left:17px;border-left:2px solid var(--accent)}.toolbox{padding:23px 0;display:flex;align-items:center;gap:45px;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.toolbox>div{display:flex;gap:27px;flex-wrap:wrap;font-size:12px;color:var(--text)}.contact-cta{padding:78px 0 83px}.contact-cta h2{font-size:clamp(32px,4.3vw,61px);font-weight:500;line-height:1.13;margin:18px 0 28px}.contact-cta h2 em{font-style:normal;color:var(--muted)}.contact-cta>div{display:flex;justify-content:space-between;align-items:center;gap:25px}.contact-cta p{font-size:13px;color:var(--muted)}
/* Carry the same typography and controls through the existing project archive. */
body:not(.home) main,body:not(.home) .page{max-width:1250px;padding:65px 5% 80px;margin:auto;min-height:65vh}body:not(.home) h1,body:not(.home) .section-title{font:500 clamp(38px,5vw,66px)/1.05 var(--sans);letter-spacing:-.055em}body:not(.home) h2{font-family:var(--sans);letter-spacing:-.035em}.section-num,.num{color:var(--accent)}.section-header{margin-bottom:35px}.intro{font-size:15px;line-height:1.8;max-width:680px}.project,.empty,.game,.research-card,.contact-link{border-radius:4px}.project h2{font-size:25px;line-height:1.15}.project:hover,.project:focus-visible{border-color:var(--accent)}.hint{color:#dedfca}.project .eyebrow{color:#ffad8c}.modal{z-index:100}.panel{border-radius:5px}.panel h2{font-size:34px}.thumb.active{border-color:var(--accent)}.empty strong{font:500 25px var(--sans);letter-spacing:-.04em}.btn{border-radius:3px}.btn-primary{background:var(--accent);color:var(--bg)}.btn-primary:hover{background:#ff946c}.game h2{font-size:25px}.contact-link:hover{border-color:var(--accent)}.fade,.fade2,.fade3{animation:none}
@media(min-width:1500px){.site-nav,.site-footer{padding-left:max(5%,calc((100% - 1296px)/2));padding-right:max(5%,calc((100% - 1296px)/2))}}
@media(max-width:1000px){.nav-note{display:none}.site-links{gap:20px}.hero-layout{gap:4%}.bench-visual{height:270px}.hero-description{font-size:13px}.hero-bottom{font-size:7px}.about-section h2{font-size:42px}.work-image{height:270px}}
@media(max-width:720px){.site-nav{height:75px;padding:0 6%}.brand{font-size:35px}.menu-toggle{display:flex;align-items:center;gap:18px;background:transparent;border:1px solid var(--border2);color:var(--text);font:12px var(--sans);padding:8px 12px}.menu-toggle span{font-size:20px}.site-links{display:none;position:absolute;top:74px;left:0;right:0;background:var(--bg2);border-bottom:1px solid var(--border2);padding:15px 6% 22px;gap:0;flex-direction:column;align-items:stretch}.site-links.open{display:flex}.site-links li{display:block!important}.site-links a{display:block;font-size:14px;padding:12px 0}.site-links li:last-child a{padding:12px;margin-top:8px}.home-main{padding:0 6%}.hero-topline{font-size:8px;gap:8px}.intro-hero{padding-top:25px}.hero-layout{grid-template-columns:1fr;padding:40px 0 60px;gap:45px}.intro-hero h1{font-size:clamp(56px,12vw,84px)}.hero-description{font-size:14px;max-width:490px}.bench{margin:0 6px}.bench-visual{height:300px}.hero-bottom{font-size:8px;line-height:1.7}.hero-bottom>span{max-width:190px}.hero-bottom>a{max-width:105px;text-align:right}.work-section{padding:50px 0 35px}.section-heading h2{font-size:32px}.section-heading .text-link{font-size:11px;white-space:nowrap}.featured-grid{grid-template-columns:1fr;gap:15px}.work-image{height:300px}.work-copy h3{font-size:25px}.research-strip{gap:16px}.research-symbol{font-size:37px}.research-strip h3{font-size:21px}.research-strip p{font-size:11px}.about-section{grid-template-columns:1fr;gap:30px;padding:32px 0 45px}.about-section h2{font-size:43px}.about-copy p:first-child{font-size:17px}.toolbox{align-items:start;gap:20px;flex-direction:column}.toolbox>div{gap:12px 23px}.contact-cta{padding:53px 0}.contact-cta>div{align-items:start;flex-direction:column;gap:24px}.site-footer{padding:28px 6%;align-items:start;flex-direction:column;text-align:left;gap:20px}.site-footer>a:last-child{align-self:flex-end;margin-top:-38px}body:not(.home) main,body:not(.home) .page{padding:44px 6% 60px}.section-header{gap:15px}.panel h2{font-size:28px}.panel{max-height:90dvh}.hero-actions{gap:24px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}

.project-footnote{margin:32px 0 20px;padding-top:18px;border-top:1px solid var(--border);color:var(--muted);font:12px/1.8 var(--sans);max-width:760px}.project-footnote a{color:var(--text);white-space:nowrap}.education-note{font-size:14px;color:var(--muted);margin-bottom:32px}.hero-kicker{line-height:1.7}

.bench-visual img{width:100%;height:100%;object-fit:contain}
