:root{--paper: #f2efe8;--paper-2: #e9e4d8;--ink: #17120d;--ink-soft: #3a332b;--ink-faint: #8a8275;--rule-soft: #c9c2b2;--accent: #c25a2b;--accent-ink: #ffffff;--f-display: "Instrument Serif", "Times New Roman", serif;--f-sans: "Inter Tight", system-ui, sans-serif;--f-mono: "JetBrains Mono", ui-monospace, monospace;--scale: 1.15}[data-concept=technical]{--paper:#ededea;--paper-2:#dedbd4;--ink:#0a0a0a}[data-concept=launch]{--paper:#f7f4ec;--paper-2:#ecead8;--ink:#0f0f0e}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}html,body{background:var(--paper);color:var(--ink);font-family:var(--f-sans)}body{font-size:calc(16px * var(--scale));line-height:1.55;overflow-x:hidden;-webkit-font-smoothing:antialiased}::selection{background:var(--accent);color:var(--accent-ink)}a{color:inherit;text-decoration:none}.grain{position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.06;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.frame{max-width:1520px;margin:0 auto;padding:0 clamp(24px,5vw,88px)}.masthead{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--paper) 88%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid rgba(23,18,13,.08)}.masthead-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;padding:18px 0;font-family:var(--f-mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em}.masthead-left,.masthead-right{display:flex;gap:24px;align-items:center}.masthead-right{justify-content:flex-end}.masthead-center{font-family:var(--f-display);font-style:italic;font-size:22px;letter-spacing:0;text-transform:none}.masthead a{cursor:pointer;color:var(--ink-soft);transition:color .25s ease}.masthead a:hover{color:var(--accent)}.hero{position:relative;padding:clamp(56px,9vw,140px) 0 clamp(100px,14vw,200px)}.hero-meta{display:flex;justify-content:space-between;align-items:baseline;gap:40px;flex-wrap:wrap;font-family:var(--f-mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);margin-bottom:clamp(72px,12vw,160px)}.hero-meta .m .lbl{color:var(--ink-faint);display:block;margin-bottom:6px}.hero-meta .m .val{color:var(--ink)}.hero-name{font-family:var(--f-display);font-weight:400;line-height:.82;letter-spacing:-.04em;font-size:clamp(90px,20vw,320px);display:grid;grid-template-columns:1fr}.hero-name .line{display:block}.hero-name .last{text-align:right;font-style:italic}.hero-sub{display:grid;grid-template-columns:repeat(12,1fr);gap:40px;margin-top:clamp(56px,8vw,112px);align-items:end}.hero-sub .tagline{grid-column:1 / span 8;font-family:var(--f-display);font-style:italic;font-size:clamp(26px,3vw,42px);line-height:1.2;color:var(--ink-soft)}.hero-sub .tagline em{font-style:normal;color:var(--accent)}.hero-sub .scroll-cue{grid-column:11 / span 2;justify-self:end;font-family:var(--f-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);writing-mode:vertical-rl;transform:rotate(180deg)}.hero-sub .scroll-cue:after{content:"";display:block;width:1px;height:48px;background:var(--ink-faint);margin:10px auto 0}.scene{position:relative;height:360vh;border-top:1px solid rgba(23,18,13,.08);border-bottom:1px solid rgba(23,18,13,.08)}.scene-sticky{position:sticky;top:0;height:100vh;display:flex;align-items:center;justify-content:center;overflow:hidden}.scene-caption{position:absolute;left:0;right:0;bottom:8vh;text-align:center;font-family:var(--f-display);font-style:italic;font-size:clamp(22px,2.6vw,38px);color:var(--ink-soft);opacity:0;transition:opacity .6s ease;pointer-events:none}.scene-caption .tag{display:block;font-family:var(--f-mono);font-style:normal;font-size:10px;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-faint);margin-bottom:10px}.stage3d{width:min(900px,82vw);aspect-ratio:16 / 9;perspective:1600px;perspective-origin:50% 40%}.keyboard{position:relative;width:100%;height:100%;transform-style:preserve-3d;transform:rotateX(60deg) rotate(0) translateZ(0);will-change:transform;transition:transform .08s linear}.key{position:absolute;background:linear-gradient(180deg,color-mix(in srgb,var(--ink) 92%,white) 0%,var(--ink) 100%);color:var(--paper);border-radius:8px;display:flex;align-items:center;justify-content:center;font-family:var(--f-mono);font-weight:500;box-shadow:0 1px #ffffff0f inset,0 -2px #00000080 inset,0 8px 16px #0000002e;transform-style:preserve-3d;will-change:transform}.key.accent{background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 115%,white) 0%,var(--accent) 100%);color:var(--accent-ink)}.key.light{background:linear-gradient(180deg,var(--paper) 0%,var(--paper-2) 100%);color:var(--ink);box-shadow:0 1px #fff9 inset,0 -2px #00000014 inset,0 6px 14px #0000001a}section.doc{padding:clamp(100px,14vw,200px) 0;position:relative}section.doc+section.doc{border-top:1px solid rgba(23,18,13,.08)}.sec-head{display:grid;grid-template-columns:repeat(12,1fr);gap:32px;align-items:baseline;margin-bottom:clamp(64px,8vw,120px)}.sec-head .sec-num{grid-column:1 / span 2;font-family:var(--f-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}.sec-head .sec-title{grid-column:3 / span 10;font-family:var(--f-display);font-style:italic;font-weight:400;font-size:clamp(42px,7vw,120px);line-height:.95;letter-spacing:-.02em}.sec-head .sec-title .normal{font-style:normal}.sec-head .sec-title .accent{color:var(--accent)}.abstract{display:grid;grid-template-columns:repeat(12,1fr);gap:40px}.abstract .label{grid-column:1 / span 2;font-family:var(--f-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);padding-top:10px}.abstract .lede{grid-column:3 / span 9;font-family:var(--f-display);font-size:clamp(28px,3vw,44px);line-height:1.22;letter-spacing:-.01em}.abstract .lede a{border-bottom:1px solid var(--accent);color:var(--accent)}.abstract .lede em{color:var(--accent);font-style:italic}.exhibit{display:grid;grid-template-columns:repeat(12,1fr);gap:40px}.exhibit .exhibit-meta{grid-column:1 / span 3;display:flex;flex-direction:column;gap:18px;font-family:var(--f-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft)}.exhibit .exhibit-meta dt{color:var(--ink-faint);margin-bottom:4px}.exhibit .exhibit-meta dd{color:var(--ink)}.exhibit .exhibit-body{grid-column:4 / span 9}.exhibit h3.role{font-family:var(--f-display);font-size:clamp(36px,4.5vw,72px);line-height:1.02;letter-spacing:-.02em;margin-bottom:20px}.exhibit h3.role .at{font-style:italic;color:var(--ink-faint)}.exhibit h3.role .company{font-style:italic;color:var(--accent)}.exhibit .exhibit-lede{font-family:var(--f-display);font-size:clamp(22px,2vw,30px);line-height:1.3;margin-bottom:28px;color:var(--ink-soft)}.exhibit .exhibit-body p{font-size:16px;line-height:1.8;color:var(--ink-soft);max-width:62ch;margin-bottom:14px}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:32px}.chip{font-family:var(--f-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;padding:6px 10px;border:1px solid var(--rule-soft);border-radius:999px;color:var(--ink-soft);transition:all .25s ease}.chip:hover{border-color:var(--accent);color:var(--accent)}.timeline{margin-top:96px;border-top:1px solid var(--rule-soft)}.tl-item{display:grid;grid-template-columns:repeat(12,1fr);gap:32px;padding:40px 0;border-bottom:1px solid var(--rule-soft);align-items:baseline;transition:background .3s ease}.tl-item:hover{background:var(--paper-2)}.tl-date{grid-column:1 / span 2;font-family:var(--f-mono);font-size:11px;text-transform:uppercase;color:var(--ink-faint);letter-spacing:.08em}.tl-title{grid-column:3 / span 5;font-family:var(--f-display);font-size:clamp(22px,2vw,30px);line-height:1.15}.tl-title .at{color:var(--ink-faint);font-style:italic}.tl-desc{grid-column:8 / span 5;color:var(--ink-soft);font-size:14.5px;line-height:1.65}.works{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(40px,5vw,80px) clamp(32px,4vw,56px)}.work{grid-column:span 6;cursor:pointer;display:block}.work.span-12{grid-column:span 12}.work-figure{position:relative;aspect-ratio:16 / 10;background:var(--paper-2);overflow:hidden;border:1px solid var(--rule-soft);margin-bottom:20px}.work.span-12 .work-figure{aspect-ratio:21 / 9}.work-figure img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .9s cubic-bezier(.2,.8,.2,1)}.work:hover .work-figure img{transform:scale(1.04)}.work-placeholder{position:absolute;inset:0;background-image:linear-gradient(135deg,transparent 46%,rgba(23,18,13,.05) 46%,rgba(23,18,13,.05) 54%,transparent 54%);background-size:14px 14px}.work-idx,.work-year{position:absolute;top:16px;font-family:var(--f-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);background:var(--paper);padding:4px 8px}.work-idx{left:16px}.work-year{right:16px}.work-meta{display:flex;justify-content:space-between;font-family:var(--f-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);margin-bottom:10px}.work-title{font-family:var(--f-display);font-size:clamp(28px,2.6vw,44px);line-height:1.05;letter-spacing:-.01em;margin-bottom:12px}.work-title .arr{display:inline-block;transition:transform .35s cubic-bezier(.2,.8,.2,1);margin-left:6px;color:var(--accent)}.work:hover .work-title .arr{transform:translate(4px,-4px)}.work-desc{font-size:15px;line-height:1.65;color:var(--ink-soft);max-width:52ch}.spec{display:grid;grid-template-columns:repeat(12,1fr);gap:40px}.spec .lede{grid-column:1 / span 5;font-family:var(--f-display);font-size:clamp(36px,4vw,64px);line-height:1.02;letter-spacing:-.02em}.spec .lede .it{font-style:italic;color:var(--accent)}.spec .table{grid-column:7 / span 6}.spec .table .row{display:grid;grid-template-columns:1fr 1.6fr;gap:20px;padding:16px 0;border-bottom:1px solid var(--rule-soft);font-family:var(--f-mono);font-size:12px;text-transform:uppercase;letter-spacing:.06em}.spec .table .row:first-child{border-top:1px solid var(--ink)}.spec .table .row .k{color:var(--ink-faint)}.spec .table .row .v.accent{color:var(--accent)}.spec-courses{margin-top:32px}.spec-courses .lbl{font-family:var(--f-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);margin-bottom:14px}.contact{padding:clamp(100px,16vw,220px) 0}.contact .pre{font-family:var(--f-mono);font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);margin-bottom:20px}.contact .big{font-family:var(--f-display);font-size:clamp(56px,10vw,180px);line-height:.92;letter-spacing:-.03em}.contact .big .it{font-style:italic;color:var(--accent)}.contact .email-link{font-family:var(--f-display);font-style:italic;font-size:clamp(32px,5vw,80px);display:inline-block;margin-top:32px;color:var(--ink);border-bottom:2px solid var(--ink);transition:all .3s ease}.contact .email-link:hover{color:var(--accent);border-color:var(--accent)}.contact .social-row{display:flex;gap:32px;flex-wrap:wrap;margin-top:56px;font-family:var(--f-mono);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.contact .social-row a{color:var(--ink-soft);border-bottom:1px solid var(--rule-soft);padding-bottom:2px}.contact .social-row a:hover{color:var(--accent);border-color:var(--accent)}.colophon{padding:32px 0 40px;display:grid;grid-template-columns:repeat(12,1fr);gap:20px;font-family:var(--f-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);border-top:1px solid rgba(23,18,13,.08)}.colophon .c1{grid-column:span 4}.colophon .c2{grid-column:span 4;text-align:center}.colophon .c3{grid-column:span 4;text-align:right}.tweaks-panel{position:fixed;right:24px;bottom:24px;z-index:100;width:280px;background:var(--paper);border:1px solid var(--ink);box-shadow:0 12px 40px #0000001f;padding:16px;display:none;font-family:var(--f-mono);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.tweaks-panel.open{display:block}.tweaks-panel h4{font-family:var(--f-display);font-style:italic;font-size:20px;text-transform:none;letter-spacing:0;margin-bottom:14px;font-weight:400}.tweaks-panel .tw-row{margin-bottom:14px}.tweaks-panel .tw-label{color:var(--ink-faint);margin-bottom:6px}.tweaks-panel .tw-btns{display:flex;gap:6px;flex-wrap:wrap}.tweaks-panel .tw-btn{padding:6px 10px;border:1px solid var(--rule-soft);background:var(--paper);color:var(--ink-soft);font-family:var(--f-mono);font-size:10px;text-transform:uppercase;letter-spacing:.06em;cursor:pointer}.tweaks-panel .tw-btn.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.tweaks-panel .tw-swatches{display:flex;gap:6px}.tweaks-panel .tw-swatch{width:28px;height:28px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .2s ease}.tweaks-panel .tw-swatch.active{border-color:var(--ink);transform:scale(1.1)}.mobile-menu-btn{display:none;background:none;border:none;cursor:pointer;padding:4px;flex-direction:column;gap:5px;margin-left:auto}.mobile-menu-btn span{display:block;width:22px;height:1.5px;background:var(--ink);transition:all .3s ease}.mobile-drawer{position:fixed;inset:0;z-index:200;pointer-events:none;visibility:hidden}.mobile-drawer.open{pointer-events:all;visibility:visible}.mobile-drawer-overlay{position:absolute;inset:0;background:#17120d00;transition:background .35s ease}.mobile-drawer.open .mobile-drawer-overlay{background:#17120d59}.mobile-drawer-nav{position:absolute;top:0;right:0;bottom:0;width:min(320px,85vw);background:var(--paper);border-left:1px solid var(--rule-soft);display:flex;flex-direction:column;padding:32px 28px;gap:4px;transform:translate(100%);transition:transform .35s cubic-bezier(.2,.8,.2,1)}.mobile-drawer.open .mobile-drawer-nav{transform:translate(0)}.mobile-drawer-close{align-self:flex-end;background:none;border:none;cursor:pointer;font-family:var(--f-mono);font-size:18px;color:var(--ink-faint);margin-bottom:24px;transition:color .2s ease}.mobile-drawer-close:hover{color:var(--accent)}.mobile-nav-link{font-family:var(--f-display);font-style:italic;font-size:clamp(28px,7vw,36px);line-height:1.2;color:var(--ink);cursor:pointer;border-bottom:none;padding:8px 0;transition:color .2s ease}.mobile-nav-link:hover{color:var(--accent)}.mobile-nav-resume{font-family:var(--f-mono);font-style:normal;font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);margin-top:auto;padding-top:24px;border-top:1px solid var(--rule-soft)}.mobile-nav-resume:hover{color:var(--accent)}@media (max-width: 900px){.masthead-left,.masthead-right{display:none}.masthead-row{grid-template-columns:1fr auto}.mobile-menu-btn{display:flex}.hero-sub .tagline,.hero-sub .scroll-cue{grid-column:1 / -1}.hero-sub .scroll-cue{writing-mode:horizontal-tb;transform:none;justify-self:start}.sec-head .sec-num,.sec-head .sec-title,.abstract .label,.abstract .lede,.exhibit .exhibit-meta,.exhibit .exhibit-body,.tl-date,.tl-title,.tl-desc{grid-column:1 / -1}.work,.work.span-12{grid-column:span 12}.spec .lede,.spec .table{grid-column:1 / -1}.scene{height:240vh}.stage3d{width:94vw}}
