/* ============================================================
   BONO BUS · MODALES (checkout · login · términos · canje)
   Bottom-sheet en móvil · diálogo centrado en desktop.
   Header sticky con logo de servicio · footer sticky de acciones.
   ============================================================ */

/* panel reestructurado: header / scroll-body / footer */
.bb-modal__panel{display:flex;flex-direction:column;padding:0;overflow:hidden;}
.bb-modal__panel--wide{max-width:720px;}
.bb-sheet{display:flex;flex-direction:column;max-height:inherit;}

/* ---- Header con servicio ---- */
.bb-mhead{position:relative;padding:18px var(--gutter);color:#fff;background:var(--svc,var(--bb-navy-800));
  display:flex;align-items:center;gap:12px;overflow:hidden;flex:0 0 auto;}
.bb-mhead::after{content:"";position:absolute;right:-26px;top:-34px;width:128px;height:128px;border-radius:50%;background:rgba(255,255,255,.09);}
.bb-mhead__logo{background:#fff;border-radius:var(--r-sm);padding:6px 9px;display:flex;align-items:center;flex:0 0 auto;
  box-shadow:0 4px 10px -6px rgba(0,0,0,.4);position:relative;z-index:1;}
.bb-mhead__logo img{height:22px;max-width:120px;object-fit:contain;}
.bb-mhead__txt{position:relative;z-index:1;flex:1;min-width:0;}
.bb-mhead__txt small{display:block;font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;opacity:.85;}
.bb-mhead__txt h3{color:#fff;font-size:var(--fs-h3);font-weight:var(--bb-fw-black);line-height:1.2;margin-top:2px;text-wrap:pretty;}
.bb-mhead__close{position:relative;z-index:1;background:rgba(255,255,255,.18);border:none;width:34px;height:34px;
  border-radius:50%;font-size:17px;color:#fff;flex:0 0 auto;}
.bb-mhead__close:hover{background:rgba(255,255,255,.3);}
.bb-mhead__grab{position:absolute;top:7px;left:50%;transform:translateX(-50%);width:42px;height:4px;border-radius:99px;background:rgba(255,255,255,.4);z-index:2;}
@media (min-width:720px){.bb-mhead__grab{display:none;}}

/* ---- Body scrollable ---- */
.bb-mbody{padding:var(--sp-5) var(--gutter);overflow:auto;flex:1;-webkit-overflow-scrolling:touch;}

/* ---- Footer sticky ---- */
.bb-mfoot{flex:0 0 auto;border-top:1px solid var(--bb-line);background:#fff;padding:14px var(--gutter);
  display:flex;gap:12px;padding-bottom:max(14px,env(safe-area-inset-bottom));}
.bb-mfoot .bb-btn{flex:1;}
.bb-mfoot .bb-btn--back{flex:0 0 auto;}
@media (max-width:480px){.bb-mfoot{flex-direction:column-reverse;}.bb-mfoot .bb-btn--back{width:100%;}}

/* ---- Resumen de compra (confianza) ---- */
.bb-osum{background:var(--bb-blue-100);border:1px solid color-mix(in srgb,var(--bb-blue-700) 18%,#fff);
  border-radius:var(--r-lg);padding:14px 16px;margin-bottom:var(--sp-5);}
.bb-osum__lbl{font-size:var(--fs-xs);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--bb-blue-700);}
.bb-osum__row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-top:8px;}
.bb-osum__row > div:first-child{min-width:0;}
.bb-osum__name{font-weight:800;font-size:var(--fs-sm);color:var(--bb-ink);line-height:1.3;}
.bb-osum__tag{display:inline-flex;align-items:center;gap:6px;background:#fff;border-radius:var(--r-pill);
  padding:3px 10px;font-size:var(--fs-xs);font-weight:800;color:var(--bb-blue-700);margin-top:6px;}
.bb-osum__price{text-align:right;flex:0 0 auto;}
.bb-osum__price b{font-family:var(--bb-font-head);font-weight:900;font-size:var(--fs-h3);color:var(--bb-ink);display:block;}
.bb-osum__price s{font-size:var(--fs-xs);color:var(--bb-faint);}

/* ---- Formulario ---- */
.bb-formgrid{display:grid;grid-template-columns:1fr;gap:14px;}
@media (min-width:560px){.bb-formgrid{grid-template-columns:1fr 1fr;}.bb-formgrid .col-2{grid-column:span 2;}}
.bb-field{display:flex;flex-direction:column;gap:6px;}
.bb-field label{font-size:var(--fs-sm);font-weight:800;color:var(--bb-ink);}
.bb-field label small{font-weight:700;color:var(--bb-faint);font-size:var(--fs-xs);}
.bb-input{border:1.5px solid var(--bb-line);border-radius:var(--r-md);padding:13px 14px;font-family:var(--bb-font-body);
  font-size:var(--fs-body);font-weight:700;color:var(--bb-ink);background:#fff;width:100%;
  transition:border-color var(--dur),box-shadow var(--dur);}
.bb-input::placeholder{color:var(--bb-faint);font-weight:600;}
.bb-input:focus{outline:none;border-color:var(--bb-blue-600);box-shadow:0 0 0 3px rgba(47,138,232,.18);}
.bb-field__err{display:none;font-size:var(--fs-xs);font-weight:800;color:var(--bb-red);align-items:center;gap:5px;}
.bb-field.is-error .bb-input{border-color:var(--bb-red);background:var(--bb-red-100);box-shadow:0 0 0 3px rgba(214,42,52,.12);}
.bb-field.is-error .bb-field__err{display:flex;}

/* ---- Segmento tipo de pago ---- */
.bb-segment{display:flex;gap:8px;background:var(--bb-bg);border-radius:var(--r-md);padding:5px;}
.bb-segment input{position:absolute;opacity:0;pointer-events:none;}
.bb-segment label{flex:1;text-align:center;padding:11px;border-radius:var(--r-sm);font-weight:800;font-size:var(--fs-sm);
  color:var(--bb-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px;transition:all var(--dur);}
.bb-segment input:checked + label{background:#fff;color:var(--bb-blue-700);box-shadow:var(--sh-1);}
.bb-segment input:focus-visible + label{outline:3px solid var(--bb-blue-500);outline-offset:2px;}

/* ---- Bloque seguro (tarjeta) ---- */
.bb-secure{margin-top:var(--sp-5);border:1.5px solid var(--bb-line);border-radius:var(--r-lg);overflow:hidden;}
.bb-secure__bar{display:flex;align-items:center;gap:8px;background:var(--bb-ok-bg);color:#0f6b3f;
  padding:10px 14px;font-size:var(--fs-xs);font-weight:800;}
.bb-secure__bar .lock{flex:0 0 auto;}
.bb-secure__bar .cards{margin-left:auto;display:flex;gap:5px;}
.bb-secure__bar .cards span{background:#fff;border:1px solid var(--bb-line);border-radius:4px;padding:2px 6px;font-size:9px;color:var(--bb-muted);}
.bb-secure__body{padding:14px;display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.bb-secure__body .col-2{grid-column:span 2;}
.bb-secure[hidden]{display:none;}

/* ---- Total destacado ---- */
.bb-total{display:flex;align-items:center;justify-content:space-between;margin-top:var(--sp-5);
  background:var(--bb-ink);color:#fff;border-radius:var(--r-lg);padding:16px 18px;}
.bb-total small{font-size:var(--fs-xs);font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--bb-on-dark-3);}
.bb-total b{font-family:var(--bb-font-head);font-weight:900;font-size:26px;}

/* ---- Checkbox términos ---- */
.bb-check{display:flex;align-items:flex-start;gap:10px;margin-top:var(--sp-5);font-size:var(--fs-sm);font-weight:700;color:var(--bb-muted);}
.bb-check input{width:22px;height:22px;flex:0 0 auto;accent-color:var(--bb-red);margin-top:1px;}
.bb-check a{color:var(--bb-blue-700);font-weight:800;text-decoration:underline;}
.bb-check.is-error{color:var(--bb-red);}

/* ---- Alerta de error global ---- */
.bb-alert{display:none;align-items:center;gap:10px;background:var(--bb-red-100);border:1px solid color-mix(in srgb,var(--bb-red) 30%,#fff);
  color:var(--bb-red-700);border-radius:var(--r-md);padding:12px 14px;font-size:var(--fs-sm);font-weight:800;margin-bottom:var(--sp-4);}
.bb-alert.is-on{display:flex;}

/* ---- Estado procesando ---- */
.bb-spin{width:18px;height:18px;border-radius:50%;border:2.5px solid rgba(255,255,255,.4);border-top-color:#fff;
  animation:bb-spin .7s linear infinite;flex:0 0 auto;}
@keyframes bb-spin{to{transform:rotate(360deg);}}
.bb-btn.is-loading{pointer-events:none;opacity:.92;}
.bb-modal.is-processing .bb-mbody{opacity:.55;pointer-events:none;}

/* ---- Documento (términos / canje) ---- */
.bb-doc__logo{display:flex;justify-content:center;padding:6px 0 18px;}
.bb-doc__logo img{height:40px;max-width:200px;object-fit:contain;}
.bb-doc__intro{font-size:var(--fs-sm);color:var(--bb-muted);text-align:center;margin-bottom:var(--sp-5);}
.bb-doc__intro b{color:var(--bb-ink);}
.bb-doclist{list-style:none;counter-reset:doc;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;}
.bb-doclist li{counter-increment:doc;position:relative;padding-left:40px;font-size:var(--fs-sm);line-height:1.55;color:var(--bb-text);}
.bb-doclist li::before{content:counter(doc);position:absolute;left:0;top:0;width:26px;height:26px;border-radius:50%;
  background:var(--svc,var(--bb-blue-700));color:#fff;font-family:var(--bb-font-head);font-weight:900;font-size:13px;
  display:grid;place-items:center;}
.bb-doclist strong{color:var(--bb-ink);}
.bb-doc__note{margin-top:var(--sp-5);padding:12px 14px;background:var(--bb-bg);border-radius:var(--r-md);
  font-size:var(--fs-xs);color:var(--bb-muted);font-weight:700;}

/* ---- Login ---- */
.bb-login{text-align:center;}
.bb-login__logo{height:32px;margin:4px auto var(--sp-5);}
.bb-login h3{font-size:var(--fs-h2);font-weight:900;color:var(--bb-ink);}
.bb-login p{color:var(--bb-muted);font-size:var(--fs-sm);margin:6px 0 var(--sp-6);}
.bb-login .bb-field{text-align:left;margin-bottom:14px;}
.bb-login__hint{font-size:var(--fs-xs);color:var(--bb-faint);margin-top:var(--sp-4);}
.bb-login__hint a{color:var(--bb-blue-700);font-weight:800;}
