/* =====================================================
   EMET BOOK NOW — Stylesheet
   Plugin version 1.0.0 (ported from theme book-now.css v1.2.0)
   ===================================================== */

#amelia-book-now {
  max-width: 760px;
  margin: 40px auto;
  padding: 0 16px 80px;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  color: #1a1a1a;
  box-sizing: border-box;
}
#amelia-book-now *, #amelia-book-now *::before, #amelia-book-now *::after {
  box-sizing: border-box;
}

/* ---- Progress tabs ---- */
.abn-progress { display:flex; align-items:center; justify-content:center; gap:10px; margin-bottom:28px; }
.abn-step { font-size:14px; font-weight:500; color:#999; padding:8px 22px; border-radius:999px; user-select:none; cursor:default; pointer-events:none; }
.abn-step.active { background:#111; color:#fff; }
.abn-arrow { color:#ccc; font-size:18px; }

/* ---- Location bar ---- */
.abn-location-bar { display:flex; align-items:center; gap:10px; background:#fff; border:1px solid #e2e2e2; border-radius:12px; padding:16px 20px; cursor:pointer; margin-bottom:0; box-shadow:0 1px 4px rgba(0,0,0,0.05); transition:box-shadow 0.2s,border-color 0.3s; outline:none; }
.abn-location-bar:hover, .abn-location-bar:focus { box-shadow:0 2px 12px rgba(0,0,0,0.10); }
.abn-location-icon { font-size:18px; flex-shrink:0; }
.abn-location-text { flex:1; font-size:15px; color:#555; }
.abn-location-bar.confirmed .abn-location-text { color:#111; font-weight:600; }
.abn-location-caret { color:#aaa; font-size:18px; flex-shrink:0; }

@keyframes abn-pulse-border {
  0%,100% { border-color:#e2e2e2; box-shadow:0 1px 4px rgba(0,0,0,0.05); }
  50%      { border-color:#c0392b; box-shadow:0 0 0 3px rgba(192,57,43,0.15); }
}
.abn-pulse { animation: abn-pulse-border 0.4s ease 3; }

/* ---- Address panel ---- */
.abn-address-panel { background:#fff; border:1px solid #e2e2e2; border-top:none; border-radius:0 0 12px 12px; padding:24px 24px 20px; margin-bottom:14px; box-shadow:0 4px 16px rgba(0,0,0,0.08); }
.abn-addr-title { font-size:20px; font-weight:700; text-align:center; margin:0 0 6px; }
.abn-addr-sub { text-align:center; color:#c0803a; font-size:14px; margin:0 0 18px; }
.abn-address-input-wrap { display:flex; align-items:center; border:1px solid #ddd; border-radius:10px; padding:0 14px; margin-bottom:12px; background:#fafafa; }
.abn-pin-icon { color:#aaa; margin-right:8px; font-size:16px; }
#abn-address-input { flex:1; border:none; outline:none; font-size:15px; padding:14px 0; background:transparent; font-family:inherit; }
.abn-error { color:#c0392b; font-size:13px; background:#fdf3f2; border:1px solid #f5c6c2; border-radius:8px; padding:10px 14px; margin-bottom:12px; }
.abn-addr-footer { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.abn-returning { color:#666; font-size:13px; text-decoration:underline; }
.abn-skip-btn { background:none; border:none; color:#666; font-size:14px; cursor:pointer; padding:4px 0; font-family:inherit; }
.abn-skip-btn:hover { color:#111; }

/* ---- Categories ---- */
.abn-categories { display:flex; flex-direction:column; gap:10px; margin-top:14px; }
.abn-category-card { display:flex; align-items:center; gap:14px; background:#fff; border:1px solid #e2e2e2; border-radius:12px; padding:16px 20px; cursor:pointer; box-shadow:0 1px 4px rgba(0,0,0,0.04); transition:box-shadow 0.2s, border-color 0.2s; }
.abn-category-card:hover { box-shadow:0 3px 14px rgba(0,0,0,0.10); }
.abn-category-card.open { border-color:#111; }
.abn-category-card img { width:48px; height:48px; object-fit:contain; border-radius:8px; }
.abn-cat-icon-placeholder { width:48px; height:48px; background:#f0f0f0; border-radius:8px; flex-shrink:0; display:block; }
.abn-cat-name { flex:1; font-size:16px; font-weight:600; }
.abn-cat-caret { color:#aaa; font-size:18px; }

/* ---- Service rows ---- */
.abn-services { background:#fff; border:1px solid #e2e2e2; border-top:none; border-radius:0 0 12px 12px; padding:4px 20px; margin-bottom:10px; }
.abn-service-item { display:flex; align-items:flex-start; gap:16px; padding:18px 0; border-bottom:1px solid #f2f2f2; cursor:pointer; transition:background 0.15s; border-radius:8px; }
.abn-service-item:last-child { border-bottom:none; }
.abn-service-item:hover { background:#f5f5f5; margin:0 -8px; padding-left:8px; padding-right:8px; }

/* Selected service row — darker highlight */
.abn-service-item.selected { background:#efefef; margin:0 -8px; padding-left:8px; padding-right:8px; border-left:3px solid #111; }

.abn-svc-info { flex:1; min-width:0; }
.abn-svc-name { font-size:15px; font-weight:700; margin:0 0 3px; }
.abn-svc-price { font-size:14px; color:#444; margin:0 0 5px; }
/* Snippet = first line of description only */
.abn-svc-snippet { font-size:13px; color:#888; margin:0; line-height:1.5; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

.abn-svc-img-wrap { position:relative; flex-shrink:0; }
.abn-svc-img-wrap img { width:80px; height:80px; object-fit:contain; border-radius:8px; background:#f5f5f5; display:block; }
.abn-svc-img-placeholder { width:80px; height:80px; background:#f0f0f0; border-radius:8px; }

/* Add button on image */
.abn-add-btn { position:absolute; bottom:-6px; right:-6px; width:28px; height:28px; border-radius:50%; background:#111; color:#fff; border:none; font-size:20px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; padding:0; transition:background 0.15s; }
.abn-add-btn.selected { background:#444; }

/* ---- Service modal ---- */
.abn-overlay { position:fixed; inset:0; background:rgba(0,0,0,0.45); z-index:99999; display:flex; align-items:center; justify-content:center; padding:16px; }
.abn-modal { background:#fff; border-radius:16px; padding:32px 28px 24px; width:100%; position:relative; box-shadow:0 10px 50px rgba(0,0,0,0.20); }
.abn-svc-modal { max-width:580px; max-height:90vh; overflow-y:auto; }
.abn-modal-close { position:absolute; top:14px; right:16px; background:none; border:none; font-size:20px; cursor:pointer; color:#999; line-height:1; padding:4px; }
.abn-modal-close:hover { color:#111; }

.abn-svc-modal-head { display:flex; align-items:center; gap:16px; margin-bottom:14px; }
.abn-svc-modal-head img { width:90px; height:90px; object-fit:contain; border-radius:10px; background:#f5f5f5; flex-shrink:0; }
.abn-svc-modal-head h2 { font-size:20px; margin:0 0 4px; }
.abn-svc-price { font-size:16px; color:#444; margin:0; }

/* ---- Rich text description (service popup) ---- */
.abn-rich-text { font-size:14px; color:#555; line-height:1.7; margin:0 0 20px; }
.abn-rich-text p { margin:0 0 10px; }
.abn-rich-text p:last-child { margin-bottom:0; }
.abn-rich-text strong, .abn-rich-text b { font-weight:700; color:#222; }
.abn-rich-text em, .abn-rich-text i { font-style:italic; }
.abn-rich-text ul, .abn-rich-text ol { padding-left:20px; margin:8px 0; }
.abn-rich-text li { margin-bottom:4px; }
.abn-rich-text br { display:block; content:''; margin-bottom:6px; }
.abn-rich-text h1,.abn-rich-text h2,.abn-rich-text h3,
.abn-rich-text h4,.abn-rich-text h5,.abn-rich-text h6 { font-weight:700; color:#111; margin:14px 0 6px; }

/* ---- Extras ---- */
.abn-extras-wrap { margin-bottom:18px; }
.abn-extras-title { font-size:14px; font-weight:700; margin:0 0 10px; color:#111; }

.abn-extra-item {
  border:1px solid #e8e8e8;
  border-radius:10px;
  margin-bottom:8px;
  padding:12px 14px;
  transition:border-color 0.15s, background 0.15s;
  cursor:default;
}
.abn-extra-item:hover { border-color:#ccc; background:#fafafa; }

/* Selected extra — darker background */
.abn-extra-item.selected {
  border-color:#111;
  background:#f0f0f0;
}

.abn-extra-main { flex:1; }

/* Row with name, price, more-info button */
.abn-extra-title-row { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:0; }
.abn-extra-name  { font-size:14px; font-weight:600; color:#111; }
.abn-extra-price { font-size:13px; color:#666; }

/* More info button */
.abn-extra-more-btn {
  background: none;
  border: none;
  color: #555;
  font-size: 12px;
  cursor: pointer;
  text-decoration: underline;
  padding: 0;
  font-family: inherit;
  margin-left: 2px;
}
.abn-extra-more-btn:hover { color: #111; }
.abn-extra-more-btn.open { color: #111; }

/* Extra description — hidden by default, shown on "More info" */
.abn-extra-desc {
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid #ebebeb;
  font-size: 13px;
  color: #666;
  line-height: 1.6;
}
.abn-extra-desc p { margin:0 0 6px; }
.abn-extra-desc p:last-child { margin-bottom:0; }
.abn-extra-desc strong { font-weight:700; color:#444; }

.abn-extra-toggle {
  width: 30px; height: 30px;
  border-radius: 50%;
  border: 1.5px solid #ccc;
  background: #fff;
  font-size: 18px;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
  padding: 0;
}
.abn-extra-item.selected .abn-extra-toggle { background:#111; color:#fff; border-color:#111; }

/* ---- Buttons ---- */
.abn-btn-primary { display:block; width:100%; background:#111; color:#fff; border:none; border-radius:999px; padding:16px 24px; font-size:15px; font-weight:600; cursor:pointer; text-align:center; transition:background 0.2s; font-family:inherit; margin-top:6px; }
.abn-btn-primary:hover { background:#333; }
.abn-btn-primary:disabled { background:#aaa; cursor:default; }

.abn-btn-back { display:inline-block; background:none; border:none; color:#999; font-size:14px; cursor:pointer; padding:0; margin-top:20px; font-family:inherit; }
.abn-btn-back:hover { color:#111; }

/* ---- Continue button ---- */
.abn-btn-continue { display:block; width:100%; background:#111; color:#fff; border:none; border-radius:999px; padding:16px 24px; font-size:15px; font-weight:600; cursor:pointer; text-align:center; margin-top:12px; transition:background 0.2s; font-family:inherit; }
.abn-btn-continue:hover { background:#333; }
.abn-btn-continue--disabled { background:#e0e0e0; color:#888; cursor:not-allowed; font-size:13px; }
.abn-btn-continue--disabled:hover { background:#e0e0e0; }

/* ---- Step 2 selected bar ---- */
.abn-sel-bar { display:flex; align-items:center; justify-content:space-between; background:#f8f8f8; border-radius:10px; padding:12px 16px; margin-bottom:18px; font-size:14px; font-weight:600; gap:12px; }
.abn-sel-price { color:#111; font-weight:700; white-space:nowrap; }
.abn-sel-name { flex:1; font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* ---- Calendar (week view) ---- */
.abn-calendar-wrap { background:#fff; border:1px solid #e2e2e2; border-radius:14px; padding:22px; margin-bottom:18px; box-shadow:0 1px 6px rgba(0,0,0,0.04); }
.abn-cal-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; }
.abn-month-label { font-size:16px; font-weight:700; }
.abn-cal-nav { background:none; border:none; font-size:22px; cursor:pointer; color:#666; padding:4px 10px; line-height:1; border-radius:6px; transition:background 0.15s; }
.abn-cal-nav:hover { background:#f0f0f0; color:#111; }
.abn-cal-days-header { display:grid; grid-template-columns:repeat(7,1fr); text-align:center; font-size:13px; color:#999; margin-bottom:8px; font-weight:500; }
.abn-cal-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.abn-cal-day { height:52px; display:flex; align-items:center; justify-content:center; border-radius:10px; font-size:15px; font-weight:500; color:#ccc; cursor:default; pointer-events:none; }
.abn-cal-day.available { background:#f5f5f5; color:#111; cursor:pointer; pointer-events:all; }
.abn-cal-day.available:hover { background:#e8e8e8; }
.abn-cal-day.today { border:2px solid #111; color:#111; }
.abn-cal-day.today.available { background:#f5f5f5; }
.abn-cal-day.selected { background:#111 !important; color:#fff !important; border-color:#111 !important; }
.abn-cal-day.past { color:#ddd; pointer-events:none; }
.abn-cal-day.day-off { color:#ccc; background:#fafafa; cursor:not-allowed; pointer-events:none; opacity:0.45; filter:blur(0.4px); }
#abn-prev-month:disabled { opacity:0.3; cursor:default; }

/* ---- Timeslots ---- */
#abn-timeslots-wrap { margin-top:4px; }
.abn-date-label { font-size:15px; font-weight:700; text-align:center; margin:0 0 4px; }
.abn-time-period { font-size:12px; color:#c0803a; text-align:center; margin:12px 0 6px; font-weight:600; text-transform:uppercase; letter-spacing:0.04em; }
.abn-timeslots { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:16px; }
.abn-time-btn { padding:12px 4px; border:1.5px solid #ddd; border-radius:8px; background:#fff; font-size:13px; cursor:pointer; text-align:center; transition:border-color 0.15s, background 0.15s; font-family:inherit; }
.abn-time-btn:hover { border-color:#111; background:#f8f8f8; }
.abn-time-btn.selected { background:#111; color:#fff; border-color:#111; }
.abn-show-more { display:block; width:100%; text-align:center; color:#777; font-size:13px; text-decoration:underline; cursor:pointer; background:none; border:none; margin-bottom:14px; padding:4px; font-family:inherit; }
.abn-show-more:hover { color:#111; }

/* ---- Summary ---- */
.abn-summary-title { font-size:22px; font-weight:700; margin:0 0 18px; }
.abn-summary-block { background:#fff; border:1px solid #e2e2e2; border-radius:14px; padding:18px 22px; margin-bottom:22px; box-shadow:0 1px 4px rgba(0,0,0,0.04); }
.abn-summary-row { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; padding:11px 0; border-bottom:1px solid #f2f2f2; }
.abn-summary-row:last-child { border-bottom:none; }
.abn-summary-label { font-size:13px; color:#888; flex-shrink:0; }
.abn-summary-value { font-size:14px; font-weight:600; text-align:right; }
.abn-summary-total .abn-summary-label, .abn-summary-total .abn-summary-value { font-size:16px; font-weight:700; color:#111; }
.abn-booking-msg { padding:14px 18px; border-radius:10px; font-size:14px; margin-top:16px; }
.abn-booking-msg.success { background:#e8f8f0; border:1px solid #a3dfc0; color:#1a6b3c; }
.abn-booking-msg.error   { background:#fdf3f2; border:1px solid #f5c6c2; color:#c0392b; }

/* Summary services list */
.abn-sum-services { padding:4px 0; }
.abn-summary-service-row { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; padding:10px 0; border-bottom:1px solid #f2f2f2; }
.abn-sum-svc-name   { font-size:14px; font-weight:600; color:#111; }
.abn-sum-svc-extras { font-size:12px; color:#777; margin-top:3px; }
.abn-sum-svc-price  { font-size:14px; font-weight:600; white-space:nowrap; }

/* ---- Cart bar (multi-service) ---- */
.abn-cart-bar { background:#f0f9f0; border:1.5px solid #a3dfc0; border-radius:12px; padding:14px 18px; margin-top:16px; }
.abn-cart-bar-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; }
.abn-cart-label { font-size:13px; color:#666; font-weight:600; }
.abn-cart-total { font-size:15px; font-weight:700; color:#111; }
.abn-cart-list  { display:flex; flex-direction:column; gap:6px; }
.abn-cart-item  { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; padding:8px 0; border-bottom:1px solid #d4f0e0; }
.abn-cart-item:last-child { border-bottom:none; }
.abn-cart-item-info   { flex:1; }
.abn-cart-item-name   { font-size:14px; font-weight:600; color:#111; }
.abn-cart-item-extras { font-size:12px; color:#777; margin-top:2px; display:block; }
.abn-cart-item-price  { font-size:14px; font-weight:700; color:#111; white-space:nowrap; }

/* Cart change button (kept for compatibility) */
.abn-cart-bar-actions { display:flex; align-items:center; gap:10px; flex-shrink:0; }
.abn-cart-change { background:none; border:1px solid #aaa; border-radius:6px; color:#666; font-size:12px; cursor:pointer; padding:5px 12px; font-family:inherit; transition:border-color 0.15s, color 0.15s; white-space:nowrap; }
.abn-cart-change:hover { border-color:#c0392b; color:#c0392b; }

/* ---- Modal buttons ---- */
.abn-modal-btns { display:flex; flex-direction:column; gap:10px; margin-top:6px; }
.abn-btn-remove-svc { display:block; width:100%; background:#f0f0f0; color:#555; border:none; border-radius:999px; padding:14px 24px; font-size:15px; font-weight:500; cursor:pointer; text-align:center; transition:background 0.2s, color 0.2s; font-family:inherit; }
.abn-btn-remove-svc:hover { background:#fdf3f2; color:#c0392b; }

/* ---- Customer info form ---- */
.abn-payment-form { margin-top:8px; }
.abn-payment-title { font-size:15px; font-weight:700; margin:0 0 6px; color:#111; }
.abn-form-note { font-size:13px; color:#888; margin:0 0 16px; }
.abn-customer-fields { display:flex; flex-direction:column; gap:12px; margin-bottom:20px; }
.abn-field-row { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.abn-field { display:flex; flex-direction:column; gap:5px; }
.abn-field label { font-size:13px; font-weight:600; color:#555; }
.abn-field input { border:1px solid #ddd; border-radius:8px; padding:11px 14px; font-size:14px; font-family:inherit; color:#111; background:#fafafa; transition:border-color 0.15s; outline:none; width:100%; box-sizing:border-box; }
.abn-field input:focus { border-color:#111; background:#fff; }
.abn-field input::placeholder { color:#bbb; }
.abn-btn-pay { font-size:16px; padding:18px 24px; margin-top:4px; }
.abn-payment-notice { font-size:12px; color:#999; text-align:center; margin:10px 0 0; }

/* ---- Loading ---- */
.abn-loading { display:flex; align-items:center; justify-content:center; gap:10px; padding:28px 16px; color:#aaa; font-size:14px; }
.abn-spinner { width:24px; height:24px; border:2.5px solid #e8e8e8; border-top-color:#111; border-radius:50%; animation:abn-spin 0.7s linear infinite; flex-shrink:0; }
@keyframes abn-spin { to { transform:rotate(360deg); } }
.abn-msg-error { color:#c0392b; padding:14px; font-size:14px; }
.abn-msg-info  { color:#888;    padding:14px; font-size:14px; }

/* ---- Responsive ---- */
@media (max-width:540px) {
  #amelia-book-now { margin:20px auto; padding:0 12px 60px; }
  .abn-timeslots { grid-template-columns:repeat(2,1fr); }
  .abn-svc-modal-head { flex-direction:column; text-align:center; }
  .abn-svc-modal-head img { margin:0 auto; }
  .abn-addr-footer { flex-direction:column; align-items:flex-start; }
  .abn-step { padding:7px 14px; font-size:13px; }
  .abn-field-row { grid-template-columns:1fr; }
  .abn-extra-title-row { flex-wrap:wrap; }
}

/* ============================================================
   PAYMENT METHOD SELECTOR + STRIPE CARD ELEMENT  (v1.1.0)
   ============================================================ */

.abn-pm-section { margin: 4px 0 20px; }
.abn-pm-options {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 10px;
  margin-bottom: 14px;
  max-width: 320px;
}
.abn-pm-option {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  background: #fff;
  border: 1.5px solid #ddd;
  border-radius: 12px;
  padding: 14px 10px 12px;
  cursor: pointer;
  font-family: inherit;
  transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}
.abn-pm-option:hover { border-color: #999; }
.abn-pm-option.selected {
  border-color: #111;
  background: #f5f5f5;
  box-shadow: 0 0 0 1px #111 inset;
}
.abn-pm-icon  { font-size: 20px; line-height: 1; }
.abn-pm-label { font-size: 14px; font-weight: 700; color: #111; }
.abn-pm-sub   { font-size: 11px; color: #888; }

/* Stripe card element container */
.abn-stripe-wrap { margin-bottom: 6px; }
.abn-stripe-label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: #333;
  margin: 10px 0 6px;
}
.abn-stripe-card {
  border: 1px solid #ddd;
  border-radius: 8px;
  padding: 14px;
  background: #fafafa;
  transition: border-color 0.15s;
}
.abn-stripe-card:focus-within {
  border-color: #111;
  background: #fff;
}
.abn-stripe-error {
  color: #c0392b;
  font-size: 13px;
  margin-top: 8px;
  padding: 8px 12px;
  background: #fdf3f2;
  border: 1px solid #f5c6c2;
  border-radius: 6px;
}
.abn-stripe-notice {
  font-size: 12px;
  color: #888;
  margin: 10px 0 4px;
  text-align: center;
}

@media (max-width: 540px) {
  .abn-pm-options { max-width: none; }
}

/* ── Group booking attendee stepper (Req. 4) ───────────────── */
.abn-attendees-control { display:inline-flex; align-items:center; gap:12px; }
.abn-att-btn {
  width:28px; height:28px; border-radius:50%; border:1px solid #cfd6dd;
  background:#fff; font-size:18px; line-height:1; cursor:pointer; color:#111;
}
.abn-att-btn:hover { background:#f2f5f8; }
.abn-att-count { min-width:20px; text-align:center; font-weight:600; }

/* ── Add to Calendar buttons (Req. 5) ──────────────────────── */
.abn-calendar-actions { margin:18px 0; text-align:center; }
.abn-calendar-title { font-size:14px; color:#444; margin:0 0 10px; }
.abn-calendar-btns { display:flex; gap:10px; justify-content:center; flex-wrap:wrap; }
.abn-cal-btn {
  display:inline-block; padding:9px 16px; border-radius:8px; text-decoration:none;
  font-size:14px; font-weight:600; border:1px solid #cfd6dd; color:#111; background:#fff;
}
.abn-cal-btn:hover { background:#f2f5f8; }
