@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;0,6..72,600;1,6..72,400&display=swap";:root{--bg: #F7F6F2;--ink: #1C1B18;--muted: #78766C;--line: #E3E0D4;--accent: #B4501A;--accent-soft: #F0E3D6}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:Newsreader,serif;font-size:17px;line-height:1.6}a{color:var(--ink)}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.mono{font-family:IBM Plex Mono,monospace;font-size:13px;letter-spacing:.01em}header.site-nav{display:flex;justify-content:space-between;align-items:baseline;padding:28px 7vw;border-bottom:1px solid var(--line);flex-wrap:wrap;gap:12px}header.site-nav .name{font-size:17px;font-weight:600;text-decoration:none}header.site-nav nav a{text-decoration:none;color:var(--muted);margin-left:26px;font-family:IBM Plex Mono,monospace;font-size:13px}header.site-nav nav a:hover{color:var(--accent)}main{max-width:760px;margin:0 auto;padding:0 7vw}main.wide{max-width:920px}.hero{padding:64px 0 48px}.hero h1{font-size:40px;font-weight:500;line-height:1.28;margin:0 0 20px;max-width:16ch}.hero p{font-size:18px;color:#3a3833;max-width:56ch;margin:0}.project-list{margin:20px 0 80px;border-top:1px solid var(--line)}.project-row{display:flex;justify-content:space-between;align-items:baseline;gap:24px;padding:22px 0;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}.project-row:hover .project-title{color:var(--accent)}.project-row .left{flex:1;min-width:0}.project-title{font-size:20px;font-weight:500;margin:0 0 4px}.project-desc{color:var(--muted);font-size:15px;margin:0}.project-tag{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--muted);white-space:nowrap;padding-top:3px}footer{border-top:1px solid var(--line);padding:40px 7vw 60px;margin-top:60px}footer .row{display:flex;align-items:baseline;flex-wrap:wrap;gap:14px;max-width:920px;margin:0 auto}footer a{font-family:IBM Plex Mono,monospace;font-size:13px;color:var(--muted);text-decoration:none;margin-right:22px}footer a:hover{color:var(--accent)}footer .note{font-family:IBM Plex Mono,monospace;font-size:12px;color:#a4a196}.project-header{padding:48px 0 8px;border-bottom:1px solid var(--line)}.project-header .doc-id{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--muted);margin-bottom:18px}.project-header h1{font-size:34px;font-weight:500;line-height:1.25;margin:0 0 14px;max-width:20ch}.project-header .meta{font-family:IBM Plex Mono,monospace;font-size:13px;color:var(--muted);margin-bottom:28px}table.params{border-collapse:collapse;width:100%;margin:36px 0 44px;font-family:IBM Plex Mono,monospace;font-size:13.5px}table.params td{padding:11px 0;border-bottom:1px solid var(--line);vertical-align:top}table.params td:first-child{color:var(--muted);width:34%;padding-right:16px}table.params td:last-child{color:var(--accent)}.writeup p{max-width:66ch;margin:0 0 20px}.writeup h2{font-size:15px;font-weight:600;font-family:IBM Plex Mono,monospace;color:var(--muted);margin:44px 0 16px}.photo-slot{margin:8px 0 44px;aspect-ratio:16 / 9;border:1px solid var(--line);background:repeating-linear-gradient(135deg,var(--accent-soft) 0px,var(--accent-soft) 1px,transparent 1px,transparent 14px);display:flex;align-items:center;justify-content:center;color:var(--muted);font-family:IBM Plex Mono,monospace;font-size:12.5px}.photo-grid{display:grid;grid-template-columns:1fr;gap:26px;margin:8px 0 44px}.photo-grid figure{margin:0}.photo-grid img{width:100%;display:block;border:1px solid var(--line)}.photo-grid figcaption{color:var(--muted);margin-top:8px}@media (max-width: 640px){.photo-grid{grid-template-columns:1fr}}.links-row{margin:8px 0 60px;display:flex;gap:26px;flex-wrap:wrap}.links-row a{font-family:IBM Plex Mono,monospace;font-size:13.5px;text-decoration:none;color:var(--ink);border-bottom:1px solid var(--accent);padding-bottom:2px}.links-row a:hover{color:var(--accent)}.other-projects{border-top:1px solid var(--line);padding-top:28px;margin-top:20px}.other-projects .label{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--muted);margin-bottom:14px}.other-projects a{display:block;padding:12px 0;text-decoration:none;font-size:16px;border-bottom:1px solid var(--line)}.other-projects a:hover{color:var(--accent)}@media (max-width: 640px){.hero h1{font-size:30px}.project-header h1{font-size:27px}.project-row{flex-direction:column;gap:4px}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}html{scroll-padding-top:72px}.home{--peek: clamp(140px, 20vh, 220px);--h0: min(66.667vw, max(calc(100vh - var(--peek)), 420px))}.home-hero{position:sticky;top:0;z-index:0;color:#fff}.hero-media{position:relative;height:var(--h0);overflow:hidden;background:#20242e}.hero-img{position:absolute;left:0;top:0;width:100%;height:100%;max-width:none;object-fit:cover;object-position:center 64%;display:block}.hero-dim{position:absolute;top:0;right:0;bottom:0;left:0;background:#080a12;opacity:0;pointer-events:none}.hero-media:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(to bottom,#080a128c,#080a1233 30%,#080a1200 55%),linear-gradient(to right,#080a12a8,#080a1266 32%,#080a1200 62%)}.home-body{display:flow-root;position:relative;z-index:1;background:var(--bg);box-shadow:0 -16px 40px #00000038}.home .site-nav{position:fixed;top:0;left:0;right:0;z-index:10;border-bottom:1px solid transparent;transition:background-color .2s ease,border-color .2s ease}.home .site-nav .name{color:#fff;text-shadow:0 1px 12px rgba(0,0,0,.55)}.home .site-nav nav a{color:#ffffffeb;text-shadow:0 1px 12px rgba(0,0,0,.55)}.home .site-nav nav a:hover{color:#fff}.home .site-nav.nav-solid{background:#f7f6f2f5;border-bottom-color:var(--line)}.home .site-nav.nav-solid .name{color:var(--ink);text-shadow:none}.home .site-nav.nav-solid nav a{color:var(--muted);text-shadow:none}.home .site-nav.nav-solid nav a:hover{color:var(--accent)}.home-hero-text{position:absolute;left:7vw;right:7vw;top:calc(var(--h0) * .24);z-index:2}.home-hero-text h1{font-size:clamp(34px,5.2vw,62px);font-weight:500;line-height:1.12;margin:0 0 18px;max-width:18ch;text-shadow:0 2px 24px rgba(0,0,0,.55),0 1px 3px rgba(0,0,0,.35)}.home-hero-text p{font-size:clamp(17px,1.7vw,21px);line-height:1.5;max-width:44ch;margin:0;color:#fff;text-shadow:0 1px 16px rgba(0,0,0,.6),0 1px 3px rgba(0,0,0,.4)}.intro{font-size:21px;line-height:1.55;max-width:58ch;margin:40px 0 44px;color:#2e2d29}.home main{margin:0;padding:0 7vw;max-width:900px}.home footer .row{margin:0}@media (max-width: 700px){.home{--h0: 92vw}.home-hero{position:relative;color:var(--ink)}.home .site-nav{position:absolute}.hero-media:after{background-image:linear-gradient(to bottom,#080a1299,#080a1226 38%,#080a1200 55%)}.hero-img{width:140%;height:auto;left:-12.8%;top:auto;bottom:0;object-fit:fill}.home-hero-text{position:static;padding:28px 7vw 0}.home-hero-text h1{color:var(--ink);text-shadow:none}.home-hero-text p{color:#3a3833;text-shadow:none}.intro{margin-top:28px}.home-body{box-shadow:none}header.site-nav nav a{margin-left:0;margin-right:20px}}@media (prefers-reduced-motion: reduce){.home-hero{position:relative}.home .site-nav{position:absolute}.home-body{box-shadow:none}}.viewer-wrap{margin:8px 0 20px;border:1px solid var(--line);background:#efede5;aspect-ratio:16 / 10;position:relative}.viewer-wrap canvas{width:100%;height:100%;display:block;cursor:grab}.viewer-wrap canvas:active{cursor:grabbing}.viewer-hint{position:absolute;bottom:10px;left:12px;font-family:IBM Plex Mono,monospace;font-size:11.5px;color:var(--muted);background:#f7f6f2d9;padding:3px 8px}.viewer-status{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:IBM Plex Mono,monospace;font-size:13px;color:var(--muted)}.page-intro{max-width:66ch;margin:28px 0 0}main{margin:0;padding:0 7vw;max-width:900px}footer .row{margin:0}.project-header h1{max-width:24ch}.intro{font-size:20px}.intro+.intro{margin-top:-22px}.intro{max-width:70ch}.home .site-nav.nav-solid{background:#f7f6f2fc}.shot-row{display:flex;gap:14px;overflow-x:auto;background:#0d0d0d;padding:18px;margin:8px 0 44px;border:1px solid var(--line)}.shot-row img{height:400px;width:auto;flex:0 0 auto;display:block}@media (max-width: 700px){.shot-row img{height:320px}}
