@font-face{font-family:Lora;src:url('../assets/fonts/lora.woff') format('woff');font-weight:400 700;font-style:normal;font-display:swap}
@font-face{font-family:Space;src:url('../assets/fonts/space-regular.woff') format('woff');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Space;src:url('../assets/fonts/space-semibold.woff') format('woff');font-weight:600 800;font-style:normal;font-display:swap}
@font-face{font-family:Plex;src:url('../assets/fonts/plex-mono.woff') format('woff');font-weight:400;font-display:swap}
:root{color-scheme:light;--bg:#fff;--surface:#f5f3f0;--ink:#292929;--muted:#62605d;--line:#ddd8d3;--accent:#694183;--lavender:#e8ceff;--lavender-ink:#29232d;--media:#eeebe7;--font:Space,Arial,sans-serif;--display:Lora,Georgia,serif;--mono:Plex,monospace}
:root[data-theme=dark]{color-scheme:dark;--bg:#1d1c1c;--surface:#282525;--ink:#f5f0e9;--muted:#c0b7ae;--line:#484242;--accent:#dfbafa;--media:#312d2d}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#1d1c1c;--surface:#282525;--ink:#f5f0e9;--muted:#c0b7ae;--line:#484242;--accent:#dfbafa;--media:#312d2d}}
*,*::before,*::after{box-sizing:border-box}html{scroll-padding-top:105px;scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.7 var(--font);-webkit-font-smoothing:antialiased}h1,h2,h3,p,figure,dl{margin:0}h1,h2,h3{font-family:var(--display);font-weight:400;line-height:1.08;letter-spacing:-.045em}p{max-width:65ch}p+p{margin-top:1rem}a{color:inherit;text-underline-offset:5px;text-decoration-thickness:1px}a:hover{color:var(--accent)}img{display:block;max-width:100%;width:100%;height:auto}button,input,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button,input,a{-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}:focus-visible{outline:2px solid var(--accent);outline-offset:5px}::selection{background:var(--lavender);color:var(--lavender-ink)}
.wrap{max-width:1480px;padding-inline:5vw;margin-inline:auto}.section{padding-block:125px}.sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link{position:fixed;left:24px;top:16px;z-index:40;padding:12px 18px;background:var(--lavender);color:#29232d;transform:translateY(-170%)}.skip-link:focus{transform:none}.eyebrow{font-size:12px;letter-spacing:.015em;color:var(--muted);margin-bottom:22px}.caption,figcaption{font-size:12px;color:var(--muted);line-height:1.6}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:34px;min-height:47px;padding:12px 21px;background:var(--lavender);color:var(--lavender-ink);font:14px/1.4 var(--display);text-decoration:none;border:1px solid transparent;border-radius:3px;transition:background .2s,transform .2s}.button:hover{background:#dcc0f3;color:#201a24;transform:translateY(-2px)}.text-link{display:inline-flex;gap:25px;align-items:center;padding-block:9px;font-size:14px;text-decoration:none;border-bottom:1px solid var(--line)}.text-link:hover{border-color:var(--accent)}.quiet-button{border:0;border-bottom:1px solid currentColor;padding:3px 0;background:none;color:inherit;font-size:12px}.handline{position:relative;white-space:nowrap}.handline::after{content:'';position:absolute;left:-2%;right:-2%;bottom:-.11em;height:.15em;border-bottom:3px solid var(--lavender);border-radius:0 0 55% 35%;transform:rotate(-2deg);pointer-events:none}
/* A floating navigation dock, shared by every page. */
.site-header{position:fixed;inset:0 0 auto;z-index:20;pointer-events:none}.nav{height:82px;display:flex;align-items:center;justify-content:space-between;padding:14px 32px;gap:24px}.nav>*{pointer-events:auto}.brand{font:18px/1.3 var(--display);text-decoration:none;letter-spacing:-.04em;transition:color .2s}.brand-short{display:none}.site-header.is-over-hero .brand{color:white}.nav-dock{position:absolute;left:50%;top:14px;transform:translateX(-50%);width:300px;background:#292929;border-radius:4px;color:white;padding:3px;display:flex;align-items:center}.menu-toggle{border:0;background:none;color:inherit;padding:11px 14px;min-height:44px;display:flex;align-items:center;gap:10px;flex:1;font:13px var(--display)}.menu-symbol{width:18px;height:12px;position:relative}.menu-symbol::before,.menu-symbol::after{content:'';position:absolute;height:1px;background:currentColor;width:18px;left:0;top:4px;transition:transform .2s}.menu-symbol::after{top:8px}.menu-toggle[aria-expanded=true] .menu-symbol::before{transform:translateY(2px) rotate(45deg)}.menu-toggle[aria-expanded=true] .menu-symbol::after{transform:translateY(-2px) rotate(-45deg)}.dock-work{min-height:42px;padding:11px 18px;font-size:12px}.header-actions{display:flex;gap:5px;align-items:center}.header-resume{font-size:12px;min-height:44px;padding:12px 23px}.theme-toggle{border:0;border-radius:3px;width:44px;height:44px;background:var(--lavender);color:#29232d;display:grid;place-items:center}.theme-toggle svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.3}.nav-links{position:absolute;top:58px;left:0;width:100%;padding:20px;background:var(--lavender);color:#29232d;border-radius:4px;box-shadow:0 6px 18px #0000000a;display:grid;grid-template-columns:1fr 1fr;gap:9px 20px}.js .nav-links{display:none}.js .nav-links.is-open{display:grid;animation:menu-in .2s ease-out}.nav-links a{font:14px/1.6 var(--display);padding:6px 0;text-decoration:none}.nav-links a:hover{color:#694183}.nav-links .nav-contact{grid-column:1/-1;text-align:center;background:#fff;border-radius:3px;margin-top:7px;padding:9px}.nav-links a[aria-current=page]{text-decoration:underline}.nav-dock:focus-within{outline-offset:5px}.site-header :focus-visible,.hero-stage :focus-visible{outline-color:#c691ed}html:not(.js) .site-header{position:relative}html:not(.js) .nav{height:255px;align-items:flex-start}html:not(.js) .menu-toggle{display:none}html:not(.js) .dock-work{width:100%}@keyframes menu-in{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}
/* Photography leads; all slides keep explicit provenance. */
.hero-stage{height:100svh;min-height:740px;position:relative;background:#0b0c0e;color:#fff;overflow:hidden}.hero-scenes,.hero-shade{position:absolute;inset:0}.hero-scene{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .65s ease;pointer-events:none}.hero-scene.is-active{opacity:1}.earthrise-scene{object-position:center 76%}.jupiter-scene{object-position:center 50%}.simulation-scene{object-position:60% center}.hero-shade{background:linear-gradient(180deg,#00000025 0%,transparent 27%,#00000012 43%,#000000a8 100%)}.hero-caption{position:absolute;top:110px;right:32px;font-size:11px;color:#f4f0ea}.hero-caption a{text-decoration:none;background:#00000045;padding:7px 10px;border-radius:2px}.hero-caption a:hover{color:#fff;text-decoration:underline}.hero-bottom{position:absolute;inset:auto 32px 32px;display:grid;grid-template-columns:1fr auto;align-items:end;gap:55px}.hero-copy{max-width:790px}.hero-copy .eyebrow{color:#fff;margin-bottom:19px;font-size:12px}.hero-copy h1{font-size:clamp(52px,5.6vw,86px);line-height:1.06;letter-spacing:-.048em}.hero-copy .intro{max-width:41ch;font-size:15px;line-height:1.65;margin-top:26px}.hero-actions{display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin-top:23px}.hero-evidence{font-size:12px;color:#fff}.hero-evidence:hover{color:var(--lavender)}.hero-stage .handline::after{border-color:#e8ceff}.scene-picker>p{font:12px var(--display);text-align:right;margin-bottom:12px}.scene-buttons{display:flex;gap:7px}.scene-button{width:105px;padding:0;border:1px solid #ffffff80;background:#111;color:white;border-radius:2px;position:relative;overflow:hidden}.scene-button img{height:72px;object-fit:cover;opacity:.78;transition:opacity .2s}.scene-button span{position:absolute;left:0;right:0;bottom:0;padding:16px 3px 5px;background:linear-gradient(transparent,#0009);font-size:10px}.scene-button[aria-pressed=true]{outline:2px solid white;outline-offset:2px}.scene-button:hover img,.scene-button[aria-pressed=true] img{opacity:1}
/* A quiet image index, followed by the substantial case studies. */
.work-intro{min-height:690px;position:relative;display:grid;place-items:center;padding-block:130px 155px}.intro-heading{text-align:center;position:relative;z-index:2}.intro-heading h2{font-size:clamp(47px,4.9vw,72px);line-height:1.14}.intro-heading>p:last-child{font-size:14px;line-height:1.75;color:var(--muted);margin-top:30px}.floating-project{position:absolute;text-decoration:none;width:14%;max-width:190px;font-size:11px;line-height:1.5}.floating-project img{height:142px;object-fit:cover;border-radius:3px;transition:transform .4s ease}.floating-project:hover img{transform:translateY(-8px) rotate(-2deg)}.floating-project span{display:block;margin-top:10px}.float-a{left:7%;top:150px;transform:rotate(-4deg)}.float-b{right:8%;top:95px;transform:rotate(4deg)}.float-b img{height:120px}.float-c{right:14%;bottom:64px;transform:rotate(-3deg)}.float-c img{height:128px}.selected{padding-bottom:110px}.featured-project{display:grid;grid-template-columns:1.05fr 1fr;gap:8vw;align-items:center}.featured-image{display:block;border-radius:3px;overflow:hidden;background:var(--media)}.featured-image img{max-height:650px;object-fit:cover;transition:transform .7s ease}.featured-image:hover img{transform:scale(1.025)}.project-type{font-size:12px;color:var(--muted);margin-bottom:18px}.featured-copy h3{font-size:clamp(48px,4.7vw,72px);letter-spacing:-.05em}.featured-copy .project-hook{font-family:var(--display);font-size:27px;line-height:1.4;max-width:350px;margin-top:24px}.featured-copy p:not(.project-type,.project-hook,.caption){font-size:15px;color:var(--muted);margin-top:21px;max-width:410px}.featured-copy .result-note{border-left:2px solid var(--lavender);padding-left:20px}.featured-copy .text-link{margin-top:22px;background:var(--lavender);color:#29232d;padding:12px 20px;border:0;border-radius:3px;font-family:var(--display)}.featured-copy>.caption{margin-top:18px}.project-pair{display:grid;grid-template-columns:1fr 1fr;gap:6vw;margin-top:125px}.project-pair .project:nth-child(2){margin-top:140px}.project-image{display:block;aspect-ratio:1.42;background:var(--media);overflow:hidden;border-radius:3px}.project-image img{height:100%;object-fit:contain;transition:transform .7s ease}.project-image:hover img{transform:scale(1.025)}.project .project-type{margin-top:25px;margin-bottom:12px}.project h3{font-size:40px;letter-spacing:-.04em}.project>p:not(.project-type){font-size:15px;line-height:1.75;color:var(--muted);max-width:44ch;margin-top:19px}.project .text-link{margin-top:13px}
.orbit-section{display:grid;grid-template-columns:.85fr 1.15fr;align-items:center;gap:6vw;border-top:1px solid var(--line)}.orbit-copy h2{font-size:clamp(42px,4.6vw,65px);line-height:1.13}.orbit-copy>p:not(.eyebrow){max-width:33ch;margin-top:30px;font-size:15px;color:var(--muted)}.orbit-copy .text-link{margin-top:18px}.flyby{min-width:0}.flyby-drawing{position:relative;aspect-ratio:640/440}.flyby-drawing canvas,.flyby-fallback{position:absolute;inset:0;width:100%;height:100%}.flyby-drawing canvas{visibility:hidden}.flyby.ready canvas{visibility:visible}.flyby.ready .flyby-fallback{visibility:hidden}.flyby figcaption{font-family:var(--display);font-size:17px;color:var(--ink);margin-top:10px}.flyby-controls{margin-top:20px}.range-label{display:flex;justify-content:space-between;gap:20px;font-size:12px}.range-label output,.flyby-bottom output{font-family:var(--mono)}input[type=range]{width:100%;min-height:42px;margin:6px 0;accent-color:var(--accent);cursor:pointer}.flyby-bottom{display:flex;justify-content:space-between;align-items:center;font-size:12px;gap:15px}.flyby>.caption{margin-top:22px;max-width:55ch}.contributions{background:var(--surface)}.contribution-layout{display:grid;grid-template-columns:.9fr 1.1fr;gap:7vw}.contributions h2,.about h2{font-size:clamp(43px,4.5vw,65px);line-height:1.13}.section-intro{font-size:14px;color:var(--muted);margin-top:28px;max-width:27ch}.contribution{display:grid;grid-template-columns:1fr auto;gap:25px;align-items:center;padding:27px 0;text-decoration:none;border-bottom:1px solid var(--line)}.contribution:first-child{padding-top:0}.contribution-name{font-family:var(--display);font-size:22px;line-height:1.5}.contribution-name>span{display:block;font-family:var(--font);font-size:11px;color:var(--muted);margin-top:6px}.contribution-state{font-size:12px;white-space:nowrap}.pending{color:var(--accent)}.contribution-list+.caption{margin-top:22px}.about{display:grid;grid-template-columns:.95fr 1.05fr;gap:8vw}.about .button{margin-top:40px}.about-copy>p{font-size:17px;line-height:1.85;max-width:48ch}.about-copy>p:first-child{font-family:var(--display);font-size:27px;line-height:1.5;letter-spacing:-.015em}.about-copy>p+p{margin-top:25px}.about-links{display:flex;gap:28px;margin-top:24px;flex-wrap:wrap}.contact{background:var(--lavender);color:#29232d;text-align:center;padding-block:115px 105px;position:relative}.contact .eyebrow{color:#55485c;margin-inline:auto}.contact h2{font-size:clamp(46px,6.5vw,94px);line-height:1.08}.contact-email{display:inline-block;margin-top:35px;font-size:clamp(16px,2.2vw,28px);text-decoration:none;border-bottom:1px solid #8d7899;padding-bottom:8px}.contact-email:hover{color:#5b316f}.contact-inner>p:last-child{margin:20px auto 0;font-size:14px}.site-footer{display:flex;justify-content:space-between;align-items:center;gap:25px;min-height:105px;padding-block:26px;font-size:12px;color:var(--muted)}.site-footer>div{display:flex;gap:28px}.site-footer a{text-decoration:none}.footer-brand{font:21px var(--display);color:var(--ink)}.anchor-alias{position:absolute;scroll-margin-top:100px}.mono{font-family:var(--mono)}
/* The same visual identity, with calm reading widths for technical detail. */
.case-header{padding-top:145px;padding-bottom:50px}.back-link{font-size:12px;display:inline-block;margin-bottom:43px;text-decoration:none;color:var(--muted)}.case-header h1{font-size:clamp(54px,6.6vw,94px);line-height:1.08}.case-lede{font-family:var(--display);font-size:clamp(25px,3vw,40px);line-height:1.4;margin-top:26px;max-width:29ch;letter-spacing:-.025em}.case-actions{display:flex;align-items:center;gap:22px 35px;flex-wrap:wrap;margin-top:30px;font-size:14px}.case-actions>a{border-bottom:1px solid var(--line);padding-block:8px;text-decoration:none}.case-actions>a:hover{border-color:var(--accent)}.case-image>img{max-height:660px;object-fit:contain;background:var(--media);border-radius:3px}.case-image figcaption{margin-top:15px}.case-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:7vw;padding-top:70px}.case-meta{padding-top:5px}.case-meta dt{font-size:12px;color:var(--muted);margin-bottom:9px}.case-meta dd{margin:0 0 27px;font-size:14px;line-height:1.75}.case-body{min-width:0;max-width:750px}.case-section{margin-bottom:50px}.case-section h2{font-size:34px;line-height:1.25;letter-spacing:-.035em;margin-bottom:20px}.case-section p{font-size:16px;line-height:1.9}.case-section.sources{border-top:1px solid var(--line);padding-top:35px}.sources ul{padding:0;list-style:none}.sources li+li{margin-top:15px}.sources a{font-size:14px}.table-scroll{overflow-x:auto;margin-block:27px}table{border-collapse:collapse;width:100%;font-size:13px;line-height:1.6;text-align:left}caption{text-align:left;padding-bottom:17px;font-weight:600}thead{border-bottom:1px solid var(--line)}th,td{padding:14px 15px 14px 0}th{font-weight:400}thead th{font-weight:600;color:var(--muted)}tbody th{min-width:185px}td{font-family:var(--mono);white-space:nowrap}tbody tr+tr{border-top:1px solid var(--line)}.case-end{padding-top:15px;padding-bottom:80px;display:flex;justify-content:space-between;gap:20px}.narrow{max-width:820px;margin-inline:auto;padding-inline:30px}.narrow h2{font-size:38px;margin-bottom:24px}.not-found{min-height:75vh;padding-top:180px}.not-found h1{font-size:65px}.not-found p{margin-block:25px}.resume .case-header{padding-bottom:60px}.resume .case-header h1{font-size:clamp(43px,5.5vw,78px)}.resume-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:8vw;padding-bottom:100px}.resume-layout aside h2{font:18px var(--display);margin-bottom:13px}.resume-layout aside p{font-size:14px;line-height:1.85;margin-bottom:35px;color:var(--muted)}.resume-section-title{font-size:31px;margin-bottom:22px}.resume-entry{padding-block:25px;border-bottom:1px solid var(--line);break-inside:avoid}.resume-entry h2{font-size:27px;margin-bottom:12px}.resume-role{font-size:12px;color:var(--muted);margin-bottom:12px}.resume-entry>p:not(.resume-role){font-size:15px;line-height:1.8;max-width:62ch}.resume-entry>a{display:inline-block;font-size:13px;margin-top:12px}.reveal-ready{opacity:0;transform:translateY(18px);transition:opacity .6s,transform .7s}.reveal-ready.is-visible{opacity:1;transform:none}
html:not(.js) .site-header .brand{color:var(--ink)}
@media(min-width:1600px){.hero-bottom{inset-inline:4vw;bottom:4vw}.hero-copy h1{font-size:88px}.hero-caption{right:4vw}.nav{padding-inline:4vw}}
@media(max-width:1100px){.hero-bottom{gap:25px}.hero-copy h1{font-size:60px}.scene-button{width:80px}.scene-button img{height:63px}.hero-actions{max-width:420px;gap:17px}.hero-copy .intro{max-width:35ch}.work-intro{min-height:620px}.floating-project{width:16%}.float-a{left:5%}.float-b{right:5%}.float-c{right:8%;bottom:55px}.featured-project{gap:6vw}.featured-copy .project-hook{font-size:24px}.contribution-name{font-size:19px}.case-layout{grid-template-columns:200px minmax(0,1fr)}.header-resume{padding-inline:17px}.brand{font-size:16px}.nav-dock{width:260px}}
@media(max-width:767px){
 .wrap{padding-inline:24px}.section{padding-block:75px}.nav{height:74px;padding:14px 20px;gap:12px}.brand{font-size:16px}.brand-full{display:none}.brand-short{display:inline}.nav-dock{left:auto;right:71px;top:14px;transform:none;width:93px}.dock-work,.header-resume{display:none}.menu-toggle{min-height:40px;padding:9px 11px;font-size:12px}.theme-toggle{width:40px;height:46px}.nav-links{left:auto;right:-51px;top:56px;width:290px;padding:19px;gap:9px 17px}.nav-links a{font-size:15px;padding-block:8px}.site-header.is-over-hero .brand{color:#fff}
 .hero-stage{min-height:790px;height:100svh}.hero-caption{top:94px;right:20px;left:20px;text-align:right;font-size:10px}.hero-caption a{padding:6px 8px}.hero-bottom{inset:auto 24px 24px;display:flex;flex-direction:column;align-items:stretch;gap:26px}.hero-copy h1{font-size:clamp(39px,10.1vw,60px);max-width:600px;line-height:1.1}.hero-copy .eyebrow{font-size:11px;max-width:30ch;margin-bottom:18px}.hero-copy .intro{font-size:14px;margin-top:23px;max-width:35ch}.hero-actions{margin-top:20px;gap:13px 20px}.hero-actions .button{min-height:43px;padding:11px 17px;gap:25px;font-size:13px}.hero-evidence{font-size:11px}.hero-shade{background:linear-gradient(180deg,#0003 0%,transparent 14%,#0003 27%,#000b 100%)}.scene-picker>p{text-align:left;font-size:11px;margin-bottom:10px}.scene-buttons{gap:8px}.scene-button{width:82px}.scene-button img{height:56px}.scene-button span{font-size:9px}.earthrise-scene{object-position:60% center;height:135%;transform:translateY(-25.9259%)}.jupiter-scene{object-position:55% center}.simulation-scene{object-position:65% center}
 .work-intro{min-height:650px;padding-top:75px;padding-bottom:250px;place-items:start center}.intro-heading h2{font-size:48px}.intro-heading .eyebrow{margin-bottom:20px}.intro-heading>p:last-child{font-size:13px;margin-top:26px}.floating-project{width:28%;max-width:150px}.floating-project img{height:110px}.float-a{left:6%;top:auto;bottom:92px}.float-b{right:auto;left:37%;top:auto;bottom:145px}.float-b img{height:91px}.float-c{right:5%;bottom:69px}.float-c img{height:105px}.floating-project span{font-size:9px;margin-top:8px}.selected{padding-bottom:75px}.featured-project{grid-template-columns:1fr;gap:35px}.featured-image img{max-height:440px;aspect-ratio:1.12;object-fit:cover}.featured-copy h3{font-size:53px}.project-type{font-size:11px;margin-bottom:16px}.featured-copy .project-hook{font-size:26px;max-width:27ch;margin-top:20px}.featured-copy p:not(.project-type,.project-hook,.caption){font-size:14px;margin-top:20px}.featured-copy .text-link{font-size:14px}.project-pair{grid-template-columns:1fr;gap:58px;margin-top:70px}.project-pair .project:nth-child(2){margin-top:0}.project-image{aspect-ratio:1.35}.project h3{font-size:38px}.project>p:not(.project-type){font-size:14px}.project .project-type{margin-top:24px}.project .text-link{font-size:13px}
 .orbit-section{grid-template-columns:minmax(0,1fr);gap:25px}.orbit-copy h2{font-size:48px}.orbit-copy>p:not(.eyebrow){max-width:38ch;font-size:14px;margin-top:28px}.flyby figcaption{font-size:16px}.flyby-controls{margin-top:15px}.flyby>.caption{font-size:11px}.range-label,.flyby-bottom{font-size:11px}.contribution-layout{grid-template-columns:1fr;gap:42px}.contributions h2,.about h2{font-size:48px}.section-intro{max-width:35ch;margin-top:28px}.contribution{gap:14px;padding:25px 0}.contribution-name{font-size:19px}.contribution-name>span{font-size:10px}.contribution-state{font-size:11px}.contribution-list+.caption{font-size:11px}.about{grid-template-columns:1fr;gap:40px}.about .button{margin-top:33px}.about-copy>p:first-child{font-size:25px}.about-copy>p{font-size:15px}.about-copy>p+p{margin-top:23px}.contact{padding-block:75px}.contact h2{font-size:clamp(39px,9.8vw,60px)}.contact-email{font-size:clamp(16px,4.6vw,24px);margin-top:30px}.contact .eyebrow{font-size:11px}.site-footer{align-items:flex-start;flex-direction:column;gap:20px;padding-block:29px}.site-footer>div{gap:24px}.footer-brand{font-size:20px}
 .case-header{padding-top:115px;padding-bottom:35px}.back-link{margin-bottom:34px}.case-header h1{font-size:clamp(40px,10.5vw,57px)}.case-lede{font-size:27px;line-height:1.4;margin-top:20px}.case-actions{font-size:13px;gap:15px 25px;margin-top:22px}.case-image>img{max-height:400px;object-fit:contain}.case-image figcaption{font-size:11px}.case-layout{grid-template-columns:minmax(0,1fr);gap:33px;padding-top:35px}.case-meta dl{display:grid;grid-template-columns:72px minmax(0,1fr);gap:8px 18px}.case-meta dt{margin:0;font-size:11px}.case-meta dd{font-size:13px;margin:0}.case-meta>.caption{margin-top:20px;font-size:11px}.case-meta{border-bottom:1px solid var(--line);padding-bottom:27px}.case-section{margin-bottom:40px}.case-section h2{font-size:29px}.case-section p{font-size:15px;line-height:1.85}.case-end{padding-bottom:50px}.case-end .text-link{font-size:12px}.resume .case-header h1{font-size:42px}.resume .case-header{padding-bottom:42px}.resume-layout{grid-template-columns:minmax(0,1fr);gap:30px;padding-bottom:60px}.resume-layout aside{display:grid;grid-template-columns:85px minmax(0,1fr);gap:18px}.resume-layout aside p{margin:0;font-size:13px}.resume-layout aside h2{font-size:16px}.resume-section-title{font-size:29px}.resume-entry>p:not(.resume-role){font-size:14px}.narrow{padding-inline:24px}.narrow h2{font-size:33px}.not-found{padding-top:140px}.not-found h1{font-size:47px}html:not(.js) .nav{height:300px}
}

/* A compact all-work index: inspired by the reference site's selected-work /
   explorations split, but tuned for evidence-led engineering projects. */
.work-index{border-top:1px solid var(--line)}
.work-index-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.65fr);gap:8vw;align-items:end}
.work-index-head h2{font-size:clamp(48px,5vw,76px)}
.work-index-head>p{max-width:39ch;margin:0 0 8px;color:var(--muted);font-size:15px}
.work-index-toolbar{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:62px;padding-top:14px;border-top:1px solid var(--line)}
.work-index-filters{display:flex;flex-wrap:wrap;gap:22px}
.work-filter{border:0;border-bottom:1px solid var(--line);padding:6px 0;background:none;color:var(--muted);font:12px var(--display);transition:color .2s,border-color .2s}
.work-filter span{margin-left:5px;color:inherit;font:10px var(--mono)}
.work-filter:hover,.work-filter.is-active{color:var(--ink);border-color:var(--accent)}
.work-index-status{margin:0;color:var(--muted);font:10px var(--mono);letter-spacing:.035em;text-transform:uppercase;white-space:nowrap}
.work-index-layout{display:grid;grid-template-columns:minmax(0,1.26fr) minmax(230px,.74fr);gap:8vw;margin-top:29px}
.work-index-list{border-top:1px solid var(--line)}
.work-index-item{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:17px;align-items:start;min-height:80px;padding:20px 0;border-bottom:1px solid var(--line);text-decoration:none;transition:color .25s,transform .4s cubic-bezier(.22,1,.36,1);animation:work-index-in .65s cubic-bezier(.22,1,.36,1) both;animation-delay:var(--work-delay,0ms)}
.work-index-item:hover{color:var(--accent);transform:translateX(8px)}
.work-index-id{padding-top:4px;color:var(--muted);font:11px var(--mono)}
.work-index-item strong{display:block;font:26px/1.1 var(--display);font-weight:400;letter-spacing:-.035em}
.work-index-item small{display:block;margin-top:7px;color:var(--muted);font-size:13px;line-height:1.5;max-width:48ch}
.work-index-arrow{padding-top:4px;color:var(--muted);font:10px var(--mono);white-space:nowrap;transition:color .25s,transform .35s cubic-bezier(.22,1,.36,1)}
.work-index-item:hover .work-index-arrow{color:var(--accent);transform:translateX(4px)}
.work-index-note-item{cursor:default}
.work-index-note-item:hover{color:var(--ink);transform:none}
.work-index-note-item .work-index-arrow{border:1px solid var(--line);padding:3px 7px;text-transform:uppercase;font-size:9px}
.work-index-note{padding-top:8px}
.work-index-note>p:not(.eyebrow){max-width:33ch;color:var(--muted);font-size:14px;line-height:1.7}
.work-index-threads{display:grid;margin-top:25px;border-top:1px solid var(--line)}
.work-index-threads>div{display:flex;align-items:baseline;justify-content:space-between;gap:15px;padding:12px 0;border-bottom:1px solid var(--line);font-size:12px}
.work-index-threads>div span:last-child{color:var(--muted);font:10px var(--mono);text-transform:uppercase}
.work-index-note .text-link{margin-top:25px;font-size:12px}
.work-index-item[hidden]{display:none}
.work-index-item.is-filtering{animation:work-index-in .55s cubic-bezier(.22,1,.36,1) both;animation-delay:var(--work-delay,0ms)}
@keyframes work-index-in{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:none}}
@media(max-width:359px){.wrap{padding-inline:19px}.hero-bottom{inset-inline:19px}.hero-copy h1{font-size:38px}.hero-stage{min-height:815px}.hero-actions{display:flex;flex-direction:column;align-items:flex-start}.nav{padding-inline:18px}.nav-dock{right:67px}.nav-links{width:276px;right:-49px}.hero-copy .eyebrow{font-size:10px}.work-intro{min-height:610px}.intro-heading h2{font-size:44px}.floating-project img{height:88px}.float-b img{height:80px}.float-c img{height:90px}.contribution-name{font-size:17px}.contribution-state{font-size:10px}.scene-button{width:77px}.case-header h1{font-size:39px}.resume .case-header h1{font-size:39px}.contact h2{font-size:37px}.contact-email{font-size:16px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal-ready{opacity:1;transform:none}.button:hover,.floating-project:hover img,.project-image:hover img,.featured-image:hover img{transform:none}}
@media print{body{background:white;color:#222;font-size:10pt}.site-header,.site-footer,.skip-link,.print-button,.case-actions a[href$='.pdf']{display:none!important}.wrap{max-width:none;padding:0}.resume .case-header{padding-top:0;padding-bottom:22px}.resume .case-header h1{font-size:30pt}.case-lede{font-size:14pt}.case-actions{font-size:9pt;margin-top:14px}.resume-layout{grid-template-columns:150px 1fr;gap:30px}.resume-layout aside p,.resume-entry>p:not(.resume-role){font-size:9pt;line-height:1.6}.resume-layout aside h2{font-size:11pt}.resume-entry{padding-block:14px;break-inside:avoid}.resume-entry h2{font-size:13pt}.resume-section-title{font-size:16pt}a{color:inherit;text-decoration:none}.resume-role,.resume-entry>a{font-size:8pt}}

/* Editorial systems layer: a quieter archive, a richer engineering thread, and one focused WebGL moment. */
.systems-section{display:grid;grid-template-columns:minmax(250px,.72fr) minmax(0,1.28fr);gap:8vw;align-items:start;border-top:1px solid var(--line)}
.systems-heading h2,.archive-heading h2{font-size:clamp(48px,5vw,76px)}
.systems-heading>p:last-child,.archive-heading>p:last-child{margin-top:27px;max-width:35ch;color:var(--muted);font-size:15px}
.systems-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:18px}
.system-card{--tilt-x:0deg;--tilt-y:0deg;display:flex;flex-direction:column;min-height:465px;padding:25px;background:var(--surface);color:var(--ink);text-decoration:none;border:1px solid transparent;transform-style:preserve-3d;transition:transform .55s cubic-bezier(.23,1,.32,1),border-color .2s,background .2s;will-change:transform}
.system-card:hover{transform:perspective(1000px) translate3d(0,-7px,0) rotateX(var(--tilt-x)) rotateY(var(--tilt-y));border-color:var(--accent);color:var(--ink)}
.system-card .project-type{margin-top:auto;margin-bottom:15px}
.system-card h3{font-size:clamp(29px,3vw,47px);max-width:11ch}
.system-card p{font-size:14px;line-height:1.72;margin-top:16px;max-width:43ch}
.system-link{display:inline-flex;margin-top:24px;font-size:12px;text-decoration:underline;text-underline-offset:5px}
.system-art{position:relative;height:185px;margin:-25px -25px 28px;overflow:hidden;background:#1e1d25}
.system-art-photo{isolation:isolate}
.system-art-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.82) contrast(1.04);transition:transform .7s cubic-bezier(.23,1,.32,1),filter .35s ease}
.system-art-photo:after{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#14101912 15%,#17131fcc 100%);pointer-events:none}
.system-art-photo figcaption{position:absolute;z-index:2;left:17px;right:17px;bottom:14px;color:#f7f1eb;font:10px/1.35 var(--mono);letter-spacing:.025em;text-shadow:0 1px 10px #000;opacity:.92}
.system-card:hover .system-art-photo img{transform:scale(1.035);filter:saturate(.95) contrast(1.06)}
.system-art-logo{display:grid;place-items:center;isolation:isolate;background:radial-gradient(circle at 50% 40%,#49375a 0%,#29242e 52%,#1b1920 100%)}
.system-art-logo::before{content:'';position:absolute;width:134px;height:134px;border:1px solid #dfbafa66;border-radius:50%;transform:rotate(-12deg);transition:transform .8s cubic-bezier(.23,1,.32,1),border-color .3s ease}
.system-art-logo::after{content:'';position:absolute;inset:17px;border:1px solid #ffffff14;pointer-events:none}
.system-art-logo img{position:relative;z-index:1;width:126px;height:126px;object-fit:contain;filter:drop-shadow(0 14px 24px #0005);transition:transform .8s cubic-bezier(.23,1,.32,1),filter .35s ease}
.system-art-logo figcaption{position:absolute;z-index:2;left:17px;right:17px;bottom:14px;color:#f7f1eb;font:10px/1.35 var(--mono);letter-spacing:.025em;text-shadow:0 1px 10px #000;opacity:.92}
.system-card:hover .system-art-logo img{transform:scale(1.07) rotate(-3deg);filter:drop-shadow(0 18px 28px #0007)}
.system-card:hover .system-art-logo::before{transform:rotate(21deg) scale(1.1);border-color:#dfbafaaa}

.voyager-section{position:relative;min-height:125svh;background:#101017;color:#f6f0e9;overflow:hidden}
.voyager-section:before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 78% 44%,#5e3d7c28,transparent 27%),linear-gradient(110deg,#101017 0%,#15131b 54%,#242034 100%);pointer-events:none}
.voyager-shell{position:relative;min-height:125svh;display:grid;grid-template-columns:minmax(250px,.72fr) minmax(0,1.28fr);align-items:center;gap:5vw}
.voyager-intro{position:relative;z-index:2;padding-block:9vh}.voyager-intro h2{font-size:clamp(51px,6vw,92px);line-height:1.02}.voyager-intro>p:not(.eyebrow,.caption){max-width:34ch;margin-top:30px;color:#d0c7cf;font-size:16px}.voyager-intro .caption{max-width:43ch;margin-top:23px;color:#9c93a0}.voyager-sequence{display:flex;align-items:center;gap:13px;margin-top:53px;color:#e4c9fa;font:11px var(--mono);text-transform:uppercase;letter-spacing:.08em}.voyager-sequence-rule{width:72px;height:1px;background:#e4c9fa80}.voyager-sequence-count{color:#a79aaa}
.voyager-viewport{position:sticky;top:74px;height:min(78svh,760px);min-height:530px;isolation:isolate}.voyager-viewport:after{content:'';position:absolute;inset:auto 7% 6%;height:70px;border-radius:50%;background:#d4affb18;filter:blur(28px);pointer-events:none}.voyager-viewport canvas{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0;touch-action:pan-y;transition:opacity .6s ease}.voyager-viewport.is-ready canvas{opacity:1}.voyager-loading{position:absolute;z-index:3;left:8%;top:11%;display:flex;align-items:center;gap:9px;font:11px var(--mono);color:#e7d9ec;letter-spacing:.04em}.voyager-loading small{display:block;margin-left:7px;color:#9890a0;font:10px var(--font)}.loader-dot{width:7px;height:7px;border-radius:50%;background:#dfbafa;box-shadow:0 0 0 5px #dfbafa1b;animation:loader-pulse 1.2s ease-in-out infinite}@keyframes loader-pulse{50%{transform:scale(.65);opacity:.55}}
.voyager-fallback-art{position:absolute;inset:6% 0 11%;opacity:.86;transition:opacity .4s ease;pointer-events:none;overflow:hidden;background:#121017 url('../assets/voyager/telemetry.jpg') center/cover no-repeat}
.voyager-fallback-art:after{content:'';position:absolute;inset:0;background:linear-gradient(105deg,#101017d9 0%,#15121d75 48%,#15121d22 100%),linear-gradient(180deg,transparent 55%,#09090dcc 100%);z-index:1}
.voyager-fallback-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:58% center;filter:brightness(.66) saturate(.72) contrast(1.08);opacity:.96}
.voyager-photo-credit{position:absolute;left:8%;bottom:4%;z-index:2;color:#e8ddea;font:10px/1.4 var(--mono);letter-spacing:.035em;text-transform:uppercase}
.voyager-annotations{position:absolute;inset:0;z-index:2;pointer-events:none}.annotation{position:absolute;padding:7px 10px;background:#12101aeb;color:#e7d6f3;border:1px solid #dfbafa80;font:10px var(--mono);letter-spacing:.04em}.annotation:before{content:'';position:absolute;width:34px;height:1px;background:#dfbafa80;top:50%}.annotation-dish{right:4%;top:31%}.annotation-dish:before{right:100%;transform:rotate(-18deg);transform-origin:right}.annotation-body{right:5%;top:59%}.annotation-body:before{right:100%;transform:rotate(18deg);transform-origin:right}.annotation-boom{left:6%;top:51%}.annotation-boom:before{left:100%;transform:rotate(-12deg);transform-origin:left}
.voyager-status{position:absolute;left:8%;bottom:16%;z-index:2;color:#a69baa;font:10px var(--mono);letter-spacing:.04em;text-transform:uppercase}.voyager-controls{position:absolute;left:8%;right:0;bottom:6%;z-index:4;display:flex;flex-wrap:wrap;gap:22px}.voyager-controls .quiet-button{color:#e7d9ec;border-color:#81758b;padding-bottom:5px}.voyager-controls .quiet-button:hover{color:#fff;border-color:#dfbafa}.voyager-controls .quiet-button[aria-pressed=true]{color:#dfbafa;border-color:#dfbafa}.voyager-controls .quiet-button:disabled{opacity:.48;cursor:not-allowed}

.archive-section{border-top:1px solid var(--line)}.archive-heading{display:grid;grid-template-columns:1fr 1fr;gap:8vw;align-items:end}.archive-heading>p:last-child{margin:0 0 8px}.archive-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 7vw;margin-top:70px;border-top:1px solid var(--line)}.archive-item{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:17px;align-items:start;padding:24px 0;border-bottom:1px solid var(--line);text-decoration:none;transition:color .2s,transform .25s ease-out}.archive-item:hover{color:var(--accent);transform:translateX(5px)}.archive-number{font:11px var(--mono);color:var(--muted);padding-top:4px}.archive-item strong{display:block;font:23px/1.1 var(--display);font-weight:400;letter-spacing:-.03em}.archive-item small{display:block;margin-top:9px;color:var(--muted);font-size:13px;line-height:1.6;max-width:41ch}.archive-item>span:last-child{font:12px var(--mono);color:var(--muted);padding-top:3px}.archive-item-note{cursor:default}.archive-item-note:hover{color:var(--ink);transform:none}.archive-tag{border:1px solid var(--line);padding:3px 7px;font-size:10px!important;text-transform:uppercase}

.case-exhibit{border-top:1px solid var(--line);padding-top:48px}.aegis-exhibit{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(200px,.65fr);gap:25px;margin-top:30px}.aegis-stage{position:relative;min-height:350px;background:var(--surface);border:1px solid var(--line);overflow:hidden}.aegis-stage canvas{display:block;width:100%;height:auto;min-height:350px}.aegis-stage-label{position:absolute;top:14px;left:16px;font:10px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.aegis-controls{display:flex;flex-direction:column;justify-content:center;gap:21px;padding:25px;background:var(--surface);border:1px solid var(--line)}.aegis-control label{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted)}.aegis-control output{font:11px var(--mono);color:var(--ink)}.aegis-control input{display:block;width:100%;margin-top:11px;accent-color:var(--accent)}.aegis-reading{font:14px/1.6 var(--display);color:var(--ink);border-left:2px solid var(--accent);padding-left:14px}.aegis-controls .quiet-button{align-self:flex-start}.case-exhibit>.caption{margin-top:17px}

@media(max-width:900px){.systems-section,.voyager-shell{grid-template-columns:1fr;gap:46px}.systems-grid{grid-template-columns:1fr 1fr}.system-card{min-height:430px}.voyager-section,.voyager-shell{min-height:120svh}.voyager-intro{padding-top:90px;padding-bottom:10px}.voyager-viewport{position:relative;top:auto;height:68svh;min-height:470px}.voyager-status{bottom:13%}.archive-heading{grid-template-columns:1fr;gap:24px}.archive-heading>p:last-child{margin:0}.archive-grid{margin-top:45px}}
.case-exhibit>.caption{font-size:12px}
.case-exhibit>.caption{font-size:12px}
@media(max-width:700px){.aegis-exhibit{grid-template-columns:1fr;gap:15px}.aegis-stage{min-height:230px}.aegis-stage canvas{min-height:230px}.aegis-controls{padding:21px;gap:17px}.aegis-reading{font-size:13px}}
@media(prefers-reduced-motion:reduce){.loader-dot{animation:none}.system-card:hover,.archive-item:hover{transform:none}.voyager-viewport canvas{transition:none}}

/* Small, interruptible motion cues: the page should feel authored, never busy. */
.js .hero-copy>*{opacity:0;transform:translateY(18px)}
.js.page-ready .hero-copy>*{animation:hero-rise .8s cubic-bezier(.22,1,.36,1) both}
.js.page-ready .hero-copy>*:nth-child(1){animation-delay:.08s}
.js.page-ready .hero-copy>*:nth-child(2){animation-delay:.16s}
.js.page-ready .hero-copy>*:nth-child(3){animation-delay:.25s}
.js.page-ready .hero-copy>*:nth-child(4){animation-delay:.34s}
@keyframes hero-rise{to{opacity:1;transform:none}}
.reveal-ready{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s cubic-bezier(.22,1,.36,1);transition-delay:var(--reveal-delay,0ms)}
.reveal-ready.is-visible{opacity:1;transform:none}
@supports (animation-timeline:view()){
  .project-image img,.featured-image img,.floating-project img{animation:media-drift linear both;animation-timeline:view();animation-range:entry 0% cover 34%}
  @keyframes media-drift{from{transform:translateY(14px) scale(1.015)}to{transform:translateY(-8px) scale(1.035)}}
}
@media (hover:hover) and (pointer:fine){.system-card.reveal-ready.is-visible:hover{transform:perspective(1000px) translate3d(0,-7px,0) rotateX(var(--tilt-x)) rotateY(var(--tilt-y))}}
@media(prefers-reduced-motion:reduce){
  .js .hero-copy>*{opacity:1;transform:none}
  .reveal-ready{opacity:1;transform:none;transition:none}
  .system-card:hover .system-art-logo img,.system-card:hover .system-art-logo::before{transform:none}
}

@media(max-width:900px){
  .work-index-head{grid-template-columns:1fr;gap:24px}
  .work-index-head>p{margin:0}
  .work-index-layout{grid-template-columns:1fr;gap:50px}
}
@media(max-width:767px){
  .work-index{padding-top:85px}
  .work-index-head h2{font-size:48px}
  .work-index-head>p{font-size:14px}
  .work-index-toolbar{display:block;margin-top:43px}
  .work-index-filters{gap:16px 22px}
  .work-index-status{margin-top:20px}
  .work-index-layout{gap:51px;margin-top:23px}
  .work-index-item{grid-template-columns:31px minmax(0,1fr);gap:12px;min-height:78px;padding:19px 0}
  .work-index-item strong{font-size:23px}
  .work-index-item small{font-size:12px;margin-top:6px}
  .work-index-arrow{grid-column:2;padding-top:0;font-size:10px}
  .work-index-note{padding-top:0}
  .work-index-note>p:not(.eyebrow){font-size:13px}
  .work-index-threads{margin-top:23px}
}
@media(prefers-reduced-motion:reduce){
  .work-index-item,.work-index-item:hover,.work-index-item:hover .work-index-arrow{animation:none;transform:none;transition:none}
}

/* Spatial project wall: a rotating, CSS-3D project carousel with real project imagery. */
.work-wall-section{border-top:1px solid var(--line);overflow:visible}
.work-wall-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.62fr);gap:8vw;align-items:end}
.work-wall-head h2{font-size:clamp(52px,5.6vw,84px);line-height:1.02}
.work-wall-head>p{max-width:32ch;margin:0 0 8px;color:var(--muted);font-size:15px}
.project-wall{--wall-rx:0deg;--wall-ry:0deg;--wall-shift-x:0px;--wall-shift-y:0px;--orbit-rotation:0deg;position:relative;height:clamp(700px,61vw,850px);margin-top:54px;perspective:1600px;transform-style:preserve-3d;isolation:isolate;overflow:hidden;cursor:grab;touch-action:pan-y;background:linear-gradient(145deg,#ffffffb3,#f7f2fb66 55%,#eee8f533);will-change:contents}
.project-wall.is-dragging{cursor:grabbing}
.project-wall::before{content:'';position:absolute;inset:4% 4% 8%;z-index:-3;background:radial-gradient(circle at 50% 44%,#d8b4f526,transparent 46%),linear-gradient(145deg,var(--surface),transparent 72%);border:1px solid var(--line);transform:translateZ(-260px) rotateX(1deg);box-shadow:0 52px 100px #14111d18}
.project-wall::after{content:'';position:absolute;inset:0;z-index:15;pointer-events:none;background:linear-gradient(90deg,#f9f7fbcc 0,transparent 9%,transparent 91%,#f9f7fbcc 100%),linear-gradient(180deg,#f9f7fb88 0,transparent 13%,transparent 86%,#f9f7fb99 100%);mix-blend-mode:normal}
.project-wall-light{position:absolute;inset:0;z-index:-2;pointer-events:none;background:radial-gradient(circle at calc(50% + var(--wall-shift-x)) calc(40% + var(--wall-shift-y)),#dfbafa38 0,transparent 26%),radial-gradient(circle at 17% 81%,#69418318 0,transparent 25%);transform:translateZ(-75px);transition:background .35s ease}
.project-wall-grid{position:absolute;inset:7% 2% 0;z-index:-1;pointer-events:none;opacity:.38;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:64px 64px;mask-image:linear-gradient(180deg,transparent 0,#000 15%,#000 84%,transparent 100%);transform:translateZ(-170px) rotateX(67deg) scale(1.3);transform-origin:center bottom}
.project-wall-orbit{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateX(var(--wall-rx)) rotateY(calc(var(--wall-ry) + var(--orbit-rotation)));transform-origin:50% 46%;transition:transform .24s linear;will-change:transform}
.project-wall.is-dragging .project-wall-orbit{transition:none}
.project-wall.is-snapping .project-wall-orbit{transition:transform .78s cubic-bezier(.22,1,.36,1)}
.project-wall-track{position:absolute;left:50%;top:46%;width:min(82%,1120px);height:min(59%,510px);border:1px solid #76528d3b;border-radius:50%;transform:translate(-50%,-50%) rotateX(72deg) translateZ(-145px);box-shadow:0 0 0 1px #ffffff80,0 0 90px #9e70b71e;pointer-events:none}
.project-wall-track::before{content:'';position:absolute;inset:11% 8%;border:1px dashed #76528d3a;border-radius:50%;transform:translateZ(18px)}
.project-wall-track::after{content:'';position:absolute;inset:27% 22%;border:1px solid #76528d26;border-radius:50%;transform:translateZ(36px)}
.project-wall-core{position:absolute;left:50%;top:46%;z-index:0;display:grid;place-items:center;gap:8px;width:158px;height:158px;border:1px solid #76528d45;border-radius:50%;color:var(--muted);background:#ffffff3d;box-shadow:inset 0 0 36px #ffffff9e,0 0 70px #9e70b71c;transform:translate(-50%,-50%) translateZ(-190px);font:8px var(--mono);letter-spacing:.12em;text-align:center;pointer-events:none}
.project-wall-core b{color:var(--ink);font:43px/1 var(--display);font-weight:400;letter-spacing:-.08em}
.project-object{--radius:clamp(320px,27vw,410px);--rz:0deg;--wall-delay:0ms;position:absolute;left:50%;top:46%;display:block;width:min(30vw,390px);color:var(--ink);text-decoration:none;transform:translate(-50%,-50%) rotateY(var(--angle)) translateZ(var(--radius)) rotateZ(var(--rz));transform-style:preserve-3d;backface-visibility:hidden;transition:transform .78s cubic-bezier(.22,1,.36,1),filter .35s ease;will-change:transform;z-index:1;animation:wall-card-in .9s cubic-bezier(.22,1,.36,1) both;animation-delay:var(--wall-delay)}
.project-object::before{content:'';position:absolute;inset:11px -15px -17px 12px;z-index:-2;background:linear-gradient(135deg,#1a152033,#69418326);border:1px solid var(--line);transform:translateZ(-30px) rotateZ(-1.2deg);box-shadow:18px 25px 34px #1b162228;transition:transform .78s cubic-bezier(.22,1,.36,1),opacity .35s ease}
.project-object::after{content:'';position:absolute;inset:-1px;z-index:2;pointer-events:none;border:1px solid transparent;transition:border-color .25s ease,box-shadow .45s ease}
.project-object-media{position:relative;display:block;overflow:hidden;aspect-ratio:1.38;background:var(--media);border:1px solid var(--line);box-shadow:0 25px 42px #1d162416;transform:translateZ(18px);transition:box-shadow .45s ease,transform .78s cubic-bezier(.22,1,.36,1)}
.project-object-media::after{content:'';position:absolute;inset:0;background:linear-gradient(125deg,#ffffff2b,transparent 31%,#120d1e2b 100%);mix-blend-mode:screen;pointer-events:none;transition:opacity .4s ease}
.project-object-media img{width:100%;height:100%;object-fit:cover;filter:saturate(.86) contrast(1.05);transition:transform .85s cubic-bezier(.22,1,.36,1),filter .45s ease}
.project-object-logo{display:grid;place-items:center;background:radial-gradient(circle at 50% 36%,#5a3d6f 0,#2c2435 52%,#1a1720 100%)}
.project-object-logo img{width:68%;height:68%;object-fit:contain;filter:drop-shadow(0 19px 24px #08060d8c);transition:transform .85s cubic-bezier(.22,1,.36,1),filter .45s ease}
.project-object-meta{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:11px;align-items:baseline;padding:13px 2px 0;transform:translateZ(27px);transition:transform .78s cubic-bezier(.22,1,.36,1)}
.project-object-id{grid-column:1/-1;margin-bottom:4px;color:var(--muted);font:9px var(--mono);letter-spacing:.08em}
.project-object-meta strong{font:clamp(20px,1.8vw,29px)/1.05 var(--display);font-weight:400;letter-spacing:-.035em}
.project-object-meta small{justify-self:end;color:var(--muted);font-size:11px;line-height:1.35;text-align:right}
.object-aegis{--rz:-4deg;--wall-delay:80ms;z-index:6}.object-aegis .project-object-media{aspect-ratio:1.08}
.object-voyager{--rz:4deg;--wall-delay:150ms;z-index:5}.object-voyager .project-object-media{aspect-ratio:1.52}
.object-abstain{--rz:-2deg;--wall-delay:220ms;z-index:7}.object-abstain .project-object-media{aspect-ratio:1.36}
.object-seagulls{--rz:-7deg;--wall-delay:290ms;z-index:3}.object-seagulls .project-object-media{aspect-ratio:1}
.object-astronomy{--rz:5deg;--wall-delay:360ms;z-index:2}.object-astronomy .project-object-media{aspect-ratio:1.5}
.object-echo{--rz:2deg;--wall-delay:430ms;z-index:3}.object-echo .project-object-media{aspect-ratio:1.5}
.project-object:hover,.project-object:focus-visible,.project-object.is-active{transform:translate(-50%,-50%) rotateY(var(--angle)) translateZ(calc(var(--radius) + 84px)) rotateZ(0deg) scale(1.045);filter:saturate(1.12) brightness(1.02);z-index:20}
.project-object:hover::before,.project-object:focus-visible::before,.project-object.is-active::before{transform:translate3d(10px,13px,-35px) rotateZ(-1deg) scale(.98);opacity:.82}
.project-object:hover .project-object-media,.project-object:focus-visible .project-object-media,.project-object.is-active .project-object-media{box-shadow:0 35px 52px #1d162438;transform:translateZ(33px)}
.project-object:hover .project-object-media img,.project-object:focus-visible .project-object-media img,.project-object.is-active .project-object-media img{transform:scale(1.065);filter:saturate(1) contrast(1.08)}
.project-object:hover .project-object-logo img,.project-object:focus-visible .project-object-logo img,.project-object.is-active .project-object-logo img{transform:scale(1.1) rotate(-4deg);filter:drop-shadow(0 25px 31px #08060db3)}
.project-object:hover .project-object-meta,.project-object:focus-visible .project-object-meta,.project-object.is-active .project-object-meta{transform:translateZ(43px)}
.project-object:focus-visible{outline:2px solid var(--accent);outline-offset:10px}
@keyframes wall-card-in{from{opacity:0}to{opacity:1}}
.project-wall-controls{position:absolute;left:50%;bottom:18px;z-index:25;display:flex;align-items:center;gap:7px;transform:translateX(-50%);padding:5px;border:1px solid #76528d35;border-radius:999px;background:#ffffffa6;box-shadow:0 14px 30px #1d16240f;backdrop-filter:blur(10px)}
.wall-control{min-width:36px;height:28px;padding:0 9px;border:0;border-radius:999px;color:var(--muted);background:transparent;font:10px var(--mono);letter-spacing:.04em;cursor:pointer;transition:background .25s ease,color .25s ease,transform .25s ease}
.wall-control:hover,.wall-control:focus-visible{color:var(--ink);background:#dfbafa66;transform:translateY(-1px)}
.wall-control:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.wall-control-toggle{min-width:116px}
.project-wall-footer{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-top:17px;padding-top:12px;border-top:1px solid var(--line)}
.project-wall-status,.project-wall-hint{margin:0;color:var(--muted);font:10px var(--mono);letter-spacing:.035em;text-transform:uppercase}
.project-wall-hint{text-align:right}
.work-wall-index{display:grid;grid-template-columns:minmax(160px,.38fr) minmax(0,1fr);gap:8vw;margin-top:77px;padding-top:15px;border-top:1px solid var(--line)}
.work-wall-index>div{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.work-wall-index a{display:flex;justify-content:space-between;gap:14px;padding-bottom:6px;border-bottom:1px solid var(--line);font:20px/1.25 var(--display);text-decoration:none}
.work-wall-index a span{color:var(--muted);font:12px var(--mono);padding-top:3px;transition:transform .3s ease,color .2s}
.work-wall-index a:hover span{color:var(--accent);transform:translate(3px,-3px)}
@media(max-width:1100px){
  .work-wall-head{grid-template-columns:1fr;gap:24px}.work-wall-head>p{margin:0}.project-wall{height:760px;perspective:1300px}.project-object{width:34vw;--radius:34vw}.project-wall-track{width:91%}.project-object-meta small{font-size:10px}.work-wall-index{gap:40px}.work-wall-index>div{gap:16px}
}
@media(max-width:767px){
  .work-wall-section{padding-top:85px}.work-wall-head h2{font-size:49px}.work-wall-head>p{font-size:14px}.project-wall{height:620px;margin-top:37px;perspective:900px}.project-wall::before{inset:3% 0 5%}.project-wall-grid{inset:8% -4% 0;background-size:42px 42px;transform:translateZ(-100px) rotateX(67deg) scale(1.16)}.project-wall-track{top:43%;width:126%;height:54%;transform:translate(-50%,-50%) rotateX(72deg) translateZ(-105px)}.project-wall-core{top:43%;width:104px;height:104px;gap:5px;font-size:7px}.project-wall-core b{font-size:30px}.project-object{top:43%;width:61vw;--radius:44vw}.project-object-meta{column-gap:7px;padding-top:9px}.project-object-id{font-size:8px;margin-bottom:2px}.project-object-meta strong{font-size:19px}.project-object-meta small{font-size:9px}.project-wall-controls{bottom:13px}.wall-control{min-width:32px;height:26px;font-size:9px}.wall-control-toggle{min-width:106px}.project-wall-footer{display:block;margin-top:10px}.project-wall-hint{margin-top:9px;text-align:left}.work-wall-index{display:block;margin-top:55px}.work-wall-index>div{grid-template-columns:1fr;gap:17px;margin-top:17px}.work-wall-index a{font-size:22px}
}
@media(prefers-reduced-motion:reduce){
  .project-wall{cursor:default}.project-wall-orbit{transform:rotateX(0deg) rotateY(0deg)!important;transition:none}.project-wall-track{transform:translate(-50%,-50%) rotateX(72deg) translateZ(-105px)!important}.project-object,.project-object:hover,.project-object:focus-visible,.project-object.is-active{animation:none!important;transform:translate(-50%,-50%) rotateY(var(--angle)) translateZ(var(--radius)) rotateZ(var(--rz))!important;filter:none;transition:none}.project-object::before,.project-object:hover::before,.project-object:focus-visible::before,.project-object.is-active::before{transform:translateZ(-22px)!important;transition:none}.project-object-media,.project-object:hover .project-object-media,.project-object:focus-visible .project-object-media,.project-object.is-active .project-object-media,.project-object-meta,.project-object:hover .project-object-meta,.project-object:focus-visible .project-object-meta,.project-object.is-active .project-object-meta{transform:none;transition:none}.project-object-media img,.project-object:hover .project-object-media img,.project-object:focus-visible .project-object-media img,.project-object.is-active .project-object-media img,.project-object-logo img,.project-object:hover .project-object-logo img,.project-object:focus-visible .project-object-logo img,.project-object.is-active .project-object-logo img,.work-wall-index a span{transform:none;transition:none}}
