/* Public-site interaction layer. Usage and extension rules: ../MICROINTERACTIONS.md.
 * Shared states, tokens and keyframes live here; custom widget visual motion
 * lives in each widget's stylesheet. JS only sets states.
 * Existing cinematic hero/phone timelines retain ownership of their transforms.
 * Logos stay static. Rails are operated by the visitor, with no autoplay.
 */
body.wptream_dura_site {
  --mi-fast: 160ms;
  --mi-medium: 280ms;
  --mi-reveal: 700ms;
  --mi-ease: cubic-bezier(.22, 1, .36, 1);
  --mi-shadow: 0 10px 28px rgb(29 29 40 / 9%);
  --wptream_dura_dur_fast: var(--mi-fast);
  --wptream_dura_dur_med: var(--mi-medium);
  --wptream_dura_dur_slow: var(--mi-reveal);
  --wptream_dura_ease_out: var(--mi-ease);
}

/* Buttons, icon buttons, tabs, form fields and disclosure controls. */
body.wptream_dura_site :is(.elementor-button, .wptream_dura_btn, .wptream_dura_icon_btn,
  .wpstream_start_register, .elementor-price-table__button, .elementor-menu-toggle,
  .wptream_dura_tabs_tab, .wptream_dura_disclosure_trigger, .wps-pricing-help,
  .wpstream-editorial-slider__paddle, .mi-step-button) {
  transition: color var(--mi-fast) ease, background-color var(--mi-fast) ease,
    border-color var(--mi-fast) ease, box-shadow var(--mi-medium) var(--mi-ease),
    transform var(--mi-medium) var(--mi-ease), opacity var(--mi-fast) ease;
}
body.wptream_dura_site :is(a, button, summary, [tabindex="0"]):focus-visible {
  outline: 3px solid var(--wptream_dura_accent, #4e2ee6);
  outline-offset: 4px;
}
body.wptream_dura_site :is(.elementor-button, .wptream_dura_btn, .mi-step-button):active:not(:disabled):not([aria-disabled="true"]) {
  transform: scale(.985);
}
body.wptream_dura_site :is(.wptream_dura_input, .wptream_dura_select, input:not([type="hidden"]), textarea, select) {
  transition: border-color var(--mi-fast) ease, box-shadow var(--mi-fast) ease, background-color var(--mi-fast) ease;
}
body.wptream_dura_site :is(input:not([type="hidden"]), textarea, select):focus-visible {
  outline: 2px solid var(--wptream_dura_accent, #4e2ee6);
  outline-offset: 2px;
}
body.wptream_dura_site :is(.wptream_dura_switch_thumb, .wptream_dura_disclosure_toggle, .sub-arrow) {
  transition: transform var(--mi-medium) var(--mi-ease), background-color var(--mi-fast) ease;
}

/* Existing text CTAs get a decorative arrow without changing their names. */
body.wptream_dura_site .mi-cta-arrow {
  display: inline-block;
  width: .45em;
  height: .45em;
  flex: 0 0 auto;
  margin-inline-start: .6em;
  border-top: 1.5px solid currentColor;
  border-right: 1.5px solid currentColor;
  transform: rotate(45deg);
  transition: translate var(--mi-medium) var(--mi-ease);
}
body.wptream_dura_site .mi-text-cta { display: inline-flex; align-items: center; }
body.wptream_dura_site .mi-text-cta:focus-visible .mi-cta-arrow { translate: 3px 0; }

/* Shared cards: surface feedback on informational cards, stronger feedback on links. */
body.wptream_dura_site :is(.wpstream_home_feature_tile, .wpstream_home_review_card, .wptream_dura_review_card,
  .wptream_dura_card, .wptream_dura_blog_card, .wps-pricing-card) {
  transition: box-shadow var(--mi-medium) var(--mi-ease), border-color var(--mi-fast) ease,
    transform var(--mi-medium) var(--mi-ease);
}
body.wptream_dura_site :is(.wptream_dura_blog_card_media img, .wpstream_home_feature_graphic img) {
  transition: transform var(--mi-reveal) var(--mi-ease);
}
body.wptream_dura_site :is(.wpstream_home_review_card, .wptream_dura_review_card, .wptream_dura_blog_card, .wps-pricing-card):focus-within {
  box-shadow: var(--mi-shadow);
}
body.wptream_dura_site :is(.wptream_dura_blog_card, .wpstream_home_review_card, .wptream_dura_review_card):focus-within a {
  text-decoration: underline;
  text-underline-offset: .2em;
}
@media (hover: hover) and (pointer: fine) {
  body.wptream_dura_site :is(.elementor-button, .wptream_dura_btn):hover:not([aria-disabled="true"]) {
    transform: translateY(-1px);
  }
  body.wptream_dura_site .mi-text-cta:hover .mi-cta-arrow { translate: 3px 0; }
  body.wptream_dura_site :is(.wpstream_home_feature_tile, .wpstream_home_review_card, .wptream_dura_review_card,
    .wptream_dura_card, .wps-pricing-card):hover { box-shadow: var(--mi-shadow); }
  body.wptream_dura_site .wptream_dura_blog_card:hover { transform: translateY(-2px); }
  body.wptream_dura_site :is(.wptream_dura_blog_card:hover .wptream_dura_blog_card_media img,
    .wpstream_home_feature_tile:hover .wpstream_home_feature_graphic img) { transform: scale(1.025); }
  body.wptream_dura_site :is(.wpstream_home_review_card:hover .elementor-button, .wptream_dura_review_card:hover .wptream_dura_review_link) {
    text-decoration: underline;
    text-underline-offset: .2em;
  }
}

/* Native Elementor menus retain their existing open/close and focus logic. */
body.wptream_dura_site .elementor-location-header { position: relative; z-index: 51; }
body.wptream_dura_site::after {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 40;
  pointer-events: none;
  background: rgb(15 12 28 / 12%);
  opacity: 0;
  transition: opacity var(--mi-medium) ease;
}
body.wptream_dura_site.mi-menu-open::after { opacity: 1; }
body.wptream_dura_site .wptream_dura_nav .elementor-nav-menu--dropdown {
  animation-duration: var(--mi-medium);
  animation-timing-function: var(--mi-ease);
}
body.wptream_dura_site .wptream_dura_nav [aria-expanded="true"] .sub-arrow { transform: rotate(180deg); }
body.wptream_dura_site .wptream_dura_nav .elementor-nav-menu__container[aria-hidden="false"] > ul > li {
  animation: mi-menu-in var(--mi-medium) var(--mi-ease) both;
  animation-delay: calc(var(--mi-index, 0) * 35ms);
}
body.wptream_dura_site .wptream_dura_nav .elementor-menu-toggle.elementor-active :is(svg, i) {
  animation: mi-menu-in var(--mi-medium) var(--mi-ease);
}
body.wptream_dura_site :is(.wptream_dura_footer a, .wptream_dura_nav a, .elementor-search-form__container) {
  transition: color var(--mi-fast) ease, background-color var(--mi-fast) ease,
    box-shadow var(--mi-medium) var(--mi-ease), transform var(--mi-medium) var(--mi-ease);
}
body.wptream_dura_site .elementor-search-form__container:focus-within { box-shadow: 0 0 0 3px rgb(78 46 230 / 15%); }
body.wptream_dura_site :is(.wptream_dura_dialog:not([hidden]) .wptream_dura_dialog_box,
  .wps-pricing-tooltip:not([hidden]), .wptream_dura_faq details[open] > :not(summary)) {
  animation: mi-menu-in var(--mi-medium) var(--mi-ease);
}

/* JS arms observed elements before they enter, preventing a visible first frame.
 * Unenhanced content is visible by default, including when JavaScript is off. */
body.wptream_dura_site .mi-reveal-pending { opacity: 0; translate: 0 32px; }
body.wptream_dura_site .mi-reveal-pending:focus-within { opacity: 1; translate: none; }
body.wptream_dura_site .mi-reveal { animation: mi-reveal var(--mi-reveal) var(--mi-ease) both; animation-delay: var(--mi-delay, 0ms); }
/* Fade an outer row when its video, hero, or slider animates internal transforms. */
body.wptream_dura_site .mi-row-fade.mi-reveal-pending { translate: none; }
body.wptream_dura_site .mi-row-fade.mi-reveal { animation-name: mi-row-fade; }
body.wptream_dura_site .mi-image-ready { animation: mi-image-in var(--mi-medium) ease both; }
body.wptream_dura_site .mi-feature-revealed .mi-reveal { animation-duration: 850ms; }
body.wptream_dura_site .mi-feature-media { animation: mi-feature-media 950ms var(--mi-ease) 160ms both; }
body.wptream_dura_site .mi-step-reveal.mi-reveal {
  animation-duration: 850ms;
  animation-delay: var(--mi-step-delay, 0ms);
}
@media (max-width: 1024px) {
  body.wptream_dura_site .mi-step-reveal.mi-reveal { animation-delay: 0ms; }
}
@keyframes mi-reveal { from { opacity: 0; translate: 0 32px; } to { opacity: 1; translate: 0 0; } }
@keyframes mi-row-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes mi-feature-media { from { opacity: 0; translate: 28px 0; } to { opacity: 1; translate: 0 0; } }
@keyframes mi-image-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes mi-menu-in { from { opacity: 0; translate: 0 -6px; } to { opacity: 1; translate: 0 0; } }

/* Controls appear only when the existing step track actually overflows. */
body.wptream_dura_site .mi-step-controls {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
  width: calc(100% - 48px);
  max-width: 1180px;
  margin: 0 auto;
}
body.wptream_dura_site .mi-step-controls[hidden] { display: none; }
body.wptream_dura_site .mi-step-status { font-size: 14px; color: #62626a; margin-inline-end: 8px; font-variant-numeric: tabular-nums; }
body.wptream_dura_site .mi-step-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: #ededf0;
  color: #1d1d1f;
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
}
body.wptream_dura_site .mi-step-button:hover:not(:disabled) { background: #dedee5; }
body.wptream_dura_site .mi-step-button:disabled { opacity: .35; cursor: default; }
@media (hover: hover) and (pointer: fine) {
  body.wptream_dura_site .mi-draggable { cursor: grab; }
}
body.wptream_dura_site .mi-dragging { cursor: grabbing; user-select: none; scroll-snap-type: none !important; scroll-behavior: auto !important; }

/* Back to top: fades/lifts in once the page is scrolled (runtime class
   mi-back-to-top-visible, set by microinteraction.js). visibility keeps the
   hidden button out of the tab order; its delay lets the fade-out finish.
   Hidden while the mobile menu is open. */
body.wptream_dura_site .wptream_dura_back_to_top {
  opacity: 0;
  visibility: hidden;
  translate: 0 8px;
  transition: opacity var(--mi-medium) var(--mi-ease), translate var(--mi-medium) var(--mi-ease),
    visibility 0s linear var(--mi-medium), background-color var(--mi-fast) ease, box-shadow var(--mi-fast) ease;
}
body.wptream_dura_site .wptream_dura_back_to_top.mi-back-to-top-visible {
  opacity: 1;
  visibility: visible;
  translate: 0 0;
  transition-delay: 0s;
}
body.wptream_dura_site .wptream_dura_back_to_top.mi-back-to-top-visible:hover { translate: 0 -2px; }
body.wptream_dura_site .wptream_dura_back_to_top.mi-back-to-top-visible:active { translate: 0 0; scale: .96; }
body.wptream_dura_site.mi-menu-open .wptream_dura_back_to_top { opacity: 0; visibility: hidden; }

/* Editor, print and reduced motion always expose the content immediately. */
body.elementor-editor-active :is(.mi-reveal, .mi-image-ready, .mi-feature-media) { animation: none !important; }
body.elementor-editor-active .mi-reveal-pending { opacity: 1; translate: none; }
body.elementor-editor-active::after { display: none; }
@media (prefers-reduced-motion: reduce) {
  body.wptream_dura_site { --mi-fast: 0ms; --mi-medium: 0ms; --mi-reveal: 0ms; }
  body.wptream_dura_site .mi-reveal-pending { opacity: 1; translate: none; }
  body.wptream_dura_site :is(.mi-reveal, .mi-image-ready, .mi-feature-media, .elementor-nav-menu--dropdown,
    .elementor-nav-menu__container li, .elementor-menu-toggle svg, .elementor-menu-toggle i,
    .wptream_dura_dialog_box, .wps-pricing-tooltip, .wptream_dura_faq details > *) { animation: none !important; }
  body.wptream_dura_site :is(.mi-cta-arrow, .mi-text-cta, .elementor-button, .wptream_dura_btn,
    .wptream_dura_blog_card, .wptream_dura_blog_card_media img,
    .wpstream_home_feature_graphic img, .wptream_dura_footer a) { transition: none !important; translate: none !important; transform: none !important; }
}
@media print {
  body.wptream_dura_site::after, .mi-step-controls, .wptream_dura_back_to_top { display: none !important; }
  .mi-reveal, .mi-image-ready, .mi-feature-media { animation: none !important; }
  .mi-reveal-pending { opacity: 1 !important; translate: none !important; }
}
