/* Additive polish for the public site: motion and light only.
   Layout, colours, type and markup stay exactly as the theme defines them,
   and every moving part obeys the CMS effect switches and the visitor's motion setting. */
@property --nova-orbit {syntax:'<angle>';inherits:false;initial-value:0deg}

[data-nova-public=true] {
  --nova-glow:color-mix(in srgb,var(--nova-signal) 34%,transparent);
  --nova-glow-soft:color-mix(in srgb,var(--nova-signal) 15%,transparent);
}

/* Pricing dropdowns keep the theme's own control; only its motion and light change. */
[data-nova-public=true] .nova :is(.nova-plan-term,.nova-plan-toolbar,.nova-catalog-filter) select {
  cursor:pointer;
  transition:border-color var(--nova-motion-ui,190ms),box-shadow var(--nova-motion-ui,190ms);
}
@supports (appearance:base-select) {
  @media (prefers-reduced-motion:no-preference) {
    [data-nova-public=true]:not([data-nova-effects=reduced]) .nova :is(.nova-plan-term,.nova-plan-toolbar,.nova-catalog-filter) select::picker(select) {
      opacity:0;
      transform:translateY(-6px) scale(.98);
      transform-origin:top;
      transition:opacity .18s ease,transform .24s var(--nova-motion-ease,ease),display .24s allow-discrete,overlay .24s allow-discrete;
    }
    [data-nova-public=true]:not([data-nova-effects=reduced]) .nova :is(.nova-plan-term,.nova-plan-toolbar,.nova-catalog-filter) select:open::picker(select) {
      opacity:1;
      transform:none;
    }
    @starting-style {
      [data-nova-public=true]:not([data-nova-effects=reduced]) .nova :is(.nova-plan-term,.nova-plan-toolbar,.nova-catalog-filter) select:open::picker(select) {
        opacity:0;
        transform:translateY(-6px) scale(.98);
      }
    }
    [data-nova-public=true]:not([data-nova-effects=reduced]) .nova :is(.nova-plan-term,.nova-plan-toolbar,.nova-catalog-filter) select option {
      transition:color .15s,background-color .15s,translate .18s var(--nova-motion-ease,ease);
    }
    [data-nova-public=true]:not([data-nova-effects=reduced]) .nova :is(.nova-plan-term,.nova-plan-toolbar,.nova-catalog-filter) select option:is(:hover,:focus-visible) {
      translate:3px 0;
    }
    [data-nova-public=true]:not([data-nova-effects=reduced]) .nova :is(.nova-plan-term,.nova-plan-toolbar,.nova-catalog-filter) select:open {
      border-color:var(--nova-signal);
      box-shadow:0 0 0 4px var(--nova-glow-soft);
    }
  }
}

@media (prefers-reduced-motion:no-preference) {
  /* Buttons: a soft glow, one sweep of light, and a star that blinks once. */
  [data-nova-public=true]:not([data-nova-effects=reduced]) .nova-button {
    position:relative;
    overflow:hidden;
    isolation:isolate;
    transition:transform .24s var(--nova-motion-ease,ease),background .2s,box-shadow .3s;
  }
  [data-nova-public=true]:not([data-nova-effects=reduced]) .nova-button::after {
    content:'';
    position:absolute;
    inset:0;
    z-index:-1;
    background:linear-gradient(105deg,transparent 34%,#ffffff47 50%,transparent 66%);
    transform:translateX(-120%);
    pointer-events:none;
  }
  [data-nova-public=true]:not([data-nova-effects=reduced]) .nova-button::before {
    content:'';
    position:absolute;
    top:7px;
    right:16px;
    width:9px;
    height:9px;
    background:currentColor;
    clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);
    opacity:0;
    pointer-events:none;
  }
  [data-nova-public=true]:not([data-nova-effects=reduced]) .nova-button svg {
    transition:transform .28s var(--nova-motion-ease,ease);
  }

  /* FAQ: answers unfold instead of jumping open. */
  [data-nova-public=true]:not([data-nova-effects=reduced]) :is(.nova-faq,.nova-source-faq) details {
    interpolate-size:allow-keywords;
    transition:border-color var(--nova-motion-card,300ms);
  }
  [data-nova-public=true]:not([data-nova-effects=reduced]) :is(.nova-faq,.nova-source-faq) details::details-content {
    block-size:0;
    overflow:clip;
    opacity:0;
    transition:block-size .38s var(--nova-motion-ease,ease),opacity .26s ease,content-visibility .38s allow-discrete;
  }
  [data-nova-public=true]:not([data-nova-effects=reduced]) :is(.nova-faq,.nova-source-faq) details[open]::details-content {
    block-size:auto;
    opacity:1;
  }
  [data-nova-public=true]:not([data-nova-effects=reduced]) :is(.nova-faq,.nova-source-faq) details[open] {
    border-bottom-color:var(--nova-glow);
  }
  [data-nova-public=true]:not([data-nova-effects=reduced]) :is(.nova-faq,.nova-source-faq) summary {
    transition:color var(--nova-motion-ui,190ms);
  }
  [data-nova-public=true]:not([data-nova-effects=reduced]) :is(.nova-faq,.nova-source-faq) summary:is(:hover,:focus-visible) {
    color:var(--nova-signal);
  }
  [data-nova-public=true]:not([data-nova-effects=reduced]) :is(.nova-faq,.nova-source-faq) summary span {
    position:relative;
    flex:none;
    transition:transform .36s var(--nova-motion-ease,ease);
  }
  [data-nova-public=true]:not([data-nova-effects=reduced]) .nova-source-faq details[open] summary span {
    transform:rotate(45deg);
  }
  /* The marker sends out one signal ping as an answer opens. */
  [data-nova-public=true]:not([data-nova-effects=reduced]) :is(.nova-faq,.nova-source-faq) details[open] summary span::after {
    content:'';
    position:absolute;
    inset:-5px -8px;
    border:1px solid var(--nova-signal);
    border-radius:50%;
    opacity:0;
    pointer-events:none;
    animation:nova-signal-ping .7s ease-out 1;
  }

  /* Small responses on the controls people touch most. */
  [data-nova-public=true]:not([data-nova-effects=reduced]) .nova-text-link {
    transition:color var(--nova-motion-ui,190ms),text-underline-offset var(--nova-motion-ui,190ms);
  }
  [data-nova-public=true]:not([data-nova-effects=reduced]) :is(.nova-plan-groups a,.nova-plan-views a,.nova-catalog-family>summary) {
    transition:color var(--nova-motion-ui,190ms),background var(--nova-motion-ui,190ms),border-color var(--nova-motion-ui,190ms);
  }
  [data-nova-public=true]:not([data-nova-effects=reduced]) :is(.nova-domain-form input,.nova-plan-toolbar input[type=search],.nova-catalog-filter input) {
    transition:border-color var(--nova-motion-ui,190ms),box-shadow var(--nova-motion-ui,190ms);
  }
  [data-nova-public=true]:not([data-nova-effects=reduced]) .nova :is(.nova-domain-form input,.nova-plan-toolbar input[type=search],.nova-catalog-filter input,.nova-plan-term select,.nova-plan-toolbar select,.nova-catalog-filter select):focus {
    box-shadow:0 0 0 4px var(--nova-glow-soft);
  }

  /* Cards keep their existing lift and gain light. */
  [data-nova-public=true]:not([data-nova-effects=reduced]):not([data-nova-motion-cards=false]) :where(.nova-service,.nova-plan,.nova-source-service,.nova-product-entrypoints>a,.nova-feature-grid>article,.nova-offer) {
    position:relative;
  }

  /* The recommended plan is circled by one slow point of light. */
  [data-nova-public=true]:not([data-nova-effects=reduced]):not([data-nova-motion-cards=false]) :is(.nova-plan,.nova-offer).is-featured::before {
    content:'';
    position:absolute;
    inset:-2px;
    padding:2px;
    border-radius:inherit;
    background:conic-gradient(from var(--nova-orbit),transparent 0 76%,var(--nova-signal) 90%,#fff 94%,var(--nova-signal) 97%,transparent 100%);
    -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
    -webkit-mask-composite:xor;
    mask-composite:exclude;
    pointer-events:none;
    animation:nova-orbit 8s linear infinite paused;
  }
  [data-nova-public=true]:not([data-nova-effects=reduced]):not([data-nova-motion-cards=false]) :is(.nova-plan,.nova-offer).is-featured[data-orbit=on]::before {
    animation-play-state:running;
  }

  @media (hover:hover) and (pointer:fine) {
    [data-nova-public=true]:not([data-nova-effects=reduced]) .nova-button:hover {
      box-shadow:0 10px 26px -10px var(--nova-glow),0 0 0 1px var(--nova-glow-soft);
    }
    [data-nova-public=true]:not([data-nova-effects=reduced]) .nova-button:hover::after {
      transform:translateX(120%);
      transition:transform .75s var(--nova-motion-ease,ease);
    }
    [data-nova-public=true]:not([data-nova-effects=reduced]) .nova-button:hover::before {
      animation:nova-twinkle .8s ease-out 1;
    }
    [data-nova-public=true]:not([data-nova-effects=reduced]) .nova-button:hover svg {
      transform:translateX(3px);
    }
    [data-nova-public=true]:not([data-nova-effects=reduced]) :is(.nova-faq,.nova-source-faq) details:not([open]) summary:hover span {
      transform:scale(1.14);
    }
    [data-nova-public=true]:not([data-nova-effects=reduced]) .nova :is(.nova-plan-term,.nova-plan-toolbar,.nova-catalog-filter) select:hover {
      border-color:var(--nova-signal);
      box-shadow:0 0 0 3px var(--nova-glow-soft);
    }
    [data-nova-public=true]:not([data-nova-effects=reduced]) .nova-text-link:hover {
      color:var(--nova-signal);
      text-underline-offset:8px;
    }
    [data-nova-public=true]:not([data-nova-effects=reduced]):not([data-nova-motion-cards=false]) :is(.nova-service,.nova-plan,.nova-source-service,.nova-product-entrypoints>a,.nova-feature-grid>article,.nova-plan-explorer[data-view=cards] .nova-offer):hover:not(:focus-within) {
      box-shadow:var(--nova-card-shadow),0 0 0 1px var(--nova-glow-soft),0 22px 48px -24px var(--nova-glow);
    }
    [data-nova-public=true]:not([data-nova-effects=reduced]):not([data-nova-motion-cards=false]) .nova-offer:hover {
      box-shadow:var(--nova-card-shadow),0 0 0 1px var(--nova-glow-soft);
    }
    /* A comet crosses the top edge once per hover. */
    [data-nova-public=true]:not([data-nova-effects=reduced]):not([data-nova-motion-cards=false]) :is(.nova-service,.nova-plan,.nova-source-service,.nova-product-entrypoints>a,.nova-feature-grid>article)::after {
      content:'';
      position:absolute;
      top:-1px;
      left:22px;
      right:22px;
      height:1px;
      background:linear-gradient(90deg,transparent,var(--nova-signal),transparent) no-repeat -45% 0/32% 100%;
      opacity:0;
      pointer-events:none;
    }
    [data-nova-public=true]:not([data-nova-effects=reduced]):not([data-nova-motion-cards=false]) :is(.nova-service,.nova-plan,.nova-source-service,.nova-product-entrypoints>a,.nova-feature-grid>article):hover::after {
      animation:nova-comet 1s var(--nova-motion-ease,ease) 1;
    }
  }
}

@keyframes nova-orbit {to {--nova-orbit:360deg}}
@keyframes nova-twinkle {
  0% {opacity:0;transform:scale(.2) rotate(0)}
  45% {opacity:.95;transform:scale(1) rotate(45deg)}
  100% {opacity:0;transform:scale(.4) rotate(90deg)}
}
@keyframes nova-comet {
  0% {opacity:0;background-position:-45% 0}
  18% {opacity:1}
  82% {opacity:1}
  100% {opacity:0;background-position:145% 0}
}
@keyframes nova-signal-ping {
  0% {opacity:.7;transform:scale(.55)}
  100% {opacity:0;transform:scale(1.5)}
}
.nova-plan-finder-link { margin: 0 0 12px; text-align: right; }
