/* =========================
       Variables de paleta
       ========================= */
    :root{
      --bg:#f7f9fb;
      --card:#ffffff;
      --muted:#7b8794;
      --text:#08203a;
      --accent:#1f5fa8;
      --accent-dark:#15457a;
      --danger:#d6453d;
      --soft:#e6eef6;
      --shadow:0 8px 24px rgba(11,30,45,.06);
      --radius:12px;
      --maxw:1100px;
      font-family:"Montserrat",system-ui,-apple-system,"Segoe UI",Roboto,Arial;
    }

    .middle.clearfix.cols2 {
        text-align: justify;
    }
    /* =========================
       Reset suave y layout
       ========================= */
    *{box-sizing:border-box}
    html,body{height:100%}
    body{
      margin:0;
      background:linear-gradient(180deg,var(--bg),#f1f6fb 60%);
      color:var(--text);
      line-height:1.35;
      padding:20px;
      display:flex;
      justify-content:center;
      -webkit-font-smoothing:antialiased;
    }

    .wrap{
      width:100%;
      max-width:var(--maxw);
    }

    .col-md-4 {
      width: 32.9%;
      display: inline-block;
    }
    .col-md-4 img {
      max-width: 100%;
    }
    /* =========================
       Header
       ========================= */
    header{
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:20px;
      margin-bottom:20px;
    }

    .logo{
      display:flex;
      align-items:center;
      gap:10px;
      font-weight:700;
      color:var(--accent-dark);
    }
    .logo .accent{ color: var(--danger); font-weight:800; margin-left:2px }

    nav{
      display:flex;
      gap:18px;
      align-items:center;
      font-weight:600;
      color:var(--muted);
    }
    nav a{ text-decoration:none; color:inherit; font-size:14px }
    .search{
      margin-left:12px;
    }

    /* Mobile nav button */
    .mobile-menu-btn{
      display:none;
      background:none;
      border:0;
      font-size:20px;
    }

    /* =========================
       Grid principal (home + event)
       ========================= */
    .main{
      display:grid;
      grid-template-columns: 1fr 360px;
      gap:28px;
    }

    /* =========================
       Hero card
       ========================= */
    .hero{
      background:var(--card);
      border-radius:var(--radius);
      padding:22px;
      box-shadow:var(--shadow);
      overflow:hidden;
    }

    .hero-visual {
        width: 100%;
        height: 1000px; /* Tamaño grande y elegante */
        min-height: 600px;
        position: relative;

        /* Ajusta tu imagen */
        background-image: url('https://tuboletoras.mx/images/BannerPag13dic.jpg');
        background-size: cover;
        background-repeat: no-repeat;

        /* Mantiene la parte importante centrada */
        background-position: center top;

        /* Degradado para que el texto sea legible */
        display: flex;
        align-items: center;
        padding: 40px;
    }
    /* placeholder background image: replace with your own */
    .hero-visual::before {
        content: "";
        position: absolute;
        inset: 0;
        background: linear-gradient(
            to right,
            rgba(0, 0, 0, 0.55) 0%,
            rgba(0, 0, 0, 0.35) 40%,
            rgba(0, 0, 0, 0.15) 70%,
            rgba(0, 0, 0, 0.0) 100%
        );
    }
    .hero-content {
        position: relative;
        z-index: 5;
        max-width: 550px;
        color: white;
    }

    .hero-content h1 {
        font-size: 2.8rem;
        font-weight: 900;
        line-height: 1.15;
        margin-bottom: 20px;
        text-shadow: 0 3px 8px rgba(0,0,0,0.5);
    }

    .hero-content .meta {
        font-size: 1.1rem;
        opacity: 0.9;
        margin-bottom: 30px;
    }

    .hero-cta {
        display: flex;
        gap: 16px;
    }

    .btn{
      display:inline-flex;
      align-items:center;
      justify-content:center;
      gap:10px;
      padding:12px 18px;
      border-radius:10px;
      font-weight:800;
      border:0;
      cursor:pointer;
    }
    .btn-primary{
        background: #1a73e8;
        color: white;
        padding: 12px 28px;
        border: none;
        border-radius: 6px;
        cursor: pointer;
        font-size: 1rem;
    }
    .btn-outline{
      background:transparent;
      border:1px solid var(--soft);
      color:var(--accent);
    }

    /* =========================
       Genre cards
       ========================= */
    .genres{
      margin-top:18px;
      display:flex;
      gap:14px;
      align-items:stretch;
    }
    .genre{
      background:var(--card);
      padding:12px;
      border-radius:10px;
      width:33.333%;
      text-align:center;
      box-shadow:var(--shadow);
    }
    .genre img{
      width:100%;
      height:92px;
      object-fit:cover;
      border-radius:8px;
      display:block;
    }
    .genre p{ margin:10px 0 0; font-weight:700; color:var(--text) }

    /* =========================
       Upcoming events list
       ========================= */
    .upcoming{
      margin-top:26px;
      padding:14px;
    }
    .section-title{
      font-size:20px;
      font-weight:800;
      margin-bottom:12px;
      color:var(--text);
    }

    .event-list{ display:flex; flex-direction:column; gap:12px }
    .event-row{
      background:var(--card);
      padding:14px;
      border-radius:10px;
      display:flex;
      align-items:center;
      justify-content:space-between;
      box-shadow:var(--shadow);
    }
    .event-info{ display:flex; gap:12px; align-items:center }
    .event-thumb{
      width:56px;
      height:56px;
      border-radius:8px;
      overflow:hidden;
      flex:0 0 56px;
    }
    .event-thumb img{ width:100%; height:100%; object-fit:cover }
    .event-meta h4{ margin:0; font-size:16px }
    .event-meta span{ color:var(--muted); font-weight:600; font-size:13px }

    .buy-btn{
      background:var(--danger);
      color:white;
      border-radius:10px;
      padding:10px 14px;
      border:0;
      font-weight:800;
      cursor:pointer;
    }

    /* =========================
       Sidebar / carrito
       ========================= */
    aside.sidebar{
      position:relative;
      top:0;
      right:0;
      display:flex;
      flex-direction:column;
      gap:18px;
    }
    .card{
      background:var(--card);
      padding:16px;
      border-radius:var(--radius);
      box-shadow:var(--shadow);
    }
    .cart{
      min-height:120px;
    }
    .cart h3{ margin:0 0 8px; font-size:16px }
    .cart .empty{ color:var(--muted) }

    .cart-list{ display:flex; flex-direction:column; gap:10px; margin-top:8px }
    .cart-item{
      display:flex; align-items:center; justify-content:space-between; gap:8px;
      padding:8px; border-radius:8px; background:linear-gradient(180deg,#fff,#fbfeff)
    }

    .total-row{ display:flex; justify-content:space-between; margin-top:10px; font-weight:800 }

    .checkout-btn{
      margin-top:12px;
      width:100%;
      padding:12px;
      border-radius:10px;
      background:var(--accent);
      color:white;
      border:0;
      font-weight:800;
      cursor:pointer;
    }
    .footer-contact {
        display: flex;
        flex-direction: column;
        align-items: center; /* Centra horizontal */
        justify-content: center;
        margin-top: 30px;
        margin-bottom: 20px;
        text-align: center;
    }

    .footer-contact .logo {
        display: flex;
        flex-direction: column; /* Logo arriba, texto abajo */
        align-items: center;    /* Centra los elementos */
        justify-content: center;
        gap: 5px;
    }

    .footer-icons {
        display: flex;
        justify-content: center;
        margin-top: 10px;
        gap: 20px;
    }

    .footer-icons a {
        font-size: 28px;
        color: #1d4ed8;
        transition: 0.2s;
    }

    .footer-icons a:hover {
        color: #ef4444;
        transform: scale(1.2);
    }

    /* =========================
       Modal (Selector de asientos)
       ========================= */
    .modal{
      position:fixed; inset:0; display:none; align-items:center; justify-content:center;
      background:rgba(4,18,31,0.45); z-index:1200; padding:18px;
    }
    .modal.open{ display:flex }
    .modal-content{
      width:100%; max-width:920px; background:var(--card); border-radius:14px; padding:18px; box-shadow:var(--shadow);
    }
    .modal-header{ display:flex; justify-content:space-between; align-items:center }
    .seat-map{
      margin-top:12px;
      display:grid;
      grid-template-columns: repeat(12, 1fr);
      gap:8px;
    }
    .seat{
      background:#fff;
      border-radius:6px;
      padding:8px;
      text-align:center;
      font-weight:700;
      cursor:pointer;
      border:1px solid #e0e8ef;
    }
    .seat.available:hover{ transform:translateY(-3px) }
    .seat.selected{ 
      background:var(--accent);
      color:#fff;
      border-color:var(--accent-dark);
     }
    .seat.sold{ 
      background:#f1f3f5;
      color:#a8abb0;
      cursor:not-allowed;
      border:1px dashed #ddd; 
    }
    .legend{ display:flex; gap:12px; margin-top:12px; align-items:center }
    .legend span{ display:inline-flex; align-items:center; gap:8px; font-weight:600; color:var(--muted) }
    .legend .sw{ width:18px; height:12px; border-radius:4px; display:inline-block }

    /* =========================
       Checkout form (simplificado)
       ========================= */
    .checkout-form{ display:flex; flex-direction:column; gap:10px; margin-top:12px }
    .input, input, textarea, select{
      padding:10px 12px; border-radius:8px; border:1px solid #e4eef9; background:transparent;
      font-weight:600; color:var(--text);
    }
    .row{ display:flex; gap:10px }
    .row .col{ flex:1 }
    .event-feature {
      width: 90%;
      margin: 20px auto;
      display: grid;
      grid-template-columns: 0.5fr 1.2fr;
      gap: 20px;
      align-items: center;
    }

    .event-image-container, .event-info-container {
        width: 90%;
    }

    .event-image-container img {
        height: 350px;
        object-fit: cover;
        border-radius: 12px;
        box-shadow: 0px 4px 12px rgba(0,0,0,0.1);
    }

    .event-info-container h2 {
        font-size: 2.2rem;
        margin: 0;
    }

    .event-info-container h3 {
        font-size: 1.4rem;
        color: #1a73e8;
        margin-top: 5px;
    }

    .event-meta {
        margin: 15px 0;
        font-weight: 500;
        color: #555;
        line-height: 1.6;
    }

    .event-description {
        margin-bottom: 20px;
        line-height: 1.7;
        color: #444;
        max-width: 500px;
    }
    .btn-primary:hover {
        background: #0d47a1;
    }

    header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
    .logo{display:flex;align-items:center;gap:10px;font-weight:700;color:var(--accent)}
    nav{display:flex;gap:16px;color:var(--muted);font-weight:600}
    nav a{color:inherit;text-decoration:none;font-size:14px}

    /* Layout: main content + sidebar */
    .layout{display:grid;grid-template-columns:1fr 360px;gap:20px}
    @media(max-width:1000px){ .layout{grid-template-columns:1fr} nav{display:none} }

    /* Hero detail */
    .hero{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;padding:0}
    .hero-actions{margin-top:14px;display:flex;gap:12px}

    /* Content area */
    .content{display:flex;gap:20px;padding:18px 0}
    .left{flex:1}
    .right{width:360px;display:flex;flex-direction:column;gap:14px}

    .section-title{font-size:18px;font-weight:800;margin-bottom:10px}

    /* Seating map large */
    .seating{
      margin-top:10px;padding:12px;border-radius:10px;background:linear-gradient(180deg,#fff,#fbfdff);
      display:flex;flex-direction:column;gap:12px;
    }
    .zone-legend{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
    .legend-item{display:flex;gap:8px;align-items:center;font-weight:700;color:var(--muted)}
    .sw{width:20px;height:12px;border-radius:4px;display:inline-block}

    .map{
      display:grid;
      grid-template-columns: repeat(16, 1fr);
      gap:8px;
      padding:8px;
      background:linear-gradient(180deg,#fbfdff,#f8fbff);
      border-radius:8px;
      border:1px solid #eef6ff;
      overflow:auto;
    }
    .seat.small{padding:6px;font-size:13px}
    .seat.sold{background:#f1f3f5;color:#a8abb0;border:1px dashed #e3e6ea;cursor:not-allowed}
    /* Price & info */
    .price-row{display:flex;justify-content:space-between;align-items:center}
    .price{font-weight:900;font-size:18px}

    /* Ticket card in sidebar */
    .ticket-summary{display:flex;flex-direction:column;gap:8px}
    .ticket-list{display:flex;flex-direction:column;gap:8px}
    .ticket-item{display:flex;justify-content:space-between;align-items:center;padding:8px;background:linear-gradient(180deg,#fff,#fbfdff);border-radius:8px}
    .checkout-btn{
      margin-top:8px;
      background:var(--accent);
      color:#fff;
      padding:12px;
      border-radius:10px;
      border:0;
      font-weight:900;
      cursor:pointer;
      width: 25%;
      margin: auto;
    }
    .clear-btn {
      width: 25%;
      padding: 10px;
      border-radius: 8px;
      background: red;
      border: 1px solid #ccc;
      cursor: pointer;
      margin: auto;
    }
    /* info boxes */
    .info-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
    .muted{color:var(--muted)}

    .share-container {
        position: relative;
        display: inline-block;
    }

    .share-menu {
        display: none;
        position: absolute;
        top: 45px;
        right: 0;
        background: #ffffff;
        border: 1px solid #dcdcdc;
        border-radius: 8px;
        box-shadow: 0 4px 8px rgba(0,0,0,0.08);
        padding: 10px;
        z-index: 50;
        min-width: 160px;
    }

    .share-menu a {
        display: block;
        padding: 8px 12px;
        font-size: 14px;
        color: #333;
        text-decoration: none;
        border-radius: 6px;
    }

    .share-menu a:hover {
        background-color: #f3f3f3;
    }

    /* --- FOOTER --- */
    .footer {
      padding: 40px 0;
      margin-top: 50px;
    }
    .footer-content {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
        gap: 20px;
    }
    .footer h3 { margin-bottom: 10px; color: #2a4d8f; }
    .footer ul { 
      list-style: none; 
      margin-block-end: 0px;
      margin-block-start: 0px; 
      padding-inline-start: 0px;
    }
    .footer ul li { margin-bottom: 6px; color: #555; }
    .footer-bottom {
      text-align: center;
      font-size: 14px;
      margin-top: 20px;
      padding-top: 15px;
      border-top: 1px solid #d6dde8;
      color: #777;
    }

    /* SLIDER SECTION */
    .events-slider {
      margin: 50px auto;
    }

    .slider {
      position: relative;
      overflow: hidden;
      border-radius: 14px;
      box-shadow: 0 6px 20px #0001;
    }

    .slides {
      display: flex;
      transition: transform .45s ease;
    }

    .slide {
      min-width: 100%;
      position: relative;
    }

    .slide img {
      width: 100%;
      height: 300px;
      object-fit: cover;
      filter: brightness(0.75);
    }

    .slide-info {
      position: absolute;
      bottom: 25px;
      left: 35px;
      color: white;
    }

    .slide-info h3 {
      font-size: 26px;
      margin-bottom: 10px;
    }

    /* navigation arrows */
    .slider-btn {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      background: #ffffffaa;
      border: none;
      width: 38px;
      height: 38px;
      border-radius: 50%;
      cursor: pointer;
      font-size: 22px;
      color: #333;
      backdrop-filter: blur(4px);
    }

    .slider-btn:hover {
      background: white;
    }

    .slider-btn.prev { left: 10px; }
    .slider-btn.next { right: 10px; }
    /* ===== FORMULARIO REGISTRO ===== */
    .registro-form, #loginForm {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        gap: 16px;
        max-width: 900px;
        margin: 0 auto;
    }

    /* Inputs */
    .registro-form input, #loginForm input {
        width: 100%;
        padding: 14px 16px;
        font-size: 15px;
        border-radius: 10px;
        border: 1px solid #dcdcdc;
        background-color: #f9fbfd;
        transition: all 0.2s ease;
    }

    /* Focus moderno */
    .registro-form input:focus, #loginForm input:focus {
        outline: none;
        border-color: #1e88e5;
        background-color: #ffffff;
        box-shadow: 0 0 0 3px rgba(30, 136, 229, 0.15);
    }

    /* Inputs que deben ocupar toda la fila */
    .registro-form input[name="direccion"], #loginForm input[name="user"],
    .registro-form input[name="email"], #loginForm input[name="email"],
    .registro-form input[name="password"], #loginForm input[name="password"],
    .registro-form input[name="password2"] {
        grid-column: span 2;
    }

    /* Botón */
    .registro-form button, #loginForm button {
        grid-column: span 2;
        padding: 14px;
        font-size: 16px;
        font-weight: 600;
        border-radius: 12px;
        border: none;
        background: linear-gradient(135deg, #1e88e5, #1565c0);
        color: #fff;
        cursor: pointer;
        transition: all 0.2s ease;
        margin: 20px 10px;
    }

    /* Hover botón */
    .registro-form button:hover, #loginForm button:hover {
        background: linear-gradient(135deg, #1565c0, #0d47a1);
        transform: translateY(-1px);
    }

    /* ===== RESPONSIVE ===== */
    @media (max-width: 768px) {
        .registro-form {
            grid-template-columns: 1fr;
        }

        .registro-form input,
        .registro-form button {
            grid-column: span 1;
        }
    }
    /* responsive */
    @media(max-width:480px){
      .hero-visual{height:260px;padding:18px}
      .hero-title{font-size:20px}
      .layout{grid-template-columns:1fr}
      .right{width:100%}
      .map{grid-template-columns: repeat(8,1fr)}
    }
    /* Responsive */
    @media (max-width: 900px) {
        .event-feature {
            grid-template-columns: 1fr;
            text-align: center;
        }

        .event-image-container img {
            height: 450px;
        }

        .event-description {
            margin: auto;
        }
    }

    /* small helpers */
    .small{ font-size:13px }

    /* Overlay del modal */
.rotate-modal {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.45);
  backdrop-filter: blur(4px);
  display: none; /* Se activa cuando está en portrait */
  justify-content: center;
  align-items: center;
  z-index: 999999;
  padding: 20px;
}

/* Tarjeta del modal */
.rotate-card {
  background: #fff;
  padding: 30px 25px;
  border-radius: 16px;
  max-width: 330px;
  text-align: center;
  box-shadow: 0 8px 30px rgba(0,0,0,0.15);
  animation: fadeInUp 0.4s ease;
}

/* Icono grande */
.rotate-icon {
  font-size: 48px;
  margin-bottom: 10px;
  opacity: 0.85;
}

/* Animación modal */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Activarlo automáticamente en portrait */
@media screen and (orientation: portrait) {
  #rotate-warning {
    display: flex;
  }
}

/* ===========================
   Layout responsive para evento
   =========================== */

/* Asegurarnos del contenedor principal */
.wrap > .content,
.content {
  /* si .content ya tenía display:block, esto lo hace flex en desktop */
  display: flex;
  gap: 24px;
  align-items: flex-start;
  /* ocupa el ancho disponible */
  width: 100%;
  box-sizing: border-box;
}

/* columnas: left + right */
.content .left {
  flex: 1 1 0;
  min-width: 0; /* evita overflow por flex items */
  order: 1;
}

/* aside a la derecha en escritorio */
.content aside.right {
  flex: 0 0 320px;       /* ancho fijo deseado en escritorio */
  max-width: 360px;
  order: 2;
}

/* Asegurar que .left y aside no floten (por compatibilidad con estilos antiguos) */
.content .left,
.content aside.right {
  float: none !important;
  width: auto !important;
}

/* Si quieres aside sticky en desktop (opcional) */
@media (min-width: 1000px) {
  .content aside.right .card {
    position: sticky;
    top: 20px;
  }
}
.menu-toggle {
    display: none;
    font-size: 30px;
    background: none;
    color: black;
    border: none;
    cursor: pointer;
}
    /* =========================
       Responsive adjustments
       ========================= */
    @media (max-width:1000px){
      .main,
      .layout{ grid-template-columns:1fr }

      nav{ display:none }
      .mobile-menu-btn{ display:inline-block }
    }
    @media (max-width:768px){
      .hero-visual{ height:75vh; padding:20px }
      .hero-content h1{ font-size:1.9rem }

      .content{ flex-direction:column }
      .right{ width:100% }
    }
    @media (max-width:480px){
      body{ padding:12px }
      .hero-visual{ height:220px }
      .map{ grid-template-columns:repeat(8,1fr) }
    }
/* ======= MOBILE: poner aside ABAJO ======= */
@media (max-width: 899px) {
  .wrap > .content,
  .content {
    display: flex;
    flex-direction: column; /* esto manda aside abajo (left primero) */
    gap: 14px;
  }

  /* left ocupa 100% ancho */
  .content .left {
    order: 1;
    width: 100% !important;
    padding-right: 0;
  }

  /* aside debajo */
  .content aside.right {
    order: 2;
    width: 100% !important;
    max-width: 100%;
  }

  /* ajustar mapa y modal para ocupar ancho */
  #map, #mapModal, .modal-box {
    width: 100% !important;
    max-width: 100% !important;
  }

  /* mejorar espaciado en mobile */
  .mesa-row, .zone-cards .card {
    gap: 12px;
  }
  .footer-content {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 20px;
  }
    .menu-toggle {
        display: block;
    }

    /* Ocultar menú inicialmente */
    .main-menu {
        display: none;
        position: absolute;
        top: 60px;
        right: 0;
        width: 17%;
        background: #f7f8fa;
        padding: 20px;
        border-top: 1px solid #e7eaee;
    }
    .main-menu a {
        padding: 8px;
    } 
    .main-menu ul {
        flex-direction: column;
        text-align: center;
        gap: 15px;
    }

    /* Cuando se activa */
    .main-menu.active {
        display: block;
        z-index: 10000;
    }
}

/* Pequeños ajustes preventivos para evitar estilos previos que rompan */
.content .card { box-sizing: border-box; }