@import url('https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700;800&family=Lato:wght@300;400;600;700&display=swap');

:root {
    --primary:       #20526d;
    --primary-dark:  #0b78b3;
    --primary-light: #2f7ea3;
    --accent:        #ae1010;
    --accent-dark:   #7d0b0b;
    --accent-bright: #e0342c;
    --bg:            #f6f9fa;
    --surface:       #ffffff;
    --text-dark:     #16262d;
    --text-body:     #3d4f57;
    --fog:           #a9c2cd;
    --border-soft:   rgba(32,82,109,0.12);
}

body, p, li, .et_pb_module { font-family: 'Lato', sans-serif; color: var(--text-body); }
h1, h2, h3, h4, h5, h6 { font-family: 'Raleway', sans-serif; color: var(--text-dark); font-weight: 700; }

/* ---------- Eyebrow / hero type ---------- */
.fc-eyebrow {
    display: inline-block;
    font-family: 'Raleway', sans-serif;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--accent);
    background: rgba(174,16,16,0.08);
    padding: 6px 16px;
    border-radius: 30px;
    margin-bottom: 18px;
    position: relative;
    z-index: 1;
}
.fc-eyebrow::before {
    content: ""; display: inline-block; width: 6px; height: 6px; margin-right: 8px;
    border-radius: 50%; background: var(--accent-bright); vertical-align: middle;
    animation: fc-eyebrow-pulse 2.2s ease-out infinite;
}
.fc-hero-h1 { font-size: clamp(2.1rem, 4.6vw, 3.4rem); line-height: 1.12; color: #fff; margin: 0 0 20px; position: relative; z-index: 1; }
.fc-hero-h1 .fc-accent { color: var(--accent-bright); }
.fc-hero-sub { font-size: 1.1rem; color: #fff; max-width: 620px; line-height: 1.6; position: relative; z-index: 1; }

.fc-section-h2 { font-size: clamp(1.7rem, 3.2vw, 2.4rem); margin-bottom: 14px; }
.fc-section-kicker {
    font-size: 0.78rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
    color: var(--primary); margin-bottom: 10px; display: block;
}

/* ---------- Buttons ---------- */
.fc-btn {
    display: inline-block; font-family: 'Raleway', sans-serif; font-weight: 700; font-size: 0.92rem;
    letter-spacing: 0.03em; padding: 16px 34px; border-radius: 6px; text-decoration: none;
    position: relative; overflow: hidden; z-index: 1;
    transition: transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s, background .3s;
}
.fc-btn-primary {
    background: linear-gradient(135deg, var(--accent) 0%, var(--accent-dark) 100%);
    background-size: 160% 160%; background-position: 0% 50%;
    color: #fff; box-shadow: 0 8px 24px rgba(174,16,16,0.35);
}
.fc-btn-primary::before {
    content: ""; position: absolute; inset: 0; z-index: -1;
    background: linear-gradient(115deg, transparent 20%, rgba(255,255,255,0.35) 40%, transparent 60%);
    transform: translateX(-120%); transition: transform .7s ease;
}
.fc-btn-primary:hover { background-position: 100% 50%; transform: translateY(-3px); box-shadow: 0 14px 34px rgba(174,16,16,0.48); color:#fff; }
.fc-btn-primary:hover::before { transform: translateX(120%); }
.fc-btn-secondary { background: transparent; color: #fff; border: 1.5px solid rgba(255,255,255,0.5); }
.fc-btn-secondary:hover { background: rgba(255,255,255,0.14); border-color: rgba(255,255,255,0.85); transform: translateY(-3px); color:#fff; }
.fc-hero-btns { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 10px; position: relative; z-index: 1; }

/* ---------- Trust / stat bar ---------- */
.fc-stat { text-align: center; padding: 8px; transition: transform .3s cubic-bezier(.16,1,.3,1); }
.fc-stat:hover { transform: translateY(-4px); }
.fc-stat-num {
    display:block; font-family:'Raleway',sans-serif; font-weight:800; font-size: 2.6rem; line-height:1;
    background: linear-gradient(135deg, var(--accent) 0%, var(--primary-dark) 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: var(--accent);
}
.fc-stat-label { display:block; margin-top:8px; font-size:0.85rem; letter-spacing:0.04em; text-transform:uppercase; color: var(--fog); font-weight:600; }
.fc-stat-num { position: relative; }
.fc-stat-num::after {
    content:""; position:absolute; left:50%; bottom:-8px; transform:translateX(-50%);
    width:0; height:3px; border-radius:3px;
    background: linear-gradient(90deg, var(--accent), var(--primary-dark));
    transition: width .6s cubic-bezier(.16,1,.3,1);
}
.fc-stat.is-visible .fc-stat-num::after { width: 46%; }
.fc-stat.is-visible .fc-stat-num { animation: fc-pop-in .7s cubic-bezier(.16,1,.3,1) both; }

/* ---------- Testimonial cards ---------- */
.fc-testimonial-card {
    background: var(--surface); border: 1px solid var(--border-soft); border-radius: 14px;
    padding: 30px 28px; box-shadow: 0 10px 30px rgba(22,38,45,0.06); height: 100%;
    position: relative; overflow: hidden;
    transition: transform .35s cubic-bezier(.16,1,.3,1), box-shadow .35s, border-color .35s;
}
.fc-testimonial-card:hover { transform: translateY(-6px); box-shadow: 0 20px 42px rgba(22,38,45,0.13); border-color: var(--primary-light); }
.fc-testimonial-card::before {
    content: "\201C"; position: absolute; top: -18px; right: 14px; z-index: 0;
    font-family: 'Raleway', sans-serif; font-weight: 800; font-size: 5.5rem; line-height: 1;
    background: linear-gradient(135deg, rgba(174,16,16,.16), rgba(11,120,179,.16));
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
    pointer-events: none;
}
.fc-testimonial-card::after {
    content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
    background: linear-gradient(115deg, transparent 30%, rgba(255,255,255,.5) 45%, transparent 60%);
    transform: translateX(-120%); transition: transform .7s ease;
}
.fc-testimonial-card:hover::after { transform: translateX(120%); }
.fc-testimonial-card h4, .fc-testimonial-card p, .fc-testimonial-card .fc-quote-by { position: relative; z-index: 1; }
.fc-testimonial-card h4 { font-size: 1.05rem; color: var(--primary); margin-bottom: 12px; }
.fc-testimonial-card p { font-size: 0.95rem; line-height: 1.7; font-style: italic; }
.fc-testimonial-card .fc-quote-by { display:block; margin-top:16px; font-style:normal; font-weight:700; color: var(--text-dark); font-size:0.85rem; }

/* ---------- Answer-first callout (AEO) ---------- */
.fc-quick-answer {
    background: rgba(32,82,109,0.05); border-left: 4px solid var(--primary); position: relative;
    padding: 22px 26px 22px 56px; border-radius: 8px; font-size: 1.05rem; line-height: 1.7; margin: 0 0 30px;
    transition: background .3s, border-color .3s;
}
.fc-quick-answer::before {
    content: "\2726"; position: absolute; left: 22px; top: 24px; font-size: 1.1rem;
    background: linear-gradient(135deg, var(--primary-dark), var(--accent));
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.fc-quick-answer:hover { background: rgba(11,120,179,0.08); border-color: var(--primary-dark); }
.fc-quick-answer strong { color: var(--primary); }

/* ---------- Pill lists ---------- */
.fc-pill-list { display:flex; flex-wrap:wrap; gap:10px; list-style:none; padding:0; margin:0; }
.fc-pill-list li {
    background:#fff; border:1px solid var(--border-soft); border-radius:30px; padding:8px 18px 8px 26px;
    font-size:0.88rem; font-weight:600; color: var(--primary); position: relative;
    transition: transform .25s cubic-bezier(.16,1,.3,1), box-shadow .25s, border-color .25s, background .25s;
}
.fc-pill-list li::before {
    content: ""; position: absolute; left: 12px; top: 50%; transform: translateY(-50%);
    width: 7px; height: 7px; border-radius: 50%;
    background: linear-gradient(135deg, var(--accent), var(--primary-dark));
}
.fc-pill-list li:hover {
    transform: translateY(-2px); border-color: var(--primary-dark); background: rgba(11,120,179,0.06);
    box-shadow: 0 8px 18px rgba(11,120,179,0.14);
}

/* ---------- Mobile sticky CTA bar ---------- */
.fc-mobile-cta {
    display: none; position: fixed; left: 0; right: 0; bottom: 0; z-index: 9999;
    background: var(--primary-dark); box-shadow: 0 -4px 20px rgba(0,0,0,0.25);
}
.fc-mobile-cta::before {
    content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px;
    background: linear-gradient(90deg, var(--accent), var(--primary-dark), var(--accent));
    background-size: 200% auto; animation: fc-shimmer 3s linear infinite;
}
.fc-mobile-cta a {
    flex: 1; text-align: center; padding: 14px 8px; font-family:'Raleway',sans-serif; font-weight:700;
    font-size: 0.9rem; text-decoration: none; color: #fff;
}
.fc-mobile-cta .fc-mcta-btn { background: var(--accent); }
@media (max-width: 980px) {
    .fc-mobile-cta { display: flex; }
    body { padding-bottom: 54px; }
}

/* ---------- Animations ---------- */
@keyframes fc-fade-up    { from{opacity:0;transform:translateY(28px)} to{opacity:1;transform:translateY(0)} }
@keyframes fc-glow-pulse { 0%,100%{box-shadow:0 4px 24px rgba(174,16,16,.38)} 50%{box-shadow:0 4px 48px rgba(174,16,16,.7)} }
@keyframes fc-float      { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-7px)} }
@keyframes fc-drift {
    0%   { background-position: 0% 0%,   100% 100%; }
    50%  { background-position: -6% 4%,  94% 96%; }
    100% { background-position: 0% 0%,   100% 100%; }
}
@keyframes fc-shimmer { 0%{background-position:-200% center} 100%{background-position:200% center} }
@keyframes fc-pop-in  { 0%{opacity:0;transform:scale(.6)} 60%{opacity:1;transform:scale(1.08)} 100%{opacity:1;transform:scale(1)} }
@keyframes fc-eyebrow-pulse { 0%{box-shadow:0 0 0 0 rgba(224,52,44,.5)} 70%{box-shadow:0 0 0 8px rgba(224,52,44,0)} 100%{box-shadow:0 0 0 0 rgba(224,52,44,0)} }

.fc-reveal            { opacity:0; transform:translateY(28px);
                        transition: opacity .65s cubic-bezier(.16,1,.3,1), transform .65s cubic-bezier(.16,1,.3,1); }
.fc-reveal.is-visible  { opacity:1; transform:translateY(0); }

/* Animated gradient wash + drifting glow on every hero-style section (works regardless of which exact bg color is used) */
.et_pb_section:has(.fc-hero-h1) {
    position: relative;
    overflow: hidden;
}
.et_pb_section:has(.fc-hero-h1)::before {
    content: "";
    position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background:
        radial-gradient(ellipse 55% 60% at 88% -10%, rgba(224,52,44,.16) 0%, transparent 62%),
        radial-gradient(ellipse 48% 50% at -8% 112%, rgba(255,255,255,.10) 0%, transparent 60%);
    background-repeat: no-repeat;
    animation: fc-drift 18s ease-in-out infinite;
}

/* Animated gradient wash on CTA banner sections (cta_banner() always sets a white .fc-section-h2) */
.et_pb_section:has(.fc-section-h2[style*="color:#fff"]) {
    position: relative;
    overflow: hidden;
}
.et_pb_section:has(.fc-section-h2[style*="color:#fff"])::before {
    content: "";
    position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background:
        radial-gradient(ellipse 60% 70% at 15% -10%, rgba(255,255,255,.10) 0%, transparent 60%),
        radial-gradient(ellipse 50% 60% at 100% 110%, rgba(224,52,44,.18) 0%, transparent 62%);
    animation: fc-drift 20s ease-in-out infinite;
}
.et_pb_section:has(.fc-section-h2[style*="color:#fff"]) .et_pb_row {
    position: relative; z-index: 1;
}

/* Gradient wash on primary-color sections (legacy inline-style targeting kept for backward compatibility) */
.et_pb_section[style*="background-color: #20526d"],
.et_pb_section[style*="background-color:#20526d"] {
    background-image:
        radial-gradient(ellipse 80% 55% at 50% -5%, rgba(174,16,16,.16) 0%, transparent 65%),
        radial-gradient(ellipse 45% 35% at 95% 100%, rgba(47,126,163,.18) 0%, transparent 60%)
        !important;
    background-color: #20526d !important;
}

/* ==================================================================
   Blurb card system — consistent white cards, equal height, contemporary icon chips
   ================================================================== */
/* lib.py's row()/col() helpers force display:block on every row and column, which blocks
   Divi's native flex column-stretch — so sibling blurb columns don't naturally match height.
   Scope a flex/stretch override to just rows that contain blurbs. */
.et_pb_row:has(> .et_pb_column > .et_pb_blurb),
.et_pb_row:has(> .et_pb_column > .et_pb_module.et_pb_blurb) {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: stretch !important;
}
.et_pb_row:has(> .et_pb_column > .et_pb_blurb) > .et_pb_column,
.et_pb_row:has(> .et_pb_column > .et_pb_module.et_pb_blurb) > .et_pb_column {
    display: flex !important;
    flex-direction: column !important;
}
.et_pb_column > .et_pb_module.et_pb_blurb,
.et_pb_column > .et_pb_blurb {
    height: 100% !important;
    display: flex !important;
    flex-direction: column !important;
    transition: transform .35s cubic-bezier(.16,1,.3,1), box-shadow .35s ease, border-color .35s ease !important;
}
.et_pb_blurb:hover {
    transform: translateY(-8px);
    box-shadow: 0 22px 46px rgba(11,32,41,0.16) !important;
    border-color: rgba(11,120,179,0.35) !important;
}
.et_pb_blurb .et_pb_blurb_content {
    display: flex; flex-direction: column; height: 100%; width: 100%;
}
.et_pb_blurb .et_pb_blurb_container {
    display: flex !important; flex-direction: column; flex: 1;
}
.et_pb_blurb .et_pb_blurb_description { flex: 1; }

/* Icon chip: soft gradient circle behind every blurb icon */
.et_pb_blurb .et_pb_main_blurb_image {
    display: inline-flex !important;
    align-items: center; justify-content: center;
    width: 66px !important; height: 66px !important;
    margin: 0 auto 20px !important;
    border-radius: 50%;
    background: linear-gradient(135deg, rgba(11,120,179,0.12), rgba(174,16,16,0.10));
    transition: transform .4s cubic-bezier(.16,1,.3,1), background .4s ease;
}
.et_pb_blurb:hover .et_pb_main_blurb_image {
    transform: scale(1.1) rotate(-6deg);
    background: linear-gradient(135deg, rgba(11,120,179,0.2), rgba(174,16,16,0.16));
}
.et_pb_blurb .et-pb-icon { font-size: 30px !important; }
.et_pb_blurb.is-visible .et_pb_main_blurb_image { animation: fc-pop-in .6s cubic-bezier(.16,1,.3,1) both; }

/* Force readable, consistent title/body contrast on every blurb regardless of legacy per-instance color */
.et_pb_blurb .et_pb_module_header,
.et_pb_blurb .et_pb_module_header a {
    color: var(--text-dark) !important;
    font-size: 1.05rem !important;
}
.et_pb_blurb .et_pb_blurb_description,
.et_pb_blurb .et_pb_blurb_description p {
    color: var(--text-body) !important;
}

/* ---------- Ninja Forms restyle ---------- */
.nf-form-cont { border-radius:16px; box-shadow:0 20px 50px rgba(22,38,45,0.12); padding:40px 36px; position:relative; overflow:hidden; background:#fff; }
.nf-form-cont::before { content:""; position:absolute; top:0; left:0; right:0; height:5px; background:linear-gradient(90deg,var(--primary),var(--accent),var(--primary)); background-size:200% auto; animation: fc-shimmer 3s linear infinite; }
.nf-field-label label { font-size:.72rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color: var(--primary); }
.nf-field-element input, .nf-field-element textarea, .nf-field-element select {
    border:1.5px solid #dde6ef !important; border-radius:8px !important; padding:14px 16px !important;
    transition: border-color .2s, box-shadow .2s; font-family:'Lato',sans-serif;
}
.nf-field-element input:focus, .nf-field-element textarea:focus { border-color: var(--primary) !important; box-shadow: 0 0 0 4px rgba(32,82,109,.14); outline:none; }
.nf-field-element input[type="submit"] {
    background: linear-gradient(135deg, var(--accent) 0%, var(--accent-dark) 100%) !important;
    color:#fff !important; border:none !important; font-weight:700 !important;
    letter-spacing:.03em; padding:16px 20px !important; width:100%; animation: fc-glow-pulse 2.6s ease-in-out infinite;
    transition: transform .25s ease;
}
.nf-field-element input[type="submit"]:hover { transform: translateY(-2px); }
.nf-response-msg { background: var(--primary-dark); color:#fff; border-left:4px solid var(--accent); border-radius:8px; padding:18px 20px; }
.nf-error .nf-field-element input, .nf-error .nf-field-element textarea { border-color:#e53e3e !important; box-shadow:0 0 0 3px rgba(229,62,62,.12); }

/* ---------- FAQ / toggle modules ---------- */
.et_pb_toggle {
    border: none !important; border-radius:10px !important; margin-bottom:14px !important;
    box-shadow: 0 2px 10px rgba(11,32,41,0.05);
    overflow:hidden; position: relative; transition: box-shadow .3s ease;
}
.et_pb_toggle:hover { box-shadow: 0 10px 24px rgba(11,32,41,0.08); }
.et_pb_toggle::before {
    content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
    background: linear-gradient(180deg, var(--primary-dark), var(--accent));
    transform: scaleY(0); transform-origin: top; transition: transform .4s cubic-bezier(.16,1,.3,1);
}
.et_pb_toggle_open::before { transform: scaleY(1); }
.et_pb_toggle_title { font-family:'Raleway',sans-serif !important; font-weight:700 !important; color: var(--primary) !important; }
.et_pb_toggle_open .et_pb_toggle_title { color: var(--primary-dark) !important; }

/* ---------- Content images ---------- */
.et_pb_image img {
    border-radius: 12px;
    transition: transform .5s cubic-bezier(.16,1,.3,1), box-shadow .5s ease;
}
.et_pb_image:hover img {
    transform: scale(1.035);
    box-shadow: 0 22px 50px rgba(11,32,41,0.22);
}

/* ---------- Footer widget text ---------- */
#footer-widgets .textwidget,
#footer-widgets .textwidget p,
#footer-widgets .textwidget a,
#footer-widgets .title {
    color: #fff !important;
}
#footer-widgets .textwidget a:hover { color: var(--fog) !important; }

/* ---------- Nav link underline sizzle ---------- */
/* Theme Builder header renders the menu as #menu-main-navigation, not the classic-theme
   #top-menu — this selector never matched anything until this fix. */
/* Divi's own menu CSS gives every <a> padding:31px 0 with the text vertically centered inside
   that tall box. An absolutely-positioned ::after anchored with bottom:2px was relative to that
   whole padded box (~90px tall), not the text, so the bar landed through the middle of the glyphs
   instead of under them. Fixed with a background-image underline using
   background-origin:content-box, which is positioned relative to the text's own content box only
   — immune to however much padding Divi puts around it. */
#menu-main-navigation > li:not(.fc-nav-cta) > a {
    background-image: linear-gradient(90deg, var(--accent), var(--primary-dark));
    background-repeat: no-repeat;
    background-position: center bottom;
    background-origin: content-box;
    background-size: 0% 2px;
    transition: background-size .3s cubic-bezier(.16,1,.3,1), color .25s ease;
}
#menu-main-navigation > li:not(.fc-nav-cta) > a:hover,
#menu-main-navigation > li.current-menu-item:not(.fc-nav-cta) > a { background-size: 70% 2px; }

/* ---------- Header: drop the top phone/schedule bar, move CTAs into the nav ---------- */
@media (min-width: 981px) {
    /* Top blue bar (phone + "Schedule Now" buttons) — dropped per request; mobile is untouched,
       it keeps its own sticky .fc-mobile-cta bar below 980px regardless of this rule. */
    .et_pb_section_0_tb_header { display: none !important; }

    /* Divi's own menu CSS makes every <li> and <a> a flex item with align-items:stretch and
       padding:31px 0 (a full-header-height clickable-area pattern) — align-self:center here is
       what actually stops these two items from stretching to that height, not the padding override
       alone, since align-items:stretch on the flex parent wins over a child's own padding/display. */
    #menu-main-navigation > li.fc-nav-cta {
        list-style: none;
        align-self: center !important;
        display: block !important;
    }
    #menu-main-navigation > li.fc-nav-cta:first-of-type { margin-left: auto; }
    #menu-main-navigation > li.fc-nav-cta > a {
        display: inline-block !important;
        align-self: center !important;
        height: auto !important;
        font-family: 'Raleway', sans-serif; font-weight: 700; font-size: 0.86rem;
        letter-spacing: 0.02em; padding: 10px 20px !important; border-radius: 30px;
        margin-left: 10px; transition: transform .25s cubic-bezier(.16,1,.3,1), box-shadow .25s ease;
    }
    #menu-main-navigation > li.fc-nav-cta-phone > a {
        color: var(--primary); background: rgba(32,82,109,0.07); border: 1.5px solid var(--border-soft);
    }
    #menu-main-navigation > li.fc-nav-cta-phone > a:hover {
        background: rgba(11,120,179,0.1); border-color: var(--primary-dark); transform: translateY(-2px);
    }
    #menu-main-navigation > li.fc-nav-cta-primary > a {
        color: #fff;
        background: linear-gradient(135deg, var(--accent) 0%, var(--accent-dark) 100%);
        box-shadow: 0 6px 18px rgba(174,16,16,0.3);
    }
    #menu-main-navigation > li.fc-nav-cta-primary > a:hover {
        transform: translateY(-2px); box-shadow: 0 10px 24px rgba(174,16,16,0.42);
    }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration:.01ms !important; transition-duration:.01ms !important; }
}
