
    :root {
      --bg: #f8fafc;
      --card: #ffffff;
      --text: #0f172a;
      --muted: #64748b;
      --border: #e2e8f0;
      --primary: #00a389;
      --primary-gradient: linear-gradient(135deg, #00a389, #38bdf8);
      --accent: #fd3a84;
      --accent-gradient: linear-gradient(135deg, #fd3a84, #ff6aa2);
      --ring: rgba(0, 163, 137, 0.15);
      --cal-low: #ecfdf5;
      --cal-mid: #eef2ff;
      --cal-high: #fff7ed;
      --chip: #f1f5f9;
      --shadow: 0 10px 40px rgba(2, 8, 23, 0.06);
      --shadow-hover: 0 20px 50px rgba(2, 8, 23, 0.12);
      --radius: 16px;
      --radius-lg: 20px;
      --radius-xl: 24px;
    }

    * { box-sizing: border-box; margin: 0; padding: 0; }
    body {
      background: var(--bg); color: var(--text);
      font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
      line-height: 1.6; -webkit-font-smoothing: antialiased;
    }
    .container { max-width: 1280px; margin: 0 auto; padding: 0 24px; }

    /* Tipografía */
    h1, h2, h3, h4 { font-weight: 700; line-height: 1.2; margin-bottom: 16px; color: var(--text); }
    h1 { font-size: clamp(32px, 5vw, 48px); letter-spacing: -0.02em; }
    h2 { font-size: clamp(24px, 3.5vw, 32px); position: relative; padding-bottom: 12px; }
    h2:after {
      content: ''; position: absolute; bottom: 0; left: 0; width: 60px; height: 4px;
      background: var(--primary-gradient); border-radius: 2px;
    }
    h3 { font-size: 20px; margin-bottom: 12px; }
    p { margin-bottom: 16px; color: var(--muted); }

    /* Componentes */
    .btn {
      display: inline-flex; align-items: center; justify-content: center;
      padding: 14px 28px; border-radius: var(--radius); font-weight: 600; font-size: 16px;
      text-align: center; border: none; cursor: pointer; transition: all 0.3s ease;
      text-decoration: none; position: relative; overflow: hidden;
    }
    .btn:before {
      content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%;
      background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent); transition: 0.5s;
    }
    .btn:hover:before { left: 100%; }
    .btn.primary { background: var(--primary-gradient); color: #fff; box-shadow: 0 10px 30px rgba(0,163,137,.25); }
    .btn.primary:hover { transform: translateY(-2px); box-shadow: 0 15px 40px rgba(0,163,137,.35); }
    .btn.cta { background: var(--accent-gradient); color: #fff; box-shadow: 0 10px 30px rgba(253,58,132,.25); }
    .btn.cta:hover { transform: translateY(-2px); box-shadow: 0 15px 40px rgba(253,58,132,.35); }
    .btn.ghost { background: transparent; border: 1px solid var(--border); color: var(--text); }
    .btn.ghost:hover { background: rgba(0,0,0,.03); }

    .card { background: var(--card); border-radius: var(--radius-lg); padding: 24px; box-shadow: var(--shadow); border: 1px solid var(--border); transition: all .3s; }
    .card:hover { box-shadow: var(--shadow-hover); transform: translateY(-2px); }

    .chip { display: inline-flex; align-items: center; gap: 6px; background: var(--chip); border: 1px solid var(--border); border-radius: 100px; padding: 8px 14px; font-size: 14px; font-weight: 500; }
    .stars { color: #f59e0b; }
    .muted { color: var(--muted); }
    .tiny { font-size: 14px; }

    /* Hero */
    .hero { padding: 40px 0; background: var(--card); border-bottom: 1px solid var(--border); }
    .toprow { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 24px; flex-wrap: wrap; }
    .title-wrap { flex: 1; min-width: 300px; }
    .price-cta { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
    .price { font-size: 28px; font-weight: 800; }
    .oldprice { font-size: 16px; color: #ef4444; text-decoration: line-through; margin-right: 8px; }

    /* Galería */
    .gallery {
      display: grid; grid-template-columns: 2fr 1fr 1fr; grid-auto-rows: 240px; gap: 16px;
      border-radius: var(--radius-xl); overflow: hidden;
    }
    .slide { width: 100%; height: 100%; border-radius: var(--radius); overflow: hidden; position: relative; }
    .slide img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
    .slide:hover img { transform: scale(1.05); }
    .big { grid-row: span 2; }

    /* Tabs */
    .tabs {
      position: sticky; top: 0; z-index: 20; background: rgba(248,250,252,.95); backdrop-filter: blur(10px);
      display: flex; gap: 8px; flex-wrap: wrap; margin: 24px 0; padding: 16px 0; border-bottom: 1px solid var(--border);
    }
    .tabs a { padding: 10px 16px; border-radius: var(--radius); background: var(--chip); border: 1px solid var(--border); font-weight: 600; transition: all .3s; }
    .tabs a:hover { background: var(--card); border-color: var(--primary); }

    /* Layout */
    .layout { display: grid; grid-template-columns: 1fr; gap: 24px; margin-top: 24px; }
    @media (min-width:1080px){ .layout { grid-template-columns: 2fr 1fr; } }
    .list { display: grid; gap: 12px; margin: 0; padding-left: 20px; }
    .inline-icons { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 20px; }

    /* Booking */
    .booking { position: sticky; top: 24px; }
    .cal-header { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:16px; }
    .cal-header .month { font-weight:700; font-size:18px; text-transform:capitalize; }
    .cal-nav { display:inline-flex; gap:8px; }
    .cal-nav button { border:1px solid var(--border); background:var(--card); border-radius:var(--radius); padding:8px 12px; cursor:pointer; transition:all .3s; }
    .cal-nav button:hover { border-color:var(--primary); background:var(--chip); }
    .cal-weekdays { display:grid; grid-template-columns:repeat(7,1fr); gap:8px; color:var(--muted); font-weight:600; font-size:14px; text-align:center; margin-bottom:8px; }
    .cal-weekdays>div { padding:8px 0; }
    .calendar { display:grid; grid-template-columns:repeat(7,1fr); gap:8px; }
    .cal-day {
      aspect-ratio:1/1; border:1px solid var(--border); border-radius: var(--radius); background:var(--card); padding:8px;
      display:flex; flex-direction:column; justify-content:space-between; transition:all .3s; cursor:pointer; position:relative;
    }
    .cal-day:hover { transform:translateY(-2px); box-shadow:var(--shadow); }
    .cal-day.low{ background:var(--cal-low); }
    .cal-day.mid{ background:var(--cal-mid); }
    .cal-day.high{ background:var(--cal-high); }
    .cal-day.selected { outline:2px solid var(--primary); outline-offset:-2px; }
    .cal-day[aria-disabled="true"]{ opacity:.4; pointer-events:none; }
    .legend { margin-top:12px; font-size:14px; color:var(--muted); display:flex; gap:12px; flex-wrap:wrap; }
    .legend span { padding:4px 10px; border-radius:100px; border:1px solid var(--border); }

    .times { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-top:16px; }
    .times input { position:absolute; opacity:0; }
    .times label {
      display:block; text-align:center; border:1px solid var(--border); background:var(--card);
      border-radius:var(--radius); padding:12px; cursor:pointer; transition:all .3s;
    }
    .times input:checked + label { border-color:var(--primary); background:var(--cal-low); font-weight:600; }

    .participants-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
    .qtyrow { display:grid; grid-template-columns:1fr auto; align-items:center; gap:12px; }
    .stepper { display:inline-flex; align-items:center; gap:8px; background:var(--chip); border:1px solid var(--border); border-radius:var(--radius); padding:6px; }
    .step-btn { width:36px; height:36px; border:1px solid var(--border); border-radius:var(--radius); background:var(--card); cursor:pointer; transition:all .3s; }
    .step-btn:hover { border-color:var(--primary); }
    .qtyrow input[type=number]{ width:60px; border:0; background:transparent; text-align:center; font-weight:600; }

    .extras { display:grid; gap:12px; margin-top:16px; }
    .extras label {
      display:flex; justify-content:space-between; align-items:center; background:var(--chip);
      border:1px solid var(--border); border-radius:var(--radius); padding:12px 16px; cursor:pointer; transition:all .3s;
    }
    .extras label:hover { background:var(--card); border-color:var(--primary); }

    .paybox{ display:grid; gap:16px; margin-top:16px; }
    .pay-full input{ position:absolute; opacity:0; }
    .pay-full label{
      display:block; width:100%; text-align:center; border:1px solid var(--border); background:var(--card);
      border-radius:var(--radius); padding:16px; font-weight:700; cursor:pointer; transition:all .3s;
    }
    .pay-full input:checked + label { border-color:var(--primary); background:var(--cal-low); }
    .pay-deposits{ display:grid; grid-template-columns:repeat(2,1fr); gap:12px; }
    .pay-deposits input{ position:absolute; opacity:0; }
    .pay-deposits label{
      display:block; text-align:center; border:1px solid var(--border); background:var(--card); border-radius:var(--radius); padding:12px; cursor:pointer; transition:all .3s;
    }
    .pay-deposits input:checked + label{ border-color:var(--primary); background:var(--cal-low); }

    /* Barra flotante */
    .floatbar{
      position:fixed; left:0; right:0; bottom:0; background:var(--card);
      border-top:1px solid var(--border); box-shadow:0 -10px 40px rgba(2,8,23,.08);
      padding:8px 24px; display:flex; justify-content:space-between; align-items:center; gap:24px; z-index:50;
      padding-bottom: calc(env(safe-area-inset-bottom) + 16px);
    }
    .float-total{ font-size:24px; font-weight:800; }
    .float-note{ font-size:14px; color:var(--muted); }
    .page-spacer{ height:100px; }

    /* CTA móvil & Drawer */
    .mobile-cta{
      position:fixed; left:0; right:0;
      bottom: calc(env(safe-area-inset-bottom) + 100px);
      display:none; justify-content:center; z-index:80;
    }
    .mobile-cta .btn{ width:90%; max-width:500px; box-shadow:0 12px 32px rgba(0,0,0,.25); }
    .drawer{ position:fixed; inset:0; background:rgba(2,8,23,.5); display:none; align-items:flex-end; z-index:60; }
    .drawer.open{ display:flex; }
    .drawer .panel{
      background:var(--card); border-top-left-radius:var(--radius-xl); border-top-right-radius:var(--radius-xl);
      width:100%; max-height:90vh; overflow:auto; padding:20px;
      box-shadow:0 -20px 50px rgba(2,8,23,.2);
      padding-bottom: calc(env(safe-area-inset-bottom) + 20px);
    }
    .drawer .bar{ height:5px; width:50px; background:var(--border); border-radius:100px; margin:8px auto 16px; }
    .drawer .booking{
      display:block !important;
      position:static;
      top:auto;
    }
    .drawer .close-drawer-x{
        position: absolute;
        top: 15px;
        right: 20px;
        font-size: 30px;
        cursor: pointer;
        color: var(--muted);
        z-index: 70;
    }
    .ai-btn{
        background: var(--chip);
        border: 1px solid var(--border);
        color: var(--text);
        padding: 12px 16px;
        border-radius: var(--radius);
        cursor: pointer;
        transition: all 0.3s;
        text-align: center;
        font-weight: 600;
    }
    .ai-btn:hover { background: var(--cal-low); }

    /* Clases de utilidad usadas por JS */
    .hide{ display:none !important; }
    .no-scroll{ overflow:hidden; height:100vh; }

    /* Responsive */
    @media (max-width:1080px){
      .desktop-only { display: none; }
      .booking{ display:none; }
      .drawer .booking{ display:block !important; position:static; top:auto; }
      .participants-grid{ grid-template-columns:1fr; }
      .drawer .panel { position: relative; }
      .drawer .close-drawer-x {
          position: absolute;
          top: 15px;
          right: 20px;
          font-size: 30px;
          cursor: pointer;
          color: var(--muted);
          z-index: 70;
      }
      .drawer .bar { margin-top: 0; margin-bottom: 20px; }
    }
    @media (min-width: 769px) {
      .floatbar { display: flex !important; }
      .mobile-cta-btn { display: none !important; }
    }
    @media (max-width:768px){
  .container{ padding:0 16px; }
  .toprow{ flex-direction:column; align-items:flex-start; }
  .price-cta{ width:100%; justify-content:space-between; }
  .big{ grid-row:auto; }
  .tabs{ overflow-x:auto; padding-bottom:12px; }
  .times{ grid-template-columns:repeat(2,1fr); }
  .pay-deposits{ grid-template-columns:1fr; }
  .floatbar{ 
      flex-direction: column;
      gap: 0;
      text-align: center;
      display: flex;
      padding-top: 6px;
      padding-bottom: 6px;
  }
  .floatbar div.float-total,
  .floatbar div.float-note {
      display: none;
  }
  .mobile-cta-btn {
      display: flex;
      justify-content: center;
      width: 100%;
  }
  .mobile-cta-btn .btn {
      width: 90%;
      max-width: 400px;
  }
  .gallery{
    display:flex;
    gap:10px;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    scroll-snap-type:x mandatory;
    padding-bottom:8px
  }
  .slide{
    flex:0 0 auto;
    min-width:88vw;
    height:58vh;
    scroll-snap-align:center;
    border-radius:16px;
    overflow:hidden
  }
  .big{
    grid-row:auto;
    height:58vh
  }
  .gallery::-webkit-scrollbar{display:none}
}
    @media (max-width:480px){
      .times{ grid-template-columns:1fr; }
      .cal-weekdays > div{ font-size:12px; padding:6px 0; }
      .cal-day{ padding:4px; font-size:14px; }
      .gallery{grid-auto-rows:38vw }
    }
    
    .soldout{
        position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
        font-size:12px; font-weight:700; color:#ef4444; text-shadow:1px 1px 2px #fff;
    }
    .modal-overlay {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.5);
        display: none;
        align-items: center;
        justify-content: center;
        z-index: 100;
    }
    .modal-content {
        background: white;
        padding: 24px;
        border-radius: 12px;
        max-width: 500px;
        width: 90%;
        box-shadow: 0 4px 20px rgba(0,0,0,0.2);
    }
    .modal-close {
        float: right;
        font-size: 24px;
        line-height: 1;
        cursor: pointer;
    }
    .loading-spinner {
        border: 4px solid #f3f3f3;
        border-top: 4px solid var(--primary);
        border-radius: 50%;
        width: 40px;
        height: 40px;
        animation: spin 1s linear infinite;
        margin: 20px auto;
    }
    @keyframes spin {
        0% { transform: rotate(0deg); }
        100% { transform: rotate(360deg); }
    }
  