:root {
  --bs-body-bg: #070609;
  --bs-body-color: #f8f2ef;
  --bs-secondary-color: #c8bbb7;
  --bs-border-color: #342226;
  --bs-primary: #c31f32;
  --bs-primary-rgb: 195,31,50;
  --bs-link-color: #f0c15d;
  --bs-link-hover-color: #ffd985;
  --bs-card-bg: #151015;
  --bs-card-color: #f8f2ef;
  --bs-border-radius: .65rem;
  --bs-btn-border-radius: .5rem;

  --stage-black: #070609;
  --stage-ink: #110c11;
  --curtain: #8f1020;
  --curtain-bright: #d3273b;
  --gold: #f0c15d;
  --paper: #f8f2ef;
  --muted: #c8bbb7;
  --line: #342226;
}

* { box-sizing: border-box; }

body {
  min-height: 100vh;
  background:
    radial-gradient(circle at 50% -10%, rgba(195,31,50,.22), transparent 34rem),
    linear-gradient(180deg, #10070b 0%, var(--stage-black) 28rem);
  color: var(--paper);
  letter-spacing: 0;
}

a { color: var(--bs-link-color); }
a:hover { color: var(--bs-link-hover-color); }

.header-stage {
  position: sticky;
  top: 0;
  z-index: 1030;
  background: rgba(7,6,9,.88);
  border-bottom: 1px solid rgba(240,193,93,.18);
  backdrop-filter: blur(18px);
}

.navbar-brand {
  color: var(--paper) !important;
  letter-spacing: 0;
}

.brand-mark {
  display: inline-grid;
  place-items: center;
  width: 2rem;
  height: 2rem;
  margin-right: .5rem;
  border: 1px solid rgba(240,193,93,.45);
  border-radius: 50%;
  color: var(--gold);
  font-size: .95rem;
}

.navbar .nav-link {
  color: rgba(248,242,239,.82);
  font-weight: 600;
}

.navbar .nav-link:hover,
.navbar .nav-link:focus {
  color: var(--gold);
}

.nav-cart {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
}

.nav-cart-count {
  display: inline-grid;
  place-items: center;
  min-width: 1.35rem;
  height: 1.35rem;
  padding: 0 .35rem;
  border-radius: 999px;
  background: var(--curtain-bright);
  color: #fff;
  font-size: .76rem;
  font-weight: 900;
  line-height: 1;
}

.nav-admin {
  color: var(--gold) !important;
}

.site-shell {
  position: relative;
  overflow: hidden;
}

.page-curtain {
  pointer-events: none;
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: none;
}

.page-curtain::before,
.page-curtain::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  width: 50%;
  background:
    repeating-linear-gradient(90deg, rgba(255,255,255,.045) 0 1px, transparent 1px 28px),
    linear-gradient(90deg, #4f0710, #a81425 45%, #5c0812);
  box-shadow: inset 0 0 5rem rgba(0,0,0,.55);
}

.page-curtain::before { left: 0; transform-origin: left; }
.page-curtain::after { right: 0; transform-origin: right; }

body.is-entering .page-curtain,
body.is-leaving .page-curtain { display: block; }

body.is-entering .page-curtain::before { animation: curtain-open-left .62s cubic-bezier(.65,0,.2,1) forwards; }
body.is-entering .page-curtain::after { animation: curtain-open-right .62s cubic-bezier(.65,0,.2,1) forwards; }
body.is-leaving .page-curtain::before { animation: curtain-close-left .36s ease forwards; }
body.is-leaving .page-curtain::after { animation: curtain-close-right .36s ease forwards; }

@keyframes curtain-close-left { from { transform: translateX(-100%); } to { transform: translateX(0); } }
@keyframes curtain-close-right { from { transform: translateX(100%); } to { transform: translateX(0); } }
@keyframes curtain-open-left { from { transform: translateX(0); } to { transform: translateX(-100%); } }
@keyframes curtain-open-right { from { transform: translateX(0); } to { transform: translateX(100%); } }

.stage-hero {
  position: relative;
  min-height: clamp(560px, 72vh, 760px);
  display: grid;
  align-items: end;
  padding: clamp(2rem, 5vw, 5rem) 0 2rem;
  overflow: hidden;
}

.stage-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(88,7,17,.98) 0 8%, transparent 24% 76%, rgba(88,7,17,.98) 92% 100%),
    radial-gradient(ellipse at 50% 18%, rgba(240,193,93,.34), transparent 16rem),
    linear-gradient(180deg, rgba(0,0,0,.05), rgba(0,0,0,.88) 78%);
}

.stage-hero::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 34%;
  background:
    radial-gradient(ellipse at 50% 100%, rgba(240,193,93,.22), transparent 38rem),
    linear-gradient(180deg, transparent, #050405 86%);
}

.stage-curtain {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 22%;
  background:
    repeating-linear-gradient(90deg, rgba(255,255,255,.04) 0 2px, transparent 2px 24px),
    linear-gradient(90deg, #43070e, #b51629 52%, #530810);
  box-shadow: inset -1.4rem 0 3rem rgba(0,0,0,.45);
}

.stage-curtain.left { left: 0; transform: skewX(-4deg); }
.stage-curtain.right { right: 0; transform: skewX(4deg); }

.stage-hero-content {
  position: relative;
  z-index: 1;
}

.eyebrow {
  color: var(--gold);
  font-weight: 800;
  text-transform: uppercase;
  font-size: .78rem;
  letter-spacing: .08rem;
}

.hero-title {
  max-width: 760px;
  margin: .4rem 0 .9rem;
  color: var(--paper);
  font-size: 5rem;
  line-height: .92;
  font-weight: 900;
}

.hero-lead {
  max-width: 620px;
  color: rgba(248,242,239,.82);
  font-size: 1.2rem;
}

.next-show-panel {
  display: grid;
  grid-template-columns: minmax(140px, 210px) minmax(0, 1fr);
  gap: 1rem;
  align-items: stretch;
  max-width: 720px;
  margin-top: 1.8rem;
  padding: 1rem;
  border: 1px solid rgba(240,193,93,.22);
  border-radius: .75rem;
  background: rgba(11,8,12,.78);
  box-shadow: 0 1.4rem 4rem rgba(0,0,0,.42);
}

.next-show-panel img,
.show-poster {
  width: 100%;
  aspect-ratio: 2 / 3;
  object-fit: cover;
  border-radius: .55rem;
  border: 1px solid rgba(240,193,93,.25);
  background: linear-gradient(135deg, #2b151a, #090608);
}

.next-show-title {
  color: var(--paper);
  font-size: 1.8rem;
  font-weight: 800;
}

.stage-poster-strip {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(110px, 140px);
  gap: .8rem;
  max-width: min(820px, 100%);
  margin-top: 1.25rem;
  overflow-x: auto;
  padding: .1rem .1rem .8rem;
}

.stage-poster-mini {
  display: grid;
  gap: .35rem;
  color: var(--paper);
  text-decoration: none;
}

.stage-poster-mini img {
  width: 100%;
  aspect-ratio: 2 / 3;
  object-fit: cover;
  border-radius: .5rem;
  border: 1px solid rgba(240,193,93,.25);
  box-shadow: 0 .8rem 1.8rem rgba(0,0,0,.34);
}

.stage-poster-mini span {
  overflow-wrap: normal;
  word-break: normal;
  line-height: 1.15;
  font-weight: 800;
}

.stage-poster-mini small {
  color: var(--gold);
  font-weight: 800;
}

.date-pill,
.status-pill {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  width: fit-content;
  padding: .35rem .65rem;
  border-radius: 999px;
  background: rgba(195,31,50,.18);
  border: 1px solid rgba(195,31,50,.4);
  color: var(--paper);
  font-weight: 700;
}

.section-heading {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  align-items: end;
  justify-content: space-between;
  margin-bottom: 1.25rem;
}

.section-heading h2 {
  margin: 0;
  color: var(--paper);
  font-weight: 850;
}

.poster-rail {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(190px, 235px);
  gap: 1rem;
  overflow-x: auto;
  padding: .2rem .1rem 1rem;
  scroll-snap-type: x proximity;
}

.poster-card {
  position: relative;
  display: block;
  min-height: 330px;
  color: var(--paper);
  text-decoration: none;
  scroll-snap-align: start;
}

.poster-card img {
  width: 100%;
  height: 100%;
  min-height: 330px;
  object-fit: cover;
  border-radius: .7rem;
  border: 1px solid rgba(240,193,93,.22);
  box-shadow: 0 1.2rem 2.8rem rgba(0,0,0,.4);
}

.poster-card-info {
  position: absolute;
  left: .75rem;
  right: .75rem;
  bottom: .75rem;
  padding: .75rem;
  border-radius: .55rem;
  background: rgba(7,6,9,.8);
  backdrop-filter: blur(10px);
}

.show-card {
  height: 100%;
  overflow: hidden;
}

.show-card .card-img-top {
  height: 220px;
  object-fit: cover;
}

.show-card .card-body {
  display: flex;
  flex-direction: column;
}

.sub,
.text-secondary {
  color: var(--muted) !important;
}

.card {
  background: rgba(21,16,21,.94);
  color: var(--paper);
  border: 1px solid var(--line);
  border-radius: .75rem;
  box-shadow: 0 1rem 2.6rem rgba(0,0,0,.18);
}

.btn-primary {
  background: linear-gradient(180deg, #dd3043, #a91525);
  border-color: #cf2638;
  color: #fff;
  font-weight: 800;
}

.btn-primary:hover,
.btn-primary:focus {
  background: linear-gradient(180deg, #ee3a4e, #bf1c2e);
  border-color: #e13649;
  color: #fff;
}

.btn-outline-light {
  border-color: rgba(248,242,239,.5);
  color: var(--paper);
}

.btn-outline-light:hover {
  background: var(--paper);
  color: var(--stage-black);
}

.form-control,
.form-select,
.form-check-input {
  background-color: #0f0b10;
  border-color: var(--line);
  color: var(--paper);
}

.form-control:focus,
.form-select:focus {
  background-color: #120d13;
  border-color: #d3273b;
  color: var(--paper);
  box-shadow: 0 0 0 .25rem rgba(195,31,50,.25);
}

input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
  color-scheme: dark;
}

input[type="date"]::-webkit-calendar-picker-indicator,
input[type="time"]::-webkit-calendar-picker-indicator,
input[type="datetime-local"]::-webkit-calendar-picker-indicator,
input[type="month"]::-webkit-calendar-picker-indicator {
  filter: invert(1) sepia(.2) saturate(1.6);
  opacity: .9;
  cursor: pointer;
}

.input-group-text {
  background-color: #181119;
  border-color: var(--line);
  color: var(--gold);
  font-weight: 800;
}

input[type="file"].form-control,
input[type="file"] {
  color: var(--paper);
  background-color: #0f0b10;
  border: 1px solid var(--line);
}

input[type="file"]::file-selector-button,
.form-control[type="file"]::file-selector-button,
input[type="file"]::-webkit-file-upload-button,
.form-control[type="file"]::-webkit-file-upload-button {
  background-color: #c31f32;
  color: #fff;
  border: 1px solid #c31f32;
  padding: .5rem .85rem;
  border-radius: .5rem;
  cursor: pointer;
}

.table-dark-th {
  --bs-table-color: var(--paper);
  --bs-table-bg: #151015;
  --bs-table-border-color: var(--line);
}

.gallery {
  display: grid;
  gap: .7rem;
  grid-template-columns: repeat(4, minmax(0,1fr));
}

.gallery img {
  width: 100%;
  height: 150px;
  object-fit: cover;
  border-radius: .55rem;
  border: 1px solid rgba(240,193,93,.22);
}

.gallery > div { position: relative; }

.lightbox {
  position: fixed;
  inset: 0;
  z-index: 1055;
  background: rgba(0,0,0,.9);
  display: none;
  align-items: center;
  justify-content: center;
}

.lightbox.active { display: flex; }
.lightbox img { max-width: 90vw; max-height: 90vh; border-radius: .6rem; }

.site-footer {
  margin-top: 4rem;
  padding: 3rem 0 1.25rem;
  background:
    linear-gradient(180deg, rgba(7,6,9,0), #070609 18%),
    radial-gradient(circle at 50% 0, rgba(195,31,50,.24), transparent 24rem);
  border-top: 1px solid rgba(240,193,93,.16);
}

.footer-brand {
  color: var(--paper);
  font-weight: 900;
  font-size: 1.4rem;
}

.footer-links {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem 1.2rem;
  justify-content: center;
}

.footer-links a {
  color: rgba(248,242,239,.78);
  text-decoration: none;
}

.footer-links a:hover { color: var(--gold); }

.admin-helper {
  padding: .85rem 1rem;
  border: 1px solid rgba(240,193,93,.18);
  border-radius: .65rem;
  background: rgba(240,193,93,.06);
  color: rgba(248,242,239,.84);
}

.admin-alert {
  border-color: rgba(64, 188, 127, .35);
  background: rgba(64, 188, 127, .12);
  color: #d8ffe9;
}

.admin-home-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.25rem;
  border: 1px solid rgba(240,193,93,.22);
  border-radius: .75rem;
  background:
    linear-gradient(135deg, rgba(195,31,50,.18), rgba(21,16,21,.96)),
    #151015;
}

.admin-home-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .6rem;
  justify-content: flex-end;
}

.admin-create-cta {
  display: grid;
  place-items: center;
  padding: 1.25rem;
  border: 1px dashed rgba(240,193,93,.36);
  border-radius: .75rem;
  background: rgba(240,193,93,.05);
}

.admin-create-icon {
  display: inline-grid;
  place-items: center;
  width: 1.8rem;
  height: 1.8rem;
  margin-right: .35rem;
  border-radius: 50%;
  background: rgba(255,255,255,.18);
  font-weight: 900;
}

.editor-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  margin-bottom: .55rem;
}

.spectacle-editor {
  min-height: 14rem;
  line-height: 1.55;
}

.admin-show-card {
  color: var(--paper);
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}

.admin-show-card:hover {
  color: var(--paper);
  transform: translateY(-2px);
  border-color: rgba(240,193,93,.5);
  box-shadow: 0 1.4rem 3rem rgba(0,0,0,.32);
}

.admin-show-card .card-img-top {
  height: 210px;
  object-fit: cover;
}

.visibility-choice {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: .75rem;
}

.visibility-choice input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.visibility-tile {
  display: block;
  min-height: 5.4rem;
  padding: .85rem;
  border: 1px solid var(--line);
  border-radius: .65rem;
  background: #100c11;
  cursor: pointer;
  transition: border-color .16s ease, background-color .16s ease, transform .16s ease;
}

.visibility-tile strong {
  display: block;
  color: var(--paper);
}

.visibility-choice input:checked + .visibility-tile {
  border-color: var(--gold);
  background: rgba(195,31,50,.18);
  box-shadow: 0 0 0 .2rem rgba(240,193,93,.14);
}

.visibility-tile:hover {
  transform: translateY(-1px);
  border-color: rgba(240,193,93,.48);
}

.color-swatches {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
}

.color-swatch {
  width: 2.35rem;
  height: 2.35rem;
  border: 2px solid rgba(248,242,239,.36);
  border-radius: 50%;
  cursor: pointer;
  box-shadow: inset 0 0 0 3px rgba(0,0,0,.24);
}

.color-swatch.is-active {
  border-color: var(--gold);
  box-shadow: 0 0 0 .2rem rgba(240,193,93,.18), inset 0 0 0 3px rgba(0,0,0,.24);
}

.form-control-color {
  width: 3rem;
  height: 2.55rem;
  padding: .25rem;
  cursor: pointer;
}

.newsletter-editor {
  min-height: 18rem;
  line-height: 1.55;
}

.newsletter-preview {
  position: sticky;
  top: 5.5rem;
}

.newsletter-preview-body {
  padding-top: 1rem;
  margin-top: 1rem;
  border-top: 1px solid var(--line);
  color: var(--paper);
  line-height: 1.6;
}

.account-hero {
  display: grid;
  gap: 1rem;
  grid-template-columns: 1.2fr .8fr;
  align-items: stretch;
}

.reservation-card {
  position: relative;
  overflow: hidden;
}

.reservation-card::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: .35rem;
  background: var(--bs-primary);
}

.reservation-ticket-card {
  display: grid;
  grid-template-columns: clamp(8rem, 29%, 10.5rem) minmax(0, 1fr);
}

.reservation-ticket-card::before {
  z-index: 2;
  left: clamp(8rem, 29%, 10.5rem);
}

.reservation-ticket-poster {
  position: relative;
  display: block;
  min-height: 100%;
  overflow: hidden;
  border-right: 1px solid rgba(240,193,93,.22);
  background: #28151b;
}

.reservation-ticket-poster img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .25s ease, filter .25s ease;
}

.reservation-ticket-poster:hover img {
  transform: scale(1.025);
  filter: brightness(1.08);
}

.reservation-ticket-body {
  min-width: 0;
}

.reservation-ticket-line {
  display: flex;
  justify-content: space-between;
  gap: .9rem;
  align-items: center;
  padding: .85rem 0;
  border-top: 1px solid rgba(248,242,239,.14);
}

.reservation-show-copy {
  min-width: 0;
}

.reservation-show-copy a,
.reservation-show-copy span {
  display: block;
}

.reservation-show-copy a {
  color: var(--paper);
  text-decoration: none;
}

.reservation-show-copy a:hover {
  color: var(--gold);
}

.reservation-show-copy span {
  margin-top: .2rem;
}

.reservation-show-quantity {
  display: grid;
  justify-items: end;
  color: var(--cantou-muted);
  text-align: right;
}

.reservation-show-quantity strong {
  color: var(--paper);
  font-size: 1.05rem;
}

@media (max-width: 575.98px) {
  .reservation-ticket-card {
    grid-template-columns: 6.5rem minmax(0, 1fr);
  }

  .reservation-ticket-card::before {
    left: 6.5rem;
  }

  .reservation-ticket-body {
    padding: 1rem !important;
  }
}

.legal-page {
  max-width: 920px;
}

.festival-feature-card {
  position: relative;
  display: block;
  min-height: 280px;
  overflow: hidden;
  border: 1px solid rgba(240,193,93,.22);
  border-radius: .75rem;
  color: var(--paper);
  background: #100c11;
  box-shadow: 0 1rem 2.6rem rgba(0,0,0,.24);
}

.festival-feature-card:hover {
  color: var(--paper);
  border-color: rgba(240,193,93,.55);
}

.festival-feature-card img {
  width: 100%;
  height: 100%;
  min-height: 280px;
  object-fit: cover;
  opacity: .84;
  transition: transform .22s ease, opacity .22s ease;
}

.festival-feature-card:hover img {
  transform: scale(1.03);
  opacity: 1;
}

.festival-feature-body {
  position: absolute;
  inset: auto 1rem 1rem;
  display: grid;
  gap: .6rem;
  padding: .95rem;
  border-radius: .65rem;
  background: rgba(7,6,9,.82);
  backdrop-filter: blur(10px);
}

.festival-feature-body strong {
  color: var(--paper);
  font-size: 1.25rem;
  line-height: 1.15;
}

.festival-hero {
  position: relative;
  display: grid;
  grid-template-columns: minmax(220px, 380px) minmax(0, 1fr);
  align-items: center;
  overflow: hidden;
  border: 1px solid rgba(240,193,93,.22);
  border-radius: 1.1rem;
  background:
    radial-gradient(circle at 85% 15%, color-mix(in srgb, var(--festival-accent) 16%, transparent), transparent 38%),
    linear-gradient(145deg, #211217, #10090c 72%);
  box-shadow: 0 24px 70px rgba(0,0,0,.24);
}

.festival-hero::after {
  content: "";
  position: absolute;
  z-index: 2;
  top: 0;
  right: 0;
  left: 0;
  height: .32rem;
  background: var(--festival-accent);
}

.festival-hero-poster {
  position: relative;
  z-index: 1;
  display: grid;
  min-height: 100%;
  padding: clamp(.85rem, 2.4vw, 1.5rem);
  border-right: 1px solid rgba(240,193,93,.14);
  background: rgba(7,6,9,.38);
  place-items: center;
}

.festival-hero-poster img {
  display: block;
  width: 100%;
  max-width: 340px;
  max-height: min(68vh, 640px);
  height: auto;
  object-fit: contain;
  border: 1px solid rgba(240,193,93,.18);
  border-radius: .65rem;
  background: #0b0608;
  box-shadow: 0 18px 42px rgba(0,0,0,.35);
}

.festival-hero-body {
  position: relative;
  z-index: 1;
  max-width: 650px;
  padding: clamp(1.5rem, 5vw, 4rem);
}

.festival-date {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  padding: .55rem .8rem;
  border: 1px solid color-mix(in srgb, var(--festival-accent) 55%, rgba(240,193,93,.25));
  border-radius: 999px;
  color: var(--paper);
  background: color-mix(in srgb, var(--festival-accent) 18%, rgba(7,6,9,.82));
  font-size: .85rem;
  font-weight: 800;
}

.festival-hero-body h1 {
  max-width: 620px;
  margin: 1rem 0 .65rem;
  color: var(--paper);
  font-size: clamp(1.65rem, 3vw, 2.65rem);
  line-height: 1.04;
  font-weight: 900;
}

@media (max-width: 767.98px) {
  .festival-hero { grid-template-columns: 1fr; }
  .festival-hero-poster { min-height: auto; border-right: 0; border-bottom: 1px solid rgba(240,193,93,.14); }
  .festival-hero-poster img { width: min(100%, 300px); max-height: none; }
  .festival-hero-body { max-width: none; padding: 1.5rem 1.25rem 1.75rem; }
}

.festival-program {
  display: grid;
  gap: .85rem;
}

.festival-program-item {
  display: grid;
  grid-template-columns: 86px minmax(0,1fr);
  gap: .85rem;
  padding-bottom: .85rem;
  border-bottom: 1px solid var(--line);
}

.festival-program-item:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}

.festival-program-item img {
  width: 86px;
  aspect-ratio: 2 / 3;
  object-fit: cover;
  border-radius: .55rem;
  border: 1px solid rgba(240,193,93,.22);
}

.festival-public-days { display: grid; gap: 1rem; }
.festival-public-day { overflow: hidden; border: 1px solid rgba(247,240,231,.1); border-radius: 1rem; background: linear-gradient(145deg,rgba(45,22,29,.78),rgba(19,9,12,.9)); }
.festival-public-day > header { display: flex; padding: 1rem 1.2rem; border-bottom: 1px solid rgba(247,240,231,.1); align-items: center; gap: .9rem; background: rgba(216,173,97,.04); }
.festival-public-day > header time { display: grid; width: 3.5rem; height: 3.5rem; border: 1px solid rgba(216,173,97,.3); border-radius: .8rem; color: var(--cantou-gold); place-items: center; line-height: 1; }
.festival-public-day > header time strong { font-family: var(--cantou-serif); font-size: 1.45rem; }
.festival-public-day > header time span { color: var(--cantou-muted); font-size: .65rem; }
.festival-public-day > header h3 { margin: 0; font-family: var(--cantou-serif); font-size: 1.35rem; font-weight: 500; }
.festival-public-day-list { display: grid; }
.festival-public-entry { display: grid; grid-template-columns: 110px 64px minmax(0,1fr) auto; padding: 1rem; border-bottom: 1px solid rgba(247,240,231,.08); align-items: center; gap: 1rem; }
.festival-public-entry:last-child { border-bottom: 0; }
.festival-public-entry > img { width: 110px; height: 88px; border-radius: .65rem; object-fit: cover; }
.festival-public-entry > time { display: inline-flex; align-items: center; gap: .38rem; color: var(--cantou-gold); font-size: 1rem; font-weight: 850; }
.festival-public-entry > time i { font-size: .78rem; opacity: .82; }
.festival-public-entry h4 { margin: .15rem 0; font-family: var(--cantou-serif); font-size: 1.15rem; font-weight: 500; }
.festival-public-entry p { max-width: 680px; margin: .25rem 0 .45rem; color: var(--cantou-muted); font-size: .76rem; line-height: 1.5; }
.festival-entry-type { color: var(--cantou-gold); font-size: .6rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.festival-entry-type.is-programme { display: inline-flex; width: fit-content; padding: .25rem .5rem; border: 1px solid rgba(216,173,97,.3); border-radius: 999px; align-items: center; gap: .35rem; background: rgba(216,173,97,.08); letter-spacing: .04em; }
.festival-entry-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .5rem; }
.festival-public-entry.is-activity { background: rgba(216,173,97,.025); }

.festival-offer-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .85rem; }
.festival-offer-card { display: grid; min-height: 220px; padding: 1.2rem; border: 1px solid rgba(216,173,97,.2); border-radius: .95rem; align-content: start; background: linear-gradient(145deg,rgba(63,28,38,.82),rgba(24,11,16,.92)); }
.festival-offer-card > span { color: var(--cantou-gold); font-size: .65rem; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
.festival-offer-card h3 { margin: .65rem 0 .3rem; font-family: var(--cantou-serif); font-size: 1.35rem; font-weight: 500; }
.festival-offer-card > strong { color: var(--cantou-gold); font-size: 1.55rem; }
.festival-offer-card p { margin: .7rem 0; color: var(--cantou-muted); font-size: .75rem; }
.festival-offer-card small { margin-top: auto; color: var(--cantou-paper); font-size: .68rem; }

.festival-food-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .75rem; }
.festival-food-grid article { display: grid; grid-template-columns: auto minmax(0,1fr) auto; padding: 1rem; border: 1px solid rgba(247,240,231,.1); border-radius: .85rem; align-items: center; gap: .8rem; background: rgba(255,255,255,.025); }
.festival-food-grid i,.festival-food-grid article > strong { color: var(--cantou-gold); }
.festival-food-grid h3 { margin: 0; font-size: .95rem; }
.festival-food-grid p { margin: .2rem 0 0; color: var(--cantou-muted); font-size: .7rem; }

.festival-booking { scroll-margin-top: 7rem; }
.festival-booking-heading { margin-bottom: 1.3rem; padding-bottom: 1rem; border-bottom: 1px solid rgba(247,240,231,.1); }
.festival-booking-heading h2 { margin: 0; font-family: var(--cantou-serif); font-size: clamp(1.6rem,3vw,2.2rem); font-weight: 500; }
.festival-booking-heading p { margin: .4rem 0 0; color: var(--cantou-muted); }
.festival-booking-form { display: grid; gap: 1.2rem; }
.festival-booking-form fieldset { padding: 1rem; border: 1px solid rgba(247,240,231,.1); border-radius: .85rem; background: rgba(255,255,255,.02); }
.festival-booking-form legend { float: none; width: auto; margin: 0 0 .8rem; padding: 0; font-family: var(--cantou-serif); font-size: 1.15rem; }
.festival-booking-form legend small { color: var(--cantou-muted); font-family: var(--cantou-sans); font-size: .65rem; }
.festival-show-choices { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .55rem; }
.festival-show-choices label { display: flex; padding: .75rem; border: 1px solid rgba(247,240,231,.1); border-radius: .7rem; align-items: center; gap: .65rem; cursor: pointer; }
.festival-show-choices label:has(input:checked) { border-color: var(--cantou-gold); background: rgba(216,173,97,.08); }
.festival-show-choices label > span { display: grid; }
.festival-show-choices small { color: var(--cantou-muted); font-size: .66rem; }
.festival-booking-help,.festival-booking-selection { color: var(--cantou-muted); font-size: .72rem; }
.festival-booking-selection { margin: .7rem 0 0; }
.festival-booking-selection.is-valid { color: #bff3d7; }
.festival-food-options { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .6rem; }
.festival-food-options label { display: grid; grid-template-columns: minmax(0,1fr) 84px; padding: .75rem; border: 1px solid rgba(247,240,231,.1); border-radius: .7rem; align-items: center; gap: .7rem; }
.festival-food-options label > span { display: grid; }
.festival-food-options small { color: var(--cantou-muted); font-size: .66rem; }

@media (max-width: 767.98px) {
  .festival-public-entry { grid-template-columns: 76px minmax(0,1fr); }
  .festival-public-entry > img { width: 76px; height: 76px; grid-row: span 2; }
  .festival-public-entry > time { grid-column: 2; grid-row: 1; }
  .festival-public-entry > .festival-public-entry-copy { grid-column: 2; }
  .festival-entry-actions { grid-column: 1 / -1; justify-content: stretch; }
  .festival-entry-actions .btn { flex: 1; }
  .festival-offer-grid,.festival-food-grid,.festival-show-choices,.festival-food-options { grid-template-columns: 1fr; }
}

.festival-seance-picker {
  display: grid;
  gap: .7rem;
  max-height: 30rem;
  overflow: auto;
  padding-right: .35rem;
}

.festival-seance-row {
  display: grid;
  grid-template-columns: minmax(0,1fr) minmax(180px, 280px);
  gap: .8rem;
  align-items: center;
  padding: .75rem;
  border: 1px solid var(--line);
  border-radius: .65rem;
  background: #100c11;
}

.festival-seance-row .form-check-label {
  display: grid;
  gap: .1rem;
}

.show-page-poster {
  width: 100%;
  max-height: 560px;
  object-fit: contain;
  border-radius: .55rem;
  border: 1px solid rgba(240,193,93,.22);
  background: #080609;
}

.stage-card .stage-meta {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  justify-content: space-between;
  color: var(--gold);
  font-weight: 800;
}

.stage-brand-page {
  --ctc-ink: #102022;
  --ctc-panel: #142a2d;
  --ctc-teal: #2aa7a1;
  --ctc-coral: #ef6b4a;
  --ctc-sun: #f0c15d;
  --ctc-paper: #fff8ef;
}

.stage-brand-page .eyebrow {
  color: var(--ctc-sun);
}

.stage-brand-hero {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 1rem;
  margin-bottom: 1.5rem;
  padding: 1.35rem;
  border: 1px solid rgba(42,167,161,.38);
  border-radius: .75rem;
  background:
    repeating-linear-gradient(135deg, rgba(255,255,255,.035) 0 1px, transparent 1px 18px),
    linear-gradient(135deg, rgba(20,42,45,.98), rgba(32,18,26,.96));
  box-shadow: 0 1.2rem 2.6rem rgba(0,0,0,.24);
}

.stage-brand-page .show-card,
.stage-brand-page .card,
.stage-detail-hero > div,
.stage-detail-hero > aside,
.stage-chat-shell {
  border-color: rgba(42,167,161,.34);
  background: rgba(16,32,34,.96);
}

.stage-brand-page .text-primary,
.stage-brand-page .h1,
.stage-brand-page h2,
.stage-brand-page h3 {
  color: var(--ctc-paper) !important;
}

.stage-brand-page .date-pill,
.stage-brand-page .status-pill {
  border-color: rgba(42,167,161,.5);
  background: rgba(42,167,161,.16);
}

.stage-brand-page .btn-primary {
  background: linear-gradient(180deg, #f07b5b, #c94e33);
  border-color: #ef6b4a;
}

.stage-brand-page .btn-primary:hover,
.stage-brand-page .btn-primary:focus {
  background: linear-gradient(180deg, #ff8b6e, #df5c3d);
  border-color: #ff8b6e;
}

.stage-detail-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(280px, .95fr);
  gap: 1.25rem;
  align-items: stretch;
}

.stage-detail-hero > div,
.stage-detail-hero > aside {
  padding: 1.25rem;
  border: 1px solid rgba(240,193,93,.22);
  border-radius: .75rem;
  background: rgba(21,16,21,.94);
}

.stage-detail-hero img {
  width: 100%;
  height: 100%;
  max-height: 560px;
  object-fit: cover;
  border-radius: .55rem;
  border: 1px solid rgba(240,193,93,.22);
}

.stage-description {
  color: rgba(248,242,239,.86);
  line-height: 1.65;
}

.stage-info-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: .8rem;
}

.stage-info-grid > div {
  padding: .85rem;
  border: 1px solid var(--line);
  border-radius: .65rem;
  background: #100c11;
}

.stage-info-grid span,
.stage-info-grid strong {
  display: block;
}

.stage-chat-shell {
  overflow: hidden;
  border: 1px solid rgba(42,167,161,.34);
  border-radius: .75rem;
  box-shadow: 0 1rem 2.6rem rgba(0,0,0,.18);
}

.stage-chat-security {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem .75rem;
  justify-content: space-between;
  padding: .8rem 1rem;
  border-bottom: 1px solid rgba(42,167,161,.28);
  background: rgba(42,167,161,.12);
  color: rgba(255,248,239,.86);
}

.stage-chat-security strong {
  color: var(--ctc-sun);
}

.stage-chat {
  overflow: hidden;
}

.stage-chat-log {
  display: grid;
  gap: .85rem;
  height: min(62vh, 620px);
  min-height: 360px;
  overflow-y: auto;
  padding: 1rem;
}

.stage-chat-message {
  max-width: min(760px, 92%);
  padding: .85rem 1rem;
  border: 1px solid rgba(42,167,161,.28);
  border-radius: .75rem;
  background: rgba(8,20,22,.82);
}

.stage-chat-message p {
  margin: .35rem 0 0;
  white-space: pre-wrap;
}

.stage-chat-meta {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  justify-content: space-between;
  color: var(--muted);
  font-size: .9rem;
}

.stage-chat-meta strong {
  color: var(--gold);
}

.stage-brand-page .stage-chat-meta strong {
  color: var(--ctc-sun);
}

.stage-chat-attachments {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
  margin-top: .75rem;
}

.stage-chat-attachments a {
  position: relative;
  display: block;
  width: 112px;
  color: var(--ctc-paper);
  text-decoration: none;
}

.stage-chat-attachments img {
  width: 112px;
  height: 112px;
  object-fit: cover;
  border-radius: .6rem;
  border: 1px solid rgba(240,193,93,.28);
  background: #071113;
}

.stage-chat-attachments span {
  position: absolute;
  right: .35rem;
  bottom: .35rem;
  padding: .15rem .35rem;
  border-radius: .35rem;
  background: rgba(0,0,0,.72);
  color: #fff;
  font-size: .75rem;
}

.stage-chat-read {
  margin-top: .45rem;
  color: rgba(255,248,239,.58);
  font-size: .78rem;
  text-align: right;
}

.stage-chat-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(180px, 260px) auto;
  gap: .75rem;
  padding: 1rem;
  border-top: 1px solid var(--line);
  background: rgba(7,6,9,.45);
}

.stage-admin-registration-form {
  display: grid;
  grid-template-columns: minmax(130px, .8fr) minmax(130px, .8fr) minmax(100px, .7fr) minmax(160px, 1fr) auto;
  gap: .5rem;
  align-items: start;
}

.stage-admin-registration-form small {
  grid-column: 1 / -1;
}

@media (max-width: 991.98px) {
  .account-hero,
  .next-show-panel,
  .stage-detail-hero,
  .admin-home-hero {
    grid-template-columns: 1fr;
    align-items: stretch;
  }

  .admin-home-hero {
    flex-direction: column;
  }

  .admin-home-actions {
    justify-content: flex-start;
    width: 100%;
  }

  .stage-curtain { width: 16%; }
}

@media (max-width: 767.98px) {
  .stage-hero {
    min-height: 650px;
  }

  .hero-title {
    font-size: 3.2rem;
  }

  .visibility-choice,
  .gallery,
  .festival-seance-row {
    grid-template-columns: 1fr;
  }

  .show-card .card-img-top {
    height: 190px;
  }

  .stage-info-grid,
  .stage-chat-form,
  .stage-admin-registration-form {
    grid-template-columns: 1fr;
  }
}
/* Choix et suivi du paiement */
.payment-choice{display:grid;gap:.75rem;margin-top:.35rem}
.payment-choice-card{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:.85rem;padding:1rem;border:1px solid rgba(236,190,79,.25);border-radius:16px;background:rgba(255,255,255,.025);cursor:pointer;transition:border-color .2s ease,background .2s ease,transform .2s ease}
.payment-choice-card:hover{border-color:rgba(236,190,79,.65);background:rgba(236,190,79,.07);transform:translateY(-1px)}
.payment-choice-card:has(input:checked){border-color:#ecbe4f;background:rgba(236,190,79,.11);box-shadow:0 0 0 2px rgba(236,190,79,.08)}
.payment-choice-card.is-disabled{cursor:not-allowed;opacity:.58}
.payment-choice-card.is-disabled:hover{transform:none;background:rgba(255,255,255,.025);border-color:rgba(236,190,79,.25)}
.payment-choice-card input{width:1.15rem;height:1.15rem;accent-color:#ecbe4f}
.payment-choice-icon{display:grid;place-items:center;width:2.6rem;height:2.6rem;border-radius:12px;background:rgba(236,190,79,.12);color:#ecbe4f;font-size:1.05rem}
.payment-choice-card strong,.payment-choice-card small{display:block}
.payment-choice-card small{margin-top:.2rem;color:var(--muted,#b8aeb0);line-height:1.45}
.payment-status-pill{display:inline-flex;align-items:center;gap:.35rem;padding:.32rem .6rem;border:1px solid rgba(255,255,255,.15);border-radius:999px;font-size:.72rem;font-weight:800;letter-spacing:.02em;color:#eee3df;background:rgba(255,255,255,.05)}
.payment-status-pill.is-paye{color:#a9efc4;border-color:rgba(65,190,116,.38);background:rgba(65,190,116,.12)}
.payment-status-pill.is-en_attente{color:#f2d47b;border-color:rgba(236,190,79,.42);background:rgba(236,190,79,.1)}
.payment-status-pill.is-echec{color:#ffb0b7;border-color:rgba(218,70,83,.4);background:rgba(218,70,83,.1)}
.payment-result{max-width:760px;text-align:center}
.payment-result-icon{display:grid;place-items:center;width:4rem;height:4rem;margin:0 auto 1rem;border-radius:50%;font-size:1.5rem}
.payment-result-icon.is-success{background:rgba(65,190,116,.14);color:#83e5a9;border:1px solid rgba(65,190,116,.38)}
.payment-result-icon.is-pending{background:rgba(236,190,79,.12);color:#ecbe4f;border:1px solid rgba(236,190,79,.35)}
.payment-result-order{display:inline-block;margin:1rem 0 0;padding:.55rem .9rem;border-radius:999px;background:rgba(255,255,255,.05);font-weight:700}
@media (min-width:720px){.payment-choice{grid-template-columns:repeat(2,minmax(0,1fr))}}
