/* All styles are scoped to avoid disrupting WordPress theme styling. */
.tfwsc { --tfwsc-ink:#182e32; --tfwsc-muted:#65757a; --tfwsc-border:#dce5e5; --tfwsc-soft:#f4f8f8; --tfwsc-accent:#16796e; color:var(--tfwsc-ink); font-family:'Figtree',Arial,sans-serif; font-size:15px; line-height:1.5; max-width:1440px; margin:0 auto; }
.tfwsc *, .tfwsc *::before, .tfwsc *::after { box-sizing:border-box; }
.tfwsc__intro { margin:0 0 30px; max-width:770px; }
.tfwsc__eyebrow { display:block; color:var(--tfwsc-accent); font-size:12px; font-weight:800; letter-spacing:.13em; text-transform:uppercase; margin-bottom:8px; }
.tfwsc__intro h2 { font-family:inherit; font-weight:800; font-size:clamp(27px,3vw,39px); line-height:1.16; letter-spacing:-.035em; color:var(--tfwsc-ink); margin:0 0 12px; }
.tfwsc__intro p { margin:0; font-size:15px; max-width:760px; color:var(--tfwsc-muted); }
.tfwsc__layout { display:grid; grid-template-columns:minmax(0,1fr) 290px; gap:24px; align-items:stretch; }
.tfwsc__main { min-width:0; }
.tfwsc__mobile-actions { display:none; }
.tfwsc__table-shell { border:1px solid var(--tfwsc-border); border-radius:12px; background:#fff; }
.tfwsc__table { width:100%; border-collapse:collapse; border-spacing:0; margin:0; background:#fff; table-layout:fixed; font-family:inherit; font-size:13px; color:var(--tfwsc-ink); }
.tfwsc__table thead { background:#eaf1f0; }
.tfwsc__table thead th { padding:15px 12px; font-size:12px; font-weight:800; line-height:1.28; color:#234548; text-align:left; border-bottom:1px solid #d5e0df; }
.tfwsc__table thead th:first-child { width:75%; padding-left:18px; }
.tfwsc__table thead th.tfwsc__pick { width:25%; text-align:center; }
.tfwsc__table tbody .tfwsc__section th { text-align:left; font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.045em; padding:12px 18px; background:#f2f6f5; color:#35565a; border-top:1px solid var(--tfwsc-border); border-bottom:1px solid var(--tfwsc-border); }
.tfwsc__table tbody .tfwsc__section:first-child th { border-top:0; }
.tfwsc__service th, .tfwsc__service td { border-bottom:1px solid #edf0f0; padding:11px 12px; vertical-align:middle; background:#fff; }
.tfwsc__service:last-child th, .tfwsc__service:last-child td { border-bottom:0; }
.tfwsc__service th { font-size:13px; line-height:1.4; text-align:left; font-weight:500; padding-left:18px; }
.tfwsc__service-label { display:inline-flex; flex-wrap:wrap; gap:7px; align-items:center; }
.tfwsc__service th label { color:inherit; font-size:inherit; font-weight:inherit; cursor:pointer; margin:0; padding:0; }
.tfwsc__service td.tfwsc__pick { text-align:center; }
.tfwsc__checkbox { appearance:none; -webkit-appearance:none; display:inline-grid; place-content:center; width:22px; height:22px; margin:0; background:#fff; border:1.5px solid #9fb5b4; border-radius:6px; cursor:pointer; vertical-align:middle; transition:background .12s, border-color .12s, box-shadow .12s; }
.tfwsc__checkbox::before { content:'✓'; color:#fff; font-size:16px; line-height:1; font-weight:800; transform:scale(0); transition:transform .1s; }
.tfwsc__checkbox:checked { background:var(--tfwsc-accent); border-color:var(--tfwsc-accent); }
.tfwsc__checkbox:checked::before { transform:scale(1); }
.tfwsc__checkbox:hover:not(:disabled) { border-color:var(--tfwsc-accent); }
.tfwsc__checkbox:focus-visible { outline:3px solid #94d7d0; outline-offset:3px; }
.tfwsc__checkbox:disabled { opacity:1; cursor:not-allowed; background:#ddece8; border-color:#a6c3bc; }
.tfwsc__checkbox:disabled::before { color:#386d65; }

.tfwsc__service--selected th, .tfwsc__service--selected td { background:#fbfdfc; }
.tfwsc__service--excluded th, .tfwsc__service--excluded td { background:#fafafa; }
.tfwsc__service--excluded th { color:#7d8b8d; }
.tfwsc__unavailable { font-size:10px; font-weight:650; color:#8b9999; white-space:nowrap; }
.tfwsc__info { display:inline-flex; align-items:center; justify-content:center; width:17px; height:17px; border:1px solid #9bafaf; border-radius:50%; background:#fff; color:#5e797b; font-size:11px; font-weight:800; font-family:inherit; line-height:1; cursor:help; padding:0; flex:none; }
.tfwsc__info:hover, .tfwsc__info:focus-visible { border-color:var(--tfwsc-accent); background:#e7f4f1; color:#0b6055; }
.tfwsc__info:focus-visible { outline:2px solid #94d7d0; outline-offset:2px; }
.tfwsc__sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
/* Tooltips are appended to body to avoid clipping by WordPress/table containers. */
.tfwsc__tooltip { box-sizing:border-box; position:fixed; z-index:2147483000; width:max-content; max-width:min(300px,calc(100vw - 24px)); background:#1c383b; color:#fff; box-shadow:0 7px 22px rgba(9,34,38,.25); border-radius:8px; padding:11px 13px; font:400 12px/1.55 'Figtree',Arial,sans-serif; white-space:pre-line; pointer-events:none; overflow-wrap:anywhere; }
.tfwsc__tooltip[hidden] { display:none!important; }
.tfwsc__table-note { margin:14px 2px 0; color:var(--tfwsc-muted); font-size:12px; line-height:1.6; }
.tfwsc__mobile-disclaimer { display:none; }
/* Hide theme-rendered page/post titles, but retain the database title for email subjects. */
body.tfwsc-hide-page-title h1.entry-title, body.tfwsc-hide-page-title h1.page-title, body.tfwsc-hide-page-title .wp-block-post-title, body.tfwsc-hide-page-title .elementor-widget-theme-post-title, body.tfwsc-hide-page-title .fl-post-header, body.tfwsc-hide-page-title .et_post_meta_wrapper > h1, body.tfwsc-hide-page-title .entry-header > .entry-title, body.tfwsc-hide-page-title .post-header > .post-title { display:none!important; }
.tfwsc__sidebar { position:relative; align-self:stretch; min-width:0; }
.tfwsc__summary { background:#fff; border:1px solid #d8e4e2; box-shadow:0 8px 28px rgba(18,44,47,.085); border-radius:16px; padding:24px 22px; z-index:20; }
.tfwsc__summary-kicker { font-size:12px; font-weight:800; color:var(--tfwsc-muted); text-transform:uppercase; letter-spacing:.055em; }
.tfwsc__rate { font-variant-numeric:tabular-nums; color:var(--tfwsc-ink); font-weight:800; letter-spacing:-.05em; line-height:1; font-size:clamp(43px,4vw,56px); margin:16px 0 19px; white-space:nowrap; }
.tfwsc__rate span { font-size:18px; color:var(--tfwsc-muted); font-weight:600; letter-spacing:0; }
.tfwsc__range { display:flex; justify-content:space-between; align-items:center; color:#718181; font-size:11px; font-weight:650; margin-bottom:7px; }
.tfwsc__bar { height:7px; background:#e6eeee; border-radius:20px; overflow:hidden; }
.tfwsc__bar-fill { width:0; height:100%; border-radius:20px; background:var(--tfwsc-accent); transition:width .16s ease; }
.tfwsc__package { font-size:16px; font-weight:800; margin-top:25px; line-height:1.3; }
.tfwsc__count { font-size:12px; color:var(--tfwsc-muted); margin:6px 0 22px; }
.tfwsc__button { appearance:none; -webkit-appearance:none; border-radius:8px; padding:12px 10px; display:block; text-align:center; width:100%; font-family:inherit; font-weight:750; font-size:12px; line-height:1.25; cursor:pointer; transition:background .15s, border-color .15s; }
.tfwsc__button--primary { background:var(--tfwsc-ink); border:1px solid var(--tfwsc-ink); color:#fff; }
.tfwsc__button--primary:hover { background:#304d52; }
.tfwsc__button--secondary { margin-top:9px; background:#fff; border:1px solid var(--tfwsc-border); color:var(--tfwsc-ink); }
.tfwsc__button--secondary:hover { background:var(--tfwsc-soft); border-color:#b0c8c6; }
.tfwsc__button:focus-visible { outline:3px solid #94d7d0; outline-offset:3px; }
.tfwsc__disclaimer { margin-top:24px; padding-top:18px; border-top:1px solid var(--tfwsc-border); font-size:11px; line-height:1.65; color:var(--tfwsc-muted); }
.tfwsc__disclaimer strong { color:var(--tfwsc-ink); }
@media (max-width:1020px) {
  .tfwsc__mobile-disclaimer { display:block; color:var(--tfwsc-muted); border-top:1px solid var(--tfwsc-border); margin:20px 0 0; padding:14px 2px 20px; font-size:12px; line-height:1.65; }
  .tfwsc__mobile-disclaimer strong { color:var(--tfwsc-ink); }
  .tfwsc__mobile-actions { display:flex; gap:8px; margin:0 0 16px; }
  .tfwsc__mobile-actions .tfwsc__button { flex:1; width:auto; margin:0; }
  .tfwsc__layout { display:flex; flex-direction:column; gap:16px; }
  .tfwsc__main { width:100%; }
  .tfwsc__sidebar { align-self:stretch; order:-1; position:sticky; top:92px; z-index:5; }
  .tfwsc__summary { display:grid; grid-template-columns:1fr auto; gap:4px 16px; align-items:center; padding:13px 17px; }
  .tfwsc__summary-kicker { grid-column:1; }
  .tfwsc__rate { grid-row:1 / span 2; grid-column:2; margin:0; font-size:34px; }
  .tfwsc__rate span { font-size:14px; }
  .tfwsc__range,.tfwsc__bar,.tfwsc__package,.tfwsc__count,.tfwsc__summary .tfwsc__button,.tfwsc__disclaimer { display:none; }
}
@media (max-width:570px) {
  .tfwsc__intro { margin-bottom:18px; }
  .tfwsc__intro p { font-size:13px; }
  .tfwsc__table { font-size:12px; }
  .tfwsc__table thead th:first-child { width:74%; }
  .tfwsc__table thead th.tfwsc__pick { width:26%; }
  .tfwsc__table thead th { padding:11px 6px; }
  .tfwsc__service th { font-size:12px; padding:10px 8px 10px 12px; }
  .tfwsc__service td { padding:10px 6px; }
  .tfwsc__table tbody .tfwsc__section th { padding-left:12px; }
  .tfwsc__unavailable { font-size:9px; }
  .tfwsc__summary { padding:11px 14px; }
  .tfwsc__mobile-actions { flex-direction:column; }
  .tfwsc__lock-note { font-size:9px; }
}
@media (prefers-reduced-motion:reduce) { .tfwsc *, .tfwsc *::before { transition:none!important; } }

/* Submission area follows the table on all viewport sizes. */
.tfwsc__email-section { margin:24px 0 10px; padding:24px; background:var(--tfwsc-soft); border:1px solid var(--tfwsc-border); border-radius:12px; }
.tfwsc__email-section h3 { margin:0 0 4px; font-family:inherit; font-weight:800; font-size:20px; color:var(--tfwsc-ink); }
.tfwsc__email-section > p { margin:0 0 18px; font-size:13px; color:var(--tfwsc-muted); }
.tfwsc__form-line { display:flex; flex-wrap:wrap; align-items:flex-end; gap:10px; }
.tfwsc__email-label { font-weight:700; font-size:12px; flex-basis:100%; color:var(--tfwsc-ink); }
.tfwsc__email-input { flex:1 1 220px; min-width:0; min-height:44px; margin:0; background:#fff; border:1px solid #aabcb9; border-radius:8px; padding:10px 12px; color:var(--tfwsc-ink); font:500 14px/1.3 'Figtree',Arial,sans-serif; }
.tfwsc__email-input:focus { outline:3px solid #a3d9d3; outline-offset:1px; border-color:var(--tfwsc-accent); }
.tfwsc__submit { width:auto; min-height:44px; padding:11px 20px; flex:0 0 auto; }
.tfwsc__submit:disabled { opacity:.6; cursor:wait; }
.tfwsc__email-section .tfwsc__email-note { font-size:11px; line-height:1.5; margin:12px 0 0; }
.tfwsc__form-status { min-height:0; margin-top:10px; color:#0b6055; font-size:12px; font-weight:650; }
.tfwsc__form-status:empty { display:none; }
.tfwsc__form-status--error { color:#a43c36; }
.tfwsc__trap { position:absolute!important; width:1px!important; height:1px!important; overflow:hidden!important; opacity:0!important; pointer-events:none!important; }
@media (max-width:570px) {
  .tfwsc__email-section { padding:18px 14px; }
  .tfwsc__form-line { display:block; }
  .tfwsc__email-label { display:block; margin-bottom:8px; }
  .tfwsc__email-input, .tfwsc__submit { display:block; width:100%; margin:0 0 10px; }
}

/* Explicit, theme-resistant Submit button colors; many WP themes override generic button styles. */
.tfwsc .tfwsc__email-section button.tfwsc__submit.tfwsc__button--primary {
  display:inline-block;
  background:#182e32 !important;
  background-image:none !important;
  border:1px solid #182e32 !important;
  color:#ffffff !important;
  -webkit-text-fill-color:#ffffff !important;
  font:700 14px/1.3 'Figtree',Arial,sans-serif !important;
  letter-spacing:0 !important;
  text-transform:none !important;
  text-decoration:none !important;
  box-shadow:none !important;
  opacity:1;
  cursor:pointer;
}
.tfwsc .tfwsc__email-section button.tfwsc__submit.tfwsc__button--primary:hover,
.tfwsc .tfwsc__email-section button.tfwsc__submit.tfwsc__button--primary:focus-visible {
  background:#304d52 !important;
  border-color:#304d52 !important;
  color:#ffffff !important;
  -webkit-text-fill-color:#ffffff !important;
}
.tfwsc .tfwsc__email-section button.tfwsc__submit.tfwsc__button--primary:disabled {
  opacity:.6 !important;
  cursor:wait;
}

/* v1.3: PDF / saved-submission actions replace the email form. */
.tfwsc__actions-section { margin:24px 0 10px; padding:24px; background:var(--tfwsc-soft); border:1px solid var(--tfwsc-border); border-radius:12px; }
.tfwsc__actions-section h3 { margin:0 0 5px; font:800 20px/1.3 'Figtree',Arial,sans-serif; color:var(--tfwsc-ink); }
.tfwsc__actions-section > p { margin:0 0 17px; color:var(--tfwsc-muted); font-size:13px; }
.tfwsc__actions-section .tfwsc__form-line { display:flex; gap:12px; align-items:stretch; flex-wrap:wrap; }
.tfwsc .tfwsc__actions-section button.tfwsc__button { width:auto; flex:1 1 190px; margin:0; padding:13px 17px; min-height:46px; font:700 13px/1.3 'Figtree',Arial,sans-serif !important; text-transform:none !important; letter-spacing:0 !important; text-decoration:none !important; cursor:pointer; }
.tfwsc .tfwsc__actions-section button.tfwsc__submit { background:#182e32 !important; background-image:none !important; color:#fff !important; -webkit-text-fill-color:#fff !important; border:1px solid #182e32 !important; }
.tfwsc .tfwsc__actions-section button.tfwsc__submit:hover { background:#304d52 !important; border-color:#304d52 !important; }
.tfwsc .tfwsc__actions-section button.tfwsc__download { background:#fff !important; background-image:none !important; color:#182e32 !important; -webkit-text-fill-color:#182e32 !important; border:1px solid #a6bab9 !important; }
.tfwsc .tfwsc__actions-section button.tfwsc__download:hover { background:#e8f1f0 !important; }
.tfwsc .tfwsc__actions-section button:disabled { opacity:.55 !important; cursor:wait; }
@media(max-width:570px) { .tfwsc__actions-section { padding:18px 14px; } }

/* v1.3: fixed bottom mobile rate bar, with visual safety margin for Safari/Chrome toolbars. */
@media (max-width:1020px) {
  .tfwsc { padding-bottom:calc(112px + env(safe-area-inset-bottom, 0px)); }
  .tfwsc__layout { display:block; }
  .tfwsc__sidebar { position:static !important; order:initial !important; z-index:auto; }
  .tfwsc__summary {
    position:fixed !important;
    top:auto !important;
    left:16px !important;
    right:16px !important;
    bottom:calc(18px + env(safe-area-inset-bottom, 0px)) !important;
    width:auto !important;
    max-height:none !important;
    overflow:visible !important;
    z-index:9999 !important;
    box-shadow:0 8px 35px rgba(18,44,47,.24);
    border:1px solid #b7ceca;
  }
  .tfwsc__mobile-actions { margin-top:6px; }
}
@media (max-width:570px) {
  .tfwsc__summary { left:12px !important; right:12px !important; bottom:calc(18px + env(safe-area-inset-bottom, 0px)) !important; }
}

/* v1.3.1 - Client heading, robust mobile spacing and reduced rate-bar height. */
.tfwsc__client-banner {
  padding:16px 20px;
  margin:0 0 26px;
  background:#f2f3f3;
  color:#233d41;
  font:500 18px/1.4 'Figtree',Arial,sans-serif;
  border-radius:4px;
}
.tfwsc__client-banner strong { font-weight:800; }
.tfwsc__client-banner[hidden] { display:none!important; }
.tfwsc-client-theme-heading {
  font-family:'Figtree',Arial,sans-serif!important;
  color:#233d41!important;
  font-weight:600!important;
  font-size:clamp(16px,2vw,22px)!important;
  line-height:1.4!important;
  text-transform:none!important;
  letter-spacing:normal!important;
}
.tfwsc-client-theme-heading strong { font-weight:800!important; }
/* Hide stray breadcrumb blocks, without hiding a successfully replaced breadcrumb. */
body.tfwsc-hide-page-title .tfwsc-breadcrumb-suppressed { display:none!important; }
@media (max-width:767px) {
  /* The theme constrains the main content to a narrow column on phones.
     Break the configurator out to near the full viewport width. */
  .tfwsc {
    width:calc(100vw - 28px)!important;
    max-width:none!important;
    margin-left:calc(50% - 50vw + 14px)!important;
    margin-right:0!important;
    padding-left:0!important;
    padding-right:0!important;
  }
  .tfwsc__client-banner { padding:13px 14px; margin-bottom:22px; font-size:15px; }
  .tfwsc .tfwsc__mobile-actions {
    display:flex!important;
    flex-direction:column!important;
    align-items:stretch!important;
    gap:10px!important;
    margin:8px 0 18px!important;
    padding:0!important;
  }
  /* Defend against theme rules adding margins between stacked buttons. */
  .tfwsc .tfwsc__mobile-actions > button.tfwsc__button,
  .tfwsc .tfwsc__mobile-actions > button.tfwsc__button + button.tfwsc__button {
    flex:none!important;
    display:block!important;
    width:100%!important;
    min-height:46px!important;
    height:auto!important;
    margin:0!important;
    padding:12px 14px!important;
    line-height:1.3!important;
    font-size:13px!important;
    letter-spacing:normal!important;
    text-transform:none!important;
  }
  .tfwsc .tfwsc__sidebar .tfwsc__summary {
    display:flex!important;
    flex-direction:row!important;
    justify-content:space-between!important;
    align-items:center!important;
    gap:12px!important;
    padding:10px 14px!important;
    min-height:0!important;
    height:auto!important;
    max-height:76px!important;
    line-height:1.15!important;
    box-sizing:border-box!important;
  }
  .tfwsc .tfwsc__summary .tfwsc__summary-kicker {
    flex:1 1 0!important;
    min-width:0!important;
    margin:0!important;
    font-size:10.5px!important;
    line-height:1.25!important;
    letter-spacing:.035em!important;
  }
  .tfwsc .tfwsc__summary .tfwsc__rate {
    flex:0 0 auto!important;
    margin:0!important;
    padding:0!important;
    font-size:clamp(28px,8vw,34px)!important;
    line-height:1!important;
  }
  .tfwsc .tfwsc__summary .tfwsc__rate span { font-size:13px!important; }
}
