.project-page{min-height:100svh;padding:calc(4.6rem + env(safe-area-inset-top)) var(--page-gutter) var(--space-12);background:linear-gradient(155deg, color-mix(in srgb, var(--color-parchment) 30%, var(--color-paper)), var(--color-paper) 52%)}.project-shell{width:min(100%,68rem);margin-inline:auto}.project-header{text-align:center;width:100%;max-width:64rem;margin-inline:auto}.project-header .eyebrow{margin-bottom:.2rem}.project-header h1{white-space:nowrap;width:100%;font-size:clamp(1.8rem,5vw,3.35rem);line-height:.94;overflow:hidden}.project-summary{text-overflow:ellipsis;white-space:nowrap;max-width:42rem;margin:.45rem auto 0;font-size:clamp(.88rem,2.5vw,1.05rem);overflow:hidden}.timeline-section{margin-top:1.1rem}.timeline-heading{margin:0 0 .2rem}.timeline-scroll-shell{--timeline-side-control-width:2.5rem;--timeline-side-gap:.15rem;--timeline-line-bottom:1.05rem;padding-inline:calc(var(--timeline-side-control-width) + var(--timeline-side-gap));position:relative}.timeline-scroll-shell:after{z-index:0;right:calc(var(--timeline-side-control-width) + var(--timeline-side-gap));bottom:var(--timeline-line-bottom);left:calc(var(--timeline-side-control-width) + var(--timeline-side-gap));background:var(--color-brand-primary);content:"";pointer-events:none;height:.32rem;position:absolute}.timeline-edge-control{z-index:240;bottom:calc(var(--timeline-line-bottom) + .16rem - 1.5rem);width:var(--timeline-side-control-width);height:3rem;color:var(--color-brand-primary);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;transition:color .16s,opacity .16s,transform .16s;display:grid;position:absolute}.timeline-edge-control svg{fill:none;stroke:currentColor;stroke-linecap:square;stroke-linejoin:miter;stroke-width:2.2px;width:1.25rem;height:1.25rem;transition:width .16s,height .16s,stroke-width .16s;display:block}.timeline-edge-control--back{left:0}.timeline-edge-control--forward{right:0}.timeline-edge-control.has-hidden-content svg{stroke-width:2.7px;width:2.3rem;height:2.3rem}.timeline-edge-control:disabled{opacity:.42;cursor:default}.timeline-edge-control:not(:disabled):hover,.timeline-edge-control:not(:disabled):focus-visible{color:var(--color-ink);transform:scale(1.06)}.timeline-overflow-peek{z-index:210;opacity:0;pointer-events:none;background:linear-gradient(90deg,#fffffff5,#ffffff6b);border:1px solid #720e0f4d;width:.62rem;height:4.55rem;transition:opacity .15s;display:block;position:absolute;top:.55rem;box-shadow:0 3px 7px #05131d29}.timeline-overflow-peek--back{left:calc(var(--timeline-side-control-width) + var(--timeline-side-gap))}.timeline-overflow-peek--forward{right:calc(var(--timeline-side-control-width) + var(--timeline-side-gap));transform:scaleX(-1)}.timeline-scroll-shell.has-hidden-left .timeline-overflow-peek--back,.timeline-scroll-shell.has-hidden-right .timeline-overflow-peek--forward{opacity:1}.timeline-scroll{z-index:1;overscroll-behavior-inline:contain;scrollbar-width:none;-ms-overflow-style:none;scroll-snap-type:x proximity;margin-top:0;padding:.35rem 0 .25rem;position:relative;overflow:auto hidden}.timeline-scroll::-webkit-scrollbar{width:0;height:0;display:none}.timeline-jump-row{justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:-.05rem;display:flex}.timeline-jump-hint{color:var(--color-brand-primary);font-family:var(--font-heading);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;padding:.15rem 0;font-size:.66rem;font-weight:700;display:block}.timeline-oldest-hint{text-align:left}.timeline-newest-hint{text-align:right;margin-left:auto}.timeline-jump-hint:hover,.timeline-jump-hint:focus-visible{color:var(--color-ink);text-underline-offset:.18em;text-decoration:underline}.timeline-track{isolation:isolate;min-height:6.85rem;position:relative}.timeline-item{z-index:2;width:7.25rem;min-height:5.15rem;color:var(--color-ink);text-align:left;cursor:pointer;scroll-snap-align:center;background:linear-gradient(90deg,#fffffffa 76%,#ffffff29);border:1px solid #0000;grid-template:"title title"minmax(2.5rem,auto)"image date"2.15rem/2rem minmax(0,1fr);align-content:end;gap:.35rem .45rem;padding:.42rem .48rem .32rem;transition:translate .15s,filter .15s,border-color .15s;display:grid;position:absolute;bottom:1.5rem}.timeline-item:before{background:var(--color-brand-primary);content:"";width:.16rem;height:.54rem;position:absolute;bottom:-.54rem;left:1.42rem}.timeline-item:after{box-sizing:border-box;border:.16rem solid var(--color-brand-primary);background:var(--color-paper);content:"";border-radius:50%;width:.62rem;height:.62rem;position:absolute;bottom:-.85rem;left:1.19rem}.timeline-item:hover,.timeline-item:focus-visible,.timeline-item.is-active{background:var(--color-paper);filter:drop-shadow(0 5px 6px #05131d38);border-color:#720e0f59;z-index:100!important}.timeline-item.is-active:before{width:.22rem}.timeline-item.is-active:after{background:var(--color-brand-primary)}.timeline-item__title{min-width:0;font-family:var(--font-heading);-webkit-line-clamp:2;-webkit-box-orient:vertical;grid-area:title;font-size:.73rem;font-weight:700;line-height:1.18;display:-webkit-box;position:relative;overflow:hidden}.timeline-item__title:after{background:linear-gradient(90deg, transparent, var(--color-paper));content:"";pointer-events:none;width:1.9rem;height:1rem;position:absolute;bottom:0;right:0}.timeline-item img{object-fit:cover;background:var(--color-ink);grid-area:image;width:2rem;max-width:none;height:2rem;box-shadow:0 0 0 1px #05131d33}.timeline-item__date{color:var(--color-brand-primary);transform-origin:0;white-space:nowrap;grid-area:date;align-self:center;font-size:.67rem;font-weight:700;line-height:1.1;transform:rotate(-10deg)}.selected-post{box-shadow:var(--shadow-light);background:#ffffffe0;margin-top:.9rem}.selected-post__header{justify-content:space-between;align-items:baseline;gap:var(--space-3);min-height:3.2rem;padding:.65rem .9rem;display:flex}.selected-post__header h2{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:clamp(1.2rem,5vw,2rem);overflow:hidden}.selected-post__header time{color:var(--color-brand-primary);font-family:var(--font-heading);flex:none;font-size:.72rem;font-weight:700}.media-stage-shell{isolation:isolate;position:relative}.media-stage{background:var(--color-ink);outline-offset:-3px;touch-action:pan-y;height:16.5rem;min-height:16.5rem;position:relative;overflow:hidden}.post-media-control{z-index:8;width:2.5rem;height:2.75rem;color:var(--color-paper);cursor:pointer;background:#05131da8;border:0;place-items:center;padding:0;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.post-media-control span{font-size:1.45rem;line-height:1}.post-media-control--previous{left:.3rem}.post-media-control--next{right:.3rem}.post-media-control:not(:disabled):hover,.post-media-control:not(:disabled):focus-visible{background:#720e0fe6}.post-media-control:disabled{opacity:0;pointer-events:none}.gallery-viewer,.external-media{place-items:center;width:100%;height:100%;min-height:0;margin:0;display:grid;position:relative}.gallery-viewer img,.external-media img{object-fit:contain;object-position:center;width:100%;max-width:none;height:100%;max-height:none;display:block;position:absolute;inset:0}.gallery-count,.gallery-swipe-hint{z-index:3;color:var(--color-paper);background:#05131dc7;padding:.25rem .5rem;font-size:.75rem;position:absolute;bottom:.65rem}.gallery-count{right:.65rem}.gallery-swipe-hint{left:.65rem}.external-media__action{inset:auto var(--space-4) var(--space-4);color:var(--color-paper);font-family:var(--font-heading);text-align:center;background:#720e0ff0;padding:.85rem 1rem;font-size:.82rem;font-weight:700;text-decoration:none;position:absolute}.media-empty{min-height:18rem;padding:var(--space-6);color:var(--color-paper);text-align:center;place-items:center;display:grid}.post-description{z-index:2;overscroll-behavior:contain;white-space:pre-wrap;background:#fffffffa;border-bottom:1px solid #720e0f38;max-height:clamp(3rem,7svh,6rem);padding:.65rem .9rem;font-size:.92rem;line-height:1.35;position:relative;overflow-y:auto}.post-description__empty{color:#05131da3;font-style:italic}.project-selector{margin-top:var(--space-12);scroll-margin-top:5rem}.project-selector>header h2{font-size:clamp(2rem,8vw,3.5rem)}.selector-filters{margin-top:var(--space-5,1.25rem);gap:.5rem;padding-bottom:.55rem;display:flex;overflow-x:auto}.selector-filter{border:1px solid var(--color-brand-primary);background:var(--color-paper);min-height:2.5rem;color:var(--color-brand-primary);font-family:var(--font-heading);cursor:pointer;flex:none;padding:.5rem .8rem;font-size:.75rem;font-weight:700}.selector-filter.is-active,.selector-filter:hover{background:var(--color-brand-primary);color:var(--color-paper)}.selector-status{margin-top:var(--space-5,1.25rem)}.selector-grid{gap:var(--space-4);margin-top:var(--space-5,1.25rem);display:grid}.selector-card a{min-height:7rem;color:var(--color-ink);box-shadow:var(--shadow-light);background:#ffffffe0;grid-template-columns:7rem minmax(0,1fr);text-decoration:none;display:grid;overflow:hidden}.selector-card.is-current a{box-shadow:inset 0 0 0 2px var(--color-brand-primary), var(--shadow-light)}.selector-card img{object-fit:cover;background:var(--color-ink);width:7rem;max-width:none;height:100%;display:block}.selector-card a>div{min-width:0;padding:var(--space-3);align-content:center;gap:.2rem;display:grid}.selector-card h3{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:1.05rem;display:-webkit-box;overflow:hidden}.selector-card p,.selector-card time,.selector-card__current{font-size:.75rem;line-height:1.3}.selector-card__current{color:var(--color-brand-primary);font-weight:700}@media (width<=30rem){.project-page{padding-top:calc(4.25rem + env(safe-area-inset-top))}.project-header h1{font-size:clamp(1.75rem,8vw,3.1rem)}.timeline-track{min-height:6.55rem}.timeline-item{width:6.85rem}}@media (width>=44rem){.project-page{padding-top:calc(3.75rem + env(safe-area-inset-top))}.project-header h1{font-size:clamp(2rem,4.25vw,3.2rem)}.project-header .eyebrow{font-size:.68rem}.selected-post{width:min(100%,56rem);margin-inline:auto}.selector-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=68rem){.project-page{padding-inline:2rem}.selector-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (prefers-reduced-motion:reduce){.timeline-item{transition:none}}
