/* TechCon Booking Pro — Frontend Booking Page */
@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Inter:wght@400;500;600;700&display=swap');

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

body.tcb-booking-body {
  background: #0b0b1c;
  color: #f0f0ff;
  font-family: 'Inter', sans-serif;
  min-height: 100vh;
}

#tcb-booking-root { min-height: 100vh; }

/* ── Layout ──────────────────────────────────────────── */
.tcb-page { max-width: 820px; margin: 0 auto; padding: 48px 20px 80px; }

/* ── Partner Header ──────────────────────────────────── */
.tcb-header { text-align: center; margin-bottom: 40px; }
.tcb-brand { font-family:'Bebas Neue',sans-serif; font-size:.9rem; letter-spacing:4px; color: var(--tc-color,#e61a84); margin-bottom:12px; opacity:.8; }
.tcb-partner-logo { width: 80px; height: 80px; object-fit: contain; border-radius: 12px; border: 1px solid rgba(255,255,255,.1); padding: 8px; background: rgba(255,255,255,.04); margin-bottom: 16px; }
.tcb-partner-name { font-family:'Bebas Neue',sans-serif; font-size: clamp(2rem,6vw,3.5rem); letter-spacing:2px; background: linear-gradient(135deg,#fff 30%, var(--tc-color,#e61a84) 100%); -webkit-background-clip:text; -webkit-text-fill-color:transparent; line-height:1.1; margin-bottom:10px; }
.tcb-partner-bio { color: rgba(240,240,255,.6); max-width: 520px; margin: 0 auto 0; line-height: 1.65; font-size:.95rem; }
.tcb-booking-closed { background: rgba(239,68,68,.12); border:1px solid rgba(239,68,68,.3); border-radius:10px; padding:20px; text-align:center; margin-top:20px; color: #fca5a5; }

/* ── Step indicator ──────────────────────────────────── */
.tcb-steps { display:flex; align-items:center; justify-content:center; gap:0; margin: 32px 0; }
.tcb-step { display:flex; align-items:center; gap:8px; font-size:13px; font-weight:600; color:rgba(240,240,255,.35); transition:color .2s; }
.tcb-step.active { color:#fff; }
.tcb-step.done   { color: var(--tc-color,#e61a84); }
.tcb-step-num { width:28px; height:28px; border-radius:50%; border:2px solid currentColor; display:flex; align-items:center; justify-content:center; font-size:12px; flex-shrink:0; }
.tcb-step.done .tcb-step-num { background: var(--tc-color,#e61a84); border-color: var(--tc-color,#e61a84); color:#fff; }
.tcb-step-sep { width:40px; height:2px; background:rgba(255,255,255,.1); margin:0 8px; }

/* ── Cards ───────────────────────────────────────────── */
.tcb-card { background:rgba(14,6,30,.75); border:1px solid rgba(255,255,255,.08); border-radius:14px; backdrop-filter:blur(14px); padding:28px; margin-bottom:20px; }
.tcb-card h3 { font-size:1.05rem; font-weight:700; margin-bottom:18px; }

/* ── Day tabs ────────────────────────────────────────── */
.tcb-day-tabs { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:20px; }
.tcb-day-tab { padding:9px 22px; border-radius:30px; border:1px solid rgba(255,255,255,.12); background:none; color:rgba(240,240,255,.55); cursor:pointer; font-size:13px; font-weight:600; font-family:'Inter',sans-serif; transition:all .2s; }
.tcb-day-tab:hover { border-color: var(--tc-color,#e61a84); color:#fff; }
.tcb-day-tab.active { background: var(--tc-color,#e61a84); border-color: var(--tc-color,#e61a84); color:#fff; }

/* ── Slot grid ───────────────────────────────────────── */
.tcb-slots-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; }
.tcb-slot-btn { padding:14px 10px; border-radius:10px; border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.03); color:#f0f0ff; cursor:pointer; font-family:'Inter',sans-serif; font-size:13px; font-weight:600; text-align:center; transition:all .2s; }
.tcb-slot-btn:hover  { border-color: var(--tc-color,#e61a84); background:rgba(230,26,132,.08); transform:translateY(-2px); }
.tcb-slot-btn.selected { background: var(--tc-color,#e61a84); border-color: var(--tc-color,#e61a84); color:#fff; box-shadow:0 4px 16px rgba(230,26,132,.35); }
.tcb-no-slots { color:rgba(240,240,255,.4); font-size:.9rem; padding:16px 0; }

/* ── Selected slot pill ──────────────────────────────── */
.tcb-selected-slot-pill { display:inline-flex; align-items:center; gap:10px; background:rgba(230,26,132,.12); border:1px solid rgba(230,26,132,.3); border-radius:30px; padding:8px 18px; font-size:13px; font-weight:600; color: var(--tc-color,#e61a84); margin-bottom:20px; }
.tcb-change-slot { background:none; border:none; color:rgba(240,240,255,.4); cursor:pointer; font-size:12px; margin-left:6px; text-decoration:underline; font-family:'Inter',sans-serif; }
.tcb-change-slot:hover { color:#fff; }

/* ── Form ────────────────────────────────────────────── */
.tcb-form-group { margin-bottom:16px; }
.tcb-form-group label { display:block; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.6px; color:rgba(240,240,255,.5); margin-bottom:6px; }
.tcb-form-group input,
.tcb-form-group textarea { width:100%; padding:11px 14px; background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.1); border-radius:8px; color:#f0f0ff; font-size:14px; font-family:'Inter',sans-serif; outline:none; transition:border-color .2s; }
.tcb-form-group input:focus,
.tcb-form-group textarea:focus { border-color: var(--tc-color,#e61a84); background:rgba(255,255,255,.07); }
.tcb-form-group textarea { min-height:80px; resize:vertical; }
.tcb-form-row { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.tcb-required { color: var(--tc-color,#e61a84); }

/* ── Submit button ───────────────────────────────────── */
.tcb-submit-btn { width:100%; padding:15px; background:linear-gradient(135deg, var(--tc-color,#e61a84), #4e24c0); color:#fff; border:none; border-radius:10px; font-size:1rem; font-weight:700; font-family:'Inter',sans-serif; cursor:pointer; transition:all .2s; margin-top:8px; letter-spacing:.3px; }
.tcb-submit-btn:hover:not(:disabled) { opacity:.9; transform:translateY(-2px); box-shadow:0 8px 24px rgba(230,26,132,.4); }
.tcb-submit-btn:disabled { opacity:.5; cursor:not-allowed; }

/* ── Success screen ──────────────────────────────────── */
.tcb-success { text-align:center; padding:48px 24px; }
.tcb-success-icon { font-size:4rem; margin-bottom:20px; display:block; }
.tcb-success h2 { font-family:'Bebas Neue',sans-serif; font-size:2.5rem; letter-spacing:2px; color:#fff; margin-bottom:12px; }
.tcb-success p { color:rgba(240,240,255,.65); line-height:1.7; max-width:440px; margin:0 auto 24px; }
.tcb-success-box { background:rgba(16,185,129,.1); border:1px solid rgba(16,185,129,.3); border-radius:10px; padding:18px 22px; max-width:380px; margin:0 auto 20px; text-align:left; }
.tcb-success-box .row { display:flex; justify-content:space-between; padding:4px 0; font-size:13px; }
.tcb-success-box .row .k { color:rgba(240,240,255,.5); }
.tcb-success-box .row .v { font-weight:600; }
.tcb-another-btn { display:inline-block; padding:11px 28px; border:1px solid rgba(255,255,255,.15); border-radius:30px; color:rgba(240,240,255,.65); cursor:pointer; background:none; font-family:'Inter',sans-serif; font-size:14px; transition:all .2s; }
.tcb-another-btn:hover { border-color:#fff; color:#fff; }

/* ── Notice ──────────────────────────────────────────── */
.tcb-notice { padding:12px 18px; border-radius:8px; font-size:13.5px; margin-bottom:16px; font-weight:500; animation:tcbFadeIn .3s ease; }
.tcb-notice-error   { background:rgba(239,68,68,.12); border:1px solid rgba(239,68,68,.3); color:#fca5a5; }
.tcb-notice-success { background:rgba(16,185,129,.12); border:1px solid rgba(16,185,129,.3); color:#6ee7b7; }

/* ── No slots empty state ────────────────────────────── */
.tcb-empty-state { text-align:center; padding:40px; color:rgba(240,240,255,.35); font-size:.9rem; }

@keyframes tcbFadeIn { from{opacity:0;transform:translateY(-6px)} to{opacity:1;transform:none} }
@media(max-width:520px){
  .tcb-form-row{grid-template-columns:1fr;}
  .tcb-slots-grid{grid-template-columns:1fr 1fr;}
}

/* v3: standalone /booking/ page + partner listing polish */
html:has(body.tcb-booking-body),
body.tcb-booking-body {
  background:#05050f !important;
  color:#f8f7ff !important;
  margin:0 !important;
}
body.tcb-booking-body::before,
.tcb-standalone-page::before,
.tcb-portal-page::before {
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:-1;
  background:
    radial-gradient(circle at 20% 10%, rgba(230,26,132,.22), transparent 34%),
    radial-gradient(circle at 85% 15%, rgba(78,36,192,.30), transparent 36%),
    linear-gradient(180deg,#070711 0%,#0b0b1c 45%,#05050f 100%);
}
.tcb-standalone-page,
.tcb-portal-page {
  min-height:100vh;
  background:transparent !important;
  color:#f8f7ff !important;
  font-family:'Inter',sans-serif !important;
}
.tcb-main-booking-page { max-width:1180px; padding-top:82px; }
.tcb-main-booking-page .tcb-header { margin-bottom:52px; }
.tcb-main-booking-page .tcb-partner-name { font-size:clamp(2.4rem,7vw,5rem); }
.tcb-main-booking-page .tcb-partner-bio { color:rgba(248,247,255,.72); }
.tcb-partners-dash-grid {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:18px;
  margin-top:28px;
}
.tcb-partner-dash-card {
  min-height:190px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:13px;
  padding:26px 20px;
  border-radius:22px;
  text-decoration:none !important;
  color:#fff !important;
  background:linear-gradient(180deg,rgba(255,255,255,.075),rgba(255,255,255,.028));
  border:1px solid rgba(255,255,255,.10);
  box-shadow:0 28px 70px rgba(0,0,0,.35), inset 0 0 0 1px rgba(255,255,255,.02);
  transition:transform .24s ease,border-color .24s ease,box-shadow .24s ease,background .24s ease;
}
.tcb-partner-dash-card:hover {
  transform:translateY(-6px);
  border-color:var(--pc,#e61a84);
  background:linear-gradient(180deg,rgba(230,26,132,.16),rgba(78,36,192,.08));
  box-shadow:0 34px 80px rgba(0,0,0,.48),0 0 34px color-mix(in srgb,var(--pc,#e61a84) 35%,transparent);
}
.tcb-partner-dash-card img {
  width:72px;
  height:72px;
  border-radius:18px;
  object-fit:contain;
  padding:10px;
  background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.10);
}
.tcb-partner-dash-card .p-name {
  font-size:1.05rem;
  font-weight:850;
  line-height:1.25;
  text-align:center;
}
.tcb-partner-dash-card .p-avail {
  font-size:.82rem;
  font-weight:750;
  color:rgba(255,255,255,.68);
}
.tcb-card { box-shadow:0 24px 70px rgba(0,0,0,.35); }
.tcb-submit-btn { text-decoration:none !important; display:inline-flex; align-items:center; justify-content:center; }
@media(max-width:640px){
  .tcb-main-booking-page{padding-top:46px;}
  .tcb-partners-dash-grid{grid-template-columns:1fr;}
}

.tcb-slot-btn.is-disabled,.tcb-slot-btn:disabled{opacity:.58;cursor:not-allowed;background:rgba(255,255,255,.055)!important;border-color:rgba(255,255,255,.12)!important;color:rgba(255,255,255,.55)!important;transform:none!important;box-shadow:none!important}
.tcb-slot-btn.is-disabled span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#ff9bd1;margin-top:4px;font-weight:800}

/* v23: clearer speaker-specific booking statuses */
.tcb-my-requests-card{margin-bottom:18px;border-color:rgba(230,26,132,.22)!important}
.tcb-help-copy{color:rgba(240,240,255,.55);font-size:13px;margin:4px 0 14px}
.tcb-my-requests-list{display:grid;gap:10px}
.tcb-my-request-row{display:grid;grid-template-columns:minmax(180px,1fr) 2fr;gap:14px;align-items:center;padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.09)}
.tcb-my-request-row strong{display:block;color:#fff;font-size:13px}.tcb-my-request-row span,.tcb-my-request-row small{display:block;color:rgba(240,240,255,.58);font-size:12px;margin-top:3px}.tcb-my-request-row b{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:#fff}
.tcb-my-request-row.pending{border-color:rgba(245,158,11,.35);background:rgba(245,158,11,.08)}
.tcb-my-request-row.approved{border-color:rgba(34,197,94,.35);background:rgba(34,197,94,.08)}
.tcb-my-request-row.declined{border-color:rgba(239,68,68,.45);background:rgba(239,68,68,.10)}
.tcb-my-request-row.cancelled{border-color:rgba(148,163,184,.28);background:rgba(148,163,184,.08)}
.tcb-lock-notice{margin:12px 0 16px;padding:12px 14px;border-radius:14px;background:rgba(239,68,68,.10);border:1px solid rgba(239,68,68,.35);color:#fecaca;font-size:13px;line-height:1.45}
.tcb-slot-btn.status-declined_blocked,.tcb-slot-btn.status-declined_rebook{background:rgba(239,68,68,.13)!important;border-color:rgba(239,68,68,.55)!important;color:#fecaca!important;opacity:1!important}
.tcb-slot-btn.status-declined_blocked span,.tcb-slot-btn.status-declined_rebook span{color:#fca5a5!important}
.tcb-slot-btn.status-pending_self,.tcb-slot-btn.status-day_locked_pending{background:rgba(245,158,11,.12)!important;border-color:rgba(245,158,11,.4)!important;color:#fde68a!important;opacity:.9!important}
.tcb-slot-btn.status-approved_self,.tcb-slot-btn.status-day_locked_approved{background:rgba(34,197,94,.11)!important;border-color:rgba(34,197,94,.42)!important;color:#bbf7d0!important;opacity:.9!important}
@media(max-width:640px){.tcb-my-request-row{grid-template-columns:1fr}.tcb-my-request-row b{margin-top:2px}}

/* v27: cross-partner time conflict statuses */
.tcb-slot-btn.status-time_locked_time_approved,
.tcb-slot-btn.status-time_locked_time_pending{
  background:rgba(59,130,246,.11)!important;
  border-color:rgba(96,165,250,.45)!important;
  color:#bfdbfe!important;
  opacity:.92!important;
}
.tcb-slot-btn.status-time_locked_time_approved span,
.tcb-slot-btn.status-time_locked_time_pending span{
  color:#93c5fd!important;
}
.tcb-slot-btn[title]{position:relative;}
