:root{color-scheme:light;--ink:#1a1a17;--paper:#f2f0ea;--canvas:#e9e6de;--paper-deep:#e7e3d9;--band:#efece5;--line:#1a1a1724;--line-strong:#1a1a1733;--muted:#78746a;--body-muted:#4c4a43;--body:#3d3b35;--accent:#c0492c;--footer-text:#cfcbc0;--footer-dim:#8a8579;--overlay:#141411f5;--sans:"Helvetica Neue", Helvetica, Arial, ui-sans-serif, system-ui, sans-serif;--mono:"IBM Plex Mono", ui-monospace, monospace;--shell:1360px;--gutter:28px;--gap:10px;--cols:4;font-family:var(--sans);color:var(--ink);background:var(--paper);font-synthesis:none;text-rendering:optimizelegibility}*{box-sizing:border-box}body{background:var(--paper);-webkit-font-smoothing:antialiased;min-width:20rem;margin:0;font-size:15.5px;line-height:1.62}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}p,h1,h2,h3,h4{margin-top:0}::selection{background:var(--ink);color:var(--paper)}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.shell{width:100%;max-width:var(--shell);padding-inline:var(--gutter);margin-inline:auto}.page-kicker{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0 0 22px;font-size:10.5px}.meta,.site-footer p.meta{font-family:var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);font-size:10px}.display-title{letter-spacing:-.03em;margin:0;font-size:34px;font-weight:500;line-height:1.05}.hero h1{letter-spacing:-.035em;max-width:14ch;margin:0 0 20px;font-size:46px;font-weight:500;line-height:1.04}.hero__intro{max-width:44ch;color:var(--body-muted);text-wrap:pretty;margin:0 0 30px;font-size:15.5px;line-height:1.62}.section-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:end;gap:24px;margin-bottom:20px;padding-bottom:13px;display:flex}.section-heading h1,.section-heading h2{letter-spacing:-.025em;margin:0;font-size:20px;font-weight:500}.section-heading p,.section-heading a{font-family:var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);margin:0;font-size:10px}.section-heading a{color:var(--ink)}.site-header{z-index:60;background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0}.header-row{justify-content:space-between;align-items:center;gap:32px;min-height:84px;display:flex}.brand img{width:auto;height:42px}.site-header nav{align-items:center;gap:30px;margin-left:auto;display:flex}.site-header nav a{letter-spacing:.085em;text-transform:uppercase;font-size:13px;font-weight:600}.site-header nav a[aria-current=page],.site-header nav a:hover{color:var(--accent)}.lang-switch{border:1px solid #1a1a172e;align-items:center;gap:1px;padding:2px;display:flex}.lang-switch a{min-height:38px;font-family:var(--mono);letter-spacing:.1em;color:var(--muted);justify-content:center;align-items:center;gap:6px;padding:7px 10px;font-size:11px;display:inline-flex}.lang-flag{border:1px solid #1a1a172e;flex:none;width:20px;height:14px}.lang-switch a[aria-current=true]{background:var(--ink);color:var(--paper)}.button-ink,.button-line{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;align-items:center;gap:10px;padding:12px 18px;font-size:10.5px;display:inline-flex}.button-ink{background:var(--ink);color:var(--paper)}.button-ink:hover{background:var(--accent);color:var(--paper)}.button-line{border:1px solid var(--line-strong)}.button-line:hover{border-color:var(--ink);color:var(--ink)}.hero{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:end;gap:56px;padding-block:56px 64px;display:grid}.hero__stats{border-top:1px solid var(--line);grid-template-columns:repeat(3,auto);gap:0 40px;margin:44px 0 0;padding-top:18px;display:grid}.hero__stats dt{font-family:var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);font-size:10px}.hero__stats dd{letter-spacing:-.02em;margin:6px 0 0;font-size:26px;font-weight:500}.hero__image img{aspect-ratio:4/3;object-fit:cover;background:var(--paper-deep);width:100%;height:auto}.hero__caption{justify-content:space-between;align-items:baseline;gap:20px;padding:12px 2px 0;display:flex}.hero__caption h2{letter-spacing:-.02em;margin:0;font-size:17px;font-weight:500}.category-grid{gap:var(--gap);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.category-card img{aspect-ratio:16/10;object-fit:cover;background:var(--paper-deep);width:100%;height:auto}.category-card__meta{justify-content:space-between;align-items:baseline;gap:14px;padding:10px 1px 0;display:flex}.category-card__meta h3{letter-spacing:-.015em;margin:0;font-size:15px;font-weight:500}.category-card__meta span{font-family:var(--mono);letter-spacing:.1em;color:var(--muted);font-size:10px}.project-grid{grid-template-columns:repeat(var(--cols), minmax(0, 1fr));gap:var(--gap);display:grid}.project-grid--3{--cols:3}.project-grid--6{--cols:6}.project-card a{display:block}.project-card__image img{aspect-ratio:4/3;object-fit:cover;background:var(--paper-deep);width:100%;height:auto}.project-card__meta{padding:9px 1px 0}.project-card__meta p{font-family:var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);margin:0 0 4px;font-size:9.5px}.project-card__meta h2,.project-card__meta h3{letter-spacing:-.01em;margin:0;font-size:13.5px;font-weight:500;line-height:1.35}.toolbar{align-items:center;gap:8px;display:flex}.toolbar input[type=search],.toolbar button{border:1px solid var(--line-strong);color:var(--ink);font-family:var(--mono);letter-spacing:.11em;text-transform:uppercase;cursor:pointer;background:0 0;padding:9px 12px;font-size:10px}.toolbar input[type=search]{letter-spacing:.04em;text-transform:none;cursor:text;outline:none;width:230px;font-size:11px}.density{border:1px solid var(--line-strong);gap:1px;padding:2px;display:flex}.density button{color:var(--muted);font-family:var(--mono);cursor:pointer;background:0 0;border:0;padding:6px 10px;font-size:10px}.density button[aria-pressed=true]{background:var(--ink);color:var(--paper)}.chip-bar{border-block:1px solid var(--line);background:var(--band)}.category-nav{scrollbar-width:thin;margin:0;padding:0;display:flex;overflow-x:auto}.category-nav li{flex:none;list-style:none}.category-nav a{border-right:1px solid var(--line);font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;padding:13px 15px;font-size:10px;display:block}.category-nav a:hover,.category-nav a[aria-current=page]{background:var(--ink);color:var(--paper)}.meta-row{font-family:var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;font-size:10px;display:flex}.meta-row button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0}.meta-row button[aria-pressed=true]{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.pager{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;margin-top:38px;padding:18px 0 96px;display:flex}.pager__pages{align-items:center;gap:2px;display:flex}.pager a,.pager button{border:1px solid var(--line-strong);font-family:var(--mono);cursor:pointer;color:var(--ink);background:0 0;padding:8px 12px;font-size:10px}.pager [aria-current=page]{background:var(--ink);border-color:var(--ink);color:var(--paper)}.category-header{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:end;gap:48px;padding-bottom:20px;display:grid}.category-header p.blurb{color:var(--body-muted);text-wrap:pretty;margin:0;font-size:14.5px;line-height:1.62}.sibling-nav{border-bottom:1px solid var(--line);display:flex;overflow-x:auto}.sibling-nav a{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);white-space:nowrap;border-bottom:2px solid #0000;padding:13px 16px 11px;font-size:10px}.sibling-nav a[aria-current=page]{border-bottom-color:var(--ink);color:var(--ink)}.crumbs{font-family:var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);align-items:center;gap:8px;font-size:10px;display:flex}.crumbs [aria-current=page]{color:var(--ink)}.project-header{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:start;gap:56px;padding-bottom:30px;display:grid}.project-header h1{letter-spacing:-.03em;max-width:24ch;margin:0 0 20px;font-size:32px;font-weight:500;line-height:1.08}.project-header p{max-width:62ch;color:var(--body);white-space:pre-line;text-wrap:pretty;margin:0;font-size:15.5px;line-height:1.65}.spec-list{border-top:1px solid var(--line);margin:0}.spec-list>div{border-bottom:1px solid var(--line);grid-template-columns:1fr 1.3fr;gap:14px;padding:9px 0;display:grid}.spec-list dt{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0;font-size:10px}.spec-list dd{margin:0;font-size:13px}.gallery-header{border-top:1px solid var(--line);font-family:var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);justify-content:space-between;align-items:center;gap:20px;padding:13px 0 16px;font-size:10px;display:flex}.gallery-lead{background:var(--paper-deep);cursor:zoom-in;border:0;width:100%;padding:0}.gallery-lead img{object-fit:cover;width:100%;height:min(66vh,620px)}.gallery-caption{font-family:var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);justify-content:space-between;align-items:center;gap:20px;padding:10px 0 12px;font-size:10px;display:flex}.gallery-strip{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:6px;margin:0;padding:0;list-style:none;display:grid}.gallery-strip button{background:var(--paper-deep);cursor:pointer;border:0;padding:0}.gallery-strip img{aspect-ratio:1;object-fit:cover;opacity:.55;width:100%;height:auto}.gallery-strip [aria-current=true]{outline:2px solid var(--ink);outline-offset:-2px}.gallery-strip [aria-current=true] img{opacity:1}.project-pagination{border-block:1px solid var(--line);grid-template-columns:1fr 1fr;margin-top:56px;display:grid}.project-pagination a{flex-direction:column;justify-content:space-between;gap:22px;min-height:96px;padding:20px 20px 20px 0;display:flex}.project-pagination a+a{border-left:1px solid var(--line);text-align:right;align-items:flex-end;padding:20px 0 20px 20px}.project-pagination span{font-family:var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);font-size:10px}.project-pagination strong{letter-spacing:-.02em;font-size:16px;font-weight:500}.lightbox{z-index:90;background:var(--overlay);grid-template-rows:auto 1fr auto;animation:.16s fadeIn;display:grid;position:fixed;inset:0}.lightbox__bar{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--footer-text);justify-content:space-between;align-items:center;gap:20px;padding:14px 20px;font-size:10px;display:flex}.lightbox__bar button{color:var(--paper);font:inherit;cursor:pointer;background:0 0;border:1px solid #f2f0ea4d;padding:7px 12px}.lightbox__stage{grid-template-columns:64px 1fr 64px;align-items:center;padding:0 16px;display:grid;overflow:hidden}.lightbox__stage img{object-fit:contain;width:auto;max-width:100%;max-height:78vh;margin:0 auto}.lightbox__stage button{height:100%;color:var(--paper);cursor:pointer;background:0 0;border:0;font-size:20px}.lightbox__thumbs{justify-content:center;gap:6px;padding:14px 20px 20px;display:flex;overflow-x:auto}.lightbox__thumbs img{object-fit:cover;opacity:.4;width:60px;height:44px}.lightbox__thumbs [aria-current=true] img{opacity:1}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.site-footer{background:var(--ink);color:var(--footer-text)}.footer-grid{grid-template-columns:minmax(0,4fr) minmax(0,3fr) minmax(0,3fr);gap:40px;padding:44px 0 40px;display:grid}.footer-grid h2{letter-spacing:-.02em;color:var(--paper);margin:0 0 14px;font-size:17px;font-weight:500}.footer-grid p{max-width:34ch;margin:0;font-size:13.5px;line-height:1.6}.footer-grid h3{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--footer-dim);margin:0 0 12px;font-size:10px;font-weight:400}.footer-links{gap:6px;font-size:13px;display:grid}.footer-links a:hover{color:var(--paper)}.footer-lang{gap:8px;margin-bottom:20px;display:flex}.footer-lang a{font-family:var(--mono);letter-spacing:.08em;border:1px solid #f2f0ea40;padding:7px 11px;font-size:10px}.footer-lang a[aria-current=true]{background:var(--paper);border-color:var(--paper);color:var(--ink)}.footer-legal{border-top:1px solid #f2f0ea24}.footer-legal>div{font-family:var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--footer-dim);flex-wrap:wrap;justify-content:space-between;gap:20px;padding:14px 0;font-size:9.5px;display:flex}@media (width<=1100px){.project-grid{--cols:3}.footer-grid{grid-template-columns:1fr 1fr}}@media (width<=900px){.hero,.project-header,.category-header{grid-template-columns:1fr;gap:32px}.hero{padding-block:40px 48px}.category-grid{grid-template-columns:1fr 1fr}.project-grid{--cols:2}.toolbar{flex-wrap:wrap}.toolbar input[type=search]{width:100%}}@media (width<=640px){:root{--gutter:16px;--gap:8px}html{scroll-padding-top:64px}.back-to-top{bottom:16px;right:16px}.header-row{gap:12px;min-height:64px}.brand img{height:28px}.site-header nav{display:none}.hero h1{font-size:28px}.display-title{font-size:24px}.project-header h1{font-size:22px}.hero__stats{grid-template-columns:repeat(2,auto);gap:16px 24px}.project-pagination{grid-template-columns:1fr}.project-pagination a+a{border-left:0;border-top:1px solid var(--line);text-align:left;align-items:flex-start;padding:20px 0}.footer-grid{grid-template-columns:1fr;gap:28px}.gallery-lead img{height:52vh}.lightbox__stage{grid-template-columns:40px 1fr 40px}.button-ink,.button-line,.toolbar input[type=search],.category-nav a{min-height:44px}}@media (prefers-reduced-motion:reduce){.lightbox{animation:none}*{transition:none!important}}html{scroll-behavior:smooth;scroll-padding-top:84px}body.lightbox-open{overflow:hidden}main{min-height:60vh}button,input{border-radius:0}.skip-link{z-index:120;color:var(--paper);background:var(--ink);font-family:var(--mono);padding:8px 12px;font-size:10px;position:fixed;top:8px;left:8px;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.back-to-top{z-index:80;border:1px solid var(--line-strong);background:var(--paper);width:44px;height:44px;color:var(--ink);cursor:pointer;place-content:center;transition:background .14s,color .14s;display:grid;position:fixed;bottom:24px;right:24px}.back-to-top[hidden]{display:none}.back-to-top svg{width:16px;height:16px}.back-to-top:hover,.back-to-top:focus-visible{background:var(--ink);color:var(--paper)}body.lightbox-open .back-to-top{display:none}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.header-actions{align-items:center;gap:18px;display:flex}.mobile-menu{display:none}.image-fallback,.project-card__fallback{aspect-ratio:4/3;color:var(--muted);background:var(--paper-deep);place-items:center;font-size:24px;display:grid}.category-card .image-fallback{aspect-ratio:16/10}.home-section{padding-bottom:72px}.home-section--latest{padding-bottom:88px}.portfolio-intro{justify-content:space-between;align-items:end;gap:32px;padding-block:40px 26px;display:flex}.portfolio-intro .page-kicker{margin-bottom:10px}.portfolio-results{padding-top:16px}.portfolio-meta{margin-bottom:20px}.level-filter{align-items:center;gap:14px;display:flex}.empty-results{color:var(--muted);font-family:var(--mono);text-transform:uppercase;margin:64px 0 96px;font-size:11px}.client-pager .button-line{min-height:auto;padding:11px 20px}.category-intro{padding-top:32px}.category-intro .crumbs{margin-bottom:34px}.category-header h1{margin-bottom:12px}.category-header .meta{margin:0}.category-results{padding-top:22px}.project-intro{padding-top:32px}.project-intro .crumbs{margin-bottom:30px}.gallery-strip{scrollbar-width:thin;overflow-x:auto}.gallery-strip li{min-width:0}.gallery-strip--scroll{grid-auto-columns:minmax(76px,1fr)}.gallery-mobile-grid,.lightbox[hidden]{display:none}.lightbox__thumbs button{cursor:pointer;background:0 0;border:0;flex:none;padding:0}.related-projects{padding-block:44px 96px}.footer-grid--archive{grid-template-columns:minmax(0,4fr) minmax(240px,2fr)}.footer-grid--archive>div:last-child{justify-self:end}.not-found{flex-direction:column;justify-content:center;align-items:flex-start;min-height:68vh;padding-block:60px;display:flex}.not-found h1{letter-spacing:-.035em;max-width:14ch;margin-bottom:30px;font-size:46px;font-weight:500;line-height:1.04}@media (width<=900px){.header-actions{gap:10px}.portfolio-intro{flex-direction:column;align-items:stretch}}@media (width<=640px){html{scroll-behavior:auto}.header-actions{margin-left:auto}.header-actions .lang-switch a{gap:4px;min-height:34px;padding:5px 6px;font-size:9px}.header-actions .lang-flag{width:17px;height:12px}.mobile-menu{display:block;position:relative}.mobile-menu summary{border:1px solid var(--line-strong);cursor:pointer;place-content:center;gap:5px;width:36px;height:36px;list-style:none;display:grid}.mobile-menu summary::-webkit-details-marker{display:none}.mobile-menu summary span{background:var(--ink);width:14px;height:1px;display:block}.mobile-menu nav{z-index:70;border:1px solid var(--line);background:var(--paper);gap:0;width:min(260px,100vw - 32px);display:grid;position:absolute;top:calc(100% + 10px);right:0}.mobile-menu nav a{border-bottom:1px solid var(--line);padding:13px 16px}.hero{gap:34px}.hero__caption{flex-direction:column;align-items:flex-start;gap:8px}.category-grid{grid-template-columns:1fr}.home-section{padding-bottom:56px}.portfolio-intro{padding-block:30px 22px}.toolbar{width:100%}.toolbar>button{flex:auto}.density{margin-left:auto}.level-filter{flex-wrap:wrap;align-items:flex-start;gap:10px 14px;width:100%}.category-intro,.project-intro{padding-top:24px}.category-intro .crumbs,.project-intro .crumbs{margin-bottom:24px}.gallery-desktop{display:none}.gallery-mobile-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.gallery-mobile-grid button{background:var(--paper-deep);cursor:zoom-in;border:0;padding:0}.gallery-mobile-grid img{aspect-ratio:1;object-fit:cover;width:100%}.gallery-header span:last-child{display:none}.related-projects{padding-bottom:72px}.footer-grid--archive{grid-template-columns:1fr}.footer-grid--archive>div:last-child{justify-self:start}.lightbox__thumbs{justify-content:flex-start}.not-found h1{font-size:28px}}
