:root{--s:1.35;--paper:#f6f6f6;--espresso:#371c14;--oxblood:#420f08;--powder:#bbdaee;--butter:#f8f4c7;--olive:#a5a38d;--signal:#ef3301;--white:#fff;--placeholder:#dedcd6;--espresso-85:#371c14d9;--espresso-80:#371c14cc;--espresso-60:#371c1499;--espresso-30:#371c144d;--espresso-15:#371c1426;--espresso-12:#371c141f;--powder-50:#ddecf6;--butter-50:#fbf9e3;--olive-30:#e4e3da;--surface-page:var(--paper);--surface-card:var(--white);--surface-tint:var(--powder);--surface-tint-alt:var(--butter);--surface-ink:var(--espresso);--text-body:var(--espresso);--text-muted:var(--espresso-60);--text-inverse:var(--paper);--accent:var(--signal);--border-strong:var(--espresso);--border-soft:var(--espresso-12);--focus-ring:var(--signal);--hover:var(--powder);--font-sans:"Aptos", "Helvetica Neue", Arial, sans-serif;--font-display:"Aptos Display", "Aptos", "Helvetica Neue", Arial, sans-serif;--font-mono:"Fira Code", ui-monospace, "SF Mono", Menlo, monospace;--font-script:"Karumbi", cursive;--fs-mono:calc(8px * var(--s));--fs-mono-lg:calc(8.4px * var(--s));--fs-child:calc(9.1px * var(--s));--fs-nav:calc(9.5px * var(--s));--fs-body:calc(9.5px * var(--s));--fs-body-sm:calc(8.6px * var(--s));--fs-arrow:calc(9.8px * var(--s));--fs-script:calc(11.9px * var(--s));--fs-display-sm:calc(13px * var(--s));--fs-display:calc(14px * var(--s));--fs-display-lg:calc(16px * var(--s));--leading-tight:1.02;--leading-heading:1.12;--leading-body:1.55;--tracking-tight:-.02em;--tracking-mono:.06em;--weight-regular:400;--weight-bold:700;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;--radius-0:0px;--radius-1:2px;--radius-pill:999px;--border-w:1.5px;--shadow-dialog:0 24px 64px #371c1438;--container:1200px;--rail:clamp(150px, 13vw, 210px);--bar-h:46px;--caption-shadow:0 1px 2px #371c14e6, 0 0 14px #371c14d9}*,:before,:after{box-sizing:border-box}html{background:var(--surface-page);-webkit-text-size-adjust:100%;margin:0;padding:0}body{background:var(--surface-page);color:var(--text-body);font-family:var(--font-sans);font-size:var(--fs-body);font-weight:var(--weight-regular);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;margin:0;padding:0;overflow-x:hidden}a{color:inherit;text-decoration:none;transition:color .12s}a:hover{color:var(--hover)}p,figure,dl,dd{margin:0}h1,h2,h3{font-weight:var(--weight-regular);margin:0}img{max-width:100%;display:block}button{font:inherit;color:inherit}::selection{background:var(--powder);color:var(--espresso)}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.on-image :focus-visible,.on-image:focus-visible{outline-color:var(--paper)}.skip{z-index:200;background:var(--espresso);color:var(--paper);font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);padding:10px 14px;position:absolute;top:0;left:-9999px}.skip:focus{color:var(--paper);top:8px;left:8px}.vh{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes fadein{0%{opacity:0}to{opacity:1}}.mono{font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono)}.muted{color:var(--text-muted)}.on-image{color:var(--paper);text-shadow:var(--caption-shadow)}.nav{z-index:70;color:var(--espresso);flex-direction:column;gap:4px;display:flex;position:fixed;top:22px;left:22px}.nav__bar{display:none}.nav__panel{flex-direction:column;gap:4px;display:flex}.nav__link{font-size:var(--fs-nav);font-weight:var(--weight-bold);letter-spacing:-.01em;opacity:.75;justify-content:space-between;align-items:baseline;gap:10px;display:flex}.nav__link.is-on{opacity:1}.nav__sign{font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);opacity:.5}.nav__group{flex-direction:column;gap:6px;display:flex}.nav__details>summary{cursor:pointer;list-style:none}.nav__details>summary::-webkit-details-marker{display:none}.nav__details .nav__sign:after{content:"+"}.nav__details[open] .nav__sign:after{content:"−"}.nav__children{flex-direction:column;gap:4px;padding-top:6px;padding-left:14px;animation:.18s fadein;display:flex}.nav__child{font-size:var(--fs-child);opacity:.55;line-height:1.35}.nav__child.is-on{opacity:1}.nav__meta{border-top:.5px solid var(--espresso-12);flex-direction:column;gap:4px;margin-top:6px;padding-top:10px;display:flex}.nav__meta a{opacity:.75}.nav__meta a:hover{opacity:1}.nav__lang{gap:8px;padding-top:2px;display:flex}.nav__lang a{opacity:.5}.nav__lang a.is-on{opacity:1}.nav__lang span[aria-hidden]{opacity:.4}.frame{background:var(--placeholder);position:relative;overflow:hidden}.frame img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.frame--empty{background:var(--placeholder)}.frame--empty.on-image,.frame--empty.on-image *{color:var(--espresso-60);text-shadow:none}.switch{font-family:var(--font-mono);font-size:var(--fs-mono-lg);letter-spacing:var(--tracking-mono);flex:none;gap:7px;display:flex}.switch button{cursor:pointer;font-family:inherit;font-size:inherit;letter-spacing:inherit;color:inherit;opacity:.4;background:0 0;border:0;padding:0;transition:color .12s,opacity .12s}.switch button:hover{color:var(--hover)}.switch button[aria-current=true]{opacity:1;font-weight:var(--weight-bold)}.home{height:100svh;min-height:100svh;padding:0 0 0 var(--rail);flex-direction:column;display:flex}.home__plates{flex:1;justify-content:center;align-items:stretch;gap:clamp(10px,1.4vw,22px);min-height:0;display:flex}.plate{background:var(--placeholder);flex:1 1 0;min-width:0;transition:opacity .12s;display:block;position:relative;overflow:hidden}.plate:hover{opacity:.94}.plate[hidden]{display:none}.plate__label{display:contents}.plate__title{font-size:var(--fs-body);letter-spacing:.01em;color:var(--paper);line-height:1.2;position:absolute;bottom:36px;left:14px}.plate__date{font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);color:var(--paper);opacity:.75;line-height:1.2;position:absolute;bottom:22px;left:14px}.plate__index,.plate__edition{display:none}.plate[data-pos=a] .plate__edition{writing-mode:vertical-rl;font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:.14em;color:var(--paper);opacity:.8;display:block;position:absolute;bottom:36px;right:12px}.home__foot{display:contents}.home__captions,.home__index-link{display:none}.home__switch{z-index:70;position:fixed;bottom:22px;right:22px}.popup{z-index:80;background:var(--butter);width:min(320px,34vw);color:var(--espresso);padding:11px 14px 12px;animation:.25s fadein;position:fixed;bottom:70px;left:22px}.popup[hidden]{display:none}.popup__head{font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:.08em;color:var(--espresso-60);justify-content:space-between;align-items:baseline;gap:16px;display:flex}.popup__close{border:0;border-bottom:.5px solid var(--espresso);cursor:pointer;font:inherit;letter-spacing:inherit;color:inherit;background:0 0;padding:0 0 1px}.popup__close:hover{color:var(--hover);border-bottom-color:var(--hover)}.popup__title{max-width:20ch;font-family:var(--font-display);font-size:var(--fs-display);letter-spacing:-.015em;line-height:1.08;font-weight:var(--weight-regular);margin-top:10px}.popup__body{font-size:var(--fs-body);margin:10px 0 16px;line-height:1.55}.popup__form{border-bottom:.5px solid var(--espresso);align-items:center;gap:12px;padding-bottom:6px;display:flex}.popup__input{min-width:0;font-family:var(--font-mono);font-size:var(--fs-mono-lg);letter-spacing:var(--tracking-mono);color:var(--espresso);background:0 0;border:0;outline:none;flex:1}.popup__input::placeholder{color:var(--espresso-60)}.popup__submit{cursor:pointer;font-family:var(--font-mono);font-size:var(--fs-arrow);letter-spacing:var(--tracking-mono);color:var(--espresso);background:0 0;border:0;padding:0}.popup__submit:hover{color:var(--hover)}.popup__thanks{font-size:var(--fs-body);margin:10px 0 0;line-height:1.55}.work{padding-left:var(--rail);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.work__card{background:var(--placeholder);height:70vh;min-height:420px;transition:opacity .12s;display:block;position:relative;overflow:hidden}.work__card:hover{opacity:.9}.work__card[hidden]{display:none}.work__meta{font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);padding:14px;position:absolute;top:0;right:0}.work__caption{flex-direction:column;gap:2px;padding:12px 14px 14px;display:flex;position:absolute;bottom:0;left:0}.work__title{font-size:var(--fs-nav);letter-spacing:.01em}.work__sub{font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);opacity:.75}.work__empty{padding:var(--space-8) var(--space-5);font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);color:var(--text-muted);grid-column:1/-1}.project{min-height:100svh;padding:26px clamp(20px, 2.4vw, 34px) 44px var(--rail);flex-direction:column;display:flex}.project__inner{flex:1;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:center;gap:clamp(24px,3vw,40px);padding:24px 0;display:grid}.shot{aspect-ratio:4/5}.shot__layer{position:absolute;inset:0}.shot__layer[hidden]{display:none}.shot__meta{font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);color:var(--espresso-60);justify-content:space-between;align-items:baseline;gap:16px;margin-top:10px;display:flex}.project__text{min-width:0;max-width:30ch}.project__code{font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);color:var(--espresso-60)}.project__title{font-family:var(--font-display);font-size:var(--fs-display-sm);letter-spacing:-.01em;line-height:1.1;font-weight:var(--weight-regular);margin-top:6px}.project__intro{font-size:var(--fs-body);color:var(--espresso-80);margin:14px 0 0;line-height:1.6}.project__spec{border-top:.5px solid var(--espresso);overflow-wrap:anywhere;font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);grid-template-columns:auto minmax(0,1fr);gap:5px 18px;margin-top:18px;padding-top:10px;display:grid}.project__spec dt{color:var(--espresso-60);margin:0}.project__spec dd{margin:0}.project__note{font-family:var(--font-script);font-size:var(--fs-script);color:var(--espresso-85);margin:18px 0 0;line-height:1.3}.project__next{border-bottom:.5px solid var(--espresso);font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);margin-top:22px;padding-bottom:2px;display:inline-block}.project__next:hover{color:var(--hover);border-bottom-color:var(--hover)}.info{min-height:100svh;padding-left:var(--rail);grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);display:grid}.info__figure{background:var(--placeholder);position:relative}.info__figcaption{font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);padding:14px;position:absolute;bottom:0;left:0}.info__body{background:var(--paper);color:var(--espresso);flex-direction:column;justify-content:center;padding:clamp(28px,3.4vw,56px) clamp(22px,2.6vw,44px);display:flex;overflow-y:auto}.info__eyebrow{font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);opacity:.6}.info__heading{font-family:var(--font-display);font-size:var(--fs-display-lg);letter-spacing:-.012em;line-height:1.08;font-weight:var(--weight-regular);margin:14px 0 0}.info__p{max-width:52ch;font-size:var(--fs-body-sm);color:var(--espresso-85);margin:16px 0 0;line-height:1.75}.info__p+.info__p{margin-top:10px}.info__cols{border-top:.5px solid var(--espresso-15);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:20px;margin-top:34px;padding-top:14px;display:grid}.info__colhead{font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);opacity:.6;margin-bottom:6px}.info__list{font-size:var(--fs-nav);flex-direction:column;gap:2px;display:flex}.info__list--mono{font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono)}.oops{min-height:100svh;padding:26px clamp(20px, 2.4vw, 34px) 44px var(--rail);flex-direction:column;justify-content:center;display:flex}.oops__title{font-family:var(--font-display);font-size:var(--fs-display-lg);letter-spacing:-.012em;line-height:1.08}.oops__body{font-size:var(--fs-body);color:var(--espresso-80);margin-top:12px}.oops__back{border-bottom:.5px solid var(--espresso);font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);margin-top:22px;padding-bottom:2px;display:inline-block}.oops__back:hover{color:var(--hover);border-bottom-color:var(--hover)}@media (width<=900px){:root{--rail:0px}.nav{background:var(--paper);border-bottom:.5px solid var(--espresso-15);gap:0;top:0;left:0;right:0}.nav__bar{height:var(--bar-h);justify-content:space-between;align-items:center;gap:16px;padding:0 16px;display:flex}.nav__wordmark{align-items:center;min-height:44px;display:inline-flex}.nav__logo{width:auto;height:11px}.nav__mark{width:auto;height:18px}.nav__toggle{cursor:pointer;font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);background:0 0;border:0;align-items:center;gap:8px;padding:6px 0;display:inline-flex}.nav__panel{max-height:calc(100svh - var(--bar-h));gap:10px;padding:4px 16px 16px;overflow-y:auto}.js .nav__panel{display:none}.js .nav[data-open=true] .nav__panel{display:flex}.nav__link,.nav__child{opacity:1;padding:3px 0}.nav__link{justify-content:flex-start;gap:8px}.nav__link:not(.is-on),.nav__child:not(.is-on){opacity:.7}.home,.work,.project,.info,.oops{padding-top:var(--bar-h)}.home{height:auto;min-height:calc(100svh - var(--bar-h))}.plate[data-pos=b]{display:none}.plate{min-height:42svh}.plate__label,.plate__title,.plate__date{display:none}.plate__index{font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);display:block;position:absolute;top:14px;left:14px}.plate__edition,.plate[data-pos=a] .plate__edition{writing-mode:vertical-rl;font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:.14em;color:inherit;opacity:1;display:block;position:absolute;bottom:14px;right:14px}.home__foot{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:4px 16px;padding:20px clamp(16px,4vw,26px) 26px;display:flex}.home__captions{display:block}.home__caption[hidden]{display:none}.home__caption-date{font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);color:var(--text-muted);display:block}.home__caption-title{font-size:calc(10px * var(--s));letter-spacing:.01em;margin-top:3px;display:block}.home__switch{color:var(--espresso);text-shadow:none;margin:-14px -6px;position:static;bottom:auto;right:auto}.home__switch button{color:inherit;justify-content:center;align-items:center;min-width:30px;min-height:44px;display:inline-flex}.home__index-link{min-height:44px;font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:var(--tracking-mono);flex-basis:100%;align-items:center;display:inline-flex}.home__index-link span,.home__index-link{text-decoration:none}.work{grid-template-columns:repeat(2,minmax(0,1fr))}.work__card{height:34svh;min-height:220px}.project{padding-left:clamp(16px,4vw,28px);padding-right:clamp(16px,4vw,28px)}.project__inner{grid-template-columns:minmax(0,1fr);align-items:start}.project__text{max-width:46ch}.info{grid-template-columns:minmax(0,1fr);min-height:0}.info__figure{aspect-ratio:4/5}.info__body{overflow-y:visible}.oops{padding-left:clamp(16px,4vw,28px)}.popup{width:56%;max-height:30%;bottom:22%;left:16px;right:auto;overflow:hidden}.popup__body,.popup__thanks{font-size:calc(8.1px * var(--s))}.popup__input{font-size:calc(7.5px * var(--s))}}@media (width<=560px){.info__cols{grid-template-columns:minmax(0,1fr);gap:16px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}@media print{.nav,.home__switch,.popup{display:none!important}}@font-face{font-family:Aptos;src:url(/fonts/aptos-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Aptos;src:url(/fonts/aptos-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Aptos Display;src:url(/fonts/aptos-display-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Fira Code;src:url(/fonts/fira-code.woff2)format("woff2");font-weight:300 700;font-style:normal;font-display:swap}@font-face{font-family:Karumbi;src:url(/fonts/karumbi-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}
