:root{--paper:#F2F0E9;--paper-2:#ECE9E0;--ink:#1A1713;--ink-mid:#55504A;--ink-soft:#8A8479;--rule:#D7D2C6;--rule-strong:#BDB7A9;--line:#CFC9BB;--signal:#B23A26;--signal-ink:#9C3220;--wire:#6B655B;--surface:#ECE9E0;--void:#1A1713;--sp:clamp(1.25rem,4vw,2.5rem);--maxw:1180px;--f-display:"Fraunces",Georgia,serif;--f-mono:"IBM Plex Mono",ui-monospace,monospace;--f-sans:"IBM Plex Sans",system-ui,sans-serif}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--f-sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:40px 40px;background-position:-1px -1px}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--sp)}a{color:inherit}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--signal);outline-offset:3px}.mono{font-family:var(--f-mono)}.topbar{position:sticky;top:0;z-index:60;background:#f2f0e9db;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--rule-strong)}.topbar .wrap{display:flex;align-items:center;justify-content:space-between;height:56px}.mark{font-family:var(--f-display);font-weight:600;font-size:1.02rem;letter-spacing:-.01em;color:var(--ink);text-decoration:none}.mark .dot{color:var(--signal)}.nav{display:flex;gap:clamp(1rem,3vw,2rem)}.nav a{font-size:.95rem;text-decoration:none;color:var(--ink-mid);padding-bottom:2px;border-bottom:1px solid transparent;transition:color .2s,border-color .2s}.nav a:hover{color:var(--ink);border-bottom-color:var(--signal)}.hero{position:relative;overflow:hidden;padding:clamp(3.5rem,9vw,6.5rem) 0 clamp(2.5rem,6vw,4rem);min-height:min(74vh,660px);display:flex;align-items:center}.hero .wrap{position:relative;z-index:1;display:block}.hero-field{display:none}.hero-name{font-family:var(--f-display);font-weight:900;font-size:clamp(3.2rem,11vw,8.5rem);letter-spacing:-.02em;line-height:.9;color:var(--ink)}.hero-name em{font-style:italic;display:block;font-weight:400;color:var(--wire)}.hero-lede{margin-top:1.8rem;font-family:var(--f-display);font-size:clamp(1.2rem,2.3vw,1.6rem);font-weight:400;line-height:1.45;color:var(--ink);max-width:40ch}.hero-lede b{font-weight:600}.availability{display:inline-flex;align-items:center;gap:.5rem;margin-bottom:1.5rem;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.02em;color:var(--signal);border:1px solid var(--rule-strong);padding:.3rem .7rem;border-radius:99px}.pulse{width:7px;height:7px;border-radius:50%;background:var(--signal)}.hero-stats{display:flex;flex-wrap:wrap;gap:clamp(1.5rem,5vw,3.5rem);margin-top:2.6rem;padding-top:1.6rem;border-top:1px solid var(--rule-strong)}.hstat b{display:block;font-family:var(--f-display);font-weight:700;font-size:clamp(1.8rem,3.6vw,2.5rem);letter-spacing:-.02em;line-height:1}.hstat span{display:block;font-family:var(--f-mono);font-size:.7rem;color:var(--ink-soft);margin-top:.45rem}.intro{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:var(--void);overflow:hidden}.intro canvas{display:block;width:100%;height:100%}.intro-skip{position:absolute;right:1.1rem;bottom:1.1rem;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.04em;color:#ffffff8c;background:transparent;border:1px solid rgba(255,255,255,.28);padding:.42rem .8rem;border-radius:2px;cursor:pointer;transition:color .2s,border-color .2s}.intro-skip:hover{color:#fff;border-color:#fff}.scan{border-top:1px solid var(--rule-strong);border-bottom:1px solid var(--rule-strong);background:var(--paper-2)}.scan .wrap{display:grid;grid-template-columns:repeat(3,1fr)}.scan-cell{padding:clamp(1.6rem,3.5vw,2.4rem) clamp(1.3rem,3vw,2rem);border-left:1px solid var(--rule)}.scan-cell:first-child{border-left:none;padding-left:0}.scan-cell:last-child{padding-right:0}.scan-cell h3{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.02em;color:var(--signal)}.scan-cell p{margin-top:.6rem;font-size:clamp(.98rem,1.7vw,1.08rem);line-height:1.45;color:var(--ink);max-width:30ch}.dim{display:flex;align-items:center;gap:.65rem;margin:clamp(3.5rem,8vw,5.5rem) 0 clamp(1.5rem,3vw,2rem)}.dim .tick{width:1px;height:11px;background:var(--rule-strong);flex:none}.dim .line{height:1px;background:var(--rule-strong);flex:1}.dim .label{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.02em;color:var(--ink-mid);white-space:nowrap}h2{font-family:var(--f-display);font-weight:600;font-size:clamp(2.1rem,4.8vw,3.2rem);letter-spacing:-.02em;line-height:1.05}.h2-sub{color:var(--ink-mid);margin-top:.8rem;max-width:50ch}.proj-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1.5rem,4vw,3rem);margin-top:clamp(1.75rem,4vw,3rem)}.proj-grid>*{height:100%}.tile{display:flex;flex-direction:column;height:100%;text-decoration:none;color:inherit}.tile-img{aspect-ratio:4/3;width:100%;overflow:hidden;border:1px solid var(--rule-strong);background:var(--surface)}.tile-img img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;transition:transform .35s ease}.projlink:hover .tile-img{border-color:var(--signal)}.projlink:hover .tile-img img{transform:scale(1.02)}.tile-body{display:flex;flex-direction:column;flex:1;padding-top:1.1rem}.tile-body .tags{margin-top:.85rem}.tile-body .viewmore{margin-top:auto}.projlink{text-decoration:none;color:inherit}.headline-num{font-family:var(--f-display);font-weight:900;font-size:clamp(2.8rem,7.5vw,4.8rem);letter-spacing:-.03em;line-height:.9;color:var(--ink);transition:color .25s ease}.projlink:hover .headline-num{color:var(--signal-ink)}.headline-num u{text-decoration:none;font-size:.36em;color:var(--ink-mid);display:inline-block;margin-left:.2em}.headline-cap{font-family:var(--f-display);font-style:italic;font-size:1rem;color:var(--ink-mid);margin-top:.9rem;max-width:30ch;line-height:1.5}.p-id{font-family:var(--f-mono);font-size:.72rem;color:var(--ink-soft);margin-bottom:.6rem}.p-title{font-family:var(--f-display);font-weight:600;font-size:clamp(1.5rem,2.8vw,2rem);letter-spacing:-.015em;line-height:1.12}.p-desc{margin-top:.85rem;color:var(--ink-mid);max-width:58ch}.tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1.15rem}.tag{font-family:var(--f-mono);font-size:.72rem;border:1px solid var(--rule-strong);padding:.2rem .55rem;color:var(--ink-mid)}.viewmore{display:inline-flex;align-items:center;gap:.4rem;margin-top:1.4rem;font-family:var(--f-sans);font-size:.95rem;color:var(--signal-ink);border-bottom:1px solid var(--signal);padding-bottom:2px}.caps{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));border:1px solid var(--rule-strong)}.cap{background:var(--paper);padding:1.4rem 1.3rem;border-left:1px solid var(--rule)}.cap:first-child{border-left:none}.cap h3{font-family:var(--f-display);font-weight:600;font-size:1.08rem;color:var(--ink);margin-bottom:.9rem}.cap ul{list-style:none;display:flex;flex-direction:column;gap:.4rem}.cap li{font-size:.9rem;color:var(--ink-mid);display:flex;gap:.5rem}.cap li:before{content:"";width:5px;height:5px;margin-top:.55em;background:var(--signal);flex:none}.role{display:grid;grid-template-columns:150px minmax(0,1fr);gap:clamp(.75rem,3vw,2.5rem);padding:1.5rem 0;border-top:1px solid var(--rule)}.role:first-of-type{border-top:1px solid var(--rule-strong)}.role .when{font-family:var(--f-mono);font-size:.78rem;color:var(--ink-soft);padding-top:.3rem}.role h3{font-family:var(--f-display);font-weight:600;font-size:1.2rem;letter-spacing:-.01em}.role .org{font-family:var(--f-mono);font-size:.78rem;color:var(--signal-ink);margin-top:.25rem}.role ul{list-style:none;margin-top:.75rem;display:flex;flex-direction:column;gap:.4rem}.role li{color:var(--ink-mid);font-size:.95rem;display:flex;gap:.55rem}.role li:before{content:"";width:5px;height:5px;margin-top:.55em;background:var(--rule-strong);flex:none}.contact{border-top:1px solid var(--rule-strong);background:var(--paper-2);margin-top:clamp(3.5rem,8vw,5.5rem);padding:clamp(3.5rem,8vw,5.5rem) 0}.contact h2{font-size:clamp(2.2rem,5.5vw,3.6rem);max-width:18ch}.contact p{color:var(--ink-mid);margin-top:1.1rem;max-width:46ch;font-size:1.08rem}.contact-links{display:flex;flex-wrap:wrap;gap:1.1rem 2.4rem;margin-top:2.4rem}.contact-links a{font-family:var(--f-mono);font-size:1rem;text-decoration:none;border-bottom:1px solid var(--rule-strong);padding-bottom:4px;transition:border-color .2s,color .2s}.contact-links a:hover{border-bottom-color:var(--signal);color:var(--signal)}footer{background:var(--paper);border-top:1px solid var(--rule)}footer .wrap{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;justify-content:space-between;padding:1.1rem 0;font-family:var(--f-mono);font-size:.75rem;color:var(--ink-soft)}.dhero{position:relative;overflow:hidden;border-bottom:1px solid var(--rule-strong);padding:clamp(2.5rem,5vw,3.75rem) 0 clamp(2.5rem,6vw,4rem)}.dhero .wrap{position:relative;z-index:1}.detail-back{display:inline-flex;align-items:center;gap:.45rem;font-family:var(--f-mono);font-size:.78rem;color:var(--ink-mid);text-decoration:none;transition:color .2s}.detail-back:hover{color:var(--signal)}.detail-eyebrow{font-family:var(--f-mono);font-size:.78rem;color:var(--ink-soft);margin-top:1.8rem}.detail-title{font-family:var(--f-display);font-weight:700;font-size:clamp(2.1rem,5vw,3.4rem);letter-spacing:-.02em;line-height:1.04;margin-top:.8rem;max-width:20ch}.detail-num{font-family:var(--f-display);font-weight:900;font-size:clamp(3.4rem,10vw,6rem);letter-spacing:-.03em;line-height:.9;margin-top:1.8rem;color:var(--ink)}.detail-num u{text-decoration:none;display:block;font-family:var(--f-mono);font-weight:400;font-size:.2em;letter-spacing:.02em;color:var(--ink-soft);margin-top:.5em}.detail-cap{font-family:var(--f-display);font-style:italic;font-size:1.1rem;color:var(--ink-mid);margin-top:.9rem;max-width:40ch;line-height:1.5}.detail-body{padding:clamp(2.5rem,6vw,4rem) 0 clamp(1.5rem,3vw,2.25rem);display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:clamp(2rem,5vw,4rem);align-items:start}.detail-section{margin-bottom:2rem}.detail-section h2{font-family:var(--f-display);font-weight:600;font-size:1.35rem;letter-spacing:-.01em;color:var(--ink)}.detail-section p{margin-top:.75rem;font-size:1.08rem;line-height:1.65;color:var(--ink-mid);max-width:62ch}.detail-list{margin-top:1rem;max-width:62ch;list-style:none;display:flex;flex-direction:column;gap:.8rem}.detail-list li{position:relative;padding-left:1.3rem;font-size:1.08rem;line-height:1.6;color:var(--ink-mid)}.detail-list li:before{content:"";position:absolute;left:0;top:.62em;width:6px;height:6px;background:var(--signal)}.detail-list li strong{color:var(--ink);font-weight:600}.detail-aside{position:sticky;top:76px}.detail-gallery{display:flex;flex-wrap:wrap;justify-content:center;gap:1rem;margin-top:0}.detail-gallery img{flex:1 1 340px;max-width:calc(33.333% - .67rem);min-width:320px;height:auto;object-fit:contain;display:block;border:1px solid var(--rule-strong);background:var(--surface)}.detail-gallery--wide img{max-width:calc(50% - .5rem)}.detail-figure figcaption{font-family:var(--f-mono);font-size:.72rem;color:var(--ink-soft);text-align:center;padding:1rem}.spec-card{border:1px solid var(--ink);background:var(--paper)}.spec-card h3{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.04em;color:var(--ink);background:var(--paper-2);border-bottom:1px solid var(--rule-strong);padding:.7rem 1rem;margin:0}.specs{width:100%;border-collapse:collapse;font-family:var(--f-mono)}.specs th,.specs td{border-bottom:1px solid var(--rule);padding:.55rem 1rem;font-size:.76rem;text-align:left}.specs tr:last-child th,.specs tr:last-child td{border-bottom:none}.specs th{font-weight:400;color:var(--ink-mid);width:48%}.specs td{font-weight:500;color:var(--ink);text-align:right}.aside-links{display:flex;flex-wrap:wrap;gap:1.1rem;margin-top:1.3rem}.aside-links a{font-family:var(--f-mono);font-size:.8rem;text-decoration:none;border-bottom:1px solid var(--signal);padding-bottom:2px}.aside-links a:hover{background:#b23a261a}.detail-next{border-top:1px solid var(--rule-strong);padding:1.7rem 0 clamp(3rem,7vw,5rem);margin-top:clamp(2rem,4vw,3rem)}.detail-next a{font-family:var(--f-mono);font-size:.85rem;text-decoration:none;color:var(--ink-mid);border-bottom:1px solid var(--rule-strong);padding-bottom:2px;transition:color .2s,border-color .2s}.detail-next a:hover{color:var(--signal-ink);border-bottom-color:var(--signal)}.reveal{opacity:0;transform:translateY(14px);transition:opacity .55s ease,transform .55s ease}.reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}@media (max-width:900px){.hero{padding-top:2.5rem;min-height:auto}.scan .wrap{grid-template-columns:1fr}.scan-cell{border-left:none;border-top:1px solid var(--rule);padding-left:0}.scan-cell:first-child{border-top:none}.proj-grid{grid-template-columns:1fr;gap:2rem}.role{grid-template-columns:1fr;gap:.4rem}.detail-body{grid-template-columns:1fr;gap:2rem}.detail-aside{position:static}.cap{border-left:none;border-top:1px solid var(--rule)}.cap:first-child{border-top:none}.nav a:not(.keep){display:none}}.owner{display:inline-block;font-family:var(--f-mono);font-size:.62rem;font-weight:500;letter-spacing:.06em;padding:.16rem .45rem;border-radius:2px;margin-left:.6rem;vertical-align:middle}.owner-SOLE{color:var(--paper);background:var(--signal)}.owner-LEAD{color:var(--signal-ink);border:1px solid var(--signal)}.owner-TEAM{color:var(--ink-mid);border:1px solid var(--rule-strong)}.p-desc strong,.detail-section p strong{color:var(--ink);font-weight:600}.sheet{max-width:var(--maxw);margin:clamp(1.25rem,3.5vw,2.25rem) auto;border:1.5px solid var(--ink);background:var(--paper)}.sheet-top{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;border-bottom:1px solid var(--rule-strong);padding:.7rem clamp(1.1rem,3.5vw,2.25rem);font-family:var(--f-mono);font-size:.72rem;color:var(--ink-mid)}.sheet-top b{color:var(--ink);font-weight:500}.sheet-top .r{color:var(--ink-soft)}.sheet-body{padding:clamp(1.75rem,4vw,3rem) clamp(1.1rem,3.5vw,2.25rem)}.hero{min-height:auto;display:block;overflow:visible;padding:clamp(2.75rem,8vw,5.5rem) clamp(1.1rem,3.5vw,2.25rem) clamp(1.75rem,4vw,3rem)}.dimrule{display:flex;align-items:center;margin-top:clamp(2rem,5vw,3.25rem)}.dimrule .t{width:1px;height:8px;background:var(--signal);flex:none}.dimrule .l{height:1px;background:var(--signal);flex:1}.contact{margin-top:clamp(1.25rem,3.5vw,2.25rem);background:var(--paper);border-top:none;padding:0}.contact .sheet-body{padding-top:clamp(2.25rem,5vw,3.5rem);padding-bottom:clamp(2.25rem,5vw,3.5rem)}.contact h2{max-width:22ch}.contact p{margin-bottom:0}.p-visual{display:flex;align-items:flex-start;justify-content:flex-start}.p-visual img{width:100%;border:1px solid var(--rule-strong);background:var(--surface);display:block}.projlink:hover .p-visual img{border-color:var(--signal)}.p-metric{font-family:var(--f-mono);font-size:.78rem;color:var(--ink-mid);margin-top:.5rem;line-height:1.5}.p-metric b{color:var(--signal-ink);font-weight:600}.work{padding:clamp(.5rem,1.5vw,1rem) 0 0}.work-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;border-bottom:1px solid var(--ink);padding-bottom:.7rem;margin-bottom:clamp(1.5rem,3.5vw,2.25rem)}.work-head .h{font-family:var(--f-display);font-weight:600;font-size:clamp(1.5rem,3.5vw,2.1rem);letter-spacing:-.01em;color:var(--ink)}.work-head .r{font-family:var(--f-mono);font-size:.78rem;color:var(--ink-soft)}.tile{border:1.5px solid var(--ink);background:var(--paper);display:flex;flex-direction:column;height:100%;text-decoration:none;color:inherit;transition:border-color .2s}.tile:hover{border-color:var(--signal)}.tile-head{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;border-bottom:1px solid var(--rule-strong);padding:.55rem .9rem;font-family:var(--f-mono);font-size:.7rem;color:var(--ink-mid)}.tile-head .r{color:var(--ink-soft)}.tile-img{aspect-ratio:4/3;width:100%;overflow:hidden;background:var(--surface);border:none;border-bottom:1px solid var(--rule-strong)}.tile-body{padding:1rem .95rem 1.15rem;display:flex;flex-direction:column;flex:1}.tile .p-title{margin-top:0}.tile-cap{font-family:var(--f-display);font-style:italic;font-size:1rem;line-height:1.4;color:var(--ink-mid);margin-top:.5rem}.tile .tags{margin-top:.9rem}.tile .viewmore{margin-top:auto;padding-top:1rem}.contact-line{font-family:var(--f-display);font-size:clamp(1.3rem,2.6vw,1.8rem);line-height:1.4;color:var(--ink);max-width:32ch;margin:0}.detail-back{margin-bottom:1.3rem}.dhero-body .detail-title{margin-top:.3rem;text-wrap:balance}.detail-main-sec{padding:clamp(2.5rem,6vw,4rem) 0 clamp(1.5rem,3vw,2.25rem)}.detail-body{padding:0}.detail-section h2{text-wrap:balance}.specs{font-variant-numeric:tabular-nums}.detail-gallery{margin-top:clamp(2.25rem,5vw,3.5rem);justify-content:flex-start}
