/* =============================================================
 * g9-projects v4 — editorial hub + horizontal cards + scoped lightbox
 * Mobile-first.
 * ============================================================= */

.g9pr-page {
  --g9pr-bg:#fafafa;
  --g9pr-text:#1a1a1a;
  --g9pr-muted:#666;
  --g9pr-border:#e5e5e5;
  --g9pr-card:#fff;
  --g9pr-green:#016936;
  --g9pr-green-dark:#04331c;
  --g9pr-green-glow:rgba(1,105,54,0.10);
  --g9pr-accent:#b8860b;
  --g9pr-radius:14px;
  --g9pr-radius-sm:8px;
  --g9pr-shadow:0 4px 24px rgba(0,0,0,0.08);
  --g9pr-shadow-lg:0 12px 40px rgba(0,0,0,0.18);
  background:var(--g9pr-bg);
  color:var(--g9pr-text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  line-height:1.55;
}
.g9pr-container {
  max-width:1200px;
  margin:0 auto;
  padding:0 16px;
}
@media (min-width:768px) { .g9pr-container { padding:0 24px; } }

.g9pr-label {
  display:inline-block;
  background:rgba(1,105,54,0.10);
  color:var(--g9pr-green);
  font-size:0.78rem;
  font-weight:700;
  letter-spacing:0.06em;
  text-transform:uppercase;
  padding:4px 10px;
  border-radius:20px;
  margin-bottom:14px;
}
.g9pr-label--light {
  background:rgba(255,255,255,0.18);
  color:#fff;
  border:1px solid rgba(255,255,255,0.28);
}
.g9pr-section-title {
  font-size:1.4rem;
  font-weight:800;
  color:var(--g9pr-text);
  margin:0 0 18px;
  letter-spacing:-0.01em;
}

/* ── Editorial Hub Hero (single photo, NOT collage) ── */
.g9pr-hub-hero {
  position:relative;
  min-height:340px;
  padding:48px 0 44px;
  background:linear-gradient(135deg,#04331c 0%, #016936 100%);
  color:#fff;
  overflow:hidden;
}
.g9pr-hub-hero--has-photo .g9pr-hub-hero__bg {
  position:absolute; inset:0;
  background:var(--g9pr-hero-img,none) center/cover no-repeat;
  filter:brightness(0.28) blur(2px);
  z-index:0;
}
.g9pr-hub-hero::after {
  content:"";
  position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(4,51,28,0.78) 0%, rgba(4,51,28,0.96) 100%);
  z-index:1;
}
.g9pr-hub-hero .g9pr-container { position:relative; z-index:2; }

.g9pr-hub-hero__kicker {
  display:inline-block;
  font-size:0.85rem;
  font-weight:700;
  letter-spacing:0.16em;
  text-transform:uppercase;
  color:rgba(255,255,255,0.75);
  margin-bottom:10px;
  border-bottom:2px solid rgba(255,255,255,0.45);
  padding-bottom:3px;
}
.g9pr-hub-hero__title {
  font-size:clamp(2.2rem, 6.5vw, 3.6rem);
  font-weight:900;
  line-height:1.05;
  margin:0 0 16px;
  letter-spacing:-0.02em;
  color:#fff;
  text-shadow:0 2px 30px rgba(0,0,0,0.7), 0 0 14px rgba(0,0,0,0.5), 0 1px 0 rgba(0,0,0,0.4);
}
.g9pr-hub-hero__sub {
  font-size:clamp(1rem, 2vw, 1.15rem);
  max-width:680px;
  margin:0;
  color:#fff;
  line-height:1.6;
  text-shadow:0 1px 10px rgba(0,0,0,0.45);
}

/* ── Stat strip (3 metrics) ── */
.g9pr-stats {
  background:#fff;
  border-bottom:1px solid var(--g9pr-border);
}
.g9pr-stats__row {
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:0;
}
.g9pr-stats__cell {
  text-align:center;
  padding:18px 12px;
  border-right:1px solid var(--g9pr-border);
}
.g9pr-stats__cell:last-child { border-right:0; }
@media (min-width:560px) {
  .g9pr-stats__cell { padding:24px 12px; }
}
.g9pr-stats__num {
  display:block;
  font-size:clamp(1.5rem, 4vw, 2.2rem);
  font-weight:900;
  color:var(--g9pr-green);
  line-height:1;
  margin-bottom:6px;
}
.g9pr-stats__num--year {
  font-size:clamp(1rem, 2.6vw, 1.5rem);
  letter-spacing:-0.01em;
}
.g9pr-stats__label {
  display:block;
  font-size:0.76rem;
  color:var(--g9pr-muted);
  text-transform:uppercase;
  letter-spacing:0.05em;
  font-weight:600;
}

/* ── Featured story row (auto-rotates) ── */
.g9pr-featured {
  background:#fff;
  padding:32px 0 28px;
  border-bottom:1px solid var(--g9pr-border);
}
.g9pr-featured__heading {
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  margin-bottom:18px;
  gap:12px;
}
.g9pr-featured__title {
  font-size:1.05rem;
  font-weight:800;
  margin:0;
  color:var(--g9pr-text);
  text-transform:uppercase;
  letter-spacing:0.05em;
}
.g9pr-featured__hint {
  font-size:0.78rem;
  color:var(--g9pr-muted);
  font-style:italic;
}
.g9pr-featured__row {
  display:grid;
  grid-template-columns:1fr;
  gap:16px;
}
@media (min-width:880px) {
  .g9pr-featured__row {
    grid-template-columns:repeat(3, 1fr);
    gap:18px;
  }
}
.g9pr-featured__card {
  display:flex;
  flex-direction:column;
  background:#fff;
  border-radius:var(--g9pr-radius);
  overflow:hidden;
  box-shadow:var(--g9pr-shadow);
  text-decoration:none;
  color:inherit;
  transition:transform 0.25s ease, box-shadow 0.25s ease;
  min-height:180px;
}
.g9pr-featured__card:hover {
  transform:translateY(-3px);
  box-shadow:var(--g9pr-shadow-lg);
}
/* (v6) Featured cards uniform — no main variant */
.g9pr-featured__thumb {
  position:relative;
  aspect-ratio:16 / 9;
  overflow:hidden;
  background:#222;
}

.g9pr-featured__thumb img {
  width:100%; height:100%; object-fit:cover; display:block;
  transition:transform 0.4s ease;
}
.g9pr-featured__card:hover .g9pr-featured__thumb img { transform:scale(1.04); }
.g9pr-featured__thumb-ph {
  width:100%; height:100%;
  display:flex; align-items:center; justify-content:center;
  font-size:3rem;
  color:rgba(255,255,255,0.5);
  background:linear-gradient(135deg, #2c4a3a, #16291f);
}
.g9pr-featured__overlay {
  position:absolute; inset:0;
  background:linear-gradient(180deg, transparent 50%, rgba(0,0,0,0.55) 100%);
}
.g9pr-featured__cat {
  position:absolute;
  top:12px; left:12px;
  background:rgba(255,255,255,0.94);
  color:var(--g9pr-green-dark);
  font-size:0.74rem;
  font-weight:700;
  padding:4px 11px;
  border-radius:14px;
}
.g9pr-featured__body {
  padding:16px 18px;
  flex:1;
  display:flex; flex-direction:column;
  gap:6px;
}
.g9pr-featured__name {
  font-size:1.1rem;
  font-weight:800;
  margin:0;
  line-height:1.25;
}

.g9pr-featured__years {
  font-size:0.8rem;
  color:var(--g9pr-muted);
  font-weight:600;
}
.g9pr-featured__desc {
  font-size:0.92rem;
  color:#444;
  margin:0;
  line-height:1.5;
}

/* ── Filter — pill bar + mobile select ── */
.g9pr-filter {
  background:#fff;
  border-bottom:1px solid var(--g9pr-border);
  padding:24px 0 8px;
  position:sticky;
  top:0;
  z-index:30;
}
.g9pr-filter__title {
  font-size:1.4rem;
  font-weight:800;
  margin:0 0 14px;
  color:var(--g9pr-text);
}
.g9pr-filter__bar {
  display:none;
  flex-wrap:wrap;
  gap:8px;
  padding-bottom:14px;
}
@media (min-width:680px) {
  .g9pr-filter__bar { display:flex; }
}
.g9pr-filter__select {
  display:block;
  width:100%;
  max-width:420px;
  padding:11px 14px;
  margin-bottom:14px;
  font-size:1rem;
  border:2px solid var(--g9pr-border);
  background:#fff;
  border-radius:var(--g9pr-radius-sm);
  color:var(--g9pr-text);
  appearance:none;
  -webkit-appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23016936' stroke-width='3'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat:no-repeat;
  background-position:right 12px center;
  cursor:pointer;
  min-height:44px;
}
@media (min-width:680px) {
  .g9pr-filter__select { display:none; }
}
.g9pr-tab {
  background:transparent;
  border:1px solid var(--g9pr-border);
  color:var(--g9pr-text);
  padding:11px 16px;
  border-radius:22px;
  font-size:0.88rem;
  font-weight:600;
  cursor:pointer;
  white-space:nowrap;
  min-height:44px;
  transition:all 0.2s ease;
}
.g9pr-tab:hover { border-color:var(--g9pr-green); color:var(--g9pr-green); }
.g9pr-tab--active {
  background:var(--g9pr-green);
  border-color:var(--g9pr-green);
  color:#fff;
}

/* ── Horizontal cards list ── */
.g9pr-list-section {
  padding:14px 0 50px;
}
.g9pr-list {
  display:grid;
  grid-template-columns:1fr;
  gap:18px;
}
.g9pr-row {
  display:flex;
  flex-direction:column;
  background:#fff;
  border-radius:var(--g9pr-radius);
  overflow:hidden;
  text-decoration:none;
  color:inherit;
  box-shadow:var(--g9pr-shadow);
  transition:transform 0.25s ease, box-shadow 0.25s ease;
}
.g9pr-row:hover {
  transform:translateY(-3px);
  box-shadow:var(--g9pr-shadow-lg);
}
@media (min-width:680px) {
  .g9pr-row {
    flex-direction:row;
    min-height:200px;
  }
}
.g9pr-row__thumb {
  position:relative;
  aspect-ratio:16 / 9;
  overflow:hidden;
  background:#222;
}
@media (min-width:680px) {
  .g9pr-row__thumb {
    aspect-ratio:auto;
    width:340px;
    flex:0 0 340px;
  }
}
.g9pr-row__thumb img,
.g9pr-row__thumb-ph {
  width:100%; height:100%;
  object-fit:cover; display:block;
  transition:transform 0.4s ease;
}
.g9pr-row:hover .g9pr-row__thumb img { transform:scale(1.04); }
.g9pr-row__thumb-ph {
  display:flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg, #2c4a3a, #16291f);
  font-size:3rem;
  color:rgba(255,255,255,0.55);
}
.g9pr-row__year-badge {
  position:absolute;
  top:12px; left:12px;
  background:rgba(0,0,0,0.7);
  color:#fff;
  font-size:0.85rem;
  font-weight:800;
  padding:5px 12px;
  border-radius:14px;
  border:1px solid rgba(255,255,255,0.18);
  z-index:2;
}
.g9pr-row__body {
  padding:18px 20px;
  flex:1;
  display:flex;
  flex-direction:column;
  gap:8px;
  justify-content:space-between;
}
.g9pr-row__meta {
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  align-items:center;
  font-size:0.8rem;
}
.g9pr-row__cat {
  background:var(--g9pr-green-glow);
  color:var(--g9pr-green);
  font-weight:700;
  padding:3px 10px;
  border-radius:12px;
}
.g9pr-row__years {
  color:var(--g9pr-muted);
  font-weight:600;
}
.g9pr-row__chip {
  background:#f0f6fc;
  color:#2d5d3a;
  font-weight:600;
  padding:3px 10px;
  border-radius:12px;
}
.g9pr-row__title {
  font-size:1.25rem;
  font-weight:800;
  margin:4px 0 0;
  line-height:1.25;
  letter-spacing:-0.01em;
}
.g9pr-row__sub {
  font-size:0.9rem;
  color:var(--g9pr-green);
  font-weight:600;
  margin:0;
}
.g9pr-row__desc {
  font-size:0.95rem;
  color:#3a3a3a;
  margin:0;
  line-height:1.55;
}
.g9pr-row__cta {
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin-left:auto;
  font-size:0.88rem;
  font-weight:700;
  color:var(--g9pr-green);
}
.g9pr-row--edition .g9pr-row__title { font-size:1.15rem; }

.g9pr-empty {
  text-align:center;
  padding:60px 20px;
  color:var(--g9pr-muted);
}

/* ── Series Hero ── */
.g9pr-proj-hero {
  position:relative;
  min-height:300px;
  padding:46px 0 38px;
  background:linear-gradient(135deg, var(--g9pr-green-dark) 0%, #0e2a1c 100%);
  color:#fff;
  overflow:hidden;
}
.g9pr-proj-hero--photo .g9pr-proj-hero__bg {
  position:absolute; inset:0;
  background:var(--g9pr-hero-img,none) center/cover no-repeat;
  filter:brightness(0.30) blur(2px);
  z-index:0;
}
.g9pr-proj-hero--photo::after,
.g9pr-proj-hero--collage::after {
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(4,51,28,0.75) 0%, rgba(4,51,28,0.95) 100%);
  z-index:1;
}
.g9pr-proj-hero .g9pr-container { position:relative; z-index:3; }
.g9pr-proj-hero__title {
  font-size:clamp(1.8rem, 5.5vw, 2.8rem);
  font-weight:900;
  line-height:1.12;
  margin:0 0 12px;
  letter-spacing:-0.02em;
  color:#fff;
  text-shadow:0 2px 30px rgba(0,0,0,0.7), 0 0 14px rgba(0,0,0,0.5);
}
.g9pr-proj-hero__desc {
  font-size:clamp(0.95rem, 1.8vw, 1.05rem);
  max-width:720px;
  margin:0 0 22px;
  opacity:0.92;
  line-height:1.55;
}
.g9pr-proj-hero__stats {
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(120px, 1fr));
  gap:10px;
  background:rgba(255,255,255,0.08);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,0.16);
  border-radius:var(--g9pr-radius);
  padding:14px 18px;
  max-width:560px;
}
.g9pr-proj-hero__stat { text-align:center; }
.g9pr-proj-hero__stat-num {
  display:block; font-size:1.3rem; font-weight:800;
  color:#fff; line-height:1; margin-bottom:4px;
}
.g9pr-proj-hero__stat-lbl {
  display:block; font-size:0.7rem;
  color:rgba(255,255,255,0.78);
  text-transform:uppercase; letter-spacing:0.06em; font-weight:600;
}

.g9pr-breadcrumb {
  display:flex; align-items:center; flex-wrap:wrap;
  gap:6px;
  font-size:0.85rem;
  color:rgba(255,255,255,0.78);
  margin-bottom:12px;
}
.g9pr-breadcrumb a { color:rgba(255,255,255,0.78); text-decoration:none; }
.g9pr-breadcrumb a:hover { color:#fff; }
.g9pr-breadcrumb svg { opacity:0.6; }
.g9pr-breadcrumb span:last-child { color:#fff; font-weight:600; }

.g9pr-proj-intro {
  background:#fff;
  padding:28px 0;
  border-bottom:1px solid var(--g9pr-border);
}
.g9pr-proj-intro__inner {
  max-width:780px;
  font-size:1.05rem;
  line-height:1.7;
  color:#333;
}
.g9pr-proj-intro__inner p { margin:0 0 14px; }
.g9pr-proj-intro__inner p:last-child { margin-bottom:0; }

.g9pr-editions-section {
  padding:28px 0 40px;
}

.g9pr-back-row {
  padding:24px 0 36px;
}
.g9pr-back-link {
  display:inline-flex;
  align-items:center;
  gap:6px;
  text-decoration:none;
  color:var(--g9pr-green);
  font-weight:700;
  font-size:0.95rem;
  padding:9px 16px;
  border:1px solid var(--g9pr-green);
  border-radius:22px;
  transition:all 0.2s ease;
  min-height:44px;
}
.g9pr-back-link:hover { background:var(--g9pr-green); color:#fff; }

/* ─────────── Edition page ─────────── */
.g9pr-ed-hero {
  position:relative;
  min-height:300px;
  padding:46px 0 38px;
  background:linear-gradient(135deg, #0a1a0f 0%, #0d2618 100%);
  color:#fff;
  overflow:hidden;
}
.g9pr-ed-hero--photo .g9pr-ed-hero__bg {
  position:absolute; inset:0;
  background:var(--g9pr-hero-img,none) center/cover no-repeat;
  filter:brightness(0.28) blur(2px);
  z-index:0;
}
.g9pr-ed-hero--photo::after,
.g9pr-ed-hero--collage::after {
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(0,0,0,0.72) 0%, rgba(4,51,28,0.95) 100%);
  z-index:1;
}
.g9pr-ed-hero .g9pr-container { position:relative; z-index:3; }
.g9pr-ed-hero__collage,
.g9pr-proj-hero__collage {
  position:absolute; inset:0;
  display:grid;
  grid-template-columns:2.2fr 1fr 1fr;
  grid-template-rows:1fr 1fr;
  z-index:0;
}
.g9pr-hub-hero__cslot { position:relative; overflow:hidden; }
.g9pr-hub-hero__cslot:nth-child(1) { grid-row:1/3; grid-column:1/2; }
.g9pr-hub-hero__cslot:nth-child(2) { grid-row:1/2; grid-column:2/3; }
.g9pr-hub-hero__cslot:nth-child(3) { grid-row:1/2; grid-column:3/4; }
.g9pr-hub-hero__cslot:nth-child(4) { grid-row:2/3; grid-column:2/3; }
.g9pr-hub-hero__cslot:nth-child(5) { grid-row:2/3; grid-column:3/4; }
.g9pr-hub-hero__cimg {
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:cover; opacity:0;
  transition:opacity 1.2s ease;
}
.g9pr-hub-hero__cimg--on { opacity:1; }
.g9pr-hub-hero__cslot:nth-child(1) .g9pr-hub-hero__cimg--on { animation:g9pr-kb1 14s ease-in-out infinite alternate; }
.g9pr-hub-hero__cslot:nth-child(2) .g9pr-hub-hero__cimg--on { animation:g9pr-kb2 16s ease-in-out infinite alternate; }
.g9pr-hub-hero__cslot:nth-child(3) .g9pr-hub-hero__cimg--on { animation:g9pr-kb3 13s ease-in-out infinite alternate; }
.g9pr-hub-hero__cslot:nth-child(4) .g9pr-hub-hero__cimg--on { animation:g9pr-kb4 15s ease-in-out infinite alternate; }
.g9pr-hub-hero__cslot:nth-child(5) .g9pr-hub-hero__cimg--on { animation:g9pr-kb5 17s ease-in-out infinite alternate; }
@keyframes g9pr-kb1 { from{transform:scale(1.05) translate(0,0);} to{transform:scale(1.18) translate(-2%,-2%);} }
@keyframes g9pr-kb2 { from{transform:scale(1.06) translate(0,0);} to{transform:scale(1.22) translate(2%,-3%);} }
@keyframes g9pr-kb3 { from{transform:scale(1.04) translate(0,0);} to{transform:scale(1.18) translate(-3%,2%);} }
@keyframes g9pr-kb4 { from{transform:scale(1.07) translate(0,0);} to{transform:scale(1.20) translate(3%,-2%);} }
@keyframes g9pr-kb5 { from{transform:scale(1.05) translate(0,0);} to{transform:scale(1.18) translate(-2%,3%);} }

.g9pr-ed-hero__title {
  font-size:clamp(1.7rem, 5vw, 2.6rem);
  font-weight:900; line-height:1.12; margin:0 0 8px; letter-spacing:-0.02em;
  color:#fff;
  text-shadow:0 2px 30px rgba(0,0,0,0.7), 0 0 14px rgba(0,0,0,0.5), 0 1px 0 rgba(0,0,0,0.4);
}
.g9pr-ed-hero__subtitle {
  font-size:1rem; margin:0 0 12px; color:rgba(255,255,255,0.85); font-weight:500;
}
.g9pr-ed-hero__meta { display:flex; gap:8px; flex-wrap:wrap; margin-top:6px; }
.g9pr-ed-hero__year {
  background:rgba(255,255,255,0.16); border:1px solid rgba(255,255,255,0.24);
  color:#fff; padding:6px 14px; border-radius:18px; font-size:0.88rem; font-weight:700;
}

/* Two-column body */
.g9pr-ed-body { background:#fff; padding:36px 0; border-bottom:1px solid var(--g9pr-border); }
.g9pr-ed-body__cols { display:grid; grid-template-columns:1fr; gap:24px; }
@media (min-width:880px) {
  .g9pr-ed-body__cols { grid-template-columns:1.6fr 1fr; gap:36px; }
}
.g9pr-ed-body__article { font-size:1.05rem; line-height:1.75; color:#2a2a2a; }
.g9pr-ed-body__article p { margin:0 0 16px; }
.g9pr-ed-body__article p:last-child { margin-bottom:0; }
.g9pr-ed-body__article p:first-of-type:first-letter {
  font-size:2.6rem; font-weight:900;
  float:left; line-height:1; margin:6px 8px 0 0; color:var(--g9pr-green);
}

.g9pr-ed-body__poster-card {
  border-radius:var(--g9pr-radius); overflow:hidden;
  box-shadow:var(--g9pr-shadow); margin-bottom:18px;
}
.g9pr-ed-body__poster-card img { width:100%; height:auto; display:block; }
.g9pr-ed-body__meta-card {
  background:#f7f9f8; border:1px solid var(--g9pr-border);
  border-radius:var(--g9pr-radius); padding:18px;
}
.g9pr-ed-body__meta-title {
  font-size:0.78rem; font-weight:700; text-transform:uppercase; letter-spacing:0.06em;
  color:var(--g9pr-muted); margin-bottom:10px;
}
.g9pr-ed-body__meta-list { list-style:none; margin:0; padding:0; }
.g9pr-ed-body__meta-list li {
  display:flex; justify-content:space-between; align-items:center;
  padding:8px 0; border-bottom:1px solid #eef2f0; font-size:0.92rem;
}
.g9pr-ed-body__meta-list li:last-child { border-bottom:0; }
.g9pr-ed-body__meta-list span { color:var(--g9pr-muted); }
.g9pr-ed-body__meta-list strong { color:var(--g9pr-text); font-weight:700; text-align:right; }
.g9pr-ed-body__series-link {
  display:block; margin-top:14px; padding:10px 12px;
  background:var(--g9pr-green-glow); color:var(--g9pr-green);
  text-decoration:none; font-weight:700; font-size:0.9rem;
  border-radius:var(--g9pr-radius-sm); text-align:center;
}
.g9pr-ed-body__series-link:hover { background:rgba(1,105,54,0.18); }

/* Smart photo grid */
.g9pr-ed-photos { background:#fafafa; padding:36px 0; }
.g9pr-section-count { color:var(--g9pr-muted); font-weight:500; font-size:0.85em; }
.g9pr-photos-grid { display:grid; gap:8px; }
.g9pr-photos-grid--single { grid-template-columns:1fr; }
.g9pr-photos-grid--single .g9pr-photo-tile {
  aspect-ratio:16 / 9; max-width:920px; margin:0 auto;
}
.g9pr-photos-grid--few { grid-template-columns:repeat(2, 1fr); }
@media (min-width:680px) { .g9pr-photos-grid--few { grid-template-columns:repeat(3, 1fr); } }
.g9pr-photos-grid--many { grid-template-columns:repeat(2, 1fr); }
@media (min-width:560px) { .g9pr-photos-grid--many { grid-template-columns:repeat(3, 1fr); } }
@media (min-width:880px) { .g9pr-photos-grid--many { grid-template-columns:repeat(4, 1fr); } }
@media (min-width:1200px) { .g9pr-photos-grid--many { grid-template-columns:repeat(5, 1fr); } }
.g9pr-photo-tile {
  background:#000; border:none; padding:0;
  cursor:pointer; position:relative; overflow:hidden;
  border-radius:var(--g9pr-radius-sm); aspect-ratio:1; display:block;
}
.g9pr-photo-tile img { width:100%; height:100%; object-fit:cover; display:block; transition:transform 0.3s, opacity 0.3s; }
.g9pr-photo-tile:hover img { transform:scale(1.05); opacity:0.92; }

/* Videos */
.g9pr-ed-videos { background:#fff; padding:36px 0; border-top:1px solid var(--g9pr-border); border-bottom:1px solid var(--g9pr-border); }
.g9pr-videos-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:16px; }
.g9pr-video-card {
  position:relative; aspect-ratio:16 / 9;
  border-radius:var(--g9pr-radius); overflow:hidden;
  cursor:pointer; background:#111; box-shadow:var(--g9pr-shadow);
  transition:transform 0.25s, box-shadow 0.25s;
}
.g9pr-video-card:hover { transform:translateY(-3px); box-shadow:var(--g9pr-shadow-lg); }
.g9pr-video-card__thumb { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform 0.4s; }
.g9pr-video-card__thumb--ph { background:linear-gradient(135deg,#1a1a1a,#0a1a0f); }
.g9pr-video-card:hover .g9pr-video-card__thumb { transform:scale(1.04); }
.g9pr-video-card__play {
  position:absolute; inset:0;
  display:flex; align-items:center; justify-content:center;
  color:#fff; pointer-events:none;
  background:linear-gradient(180deg, transparent 50%, rgba(0,0,0,0.4) 100%);
}
.g9pr-video-card__play svg {
  width:60px; height:60px; opacity:0.92;
  filter:drop-shadow(0 4px 16px rgba(0,0,0,0.5));
  background:rgba(255,255,255,0.18);
  backdrop-filter:blur(4px);
  border-radius:50%;
  padding:14px;
  border:1.5px solid rgba(255,255,255,0.25);
}
.g9pr-video-card__label {
  position:absolute; bottom:12px; left:12px;
  background:rgba(0,0,0,0.7); color:#fff;
  padding:5px 12px; border-radius:14px;
  font-size:0.82rem; font-weight:600;
}

/* External links */
.g9pr-ed-links { background:#fafafa; padding:30px 0 40px; }
.g9pr-links-row { display:flex; flex-wrap:wrap; gap:10px; }
.g9pr-link-pill {
  display:inline-flex; align-items:center; gap:8px;
  background:#fff; border:1px solid var(--g9pr-border);
  color:var(--g9pr-green); padding:10px 18px;
  border-radius:22px; font-weight:700; font-size:0.9rem;
  text-decoration:none; min-height:44px;
  transition:all 0.2s;
}
.g9pr-link-pill:hover { background:var(--g9pr-green); border-color:var(--g9pr-green); color:#fff; }

/* Empty state */
.g9pr-empty-state {
  background:linear-gradient(135deg, #0a1a0f 0%, #0d2618 100%);
  color:#fff; padding:80px 20px; text-align:center;
}
.g9pr-empty-icon { font-size:3.5rem; display:block; margin-bottom:14px; }
.g9pr-empty-text { font-size:1.1rem; margin:0 0 18px; opacity:0.9; }

/* Lightbox — must respect hidden attribute (CSS display:flex overrides HTML hidden otherwise) */
.g9pr-lb[hidden] { display:none !important; }
.g9pr-lb { position:fixed; inset:0; z-index:9999; display:flex; align-items:center; justify-content:center; }
.g9pr-lb__backdrop { position:absolute; inset:0; background:rgba(0,0,0,0.92); }
.g9pr-lb__img { position:relative; max-width:92vw; max-height:88vh; z-index:1; border-radius:6px; box-shadow:0 30px 80px rgba(0,0,0,0.6); }
.g9pr-lb__close, .g9pr-lb__prev, .g9pr-lb__next {
  position:absolute; background:rgba(255,255,255,0.10);
  color:#fff; border:1px solid rgba(255,255,255,0.30);
  border-radius:50%; cursor:pointer;
  font-size:1.6rem; z-index:2;
  display:flex; align-items:center; justify-content:center;
  width:48px; height:48px;
  transition:background 0.2s;
}
.g9pr-lb__close:hover, .g9pr-lb__prev:hover, .g9pr-lb__next:hover { background:rgba(255,255,255,0.22); }
.g9pr-lb__close { top:18px; right:18px; }
.g9pr-lb__prev  { left:14px; top:50%; transform:translateY(-50%); }
.g9pr-lb__next  { right:14px; top:50%; transform:translateY(-50%); }
.g9pr-lb__counter {
  position:absolute; bottom:18px; left:50%; transform:translateX(-50%);
  color:#fff; font-size:0.85rem;
  background:rgba(0,0,0,0.5); padding:4px 12px; border-radius:14px; z-index:2;
}

/* Video modal — same hidden-attribute respect */
.g9pr-vm[hidden] { display:none !important; }
.g9pr-vm { position:fixed; inset:0; z-index:9999; display:flex; align-items:center; justify-content:center; }
.g9pr-vm__bd { position:absolute; inset:0; background:rgba(0,0,0,0.92); }
.g9pr-vm__close {
  position:absolute; top:18px; right:18px; width:48px; height:48px;
  background:rgba(255,255,255,0.10); color:#fff;
  border:1px solid rgba(255,255,255,0.30); border-radius:50%;
  cursor:pointer; font-size:1.6rem; z-index:2;
}
.g9pr-vm__stage { position:relative; width:90vw; max-width:1100px; aspect-ratio:16 / 9; z-index:1; }
.g9pr-vm__stage iframe, .g9pr-vm__stage video { width:100%; height:100%; border:none; border-radius:6px; }

/* Mobile collage layout */
@media (max-width:680px) {
  .g9pr-ed-hero__collage,
  .g9pr-proj-hero__collage {
    grid-template-columns:1fr 1fr;
    grid-template-rows:1fr 1fr 1fr;
  }
  .g9pr-hub-hero__cslot:nth-child(1) { grid-row:1/2; grid-column:1/3; }
  .g9pr-hub-hero__cslot:nth-child(2) { grid-row:2/3; grid-column:1/2; }
  .g9pr-hub-hero__cslot:nth-child(3) { grid-row:2/3; grid-column:2/3; }
  .g9pr-hub-hero__cslot:nth-child(4) { grid-row:3/4; grid-column:1/2; }
  .g9pr-hub-hero__cslot:nth-child(5) { grid-row:3/4; grid-column:2/3; }
}

/* ── v5 additions: view toggle + filter heading layout ── */
.g9pr-filter__head {
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:14px;
  flex-wrap:wrap;
  margin-bottom:14px;
}
.g9pr-viewtoggle {
  display:inline-flex;
  background:#f3f5f4;
  border:1px solid var(--g9pr-border);
  border-radius:24px;
  padding:3px;
  gap:0;
}
.g9pr-viewtoggle__btn {
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:7px 14px;
  font-size:0.85rem;
  font-weight:700;
  color:var(--g9pr-muted);
  text-decoration:none;
  border-radius:20px;
  transition:background 0.2s, color 0.2s;
  white-space:nowrap;
  min-height:36px;
}
.g9pr-viewtoggle__btn:hover { color:var(--g9pr-text); }
.g9pr-viewtoggle__btn--on {
  background:var(--g9pr-green);
  color:#fff;
  box-shadow:0 1px 3px rgba(0,0,0,0.12);
}
.g9pr-viewtoggle__btn--on:hover { color:#fff; }
.g9pr-viewtoggle__count { opacity:0.85; font-weight:600; }

/* Featured card: parent-series strip above edition title */
.g9pr-featured__series {
  display:block;
  font-size:0.72rem;
  color:var(--g9pr-muted);
  text-transform:uppercase;
  letter-spacing:0.06em;
  font-weight:700;
  margin-bottom:2px;
}

/* Editions row: parent series shown in meta */
.g9pr-row__series {
  background:#fafafa;
  color:var(--g9pr-text);
  font-weight:700;
  padding:3px 10px;
  border-radius:12px;
  border:1px solid var(--g9pr-border);
  font-size:0.78rem;
}
.g9pr-row__metab {
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  align-items:center;
  margin-top:auto;
  padding-top:6px;
  font-size:0.8rem;
}


/* (v7) Ken Burns visibility — overlay much lighter when collage is on,
   stronger zoom amplitude in keyframes for visible motion */
.g9pr-ed-hero--collage::after {
  background:linear-gradient(180deg, rgba(0,0,0,0.32) 0%, rgba(4,51,28,0.62) 100%) !important;
}
.g9pr-proj-hero--collage::after {
  background:linear-gradient(180deg, rgba(4,51,28,0.30) 0%, rgba(4,51,28,0.62) 100%) !important;
}
.g9pr-ed-hero--collage .g9pr-ed-hero__title,
.g9pr-proj-hero--collage .g9pr-proj-hero__title {
  /* Stronger text-shadow when overlay is light, so titles still pop */
  text-shadow:0 2px 30px rgba(0,0,0,0.85), 0 0 20px rgba(0,0,0,0.7), 0 1px 0 rgba(0,0,0,0.6), 1px 1px 2px rgba(0,0,0,0.6) !important;
}
/* Bigger zoom amplitude — was 1.05 → 1.18, now 1.05 → 1.32 */
@keyframes g9pr-kb1 { from{transform:scale(1.05) translate(0,0);} to{transform:scale(1.32) translate(-4%,-4%);} }
@keyframes g9pr-kb2 { from{transform:scale(1.06) translate(0,0);} to{transform:scale(1.36) translate(4%,-5%);} }
@keyframes g9pr-kb3 { from{transform:scale(1.04) translate(0,0);} to{transform:scale(1.32) translate(-5%,4%);} }
@keyframes g9pr-kb4 { from{transform:scale(1.07) translate(0,0);} to{transform:scale(1.34) translate(5%,-4%);} }
@keyframes g9pr-kb5 { from{transform:scale(1.05) translate(0,0);} to{transform:scale(1.32) translate(-4%,5%);} }

/* ── (v7) Featured Video on series page ── */
.g9pr-featured-video {
  background:#fff;
  padding:30px 0 24px;
  border-top:1px solid var(--g9pr-border);
}
.g9pr-fv {
  position:relative;
  aspect-ratio:16 / 9;
  max-width:1000px;
  margin:0 auto;
  border-radius:var(--g9pr-radius);
  overflow:hidden;
  cursor:pointer;
  background:#0a1a0f;
  box-shadow:var(--g9pr-shadow-lg);
}
.g9pr-fv__thumb {
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:cover;
  transition:transform 0.4s ease;
}
.g9pr-fv__thumb--ph {
  background:linear-gradient(135deg, #1a3a28, #04331c);
}
.g9pr-fv:hover .g9pr-fv__thumb { transform:scale(1.03); }
.g9pr-fv__overlay {
  position:absolute; inset:0;
  background:linear-gradient(180deg, transparent 50%, rgba(0,0,0,0.55) 100%);
  pointer-events:none;
}
.g9pr-fv__play {
  position:absolute;
  top:50%; left:50%;
  transform:translate(-50%, -50%);
  background:rgba(255,255,255,0.18);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  border:2px solid rgba(255,255,255,0.4);
  border-radius:50%;
  padding:18px;
  color:#fff;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:transform 0.2s ease, background 0.2s ease;
}
.g9pr-fv:hover .g9pr-fv__play {
  transform:translate(-50%, -50%) scale(1.06);
  background:rgba(255,255,255,0.30);
}
.g9pr-fv__play svg { width:48px; height:48px; }

/* v8 — empty-state reset button used by client-side filter */
.g9pr-empty__reset {
    margin-left: 8px;
    padding: 6px 14px;
    border-radius: 18px;
    border: 1.5px solid var(--g9pr-green, #016936);
    background: transparent;
    color: var(--g9pr-green, #016936);
    font-weight: 700;
    font-size: 0.85rem;
    cursor: pointer;
    transition: background 0.18s ease, color 0.18s ease;
}
.g9pr-empty__reset:hover {
    background: var(--g9pr-green, #016936);
    color: #fff;
}
.g9pr-empty--filtered { padding: 24px 0; text-align: center; }

/* v9 — both view panes rendered server-side, toggle via [hidden] */
.g9pr-list[hidden] { display: none !important; }

/* ═══════════════════════════════════════════════════════════════
   v11 — UX audit Critical #08: prev/next edition nav strip
   Lives at the bottom of /projects/{series}/{edition}/ pages.
═══════════════════════════════════════════════════════════════ */
.g9pr-ed-pn { padding: 36px 0 8px; background: #fff; }
.g9pr-ed-pn__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  align-items: stretch;
}
.g9pr-ed-pn__link {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 18px;
  border: 1px solid var(--g9pr-border);
  border-radius: 10px;
  text-decoration: none;
  color: var(--g9pr-text);
  background: #fafbfa;
  transition: border-color .18s ease, background .18s ease, transform .18s ease;
  min-height: 64px;
}
.g9pr-ed-pn__link:hover {
  border-color: var(--g9pr-green);
  background: #f1f7f3;
  transform: translateY(-1px);
}
.g9pr-ed-pn__link--prev { justify-content: flex-start; }
.g9pr-ed-pn__link--next { justify-content: flex-end; text-align: right; }
.g9pr-ed-pn__arrow {
  font-size: 1.4rem; line-height: 1;
  color: var(--g9pr-green); font-weight: 700;
  width: 28px; text-align: center; flex-shrink: 0;
}
.g9pr-ed-pn__meta { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.g9pr-ed-pn__meta--right { align-items: flex-end; }
.g9pr-ed-pn__lbl   { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; color: #6a7170; font-weight: 700; }
.g9pr-ed-pn__title { font-size: .98rem; font-weight: 700; color: var(--g9pr-text); line-height: 1.25; }
.g9pr-ed-pn__hublink {
  align-self: center;
  padding: 10px 16px;
  border-radius: 999px;
  background: transparent;
  color: var(--g9pr-green);
  font-weight: 700;
  font-size: .85rem;
  text-decoration: none;
  border: 1px solid transparent;
  white-space: nowrap;
  min-height: 44px;
  display: flex; align-items: center;
}
.g9pr-ed-pn__hublink:hover { background: #f1f7f3; border-color: #d9e7df; }
.g9pr-ed-pn__spacer { display: block; min-height: 64px; }
@media (max-width: 720px) {
  .g9pr-ed-pn { padding: 24px 0 4px; }
  .g9pr-ed-pn__row { grid-template-columns: 1fr; gap: 10px; }
  .g9pr-ed-pn__link--next { justify-content: flex-start; text-align: left; }
  .g9pr-ed-pn__meta--right { align-items: flex-start; }
  .g9pr-ed-pn__hublink { order: 99; align-self: stretch; justify-content: center; }
  .g9pr-ed-pn__spacer { display: none; }
}

/* ═══════════════════════════════════════════════════════════════
   v11 — UX audit #19: empty photo state on edition row chips
═══════════════════════════════════════════════════════════════ */
.g9pr-row__chip--empty {
  background: #f4f6f4 !important;
  color: #8a918e !important;
  font-style: italic;
  border-color: #e2e6e3 !important;
}
