.project-gallery{--pg-bg:#fff;--pg-ink:#1a2b3d;--pg-muted:#5f6b7a;--pg-line:#e4e7ec;--pg-accent:#1a2b3d;background:var(--pg-bg);color:var(--pg-ink);border-top:1px solid var(--pg-line);padding:56px 0 64px}.projects-page .project-gallery{border-top:0;padding-top:0}.projects-page .project-gallery-heading{display:none}.site-dark .project-gallery{--pg-bg:#09182c;--pg-ink:#edf4ff;--pg-muted:#aabbd1;--pg-line:#29405b;--pg-accent:#85b3ff}.project-gallery-wrap{width:min(100% - 64px,1240px);margin:0 auto}.project-gallery-heading{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px 32px;margin-bottom:22px;display:grid}.project-gallery-title,.project-gallery-heading h2{letter-spacing:-.04em;text-wrap:balance;max-width:16ch;margin:0;font-size:clamp(1.55rem,2.4vw,2.1rem);font-weight:650;line-height:1.12}.project-gallery-heading-side{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px 16px;max-width:36rem;display:flex}.project-gallery-lede,.project-gallery-heading-side p{max-width:32ch;color:var(--pg-muted);text-wrap:pretty;margin:0;font-size:.88rem;line-height:1.5}.project-gallery-all{color:var(--pg-ink);white-space:nowrap;align-items:center;gap:8px;font-size:13px;font-weight:650;text-decoration:none;display:inline-flex}.project-gallery-all svg{width:15px;height:15px;transition:transform .25s}.project-gallery-all:hover svg{transform:translate(3px,-3px)}.project-index{margin:0;padding:0;list-style:none}.project-index>li{position:relative}.project-index-row{min-height:0;color:inherit;border-bottom:1px solid var(--pg-line);grid-template-columns:14px 112px 82px minmax(0,1fr) 18px;align-items:center;gap:14px 18px;padding:14px 0;text-decoration:none;transition:background .2s;display:grid}.project-index>li:first-child .project-index-row{border-top:1px solid var(--pg-line)}.project-index-row:hover{background:color-mix(in srgb, var(--pg-ink) 3%, transparent)}.project-index-thumb{border:1px solid var(--pg-line);background:var(--pg-line);width:82px;height:52px;display:block;position:relative;overflow:hidden}.project-index-thumb img{object-fit:cover;transition:transform .35s,filter .35s}.project-index-row:hover .project-index-thumb img{filter:saturate(1.08);transform:scale(1.06)}.project-index-marker{justify-content:center;align-self:stretch;min-height:100%;display:flex;position:relative}.project-index-marker:before{content:"";background:var(--pg-line);width:1px;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.project-index>li:first-child .project-index-marker:before{top:50%}.project-index>li:last-child .project-index-marker:before{bottom:50%}.project-index-dot{z-index:1;border:1.5px solid var(--pg-ink);background:var(--pg-bg);width:9px;height:9px;box-shadow:0 0 0 3px var(--pg-bg);border-radius:50%;margin:auto 0;transition:background .2s,transform .2s;display:block;position:relative}.project-index-row:hover .project-index-dot{background:var(--pg-ink);transform:scale(1.08)}.project-index-aside{flex-wrap:wrap;align-items:baseline;gap:8px 10px;min-width:0;display:flex}.project-index-number{font:650 11px/1 var(--font-geist-mono);letter-spacing:.1em;color:var(--pg-muted)}.project-index-period{color:var(--pg-muted);font:550 11px/1.2 var(--font-geist-mono);letter-spacing:.02em}.project-index-main{flex-wrap:wrap;align-items:baseline;gap:6px 14px;min-width:0;display:flex}.project-index-title{color:var(--pg-ink);letter-spacing:-.025em;margin:0;font-size:1.02rem;font-weight:650;line-height:1.3}.project-index-meta{color:var(--pg-muted);font:600 10px/1 var(--font-geist-mono);letter-spacing:.08em;text-transform:uppercase;flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.project-index-arrow{width:16px;height:16px;color:var(--pg-muted);transition:transform .2s,color .2s}.project-index-row:hover .project-index-arrow{color:var(--pg-ink);transform:translate(2px,-2px)}@media (max-width:900px){.project-gallery-heading{grid-template-columns:1fr;align-items:start;gap:10px}.project-gallery-heading-side{justify-content:flex-start;max-width:none}.project-index-row{grid-template-columns:12px 96px 72px minmax(0,1fr) 16px;gap:12px 14px;padding:12px 0}}@media (max-width:640px){.project-gallery{padding:44px 0 52px}.project-gallery-wrap{width:calc(100% - 28px)}.project-index-row{grid-template-columns:12px minmax(0,1fr) 16px;gap:10px 12px}.project-index-aside{grid-area:1/2}.project-index-main{flex-direction:column;grid-area:2/2;align-items:flex-start;gap:4px}.project-index-arrow{grid-area:1/3/3;align-self:center}.project-index-marker{grid-row:1/3}.project-index-thumb{display:none}}@media (prefers-reduced-motion:reduce){.project-gallery-all svg,.project-index-row,.project-index-arrow,.project-index-dot,.project-timeline-toggle svg,.project-timeline-dot{transition:none}.project-index-row:hover .project-index-arrow,.project-index-row:hover .project-index-dot{transform:none}}.project-timeline{--pt-ink:#1a2b3d;--pt-muted:#5f6b7a;--pt-line:#d7dde6;--pt-soft:#f4f6f8;--pt-bg:var(--content-bg,#fff);--pt-media:220px;color:var(--pt-ink);margin:4px 0 0}.site-dark .project-timeline{--pt-ink:#edf4ff;--pt-muted:#aabbd1;--pt-line:#2d4460;--pt-soft:#10243e;--pt-bg:var(--content-bg,#09182c)}.project-timeline-list{gap:0;margin:0;padding:0;list-style:none;display:grid;position:relative}.project-timeline-list:before{content:"";background:var(--pt-line);pointer-events:none;width:1px;position:absolute;top:18px;bottom:18px;left:50%;transform:translate(-50%)}.project-timeline-item{grid-template-columns:minmax(0,1fr) 44px minmax(0,1fr);align-items:start;gap:0 20px;padding:0 0 28px;display:grid;position:relative}.project-timeline-item:last-child{padding-bottom:4px}.project-timeline-spine{z-index:1;grid-area:1/2;justify-content:center;align-items:flex-start;padding-top:10px;display:flex;position:relative}.project-timeline-dot{border:1px solid var(--pt-line);background:var(--pt-bg);width:32px;height:32px;color:var(--pt-ink);font:650 10px/1 var(--font-geist-mono);letter-spacing:.06em;box-shadow:0 0 0 5px var(--pt-bg);border-radius:50%;place-items:center;transition:border-color .25s,background .25s,color .25s;display:grid}.project-timeline-item:hover .project-timeline-dot{background:var(--pt-ink);border-color:var(--pt-ink);color:var(--pt-bg)}.project-timeline-item:has(.project-timeline-details[open]) .project-timeline-dot{background:var(--pt-ink);border-color:var(--pt-ink);color:var(--pt-bg)}.project-timeline-media{width:min(100%, var(--pt-media));aspect-ratio:4/3;border:1px solid var(--pt-line);background:var(--pt-soft);border-radius:10px;grid-area:1/1;justify-self:end;position:relative;overflow:hidden}.project-timeline-details{background:0 0;border:0;grid-area:1/3;place-self:start;min-width:0;max-width:34ch;margin-top:2px}.project-timeline-item--flip .project-timeline-media{grid-column:3;justify-self:start}.project-timeline-item--flip .project-timeline-details{text-align:right;grid-column:1;justify-self:end}.project-timeline-art{object-fit:cover;object-position:center;transition:transform .45s cubic-bezier(.22,.8,.28,1)}.project-timeline-item:hover .project-timeline-art{transform:scale(1.03)}.project-timeline-item:has(.project-timeline-details[open]) .project-timeline-art{transform:scale(1.03)}.project-timeline-summary{cursor:pointer;gap:6px;list-style:none;display:grid}.project-timeline-summary::-webkit-details-marker{display:none}.project-timeline-summary:focus-visible{outline:2px solid var(--pt-ink);outline-offset:6px}.project-timeline-rail{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.project-timeline-item--flip .project-timeline-rail{justify-content:flex-end}.project-timeline-period{color:var(--pt-muted);font:550 11px/1.2 var(--font-geist-mono);letter-spacing:.05em}.project-timeline-meta{color:var(--pt-muted);font:600 10px/1 var(--font-geist-mono);letter-spacing:.08em;text-transform:uppercase;flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.project-timeline-title{letter-spacing:-.03em;text-wrap:balance;margin:0;font-size:clamp(1.1rem,1.7vw,1.35rem);font-weight:650;line-height:1.25}.project-timeline-lead{color:var(--pt-muted);text-wrap:pretty;margin:0;font-size:.88rem;line-height:1.55}.project-timeline-toggle{color:var(--pt-ink);align-items:center;gap:6px;margin-top:2px;font-size:12px;font-weight:650;display:inline-flex}.project-timeline-item--flip .project-timeline-toggle{justify-self:end}.project-timeline-toggle svg{width:14px;height:14px;transition:transform .25s}.project-timeline-details[open] .project-timeline-toggle svg{transform:rotate(180deg)}.project-timeline-panel{border-top:1px solid var(--pt-line);text-align:left;margin-top:12px;padding-top:12px;animation:.3s both projectTimelineIn}.project-timeline-panel p{color:var(--pt-muted);margin:0;font-size:.88rem;line-height:1.65}.project-timeline-panel ul{gap:7px;margin:10px 0 0;padding:0;list-style:none;display:grid}.project-timeline-panel li{color:var(--pt-ink);padding-left:12px;font-size:.86rem;line-height:1.45;position:relative}.project-timeline-panel li:before{content:"";background:var(--pt-ink);border-radius:50%;width:4px;height:4px;position:absolute;top:.5em;left:0}@keyframes projectTimelineIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media (max-width:900px){.project-timeline{--pt-media:200px}.project-timeline-list:before{left:16px;transform:none}.project-timeline-item,.project-timeline-item--flip{grid-template-columns:32px minmax(0,1fr);gap:0 14px;padding-bottom:24px}.project-timeline-media,.project-timeline-item--flip .project-timeline-media{width:min(100%, var(--pt-media));grid-area:1/2;justify-self:start}.project-timeline-spine{grid-area:1/1/span 2;padding-top:14px}.project-timeline-details,.project-timeline-item--flip .project-timeline-details{text-align:left;grid-area:2/2;justify-self:stretch;max-width:none}.project-timeline-item--flip .project-timeline-rail,.project-timeline-item--flip .project-timeline-toggle{justify-content:flex-start;justify-self:start}}@media (max-width:700px){.project-timeline{--pt-media:160px}.project-timeline-list:before{left:13px}.project-timeline-item{grid-template-columns:26px minmax(0,1fr);gap:0 12px;padding-bottom:22px}.project-timeline-dot{width:26px;height:26px;box-shadow:0 0 0 4px var(--pt-bg);font-size:9px}.project-timeline-spine{padding-top:12px}.project-timeline-title{font-size:clamp(1.05rem,4.8vw,1.25rem)}.project-timeline-lead{font-size:.84rem}}@media (prefers-reduced-motion:reduce){.project-timeline-panel,.project-timeline-art{transition:none;animation:none}.project-timeline-item:hover .project-timeline-art{transform:none}.project-timeline-item:has(.project-timeline-details[open]) .project-timeline-art{transform:none}}
