/* Projects — city section, /projects gallery, full project view, lightbox, YouTube facade. Spec: hld-projects §8 */
.pj-proof{display:flex;align-items:center;gap:.5rem;margin:-.2rem 0 1.6rem;font-weight:600;color:var(--ds-evergreen)}
.pj-proof svg{flex:none;color:var(--ds-evergreen)}
.pj-city__grid{display:grid;gap:var(--ds-gap);grid-template-columns:1fr}
@media (min-width:880px){.pj-city__grid{grid-template-columns:repeat(2,1fr)}}

/* card */
.pj-card{background:var(--ds-white);color:var(--ds-night);border-radius:var(--ds-radius);overflow:hidden;box-shadow:var(--ds-shadow);border:1px solid var(--ds-line-dark);display:flex;flex-direction:column;min-width:0;transition:box-shadow .25s ease,transform .25s ease}
.pj-card:hover{box-shadow:var(--ds-shadow-lg)}
.pj-card__media{position:relative;display:block;width:100%;padding:0;border:0;background:var(--ds-night-2);cursor:zoom-in;aspect-ratio:4/3;overflow:hidden;color:inherit;text-decoration:none}
a.pj-card__media{cursor:pointer}
.pj-card__media picture,.pj-card__media img{display:block;width:100%;height:100%;object-fit:cover}
.pj-card__media img{transition:transform .45s ease}
.pj-card__media:hover img{transform:scale(1.04)}
.pj-card__media:focus-visible{outline:3px solid var(--ds-gold);outline-offset:-3px}
.pj-card__count{position:absolute;right:.7rem;bottom:.7rem;display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .65rem;border-radius:999px;background:rgba(21,24,29,.72);color:#fff;font-size:.8rem;font-weight:600}
.pj-card__body{padding:1.25rem 1.35rem 1.35rem;display:flex;flex-direction:column;gap:.55rem;flex:1;min-width:0}
.pj-card__title{font-size:var(--ds-h3);line-height:1.25;margin:0}
.pj-card__meta{margin:0;color:var(--ds-ink-soft);font-size:.9rem}
.pj-card__summary{margin:.1rem 0 0;line-height:1.65;color:var(--ds-ink);overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.pj-card__chips{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem;margin:.3rem 0 0;padding:0}
.pj-card__chips li{font-size:.78rem;font-weight:600;padding:.28rem .7rem;border-radius:999px;background:var(--ds-tint);color:var(--ds-green)}
.pj-card__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:auto;padding-top:.7rem}
.pj-card__cta{display:inline-flex;align-items:center;gap:.45rem;padding:.62rem 1.15rem;border-radius:999px;background:var(--ds-night);color:#fff;font-weight:700;font-size:.9rem;text-decoration:none;transition:background .2s ease}
.pj-card__cta svg{transition:transform .2s ease}
.pj-card__cta:hover{background:var(--ds-evergreen);color:#fff}
.pj-card__cta:hover svg{transform:translateX(3px)}
.pj-card__cta:focus-visible{outline:3px solid var(--ds-gold);outline-offset:2px}
.pj-card__more{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem 1rem;border-radius:999px;border:1px solid var(--ds-line-dark);background:transparent;color:var(--ds-night);font:inherit;font-weight:700;font-size:.9rem;cursor:pointer}
.pj-card__more:hover{border-color:var(--ds-gold-deep);color:var(--ds-gold-deep)}
.pj-city__all{margin:1.6rem 0 0;text-align:center}
.pj-city__all a{font-weight:700;color:var(--ds-gold-deep);text-decoration:none}

/* full story on the city page: in the HTML (indexable), collapsed for reading */
.pj-story{margin:0;border-top:1px solid var(--ds-line-dark);padding-top:.5rem}
.pj-story>summary{list-style:none;display:inline-flex;align-items:center;gap:.35rem;cursor:pointer;font-weight:700;font-size:.9rem;color:var(--ds-gold-deep);padding:.2rem 0;border-radius:4px}
.pj-story>summary::-webkit-details-marker{display:none}
.pj-story>summary svg{transition:transform .2s ease}
.pj-story[open]>summary svg{transform:rotate(180deg)}
.pj-story>summary:hover{color:var(--ds-night)}
.pj-story>summary:focus-visible{outline:3px solid var(--ds-gold);outline-offset:2px}
.pj-story__less{display:none}
.pj-story[open] .pj-story__more{display:none}
.pj-story[open] .pj-story__less{display:inline}
.pj-story__body p{margin:.55rem 0 0;line-height:1.75;color:var(--ds-ink);overflow-wrap:anywhere}
.pj-card__summary--auto:has(+ .pj-story[open]){display:none}

/* badges */
.pj-badges{display:flex;flex-wrap:wrap;gap:.4rem}
.pj-badge{display:inline-flex;align-items:center;gap:.32rem;padding:.32rem .72rem;border-radius:999px;font-size:.76rem;font-weight:700;line-height:1.2;letter-spacing:.01em;background:var(--ds-white);color:var(--ds-night);border:1px solid var(--ds-line-dark);white-space:nowrap}
.pj-badge svg{flex:none}
.pj-badge--season{background:var(--ds-evergreen);color:#fff;border-color:transparent}
.pj-badges--over{position:absolute;left:.7rem;top:.7rem;right:.7rem;pointer-events:none}
.pj-badges--over .pj-badge{background:rgba(255,255,255,.94);border-color:transparent;box-shadow:0 2px 10px rgba(0,0,0,.2)}
.pj-badges--over .pj-badge--season{color:#fff}
/* one color per season (ProjectService::seasonClass, start year % 5) */
.pj-badge--s0{background:#1a472a}
.pj-badge--s4{background:#3a4055}
.pj-badge--s3{background:#9a3b3b}
.pj-badge--s2{background:#6f5a2e}
.pj-badge--s1{background:#4e6358}
.pj-badges--over .pj-badge--s0{background:rgba(26,71,42,.95)}
.pj-badges--over .pj-badge--s4{background:rgba(58,64,85,.95)}
.pj-badges--over .pj-badge--s3{background:rgba(154,59,59,.95)}
.pj-badges--over .pj-badge--s2{background:rgba(111,90,46,.95)}
.pj-badges--over .pj-badge--s1{background:rgba(78,99,88,.95)}

/* YouTube facade */
.pj-yt{position:relative;margin-top:.4rem;border-radius:var(--ds-radius-sm);overflow:hidden;aspect-ratio:16/9;background:var(--ds-night)}
.pj-yt__btn{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;background:var(--ds-night);color:#fff;cursor:pointer}
.pj-yt__btn img{width:100%;height:100%;object-fit:cover;opacity:.82}
.pj-yt__play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:64px;height:64px;border-radius:50%;background:rgba(21,24,29,.78);display:grid;place-items:center;transition:background .2s}
.pj-yt__btn:hover .pj-yt__play{background:var(--ds-red)}
.pj-yt__label{position:absolute;left:.8rem;bottom:.7rem;font-weight:700;font-size:.85rem;text-shadow:0 1px 6px rgba(0,0,0,.6)}
.pj-yt iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

/* full project view (in place of the gallery on /projects; site header and footer stay) */
.pj-view{display:block;min-width:0}
.pj-view[hidden]{display:none}
.pj-projects--view{padding-top:clamp(1rem,2.5vw,1.6rem)}
.pj-view:not([hidden]){animation:pj-view-in .28s ease-out}
@keyframes pj-view-in{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.pj-view__bar{display:flex;align-items:center;margin:0 0 .2rem}
.pj-view__back{display:inline-flex;align-items:center;gap:.45rem;margin-left:-.75rem;border:0;background:transparent;font:inherit;font-weight:700;font-size:.95rem;color:var(--ds-night);cursor:pointer;padding:.5rem .75rem;border-radius:999px;text-decoration:none}
.pj-view__back:hover,.pj-view__back:focus-visible{background:var(--ds-tint);outline:none}
.pj-view__head{padding:.4rem 0 clamp(1.2rem,3vw,1.8rem);max-width:920px}
.pj-view__title{font-size:var(--ds-h1);line-height:1.08;margin:.9rem 0 .7rem;color:var(--ds-night);max-width:22ch}
.pj-view__lead{font-size:var(--ds-lead);line-height:1.55;color:var(--ds-ink-soft);margin:0;max-width:62ch}
.pj-view__hero{position:relative;display:block;width:100%;padding:0;border:0;border-radius:var(--ds-radius);overflow:hidden;cursor:zoom-in;background:var(--ds-night-2);aspect-ratio:16/9;box-shadow:var(--ds-shadow-lg)}
.pj-view__hero picture,.pj-view__hero img{display:block;width:100%;height:100%;object-fit:cover}
.pj-view__hero:focus-visible{outline:3px solid var(--ds-gold);outline-offset:3px}
@media (max-width:640px){.pj-view__hero{aspect-ratio:4/3}}
.pj-view__layout{display:grid;gap:clamp(1.6rem,4vw,3rem);grid-template-columns:minmax(0,1fr);padding:clamp(1.8rem,4vw,3rem) 0 clamp(3rem,7vw,5rem)}
@media (min-width:960px){.pj-view__layout{grid-template-columns:minmax(0,1fr) 340px;align-items:start}}
.pj-view__h{font-size:var(--ds-h3);line-height:1.2;margin:0 0 .9rem;color:var(--ds-night)}
.pj-view__main > .pj-view__h:not(:first-child){margin-top:2.2rem}
.pj-view__story p{margin:0 0 1.1rem;line-height:1.85;font-size:1.06rem;color:var(--ds-ink);max-width:68ch}
.pj-view__photos{display:grid;gap:.9rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr))}
.pj-view__photo{margin:0;min-width:0}
.pj-view__photo button{display:block;width:100%;padding:0;border:0;border-radius:var(--ds-radius-sm);overflow:hidden;cursor:zoom-in;aspect-ratio:4/3;background:var(--ds-night-2)}
.pj-view__photo picture,.pj-view__photo img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .4s ease}
.pj-view__photo button:hover img{transform:scale(1.05)}
.pj-view__photo button:focus-visible{outline:3px solid var(--ds-gold);outline-offset:2px}
.pj-view__photo figcaption{font-size:.86rem;line-height:1.45;color:var(--ds-ink-soft);margin-top:.45rem}
.pj-view__aside{background:var(--ds-white);border:1px solid var(--ds-line-dark);border-radius:var(--ds-radius);box-shadow:var(--ds-shadow);padding:1.4rem 1.4rem 1.2rem;min-width:0}
@media (min-width:960px){.pj-view__aside{position:sticky;top:6.5rem}}
.pj-view__dl{display:grid;grid-template-columns:auto 1fr;gap:.6rem 1rem;margin:0 0 1.1rem;font-size:.93rem}
.pj-view__dl dt{color:var(--ds-ink-soft);font-weight:600}
.pj-view__dl dd{margin:0;color:var(--ds-night);font-weight:700;min-width:0;overflow-wrap:anywhere}
.pj-view__dl a{color:var(--ds-gold-deep);text-decoration:underline;text-underline-offset:3px}
.pj-view__label{margin:0 0 .1rem;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--ds-ink-soft)}
.pj-view__aside .pj-card__chips{margin:.4rem 0 1.1rem}
.pj-view__aside .pj-proof{margin:0 0 1rem;align-items:flex-start;font-size:.92rem;line-height:1.45}
.pj-view__aside .pj-proof svg{margin-top:.1rem}
.pj-view__cta{display:flex;flex-direction:column;gap:.35rem;padding-top:1rem;border-top:1px solid var(--ds-line-dark)}
.pj-view__cta .ds-btn{justify-content:center}
.pj-view__call{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.6rem;font-weight:700;color:var(--ds-night);text-decoration:none}
.pj-view__call:hover{color:var(--ds-gold-deep)}

/* lightbox */
.pj-lb{border:0;padding:0;margin:0;width:100vw;height:100vh;max-width:none;max-height:none;background:rgba(10,12,15,.94);color:#fff}
.pj-lb::backdrop{background:rgba(10,12,15,.94)}
.pj-lb__stage{position:absolute;inset:3.5rem 1rem 1rem;display:grid;place-items:center}
.pj-lb__stage picture,.pj-lb__stage img{max-width:100%;max-height:100%;object-fit:contain;display:block}
.pj-lb__bar{position:absolute;left:50%;bottom:1.1rem;transform:translateX(-50%);width:min(760px,calc(100% - 1.5rem));padding:.75rem 1.2rem .85rem;text-align:center;font-size:.92rem;line-height:1.5;color:#fff;background:rgba(0,0,0,.66);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:12px;box-shadow:0 8px 30px rgba(0,0,0,.35)}
.pj-lb__bar:empty{display:none}
.pj-lb__bar strong{display:block;font-size:1rem;margin-bottom:.1rem}
.pj-lb__bar span{display:block;color:rgba(255,255,255,.9)}
.pj-lb__btn{position:absolute;width:48px;height:48px;border-radius:50%;border:0;background:rgba(0,0,0,.5);color:#fff;cursor:pointer;display:grid;place-items:center}
.pj-lb__btn:hover,.pj-lb__btn:focus-visible{background:rgba(0,0,0,.75);outline:2px solid rgba(255,255,255,.6);outline-offset:1px}
.pj-lb__close{top:.8rem;right:.8rem}
.pj-lb__prev{left:.8rem;top:50%;transform:translateY(-50%)}
.pj-lb__next{right:.8rem;top:50%;transform:translateY(-50%)}
.pj-lb__counter{position:absolute;top:1.15rem;left:1rem;font-size:.85rem;font-weight:600;padding:.3rem .75rem;border-radius:999px;background:rgba(0,0,0,.55)}

/* /projects gallery */
.pj-filters{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 1.5rem}
.pj-filters select{font:inherit;padding:.55rem .9rem;border-radius:999px;border:1px solid var(--ds-line-dark);background:var(--ds-white);color:var(--ds-night)}
.pj-gallery{display:grid;gap:var(--ds-gap);grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}
.pj-empty{text-align:center;color:var(--ds-ink-soft);padding:2rem 0}
/* /gallery photo wall: project photos open the project; legacy samples open the lightbox */
.gl-head{text-align:center;max-width:760px;margin:0 auto 1.6rem}
.gl-lead{color:var(--ds-ink-soft);margin:0 auto;max-width:60ch;line-height:1.6}
.gl-filters{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;margin:0 0 1.6rem}
.gl-chip{font:inherit;font-weight:600;font-size:.9rem;padding:.5rem 1.05rem;border-radius:999px;border:1px solid var(--ds-line-dark);background:var(--ds-white);color:var(--ds-night);cursor:pointer}
.gl-chip:hover{border-color:var(--ds-gold-deep)}
.gl-chip.is-active{background:var(--ds-night);border-color:var(--ds-night);color:#fff}
.gl-chip:focus-visible{outline:3px solid var(--ds-gold);outline-offset:2px}
.gl-grid{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));grid-auto-flow:dense}
@media (min-width:900px){.gl-grid>.gl-tile:first-child{grid-column:span 2;grid-row:span 2}}
.gl-tile{position:relative;display:block;width:100%;padding:0;border:0;margin:0;border-radius:var(--ds-radius-sm);overflow:hidden;background:var(--ds-night-2);aspect-ratio:4/3;color:#fff;text-decoration:none;cursor:pointer;box-shadow:0 4px 18px rgba(21,24,29,.1)}
.gl-tile[hidden]{display:none}
.gl-tile picture,.gl-tile img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.gl-tile:hover img{transform:scale(1.05)}
.gl-tile:focus-visible{outline:3px solid var(--ds-gold);outline-offset:3px}
.gl-tile .pj-badges--over{left:.6rem;top:.6rem;right:.6rem}
.gl-tile__info{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:flex-end;justify-content:space-between;gap:.75rem;padding:2.4rem .9rem .8rem;background:linear-gradient(to top,rgba(0,0,0,.8),rgba(0,0,0,0));text-align:left;opacity:0;transform:translateY(8px);transition:opacity .25s ease,transform .25s ease}
.gl-tile:hover .gl-tile__info,.gl-tile:focus-visible .gl-tile__info{opacity:1;transform:none}
@media (hover:none){.gl-tile__info{opacity:1;transform:none}}
.gl-tile__title{font-weight:700;font-size:.95rem;line-height:1.3;text-shadow:0 1px 3px rgba(0,0,0,.45)}
.gl-tile__cta{display:inline-flex;align-items:center;gap:.3rem;flex:none;font-size:.8rem;font-weight:700;padding:.35rem .7rem;border-radius:999px;background:rgba(255,255,255,.95);color:var(--ds-night)}
.gl-tile--sample{cursor:zoom-in}
.gl-empty{text-align:center;color:var(--ds-ink-soft);padding:2rem 0}
.gl-cta{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;margin-top:2.2rem}
@media (max-width:520px){.gl-tile__title{font-size:.88rem}.gl-tile__cta{display:none}}

@media (prefers-reduced-motion:reduce){.gl-tile img,.gl-tile__info,.pj-story>summary svg,.pj-card,.pj-card__media img,.pj-view__photo img,.pj-card__cta svg{transition:none}.pj-card__media:hover img,.pj-view__photo button:hover img{transform:none}.pj-view:not([hidden]){animation:none}}
