/* ===== Booking UI (clean) =============================================== */
*, *::before, *::after { box-sizing: border-box; }

/* ===== Formular (grid) ================================================== */
.tb-form-grid{
  display:grid; grid-template-columns:1fr; gap:16px;
}
@media (min-width:900px){
  /* [pickup] [ + | stops ] [dropoff] */
  .tb-form-grid{ grid-template-columns: 1fr auto 1fr; }
  /* când e deschis stops, lărgim puțin coloana din mijloc */
  .tb-form-grid.has-stops{ grid-template-columns: 1fr 1.2fr 1fr; }
}

/* Câmp generic */
.tb-field{ display:flex; flex-direction:column; gap:6px; }
.tb-field label{ font-size:14px; color:#444; }
.tb-field input, .tb-field select, .tb-field textarea{
  width:100%; height:44px; padding:10px 12px;
  border:1px solid #ddd; border-radius:10px; background:#fff; outline:none;
}
.tb-field textarea{ height:110px; resize:vertical; }
.tb-field input:focus, .tb-field select:focus, .tb-field textarea:focus{
  border-color:#bbb; box-shadow:0 0 4px rgba(245,215,0,.15);
}

/* ===== Input cu buton de geolocalizare ================================ */
.tb-input-row,
.tb-input-with-btn{                     /* suportăm ambele clase */
  display:flex; gap:8px; align-items:center;
}
.tb-input-row input,
.tb-input-with-btn input{ flex:1; }

.tb-geo,
.loc-btn{
  width:44px; height:44px;
  display:inline-flex; align-items:center; justify-content:center;
  border:1px solid #ddd; background:#fff; border-radius:10px;
  cursor:pointer; line-height:1; font-size:18px;
  touch-action: manipulation; -webkit-tap-highlight-color: transparent;
}
.tb-geo:hover, .loc-btn:hover{ filter:brightness(1.02); transform:translateY(-1px); }
.tb-geo:disabled, .loc-btn:disabled{ opacity:.5; cursor:not-allowed; transform:none; }

/* Hint geoloc */
#locStatus, #geoHint{ display:block; margin-top:4px; font-size:12px; color:#666; }

/* ===== „+” & stop-uri în aceeași celulă ================================ */
.tb-addstop{ display:flex; align-items:flex-end; justify-content:center; }
#btnAddStop{
  width:44px; height:44px; padding:0;
  display:inline-flex; align-items:center; justify-content:center;
  border:1px solid #ddd; border-radius:999px; background:#fff;
  cursor:pointer; font-weight:700; font-size:20px; line-height:1;
}
#btnAddStop:hover{ filter:brightness(1.02); transform:translateY(-1px); }

/* containerul pentru stop-uri trăiește în aceeași celulă ca „+” */
.tb-addstop .tb-stops{ display:none; width:100%; }
.tb-addstop.is-open{ align-items:stretch; }
.tb-addstop.is-open #btnAddStop{ display:none; }
.tb-addstop.is-open .tb-stops{ display:block !important; }

/* rând stop */
#stopsWrap .tb-stop-row{
  display:grid; grid-template-columns:1fr auto; gap:8px; margin-top:8px;
}
#stopsWrap .tb-stop-row input{ height:44px; }
#stopsWrap .tb-stop-remove{
  width:44px; height:44px; border:1px solid #ddd; border-radius:10px; background:#fff; cursor:pointer;
}

/* ===== Lista mașini ===================================================== */
.tb-cars{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:1fr; gap:16px; }
@media (min-width:900px){ .tb-cars{ grid-template-columns:1fr 1fr; } }

/* Card mașină: <label for="radio">, tot cardul e clickabil */
.tb-car{
  display:grid; grid-template-columns:24px 120px 1fr; align-items:center;
  gap:14px; padding:14px; border:1px solid #eee; border-radius:14px; background:#fff;
  cursor:pointer; user-select:none; transition:box-shadow .15s, border-color .15s, transform .05s;
}
.tb-car:hover{ transform: translateY(-1px); }
.tb-car input[type="radio"]{ margin:0; }
.tb-car-media{ width:120px; }
.tb-car-media img{ max-width:100%; height:auto; display:block; border-radius:8px; }
.tb-car-title{ font-weight:700; margin:0 0 4px 0; }
.tb-car-sub{ color:#666; font-size:14px; margin:0 0 6px 0; }
.tb-car-est{ font-size:14px; }
.tb-car-est .est{ font-weight:700; }

/* Stare selectată – modern (Chrome/Safari/Edge actuale) */
.tb-car:has(input[type="radio"]:checked){
  border-color:#ffd400;
  box-shadow:0 0 0 3px rgba(255,212,0,.25);
}
/* Fallback (dacă :has nu e suportat) */
.tb-car input[type="radio"]:checked + .tb-car-media + .tb-car-meta .tb-car-title{ color:#000; }
.tb-car input[type="radio"]:checked + .tb-car-media + .tb-car-meta .tb-car-sub{ color:#333; }

/* Badge „Selectat” (fallback vizual) */
.tb-car .tb-badge{
  display:none;
  position:absolute;
  top:10px; right:12px;
  font-size:12px;
  background:#ffd400;
  padding:2px 8px;
  border-radius:999px;
  font-weight:700;
}
.tb-car.is-selected{
  position:relative;
  border-color:#ffd400;
  box-shadow:0 0 0 3px rgba(255,212,0,.25);
}
.tb-car.is-selected .tb-badge{ display:inline-block; }

/* ===== Extra opțiuni ==================================================== */
.tb-extras{ display:flex; flex-direction:column; gap:12px; }
.tb-extra{
  display:flex; align-items:center; gap:12px;
  border:1px solid #eee; border-radius:12px; padding:10px 12px; background:#fff;
}
.tb-extra .muted{ color:#666; font-weight:400; margin-left:6px; }
.tb-extra .qty{ margin-left:auto; display:flex; align-items:center; gap:6px; }
.tb-extra button{
  width:28px; height:28px; border:1px solid #ddd; background:#fff; cursor:pointer; border-radius:6px;
}

/* ===== Total / Hint / Mesaj ============================================ */
#tb-total{ font-size:20px; font-weight:800; padding:10px 0; }
.tb-hint{ color:#666; font-size:13px; margin-top:10px; }
.tb-msg{ margin-top:10px; font-weight:600; }
.tb-msg.ok{ color:#0a7f3f; }
.tb-msg.err{ color:#b00020; }

/* ===== Hartă ============================================================ */
.tb-map-toggle{ display:inline-flex; gap:8px; align-items:center; }
.tb-map{
  width:100%; height:320px;
  border:1px solid #eee; border-radius:12px; margin-top:8px;
  overflow:hidden;
}
/* mobil – oferă spațiu vertical hărții */
@media (max-width:480px){
  .tb-map{ height:50vh; }
}

/* ===== Utilitare grid =================================================== */
.muted{ color:#666 !important; }
.span-all{ grid-column:1 / -1; }
@media (min-width:900px){
  .cars-span-2{ grid-column:1 / 3; }
  .extras-col-3{ grid-column:3 / 4; align-self:start; }
}