/* Shared Afterlight action system. Primary calls to action use the contact
   button as their visual source; task controls, tabs and map choices remain
   purpose-built controls. */
:root {
  --action-ember: #cc6437;
  --action-ink: #0b0b0b;
  --action-paper: #edebe7;
  --action-radius: 9px;
  --action-ease: cubic-bezier(.16, 1, .3, 1);
  --action-font: var(--site-font-body, 'Archivo', Arial, sans-serif);
  --action-font-size: 11px;
  --action-font-weight: 700;
  --action-line-height: 1;
  --action-tracking: .08em;
  --action-height: 48px;
}

/* Buttons use colour and focus states only; retire the injected corner brackets. */
.signal-lock-frame {
  display: none !important;
}

/* Keep the NSTA action label and chevron optically centred as one unit. */
.home-page .case-study-cta {
  display: grid;
  place-items: center;
}

.home-page .case-study-cta__content {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
}

.home-page .case-study-cta__content svg {
  flex: 0 0 14px;
}

/* Keep primary pricing labels legible on the ember fill. The palette layer
   previously reapplied its muted signal colour to these foregrounds. */
.home-page .pricing-section .pricing-grid .price-plan > a:not(:hover):not(:focus-visible),
.home-page .pricing-section .nexus-panel > a:not(:hover):not(:focus-visible) {
  color: var(--action-ink) !important;
}

.home-page :is(
  .nav-project,
  .hero-action,
  .case-study-cta,
  .pricing-grid .price-plan > a,
  .nexus-panel > a,
  .contact-start,
  .quick-enquiry__actions button,
  .intake-actions button,
  .intake-success a,
  .intake-success button
),
.enquiry-page .enquiry-submit-row button,
.merch-page .merch-card button,
.it-support-page :is(
  .support-desk__contact-action,
  .support-desk__result-action,
  .it-contact-section .contact-start,
  .support-enquiry-actions button,
  .support-enquiry-success button
),
body .button,
.lost-signal-page .lost-signal__copy > a {
  box-sizing: border-box;
  min-height: var(--action-height) !important;
  padding: 0 20px !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  border: 1px solid currentColor;
  border-radius: var(--action-radius) !important;
  box-shadow: none;
  font-family: var(--action-font) !important;
  font-size: var(--action-font-size) !important;
  font-weight: var(--action-font-weight) !important;
  line-height: var(--action-line-height) !important;
  letter-spacing: var(--action-tracking) !important;
  text-align: center;
  text-decoration: none;
  text-transform: uppercase !important;
  transform: none;
  transition:
    background-color 90ms linear,
    border-color 90ms linear,
    color 90ms linear,
    outline-color 90ms linear,
    transform 120ms var(--action-ease);
}

/* Retire the legacy light sweep. It delayed the colour response and forced an
   extra composited animation on every hover. Header links restore their small
   underline below. */
.home-page :is(
  .nav-project,
  .hero-action,
  .pricing-grid .price-plan > a,
  .contact-start,
  .quick-enquiry__actions button,
  .intake-actions button,
  .intake-success a,
  .intake-success button
)::after {
  display: none;
  animation: none;
}

.home-page :is(
  .nav-project,
  .hero-action,
  .case-study-cta,
  .pricing-grid .price-plan > a,
  .nexus-panel > a,
  .contact-start,
  .quick-enquiry__actions button,
  .intake-actions button,
  .intake-success a,
  .intake-success button
):is(:hover, :focus-visible),
.enquiry-page .enquiry-submit-row button:is(:hover, :focus-visible) {
  box-shadow: none;
}

.home-page :is(
  .nav-project,
  .hero-action--primary,
  .case-study-cta,
  .pricing-grid .price-plan > a,
  .nexus-panel > a,
  .contact-start,
  .quick-enquiry__actions button,
  .intake-actions button[type='submit'],
  .intake-success a
),
.enquiry-page .enquiry-submit-row button,
.it-support-page :is(
  .support-desk__contact-action,
  .support-desk__result-action,
  .it-contact-section .contact-start,
  .support-enquiry-actions button[type='submit'],
  .support-enquiry-success button
),
body .button--primary,
.lost-signal-page .lost-signal__copy > a {
  border-color: var(--action-ember);
  background: var(--action-ember) !important;
  color: var(--action-ink) !important;
}

.home-page :is(
  .hero-action--secondary,
  .intake-actions button:not([type='submit']),
  .intake-success button
),
.it-support-page .support-enquiry-actions button:not([type='submit']),
body .button--quiet {
  border-color: currentColor;
  background: transparent;
}

.home-page :is(
  .nav-project,
  .hero-action--primary,
  .case-study-cta,
  .pricing-grid .price-plan > a,
  .nexus-panel > a,
  .quick-enquiry__actions button,
  .intake-actions button[type='submit'],
  .intake-success a
):is(:hover, :focus-visible),
.enquiry-page .enquiry-submit-row button:is(:hover, :focus-visible),
.it-support-page :is(
  .support-desk__contact-action,
  .support-desk__result-action,
  .it-contact-section .contact-start,
  .support-enquiry-actions button[type='submit'],
  .support-enquiry-success button
):is(:hover, :focus-visible),
body .button--primary:is(:hover, :focus-visible),
.lost-signal-page .lost-signal__copy > a:is(:hover, :focus-visible) {
  border-color: var(--action-ink);
  background: var(--action-ink) !important;
  color: var(--action-paper) !important;
  box-shadow: none;
  transform: none;
}

.home-page :is(.hero-action--secondary, .intake-actions button:not([type='submit']), .intake-success button):is(:hover, :focus-visible),
.it-support-page .support-enquiry-actions button:not([type='submit']):is(:hover, :focus-visible),
body .button--quiet:is(:hover, :focus-visible) {
  border-color: var(--action-ink);
  background: var(--action-ink);
  color: var(--action-paper);
  transform: none;
}

/* IT support primary actions invert to bone rather than disappearing into the
   page's black panels. */
.it-support-page :is(
  .support-desk__contact-action,
  .support-desk__result-action,
  .it-contact-section .contact-start,
  .support-enquiry-actions button[type='submit'],
  .support-enquiry-success button
):is(:hover, :focus-visible) {
  border-color: var(--action-paper);
  background: var(--action-paper) !important;
  color: var(--action-ink) !important;
}

/* The primary action fades to ink against the current light hero. */
.home-page .hero .hero-actions > .hero-action--primary {
  transition: background-color 220ms ease, border-color 220ms ease, color 220ms ease;
}

.home-page .hero .hero-actions > .hero-action--primary:is(:hover, :focus-visible) {
  border-color: var(--action-ink) !important;
  background: var(--action-ink) !important;
  background-color: var(--action-ink) !important;
  background-image: none !important;
  color: #fff !important;
}

.home-page .contact-section .contact-start:is(:hover, :focus-visible) {
  border-color: var(--action-paper) !important;
  background: var(--action-paper) !important;
  background-color: var(--action-paper) !important;
  background-image: none !important;
  color: var(--action-ink) !important;
}

.home-page .service-routes article .service-route__cta:is(:hover, :focus-visible) {
  border-color: var(--action-paper) !important;
  background: var(--action-paper) !important;
  background-color: var(--action-paper) !important;
  background-image: none !important;
  color: var(--action-ink) !important;
}

.home-page .hero-action--secondary:is(:hover, :focus-visible) {
  border-color: var(--action-ember);
  background: var(--action-ember) !important;
  color: var(--action-ink) !important;
}

.home-page :is(.nav-project, .hero-action, .case-study-cta, .pricing-grid .price-plan > a, .nexus-panel > a, .contact-start, .intake-actions button, .intake-success a, .intake-success button):focus-visible,
.home-page .quick-enquiry__actions button:focus-visible,
.enquiry-page .enquiry-submit-row button:focus-visible,
.merch-page .merch-card button:focus-visible,
.it-support-page :is(.support-desk__contact-action, .support-desk__result-action, .it-contact-section .contact-start, .support-enquiry-actions button, .support-enquiry-success button):focus-visible,
body :is(.button--primary, .button--quiet):focus-visible,
.lost-signal-page .lost-signal__copy > a:focus-visible {
  outline: 3px solid var(--action-ember);
  outline-offset: 3px;
}

.home-page :is(.nav-project, .hero-action, .case-study-cta, .pricing-grid .price-plan > a, .nexus-panel > a, .contact-start, .intake-actions button, .intake-success a, .intake-success button):active,
.home-page .quick-enquiry__actions button:active,
.enquiry-page .enquiry-submit-row button:active,
.it-support-page :is(.support-desk__contact-action, .support-desk__result-action, .it-contact-section .contact-start, .support-enquiry-actions button, .support-enquiry-success button):active,
body :is(.button--primary, .button--quiet):active,
.lost-signal-page .lost-signal__copy > a:active {
  transform: translateY(1px);
}

@media (max-width: 720px) {
  .home-page :is(.hero-action, .case-study-cta, .pricing-grid .price-plan > a, .nexus-panel > a, .contact-start),
  .home-page .quick-enquiry__actions button,
  .enquiry-page .enquiry-submit-row button,
  .merch-page .merch-card button,
  .it-support-page :is(.support-desk__contact-action, .support-desk__result-action, .it-contact-section .contact-start),
  body :is(.button--primary, .button--quiet),
  .lost-signal-page .lost-signal__copy > a {
    min-height: 48px;
    padding-inline: 18px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .home-page :is(.nav-project, .hero-action, .case-study-cta, .pricing-grid .price-plan > a, .nexus-panel > a, .contact-start, .intake-actions button, .intake-success a, .intake-success button),
  .home-page .quick-enquiry__actions button,
  .enquiry-page .enquiry-submit-row button,
  .merch-page .merch-card button,
  .it-support-page :is(.support-desk__contact-action, .support-desk__result-action, .it-contact-section .contact-start, .support-enquiry-actions button, .support-enquiry-success button),
  body :is(.button--primary, .button--quiet),
  .lost-signal-page .lost-signal__copy > a {
    transition: none;
  }
}

/* Match the Client Portal header CTA exactly across public pages. */
body.home-page .site-nav .nav-links .nav-project,
body.it-support-page .site-nav .nav-links .nav-project {
  position: relative;
  min-width: 157px;
  min-height: 44px !important;
  padding: 8px 20px !important;
  border: 1px solid var(--action-ember);
  border-radius: var(--action-radius);
  background: var(--action-ember) !important;
  color: var(--action-ink) !important;
  box-shadow: none;
  font: var(--action-font-weight) var(--action-font-size)/var(--action-line-height) var(--action-font) !important;
  letter-spacing: var(--action-tracking) !important;
}

body.home-page .site-nav .nav-links .nav-project::after,
body.it-support-page .site-nav .nav-links .nav-project::after {
  content: '';
  position: absolute;
  right: 14px;
  top: auto;
  bottom: 7px;
  left: 14px;
  width: auto;
  display: block;
  height: 1px;
  opacity: 1;
  pointer-events: none;
  background: var(--action-ember);
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform 260ms var(--action-ease);
  animation: none;
}

body.home-page .site-nav .nav-links .nav-project:is(:hover, :focus-visible),
body.it-support-page .site-nav .nav-links .nav-project:is(:hover, :focus-visible) {
  border-color: var(--action-ink);
  background: var(--action-ink) !important;
  color: var(--action-paper) !important;
}

body.home-page .site-nav .nav-links .nav-project:is(:hover, :focus-visible)::after,
body.it-support-page .site-nav .nav-links .nav-project:is(:hover, :focus-visible)::after {
  transform: scaleX(1);
  transform-origin: left center;
  animation: none;
}

@media (max-width: 980px) {
  body.home-page .site-nav .nav-links .nav-project,
  body.it-support-page .site-nav .nav-links .nav-project {
    width: 100%;
  }
}
