/*
Theme Name: Top Sydney Cleaners Child
Template: astra
Version: 1.5.32
Description: Child theme for Top Sydney Cleaners. Stage 6/1 header + announcement bar; 6/2 Services dropdown + nav CTA; 6/3 global footer (verified contact details); 6/4 reusable UI foundation + 6/5 conversion/CTA system (assets/components.css); tsc_cta_* helpers in functions.php. Stage 5 design system.
Text Domain: astra-child-tsc
*/

/* ==========================================================================
   Design tokens  (Stage 5 - Direction A: trust blue + warm amber on ink).
   Only the header + announcement bar consume these at this stage.
   ========================================================================== */
:root{
  --tsc-blue:#0B5FFF;
  --tsc-blue-700:#0847C4;
  --tsc-blue-050:#EEF3FF;
  --tsc-amber:#F5820A;
  --tsc-amber-600:#D96F00;
  --tsc-ink:#0E1726;
  --tsc-ink-70:#3D4757;
  --tsc-ink-45:#5B6572;   /* darkened for WCAG AA on light surfaces (QA, Prompt 6) */
  --tsc-rule:#E4E8EF;
  --tsc-white:#FFFFFF;

  --tsc-space-1:4px;  --tsc-space-2:8px;  --tsc-space-3:12px;
  --tsc-space-4:16px; --tsc-space-5:20px; --tsc-space-6:24px;

  --tsc-radius-sm:6px; --tsc-radius-md:8px; --tsc-radius-lg:12px; --tsc-radius-pill:999px;

  --tsc-shadow-sm:0 1px 2px rgba(14,23,38,.08), 0 1px 3px rgba(14,23,38,.06);
  --tsc-shadow-md:0 6px 16px rgba(14,23,38,.12);

  --tsc-ease:cubic-bezier(.22,1,.36,1);
  --tsc-dur:150ms;

  --tsc-font:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;

  --tsc-header-h:60px;
}

/* ==========================================================================
   Global announcement bar
   ========================================================================== */
.tsc-annc{
  position:relative;
  box-sizing:border-box;
  width:100%;
  overflow:hidden;
  background:var(--tsc-blue);
  color:var(--tsc-white);
  font-family:var(--tsc-font);
  font-size:14px;
  line-height:1.4;
}
html[data-tsc-annc="off"] .tsc-annc{ display:none; }

.tsc-annc__inner{
  box-sizing:border-box;
  max-width:1280px;
  margin:0 auto;
  min-height:40px;
  padding:6px 44px;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:center;
  gap:6px 12px;
}
.tsc-annc__msg{ margin:0; font-weight:500; text-wrap:balance; }

.tsc-annc__cta{
  flex:none;
  display:inline-block;
  padding:4px 12px;
  border-radius:var(--tsc-radius-pill);
  background:var(--tsc-amber);
  color:var(--tsc-ink);           /* ink on amber = 7:1 (WCAG AA) */
  font-weight:700;
  font-size:13px;
  text-decoration:none;
  white-space:nowrap;
  transition:transform var(--tsc-dur) var(--tsc-ease), background var(--tsc-dur) var(--tsc-ease);
}
.tsc-annc__cta:hover{ background:var(--tsc-amber-600); color:var(--tsc-ink); transform:translateY(-1px); }
.tsc-annc__cta:focus-visible{ outline:2px solid var(--tsc-white); outline-offset:2px; }

.tsc-annc__tel{
  display:none;                 /* desktop: phone lives in the header CTA */
  flex:none;
  color:var(--tsc-white);
  font-weight:600;
  text-decoration:none;
  white-space:nowrap;
}
.tsc-annc__tel:focus-visible{ outline:2px solid var(--tsc-white); outline-offset:2px; }

.tsc-annc__close{
  position:absolute;
  top:50%;
  right:6px;
  transform:translateY(-50%);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:32px;
  height:32px;
  padding:0;
  border:0;
  border-radius:var(--tsc-radius-sm);
  background:transparent;
  color:rgba(255,255,255,.85);
  cursor:pointer;
  transition:color var(--tsc-dur) var(--tsc-ease), background var(--tsc-dur) var(--tsc-ease);
}
.tsc-annc__close:hover{ color:var(--tsc-white); background:rgba(255,255,255,.14); }
.tsc-annc__close:focus-visible{ outline:2px solid var(--tsc-white); outline-offset:2px; }

@media (max-width:768px){
  .tsc-annc{ font-size:13px; }
  .tsc-annc__inner{ padding:7px 40px; gap:2px 10px; }
  .tsc-annc__cta{ display:none; }                /* tablet/mobile: message + call only */
  .tsc-annc__tel{ display:inline-block; }        /* expose click-to-call */
}
@media (max-width:600px){
  .tsc-annc__tel{ display:none; }                /* the sticky Call + Book bar covers this below 600 */
}

/* ==========================================================================
   Header shell  (Astra Header Footer Builder - restyled, structure unchanged)
   ========================================================================== */
.site-header .ast-primary-header-bar,
.site-header .main-header-bar{
  border-bottom:1px solid var(--tsc-rule);
  box-shadow:none;
  font-family:var(--tsc-font);
}
/* Compact header (Prompt 3/4). Astra's default gives the primary bar ~16px
   padding AND sets the nav-link line-height to the full header height (~70px),
   which together make the header ~95px tall. Trim the bar padding and reset the
   nav-link line-height so the header sits near --tsc-header-h. */
.site-header .ast-primary-header-bar.main-header-bar,
.site-header .ast-primary-header-bar{ padding-top:6px; padding-bottom:6px; }
.site-header .main-header-bar .ast-container,
.ast-primary-header-bar .ast-container,
.site-header .site-primary-header-wrap{ min-height:var(--tsc-header-h); }

.header-widget-area[data-section="sidebar-widgets-header-widget-1"]{ margin:0 !important; }

/* Logo -------------------------------------------------------------------- */
.site-header .site-branding img,
.site-header .custom-logo-link img,
.site-header .site-logo-img img{
  max-height:40px;
  width:auto;
}

/* Primary navigation ---------------------------------------------------- */
#ast-hf-menu-1{ font-family:var(--tsc-font); }
/* Astra pins the menu <ul>, each top-level <li> and each <a> to the full header
   height (line-height + explicit height). Release all three so the header can be
   compact; Astra's flex `align-items:center` keeps the row vertically centred. */
#ast-hf-menu-1.main-header-menu{ height:auto; }
#ast-hf-menu-1 > .menu-item{ height:auto; line-height:normal; }
#ast-hf-menu-1 .menu-link{ line-height:2.2; }
#ast-hf-menu-1 > .menu-item > a{
  position:relative;
  padding-inline:14px;
  font-weight:500;
  font-size:15px;
  color:var(--tsc-ink);
  transition:color var(--tsc-dur) var(--tsc-ease);
}
#ast-hf-menu-1 > .menu-item > a:hover,
#ast-hf-menu-1 > .menu-item.current-menu-item > a,
#ast-hf-menu-1 > .menu-item.current-menu-ancestor > a{ color:var(--tsc-blue); }
#ast-hf-menu-1 > .menu-item > a::after{
  content:"";
  position:absolute;
  left:14px;
  right:14px;
  bottom:4px;
  height:2px;
  background:var(--tsc-blue);
  transform:scaleX(0);
  transform-origin:left center;
  transition:transform var(--tsc-dur) var(--tsc-ease);
}
#ast-hf-menu-1 > .menu-item > a:hover::after,
#ast-hf-menu-1 > .menu-item.current-menu-item > a::after,
#ast-hf-menu-1 > .menu-item.current-menu-ancestor > a::after{ transform:scaleX(1); }
#ast-hf-menu-1.ast-menu-hover-style-zoom .menu-link:hover{ transform:none; }
.site-header .main-header-menu a:focus-visible,
#ast-hf-menu-1 a:focus-visible,
.site-header .custom-logo-link:focus-visible,
.site-header .site-branding a:focus-visible{
  outline:2px solid var(--tsc-blue);
  outline-offset:2px;
  border-radius:4px;
}
#ast-hf-menu-1 .sub-menu{
  border:1px solid var(--tsc-rule);
  border-radius:var(--tsc-radius-md);
  box-shadow:var(--tsc-shadow-md);
  overflow:hidden;
}

/* Header contact CTA (rewritten phone link) --------------------------------
   Secondary / outline treatment: "Book a Clean" (nav) is the one solid CTA;
   the phone is a clear but quieter action so the header has a single visual
   priority. The paragraph now contains only this <a> (lead-in text removed). */
.header-widget-area[data-section="sidebar-widgets-header-widget-1"] .widget_block p{
  margin:0;
  display:flex;
  align-items:center;
  justify-content:flex-end;
}
a.tsc-header-call{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:7px 14px;
  border-radius:var(--tsc-radius-pill);
  background:var(--tsc-white);
  border:1.5px solid var(--tsc-blue);
  color:var(--tsc-blue) !important;   /* blue on white = 5:1 (WCAG AA) */
  font-weight:700;
  font-size:14px;
  letter-spacing:.2px;
  line-height:1.1;
  text-decoration:none;
  white-space:nowrap;
  transition:background var(--tsc-dur) var(--tsc-ease), border-color var(--tsc-dur) var(--tsc-ease), color var(--tsc-dur) var(--tsc-ease);
}
a.tsc-header-call .tsc-header-call__icon{ flex:none; }
a.tsc-header-call .tsc-header-call__label{ font-weight:600; }
a.tsc-header-call:hover{
  background:var(--tsc-blue-050);
  border-color:var(--tsc-blue-700);
  color:var(--tsc-blue-700) !important;
}
a.tsc-header-call:focus-visible{ outline:2px solid var(--tsc-blue); outline-offset:2px; }

/* Mobile header ------------------------------------------------------------ */
@media (max-width:921px){
  .ast-header-break-point.site-header .main-header-bar,
  .ast-header-break-point .ast-primary-header-bar{ padding-block:8px; }
  .site-header .site-branding img,
  .site-header .custom-logo-link img{ max-height:34px; }
}
/* Beats Astra's inline rule
   [data-section="section-header-mobile-trigger"] .ast-button-wrap .ast-mobile-menu-trigger-fill */
.site-header [data-section="section-header-mobile-trigger"] .ast-button-wrap .ast-mobile-menu-trigger-fill{
  background:var(--tsc-blue);
  color:var(--tsc-white);
  border-radius:var(--tsc-radius-sm);
}
.site-header [data-section="section-header-mobile-trigger"] .ast-button-wrap .ast-mobile-menu-trigger-fill:hover{
  background:var(--tsc-blue-700);
}
/* >=44x44 touch target for the mobile menu button. */
.site-header button.main-header-menu-toggle{ min-width:44px; min-height:44px; }
.ast-mobile-menu-trigger-minimal{ color:var(--tsc-ink); }
.ast-mobile-menu-trigger-fill:focus-visible,
.ast-mobile-menu-trigger-minimal:focus-visible,
.main-header-menu-toggle:focus-visible{ outline:2px solid var(--tsc-blue); outline-offset:2px; }
#ast-hf-menu-1-mobile{ font-family:var(--tsc-font); }
#ast-hf-menu-1-mobile .menu-link{ font-weight:500; color:var(--tsc-ink); }
.ast-mobile-popup-drawer #ast-hf-menu-1-mobile .menu-item > a:hover,
.ast-mobile-popup-drawer #ast-hf-menu-1-mobile .current-menu-item > a{ color:var(--tsc-blue); }

/* ==========================================================================
   Homepage promotional strip - replaced by the global announcement bar above.
   Elementor container 81c5b63 on page 7 = [ "Special Savings!" heading +
   "Call Us Today" button ].  CSS-only suppression; stored Elementor content
   is untouched.  Revert = delete this rule.
   ========================================================================== */
body.page-id-7 .elementor-7 > .elementor-element.elementor-element-81c5b63{
  display:none !important;
}

/* ==========================================================================
   Stage 6/2 - Services dropdown + navigation CTA  (Astra HFB menu-1)
   Menu structure is set in WordPress (menu "main menu"): a custom "Services"
   parent (class .tsc-nav-services, url #) with children Airbnb Cleaning ->
   Residential Cleaning -> Commercial Cleaning, and "Book a Clean"
   (.tsc-nav-cta) as the last top-level item styled as the CTA button.
   ========================================================================== */

/* Services parent: caret + non-navigating cursor; drop the underline pseudo */
#ast-hf-menu-1 > .tsc-nav-services > .menu-link{ cursor:default; }
#ast-hf-menu-1 > .tsc-nav-services > a::after{ display:none; }
#ast-hf-menu-1 .tsc-nav-services > .menu-link .dropdown-menu-toggle{
  margin-left:5px;
  min-width:24px;          /* WCAG 2.5.8 : >=24x24 pointer target */
  min-height:24px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
#ast-hf-menu-1 .tsc-nav-services > .menu-link .dropdown-menu-toggle .ast-icon svg{
  width:10px; height:auto;
  transition:transform var(--tsc-dur) var(--tsc-ease);
}
#ast-hf-menu-1 .tsc-nav-services:hover > .menu-link .dropdown-menu-toggle .ast-icon svg,
#ast-hf-menu-1 .tsc-nav-services:focus-within > .menu-link .dropdown-menu-toggle .ast-icon svg,
#ast-hf-menu-1 .tsc-nav-services.ast-submenu-expanded > .menu-link .dropdown-menu-toggle .ast-icon svg{
  transform:rotate(180deg);
}

/* Dropdown panel */
#ast-hf-menu-1 .sub-menu{
  min-width:232px;
  max-width:calc(100vw - 2rem);
  padding:6px;
  background:var(--tsc-white);
  border:1px solid var(--tsc-rule);
  border-radius:var(--tsc-radius-md);
  box-shadow:var(--tsc-shadow-md);
  overflow:hidden;
}
#ast-hf-menu-1 .sub-menu .menu-item{ margin:0; }
#ast-hf-menu-1 .sub-menu .menu-link{
  display:block;
  padding:10px 12px;
  border-radius:var(--tsc-radius-sm);
  font-size:14px;
  font-weight:500;
  line-height:1.3;
  color:var(--tsc-ink);
  transition:background var(--tsc-dur) var(--tsc-ease), color var(--tsc-dur) var(--tsc-ease);
}
#ast-hf-menu-1 .sub-menu .menu-link:hover,
#ast-hf-menu-1 .sub-menu .menu-item.current-menu-item > .menu-link{
  background:var(--tsc-blue-050);
  color:var(--tsc-blue-700);
}
#ast-hf-menu-1 .sub-menu .menu-link:focus-visible{ outline:2px solid var(--tsc-blue); outline-offset:-2px; }
#ast-hf-menu-1 .sub-menu .menu-link > .ast-icon{ display:none; }   /* Astra decorative leading arrow */
#ast-hf-menu-1 .sub-menu .menu-item:first-child > .menu-link{ font-weight:600; }   /* Airbnb = most prominent */
/* keep the panel revealed (not just visible) for keyboard users */
#ast-hf-menu-1 .menu-item-has-children:focus-within > .sub-menu{
  opacity:1; visibility:visible; left:0; right:auto;
}

/* Navigation CTA : "Book a Clean" top-level item -> amber button */
#ast-hf-menu-1 > .tsc-nav-cta{ display:flex; align-items:center; margin-left:6px; }
#ast-hf-menu-1 > .tsc-nav-cta > a::after{ display:none; }
#ast-hf-menu-1 > .tsc-nav-cta > .menu-link{
  padding:9px 18px;
  border-radius:var(--tsc-radius-pill);
  background:var(--tsc-amber);
  color:var(--tsc-ink);           /* ink on amber = 7:1 (WCAG AA) */
  font-weight:700;
  font-size:14px;
  line-height:1;
  box-shadow:var(--tsc-shadow-sm);
  transition:transform var(--tsc-dur) var(--tsc-ease),
             box-shadow var(--tsc-dur) var(--tsc-ease),
             background var(--tsc-dur) var(--tsc-ease);
}
#ast-hf-menu-1 > .tsc-nav-cta > .menu-link:hover{
  background:var(--tsc-amber-600);
  color:var(--tsc-ink);
  transform:translateY(-2px);
  box-shadow:var(--tsc-shadow-md);
}
#ast-hf-menu-1 > .tsc-nav-cta > .menu-link:focus-visible{ outline:2px solid var(--tsc-ink); outline-offset:2px; }

/* Mobile (Astra break-point): Services accordion + full-width CTA */
@media (max-width:921px){
  #ast-hf-menu-1-mobile .sub-menu{
    box-shadow:none; border:0; border-radius:0;
    min-width:0; max-width:none;
    padding:0 0 4px 12px;
    background:transparent;
  }
  #ast-hf-menu-1-mobile .sub-menu .menu-item{ border:0; }
  #ast-hf-menu-1-mobile .sub-menu .menu-link{
    padding-top:12px; padding-bottom:12px; padding-left:16px;
    min-height:0; font-size:15px; line-height:1.3;
  }
  #ast-hf-menu-1-mobile .sub-menu .menu-link > .ast-icon{ display:none; }
  #ast-hf-menu-1-mobile .sub-menu .menu-item:first-child > .menu-link{ font-weight:600; }
  #ast-hf-menu-1-mobile > .tsc-nav-cta{ display:block; margin:12px 0 4px; }
  #ast-hf-menu-1-mobile > .tsc-nav-cta > .menu-link{
    display:block; text-align:center;
    padding:14px 18px;
    border-radius:var(--tsc-radius-md);
    background:var(--tsc-amber); color:var(--tsc-ink); font-weight:700;
  }
  #ast-hf-menu-1-mobile > .tsc-nav-services > .menu-link{ cursor:pointer; }
}

/* ==========================================================================
   Stage 6/3 - Global footer  (custom render replaces Astra's HFB footer)
   Light surface, Hanken Grotesk, Stage-5 tokens. Fluent Form #3 preserved
   and re-styled (presentation only). Verified data: phone. Omitted pending
   human input: email, address / Google Maps, social profiles.
   ========================================================================== */
.tsc-footer{
  background:#F4F7FB;
  border-top:1px solid var(--tsc-rule);
  color:var(--tsc-ink);
  font-family:var(--tsc-font);
  padding-block:clamp(36px,5vw,52px) 24px;
}
.tsc-footer .tsc-container{
  max-width:1200px;
  margin-inline:auto;
  padding-inline:clamp(16px,4vw,40px);
  box-sizing:border-box;
}
.tsc-footer__grid{
  display:grid;
  grid-template-columns:1.6fr 1fr 1fr 1fr;
  gap:40px 32px;
}
.tsc-footer__col{ min-width:0; }
.tsc-footer__brand{ display:flex; flex-direction:column; align-items:flex-start; gap:16px; }
.tsc-footer__logo img{ display:block; height:40px; width:auto; }
.tsc-footer__desc{
  margin:0;
  max-width:34ch;
  font-size:14px;
  line-height:1.6;
  color:var(--tsc-ink-70);
}
.tsc-footer__brand .tsc-btn{ margin-top:4px; }

.tsc-footer__h{
  margin:0 0 14px;
  font-family:var(--tsc-font);
  font-size:13px;
  font-weight:700;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--tsc-ink);
}
.tsc-footer__links,
.tsc-footer__contact{
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  flex-direction:column;
  gap:2px;
}
.tsc-footer__links li,
.tsc-footer__contact li{ margin:0; }
.tsc-footer__links a{
  display:inline-block;
  padding:5px 0;                 /* >=24px tap target (WCAG 2.5.8) */
  color:var(--tsc-ink-70);
  font-size:14px;
  line-height:1.4;
  text-decoration:none;
  transition:color var(--tsc-dur) var(--tsc-ease);
}
.tsc-footer__links a:hover{ color:var(--tsc-blue); text-decoration:underline; text-underline-offset:2px; }
.tsc-footer__links a:focus-visible{ outline:2px solid var(--tsc-blue); outline-offset:2px; border-radius:2px; }
.tsc-footer__col[aria-label="Services"] .tsc-footer__links li:first-child a{ font-weight:600; color:var(--tsc-ink); }

.tsc-footer__contact{ gap:12px; }
.tsc-footer__contact > li{ display:flex; }
.tsc-footer__contact-link{
  display:inline-flex;
  align-items:flex-start;
  gap:9px;
  min-height:40px;
  padding:5px 0;
  color:var(--tsc-ink);
  font-size:14px;
  font-weight:600;
  line-height:1.45;
  text-decoration:none;
  transition:color var(--tsc-dur) var(--tsc-ease);
}
.tsc-footer__contact-link:hover{ color:var(--tsc-blue); }
.tsc-footer__contact-link:hover span:not(.tsc-footer__addr-hint){ text-decoration:underline; text-underline-offset:2px; }
.tsc-footer__contact-link:focus-visible{ outline:2px solid var(--tsc-blue); outline-offset:2px; border-radius:2px; }
.tsc-footer__ico{ flex:none; margin-top:1px; color:var(--tsc-blue); }
.tsc-footer__addr{ font-weight:500; }
.tsc-footer__addr-hint{ display:block; margin-top:2px; font-weight:400; font-size:12px; color:var(--tsc-ink-45); }
.tsc-footer__hours{
  display:flex;
  align-items:flex-start;
  gap:9px;
  color:var(--tsc-ink-45);
  font-size:13px;
  line-height:1.45;
}
.tsc-footer__social{
  list-style:none;
  margin:16px 0 0;
  padding:0;
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}
.tsc-footer__social a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:36px;
  min-height:36px;
  padding:0 10px;
  border:1px solid var(--tsc-rule);
  border-radius:var(--tsc-radius-sm);
  color:var(--tsc-ink-70);
  font-size:13px;
  font-weight:600;
  text-decoration:none;
  transition:color var(--tsc-dur) var(--tsc-ease), border-color var(--tsc-dur) var(--tsc-ease);
}
.tsc-footer__social a:hover{ color:var(--tsc-blue); border-color:var(--tsc-blue); }
.tsc-footer__social a:focus-visible{ outline:2px solid var(--tsc-blue); outline-offset:2px; }

/* Request-a-callback panel (Fluent Form #3 - presentation only) */
.tsc-footer__callback{
  margin-top:40px;
  max-width:560px;
  background:var(--tsc-white);
  border:1px solid var(--tsc-rule);
  border-radius:var(--tsc-radius-lg);
  padding:clamp(20px,4vw,32px);
  box-sizing:border-box;
}
.tsc-footer__callback .tsc-footer__h{ margin-bottom:16px; }
.tsc-footer__callback form.frm-fluent-form{ display:flex; flex-direction:column; gap:14px; }
.tsc-footer__callback form.frm-fluent-form .ff-el-group{ margin:0; }
.tsc-footer__callback form.frm-fluent-form .ff-el-input--label label{
  display:inline-block;
  margin-bottom:6px;
  font-size:13px;
  font-weight:600;
  color:var(--tsc-ink);
}
.tsc-footer__callback form.frm-fluent-form .ff-el-form-control{
  width:100%;
  box-sizing:border-box;
  min-height:44px;
  padding:10px 14px;
  font:inherit;
  font-size:14px;
  color:var(--tsc-ink);
  background:var(--tsc-white);
  border:1px solid #CBD4E1;
  border-radius:var(--tsc-radius-md);
  transition:border-color var(--tsc-dur) var(--tsc-ease), box-shadow var(--tsc-dur) var(--tsc-ease);
}
.tsc-footer__callback form.frm-fluent-form textarea.ff-el-form-control{ min-height:110px; resize:vertical; }
.tsc-footer__callback form.frm-fluent-form .ff-el-form-control:focus{
  outline:none;
  border-color:var(--tsc-blue);
  box-shadow:0 0 0 3px var(--tsc-blue-050);
}
.tsc-footer__callback form.frm-fluent-form .ff-el-group.ff-name-field-wrapper .ff-t-container{ gap:12px; }
.tsc-footer__callback form.frm-fluent-form .ff-btn-submit,
.tsc-footer__callback form.frm-fluent-form .ff-btn-submit:not(.ff_btn_no_style){
  min-height:46px;
  padding:12px 24px;
  border:0;
  border-radius:var(--tsc-radius-pill);
  background:var(--tsc-amber);
  color:var(--tsc-ink);           /* ink on amber = 7:1 (WCAG AA) */
  font-family:var(--tsc-font);
  font-size:14px;
  font-weight:700;
  letter-spacing:.01em;
  text-transform:none;
  cursor:pointer;
  box-shadow:var(--tsc-shadow-sm);
  transition:transform var(--tsc-dur) var(--tsc-ease), box-shadow var(--tsc-dur) var(--tsc-ease), background var(--tsc-dur) var(--tsc-ease);
}
.tsc-footer__callback form.frm-fluent-form .ff-btn-submit:hover{
  background:var(--tsc-amber-600);
  color:var(--tsc-ink);
  transform:translateY(-2px);
  box-shadow:var(--tsc-shadow-md);
}
.tsc-footer__callback form.frm-fluent-form .ff-btn-submit:focus-visible{ outline:2px solid var(--tsc-ink); outline-offset:2px; }

/* Fluent Forms messages -> Stage-5 success / error language */
.tsc-footer__callback .ff-message-success,
.tsc-footer__callback .ff_submit_msg_success{
  margin:0;
  padding:14px 18px;
  border:1px solid #A7D9BF;
  border-radius:var(--tsc-radius-md);
  background:#E7F5EE;
  color:#12643B;
  font-size:14px;
  font-weight:500;
  line-height:1.5;
}
.tsc-footer__callback .error,
.tsc-footer__callback .ff-el-is-error .text-danger,
.tsc-footer__callback .ff-message-error{
  color:#B42318;
  font-size:12.5px;
}
.tsc-footer__callback .ff-el-form-control.has-error,
.tsc-footer__callback .ff-el-is-error .ff-el-form-control{ border-color:#B42318; }

.tsc-footer__bar{
  margin-top:28px;
  padding-top:18px;
  border-top:1px solid var(--tsc-rule);
}
.tsc-footer__copy{ margin:0; font-size:13px; color:var(--tsc-ink-45); }

/* Footer responsive */
@media (max-width:1024px){
  .tsc-footer__grid{ grid-template-columns:1fr 1fr; gap:36px 28px; }
}
@media (max-width:640px){
  .tsc-footer__grid{ grid-template-columns:1fr; gap:24px; }
  .tsc-footer__callback{ margin-top:28px; max-width:none; }
  .tsc-footer__bar{ margin-top:24px; }
  .tsc-footer__brand{ gap:12px; }
  .tsc-footer__brand .tsc-btn{ align-self:stretch; }
  /* mobile stack: brand -> get in touch -> services -> quick links */
  .tsc-footer__brand{ order:0; }
  .tsc-footer__col--contact{ order:1; }
  .tsc-footer__col[aria-label="Services"]{ order:2; }
  .tsc-footer__col[aria-label="Quick links"]{ order:3; }
}

/* ==========================================================================
   Reduced motion
   ========================================================================== */
@media (prefers-reduced-motion:reduce){
  a.tsc-header-call,
  .tsc-annc__cta,
  #ast-hf-menu-1 > .menu-item > a,
  #ast-hf-menu-1 > .menu-item > a::after,
  #ast-hf-menu-1 .tsc-nav-services .dropdown-menu-toggle .ast-icon svg,
  #ast-hf-menu-1 > .tsc-nav-cta > .menu-link,
  .tsc-footer__links a,
  .tsc-footer__contact-link,
  .tsc-footer__callback .ff-el-form-control,
  .tsc-footer__callback .ff-btn-submit{ transition:none !important; }
  a.tsc-header-call:hover,
  .tsc-annc__cta:hover,
  #ast-hf-menu-1 > .tsc-nav-cta > .menu-link:hover,
  .tsc-footer__callback .ff-btn-submit:hover{ transform:none !important; }
}
