/* Redcliffe booking modal + cart button/toast styles for ds pages (v2 pages dequeue style.css).
   Rules are EXTRACTED VERBATIM from style.css (selectors containing ic-book / ic-modal / .ic-field / .ic-cart-btn / .ic-cart-toast); do not hand-edit.
   The variable block below supplies the legacy --ic-* / --ic2-* tokens those rules read, aligned to the ds palette. */
#ic-book-modal, .ic-cart-toast, .ic-cart-btn { --ic-bg:#fff; --ic-bg-3:#fff; --ic-border:rgba(15,23,32,.08); --ic-border-2:rgba(15,23,32,.14); --ic-ease:cubic-bezier(.4,0,.2,1); --ic-spring:cubic-bezier(.34,1.56,.64,1);
  --ic-font-b:Poppins,system-ui,sans-serif; --ic-font-h:Poppins,system-ui,sans-serif; --ic-font-m:ui-monospace,monospace; --ic-gold-faint:rgba(35,88,220,.09); --ic-vital:#2358DC; --ic-gold:#2358DC;
  --ic-radius-pill:999px; --ic-radius-sm:12px; --ic-radius-xl:32px; --ic-shadow-lg:0 24px 64px rgba(15,23,32,.16); --ic-text-1:#14213d; --ic-text-2:#5b667a; --ic-text-3:#8a93a0;
  --ic2-ink:#14213d; --ic2-blue:#2358DC; --ic2-blue-wash-strong:#dbe6ff; --ic2-blue-wash:#eef3ff; --ic2-font-b:Poppins,system-ui,sans-serif; --ic2-blue-deep:#1b47b8; --ic2-radius-s:10px; --dm-border:#e9edf3; --dm-surface:#fff; --dm-surface2:#f6f8fc; --dm-text:#14213d; }
.ic-pkgdetail-price-card .ic-cart-btn{ width: 100%; justify-content: center; }
/* Floating-label fields */
.ic-field{ position: relative; margin-bottom: 16px; }
.ic-field input, .ic-field textarea{
  width: 100%; box-sizing: border-box; font-family: var(--ic-font-b); font-size: 0.92rem; color: var(--ic-text-1);
  background: var(--ic-bg); border: 1.5px solid var(--ic-border-2); border-radius: var(--ic-radius-sm);
  padding: 18px 14px 8px; outline: none; transition: border-color .2s ease, box-shadow .2s ease;
}
/* textarea has no natural single-line height like input, and needs room below
   the floated-up label even at rest (2 rows) -- .ic-field input's shared
   padding above already reserves the label's space at the TOP; this just
   keeps the box tall enough and matches the site's other text fields' font. */
.ic-field textarea{ min-height: 68px; resize: vertical; font-family: inherit; line-height: 1.4; }
.ic-field input:focus, .ic-field textarea:focus{ border-color: var(--ic-vital); box-shadow: 0 0 0 4px var(--ic-gold-faint); }
.ic-field label{
  position: absolute; left: 15px; top: 15px; font-family: var(--ic-font-b); font-size: 0.92rem; color: var(--ic-text-3);
  pointer-events: none; transition: all .18s var(--ic-ease); background: transparent;
}
.ic-field.has-value label, .ic-field.is-focused label{
  top: 6px; font-size: 0.68rem; font-weight: 700; color: var(--ic-vital); letter-spacing: .01em;
}
.ic-field-pw input{ padding-right: 44px; }
.ic-field-error{ margin: 5px 0 0; font-family: var(--ic-font-b); font-size: 0.74rem; color: #C0392B; min-height: 0; }
.ic-field.has-error input{ border-color: #C0392B; }
/* ── Forgot password modal ── */
.ic-modal{
  position: fixed; inset: 0; z-index: 300; display: flex; align-items: center; justify-content: center;
  background: rgba(15,23,32,.55); backdrop-filter: blur(4px);
  opacity: 0; pointer-events: none; transition: opacity .25s ease; padding: 20px;
}
.ic-modal.is-open{ opacity: 1; pointer-events: auto; }
.ic-modal-panel{
  width: 100%; max-width: 400px; background: var(--ic-bg-3); border-radius: var(--ic-radius-xl);
  padding: 32px 28px; box-shadow: var(--ic-shadow-lg); position: relative;
  transform: scale(.94) translateY(8px); transition: transform .28s var(--ic-spring);
}
.ic-modal.is-open .ic-modal-panel{ transform: scale(1) translateY(0); }
.ic-modal-close{ position: absolute; top: 16px; right: 16px; background: none !important; border: none; cursor: pointer; color: var(--ic-text-3) !important; padding: 6px; }
.ic-modal-close:hover, .ic-modal-close:focus{ background: none !important; color: var(--ic-vital) !important; }
.ic-modal-panel h3{ font-family: var(--ic-font-h); font-size: 1.2rem; font-weight: 800; color: var(--ic-text-1); margin: 0 0 4px; }
.ic-modal-sub{ font-family: var(--ic-font-b); font-size: 0.82rem; color: var(--ic-text-3); margin: 0 0 20px; }
html.dark-mode .ic-field input, html.dark-mode .ic-field textarea{ background: var(--dm-surface) !important; border-color: var(--dm-border) !important; color: var(--dm-text) !important; }
html.dark-mode .ic-field label{ background: transparent !important; }
html.dark-mode .ic-modal-panel{ background: var(--dm-surface) !important; }
html.dark-mode .ic-modal-panel h3{ color: var(--dm-text) !important; }
/* ============================================================
   HOME COLLECTION BOOKING MODAL (page-diagnostics.php, page-all-packages.php)
   Reuses .ic-modal/.ic-modal-panel/.ic-field/.ic-auth-submit -- only
   booking-specific pieces (step layout, location results, slot grid) are
   new. See assets/js/imcure-redcliffe-booking.js.
   ============================================================ */

.ic-book-panel{ max-width: 480px; padding: 30px 26px; max-height: 88vh; overflow-y: auto; }
.ic-book-head{ margin-bottom: 18px; }
.ic-book-eyebrow{ font-family: var(--ic-font-m); font-size: 0.7rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ic-vital); margin: 0 0 4px; }
.ic-book-package-label{ font-family: var(--ic-font-h); font-size: 1.05rem; font-weight: 800; color: var(--ic-text-1); margin: 0; }
.ic-book-step h3{ font-family: var(--ic-font-h); font-size: 1.05rem; font-weight: 800; color: var(--ic-text-1); margin: 0 0 4px; }
.ic-book-loc-input-wrap{ position: relative; margin: 16px 0 10px; }
.ic-book-loc-input-wrap svg{ position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--ic-text-3); pointer-events: none; }
#ic-book-loc-input{
  width: 100%; padding: 12px 14px 12px 40px; border: 1.5px solid var(--ic-border-2); border-radius: var(--ic-radius-sm);
  font-family: var(--ic-font-b); font-size: 0.92rem; background: var(--ic-bg); color: var(--ic-text-1);
}
#ic-book-loc-input:focus{ outline: none; border-color: var(--ic-vital); box-shadow: 0 0 0 4px var(--ic-gold-faint); }
.ic-book-gps-btn{
  display: inline-flex; align-items: center; gap: 7px; background: none !important; border: none; padding: 4px 2px !important;
  font-family: var(--ic-font-b); font-size: 0.84rem; font-weight: 700; color: var(--ic-vital) !important; cursor: pointer;
  margin: 0 0 12px;
}
.ic-book-gps-btn:hover, .ic-book-gps-btn:focus{ text-decoration: underline; background: none !important; }
.ic-book-gps-btn:disabled{ opacity: .6; cursor: default; text-decoration: none; }
.ic-book-gps-btn svg{ flex-shrink: 0; }
.ic-book-gps-btn .ic-book-gps-spin{ animation: ic-book-gps-spin .8s linear infinite; }
@keyframes ic-book-gps-spin{ to { transform: rotate(360deg); } }
.ic-book-loc-results{ display: flex; flex-direction: column; gap: 4px; max-height: 260px; overflow-y: auto; }
.ic-book-loc-result{
  display: flex; flex-direction: column; gap: 2px; text-align: left; padding: 10px 12px; border-radius: var(--ic-radius-sm);
  background: var(--ic-bg) !important; border: 1px solid transparent; cursor: pointer;
}
.ic-book-loc-result:hover, .ic-book-loc-result:focus{ background: var(--ic-gold-faint) !important; border-color: var(--ic-border); }
.ic-book-loc-result strong{ font-family: var(--ic-font-b); font-size: 0.88rem; font-weight: 700; color: var(--ic-text-1); }
.ic-book-loc-result span{ font-family: var(--ic-font-b); font-size: 0.76rem; color: var(--ic-text-3); }
.ic-book-hint{ font-family: var(--ic-font-b); font-size: 0.82rem; color: var(--ic-text-3); padding: 10px 2px; margin: 0; }
.ic-book-addr-hint{ margin: -12px 0 14px; font-style: italic; }
.ic-book-hint-err{ color: #C0392B; }
.ic-book-svc-status{ margin: 14px 0; }
.ic-book-svc-ok, .ic-book-svc-fail{ display: flex; align-items: center; gap: 8px; font-family: var(--ic-font-b); font-size: 0.86rem; font-weight: 600; margin: 0 0 10px; }
.ic-book-svc-ok{ color: #2C7BE5; }
.ic-book-svc-fail{ color: #C0392B; }
.ic-book-secondary-btn{ font-size: 0.82rem !important; padding: 9px 16px !important; }
.ic-book-label{ font-family: var(--ic-font-b); font-size: 0.78rem; font-weight: 700; color: var(--ic-text-2); margin: 14px 0 6px; display: block; }
.ic-book-date-input{
  width: 100%; padding: 11px 14px; border: 1.5px solid var(--ic-border-2); border-radius: var(--ic-radius-sm);
  font-family: var(--ic-font-b); font-size: 0.9rem; background: var(--ic-bg); color: var(--ic-text-1);
}
.ic-book-date-input:focus{ outline: none; border-color: var(--ic-vital); box-shadow: 0 0 0 4px var(--ic-gold-faint); }
.ic-book-slot-section{ margin-top: 6px; }
.ic-book-slot-grid{ display: flex; flex-wrap: wrap; gap: 8px; }
.ic-book-slot{
  padding: 8px 14px; border-radius: var(--ic-radius-pill); border: 1.5px solid var(--ic-border-2);
  background: var(--ic-bg) !important; color: var(--ic-text-2) !important; font-family: var(--ic-font-b); font-size: 0.8rem; font-weight: 600;
  cursor: pointer; transition: all .15s ease;
}
.ic-book-slot:hover:not([disabled]){ border-color: var(--ic-vital); }
.ic-book-slot.is-selected{ background: var(--ic-vital) !important; border-color: var(--ic-vital); color: #fff !important; }
.ic-book-slot[disabled]{ opacity: .4; cursor: not-allowed; text-decoration: line-through; }
.ic-book-actions{ display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 22px; }
.ic-book-back-btn{ font-family: var(--ic-font-b); font-size: 0.85rem; font-weight: 600; color: var(--ic-text-3) !important; background: none !important; border: none; cursor: pointer; padding: 10px 6px; }
.ic-book-back-btn:hover, .ic-book-back-btn:focus{ background: none !important; color: var(--ic-text-1) !important; }
.ic-book-actions .ich-cta-btn, .ic-book-actions .ic-auth-submit{ margin-left: auto; }
.ic-book-actions .ich-cta-btn:disabled{ opacity: .5; cursor: not-allowed; }
.ic-book-summary{ display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0 18px; }
.ic-book-summary-chip{ font-family: var(--ic-font-m); font-size: 0.72rem; font-weight: 600; color: var(--ic-vital); background: var(--ic-gold-faint); padding: 5px 10px; border-radius: var(--ic-radius-pill); }
.ic-book-field-row{ display: grid; grid-template-columns: 0.8fr 1.2fr; gap: 12px; align-items: start; }
.ic-book-gender-row{ display: flex; gap: 14px; margin: 16px 0 16px; align-items: center; height: 46px; }
.ic-book-gender-row label{ display: flex; align-items: center; gap: 6px; font-family: var(--ic-font-b); font-size: 0.85rem; color: var(--ic-text-2); cursor: pointer; }
.ic-book-step-success{ text-align: center; padding: 20px 4px; }
.ic-book-success-icon{
  width: 56px; height: 56px; border-radius: 50%; background: rgba(44,123,229,0.12); color: #2C7BE5;
  display: flex; align-items: center; justify-content: center; margin: 0 auto 16px;
}
.ic-book-step-success h3{ text-align: center; }
.ic-book-step-success .ic-modal-sub{ text-align: center; }
.ic-book-step-success .ich-cta-btn{ margin-top: 8px; }
html.dark-mode #ic-book-loc-input, html.dark-mode .ic-book-date-input{ background: var(--dm-surface) !important; border-color: var(--dm-border) !important; color: var(--dm-text) !important; }
html.dark-mode .ic-book-loc-result{ background: var(--dm-surface2) !important; }
html.dark-mode .ic-book-loc-result strong{ color: var(--dm-text) !important; }
html.dark-mode .ic-book-slot{ background: var(--dm-surface2) !important; border-color: var(--dm-border) !important; color: var(--dm-text) !important; }
html.dark-mode .ic-book-package-label, html.dark-mode .ic-book-step h3{ color: var(--dm-text) !important; }
/* ============================================================
   PROVIDER HUB — PHASE 1
   Plain server-rendered forms (registration + profile edit), zero JS
   dependency by design -- unlike .ic-field (login/signup) this doesn't
   need a "has-value"/"is-focused" JS toggle, so it uses a static
   label-above-input layout, same shape as .ic-dash-vault-field.
   ============================================================ */
.ic-pf-shell{ max-width: 860px; margin: 0 auto; }
/* ============================================================================
   SITEWIDE CART — "Add to Cart" multi-item enquiry (assets/js/imcure-cart.js)
   Not a real checkout (no payment/booking backend anywhere in this codebase)
   -- localStorage cart -> one combined enquiry via the existing lead pipeline.
   Uses the global --ic2-* tokens (declared on :root above, so available on
   every page, not just front-page.php) to stay on-brand without duplicating
   hex values. Loads sitewide but stays invisible until something's in the cart.
   ============================================================================ */
.ic-cart-btn{display:inline-flex;align-items:center;gap:6px;font-family:var(--ic2-font-b,inherit);font-size:.82rem;font-weight:700;color:var(--ic2-blue-deep)!important;background:var(--ic2-blue-wash);border:1px solid var(--ic2-blue-wash-strong);border-radius:var(--ic2-radius-s,8px);padding:9px 14px;cursor:pointer;transition:background .15s ease,border-color .15s ease;}
.ic-cart-btn:hover{background:var(--ic2-blue-wash-strong);border-color:var(--ic2-blue);}
.ic-cart-toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,12px);background:var(--ic2-ink,#0F1720);color:#fff;font-size:.86rem;font-weight:600;padding:12px 20px;border-radius:8px;box-shadow:0 8px 24px rgba(15,23,32,.25);z-index:120;opacity:0;transition:opacity .2s ease,transform .2s ease;pointer-events:none;max-width:min(90vw,380px);text-align:center;}
.ic-cart-toast.is-visible{opacity:1;transform:translate(-50%,0);}

/* honeypot + submit spinner rules (also verbatim from style.css) */
.ic-hp-field{ position: absolute !important; left: -9999px !important; width: 1px; height: 1px; opacity: 0; }
.ic-auth-spinner{ display: none; animation: icAuthSpin .7s linear infinite; }
.ic-auth-submit.is-loading .ic-auth-submit-label{ visibility: hidden; }
.ic-auth-submit.is-loading .ic-auth-spinner{ display: block; position: absolute; }
@keyframes icAuthSpin{ to { transform: rotate(360deg); } }

/* submit button base rules (verbatim from style.css) */
/* Astra's core theme CSS applies a near-black default background/color to any bare
   <button> via higher-specificity selectors (its "Global Color 1", --ast-global-color-1:
   #1a1a1a) — every color/background below is !important, not decorative, or these
   buttons render black text/background instead of the intended green/white. Same fix
   as .ic-hs-edu-header etc. earlier in this file. */
.ic-auth-submit{
  position: relative; width: 100%; display: flex; align-items: center; justify-content: center; gap: 8px;
  font-family: var(--ic-font-b); font-size: 0.92rem; font-weight: 700; color: #fff !important;
  background: var(--ic-vital) !important; border: none; border-radius: var(--ic-radius-pill); padding: 14px;
  cursor: pointer; box-shadow: 0 4px 20px var(--ic-gold-glow); transition: background .2s ease, box-shadow .2s ease, transform .15s ease;
  margin-top: 4px;
}
.ic-auth-submit:hover, .ic-auth-submit:focus{
  background: var(--ic-gold-2) !important; color: #fff !important; box-shadow: 0 6px 28px var(--ic-gold-glow); transform: translateY(-1px);
}
.ic-auth-submit:active{ transform: translateY(0); }
.ic-auth-submit:disabled{ cursor: default; opacity: .85; }
