.sms-booking-section {
  position: relative;
  z-index: 6;
  width: 100%;
  background: #1e2d47;
  color: var(--text);
  font-family: Montserrat, Arial, sans-serif;
}

.sms-booking-section, .sms-booking-section *, .sms-booking-section *::before, .sms-booking-section *::after { box-sizing: border-box; margin: 0; padding: 0; }


.sms-booking-section {
  --rose:#be325a; --coral:#ff7873; --peach:#ffc87d;
  --teal:#00b4aa; --dark-teal:#0a5f64;


  --bg:          #1e2d47;
  --bg2:         #253758;
  --card-bg:     rgba(255,240,215,0.05);
  --card-border: rgba(255,240,215,0.13);
  --input-bg:    rgba(255,240,215,0.07);
  --input-border:rgba(255,240,215,0.28);


  --text:        #fff0d7;
  --text2:       #f5e6c8;
  --muted:       rgba(255,240,215,0.5);


  --bg-grad1:rgba(190,50,90,0.2);
  --bg-grad2:rgba(0,180,170,0.13);
  --bg-grad3:rgba(255,200,125,0.07);


  --calc-bg: linear-gradient(135deg,rgba(26,58,92,.6),rgba(10,95,100,.25));
  --calc-border: rgba(0,180,170,.3);

  --r:14px; --r2:20px;
}








.sms-booking-section.is-light .icon-sun { display:block; }
.sms-booking-section.is-light .icon-moon { display:none; }


.sms-booking-section .wrap { position:relative; z-index:1; max-width:760px; margin:0 auto; padding:3.25rem 1.25rem 3.75rem; }


.sms-booking-section .hdr { text-align:center; margin-bottom:2.5rem; animation:fadeUp .6s ease both; }
.sms-booking-section .brand { font-family:'Montserrat Alternates',sans-serif; font-size:.75rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--peach); margin-bottom:.1rem; }
.sms-booking-section .subname { font-size:.78rem; color:var(--muted); letter-spacing:.06em; margin-bottom:.9rem; }
.sms-booking-section .page-title { font-family:'Montserrat Alternates',sans-serif; font-size:clamp(1.8rem,5vw,2.5rem); font-weight:800; line-height:1.15; color:var(--text); margin-bottom:.4rem; }
.sms-booking-section .page-title span { background:linear-gradient(90deg,var(--coral),var(--peach)); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; }
.sms-booking-section .tagline { font-size:.82rem; color:var(--muted); letter-spacing:.05em; }


.sms-booking-section .prog-bar { display:flex; gap:5px; margin-bottom:.6rem; }
.sms-booking-section .pb { flex:1; height:3px; border-radius:99px; background:var(--card-border); transition:background .35s; }
.sms-booking-section .pb.done   { background:var(--teal); }
.sms-booking-section .pb.active { background:linear-gradient(90deg,var(--coral),var(--peach)); }
.sms-booking-section .prog-labels { display:flex; justify-content:space-between; margin-bottom:2rem; }
.sms-booking-section .prog-labels span { font-size:.67rem; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; }
.sms-booking-section .prog-labels span.al { color:var(--peach); font-weight:700; }


.sms-booking-section .step { display:none; animation:fadeUp .4s ease both; }
.sms-booking-section .step.active { display:block; }


.sms-booking-section .card { background:var(--card-bg); border:1px solid var(--card-border); border-radius:var(--r2); padding:1.6rem 1.75rem; margin-bottom:1.1rem; backdrop-filter:blur(6px); transition:background .35s, border-color .35s; }
.sms-booking-section .card-title { font-size:.67rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--teal); margin-bottom:1.1rem; display:flex; align-items:center; gap:8px; }
.sms-booking-section .card-title::after { content:''; flex:1; height:1px; background:var(--card-border); }


.sms-booking-section .tiles { display:grid; gap:.7rem; }
.sms-booking-section .tiles.c2 { grid-template-columns:1fr 1fr; }
.sms-booking-section .tile { position:relative; cursor:pointer; }
.sms-booking-section .tile input { position:absolute; opacity:0; pointer-events:none; }
.sms-booking-section .tile-body { border:1px solid var(--input-border); border-radius:var(--r); padding:.9rem 1.1rem; transition:all .18s; }
.sms-booking-section .tile:hover .tile-body { border-color:var(--teal); background:rgba(0,180,170,.06); }
.sms-booking-section .tile input:checked ~ .tile-body { border-color:var(--teal); background:rgba(0,180,170,.1); }
.sms-booking-section .tile-label { font-size:.9rem; font-weight:700; color:var(--text); }
.sms-booking-section .tile-sub   { font-size:.75rem; color:var(--muted); margin-top:3px; line-height:1.4; }


.sms-booking-section .toggle-row { display:flex; border:1px solid var(--input-border); border-radius:var(--r); overflow:hidden; }
.sms-booking-section .tog-item { flex:1; cursor:pointer; position:relative; }
.sms-booking-section .tog-item input { position:absolute; opacity:0; pointer-events:none; }
.sms-booking-section .tog-body { padding:.78rem 1rem; text-align:center; font-size:.87rem; font-weight:600; color:var(--muted); border-right:1px solid var(--input-border); transition:all .18s; display:flex; flex-direction:column; align-items:center; justify-content:center; min-height:52px; }
.sms-booking-section .tog-item:last-child .tog-body { border-right:none; }
.sms-booking-section .tog-item input:checked ~ .tog-body { background:rgba(0,180,170,.1); color:var(--teal); }
.sms-booking-section .tog-item.lt input:checked ~ .tog-body { background:rgba(255,200,125,.1); color:var(--peach); }
.sms-booking-section .tog-sub { font-size:.7rem; color:var(--muted); margin-top:3px; font-weight:400; }


.sms-booking-section .pills { display:flex; gap:7px; flex-wrap:wrap; }
.sms-booking-section .pill { cursor:pointer; position:relative; }
.sms-booking-section .pill input { position:absolute; opacity:0; pointer-events:none; }
.sms-booking-section .pill-body { padding:.45rem 1rem; border:1px solid var(--input-border); border-radius:99px; font-size:.8rem; font-weight:600; color:var(--muted); transition:all .18s; white-space:nowrap; }
.sms-booking-section .pill:hover .pill-body { border-color:var(--teal); color:var(--text); }
.sms-booking-section .pill input:checked ~ .pill-body { background:var(--teal); border-color:var(--teal); color:#fff; }
.sms-booking-section.is-light .pill input:checked ~ .pill-body { color:var(--bg); }


.sms-booking-section .calc-box { background:var(--calc-bg); border:1px solid var(--calc-border); border-radius:var(--r2); padding:1.4rem 1.75rem; margin-bottom:1.1rem; transition:all .35s; }
.sms-booking-section .calc-label { font-size:.67rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--teal); margin-bottom:.5rem; }
.sms-booking-section .calc-rows { display:flex; flex-direction:column; gap:5px; margin-bottom:.8rem; }
.sms-booking-section .calc-row { display:flex; justify-content:space-between; font-size:.82rem; }
.sms-booking-section .calc-row .cr-l { color:var(--muted); }
.sms-booking-section .calc-row .cr-v { color:var(--text); font-weight:600; }
.sms-booking-section .calc-divider { height:1px; background:var(--calc-border); margin:.6rem 0; }
.sms-booking-section .calc-total { display:flex; justify-content:space-between; align-items:baseline; }
.sms-booking-section .calc-total .ct-l { font-size:.75rem; color:var(--muted); text-transform:uppercase; letter-spacing:.06em; }
.sms-booking-section .calc-total .ct-p { font-size:2rem; font-weight:800; font-family:'Montserrat Alternates',sans-serif; color:var(--peach); }
.sms-booking-section .calc-pending { font-size:.85rem; color:var(--muted); font-style:italic; }


.sms-booking-section .month-block { margin-bottom:1.25rem; }
.sms-booking-section .month-header { display:flex; align-items:center; gap:10px; cursor:pointer; border:1px solid var(--input-border); border-radius:var(--r2) var(--r2) 0 0; padding:1rem 1.4rem; background:var(--card-bg); transition:all .18s; user-select:none; }
.sms-booking-section .month-header.sel { border-color:var(--peach); background:rgba(255,200,125,.07); }
.sms-booking-section .month-header.no-click { cursor:default; }
.sms-booking-section .month-name { font-family:'Montserrat Alternates',sans-serif; font-size:1rem; font-weight:800; color:var(--text); }
.sms-booking-section .month-meta { font-size:.73rem; color:var(--muted); margin-top:2px; }
.sms-booking-section .mcheck { margin-left:auto; width:22px; height:22px; border:1.5px solid var(--input-border); border-radius:6px; display:flex; align-items:center; justify-content:center; flex-shrink:0; transition:all .18s; }
.sms-booking-section .month-header.sel .mcheck { background:var(--peach); border-color:var(--peach); }
.sms-booking-section .mcheck svg { opacity:0; transition:opacity .18s; }
.sms-booking-section .month-header.sel .mcheck svg { opacity:1; }
.sms-booking-section .weeks-grid { border:1px solid var(--input-border); border-top:none; border-radius:0 0 var(--r2) var(--r2); overflow:hidden; display:grid; grid-template-columns:1fr 1fr; }
.sms-booking-section .week-btn { padding:.9rem 1.1rem; cursor:pointer; border-right:1px solid var(--card-border); border-bottom:1px solid var(--card-border); transition:background .18s; position:relative; background:var(--card-bg); }
.sms-booking-section .week-btn:nth-child(even) { border-right:none; }
.sms-booking-section .week-btn:last-child, .sms-booking-section .week-btn:nth-last-child(2):nth-child(odd) { border-bottom:none; }
.sms-booking-section .week-btn:last-child:nth-child(odd) { grid-column:span 2; border-right:none; }
.sms-booking-section .week-btn:hover { background:rgba(0,180,170,.06); }
.sms-booking-section .week-btn.sel { background:rgba(0,180,170,.1); }
.sms-booking-section .week-btn.sel::before { content:''; position:absolute; top:0; left:0; width:3px; height:100%; background:var(--teal); }
.sms-booking-section .week-btn.sold-out { opacity:.5; cursor:not-allowed; }
.sms-booking-section .week-btn.sold-out::after { content:''; position:absolute; inset:0; background:repeating-linear-gradient(45deg,transparent,transparent 6px,rgba(190,50,90,.06) 6px,rgba(190,50,90,.06) 12px); border-radius:inherit; }
.sms-booking-section .week-btn.sold-out .week-name { color:var(--muted); }
.sms-booking-section .seats-badge {
  display:inline-flex; align-items:center; gap:4px;
  font-size:.68rem; font-weight:700; margin-top:6px;
  padding:2px 7px; border-radius:99px;
  letter-spacing:.03em;
}
.sms-booking-section .seats-badge.ok   { background:rgba(0,180,170,.12); color:var(--teal); border:1px solid rgba(0,180,170,.25); }
.sms-booking-section .seats-badge.low  { background:rgba(255,200,125,.15); color:var(--peach); border:1px solid rgba(255,200,125,.35); }
.sms-booking-section .seats-badge.sold { background:rgba(190,50,90,.12); color:var(--coral); border:1px solid rgba(190,50,90,.25); }
.sms-booking-section .seats-badge svg  { width:9px; height:9px; }
.sms-booking-section .week-dates { font-size:.7rem; color:var(--muted); margin-bottom:3px; }
.sms-booking-section .week-name  { font-size:.87rem; font-weight:700; color:var(--text); margin-bottom:2px; }
.sms-booking-section .week-theme { font-size:.72rem; color:var(--teal); font-style:italic; }
.sms-booking-section .week-price { font-size:.8rem; font-weight:700; color:var(--peach); margin-top:5px; min-height:1.1em; }
.sms-booking-section .sept-note { font-size:.72rem; color:var(--muted); font-style:italic; padding:.6rem 1.1rem; border:1px solid var(--input-border); border-top:none; border-radius:0 0 var(--r2) var(--r2); background:var(--card-bg); }


.sms-booking-section .field-grid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.sms-booking-section .field { display:flex; flex-direction:column; gap:5px; }
.sms-booking-section .field.s2 { grid-column:span 2; }
.sms-booking-section label.fl { font-size:.78rem; font-weight:600; color:var(--text2); letter-spacing:.03em; }
.sms-booking-section label.fl .req { color:var(--coral); }
.sms-booking-section input[type=text],.sms-booking-section input[type=email],.sms-booking-section input[type=tel],.sms-booking-section select,.sms-booking-section textarea {
  background:var(--input-bg); border:1px solid var(--input-border); border-radius:var(--r);
  padding:.72rem 1rem; font-size:.9rem; font-family:'Montserrat',sans-serif;
  color:var(--text); outline:none; width:100%; transition:all .18s;
}
.sms-booking-section input::placeholder,.sms-booking-section textarea::placeholder { color:var(--muted); }
.sms-booking-section input:focus,.sms-booking-section select:focus,.sms-booking-section textarea:focus { border-color:var(--teal); background:rgba(0,180,170,.06); }
.sms-booking-section select option { background:var(--bg); color:var(--text); }
.sms-booking-section textarea { resize:vertical; min-height:80px; line-height:1.6; }
.sms-booking-section input.inv,.sms-booking-section select.inv,.sms-booking-section textarea.inv { border-color:var(--coral) !important; }
.sms-booking-section .field-error { font-size:.72rem; color:var(--coral); display:none; margin-top:-2px; }
.sms-booking-section .field-error.show { display:block; }


.sms-booking-section .pills.required-err .pill-body { border-color:var(--coral); }


.sms-booking-section .check-list { display:flex; flex-direction:column; gap:10px; }
.sms-booking-section .check-item { display:flex; align-items:flex-start; gap:9px; cursor:pointer; }
.sms-booking-section .check-item input[type=checkbox] { width:17px; height:17px; flex-shrink:0; margin-top:2px; accent-color:var(--teal); cursor:pointer; }
.sms-booking-section .check-item span { font-size:.83rem; color:var(--text2); line-height:1.55; }


.sms-booking-section .cond { display:none; margin-top:.75rem; }
.sms-booking-section .cond.vis { display:block; }


.sms-booking-section .legal-link { display:inline-flex; align-items:center; gap:5px; color:var(--teal); font-size:.78rem; font-weight:600; cursor:pointer; text-decoration:none; border-bottom:1px dashed rgba(0,180,170,.4); padding-bottom:1px; transition:opacity .15s; }
.sms-booking-section .legal-link:hover { opacity:.75; }


.sms-booking-section .modal-overlay { display:none; position:fixed; inset:0; z-index:500; background:rgba(0,0,0,.55); backdrop-filter:blur(4px); align-items:center; justify-content:center; padding:1rem; }
.sms-booking-section .modal-overlay.open { display:flex; }
.sms-booking-section .modal-box { background:var(--bg2); border:1px solid var(--card-border); border-radius:var(--r2); max-width:580px; width:100%; max-height:80vh; display:flex; flex-direction:column; box-shadow:0 20px 60px rgba(0,0,0,.4); animation:fadeUp .25s ease both; }
.sms-booking-section .modal-hdr { display:flex; justify-content:space-between; align-items:center; padding:1.2rem 1.5rem; border-bottom:1px solid var(--card-border); }
.sms-booking-section .modal-title { font-family:'Montserrat Alternates',sans-serif; font-size:.95rem; font-weight:800; color:var(--text); }
.sms-booking-section .modal-close { background:none; border:none; color:var(--muted); cursor:pointer; font-size:1.3rem; line-height:1; padding:.2rem; transition:color .15s; }
.sms-booking-section .modal-close:hover { color:var(--text); }
.sms-booking-section .modal-body { padding:1.4rem 1.5rem; overflow-y:auto; font-size:.82rem; color:var(--muted); line-height:1.75; }
.sms-booking-section .modal-body strong { color:var(--text); display:block; margin-bottom:.4rem; }


.sms-booking-section .req-dot { display:inline-block; width:6px; height:6px; border-radius:50%; background:var(--coral); margin-left:4px; vertical-align:middle; margin-bottom:2px; }

.sms-booking-section .card.has-err { border-color:rgba(190,50,90,.5) !important; }

.sms-booking-section .pills.perr .pill-body { border-color:var(--coral); }


.sms-booking-section .sum-box { background:rgba(255,200,125,.07); border:1px solid rgba(255,200,125,.22); border-radius:var(--r); padding:1.1rem 1.4rem; margin-bottom:1rem; }
.sms-booking-section .sum-row { display:flex; justify-content:space-between; padding:5px 0; font-size:.84rem; border-bottom:1px solid var(--card-border); }
.sms-booking-section .sum-row:last-child { border-bottom:none; }
.sms-booking-section .sum-row .sl { color:var(--muted); flex-shrink:0; margin-right:.5rem; }
.sms-booking-section .sum-row .sv { color:var(--text); font-weight:600; text-align:right; }
.sms-booking-section .sum-total { display:flex; justify-content:space-between; align-items:baseline; margin-top:.9rem; padding-top:.9rem; border-top:1px solid rgba(255,200,125,.3); }
.sms-booking-section .sum-total .stl { font-size:.75rem; color:var(--muted); text-transform:uppercase; letter-spacing:.06em; }
.sms-booking-section .sum-total .stp { font-size:1.9rem; font-weight:800; color:var(--peach); font-family:'Montserrat Alternates',sans-serif; }


.sms-booking-section .notice { display:flex; gap:9px; padding:.85rem 1rem; background:rgba(0,180,170,.07); border:1px solid rgba(0,180,170,.2); border-radius:var(--r); margin-bottom:1.1rem; font-size:.78rem; color:var(--muted); line-height:1.55; }
.sms-booking-section .notice svg { flex-shrink:0; color:var(--teal); margin-top:1px; }


.sms-booking-section .btn-row { display:flex; gap:10px; margin-top:1.4rem; }
.sms-booking-section .btn-back { background:transparent; border:1px solid var(--input-border); border-radius:var(--r); padding:.8rem 1.3rem; color:var(--muted); font-family:'Montserrat',sans-serif; font-size:.85rem; font-weight:600; cursor:pointer; transition:all .18s; white-space:nowrap; }
.sms-booking-section .btn-back:hover { color:var(--text); border-color:var(--teal); }
.sms-booking-section .btn-next { flex:1; background:linear-gradient(135deg,var(--rose),var(--coral)); border:none; border-radius:var(--r); padding:.88rem 1.5rem; color:#fff; font-family:'Montserrat',sans-serif; font-size:.93rem; font-weight:700; cursor:pointer; letter-spacing:.02em; transition:filter .18s,transform .1s; }
.sms-booking-section .btn-next:hover { filter:brightness(1.08); }
.sms-booking-section .btn-next:active { transform:scale(.98); }
.sms-booking-section .btn-pay { flex:1; background:linear-gradient(135deg,var(--dark-teal),var(--teal)); border:none; border-radius:var(--r); padding:.95rem 1.5rem; color:#fff; font-family:'Montserrat',sans-serif; font-size:.97rem; font-weight:700; cursor:pointer; letter-spacing:.02em; display:flex; align-items:center; justify-content:center; gap:9px; transition:filter .18s,transform .1s; }
.sms-booking-section .btn-pay:hover { filter:brightness(1.1); }
.sms-booking-section .btn-pay:active { transform:scale(.98); }


.sms-booking-section .success { display:none; text-align:center; padding:3rem 1.5rem; animation:fadeUp .5s ease both; }
.sms-booking-section .success.show { display:block; }
.sms-booking-section .suc-icon { width:68px; height:68px; background:rgba(0,180,170,.13); border:1px solid rgba(0,180,170,.35); border-radius:50%; display:flex; align-items:center; justify-content:center; margin:0 auto 1.4rem; }
.sms-booking-section .success h2 { font-family:'Montserrat Alternates',sans-serif; font-size:1.7rem; font-weight:800; color:var(--text); margin-bottom:.7rem; }
.sms-booking-section .success p  { color:var(--muted); font-size:.9rem; line-height:1.7; max-width:420px; margin:0 auto; }
.sms-booking-section .booking-pay-status { min-height: 1.2rem; margin-top: 1rem; color: var(--muted); font-size: .85rem; text-align: center; }
.sms-booking-section .booking-pay-status.is-error { color: var(--coral); }
.sms-booking-section .sms-booking-load-error { padding: 48px 20px; color: #fff0d7; text-align: center; font: 700 18px/1.4 Montserrat, Arial, sans-serif; }

@keyframes fadeUp { from{opacity:0;transform:translateY(16px)} to{opacity:1;transform:translateY(0)} }

@media(max-width:520px){
  .sms-booking-section .field-grid{grid-template-columns:1fr}
  .sms-booking-section .field.s2{grid-column:span 1}
  .sms-booking-section .tiles.c2{grid-template-columns:1fr}
  .sms-booking-section .weeks-grid{grid-template-columns:1fr}
  .sms-booking-section .week-btn{border-right:none !important; border-bottom:1px solid var(--card-border) !important;}
  .sms-booking-section .week-btn:last-child{border-bottom:none !important;}
  .sms-booking-section .week-btn:last-child:nth-child(odd){grid-column:span 1}
  .sms-booking-section .card{padding:1.25rem 1rem}
  .sms-booking-section .topbar{padding:.6rem 1rem}
}
