/* ── PER-PROJECT ACCENT PALETTE ── */
.shell[data-active="inthemiddleofnowhere"] {
  --p-bg: #F9F9F9;
  --p-accent: #ff2c00; --p-muted: rgba(85,85,85,0.9);
}
.shell[data-active="inthemiddleofnowhere"] .pl-accent {
  background: #ff2c00;
}
.shell[data-active="openhome"] {
  --p-bg: #F9F9F9;
  --p-accent: #ffd500; --p-muted: rgba(85,85,85,0.9);
}
.shell[data-active="openhome"] .pl-accent {
  background: #ffd500;
}
.shell[data-active="mysinglebedroom"] {
  --p-bg: #F9F9F9;
  --p-accent: #90ff00; --p-muted: rgba(85,85,85,0.9);
}
.shell[data-active="mysinglebedroom"] .pl-accent {
  background: #90ff00;
}
.shell[data-active="breakfastattiffany"] {
  --p-bg: #F9F9F9;
  --p-accent: #9B5E2A; --p-muted: rgba(85,85,85,0.9);
}
.shell[data-active="breakfastattiffany"] .pl-accent {
  background: #9B5E2A;
}
.shell[data-active="thegardenofconjectures"] {
  --p-bg: #F9F9F9;
  --p-accent: #B83025; --p-muted: rgba(85,85,85,0.9);
}
.shell[data-active="thegardenofconjectures"] .pl-accent {
  background: #B83025;
}
.shell[data-active="bridgeovertroubledwater"] {
  --p-bg: #F9F9F9;
  --p-accent: #007bff; --p-muted: rgba(85,85,85,0.9);
}
.shell[data-active="bridgeovertroubledwater"] .pl-accent {
  background: #007bff;
}
.shell[data-active="flagitaotearoanewzealandsnextnationalflag"] {
  --p-bg: #F9F9F9;
  --p-accent: #9B5E2A; --p-muted: rgba(85,85,85,0.9);
}
.shell[data-active="flagitaotearoanewzealandsnextnationalflag"] .pl-accent {
  background: #9B5E2A;
}
.shell[data-active="thesympathyofcurves"] {
  --p-bg: #F9F9F9;
  --p-accent: #2daec8; --p-muted: rgba(85,85,85,0.9);
}
.shell[data-active="thesympathyofcurves"] .pl-accent {
  background: #2daec8;
}
.shell[data-active="forms"] {
  --p-bg: #F9F9F9;
  --p-accent: #d650fb; --p-muted: rgba(85,85,85,0.9);
}
.shell[data-active="forms"] .pl-accent {
  background: #d650fb;
}
.shell[data-active="no29beijingnorthroadrmqixinijangchina"] {
  --p-bg: #F9F9F9;
  --p-accent: #ffb3df; --p-muted: rgba(85,85,85,0.9);
}
.shell[data-active="no29beijingnorthroadrmqixinijangchina"] .pl-accent {
  background: #ffb3df;
}
.shell[data-active="theeveryday"] {
  --p-bg: #F9F9F9;
  --p-accent: #9B5E2A; --p-muted: rgba(85,85,85,0.9);
}
.shell[data-active="theeveryday"] .pl-accent {
  background: #9B5E2A;
}
.shell[data-active="selfportraitwithplants"] {
  --p-bg: #F9F9F9;
  --p-accent: #9B5E2A; --p-muted: rgba(85,85,85,0.9);
}
.shell[data-active="selfportraitwithplants"] .pl-accent {
  background: #9B5E2A;
}

/* ── SHARED: feat text ── */
.feat-year {
  font-family: 'DM Mono', monospace;
  font-size: 0.58rem;
  letter-spacing: 0.18em;
  color: var(--p-muted);
  text-transform: uppercase;
  margin-bottom: 1rem;
}
.feat-title {
  font-size: clamp(1.8rem, 4vw, 3.2rem);
  font-weight: 400;
  line-height: 1.0;
  letter-spacing: -0.015em;
  color: var(--ink);
  margin-bottom: 0.5rem;
}
.feat-title em { font-style: italic; }
.feat-venue {
  font-family: 'DM Mono', monospace;
  font-size: 0.58rem;
  letter-spacing: 0.08em;
  color: var(--p-muted);
  margin-bottom: 1.4rem;
}
.feat-concept {
  font-size: 0.9rem;
  line-height: 1.8;
  color: var(--ink);
  opacity: 0.6;
  margin-bottom: 0.9rem;
}
.feat-zh {
  font-style: italic;
  font-size: 0.85rem;
  color: var(--p-accent);
  opacity: 0.85;
  margin-bottom: 1.8rem;
  display: block;
}
.feat-link {
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem;
  letter-spacing: 0.12em;
  color: var(--ink);
  text-decoration: none;
  opacity: 0.45;
  transition: opacity 0.2s;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}
.feat-link:hover { opacity: 1; }

/* ── DESKTOP CAROUSEL (≥ 768px landscape) ── */
@media (min-width: 768px) and (orientation: landscape) {

  .featured {
    position: relative;
    overflow: hidden;
    background: var(--p-bg);
    transition: background 0.9s var(--ease);
    height: 100vh;
  }

  /* Carousel strip — overflow visible so desc slide lets image peek */
  .carousel {
    position: absolute;
    inset: 0;
    display: flex;
    will-change: transform;
    transition: transform 0.7s var(--ease);
    overflow: visible;
  }

  .carousel-slide {
    flex: 0 0 100%;
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: relative;
  }

  .carousel-slide img {
    width: 100%; height: 100%;
    object-fit: contain;
    object-position: center;
    display: block;
    opacity: 0;
    transition: opacity 1s ease;
    user-select: none;
    -webkit-user-drag: none;
  }
  .carousel-slide img.loaded { opacity: 1; }

  .featured-veil { display: none; }
  .featured-content { display: none; }
  .feat-caption { display: none; }

  /* ── DESCRIPTION SLIDE ── */
  .desc-slide {
    flex: 0 0 28%;
    width: 28%; height: 100%;
    background: var(--bg);
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: 3.5rem 2rem;
    overflow: hidden;
    user-select: none;
    position: relative;
    z-index: 1;
  }

  .ds-year {
    font-family: 'DM Mono', monospace;
    font-size: var(--fs-index); letter-spacing: 0.18em;
    color: var(--muted); text-transform: uppercase;
    margin-bottom: 1rem;
  }
  .ds-title {
    font-size: clamp(2rem, 3.5vw, 3.2rem); font-weight: 400;
    line-height: 1.0; letter-spacing: -0.015em;
    color: var(--ink); margin-bottom: 0.5rem; font-style: normal;
  }
  .ds-title em { font-style: normal; }
  .ds-venue {
    font-family: 'DM Mono', monospace;
    font-size: var(--fs-meta); letter-spacing: 0.06em;
    color: var(--muted); margin-bottom: 1.4rem;
  }
  .ds-concept {
    flex: 1; min-height: 0; overflow-y: auto;
    font-size: 1rem; line-height: 1.82;
    color: var(--ink);
    margin-bottom: 0.9rem;
  }
  .ds-zh {
    display: block; font-style: italic; font-size: 0.9rem;
    color: var(--p-accent); margin-bottom: 2rem;
  }
  .ds-link {
    font-family: 'DM Mono', monospace; font-size: var(--ui-label-sz);
    letter-spacing: 0.1em; color: var(--ink); text-decoration: none;
    transition: opacity 0.2s;
    display: inline-flex; align-items: center; gap: 0.5rem;
  }
  .ds-link:hover { opacity: 1; }
  .ds-link::after { content: '→'; font-family: serif; letter-spacing: 0; }
  .ds-muted {
    color: var(--muted);
    font-size: 0.9em;
  }

  /* ── SHOW DESCRIPTION BUTTON ── */
  .show-desc-btn {
    position: absolute;
    bottom: 2rem; left: 2rem;
    z-index: 10;
    font-family: 'DM Mono', monospace;
    font-size: 0.54rem; letter-spacing: 0.1em;
    color: var(--p-ink);
    background: rgba(0,0,0,0.22);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(255,255,255,0.12);
    padding: 0.55rem 1rem;
    cursor: pointer;
    text-transform: lowercase;
    display: flex; align-items: center; gap: 0.5rem;
    opacity: 0; pointer-events: none;
    transition: opacity 0.3s, background 0.2s;
  }
  .show-desc-btn.visible { opacity: 1; pointer-events: auto; }
  .show-desc-btn:hover { background: rgba(0,0,0,0.4); }
  .show-desc-btn::before { content: '‹'; font-size: 0.9rem; }

  .carousel-counter {
    position: absolute;
    bottom: 3.5rem; right: 3rem;
    z-index: 4;
    font-family: 'DM Mono', monospace;
    font-size: 0.55rem;
    letter-spacing: 0.12em;
    color: var(--p-ink);
    opacity: 0.3;
    transition: color 0.9s var(--ease);
  }

  .carousel-arrow {
    position: absolute;
    top: 50%; transform: translateY(-50%);
    z-index: 5;
    width: 44px; height: 44px;
    border-radius: 50%;
    background: rgba(255,255,255,0.25);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: none;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.8rem; line-height: 1;
    color: var(--p-ink);
    cursor: pointer;
    user-select: none;
    transition: background 0.2s, color 0.9s var(--ease);
  }
  .carousel-arrow:hover { background: rgba(255,255,255,0.45); }
  .carousel-arrow-l { left: 1rem; }
  .carousel-arrow-r { right: 1rem; }
  .carousel-arrow.hidden { opacity: 0; pointer-events: none; }

}

/* ── SLIDE CAPTIONS ── */
.slide-caption {
  display: block;
  padding: 6px 5%;
  font-family: 'DM Mono', monospace;
  font-size: 14px;
  color: var(--p-muted);
  text-align: center;
  letter-spacing: 0.04em;
  line-height: 1.8;
}