/* STELARS MUSIC / V10 — Agenda interactiva y compra de entradas editorial.
   Se carga al final de las hojas existentes para conservar el diseño aprobado. */

.concert-card.concert-card-v10 {
  display: block;
  padding: 0;
  border-radius: 19px;
  min-height: 0;
  overflow: hidden;
  background: linear-gradient(110deg, rgba(255,255,255,.047), rgba(255,255,255,.019));
  transition: border-color .35s ease, background .35s ease, box-shadow .35s ease;
}
.concert-card.concert-card-v10:hover {
  transform: none;
  border-color: rgba(216,255,66,.28);
  background: linear-gradient(110deg,rgba(216,255,66,.047),rgba(255,255,255,.028));
  box-shadow: 0 16px 38px rgba(0,0,0,.19);
}
.concert-primary {
  display: grid;
  grid-template-columns: minmax(78px,100px) minmax(0,1fr) minmax(155px,206px);
  gap: 22px;
  padding: 22px 25px;
  align-items: center;
  min-height: 108px;
}
.concert-card-v10 .concert-date { display:flex; flex-direction:column; gap:1px; }
.concert-card-v10 .concert-info .concert-location { margin-top: 12px; }
.concert-card-v10 .concert-actions { display:flex; flex-direction:column; gap:9px; align-items:flex-end; }
.concert-card-v10 .event-cta { min-height:44px; }
.concert-access-message { color: var(--muted); font-size:.8rem; font-weight:570; text-align:right; line-height:1.4; }
.concert-access-message.soldout { color:var(--off); font-weight:700; letter-spacing:.07em; }
.concert-expand-button {
  appearance:none; border:0; background:transparent; cursor:pointer;
  padding:2px 2px; display:inline-flex; align-items:center; gap:7px;
  color:var(--muted); font-size:.74rem; letter-spacing:.025em;
  transition:color .24s ease;
}
.concert-expand-button:hover, .concert-expand-button:focus-visible { color:var(--off); }
.concert-chevron { display:inline-block; color:var(--acid); font-size:1.2rem; line-height:.6; transition:transform .3s ease; }
.concert-card-v10:is(.is-expanded, :focus-within) .concert-chevron { transform:rotate(180deg); }
.concert-expand {
  max-height:0;
  opacity:0;
  overflow:hidden;
  transition:max-height .45s cubic-bezier(.2,.8,.2,1), opacity .35s ease;
}
.concert-expand-inner {
  display:grid;
  grid-template-columns: minmax(225px,330px) minmax(0,1fr);
  gap:26px;
  margin: 0 25px 18px;
  padding: 18px 0 0;
  border-top: 1px solid rgba(255,255,255,.09);
  transform:translateY(12px);
  transition:transform .45s ease;
}
.concert-expand-photos {
  height:164px;
  display:flex;
  gap:4px;
  overflow:hidden;
  border-radius:13px;
  background:#222520;
}
.concert-expand-photos img {
  width:100%; min-width:0; height:100%; flex:1 1 0; object-fit:cover;
  object-position:50% 30%; filter:grayscale(.15);
  transition:filter .3s ease, transform .65s ease;
}
.concert-card-v10:hover .concert-expand-photos img { filter:grayscale(0); transform:scale(1.045); }
.concert-photo-fallback { width:100%; display:grid;place-items:center; letter-spacing:.18em; font-size:.85rem;color:var(--muted); }
.concert-expand-copy { display:flex; flex-direction:column; justify-content:center; align-items:flex-start; gap:7px; }
.concert-expand-copy .mini-label { font-size:.62rem; font-weight:720; color:var(--acid); letter-spacing:.19em; }
.concert-expand-copy h4 { font-size:clamp(1.25rem,2.1vw,1.9rem); line-height:1.1; letter-spacing:-.035em; font-weight:640; margin:0 0 2px; }
.concert-expand-copy h4 span { color:var(--acid); font-size:.7em; }
.concert-expand-copy > p { font-size:.9rem; color:var(--muted); }
.concert-expand-copy .concert-expand-description { max-width:55ch; font-size:.8rem; }
.concert-lineup { color:var(--muted); font-size:.7rem; margin-top:2px; }
.concert-card-v10.is-expanded .concert-expand,
.concert-card-v10:focus-within .concert-expand { max-height:350px; opacity:1; }
.concert-card-v10.is-expanded .concert-expand-inner,
.concert-card-v10:focus-within .concert-expand-inner { transform:translateY(0); }
@media(hover:hover) and (pointer:fine) {
 .concert-card-v10:hover .concert-expand { max-height:350px; opacity:1; }
 .concert-card-v10:hover .concert-expand-inner { transform:translateY(0); }
 .concert-card-v10:hover .concert-chevron { transform:rotate(180deg); }
}

/* Ventana de venta: ficha del concierto y zona de pago diferenciadas. */
.ticket-modal-v10 { overflow:hidden; }
.ticket-modal-v10 .ticket-backdrop { background:rgba(3,5,4,.86); backdrop-filter:blur(18px); }
.ticket-modal-v10 .ticket-dialog-v10 {
  position:relative;
  display:grid;
  grid-template-columns:minmax(270px, 34%) minmax(0, 66%);
  width:min(1180px,calc(100vw - 44px));
  height:min(860px,calc(100dvh - 68px));
  max-height:calc(100dvh - 68px);
  margin:34px auto;
  padding:0;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.18);
  border-radius:27px;
  box-shadow:0 40px 110px rgba(0,0,0,.8);
  background:#121511;
}
.ticket-modal-v10 .ticket-close-v10 {
  position:absolute; top:19px;right:21px;z-index:5;
  background:rgba(18,21,17,.84); color:var(--off); cursor:pointer;
  border:1px solid rgba(255,255,255,.15); border-radius:50%;
  width:43px;height:43px;display:grid;place-items:center;
  transition:background .2s ease,color .2s ease;
}
.ticket-modal-v10 .ticket-close-v10:hover { background:var(--acid);color:#111; }
.ticket-story { position:relative;min-width:0;overflow:hidden;display:flex; flex-direction:column;justify-content:flex-end; isolation:isolate; }
.ticket-story::after { content:''; position:absolute;inset:0;z-index:-1; background:linear-gradient(180deg,rgba(10,12,10,.08) 0%,rgba(10,12,10,.45) 40%,rgba(10,12,10,.98) 100%); }
.ticket-story-photo { position:absolute;inset:0;z-index:-2;display:flex;gap:0;background:radial-gradient(circle at 35% 30%,#31392b,#0a0c0a); }
.ticket-story-photo img { object-fit:cover;min-width:0;flex:1 1 0;width:100%;height:100%;filter:grayscale(.16) contrast(1.05); }
.ticket-story-copy { padding:clamp(22px,3vw,36px);display:grid;gap:13px; }
.ticket-label,.ticket-type { color:var(--acid);letter-spacing:.15em;font-size:.7rem;font-weight:700;text-transform:uppercase; }
.ticket-story h2 { font-size:clamp(2rem,3vw,3.45rem);line-height:.99;overflow-wrap:anywhere; }
.ticket-story .ticket-context { margin:0;color:rgba(240,240,233,.9);font-size:.93rem;line-height:1.65; }
.ticket-artists { font-size:.77rem;letter-spacing:.04em;color:rgba(240,240,233,.70); }
.ticket-trust { display:flex;align-items:center;gap:9px;margin-top:12px;padding-top:20px;border-top:1px solid rgba(255,255,255,.17);font-size:.74rem;color:rgba(240,240,233,.70); }
.ticket-trust-dot { width:7px;height:7px;flex:none;background:var(--acid);border-radius:50%; }
.ticket-purchase { display:flex;flex-direction:column;gap:0;min-width:0; overflow-y:auto; padding:clamp(24px,3vw,36px);scrollbar-color:#4c5942 transparent; }
.ticket-purchase-head { display:flex;justify-content:space-between;align-items:center; gap:15px; padding-right:42px;margin-bottom:14px; }
.ticket-purchase-head h3 { font-size:clamp(1.6rem,2.5vw,2.25rem);font-weight:610;letter-spacing:-.04em;margin:9px 0 0; }
.ticket-lock { font-size:1.45rem;color:var(--acid); }
.ticket-provider-note { font-size:.91rem;line-height:1.65; color:var(--muted); margin-bottom:20px; }
.ticket-modal-v10 .ticket-embed { flex:1 0 auto;overflow:visible; min-height:0; }
.ticket-modal-v10 .enterticket-frame { width:100%;border:1px solid rgba(255,255,255,.09);border-radius:16px;background:#11160e;display:block; min-height:620px; }
.ticket-event-warning { margin-bottom:13px;padding:15px 17px; border-radius:13px;border:1px solid rgba(216,255,66,.25);background:rgba(216,255,66,.065);font-size:.8rem;color:var(--off);line-height:1.5; }
.ticket-loading { display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center;min-height:110px;padding:16px;color:var(--off);font-size:.86rem; }
.ticket-loading small { color:var(--muted);font-size:.74rem;text-align:center; }
.ticket-spinner { width:24px;height:24px;border:2px solid rgba(255,255,255,.2);border-top-color:var(--acid);border-radius:50%;animation:ticket-spin .9s linear infinite; }
@keyframes ticket-spin {to{transform:rotate(360deg)}}
.ticket-modal-v10 .ticket-footer { display:flex;justify-content:space-between;gap:12px;padding-top:19px;border-top:1px solid rgba(255,255,255,.13); }
.ticket-modal-v10 .ticket-footer span {max-width:36ch;}
.ticket-modal-v10 .ticket-footer a {font-weight:650;color:var(--off);}
.ticket-external-view {
  min-height:330px;padding:35px 24px;background:linear-gradient(130deg,rgba(216,255,66,.08),rgba(255,255,255,.025));border:1px solid rgba(255,255,255,.1);
  border-radius:19px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:16px;
}
.ticket-external-symbol { width:54px;height:54px;border:1px solid rgba(216,255,66,.55);color:var(--acid);font-size:1.6rem;border-radius:50%;display:grid;place-items:center; }
.ticket-external-view strong {font-size:clamp(1.5rem,2vw,2rem);letter-spacing:-.035em;}
.ticket-external-view p {max-width:55ch;line-height:1.65;}
.ticket-external-action { display:inline-flex;align-items:center;justify-content:center;min-height:49px;border-radius:999px;background:var(--acid);color:#121512;padding:0 23px;font-weight:700;margin-top:10px; }
.ticket-external-action:hover { background:#ebffad; }

@media (max-width:960px) {
  .concert-primary { grid-template-columns:85px minmax(0,1fr) minmax(130px,175px); gap:14px;padding:18px; }
  .concert-expand-inner {margin:0 18px 18px;gap:17px;grid-template-columns:minmax(185px,270px) minmax(0,1fr);}
  .ticket-modal-v10 .ticket-dialog-v10 {grid-template-columns:minmax(240px,35%) minmax(0,65%);}
  .ticket-story-copy {padding:23px;}
}
@media (max-width:700px) {
  .concert-card.concert-card-v10 {overflow:hidden;}
  .concert-primary { grid-template-columns:64px minmax(0,1fr);gap:12px;padding:16px; }
  .concert-card-v10 .concert-date {padding-right:10px;}
  .concert-card-v10 .concert-actions {grid-column:2;align-items:flex-start; flex-direction:row;flex-wrap:wrap;gap:14px;}
  .concert-card-v10 .concert-access-message {text-align:left;}
  .concert-card-v10 .concert-expand-photos {height:175px;}
  .concert-expand-inner {grid-template-columns:1fr; gap:14px;}
  .concert-card-v10.is-expanded .concert-expand,.concert-card-v10:focus-within .concert-expand {max-height:570px;}
  .ticket-modal-v10 .ticket-dialog-v10 {display:block;width:calc(100vw - 16px);height:calc(100dvh - 18px);max-height:calc(100dvh - 18px);overflow-y:auto;margin:9px auto;border-radius:21px;}
  .ticket-story {min-height:225px;}
  .ticket-story-copy {padding:24px;}
  .ticket-story h2 {font-size:clamp(1.9rem,6vw,2.65rem);}
  .ticket-purchase {padding:22px;overflow:visible;}
  .ticket-purchase-head {padding-right:28px;}
  .ticket-modal-v10 .enterticket-frame {min-height:650px;}
  .ticket-modal-v10 .ticket-close-v10 {top:12px;right:12px;}
  .ticket-external-view {min-height:270px;padding:24px;}
}
@media (prefers-reduced-motion:reduce) {
 .concert-expand,.concert-expand-inner,.concert-expand-photos img,.concert-chevron {transition:none!important;}
 .ticket-spinner {animation:none;}
}

.ticket-quicklink {display:inline-flex;align-self:flex-start;gap:8px;color:var(--off);font-size:.83rem;text-decoration:underline;text-underline-offset:5px;margin:-7px 0 17px;}
.ticket-quicklink[hidden]{display:none;}
/* Mantener la ventana centrada aunque un iframe enfoque un control propio. */
.ticket-modal-v10.active { display:flex; align-items:center; justify-content:center; }
.ticket-modal-v10 .ticket-dialog-v10 { margin:0; flex:0 0 auto; }
@media(max-width:700px) { .ticket-modal-v10 .ticket-dialog-v10 {margin:0;} }
