/* A3E interaction language: quiet surfaces, precise feedback, restrained lift.
   Only controls that are clickable as a whole lift; text and navigation stay put. */
:root {
  --interaction-duration: 180ms;
  --interaction-ease: cubic-bezier(.22,.61,.36,1);
  --interaction-border: color-mix(in srgb,var(--ink) 35%,var(--rule));
  --interaction-shadow: 0 3px 9px -4px color-mix(in srgb,var(--ink) 20%,transparent);
}
:is(a[href],button,summary,[role="tab"],[role="option"]):not(svg *) {
  transition: color var(--interaction-duration) var(--interaction-ease),
    background-color var(--interaction-duration) var(--interaction-ease),
    border-color var(--interaction-duration) var(--interaction-ease),
    box-shadow var(--interaction-duration) var(--interaction-ease),
    transform var(--interaction-duration) var(--interaction-ease),
    text-decoration-color var(--interaction-duration) var(--interaction-ease);
}
/* Text links keep a local underline; no full-width sweeps across buttons. */
:is(.ulink,.plink,.linkbtn,a[href]:not(.btn):not(.brand):not(.staff-nav a)) {
  text-decoration-line: underline;
  text-decoration-color: transparent;
  text-decoration-thickness: 1px;
  text-underline-offset: .25em;
}
.ulink { border-bottom-color: transparent; }
/* These containers are not links. Keep their contents steady when hovered. */
.cloud-card:hover { box-shadow: none; border-color: var(--rule); }
:is(.sx-g figure,.h-way,.h-strip figure):hover img,
.member-preview-visual:hover .member-plan-image { transform: none; }
.service-options button:hover { transform: none; }

@media (hover: hover) and (pointer: fine) {
  /* Primary actions: a denser finish and a one-pixel lift. */
  body .btn:not(.ghost):not(.cloud-danger):not(:disabled):not([aria-disabled="true"]):hover,
  #v-home #heroSearch .srow .btn:not(:disabled):hover,
  #v-report #rpSearch .live-search-row>.btn:not(:disabled):hover {
    background: var(--act-d);
    border-color: var(--act-d);
    color: var(--inverse);
    transform: translateY(-1px);
    box-shadow: var(--interaction-shadow);
  }
  /* Secondary controls gain definition without competing with the primary. */
  body .btn.ghost:not(:disabled):not([aria-disabled="true"]):hover {
    background: var(--sage-wash);
    border-color: var(--interaction-border);
    transform: none;
    box-shadow: none;
  }
  /* A card lifts only when its entire surface is an action. */
  #v-report .rp-samples button:not(:disabled):hover,
  .member-choice:not(:disabled):not([aria-disabled="true"]):hover,
  .service-options button:not(:disabled):hover,
  .lotbtn:not(:disabled):hover {
    transform: translateY(-2px);
    border-color: var(--interaction-border);
    box-shadow: var(--interaction-shadow);
  }
  .member-choice:not([aria-pressed="true"]):not(:disabled):hover,
  #v-report .rp-samples button:not(:disabled):hover { background: var(--surface); }
  .member-choice[aria-pressed="true"]:hover { border-color: var(--sage-deep); }
  /* Navigation, tabs, disclosures and utility controls remain anchored. */
  :is(.nav button,.myp,.av,.page-guide button,summary):not(:disabled):hover {
    color: var(--sage-deep);
    transform: none;
    box-shadow: none;
  }
  #how .journey-picker button:not([aria-selected="true"]):hover,
  :is(.toggle,.scan-mode,.tp-tabs,.hybrid-tabs) button:not([aria-pressed="true"]):not([aria-selected="true"]):hover {
    background: var(--sage-wash);
    color: var(--ink);
    transform: none;
  }
  :is(.ulink,.plink,.linkbtn,a[href]:not(.btn):not(.brand):not(.staff-nav a)):not(:disabled):not([aria-disabled="true"]):hover {
    text-decoration-color: currentColor;
    transform: none;
    box-shadow: none;
  }
  .foot :is(a,button):hover { color: var(--inverse); }
  /* A press settles back into the surface. No overshoot or bounce. */
  body .btn:not(:disabled):active,
  #v-home #heroSearch .srow .btn:not(:disabled):active,
  #v-report #rpSearch .live-search-row>.btn:not(:disabled):active,
  #v-report .rp-samples button:not(:disabled):active,
  .member-choice:not(:disabled):active,
  .service-options button:not(:disabled):active,
  .lotbtn:not(:disabled):active {
    transform: translateY(0);
    box-shadow: none;
    transition-duration: 80ms;
  }
}
/* Keyboard users get a clear, stationary indication, independent of hover. */
:is(a[href],button,summary,[role="tab"],[role="option"]):not(svg *):focus-visible {
  outline: 2px solid var(--sage-deep);
  outline-offset: 4px;
}
:is(.ulink,.plink,.linkbtn,a[href]:not(.btn):not(.brand)):focus-visible {
  text-decoration-color: currentColor;
}
.foot :is(a,button):focus-visible { outline-color: var(--inverse); }
:is(button,.btn):is(:disabled,[aria-disabled="true"]) {
  transform: none !important;
  box-shadow: none !important;
  transition: none !important;
}
.brand,.brand * { background-image: none; text-decoration: none; box-shadow: none; }
@media (hover: none), (pointer: coarse) {
  :is(.ulink,.plink,.linkbtn,a[href]:not(.btn):not(.brand):not(.staff-nav a)) { text-decoration-color: currentColor; }
  body .btn:hover,#v-home #heroSearch .srow .btn:hover,
  #v-report #rpSearch .live-search-row>.btn:hover,
  #v-report .rp-samples button:hover,.member-choice:hover,.service-options button:hover,.lotbtn:hover {
    transform: none;
    box-shadow: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  :is(a[href],button,summary,[role="tab"],[role="option"]):not(svg *) { transition: none !important; }
  body .btn:hover,#v-home #heroSearch .srow .btn:hover,
  #v-report #rpSearch .live-search-row>.btn:hover,
  #v-report .rp-samples button:hover,.member-choice:hover,.service-options button:hover,.lotbtn:hover {
    transform: none !important;
  }
}
@media print {
  :is(a[href],button,summary) { box-shadow: none !important; transform: none !important; }
}
