@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Libre+Franklin:wght@300;400;500;600&display=swap";:root{--bg: #f7f6f2;--bg-hover: #efede7;--surface: #ffffff;--surface-warm: #efede7;--ink: #171714;--ink-2: #56534d;--ink-3: #817d75;--label-ink: #6f6b64;--muted: #97928a;--rule: #dcd9d2;--rule-light: #e8e5de;--accent: #1d4b3d;--font-sans: "Libre Franklin", Helvetica, Arial, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;color:var(--ink);font-family:var(--font-sans);font-synthesis:none}*{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none;transition:color .12s ease,background .12s ease,border-color .12s ease}a:focus-visible,button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}img{display:block;max-width:100%}.site-shell{min-height:100vh}.site-header{position:sticky;z-index:100;top:0;border-bottom:1px solid var(--rule);background:var(--bg)}.header-inner{display:grid;grid-template-columns:1fr auto 1fr;width:min(calc(100% - 160px),1280px);min-height:78px;margin:0 auto;align-items:center;gap:36px}.brand{display:inline-flex;width:fit-content;align-items:center;gap:12px}.brand-mark{display:grid;width:35px;height:35px;place-items:center;border:1px solid var(--ink);border-radius:50%;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em}.brand-copy{display:flex;flex-direction:column;font-size:13px;font-weight:500;line-height:1.3;letter-spacing:.01em}.brand-copy small{margin-top:2px;color:var(--ink-3);font-size:10px;font-weight:400}.nav{display:flex;align-items:center;gap:28px;font-family:var(--font-mono);font-size:12px}.nav a{position:relative;padding:29px 0 27px;color:var(--ink-3)}.nav a:after{position:absolute;right:0;bottom:-1px;left:0;height:2px;background:var(--ink);content:"";opacity:0;transform:scaleX(.5);transition:opacity .15s ease,transform .15s ease}.nav a:hover,.nav a[aria-current=page]{color:var(--ink)}.nav a[aria-current=page]:after{opacity:1;transform:scaleX(1)}.contact-link{justify-self:end;padding:10px 15px;border:1px solid var(--ink);border-radius:999px;font-family:var(--font-mono);font-size:11px}.contact-link:hover{background:var(--ink);color:var(--bg)}.menu-toggle,.nav-contact{display:none}.content{width:min(100% - 64px,1120px);min-height:calc(100vh - 260px);margin:0 auto;padding:76px 0 112px}.eyebrow,.label{margin:0;text-transform:uppercase;color:var(--label-ink);font-weight:500}.eyebrow{font-family:var(--font-mono);font-size:11px;line-height:1.5;letter-spacing:.12em}.label{font-family:var(--font-mono);font-size:11px;line-height:1.5;letter-spacing:.14em}.display{max-width:18ch;margin:20px 0 0;font-size:clamp(38px,5vw,64px);line-height:1.08;font-weight:300;letter-spacing:-.04em;text-wrap:balance}.hero-summary{max-width:58ch;margin:30px 0 0;color:var(--ink-2);font-size:17px;line-height:1.75}.hero-actions{display:flex;align-items:center;gap:26px;margin-top:36px}.medium-action{display:inline-flex;min-height:44px;align-items:center;justify-content:center;padding:0 18px;border:1px solid var(--ink);color:var(--ink);font-family:var(--font-mono);font-size:11px}.medium-action:hover{background:var(--ink);color:var(--bg)}.hero-portrait{margin:0}.hero-portrait img{width:100%;height:auto;aspect-ratio:4 / 5;object-fit:cover;object-position:44% 50%}.hero-portrait figcaption{display:flex;justify-content:space-between;gap:20px;margin-top:12px;color:var(--ink-2);font-family:var(--font-mono);font-size:10px;line-height:normal}.hero-portrait figcaption span{color:var(--muted)}.home-content{display:flex;width:100%;min-height:calc(100vh - 79px);margin:0;padding:0}.home-page{display:flex;width:100%;min-height:calc(100vh - 79px);flex-direction:column}.home-hero{display:grid;width:min(100%,1440px);flex:1;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);grid-template-areas:"intro portrait" "actions portrait";grid-template-rows:auto auto;align-content:center;align-items:center;column-gap:120px;margin:0 auto;padding:46px 80px}.home-intro{grid-area:intro;align-self:end}.home-intro .eyebrow{line-height:normal}.home-intro h1{max-width:15ch;margin:26px 0 0;font-size:68px;line-height:1.05;font-weight:300;letter-spacing:-.045em;text-wrap:balance}.home-intro .hero-summary{max-width:54ch}.home-hero .hero-portrait{width:100%;max-width:280px;grid-area:portrait;justify-self:end}.home-hero .hero-actions{grid-area:actions;align-self:start;margin-top:40px}.home-index{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--ink)}.home-index-link{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:30px 40px;border-right:1px solid var(--rule);font-family:var(--font-mono);font-size:15px;line-height:1.3}.home-index-link:first-child{padding-left:max(80px,calc((100vw - 1280px)/2))}.home-index-link:last-child{padding-right:max(80px,calc((100vw - 1280px)/2));border-right:0}.home-index-link:hover{background:var(--bg-hover)}.home-index-meta{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-size:11px}.home-index-meta b{color:inherit;font-weight:400;transition:transform .12s ease}.home-index-link:hover .home-index-meta b{transform:translate(3px)}.home-shell>.site-footer{display:none}.section{padding-top:112px}.project-list{display:grid;grid-template-columns:1fr 1fr;gap:42px 24px}.project-row{display:block;min-width:0}.project-image{display:block;overflow:hidden;aspect-ratio:16 / 10;background:var(--surface-warm)}.project-row .thumb{width:100%;height:100%;object-fit:cover;transition:transform .4s cubic-bezier(.2,.8,.2,1),filter .18s ease}.project-row:hover .thumb{transform:scale(1.025);filter:contrast(.96)}.project-info{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:baseline;padding:15px 0;border-bottom:1px solid var(--rule);font-family:var(--font-mono)}.project-number{color:var(--muted);font-size:9px}.project-title{font-size:13px}.project-row .meta{grid-column:2;margin-top:3px;color:var(--ink-3);font-family:var(--font-sans);font-size:11px}.project-arrow{grid-column:3;grid-row:1 / span 2;color:var(--muted);font-size:13px;transform:translate(0);transition:color .15s ease,transform .15s ease}.project-row:hover .project-arrow{color:var(--ink);transform:translate(2px,-2px)}.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px 16px}.tile{display:flex;flex-direction:column;gap:11px;font-family:var(--font-mono);font-size:11px}.image-frame{display:block;width:100%;aspect-ratio:4 / 3;overflow:hidden;background:var(--surface-warm)}.image-frame img{width:100%;height:100%;object-fit:cover;transition:transform .4s cubic-bezier(.2,.8,.2,1),filter .18s ease}.tile:hover img{transform:scale(1.025);filter:contrast(.96)}.page-heading{padding:32px 0 44px;border-bottom:1px solid var(--rule)}.page-heading .display{max-width:15ch}.books-page-heading{padding-bottom:32px}.index-content{padding-top:72px}.index-content>.label{display:block;margin-bottom:30px}.goodreads-shelf{position:relative;min-height:190px}.goodreads-shelf .gr_grid_container{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:28px 18px}.goodreads-shelf .gr_grid_book_container{display:flex;width:auto!important;height:160px!important;align-items:flex-end;justify-content:center;padding:0!important;float:none!important;overflow:visible!important}.goodreads-shelf .gr_grid_book_container a{display:inline-flex;height:160px;align-items:flex-end;transition:opacity .15s ease,transform .18s ease}.goodreads-shelf .gr_grid_book_container a:hover{opacity:.78;transform:translateY(-3px)}.goodreads-shelf .gr_grid_book_container img{width:auto;max-width:110px;height:auto;max-height:160px;box-shadow:0 7px 18px #1717141f}.shelf-status{margin:0;color:var(--ink-3);font-family:var(--font-mono);font-size:11px}.shelf-status a{text-decoration:underline;text-underline-offset:3px}.detail{max-width:840px;margin:0 auto}.back-link{display:inline-flex;min-height:44px;align-items:center;margin-bottom:30px;color:var(--muted);font-family:var(--font-mono);font-size:11px}.back-link:hover{color:var(--ink)}.detail-title{max-width:16ch;margin:16px 0 40px;font-size:clamp(38px,5vw,60px);line-height:1.1;font-weight:300;letter-spacing:-.035em;text-wrap:balance}.detail-image{width:100%;aspect-ratio:3 / 2;object-fit:cover}.detail-copy{max-width:63ch;padding-top:38px;color:var(--ink-2);font-size:16px;line-height:1.8}.detail-copy p{margin:0 0 22px}.detail-copy strong{color:var(--ink);font-family:var(--font-mono);font-size:12px;font-weight:500}.project-detail-copy{padding-top:30px}.project-detail-copy p{display:grid;grid-template-columns:92px minmax(0,1fr);gap:18px;margin:0;padding:19px 0;border-bottom:1px solid var(--rule)}.project-detail-copy p:first-child{border-top:1px solid var(--rule)}.project-detail-copy strong{padding-top:.3em;color:var(--label-ink);font-size:10px;line-height:1.5;letter-spacing:.1em;text-transform:uppercase}.project-detail-copy span{min-width:0}.project-detail-copy .project-detail-paragraph{display:block}.project-detail-paragraph a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--muted);text-decoration-thickness:1px;text-underline-offset:4px}.project-detail-paragraph a:hover{text-decoration-color:var(--ink)}.muted-copy{color:var(--muted)}.project-carousel{width:100%}.project-carousel:focus-visible{outline:2px solid var(--ink);outline-offset:4px}.project-carousel-stage{position:relative;display:grid;width:100%;aspect-ratio:3 / 2;place-items:center;overflow:hidden;border:1px solid var(--rule);background:var(--surface-warm)}.project-carousel-image{width:100%;height:100%;object-fit:contain;animation:project-image-in .18s ease-out both;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.project-carousel-arrow{position:absolute;top:50%;display:grid;width:44px;height:44px;place-items:center;margin:0;padding:0;transform:translateY(-50%);border:1px solid rgba(255,255,255,.5);border-radius:50%;background:#141412c7;color:#fff;cursor:pointer}.project-carousel-arrow:hover{background:#141412f2}.project-carousel-arrow svg,.lightbox svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.project-carousel-previous{left:14px}.project-carousel-next{right:14px}.project-carousel-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:12px}.project-carousel-footer p{margin:0;color:var(--label-ink);font-family:var(--font-mono);font-size:10px}.project-carousel-dots{display:flex;gap:6px}.project-carousel-dots span{width:5px;height:5px;border-radius:50%;background:var(--rule)}.project-carousel-dots .active{background:var(--ink)}@keyframes project-image-in{0%{opacity:.35}to{opacity:1}}.photo-gallery{columns:2;column-gap:14px;padding-top:20px}.photo-gallery .photo-trigger{display:block;width:100%;margin-bottom:14px;break-inside:avoid;background:var(--surface-warm)}.photo-gallery img{width:100%;height:auto;transition:filter .15s ease}.photo-gallery .photo-trigger:hover img{filter:contrast(.9)}.photo-trigger{position:relative;overflow:hidden;margin:0;padding:0;border:0;color:inherit;font:inherit;text-align:left;cursor:zoom-in}.detail-photo-trigger{display:block;width:100%;background:var(--surface-warm)}.photo-expand{position:absolute;right:10px;bottom:10px;padding:5px 8px;background:#141412c7;color:#fff;font-family:var(--font-mono);font-size:10px;opacity:0;transform:translateY(3px);transition:opacity .14s ease,transform .14s ease}.photo-trigger:hover .photo-expand,.photo-trigger:focus-visible .photo-expand{opacity:1;transform:translateY(0)}.lightbox{position:fixed;z-index:1000;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:68px 88px 54px;background:#080808f5;color:#fff;overscroll-behavior:contain}.lightbox-toolbar{position:absolute;z-index:2;top:18px;right:20px;left:20px;display:flex;align-items:center;justify-content:flex-end;gap:18px}.lightbox-count{margin:0;color:#ffffffb3;font-family:var(--font-mono);font-size:11px}.lightbox button{display:grid;place-items:center;margin:0;padding:0;border:1px solid rgba(255,255,255,.22);border-radius:50%;background:#00000040;color:#fff;cursor:pointer}.lightbox-close{width:44px;height:44px}.lightbox-arrow{position:absolute;z-index:2;top:50%;width:48px;height:48px;transform:translateY(-50%)}.lightbox-previous{left:22px}.lightbox-next{right:22px}.lightbox-figure{display:flex;width:100%;height:100%;min-width:0;flex-direction:column;align-items:center;justify-content:center;gap:14px;margin:0}.lightbox-figure img{width:auto;height:auto;max-width:100%;max-height:calc(100vh - 138px);object-fit:contain;box-shadow:0 12px 48px #00000047;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.lightbox-figure figcaption{min-height:19px;color:#ffffffd1;font-family:var(--font-mono);font-size:11px;text-align:center}.lightbox-figure figcaption span{color:#ffffff85}.not-found{padding:60px 0}.not-found .back-link{margin:24px 0 0}.site-footer{border-top:1px solid var(--rule)}.footer-inner{display:grid;grid-template-columns:1fr auto 1fr;width:min(100% - 64px,1120px);min-height:140px;margin:0 auto;align-items:center;gap:32px;font-family:var(--font-mono);font-size:10px}.footer-inner p{margin:0;color:var(--ink-3)}.footer-inner div{display:flex;gap:24px}.footer-inner a:hover{color:var(--accent)}.footer-note{justify-self:end}@media(max-width:899px){.site-header{position:sticky}.header-inner{grid-template-columns:1fr auto;width:100%;min-height:64px;padding:0 22px}.brand{gap:10px}.brand-mark{width:32px;height:32px}.brand-copy{font-size:12px}.contact-link{display:none}.menu-toggle{display:grid;width:44px;height:44px;margin-right:-10px;padding:0;place-items:center;border:0;background:transparent;color:var(--ink);cursor:pointer}.nav{position:absolute;top:100%;right:0;left:0;display:none;align-items:stretch;flex-direction:column;gap:0;border-top:0;border-bottom:1px solid var(--ink);background:var(--bg)}.nav.nav-open{display:flex}.nav a,.nav .nav-contact{display:flex;min-height:48px;align-items:center;padding:0 22px;border-top:1px solid var(--rule);color:var(--ink);font-size:15px}.nav a:after{display:none}.nav a[aria-current=page]{background:var(--bg-hover)}.nav .nav-contact{color:var(--accent)}.content{width:min(100% - 36px,1120px);padding:46px 0 80px}.home-content{width:100%;padding:0}.home-page{width:100%}.home-hero{display:grid;width:min(100%,640px);grid-template-columns:1fr;grid-template-areas:"intro" "portrait" "actions";padding:44px 22px 40px}.home-intro .eyebrow{font-size:10px}.home-intro h1{margin-top:18px;font-size:36px;line-height:1.1;letter-spacing:-.035em}.home-intro .hero-summary{margin-top:22px;font-size:16px;line-height:1.7}.home-hero .hero-portrait{width:100%;max-width:280px;justify-self:center;margin:32px 0 0}.home-hero .hero-portrait img{aspect-ratio:4 / 5}.home-hero .hero-portrait figcaption{margin-top:10px;gap:16px}.home-hero .hero-actions{width:100%;flex-direction:column;align-items:stretch;gap:14px;margin-top:32px}.home-hero .medium-action{min-height:48px;font-size:12px}.home-index{display:flex;flex-direction:column}.home-index-link,.home-index-link:first-child,.home-index-link:last-child{min-height:0;padding:22px;border-right:0;border-bottom:1px solid var(--rule)}.home-index-link:last-child{border-bottom:0}.home-shell>.site-footer{display:block}.home-shell>.site-footer .footer-inner{width:100%;min-height:0;padding:28px 22px 32px;gap:12px;line-height:1.3}.section{padding-top:72px}.project-list{grid-template-columns:1fr;gap:32px}.tiles{grid-template-columns:1fr 1fr;gap:24px 12px}.page-heading{padding-top:12px}.display{font-size:38px}.index-content{padding-top:54px}.goodreads-shelf .gr_grid_container{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:22px 12px}.goodreads-shelf .gr_grid_book_container img{max-width:98px}.detail-title{font-size:36px}.project-detail-copy p{grid-template-columns:1fr;gap:7px;padding:18px 0}.project-detail-copy strong{padding-top:0}.photo-gallery{columns:1}.photo-expand{display:none}.lightbox{padding:62px 12px 70px}.lightbox-toolbar{top:10px;right:12px;left:12px}.lightbox-arrow{top:auto;bottom:14px;width:44px;height:44px;transform:none}.lightbox-previous{left:16px}.lightbox-next{right:16px}.lightbox-figure img{max-height:calc(100vh - 150px)}.footer-inner{display:flex;width:min(100% - 36px,1120px);min-height:170px;flex-direction:column;align-items:flex-start;justify-content:center;gap:16px}.footer-note{justify-self:auto}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}.home-index-link:hover .home-index-meta b{transform:none}.lightbox,.lightbox-figure img,.project-carousel-image{animation:none}}
