/* AI Guy On The Fly — Obsidian booking theme
   Layered on top of the "darkly" Bootswatch theme + company_color (#C9A96A). */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,300;9..144,500;9..144,600&family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap');

:root, [data-bs-theme="dark"], [data-bs-theme="light"] {
  --ea-bg: #050506;
  --ea-bg-2: #0A0A0D;
  --ea-line: rgba(255,255,255,0.08);
  --ea-line-hot: rgba(255,255,255,0.16);
  --ea-accent: #C9A96A;
  --ea-text: #F3F2EF;
  --ea-text-mid: #A6A4A0;
  --ea-text-muted: #68655F;

  --bs-body-bg: var(--ea-bg);
  --bs-body-color: var(--ea-text);
  --bs-border-color: var(--ea-line);
  --bs-border-radius: 22px;
  --bs-border-radius-lg: 26px;
  --bs-box-shadow-sm: 0 30px 80px rgba(0,0,0,0.55);
}

html, body {
  background: var(--ea-bg) !important;
  color: var(--ea-text) !important;
  font-family: 'Plus Jakarta Sans', sans-serif !important;
}

body {
  background-image:
    radial-gradient(700px 600px at 15% -5%, rgba(201,169,106,0.07), transparent 60%),
    radial-gradient(600px 500px at 100% 30%, rgba(201,169,106,0.04), transparent 60%) !important;
}

/* ---------- Wizard shell ---------- */
#book-appointment-wizard {
  background: var(--ea-bg-2) !important;
  border: 1px solid var(--ea-line);
  border-radius: 28px !important;
  box-shadow: 0 40px 100px rgba(0,0,0,0.6) !important;
}

.frame-title {
  font-family: 'Fraunces', serif !important;
  font-weight: 500 !important;
  color: var(--ea-text) !important;
  letter-spacing: -0.01em;
}

/* ---------- Header ---------- */
#header,
#book-appointment-wizard #header {
  background: linear-gradient(180deg, #0A0A0D 0%, #08080A 100%) !important;
  border-bottom: 1px solid var(--ea-line);
}

#company-logo { display: none !important; }

#company-name {
  font-family: 'Fraunces', serif !important;
  font-weight: 500 !important;
  color: var(--ea-text) !important;
  letter-spacing: -0.01em;
}

#company-name .display-booking-selection {
  font-family: 'Plus Jakarta Sans', sans-serif !important;
  color: var(--ea-text-muted) !important;
}

#steps .book-step {
  background: rgba(255,255,255,0.06) !important;
  transition: all .4s cubic-bezier(.19,1,.22,1) !important;
}

#steps .book-step strong { color: var(--ea-text-muted) !important; }

#book-appointment-wizard .book-step.active-step {
  background: var(--ea-accent) !important;
}

#book-appointment-wizard .book-step.active-step strong {
  color: #0A0A0D !important;
}

/* ---------- Buttons ---------- */
.btn {
  border-radius: 999px !important;
  font-weight: 600 !important;
  transition: all .5s cubic-bezier(.19,1,.22,1) !important;
}

.btn-primary {
  background: var(--ea-accent) !important;
  border-color: var(--ea-accent) !important;
  color: #0A0A0D !important;
}

.btn-primary:hover, .btn-primary:focus {
  filter: brightness(1.1);
  transform: translateY(-1px);
}

.btn-outline-primary {
  border-color: var(--ea-line-hot) !important;
  color: var(--ea-text) !important;
}

.btn-outline-primary:hover {
  background: var(--ea-accent) !important;
  border-color: var(--ea-accent) !important;
  color: #0A0A0D !important;
}

.btn-outline-secondary, .btn-secondary {
  background: transparent !important;
  border-color: var(--ea-line-hot) !important;
  color: var(--ea-text-mid) !important;
  border-radius: 999px !important;
}

/* ---------- Forms ---------- */
.form-select, .form-control {
  background-color: rgba(255,255,255,0.04) !important;
  border: 1px solid var(--ea-line) !important;
  color: var(--ea-text) !important;
  border-radius: 14px !important;
}

.form-select:focus, .form-control:focus {
  border-color: var(--ea-accent) !important;
  box-shadow: 0 0 0 0.2rem rgba(201,169,106,0.18) !important;
}

.form-select option { background-color: #111114; color: var(--ea-text); }

label, .form-label { color: var(--ea-text-mid) !important; }

.form-check-input {
  background-color: rgba(255,255,255,0.06) !important;
  border: 1px solid var(--ea-line-hot) !important;
}
.form-check-input:checked {
  background-color: var(--ea-accent) !important;
  border-color: var(--ea-accent) !important;
}
.form-check-input:focus {
  border-color: var(--ea-accent) !important;
  box-shadow: 0 0 0 0.2rem rgba(201,169,106,0.18) !important;
}
.form-check-label { color: var(--ea-text-mid) !important; }

/* ---------- Available hours ---------- */
#available-hours .available-hour {
  border-radius: 999px !important;
  border-color: var(--ea-line-hot) !important;
  color: var(--ea-text) !important;
}

#book-appointment-wizard #available-hours .selected-hour {
  background-color: var(--ea-accent) !important;
  border-color: var(--ea-accent) !important;
  color: #0A0A0D !important;
}

/* ---------- Calendar (flatpickr) ---------- */
.flatpickr-calendar,
.flatpickr-innerContainer,
.flatpickr-rContainer,
.flatpickr-days,
.dayContainer {
  background: var(--ea-bg-2) !important;
}
.flatpickr-calendar {
  border: 1px solid var(--ea-line) !important;
  box-shadow: 0 30px 80px rgba(0,0,0,0.55) !important;
  border-radius: 18px !important;
}
.flatpickr-day {
  background: transparent !important;
  color: var(--ea-text) !important;
  border-color: transparent !important;
}
.flatpickr-day:hover, .flatpickr-day:focus {
  background: rgba(255,255,255,0.08) !important;
}
.flatpickr-day.selected, .flatpickr-day.selected:hover {
  background: var(--ea-accent) !important;
  border-color: var(--ea-accent) !important;
  color: #0A0A0D !important;
}
.flatpickr-day.today { border-color: var(--ea-accent) !important; }
.flatpickr-day.prevMonthDay, .flatpickr-day.nextMonthDay {
  color: var(--ea-text-muted) !important;
  opacity: .5;
}
.flatpickr-months, .flatpickr-weekdays, .flatpickr-weekdaycontainer { background: var(--ea-bg-2) !important; }
.flatpickr-current-month, .flatpickr-weekday, span.flatpickr-weekday {
  color: var(--ea-text) !important;
  fill: var(--ea-text) !important;
}
.flatpickr-day.flatpickr-disabled, .flatpickr-day.flatpickr-disabled:hover {
  color: var(--ea-text-muted) !important;
  opacity: .35;
  background: transparent !important;
}
.numInputWrapper, .flatpickr-monthDropdown-months {
  background: transparent !important;
  color: var(--ea-text) !important;
}
.flatpickr-prev-month, .flatpickr-next-month { fill: var(--ea-text) !important; }
.flatpickr-prev-month:hover svg, .flatpickr-next-month:hover svg { fill: var(--ea-accent) !important; }

/* ---------- Cards / list items ---------- */
.card, .list-group-item {
  background: rgba(255,255,255,0.03) !important;
  border-color: var(--ea-line) !important;
  color: var(--ea-text) !important;
  border-radius: 16px !important;
}

/* ---------- Footer ---------- */
#frame-footer {
  border-top: 1px solid var(--ea-line) !important;
  background: transparent !important;
}

#frame-footer .footer-powered-by {
  color: var(--ea-text-muted) !important;
  font-size: 11px !important;
  opacity: .55;
}
#frame-footer .footer-powered-by a { color: var(--ea-text-muted) !important; }

#frame-footer .badge {
  background: transparent !important;
  border: 1px solid var(--ea-line) !important;
  color: var(--ea-text-muted) !important;
  font-weight: 500 !important;
  opacity: .7;
}
#frame-footer .backend-link {
  border-color: var(--ea-line) !important;
}
#frame-footer .badge:hover { opacity: 1; border-color: var(--ea-line-hot) !important; }

/* ---------- Back-to-site link ---------- */
#back-to-site {
  position: fixed;
  top: 22px;
  left: 22px;
  z-index: 60;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: 'Fraunces', serif;
  font-size: 14px;
  font-weight: 500;
  color: var(--ea-text);
  text-decoration: none;
  background: rgba(10,10,13,0.6);
  backdrop-filter: blur(20px);
  border: 1px solid var(--ea-line);
  border-radius: 999px;
  padding: 9px 18px 9px 16px;
  transition: all .5s cubic-bezier(.19,1,.22,1);
}
#back-to-site:hover {
  border-color: var(--ea-line-hot);
  color: var(--ea-accent);
  transform: translateX(-2px);
}
@media (max-width: 640px) {
  #back-to-site { top: 12px; left: 12px; font-size: 12px; padding: 7px 14px 7px 12px; }
}

/* ---------- Misc ---------- */
::selection { background: rgba(201,169,106,0.25); }
a { color: var(--ea-accent); }
hr { border-color: var(--ea-line) !important; }
