/* FL Estimate Booking (0.2.3-staging, premium polish). Mobile-first, WCAG 2.2 AA: text contrast >= 4.5:1,
   visible focus, >= 44px targets, no horizontal scroll at 320 CSS px / 400% zoom (QA LAY-03).
   Fonts are inherited from the theme (Salient); the only accent is #006a8e (6.0:1 on white). */
.fl-eb{
  /* colour tokens */
  --fl-blue:#006a8e;--fl-blue-dk:#00506b;--fl-blue-tint:#e8f3f7;--fl-blue-tint-2:#d3e8f0;
  --fl-ink:#1d2a33;--fl-muted:#4a5862;--fl-line:#c9d3d9;--fl-line-strong:#6b7a84;--fl-bg:#fff;--fl-surface:#f6f9fa;
  --fl-err:#b00020;--fl-err-bg:#fdecee;--fl-focus:#ffbf47;
  /* type scale (1.2 ratio from 16px) */
  --fl-fs-xs:.8125rem;--fl-fs-sm:.9rem;--fl-fs-base:1rem;--fl-fs-md:1.125rem;--fl-fs-lg:1.35rem;--fl-fs-xl:1.6rem;--fl-fs-2xl:1.95rem;
  --fl-lh-tight:1.2;--fl-lh:1.55;
  /* spacing scale (4px base) */
  --fl-s-1:.25rem;--fl-s-2:.5rem;--fl-s-3:.75rem;--fl-s-4:1rem;--fl-s-5:1.5rem;--fl-s-6:2rem;--fl-s-7:3rem;
  --fl-radius:8px;--fl-radius-pill:999px;--fl-target:44px;--fl-input-h:48px;
  max-width:820px;margin:0 auto;padding:var(--fl-s-4);color:var(--fl-ink);background:var(--fl-bg);
  font-family:inherit;font-size:var(--fl-fs-base);line-height:var(--fl-lh);overflow-wrap:anywhere}
.fl-eb *{box-sizing:border-box}
.fl-eb-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.fl-eb-demo{background:#fff4ce;border:2px solid #8a6d00;color:#3d3000;padding:var(--fl-s-3) var(--fl-s-4);border-radius:var(--fl-radius);margin:0 0 var(--fl-s-4);font-size:var(--fl-fs-sm)}

/* ---------- intro block ---------- */
.fl-eb-intro{margin:0 0 var(--fl-s-5)}
.fl-eb-title{font-size:var(--fl-fs-xl);line-height:var(--fl-lh-tight);margin:0 0 var(--fl-s-2);color:var(--fl-ink)}
.fl-eb-lede{font-size:var(--fl-fs-md);margin:0 0 var(--fl-s-2);color:var(--fl-ink);max-width:40em}
.fl-eb-micro{font-size:var(--fl-fs-sm);color:var(--fl-muted);margin:0 0 var(--fl-s-4)}
.fl-eb-trust{display:flex;flex-wrap:wrap;gap:var(--fl-s-2);list-style:none;padding:0;margin:0}
.fl-eb-pill{display:inline-flex;align-items:center;gap:var(--fl-s-2);min-height:36px;padding:var(--fl-s-1) var(--fl-s-3);
  border-radius:var(--fl-radius-pill);background:var(--fl-blue-tint);color:var(--fl-ink);font-size:var(--fl-fs-sm);font-weight:600;max-width:100%}
.fl-eb-pill .fl-eb-ico{flex:0 0 18px;color:var(--fl-blue)}

/* ---------- progress stepper ---------- */
.fl-eb-steps{display:flex;list-style:none;padding:0;margin:0 0 var(--fl-s-4);counter-reset:s;gap:0}
.fl-eb-steps li{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:var(--fl-s-1);position:relative;
  font-size:var(--fl-fs-xs);color:var(--fl-muted);text-align:center}
.fl-eb-steps li::before{content:"";position:absolute;top:15px;left:-50%;width:100%;height:3px;background:var(--fl-line);z-index:0}
.fl-eb-steps li:first-child::before{display:none}
.fl-eb-steps li.is-done::before,.fl-eb-steps li.is-current::before{background:var(--fl-blue)}
.fl-eb-step-dot{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;
  border:2px solid var(--fl-line-strong);background:#fff;color:var(--fl-muted);font-weight:700;font-size:var(--fl-fs-sm)}
.fl-eb-steps li.is-done .fl-eb-step-dot{background:var(--fl-blue);border-color:var(--fl-blue);color:#fff}
.fl-eb-steps li.is-current .fl-eb-step-dot{border-color:var(--fl-blue);color:var(--fl-blue-dk);box-shadow:0 0 0 4px var(--fl-blue-tint-2)}
.fl-eb-steps li.is-current{color:var(--fl-ink);font-weight:700}
.fl-eb-step-label{overflow-wrap:anywhere;hyphens:auto}
.fl-eb-steptext{font-size:var(--fl-fs-sm);color:var(--fl-muted);margin:0 0 var(--fl-s-1);font-weight:600}

/* ---------- form card ---------- */
.fl-eb-form{background:#fff;border:1px solid var(--fl-line);border-radius:var(--fl-radius);padding:var(--fl-s-4)}
.fl-eb-h{font-size:var(--fl-fs-lg);line-height:var(--fl-lh-tight);margin:0 0 var(--fl-s-4)}
.fl-eb-h:focus{outline:none}
/* 0.2.2 (QA F2): the step heading (tabindex=-1) only shows a ring on :focus-visible (keyboard users after Continue/Back),
   and a subtle one in the theme accent. Beats the refresh CSS [tabindex]:focus-visible{outline:3px ...!important}. */
html body .fl-eb .fl-eb-h:focus:not(:focus-visible){outline:none!important;box-shadow:none!important}
html body .fl-eb .fl-eb-h:focus-visible{outline:2px solid var(--fl-blue)!important;outline-offset:4px!important;box-shadow:none!important;border-radius:2px}
.fl-eb-intro-step{color:var(--fl-muted);margin:calc(-1 * var(--fl-s-2)) 0 var(--fl-s-4)}
.fl-eb-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:0 var(--fl-s-4);align-items:start}
/* 0.2.2: label + control heights are identical in every grid cell, so State and ZIP (and Email | Phone) controls share a top edge;
   a hint sits under its control and never pushes it down. */
.fl-eb .fl-eb-grid input,.fl-eb .fl-eb-grid select{display:block;margin:0;vertical-align:top;height:var(--fl-input-h);line-height:1.25}
.fl-eb .fl-eb-grid .fl-eb-field>label{min-height:1.55em}
.fl-eb-field--hint-below .fl-eb-help{margin:var(--fl-s-1) 0 0}
.fl-eb-field{margin:0 0 var(--fl-s-4);border:0;padding:0;min-width:0}
.fl-eb-field>label,.fl-eb-group legend{display:block;font-weight:600;margin:0 0 var(--fl-s-1);padding:0}
.fl-eb-req{color:var(--fl-err)}
.fl-eb-help{font-size:var(--fl-fs-sm);color:var(--fl-muted);margin:0 0 var(--fl-s-1)}
.fl-eb input[type=text],.fl-eb input[type=tel],.fl-eb input[type=email],.fl-eb select,.fl-eb textarea{
  width:100%;max-width:100%;min-height:var(--fl-input-h);padding:var(--fl-s-2) var(--fl-s-3);font:inherit;font-size:var(--fl-fs-base);
  border:2px solid var(--fl-line-strong);border-radius:6px;background:#fff;color:var(--fl-ink)}
.fl-eb textarea{min-height:96px;resize:vertical}
.fl-eb .fl-eb-field--narrow input,.fl-eb .fl-eb-field--narrow select{max-width:12rem}
.fl-eb .fl-eb-field[data-name=zip] input{max-width:8.5rem}
.fl-eb [aria-invalid=true]{border-color:var(--fl-err)!important}
.fl-eb-err{color:var(--fl-err);font-size:var(--fl-fs-sm);font-weight:600;margin:var(--fl-s-1) 0 0}
.fl-eb-err:not(:empty)::before{content:"\26A0\00a0"}
.fl-eb-err:empty{display:none}
.fl-eb-summary{border:2px solid var(--fl-err);background:var(--fl-err-bg);border-radius:var(--fl-radius);padding:var(--fl-s-3) var(--fl-s-4);margin:0 0 var(--fl-s-4)}
.fl-eb-summary[hidden]{display:none}
.fl-eb-summary-h{font-weight:700;margin:0 0 var(--fl-s-1);color:var(--fl-err)}
.fl-eb-summary-h::before{content:"\26A0\00a0"}
.fl-eb-summary ul{margin:0;padding-left:1.2rem}
.fl-eb-summary a{color:var(--fl-err);display:inline-block;min-height:var(--fl-target);padding:.55rem 0}

/* choices: chips (radio / multi-select) with a clear selected state; consent stays a plain checkbox */
.fl-eb-choice{display:flex;align-items:center;gap:var(--fl-s-3);min-height:var(--fl-target)}
.fl-eb-choice input{width:22px;height:22px;flex:0 0 22px;margin:0;accent-color:var(--fl-blue)}
.fl-eb-choice label{flex:1;padding:var(--fl-s-2) 0;cursor:pointer}
.fl-eb-chips{display:flex;flex-wrap:wrap;gap:var(--fl-s-2)}
.fl-eb-chips legend{width:100%;float:left;margin-bottom:var(--fl-s-2)}
.fl-eb-chips legend+*{clear:both}
.fl-eb-chips .fl-eb-err{flex-basis:100%}
.fl-eb-chip{position:relative;gap:var(--fl-s-2);padding:0 var(--fl-s-4) 0 var(--fl-s-3);border:2px solid var(--fl-line-strong);border-radius:var(--fl-radius-pill);
  background:#fff;min-height:var(--fl-target);max-width:100%;transition:background-color .12s,border-color .12s}
.fl-eb-chip label{padding:var(--fl-s-2) 0;font-weight:500}
.fl-eb-chip:hover{border-color:var(--fl-blue)}
.fl-eb-chip:has(input:checked){border-color:var(--fl-blue);background:var(--fl-blue-tint);box-shadow:inset 0 0 0 1px var(--fl-blue)}
.fl-eb-chip:has(input:checked) label{font-weight:700;color:var(--fl-blue-dk)}
.fl-eb-chip:has(input:focus-visible){outline:3px solid var(--fl-ink);outline-offset:2px;box-shadow:0 0 0 6px var(--fl-focus)}
.fl-eb-chips.has-error .fl-eb-chip{border-color:var(--fl-err)}
.fl-eb-consent{align-items:flex-start}.fl-eb-consent input{margin-top:.6rem}
.fl-eb-privacy{display:flex;gap:var(--fl-s-2);align-items:flex-start;background:var(--fl-surface);border:1px solid var(--fl-line);border-radius:var(--fl-radius);
  padding:var(--fl-s-3);margin:calc(-1 * var(--fl-s-2)) 0 var(--fl-s-4);font-size:var(--fl-fs-sm);color:var(--fl-ink)}
.fl-eb-lock{flex:0 0 18px;width:18px;height:18px;margin-top:2px;border-radius:3px;background:var(--fl-blue);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17 10V7a5 5 0 0 0-10 0v3H5v12h14V10h-2zm-8 0V7a3 3 0 0 1 6 0v3H9z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17 10V7a5 5 0 0 0-10 0v3H5v12h14V10h-2zm-8 0V7a3 3 0 0 1 6 0v3H9z'/%3E%3C/svg%3E") center/contain no-repeat}
.fl-eb-note{background:var(--fl-blue-tint);border-left:4px solid var(--fl-blue);padding:var(--fl-s-3) var(--fl-s-4);border-radius:0 var(--fl-radius) var(--fl-radius) 0;margin:0 0 var(--fl-s-4)}
.fl-eb-hp{position:absolute!important;left:-10000px;width:1px;height:1px;overflow:hidden}

/* buttons */
.fl-eb-actions{display:flex;gap:var(--fl-s-3);flex-wrap:wrap-reverse;margin-top:var(--fl-s-5)}
.fl-eb-btn{min-height:var(--fl-input-h);min-width:var(--fl-target);padding:var(--fl-s-3) var(--fl-s-5);font:inherit;font-size:var(--fl-fs-base);font-weight:700;
  border-radius:6px;border:2px solid var(--fl-blue);background:var(--fl-blue);color:#fff;cursor:pointer;flex:1 1 auto;max-width:100%;white-space:normal}
.fl-eb-btn:hover{background:var(--fl-blue-dk);border-color:var(--fl-blue-dk)}
.fl-eb-btn--ghost{background:#fff;color:var(--fl-blue-dk)}
.fl-eb-btn--ghost:hover{background:var(--fl-blue-tint);color:var(--fl-blue-dk)}
/* 0.2.1: Salient theme-option CSS (salient-dynamic-styles.css) sets
   body[data-form-submit=regular] .container-wrap button[type=submit]:not(.search-widget-btn){padding-top:200px!important;padding-bottom:200px!important}
   (specificity 0,4,2). Override with 0,4,3 + !important; align-items:center stops Back stretching to the row height. */
html body .fl-eb .fl-eb-actions{display:flex!important;flex-direction:column-reverse;flex-wrap:nowrap;align-items:stretch;justify-content:flex-start;gap:var(--fl-s-3)}
html body .fl-eb .fl-eb-actions button.fl-eb-btn.fl-eb-btn{display:inline-flex!important;align-items:center;justify-content:center;box-sizing:border-box!important;
  height:auto!important;min-height:48px!important;padding:12px 24px!important;line-height:1.25!important;width:100%!important;max-width:100%;flex:0 0 auto!important;margin:0!important;
  font-size:var(--fl-fs-base)!important;letter-spacing:normal!important;text-transform:none!important;white-space:normal;text-align:center;
  transition:background-color .15s,border-color .15s,color .15s!important}
.fl-eb-status{font-size:var(--fl-fs-sm);color:var(--fl-muted);margin:var(--fl-s-2) 0 0}
.fl-eb-status:empty{display:none}

/* days + slots */
.fl-eb-days{display:flex;flex-wrap:wrap;gap:var(--fl-s-2);padding:var(--fl-s-1) 0 var(--fl-s-3);margin-bottom:var(--fl-s-2);max-width:100%}
.fl-eb-day{flex:0 0 auto;min-height:var(--fl-target);padding:var(--fl-s-2) var(--fl-s-3);border:2px solid var(--fl-line-strong);background:#fff;color:var(--fl-ink);
  border-radius:var(--fl-radius);cursor:pointer;font:inherit;font-size:var(--fl-fs-sm);font-weight:600;max-width:100%;white-space:normal}
.fl-eb-day:hover{border-color:var(--fl-blue)}
.fl-eb-day[aria-pressed=true]{border-color:var(--fl-blue);background:var(--fl-blue);color:#fff}
.fl-eb-slots legend{font-weight:600;margin-bottom:var(--fl-s-2)}
.fl-eb-slotgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--fl-s-2)}
.fl-eb-slot{position:relative}
.fl-eb-slot input{position:absolute;opacity:0;width:1px;height:1px}
.fl-eb-slot label{display:flex;align-items:center;justify-content:center;gap:var(--fl-s-1);min-height:var(--fl-input-h);padding:var(--fl-s-2);
  border:2px solid var(--fl-line-strong);border-radius:var(--fl-radius);cursor:pointer;font-weight:600;text-align:center;background:#fff}
.fl-eb-slot label:hover{border-color:var(--fl-blue)}
.fl-eb-slot input:checked+label{border-color:var(--fl-blue);background:var(--fl-blue);color:#fff}
.fl-eb-slot input:checked+label::before{content:"\2713"}
.fl-eb-slot input:focus-visible+label{outline:3px solid var(--fl-ink);outline-offset:2px;box-shadow:0 0 0 6px var(--fl-focus)}

/* review + done */
.fl-eb-review{display:grid;grid-template-columns:7rem minmax(0,1fr);gap:var(--fl-s-2) var(--fl-s-4);margin:0}
.fl-eb-review dt{font-weight:700;color:var(--fl-muted)}.fl-eb-review dd{margin:0;overflow-wrap:anywhere}
.fl-eb-done{padding:var(--fl-s-5);border:2px solid var(--fl-blue);border-radius:var(--fl-radius);background:#fff}
.fl-eb-done:focus{outline:3px solid var(--fl-ink);outline-offset:2px}

/* links + focus */
.fl-eb a{color:var(--fl-blue-dk);text-decoration:underline;text-underline-offset:2px}
.fl-eb a,.fl-eb button,.fl-eb input,.fl-eb select,.fl-eb textarea{outline-offset:2px}
.fl-eb a:focus-visible,.fl-eb button:focus-visible,.fl-eb input:focus-visible,.fl-eb select:focus-visible,.fl-eb textarea:focus-visible{
  outline:3px solid var(--fl-ink);box-shadow:0 0 0 6px var(--fl-focus)}
.fl-eb-fallback a{display:inline-block;min-height:var(--fl-target);padding:.6rem 0}
.fl-eb-contact{margin:var(--fl-s-4) 0 0;color:var(--fl-muted)}
.fl-eb-contact a{display:inline-block;min-height:var(--fl-target);padding:.6rem 0}

/* small phones (QA LAY-03: 320 CSS px and 400% zoom) */
@media (max-width:360px){.fl-eb{padding:var(--fl-s-2)}.fl-eb-form{padding:var(--fl-s-3)}
  .fl-eb-steps .fl-eb-step-label{display:none}.fl-eb-step-dot{width:28px;height:28px}.fl-eb-steps li::before{top:13px}
  .fl-eb-slotgrid{grid-template-columns:minmax(0,1fr)}.fl-eb-review{grid-template-columns:minmax(0,1fr)}.fl-eb-review dd{margin-bottom:var(--fl-s-2)}
  .fl-eb-title{font-size:var(--fl-fs-lg)}.fl-eb-pill{border-radius:var(--fl-radius)}}
@media (min-width:600px){.fl-eb{padding:var(--fl-s-5)}.fl-eb-form{padding:var(--fl-s-5)}.fl-eb-slotgrid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .fl-eb-btn{flex:0 0 auto}.fl-eb-steps li{font-size:var(--fl-fs-sm)}.fl-eb-title{font-size:var(--fl-fs-2xl)}
  .fl-eb-actions{justify-content:space-between;flex-wrap:wrap}
  html body .fl-eb .fl-eb-actions{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between}
  html body .fl-eb .fl-eb-actions button.fl-eb-btn.fl-eb-btn{width:auto!important;min-width:8.5rem!important;padding:12px 32px!important}
  html body .fl-eb .fl-eb-actions button[type=submit].fl-eb-btn:only-child{margin-left:auto!important}}
/* two-column field layout at 768px and up; one column below */
@media (min-width:768px){
  .fl-eb-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
  .fl-eb-grid>.fl-eb-field{grid-column:span 6}
  .fl-eb-grid>.fl-eb-field--wide{grid-column:span 6}
  .fl-eb-grid>.fl-eb-field--half{grid-column:span 3}
  .fl-eb-grid>.fl-eb-field--third{grid-column:span 2}
  .fl-eb-grid>.fl-eb-field--twothirds{grid-column:span 4}
  .fl-eb-grid>.fl-eb-field--narrow{grid-column:span 3}
  .fl-eb .fl-eb-field--half select{max-width:22rem}}
@media (prefers-reduced-motion:reduce){.fl-eb *{transition:none!important;animation:none!important}}

/* 0.2.3 (QA desktop CLS 0.124): until JS renders step 1, reserve slightly LESS than its rendered height (Salient on staging:
   770px >= 1000px wide, 814px at 768, ~1040-1050px at 320-390) so the footer starts below the fold and does not jump.
   JS removes .is-pending after the first render; <noscript> cancels it. */
.fl-eb-app.is-pending{min-height:960px}
@media (min-width:600px){.fl-eb-app.is-pending{min-height:760px}}
@media (min-width:1000px){.fl-eb-app.is-pending{min-height:720px}}
