/* Opt-in motion for the warm homepage. The original site-wide reset stays intact. */
body.icb-warm .home-button {position:relative;isolation:isolate;overflow:hidden}
body.icb-warm .home-button-label,body.icb-warm .home-button>.home-action-arrow {position:relative;z-index:1}
body.icb-warm .home-button:not(.home-button-secondary)::after {
 content:"";position:absolute;z-index:2;inset:auto 0 0;height:2px;pointer-events:none;
 background:#f9b700;transform:scaleX(0);transform-origin:left;opacity:0;
}
body.icb-warm .home-button[data-shimmer]::before {
 content:"";position:absolute;z-index:0;inset:-15% -50%;pointer-events:none;
 background:linear-gradient(110deg,transparent 42%,rgb(255 255 255 / .09) 50%,transparent 58%);
 transform:translateX(-100%);
}
body.icb-warm .home-hero .home-button[data-shimmer]::before {
 background:linear-gradient(110deg,transparent 42%,rgb(249 183 0 / .14) 50%,transparent 58%);
}
body.icb-warm .home-button:active:not(.home-button-secondary) {background:#25241f;color:#fffefa}
body.icb-warm .home-hero .home-button:active {background:#f6f4ec;color:#25241f}
/* The hero uses a complete outline instead of the lower-edge sweep. */
body.icb-warm .home-hero-action::after {display:none}
@keyframes icb-hero-arrow-drift {0%,55%,85%,100%{transform:translateX(0)}70%{transform:translateX(3px)}}
/* Approved option B: the decorative stroke reverses smoothly when hover ends. */
body.icb-warm .home-audience-card {position:relative;isolation:isolate}
body.icb-warm :is(.home-audience-frame,.home-hero-frame) {
 position:absolute;z-index:2;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;
}
body.icb-warm :is(.home-audience-frame,.home-hero-frame) path {
 fill:none;stroke:#f9b700;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;opacity:0;
 /* Slight overlap leaves a continuous join at the end of the closed 1000-unit path. */
 stroke-dasharray:1001 1001;stroke-dashoffset:1001;vector-effect:non-scaling-stroke;
}
body.icb-warm .home-hero-frame path {stroke-width:1}
body.icb-warm .home-audience-card:focus-visible .home-audience-frame path {stroke-dashoffset:0;opacity:1;transition-delay:0s!important}
body.icb-warm .home-hero-action:focus-visible .home-hero-frame path {stroke-dashoffset:0;opacity:1;transition-delay:0s!important}
/* Header Contact buttons and the contact form's Send button draw the audience cards' gold
   outline (owner, 31 Oct 2026); other buttons keep their lower-edge sweep. The frame sits over
   the button's own 1px edge and half a pixel past it, so the gold runs to the outer edge with no
   dark rim; the edge keeps the button colour on hover so nothing shows before the line arrives.
   The line starts in the button colour and warms to yellow as it draws, so it eases in. The
   leftover Squarespace hover wipe painted a white box over the header buttons and hid the
   label, so it is switched off. */
body.icb-home :is(.sqs-button-element--primary,.sqsp-button-primary)::before {content:none!important}
body.icb-warm :is(#header .header-actions-action--cta a,#header .header-menu-cta a,form[data-local-contact] button[type=submit]) {position:relative;isolation:isolate;overflow:visible}
body.icb-warm :is(#header .header-actions-action--cta a,#header .header-menu-cta a,form[data-local-contact] button[type=submit]) .home-audience-frame {inset:-1.5px;width:calc(100% + 3px);height:calc(100% + 3px)}
body.icb-warm :is(#header .header-actions-action--cta a,#header .header-menu-cta a,form[data-local-contact] button[type=submit]) .home-audience-frame path {stroke:var(--warm-ink,#25241f)}
body.icb-warm form[data-local-contact] button[type=submit]::after {display:none}
body.icb-home.icb-warm form[data-local-contact] button[type=submit]:is(:hover,:focus-visible) {border-color:var(--warm-ink)}
body.icb-warm :is(#header .header-actions-action--cta a,#header .header-menu-cta a,form[data-local-contact] button[type=submit]):focus-visible .home-audience-frame path {stroke:#f9b700;stroke-dashoffset:0;opacity:1;transition-delay:0s!important}
/* Hero button: its outline also runs over the edge, so it lines up with the button's border
   (owner, 31 Oct 2026). It no longer clips, so the arrow panel rounds its own corners and the
   sheen moves its gradient instead of the layer. */
body.icb-warm .home-button.home-hero-action {overflow:visible}
body.icb-warm .home-hero-action .home-hero-frame {inset:-1.5px;width:calc(100% + 3px);height:calc(100% + 3px)}
body.icb-warm .home-hero-action .home-hero-frame path {stroke-width:2}
body.icb-home.icb-warm .home-hero-action .home-hero-arrow-panel {border-radius:0 5px 5px 0}
body.icb-warm .home-hero .home-button.home-hero-action[data-shimmer]::before {
 inset:0;border-radius:inherit;transform:none;
 background:linear-gradient(110deg,transparent 42%,rgb(249 183 0 / .14) 50%,transparent 58%) no-repeat 120% 0/200% 100%;
}
@keyframes icb-button-sheen-in-place {from{background-position:120% 0}to{background-position:-20% 0}}
@media(hover:hover) and (pointer:fine) {
 body.icb-warm .home-audience-card:hover .home-audience-frame path {stroke-dashoffset:0;opacity:1;transition-delay:0s!important}
 body.icb-warm .home-hero-action:hover .home-hero-frame path {stroke-dashoffset:0;opacity:1;transition-delay:0s!important}
 body.icb-warm :is(#header .header-actions-action--cta a,#header .header-menu-cta a,form[data-local-contact] button[type=submit]):hover .home-audience-frame path {stroke:#f9b700;stroke-dashoffset:0;opacity:1;transition-delay:0s!important}
}
/* Touch screens have no hover (owner, 31 Oct 2026), so the exact desktop hover runs down the
   "Who are we helping" cards as a wave: the gold line draws round, the edge turns gold, the
   background lightens and the arrow steps forward, then it all eases back
   (homepage-motion.js adds .is-outlined). Dark buttons nudge their arrow every few seconds.
   Both stop for visitors who ask for reduced motion. local.css resets every animation with
   !important, so these need it too. */
@media (hover:none) {
 html.icb-home-motion body.icb-warm .home-audience-card.is-outlined {background:#fffdf5;border-color:#f9b700;box-shadow:0 4px 16px rgb(37 36 31 / .06)}
 html.icb-home-motion body.icb-warm .home-audience-card.is-outlined .home-audience-frame path {stroke-dashoffset:0;opacity:1;transition-delay:0s!important}
 html.icb-home-motion body.icb-warm .home-audience-card.is-outlined .home-action-arrow {transform:translateX(3px)}
 html.icb-home-motion body.icb-warm .home-button:not(.home-button-secondary):not(.home-hero .home-button) .home-action-arrow {animation:icb-hero-arrow-drift 6s cubic-bezier(.45,0,.55,1) infinite!important}
}
body.icb-warm .home-audience-card:focus-visible {border-color:#f9b700;background:#fffefa}
body.icb-warm .home-audience-card:active {background:#f6f4ec}
body.icb-warm .home-main .accordion-item__dropdown[data-warm-accordion] {
 display:grid!important;grid-template-rows:var(--icb-accordion-row,0fr);
 height:auto!important;visibility:visible!important;overflow:hidden;
}
body.icb-warm .home-main .accordion-item__dropdown[data-warm-accordion][hidden] {display:none!important}
body.icb-warm .warm-accordion-inner {min-height:0;overflow:hidden}
@keyframes icb-button-sheen {from{transform:translateX(-100%)}to{transform:translateX(100%)}}
@keyframes icb-button-edge {
 0%{transform:scaleX(0);opacity:1}70%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1);opacity:0}
}
@media print {
 body.icb-warm :is(.home-photo,.home-quote) {opacity:1!important;transform:none!important}
}
@media(prefers-reduced-motion:no-preference) {
 html.icb-home-motion body.icb-warm .home-photo[data-photo-motion="pending"] {
  opacity:0;transform:translate3d(0,24px,0);
 }
 html.icb-home-motion {scroll-behavior:smooth!important}
 html.icb-home-motion body.icb-warm :is(.home-audience-frame,.home-hero-frame) path {
  transition:stroke-dashoffset 640ms cubic-bezier(.25,.1,.25,1),opacity 0s linear 640ms!important;
 }
 html.icb-home-motion body.icb-warm :is(#header .header-actions-action--cta a,#header .header-menu-cta a,form[data-local-contact] button[type=submit]) .home-audience-frame path {
  transition:stroke-dashoffset 640ms cubic-bezier(.25,.1,.25,1),stroke 850ms cubic-bezier(.45,0,.55,1),opacity 0s linear 640ms!important;
 }
 html.icb-home-motion body.icb-warm :is(#header .header-actions-action--cta a,#header .header-menu-cta a,form[data-local-contact] button[type=submit]):is(:hover,:focus-visible) .home-audience-frame path {transition-delay:0s!important}
 html.icb-home-motion body.icb-warm .home-button,
 html.icb-home-motion body.icb-warm .home-audience-card,
 html.icb-home-motion body.icb-warm #header .header-actions-action--cta a {
  transition:background-color 200ms ease,border-color 200ms ease,color 200ms ease,box-shadow 200ms ease!important;
 }
 html.icb-home-motion body.icb-warm .home-action-arrow {transition:transform 200ms ease!important}
 html.icb-home-motion body.icb-warm .home-hero-arrow-panel {transition:background-color 200ms ease!important}
 html.icb-home-motion body.icb-warm .home-hero-action:not(:hover):not(:focus-visible) .home-action-arrow {
  animation:icb-hero-arrow-drift 6s cubic-bezier(.45,0,.55,1) infinite!important;
 }
 html.icb-home-motion body.icb-warm .home-hero-action[data-hero-visible=false] .home-action-arrow {animation-play-state:paused!important}
 html.icb-home-motion body.icb-warm :is(.home-button,.home-audience-card):focus-visible .home-action-arrow {transform:translateX(3px)}
 html.icb-home-motion body.icb-warm .home-button[data-shimmer]:focus-visible::before {animation:icb-button-sheen 650ms ease-out 1!important}
 html.icb-home-motion body.icb-warm .home-hero .home-button.home-hero-action[data-shimmer]:focus-visible::before {animation:icb-button-sheen-in-place 650ms ease-out 1!important}
 html.icb-home-motion body.icb-warm .home-button:not(.home-button-secondary):focus-visible::after {animation:icb-button-edge 580ms ease-out 1 both!important}
 html.icb-home-motion body.icb-warm .home-chevron {transition:transform 180ms ease!important}
 html.icb-home-motion body.icb-warm .home-main .accordion-item__dropdown[data-warm-accordion] {
  transition:grid-template-rows 240ms cubic-bezier(.22,1,.36,1)!important;
 }
 html.icb-home-motion body.icb-warm #header .header-menu {
  opacity:0;visibility:hidden;transform:translateY(-4px);
  transition:opacity 180ms ease,transform 180ms ease,visibility 0s linear 180ms!important;
 }
 html.icb-home-motion body.icb-warm.local-menu-open #header .header-menu {
  transform:translateY(0);transition-delay:0s!important;
 }
 /* Desktop dropdown only: the phone menu's language folder keeps the normal menu styles. */
 html.icb-home-motion body.icb-warm #header .language-picker-desktop .language-picker-content {
  display:block!important;opacity:0!important;visibility:hidden!important;pointer-events:none;transform:translateY(-4px);
  transition:opacity 160ms ease,transform 160ms ease,visibility 0s linear 160ms!important;
 }
 html.icb-home-motion body.icb-warm #header .language-picker-desktop[data-open="true"] .language-picker-content {
  opacity:1!important;visibility:visible!important;pointer-events:auto;transform:translateY(0);transition-delay:0s!important;
 }
 @media(hover:hover) and (pointer:fine) {
  html.icb-home-motion body.icb-warm :is(.home-button,.home-audience-card):hover .home-action-arrow {transform:translateX(3px)}
  html.icb-home-motion body.icb-warm .home-button[data-shimmer]:hover::before {animation:icb-button-sheen 650ms ease-out 1!important}
  html.icb-home-motion body.icb-warm .home-hero .home-button.home-hero-action[data-shimmer]:hover::before {animation:icb-button-sheen-in-place 650ms ease-out 1!important}
  html.icb-home-motion body.icb-warm .home-button:not(.home-button-secondary):hover::after {animation:icb-button-edge 580ms ease-out 1 both!important}
  html.icb-home-motion body.icb-warm .home-audience-card:hover {border-color:#f9b700;box-shadow:0 4px 16px rgb(37 36 31 / .06)}
 }
 @media(max-width:767px) {
  html.icb-home-motion body.icb-warm .home-photo[data-photo-motion="pending"] {transform:translate3d(0,16px,0)}
  html.icb-home-motion body.icb-warm .home-main .accordion-item__dropdown[data-warm-accordion] {transition-duration:200ms!important}
 }
 @media(min-width:768px) {
  html.icb-home-motion body.icb-warm .home-quotes[data-quote-motion="pending"] .home-quote {opacity:0;transform:translate3d(0,18px,0)}
 }
}
