/* ============================================================
 * Nova Builder — Frontend CSS
 * Styles for rendered pages. Zero !important. CSS custom props.
 * ============================================================ */

:root {
  --nova-max-width: 1200px;
  --nova-gap:       30px;
}

/* ── Section ─────────────────────────────────────────────── */
.nova-section {
  position: relative;
  width: 100%;
}
.nova-section--stretched {
  width: 100vw;
  margin-left: calc(50% - 50vw);
}
.nova-section__inner {
  max-width: var(--nova-max-width);
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
}
.nova-section--full-width .nova-section__inner {
  max-width: 100%;
}

/* ── Column ──────────────────────────────────────────────── */
.nova-column {
  flex: 1 1 0%;
  min-width: 0;
  padding: 0 calc(var(--nova-gap) / 2);
}
.nova-column__inner {
  display: flex;
  flex-direction: column;
  gap: 20px;
  height: 100%;
}

/* ── Widget ──────────────────────────────────────────────── */
.nova-widget {
  position: relative;
}
.nova-widget__inner { width: 100%; }

/* ── Heading ─────────────────────────────────────────────── */
.nova-heading { margin: 0; }

/* ── Text ────────────────────────────────────────────────── */
.nova-text-editor { line-height: 1.7; }
.nova-text-editor p { margin: 0 0 1em; }
.nova-text-editor p:last-child { margin-bottom: 0; }

/* ── Image ───────────────────────────────────────────────── */
.nova-image { margin: 0; }
.nova-image__img { max-width: 100%; display: block; }
.nova-image__caption { font-size: .85em; color: #6b7280; text-align: center; margin-top: 6px; }
.nova-image--placeholder { background: #f3f4f6; border: 2px dashed #d1d5db; border-radius: 6px; padding: 40px 20px; text-align: center; color: #9ca3af; }

/* ── Button ──────────────────────────────────────────────── */
.nova-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  font-family: inherit;
  cursor: pointer;
  border: none;
  transition: background-color .18s ease, transform .12s ease, box-shadow .18s ease;
  line-height: 1;
}
.nova-button:hover { background-color: var(--nova-btn-hover-bg, rgba(0,0,0,.1)); }
.nova-button--xs { padding: 6px 14px;  font-size: .75rem; }
.nova-button--sm { padding: 8px 18px;  font-size: .875rem; }
.nova-button--md { padding: 12px 24px; font-size: .9375rem; }
.nova-button--lg { padding: 14px 30px; font-size: 1.0625rem; }
.nova-button--xl { padding: 18px 40px; font-size: 1.125rem; }

/* ── Divider ─────────────────────────────────────────────── */
.nova-divider hr { border: none; }

/* ── Video ───────────────────────────────────────────────── */
.nova-video--empty { background: #f3f4f6; border-radius: 6px; padding: 40px; text-align: center; color: #9ca3af; }

/* ── Icon ────────────────────────────────────────────────── */
.nova-icon { line-height: 1; }
.nova-icon__link { text-decoration: none; }

/* ── Icon List ───────────────────────────────────────────── */
.nova-icon-list li { align-items: baseline; }

/* ── Spacer ──────────────────────────────────────────────── */
.nova-spacer { display: block; }

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 1024px) {
  .nova-column { flex: 0 0 50%; padding: 0 10px; }
}
@media (max-width: 767px) {
  .nova-column { flex: 0 0 100%; padding: 0; }
  .nova-section__inner { gap: 20px; }
}

/* ============================================================
 * Phase 3 Widget Styles
 * ============================================================ */

/* ── Testimonial ─────────────────────────────────────────── */
.nova-testimonial { padding: 1.5rem; }
.nova-testimonial__stars { font-size: 1.1rem; margin-bottom: .75rem; }
.nova-testimonial__content { font-size: 1rem; line-height: 1.7; font-style: italic; margin: 0 0 1.25rem; }
.nova-testimonial__author { display: flex; align-items: center; gap: .75rem; }
.nova-testimonial__image { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; }
.nova-testimonial__author-info { display: flex; flex-direction: column; gap: 2px; }
.nova-testimonial__name { font-weight: 700; font-size: .9375rem; }
.nova-testimonial__title { font-size: .8125rem; color: #6b7280; }

/* ── Price Table ─────────────────────────────────────────── */
.nova-price-table { border: 1px solid #e5e7eb; border-radius: 12px; overflow: hidden; position: relative; background: #fff; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.nova-price-table--highlighted { border-color: #7c3aed; box-shadow: 0 4px 20px rgba(124,58,237,.18); transform: scale(1.02); }
.nova-price-table__badge { position: absolute; top: 16px; right: 16px; background: #7c3aed; color: #fff; font-size: .75rem; font-weight: 700; padding: .2em .7em; border-radius: 20px; }
.nova-price-table__header { padding: 1.5rem; }
.nova-price-table__plan { margin: 0 0 .25rem; font-size: 1.25rem; }
.nova-price-table__subtitle { margin: 0; font-size: .875rem; opacity: .85; }
.nova-price-table__price { padding: .75rem 1.5rem; display: flex; align-items: baseline; gap: .2rem; border-bottom: 1px solid #f3f4f6; }
.nova-price-table__original { text-decoration: line-through; opacity: .5; font-size: 1rem; margin-right: .5rem; }
.nova-price-table__currency { font-size: 1.5rem; font-weight: 700; align-self: flex-start; margin-top: .5rem; }
.nova-price-table__amount { font-size: 3.5rem; font-weight: 800; line-height: 1; }
.nova-price-table__period { font-size: .875rem; color: #6b7280; }
.nova-price-table__features { list-style: none; margin: 0; padding: 1rem 1.5rem; display: flex; flex-direction: column; gap: .6rem; }
.nova-price-table__feature { display: flex; align-items: center; gap: .5rem; font-size: .9rem; }
.nova-price-table__feature--disabled { color: #9ca3af; }
.nova-price-table__feature-icon { flex-shrink: 0; }
.nova-price-table__feature--disabled .nova-price-table__feature-icon { color: #d1d5db; }
.nova-price-table__feature:not(.nova-price-table__feature--disabled) .nova-price-table__feature-icon { color: #22c55e; }
.nova-price-table__cta { padding: 1rem 1.5rem 1.5rem; }
.nova-price-table__btn { display: block; text-align: center; padding: .75em; border-radius: 8px; color: #fff; font-weight: 700; text-decoration: none; font-size: .9375rem; transition: opacity .15s; }
.nova-price-table__btn:hover { opacity: .9; }

/* ── Price List ──────────────────────────────────────────── */
.nova-price-list { list-style: none; margin: 0; padding: 0; }
.nova-price-list__item { display: flex; align-items: center; gap: .5rem; padding: .75rem 0; }
.nova-price-list__item--divider { border-bottom: 1px dotted #e5e7eb; }
.nova-price-list__item-content { flex: 1; display: flex; flex-direction: column; gap: .15rem; }
.nova-price-list__title { font-weight: 600; }
.nova-price-list__desc { font-size: .8125rem; color: #6b7280; }
.nova-price-list__separator { flex: 1; border-bottom: 1px dotted #d1d5db; margin: 0 .5rem; }
.nova-price-list__price { font-weight: 700; white-space: nowrap; }

/* ── Countdown ───────────────────────────────────────────── */
.nova-countdown__units { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.nova-countdown__box { display: flex; flex-direction: column; align-items: center; min-width: 72px; padding: .75rem; border-radius: 8px; gap: .3rem; }
.nova-countdown__digit { font-size: 2.25rem; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; }
.nova-countdown__label { font-size: .6875rem; text-transform: uppercase; letter-spacing: .06em; }
.nova-countdown__sep { font-size: 2rem; font-weight: 700; align-self: flex-start; padding-top: .75rem; }

/* ── Flip Box ────────────────────────────────────────────── */
.nova-flip-box { perspective: 1000px; cursor: pointer; }
.nova-flip-box__inner { position: relative; width: 100%; height: 100%; transition: transform .6s cubic-bezier(.4,.2,.2,1); transform-style: preserve-3d; }
.nova-flip-box:hover .nova-flip-box__inner { transform: rotateY(180deg); }
.nova-flip-box--up:hover .nova-flip-box__inner { transform: rotateX(180deg); }
.nova-flip-box--left:hover .nova-flip-box__inner { transform: rotateY(-180deg); }
.nova-flip-box--down:hover .nova-flip-box__inner { transform: rotateX(-180deg); }
.nova-flip-box__front, .nova-flip-box__back {
    position: absolute; inset: 0;
    backface-visibility: hidden; -webkit-backface-visibility: hidden;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: .75rem; padding: 2rem; text-align: center; border-radius: 8px;
}
.nova-flip-box__back { transform: rotateY(180deg); }
.nova-flip-box--up .nova-flip-box__back, .nova-flip-box--down .nova-flip-box__back { transform: rotateX(180deg); }
.nova-flip-box__icon { font-size: 2.5rem; }
.nova-flip-box__title { margin: 0; font-size: 1.25rem; font-weight: 700; }
.nova-flip-box__desc { margin: 0; font-size: .9rem; opacity: .9; }
.nova-flip-box__btn { padding: .5em 1.5em; border: 2px solid currentColor; border-radius: 4px; text-decoration: none; color: inherit; font-weight: 600; font-size: .875rem; transition: all .15s; }
.nova-flip-box__btn:hover { background: rgba(255,255,255,.2); }

/* ── Tabs ────────────────────────────────────────────────── */
.nova-tabs { }
.nova-tabs--vertical { display: flex; gap: 0; }
.nova-tabs__nav { display: flex; border-bottom: 2px solid #e5e7eb; }
.nova-tabs--vertical .nova-tabs__nav { flex-direction: column; border-bottom: none; border-right: 2px solid #e5e7eb; min-width: 160px; }
.nova-tabs__tab { padding: .65em 1.25em; background: transparent; border: none; border-bottom: 2px solid transparent; margin-bottom: -2px; cursor: pointer; font-size: .9375rem; font-weight: 500; color: #6b7280; transition: all .15s; white-space: nowrap; }
.nova-tabs--vertical .nova-tabs__tab { border-bottom: none; border-right: 2px solid transparent; margin-bottom: 0; margin-right: -2px; text-align: left; }
.nova-tabs__tab:hover { color: #1f2937; }
.nova-tabs__tab--active { color: var(--nova-tab-active, #7c3aed); border-bottom-color: var(--nova-tab-active, #7c3aed); }
.nova-tabs--vertical .nova-tabs__tab--active { border-bottom-color: transparent; border-right-color: var(--nova-tab-active, #7c3aed); }
.nova-tabs__panels { padding: 1.25rem 0; }
.nova-tabs--vertical .nova-tabs__panels { padding: 0 0 0 1.25rem; flex: 1; }
.nova-tabs__panel { line-height: 1.7; }

/* ── Accordion ───────────────────────────────────────────── */
.nova-accordion { border: 1px solid #e5e7eb; border-radius: 8px; overflow: hidden; }
.nova-accordion__item { border-bottom: 1px solid #e5e7eb; }
.nova-accordion__item:last-child { border-bottom: none; }
.nova-accordion__header { width: 100%; display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.25rem; background: #fafafa; border: none; cursor: pointer; font-size: .9375rem; font-weight: 600; text-align: left; gap: .5rem; transition: background .15s; }
.nova-accordion__header:hover { background: #f3f4f6; }
.nova-accordion__item--open .nova-accordion__header { background: inherit; }
.nova-accordion__icon { flex-shrink: 0; transition: transform .2s; }
.nova-accordion__item--open .nova-accordion__icon { transform: rotate(180deg); }
.nova-accordion__body { }
.nova-accordion__content { padding: 1rem 1.25rem; line-height: 1.7; }

/* ── Progress Bar ────────────────────────────────────────── */
.nova-progress-bars { display: flex; flex-direction: column; gap: 1rem; }
.nova-progress-bar__header { display: flex; justify-content: space-between; margin-bottom: .4rem; font-size: .875rem; font-weight: 600; }
.nova-progress-bar__fill { width: 0; transition: width 1.2s cubic-bezier(.4,0,.2,1); }

/* ── Blockquote ──────────────────────────────────────────── */
.nova-blockquote { margin: 0; padding: 1.5rem 1.5rem 1.5rem 2rem; position: relative; }
.nova-blockquote--border { border-left: 4px solid #7c3aed; }
.nova-blockquote--boxed { border: 2px solid #7c3aed; border-radius: 8px; }
.nova-blockquote--quotation { padding-top: 2.5rem; }
.nova-blockquote__mark { position: absolute; top: 0; left: 1rem; font-size: 4rem; line-height: 1; opacity: .4; }
.nova-blockquote__content { font-size: 1.125rem; line-height: 1.7; font-style: italic; margin: 0 0 1rem; }
.nova-blockquote__footer { display: flex; align-items: center; flex-wrap: wrap; gap: .75rem; }
.nova-blockquote__author { font-style: normal; font-weight: 700; font-size: .9375rem; }
.nova-blockquote__author-title { font-size: .875rem; color: #6b7280; }
.nova-blockquote__tweet { display: inline-flex; align-items: center; gap: .35rem; color: #1d9bf0; text-decoration: none; font-size: .875rem; padding: .3em .8em; border: 1px solid #1d9bf0; border-radius: 4px; }

/* ── Call To Action ──────────────────────────────────────── */
.nova-cta { position: relative; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.nova-cta__overlay { position: absolute; inset: 0; }
.nova-cta__content { position: relative; z-index: 1; text-align: center; padding: 3rem 2rem; max-width: 800px; width: 100%; }
.nova-cta__title { font-size: 2rem; font-weight: 800; margin: 0 0 .75rem; }
.nova-cta__description { font-size: 1.0625rem; margin: 0 0 1.5rem; opacity: .9; }
.nova-cta__btn { display: inline-flex; align-items: center; padding: .75em 2em; border-radius: 8px; text-decoration: none; font-weight: 700; font-size: 1rem; transition: all .2s; background-color: var(--nova-cta-btn-color, #7c3aed); color: #fff; }
.nova-cta__btn--outline { background: transparent; border: 2px solid var(--nova-cta-btn-color, #fff); color: var(--nova-cta-btn-color, #fff); }
.nova-cta__btn--ghost { background: rgba(255,255,255,.15); backdrop-filter: blur(4px); color: #fff; border: 1px solid rgba(255,255,255,.3); }
.nova-cta__btn:hover { opacity: .9; transform: translateY(-1px); }

/* ── Animated Headline ───────────────────────────────────── */
.nova-animated-headline { margin: 0; }
.nova-animated-headline__dynamic { display: inline-block; position: relative; min-width: 1em; }
.nova-animated-headline__word { display: none; }
.nova-animated-headline__word--active { display: inline; }

/* ── Social Icons ────────────────────────────────────────── */
.nova-social-icon { display: inline-flex; align-items: center; justify-content: center; text-decoration: none; transition: opacity .15s, transform .15s; }
.nova-social-icon:hover { opacity: .8; transform: translateY(-2px); }

/* ── Share Buttons ───────────────────────────────────────── */
.nova-share-buttons { display: flex; flex-wrap: wrap; gap: .5rem; }
.nova-share-btn { display: inline-flex; align-items: center; gap: .4em; padding: .5em 1em; border-radius: 6px; color: #fff; text-decoration: none; font-weight: 600; font-size: .875rem; transition: opacity .15s; }
.nova-share-buttons--lg .nova-share-btn { padding: .65em 1.25em; font-size: 1rem; }
.nova-share-buttons--sm .nova-share-btn { padding: .35em .7em; font-size: .8125rem; }
.nova-share-btn:hover { opacity: .88; }

/* ── Nav Menu ────────────────────────────────────────────── */
.nova-nav-menu-wrap nav { }
.nova-nav-menu { display: flex; flex-wrap: wrap; list-style: none; margin: 0; padding: 0; gap: 0; }
.nova-nav-menu--vertical { flex-direction: column; }
.nova-nav-menu li { position: relative; }
.nova-nav-menu a { display: flex; align-items: center; padding: .65em 1em; text-decoration: none; color: inherit; white-space: nowrap; font-weight: 500; transition: color .15s; }
.nova-nav-menu a:hover { color: #7c3aed; }
.nova-nav-menu .sub-menu { position: absolute; top: 100%; left: 0; min-width: 200px; background: #fff; border: 1px solid #e5e7eb; border-radius: 6px; box-shadow: 0 4px 16px rgba(0,0,0,.1); list-style: none; margin: 0; padding: .4rem 0; display: none; z-index: 100; }
.nova-nav-menu li:hover > .sub-menu { display: block; }

/* ── Search Form ─────────────────────────────────────────── */
.nova-search-form { display: flex; gap: 0; }
.nova-search-form--stacked { flex-direction: column; gap: .5rem; }
.nova-search-form__input { flex: 1; padding: .6em .9em; border: 1px solid #e5e7eb; border-right: none; border-radius: 6px 0 0 6px; font-size: .9375rem; outline: none; }
.nova-search-form--stacked .nova-search-form__input { border-right: 1px solid #e5e7eb; border-radius: 6px; }
.nova-search-form__btn { padding: .6em 1.2em; background: #7c3aed; color: #fff; border: none; border-radius: 0 6px 6px 0; cursor: pointer; font-weight: 600; white-space: nowrap; }
.nova-search-form--stacked .nova-search-form__btn { border-radius: 6px; }
.nova-search-form__btn:hover { background: #6d28d9; }

/* ── Breadcrumbs ─────────────────────────────────────────── */
.nova-breadcrumbs__list { display: flex; flex-wrap: wrap; align-items: center; list-style: none; margin: 0; padding: 0; font-size: .875rem; }
.nova-breadcrumbs__link { color: #7c3aed; text-decoration: none; }
.nova-breadcrumbs__link:hover { text-decoration: underline; }
.nova-breadcrumbs__current { color: #6b7280; }
.nova-breadcrumbs__sep { color: #9ca3af; margin: 0 .2em; }

/* ── Author Box ──────────────────────────────────────────── */
.nova-author-box { display: flex; align-items: flex-start; gap: 1.25rem; padding: 1.5rem; border: 1px solid #e5e7eb; border-radius: 8px; }
.nova-author-box__avatar img { border-radius: 50%; display: block; }
.nova-author-box__info { flex: 1; }
.nova-author-box__name { margin: 0 0 .4rem; font-size: 1.0625rem; }
.nova-author-box__name a { color: inherit; text-decoration: none; }
.nova-author-box__bio { margin: 0 0 .75rem; color: #6b7280; font-size: .9rem; line-height: 1.6; }
.nova-author-box__btn { display: inline-flex; padding: .4em 1em; background: #7c3aed; color: #fff; border-radius: 4px; font-size: .875rem; font-weight: 600; text-decoration: none; }

/* ── Post Info ───────────────────────────────────────────── */
.nova-post-info { display: flex; flex-wrap: wrap; gap: .75rem 1.25rem; font-size: .875rem; }
.nova-post-info__item { display: flex; align-items: center; gap: .35rem; }
.nova-post-info__item a { color: inherit; }

/* ── Post Navigation ─────────────────────────────────────── */
.nova-post-nav { display: flex; justify-content: space-between; gap: 1rem; border-top: 1px solid #e5e7eb; padding-top: 1.5rem; }
.nova-post-nav__prev, .nova-post-nav__next { display: flex; flex-direction: column; gap: .25rem; text-decoration: none; flex: 1; }
.nova-post-nav__next { text-align: right; align-items: flex-end; }
.nova-post-nav__label { font-size: .8125rem; color: #7c3aed; font-weight: 600; }
.nova-post-nav__title { font-weight: 600; color: #1f2937; font-size: .9375rem; }
.nova-post-nav__prev:hover .nova-post-nav__title, .nova-post-nav__next:hover .nova-post-nav__title { color: #7c3aed; }

/* ── Gallery ─────────────────────────────────────────────── */
.nova-gallery { display: grid; gap: 8px; }
.nova-gallery--cols-1 { grid-template-columns: 1fr; }
.nova-gallery--cols-2 { grid-template-columns: repeat(2,1fr); }
.nova-gallery--cols-3 { grid-template-columns: repeat(3,1fr); }
.nova-gallery--cols-4 { grid-template-columns: repeat(4,1fr); }
.nova-gallery--cols-5 { grid-template-columns: repeat(5,1fr); }
.nova-gallery--cols-6 { grid-template-columns: repeat(6,1fr); }
.nova-gallery__item { overflow: hidden; }
.nova-gallery__img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .3s ease; }
.nova-gallery__item:hover .nova-gallery__img { transform: scale(1.05); }

/* ── Post Grid ───────────────────────────────────────────── */
.nova-post-grid { display: grid; gap: 1.5rem; }
.nova-post-grid--cols-1 { grid-template-columns: 1fr; }
.nova-post-grid--cols-2 { grid-template-columns: repeat(2,1fr); }
.nova-post-grid--cols-3 { grid-template-columns: repeat(3,1fr); }
.nova-post-grid--cols-4 { grid-template-columns: repeat(4,1fr); }
.nova-post-card { border: 1px solid #e5e7eb; border-radius: 8px; overflow: hidden; background: #fff; display: flex; flex-direction: column; transition: box-shadow .2s; }
.nova-post-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,.1); }
.nova-post-card__thumb { display: block; aspect-ratio: 16/9; overflow: hidden; }
.nova-post-card__thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; display: block; }
.nova-post-card:hover .nova-post-card__thumb img { transform: scale(1.04); }
.nova-post-card__body { padding: 1.25rem; flex: 1; display: flex; flex-direction: column; gap: .5rem; }
.nova-post-card__meta { font-size: .8rem; color: #6b7280; display: flex; align-items: center; gap: .35rem; }
.nova-post-card__title { font-size: 1.0625rem; font-weight: 700; margin: 0; }
.nova-post-card__title a { text-decoration: none; color: inherit; }
.nova-post-card__title a:hover { color: #7c3aed; }
.nova-post-card__excerpt { font-size: .9rem; color: #374151; flex: 1; }
.nova-post-card__more { font-size: .875rem; font-weight: 600; color: #7c3aed; text-decoration: none; margin-top: auto; align-self: flex-start; }

/* ── Form ────────────────────────────────────────────────── */
.nova-form { display: flex; flex-direction: column; gap: 1rem; }
.nova-form__field { display: flex; flex-direction: column; gap: .35rem; }
.nova-form__label { font-weight: 600; font-size: .875rem; }
.nova-required { color: #dc2626; margin-left: 2px; }
.nova-form__input { padding: .55em .75em; border: 1px solid #e5e7eb; border-radius: 6px; font-size: 1rem; font-family: inherit; outline: none; transition: border-color .15s, box-shadow .15s; }
.nova-form__input:focus { border-color: #7c3aed; box-shadow: 0 0 0 3px rgba(124,58,237,.12); }
.nova-form textarea.nova-form__input { resize: vertical; min-height: 100px; }
.nova-form__submit { }
.nova-form__btn { padding: .6em 1.5em; background: #7c3aed; color: #fff; border: none; border-radius: 6px; font-size: .9375rem; font-weight: 700; cursor: pointer; transition: background .15s; }
.nova-form__btn:hover { background: #6d28d9; }
.nova-form__msg { padding: .75rem; border-radius: 6px; font-size: .9rem; display: none; margin-top: .5rem; }
.nova-form__msg--success { background: #f0fdf4; color: #166534; border: 1px solid #bbf7d0; display: block; }
.nova-form__msg--error { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; display: block; }

/* ── Login ───────────────────────────────────────────────── */
.nova-login .login-username, .nova-login .login-password, .nova-login .login-remember { margin-bottom: .75rem; }
.nova-login label { display: block; font-weight: 600; font-size: .875rem; margin-bottom: .3rem; }
.nova-login input[type=text], .nova-login input[type=password] { width: 100%; padding: .55em .75em; border: 1px solid #e5e7eb; border-radius: 6px; font-size: 1rem; }
.nova-login input[type=submit] { padding: .6em 1.5em; background: #7c3aed; color: #fff; border: none; border-radius: 6px; font-weight: 700; cursor: pointer; }
.nova-login__forgot, .nova-login__register { margin-top: .5rem; font-size: .875rem; }
.nova-login__forgot a, .nova-login__register a { color: #7c3aed; }

/* ── Slides ──────────────────────────────────────────────── */
.nova-slides { position: relative; overflow: hidden; border-radius: 8px; }
.nova-slides__track { height: 100%; }
.nova-slides__slide { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity .5s ease; }
.nova-slides__slide--active { opacity: 1; position: relative; }
.nova-slides__overlay { position: absolute; inset: 0; }
.nova-slides__content { position: relative; z-index: 1; text-align: center; padding: 3rem; max-width: 700px; }
.nova-slides__title { font-size: 2.5rem; font-weight: 800; color: #fff; margin: 0 0 .75rem; }
.nova-slides__desc { font-size: 1.0625rem; color: rgba(255,255,255,.9); margin: 0 0 1.5rem; }
.nova-slides__btn { display: inline-flex; padding: .7em 2em; background: #7c3aed; color: #fff; border-radius: 8px; font-weight: 700; text-decoration: none; }
.nova-slides__arrow { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(255,255,255,.15); border: none; color: #fff; font-size: 2rem; cursor: pointer; width: 44px; height: 44px; border-radius: 50%; display: flex; align-items: center; justify-content: center; z-index: 2; transition: background .15s; }
.nova-slides__arrow:hover { background: rgba(255,255,255,.3); }
.nova-slides__arrow--prev { left: 12px; }
.nova-slides__arrow--next { right: 12px; }
.nova-slides__dots { position: absolute; bottom: 12px; left: 50%; transform: translateX(-50%); display: flex; gap: .4rem; z-index: 2; }
.nova-slides__dot { width: 8px; height: 8px; border-radius: 50%; background: rgba(255,255,255,.5); border: none; cursor: pointer; padding: 0; transition: all .2s; }
.nova-slides__dot--active { background: #fff; transform: scale(1.3); }

/* ── Popup ───────────────────────────────────────────────── */
.nova-popup { position: fixed; inset: 0; z-index: 99999; display: flex; align-items: center; justify-content: center; }
.nova-popup__overlay { position: absolute; inset: 0; background: rgba(0,0,0,.7); }
.nova-popup__box { position: relative; z-index: 1; background: #fff; border-radius: 12px; padding: 2rem; max-width: 600px; width: 95vw; max-height: 90vh; overflow-y: auto; box-shadow: 0 20px 60px rgba(0,0,0,.2); animation: novaPopupIn .25s ease; }
@keyframes novaPopupIn { from { opacity:0; transform: scale(.95) translateY(10px); } to { opacity:1; transform: scale(1) translateY(0); } }
.nova-popup__close { position: absolute; top: .75rem; right: .75rem; background: transparent; border: none; font-size: 1.5rem; cursor: pointer; color: #6b7280; line-height: 1; padding: .25rem; }
.nova-popup__close:hover { color: #111; }
body.nova-popup-open { overflow: hidden; }

/* ── Code Highlight ──────────────────────────────────────── */
.nova-code-highlight { position: relative; border-radius: 8px; overflow: hidden; background: #1e293b; }
.nova-code-highlight__copy { position: absolute; top: .5rem; right: .5rem; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.2); color: #e2e8f0; border-radius: 4px; cursor: pointer; padding: .25rem .5rem; font-size: .75rem; }
.nova-code-highlight__copy:hover { background: rgba(255,255,255,.2); }
.nova-code-highlight__pre { margin: 0; padding: 1.25rem; overflow-x: auto; color: #e2e8f0; font-size: .875rem; line-height: 1.6; }
.nova-code-highlight__pre--numbered { padding-left: 3rem; counter-reset: line; }
.nova-code-highlight code { font-family: 'Fira Code','Cascadia Code','Consolas',monospace; }

/* ── Off-Canvas ──────────────────────────────────────────── */
.nova-offcanvas__trigger { display: inline-flex; align-items: center; gap: .5em; padding: .5em .9em; background: transparent; border: 1px solid #e5e7eb; border-radius: 6px; cursor: pointer; font-size: 1rem; transition: all .15s; }
.nova-offcanvas__burger { display: flex; flex-direction: column; gap: 4px; width: 20px; }
.nova-offcanvas__burger span { display: block; height: 2px; background: currentColor; border-radius: 2px; transition: transform .3s, opacity .3s; }
.nova-offcanvas__trigger[aria-expanded=true] .nova-offcanvas__burger span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.nova-offcanvas__trigger[aria-expanded=true] .nova-offcanvas__burger span:nth-child(2) { opacity: 0; }
.nova-offcanvas__trigger[aria-expanded=true] .nova-offcanvas__burger span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
.nova-offcanvas__overlay { position: fixed; inset: 0; background: rgba(0,0,0,.55); z-index: 9998; opacity: 0; transition: opacity .3s; }
.nova-offcanvas__overlay--visible { opacity: 1; }
.nova-offcanvas__drawer { position: fixed; z-index: 9999; background: #fff; box-shadow: 0 0 40px rgba(0,0,0,.15); transition: transform .3s cubic-bezier(.4,0,.2,1); display: flex; flex-direction: column; overflow-y: auto; }
.nova-offcanvas__drawer--left  { top:0; left:0; height:100%; width:320px; transform:translateX(-100%); }
.nova-offcanvas__drawer--right { top:0; right:0; height:100%; width:320px; transform:translateX(100%); }
.nova-offcanvas__drawer--top   { top:0; left:0; right:0; height:280px; transform:translateY(-100%); }
.nova-offcanvas__drawer--bottom{ bottom:0; left:0; right:0; height:280px; transform:translateY(100%); }
.nova-offcanvas__drawer--open  { transform:translate(0); }
.nova-offcanvas__close { align-self: flex-end; background: transparent; border: none; font-size: 1.5rem; cursor: pointer; padding: .75rem; color: #6b7280; }
.nova-offcanvas__content { padding: 1.25rem; flex: 1; }
body.nova-offcanvas-open { overflow: hidden; }

/* ── Hotspot ─────────────────────────────────────────────── */
.nova-hotspot-wrap { display: inline-block; width: 100%; }
.nova-hotspot__btn { position: relative; display: inline-flex; align-items: center; justify-content: center; background: #7c3aed; color: #fff; border-radius: 50%; width: 32px; height: 32px; font-size: .875rem; font-weight: 700; cursor: pointer; box-shadow: 0 2px 8px rgba(124,58,237,.4); }
.nova-hotspot__pulse { position: absolute; inset: -4px; border-radius: 50%; border: 2px solid #7c3aed; opacity: .5; animation: novaHotspotPulse 2s ease-out infinite; }
@keyframes novaHotspotPulse { 0%{transform:scale(1);opacity:.5} 100%{transform:scale(1.8);opacity:0} }
.nova-hotspot__tooltip { position: absolute; bottom: calc(100% + 8px); left: 50%; transform: translateX(-50%); background: #1e293b; color: #fff; padding: .4rem .75rem; border-radius: 4px; font-size: .8125rem; white-space: nowrap; pointer-events: none; opacity: 0; transition: opacity .2s; z-index: 10; }
.nova-hotspot__point:hover .nova-hotspot__tooltip { opacity: 1; }

/* ── Table of Contents ───────────────────────────────────── */
.nova-toc { background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 8px; padding: 1.25rem; font-size: .9rem; }
.nova-toc__header { display: flex; justify-content: space-between; margin-bottom: .75rem; }
.nova-toc__title { font-weight: 700; }
.nova-toc__list, .nova-toc__sub-list { list-style: none; margin: 0; padding: 0; }
.nova-toc__sub-list { padding-left: 1rem; margin-top: .25rem; }
.nova-toc__item { margin: .2rem 0; }
.nova-toc__link { display: block; padding: .15rem .3rem; border-radius: 3px; text-decoration: none; color: inherit; transition: color .12s, background .12s; }
.nova-toc__link:hover, .nova-toc__link--active { color: #7c3aed; background: rgba(124,58,237,.06); }
.nova-toc__back-to-top { display: block; margin-top: .75rem; font-size: .8rem; color: #6b7280; text-decoration: none; text-align: right; }
.nova-toc__back-to-top:hover { color: #7c3aed; }

/* ── Misc ────────────────────────────────────────────────── */
.nova-notice { color: #6b7280; font-style: italic; font-size: .875rem; }
.nova-sitemap { }
.nova-sitemap__group { margin-bottom: 1.5rem; }
.nova-sitemap__type { font-size: 1rem; font-weight: 700; margin: 0 0 .5rem; color: #7c3aed; }
.nova-sitemap__list { list-style: disc; padding-left: 1.5rem; }
.nova-sitemap__list a { text-decoration: none; color: inherit; }
.nova-sitemap__list a:hover { color: #7c3aed; }
.nova-post-featured-image__img { width: 100%; height: auto; display: block; }

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 767px) {
    .nova-post-grid--cols-3, .nova-post-grid--cols-4 { grid-template-columns: 1fr; }
    .nova-post-grid--cols-2 { grid-template-columns: 1fr; }
    .nova-gallery--cols-4, .nova-gallery--cols-5, .nova-gallery--cols-6 { grid-template-columns: repeat(2,1fr); }
    .nova-slides__title { font-size: 1.5rem; }
    .nova-cta__title { font-size: 1.5rem; }
    .nova-author-box { flex-direction: column; }
    .nova-countdown__units { justify-content: center; }
    .nova-tabs--vertical { flex-direction: column; }
    .nova-tabs--vertical .nova-tabs__nav { flex-direction: row; border-right: none; border-bottom: 2px solid #e5e7eb; }
}

/* ── Entrance Animations (Advanced tab) ──────────────────── */
.nova-animate { animation-fill-mode: both; animation-duration: var(--nova-anim-duration, 600ms); animation-delay: var(--nova-anim-delay, 0ms); }
.nova-animate.nova-animate-start--fadeIn       { animation-name: novaFadeIn; }
.nova-animate.nova-animate-start--fadeInUp     { animation-name: novaFadeInUp; }
.nova-animate.nova-animate-start--fadeInDown   { animation-name: novaFadeInDown; }
.nova-animate.nova-animate-start--fadeInLeft   { animation-name: novaFadeInLeft; }
.nova-animate.nova-animate-start--fadeInRight  { animation-name: novaFadeInRight; }
.nova-animate.nova-animate-start--slideInUp    { animation-name: novaSlideInUp; }
.nova-animate.nova-animate-start--slideInDown  { animation-name: novaSlideInDown; }
.nova-animate.nova-animate-start--zoomIn       { animation-name: novaZoomIn; }
.nova-animate.nova-animate-start--bounceIn     { animation-name: novaBounceIn; }
.nova-animate.nova-animate-start--flipInX      { animation-name: novaFlipInX; }

/* Before animation triggered, hide the element */
.nova-animate:not(.nova-animate-start) { opacity: 0; }

@keyframes novaFadeIn       { from{opacity:0}      to{opacity:1} }
@keyframes novaFadeInUp     { from{opacity:0;transform:translateY(30px)}  to{opacity:1;transform:translateY(0)} }
@keyframes novaFadeInDown   { from{opacity:0;transform:translateY(-30px)} to{opacity:1;transform:translateY(0)} }
@keyframes novaFadeInLeft   { from{opacity:0;transform:translateX(30px)}  to{opacity:1;transform:translateX(0)} }
@keyframes novaFadeInRight  { from{opacity:0;transform:translateX(-30px)} to{opacity:1;transform:translateX(0)} }
@keyframes novaSlideInUp    { from{transform:translateY(100%)} to{transform:translateY(0)} }
@keyframes novaSlideInDown  { from{transform:translateY(-100%)} to{transform:translateY(0)} }
@keyframes novaZoomIn       { from{opacity:0;transform:scale(.8)} to{opacity:1;transform:scale(1)} }
@keyframes novaBounceIn     { 0%{opacity:0;transform:scale(.3)} 50%{opacity:1;transform:scale(1.05)} 70%{transform:scale(.9)} 100%{transform:scale(1)} }
@keyframes novaFlipInX      { from{opacity:0;transform:perspective(400px) rotateX(90deg)} to{opacity:1;transform:perspective(400px) rotateX(0)} }

/* ── Video overlay click-to-play ─────────────────────────── */
.nova-video--overlay { cursor: pointer; }
.nova-video__play-btn { transition: transform .2s; }
.nova-video--overlay:hover .nova-video__play-btn { transform: translate(-50%, -50%) scale(1.1) !important; }

/* ── Counter ─────────────────────────────────────────────── */
.nova-counter { }
.nova-counter__number { line-height: 1.1; }
.nova-counter__title  { margin-top: .4em; }

/* ── Star Rating ─────────────────────────────────────────── */
.nova-star-rating { }
.nova-star-rating__stars { display: flex; align-items: center; }
.nova-star-rating__count { font-size: .8125rem; }

/* ── Alert ───────────────────────────────────────────────── */
.nova-alert { position: relative; }
.nova-alert__dismiss { position: absolute; top: 12px; right: 12px; }
.nova-alert [hidden] { display: none; }

/* ── Image Box ───────────────────────────────────────────── */
.nova-image-box { }
.nova-image-box__img-wrap { overflow: hidden; }
.nova-img-hover--zoom:hover { transform: scale(1.05); }
.nova-img-hover--fade:hover { opacity: .7; }

/* ── Icon Box ────────────────────────────────────────────── */
.nova-icon-box { }
.nova-icon-box__link { display: inline-flex; align-items: center; gap: 4px; transition: gap .15s; }
.nova-icon-box__link:hover { gap: 8px; }

/* ── Image Comparison ────────────────────────────────────── */
.nova-image-comparison { touch-action: none; }
.nova-cmp__handle { cursor: grab; }
.nova-cmp__handle:active { cursor: grabbing; }

/* ── Testimonial Carousel ────────────────────────────────── */
.nova-testimonial-carousel { position: relative; }
.nova-tc__wrap { overflow: hidden; }
.nova-tc__track { display: flex; will-change: transform; }
.nova-tc__slide { flex-shrink: 0; }
.nova-tc__prev, .nova-tc__next { transition: box-shadow .15s; }
.nova-tc__prev:hover, .nova-tc__next:hover { box-shadow: 0 4px 12px rgba(0,0,0,.15) !important; }
.nova-tc__dots button { transition: background .2s, transform .15s; }
.nova-tc__dots button:hover { transform: scale(1.3); }

/* ── Gallery Lightbox ────────────────────────────────────── */
#nova-lightbox { display: none; position: fixed; inset: 0; z-index: 999999; }
#nova-lightbox.nova-lightbox--open { display: flex; align-items: center; justify-content: center; }
.nova-lb__overlay { position: absolute; inset: 0; background: rgba(0,0,0,.9); cursor: pointer; }
.nova-lb__wrap { position: relative; z-index: 1; max-width: 90vw; max-height: 90vh; display: flex; flex-direction: column; align-items: center; gap: 12px; }
.nova-lb__img { max-width: 90vw; max-height: 80vh; object-fit: contain; border-radius: 4px; }
.nova-lb__close { position: absolute; top: -16px; right: -16px; background: #fff; border: none; border-radius: 50%; width: 32px; height: 32px; cursor: pointer; font-size: 16px; display: flex; align-items: center; justify-content: center; }
.nova-lb__prev, .nova-lb__next { position: fixed; top: 50%; background: rgba(255,255,255,.15); border: none; border-radius: 50%; width: 48px; height: 48px; color: #fff; font-size: 22px; cursor: pointer; display: flex; align-items: center; justify-content: center; transform: translateY(-50%); transition: background .15s; }
.nova-lb__prev { left: 16px; }
.nova-lb__next { right: 16px; }
.nova-lb__prev:hover, .nova-lb__next:hover { background: rgba(255,255,255,.3); }
.nova-lb__caption { color: rgba(255,255,255,.8); font-size: 14px; }

/* ── Dimensions control (editor) ─────────────────────────── */
/* (editor.css handles this but also needed here for completeness) */

/* ── FlipBox click mode ───────────────────────────────────── */
.nova-flip-box[data-flip-trigger="click"]:hover .nova-flip-box__inner { transform: none; }
.nova-flip-box[data-flip-trigger="click"].nova-flip-box--flipped .nova-flip-box__inner,
.nova-flip-box[data-flip-trigger="click"].nova-flip-box--flipped.nova-flip-box--left .nova-flip-box__inner { transform: rotateY(180deg); }
.nova-flip-box[data-flip-trigger="click"].nova-flip-box--flipped.nova-flip-box--up .nova-flip-box__inner,
.nova-flip-box[data-flip-trigger="click"].nova-flip-box--flipped.nova-flip-box--down .nova-flip-box__inner { transform: rotateX(180deg); }

/* ── Divider with element ────────────────────────────────── */
.nova-divider--element { display: flex; align-items: center; }
.nova-divider--element hr { flex: 1; border-bottom: none; border-left: none; border-right: none; margin: 0; }

/* ── Hotspot ─────────────────────────────────────────────── */
.nova-hotspot { position: relative; display: inline-block; width: 100%; }
.nova-hotspot__point { cursor: pointer; }
.nova-hotspot__tooltip { pointer-events: none; }
@keyframes nova-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(124,58,237,.6); }
  70%  { box-shadow: 0 0 0 10px rgba(124,58,237,0); }
  100% { box-shadow: 0 0 0 0 rgba(124,58,237,0); }
}

/* ── Form (Phase B upgrades) ─────────────────────────────── */
.nova-form__fields { }
.nova-form__footer { }
.nova-form__select { appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236b7280' stroke-width='1.5' fill='none'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; padding-right: 32px !important; }
.nova-form__textarea { resize: vertical; min-height: 100px; }
.nova-form__checkbox-label, .nova-form__radio-label { display: flex; align-items: flex-start; gap: 8px; cursor: pointer; font-size: .875rem; line-height: 1.4; }
.nova-form__radio-group { display: flex; flex-direction: column; gap: 8px; }
.nova-form__checkbox, .nova-form__radio { flex-shrink: 0; margin-top: 2px; accent-color: #7c3aed; width: 16px; height: 16px; }
.nova-form__required { color: #ef4444; margin-left: 2px; }
.nova-form__btn { font-family: inherit; font-weight: 600; cursor: pointer; transition: background .15s, transform .1s; border: none; }
.nova-form__btn:hover { filter: brightness(1.1); }
.nova-form__btn:active { transform: scale(.98); }
.nova-form__btn:disabled { opacity: .65; cursor: wait; }
.nova-form__msg { margin-top: .75rem; padding: .6rem 1rem; border-radius: 6px; font-size: .875rem; display: none; }
.nova-form__msg:not(:empty) { display: block; }
.nova-form__msg--success { background: #f0fdf4; color: #166534; border: 1px solid #bbf7d0; }
.nova-form__msg--error   { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }

/* ── Gallery (Phase B upgrades) ─────────────────────────── */
.nova-gallery__item:hover .nova-gallery__overlay { opacity: 1 !important; }
.nova-gallery__item:hover .nova-gallery__img { transform: scale(1.04); }
.nova-gallery__item:hover .nova-gallery__caption--overlay { transform: translateY(0) !important; }
.nova-gallery--masonry { column-gap: 8px; }
.nova-gallery--masonry .nova-gallery__item { break-inside: avoid; display: inline-block; width: 100%; }
.nova-gallery__img-wrap { overflow: hidden; }

/* ── Image Carousel ──────────────────────────────────────── */
.nova-image-carousel { }
.nova-ic__wrap { position: relative; }
.nova-ic__track { display: flex; will-change: transform; }
.nova-ic__slide { flex-shrink: 0; overflow: hidden; }
.nova-ic__prev, .nova-ic__next { transition: background .15s, transform .15s; }
.nova-ic__prev:hover, .nova-ic__next:hover { filter: brightness(1.2); transform: translateY(-50%) scale(1.08) !important; }

/* ── Timeline ────────────────────────────────────────────── */
.nova-timeline { }
.nova-timeline__item--animate { opacity: 0; transform: translateY(20px); transition: opacity .5s ease, transform .5s ease; }
.nova-timeline__item--animate.nova-anim-fadeInRight { transform: translateX(-30px); }
.nova-timeline__item--animate.nova-anim-fadeInLeft  { transform: translateX(30px); }
.nova-timeline__item--animate.nova-timeline__item--visible { opacity: 1 !important; transform: none !important; }
.nova-timeline__card { transition: box-shadow .2s; }
.nova-timeline__card:hover { box-shadow: 0 8px 24px rgba(0,0,0,.1) !important; }
.nova-timeline__dot { transition: transform .2s; }
.nova-timeline__item:hover .nova-timeline__dot { transform: translateX(-50%) scale(1.2); }

/* ── Read More ───────────────────────────────────────────── */
.nova-read-more { }
.nova-rm__content { }
.nova-rm__btn { transition: opacity .15s; }
.nova-rm__btn:hover { opacity: .8; }

/* ── Menu Anchor ─────────────────────────────────────────── */
.nova-menu-anchor { display: block; height: 0; overflow: hidden; visibility: hidden; }

/* ── Progress Tracker ────────────────────────────────────── */
.nova-progress-tracker { }
.nova-pt__bar-fill { transition: width .1s linear; }
.nova-pt__circle { transition: stroke-dashoffset .1s linear; }

/* ── WooCommerce Widget Styles ───────────────────────────── */
.nova-woo-products { }
.nova-woo-product { transition: box-shadow .2s; }
.nova-woo-product:hover { box-shadow: 0 8px 24px rgba(0,0,0,.1) !important; }
.nova-woo-add-to-cart { transition: filter .15s; }
.nova-woo-add-to-cart:hover { filter: brightness(1.1); }
.nova-woo-notice { }
.nova-woo-empty { color: #6b7280; text-align: center; padding: 20px; }

/* ── MediaCarousel ───────────────────────────────────────── */
.nova-media-carousel { }
.nova-mc__wrap { position: relative; }
.nova-mc__track { display: flex; will-change: transform; }
.nova-mc__slide { flex-shrink: 0; }
.nova-mc__prev, .nova-mc__next { transition: background .15s, transform .15s; }
.nova-mc__prev:hover, .nova-mc__next:hover { filter: brightness(1.2); transform: translateY(-50%) scale(1.08) !important; }

/* ── VideoPlaylist ───────────────────────────────────────── */
.nova-video-playlist { }
.nova-vpl__list-item { transition: background .15s; }
.nova-vpl__list-item:hover { background: rgba(124,58,237,.06) !important; }
.nova-vpl__item { transition: transform .2s; }
.nova-vpl__item:hover { transform: translateY(-2px); }

/* ── Section overlay ─────────────────────────────────────── */
.nova-section__overlay { position: absolute; inset: 0; pointer-events: none; z-index: 0; }
.nova-section__inner { position: relative; z-index: 1; }
.nova-section__inner--full { max-width: 100% !important; }

/* ── Accordion smooth animation ──────────────────────────── */
.nova-accordion__body {
    max-height: 0;
    overflow: hidden;
    transition: max-height .35s ease, padding .35s ease;
}
.nova-accordion__item--active .nova-accordion__body { max-height: none; }

/* ── Toggle smooth animation ─────────────────────────────── */
.nova-toggle__body {
    overflow: hidden;
    transition: max-height .35s ease;
}

/* ── Sticky sections ─────────────────────────────────────── */
.nova-section--sticky {
    position: sticky;
    top: 0;
    z-index: 100;
}

/* ── Parallax sections ───────────────────────────────────── */
.nova-section--parallax {
    overflow: hidden;
    will-change: transform;
}

/* ── Syntax highlighting ─────────────────────────────────── */
.nova-tok-kw  { color: #a78bfa; font-weight: 600; }
.nova-tok-str { color: #34d399; }
.nova-tok-cmt { color: #6b7280; font-style: italic; }
.nova-tok-var { color: #f59e0b; }
.nova-tok-prop{ color: #60a5fa; }

/* ── Post Grid filter tabs ───────────────────────────────── */
.nova-post-grid__filters {
    display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 24px;
}
.nova-post-grid__filter-btn {
    padding: 6px 16px; border-radius: 50px; border: 1px solid #e5e7eb;
    background: transparent; cursor: pointer; font-size: 13px; font-weight: 500;
    transition: all .15s;
}
.nova-post-grid__filter-btn.active,
.nova-post-grid__filter-btn:hover {
    background: #7c3aed; color: #fff; border-color: #7c3aed;
}
.nova-post-grid__posts {
    transition: opacity .2s;
    display: grid;
    gap: 24px;
}

/* ── WooCommerce AJAX cart feedback ──────────────────────── */
.nova-woo-add-to-cart { transition: transform .15s; }
.nova-woo-add-to-cart:active { transform: scale(0.95); }

/* ── TOC active link ─────────────────────────────────────── */
.nova-toc__link { text-decoration: none; color: inherit; transition: color .15s; }
.nova-toc__link:hover { color: #7c3aed; }
.nova-toc__link--active { color: #7c3aed; font-weight: 600; }
.nova-toc__sub-list { margin-left: 16px; }

/* ── Shape Dividers ──────────────────────────────────────────────────────── */
.nova-section { position: relative; }
.nova-divider { pointer-events: none; z-index: 2; }
.nova-divider--top  { transform-origin: top center; }
.nova-divider--bottom { transform-origin: bottom center; }
.nova-section__inner { position: relative; z-index: 1; }

/* ── Motion FX ───────────────────────────────────────────────────────────── */
[data-motion-fx="1"] { will-change: transform; }

/* ── Theme Builder header/footer templates ───────────────────────────────── */
.nova-header-template { position: relative; z-index: 999; }
.nova-footer-template { position: relative; z-index: 10; }

/* ── Dimensions control support ──────────────────────────────────────────── */
/* Applied via CSS_Manager generate_css_rules with dimension control values */

/* ── Enhanced button hover states ───────────────────────────────────────── */
.nova-button {
    transition: background-color .2s ease, color .2s ease, border-color .2s ease,
                box-shadow .2s ease, transform .1s ease;
    cursor: pointer;
    text-align: center;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    font-weight: 600;
    border: none;
    border-radius: 6px;
    padding: 12px 24px;
}
.nova-button:active { transform: scale(.97); }
.nova-button:hover { color: var(--nova-btn-hover-color, inherit); }
.nova-button.nova-button--full { display: flex; width: 100%; }

/* ── Counter widget ──────────────────────────────────────────────────────── */
.nova-counter { text-align: center; }
.nova-counter__value { display: block; font-size: 3.5rem; font-weight: 800; line-height: 1; }
.nova-counter__title { display: block; margin-top: .5rem; font-size: 1rem; }

/* ── Star Rating ─────────────────────────────────────────────────────────── */
.nova-star-rating { display: flex; align-items: center; gap: .25rem; flex-wrap: wrap; }
.nova-star-rating__star { font-size: 1.5rem; line-height: 1; }
.nova-star-rating__title { font-size: .875rem; }
.nova-star-rating__count { font-size: .75rem; color: #6b7280; }

/* ── Progress Bar ────────────────────────────────────────────────────────── */
.nova-progress-bar-widget { display: flex; flex-direction: column; gap: .75rem; }
.nova-pb { }
.nova-pb__header { display: flex; justify-content: space-between; font-size: .875rem; margin-bottom: .375rem; }
.nova-pb__label { font-weight: 600; }
.nova-pb__track { background: #e5e7eb; border-radius: 999px; overflow: hidden; }
.nova-pb__fill { height: 100%; border-radius: 999px; transition: width 1s ease; width: 0; }

/* ── Timeline ────────────────────────────────────────────────────────────── */
.nova-timeline { position: relative; }
.nova-timeline__line { position: absolute; top: 0; bottom: 0; width: 2px; background: #e5e7eb; }
.nova-timeline__item { display: flex; gap: 1.5rem; margin-bottom: 2rem; position: relative; }
.nova-timeline__dot { width: 12px; height: 12px; border-radius: 50%; background: #7c3aed; flex-shrink: 0; margin-top: 4px; }
.nova-timeline__card { flex: 1; background: #fff; border: 1px solid #e5e7eb; border-radius: 8px; padding: 1rem 1.25rem; }
.nova-timeline__date { font-size: .75rem; font-weight: 700; color: #7c3aed; margin-bottom: .25rem; }
.nova-timeline__title { font-size: 1rem; font-weight: 700; margin: 0 0 .5rem; }
.nova-timeline__desc { font-size: .875rem; color: #6b7280; margin: 0; }

/* ── Read More ───────────────────────────────────────────────────────────── */
.nova-read-more__content { overflow: hidden; position: relative; transition: max-height .4s ease; }
.nova-read-more__fade { position: absolute; bottom: 0; left: 0; right: 0; height: 3em; background: linear-gradient(transparent, white); }
.nova-read-more__btn { background: none; border: none; cursor: pointer; font-weight: 600; display: inline-flex; align-items: center; gap: .35rem; margin-top: .75rem; transition: color .15s; }
.nova-read-more__btn:hover { opacity: .8; }

/* ── Form improvements ───────────────────────────────────────────────────── */
.nova-form__field { margin-bottom: 1rem; }
.nova-form__label { display: block; font-size: .875rem; font-weight: 600; margin-bottom: .375rem; }
.nova-form__input,
.nova-form__textarea,
.nova-form__select {
    width: 100%;
    padding: .625rem .875rem;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    font-size: .9375rem;
    line-height: 1.5;
    background: #fff;
    transition: border-color .15s, box-shadow .15s;
    box-sizing: border-box;
}
.nova-form__input:focus,
.nova-form__textarea:focus,
.nova-form__select:focus {
    outline: none;
    border-color: #7c3aed;
    box-shadow: 0 0 0 3px rgba(124,58,237,.15);
}
.nova-form__msg { margin-top: .75rem; padding: .75rem 1rem; border-radius: 6px; font-size: .875rem; }
.nova-form__msg--success { background: #f0fdf4; color: #166534; border: 1px solid #bbf7d0; }
.nova-form__msg--error   { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }

/* ── Icon Box ────────────────────────────────────────────────────────────── */
.nova-icon-box { }
.nova-icon-box__icon-wrap { display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; }
.nova-icon-box__title { margin: 0 0 .5rem; }
.nova-icon-box__description { margin: 0; }
.nova-icon-box__readmore { display: inline-block; margin-top: .75rem; font-weight: 600; text-decoration: none; transition: opacity .15s; }
.nova-icon-box__readmore:hover { opacity: .8; }

/* ── Image Box ───────────────────────────────────────────────────────────── */
.nova-image-box__img { display: block; width: 100%; }
.nova-image-box__title { margin: .75rem 0 .375rem; }
.nova-image-box__description { margin: 0; }

/* ── Testimonial ─────────────────────────────────────────────────────────── */
.nova-testimonial { }
.nova-testimonial__stars { margin-bottom: .5rem; }
.nova-testimonial__content { font-style: italic; margin: 0 0 1rem; }
.nova-testimonial__name { font-weight: 700; }
.nova-testimonial__title { font-size: .875rem; color: #6b7280; }

/* ── Price Table ─────────────────────────────────────────────────────────── */
.nova-price-table { border-radius: 8px; overflow: hidden; border: 1px solid #e5e7eb; transition: transform .2s, box-shadow .2s; }
.nova-price-table:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,0,0,.08); }
.nova-price-table--highlighted { border-color: #7c3aed; }
.nova-price-table__header { padding: 1.5rem; text-align: center; }
.nova-price-table__name { font-size: 1rem; font-weight: 700; margin: 0 0 .5rem; }
.nova-price-table__price { font-size: 2.5rem; font-weight: 800; line-height: 1; }
.nova-price-table__period { font-size: .875rem; font-weight: 400; opacity: .8; }
.nova-price-table__badge { display: inline-block; background: #7c3aed; color: #fff; font-size: .75rem; font-weight: 700; padding: .2rem .6rem; border-radius: 999px; margin-bottom: .5rem; }
.nova-price-table__features { padding: 1.5rem; }
.nova-price-table__feature { display: flex; align-items: center; gap: .5rem; padding: .4rem 0; font-size: .9375rem; border-bottom: 1px solid #f1f5f9; }
.nova-price-table__feature:last-child { border-bottom: none; }
.nova-price-table__feature--excluded { opacity: .4; text-decoration: line-through; }
.nova-price-table__footer { padding: 0 1.5rem 1.5rem; text-align: center; }

/* ── Navigation context menu ─────────────────────────────────────────────── */
/* Injected dynamically, styles in editor.css */

/* ── Section shape divider ───────────────────────────────────────────────── */
.nova-section--has-dividers { overflow: visible !important; }
.nova-shape-divider { z-index: 2; }

/* ── Global CSS Custom Properties (set via Global Styles) ────────────────── */
:root {
    --nova-color-primary: #7c3aed;
    --nova-color-secondary: #a78bfa;
    --nova-color-text: #111827;
    --nova-color-text-light: #6b7280;
    --nova-color-bg: #ffffff;
    --nova-color-bg-alt: #f9fafb;
    --nova-color-border: #e5e7eb;
    --nova-color-accent: #f59e0b;
    --nova-color-success: #10b981;
    --nova-color-danger: #ef4444;
    --nova-font-primary: system-ui, sans-serif;
    --nova-font-secondary: system-ui, sans-serif;
    --nova-font-mono: ui-monospace, monospace;
}

/* ── Responsive utilities ────────────────────────────────────────────────── */
@media (max-width: 767px) {
    .nova-section__inner { padding-left: 1rem !important; padding-right: 1rem !important; }
    .nova-column { width: 100% !important; }
    .nova-columns { flex-direction: column !important; }
    .nova-button { white-space: normal; }
}

/* ── Print styles ────────────────────────────────────────────────────────── */
@media print {
    .nova-popup, .nova-off-canvas, .nova-share-buttons { display: none !important; }
}

/* ── Loop Grid ───────────────────────────────────────────────────────────── */
.nova-loop-grid-wrap { }
.nova-loop-filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 24px; }
.nova-loop-filter-btn {
    padding: 6px 18px; border-radius: 50px; border: 1px solid #e5e7eb;
    background: transparent; cursor: pointer; font-size: 13px; font-weight: 500;
    transition: all .15s; color: #374151;
}
.nova-loop-filter-btn.active,
.nova-loop-filter-btn:hover { background: #7c3aed; color: #fff; border-color: #7c3aed; }
.nova-loop-grid { display: grid; }
.nova-loop-card { transition: transform .2s, box-shadow .2s; }
.nova-loop-card:hover { transform: translateY(-3px); box-shadow: 0 12px 32px rgba(0,0,0,.12) !important; }
.nova-loop-card__thumb-wrap { overflow: hidden; }
.nova-loop-card__thumb { transition: transform .3s ease; display: block; width: 100%; }
.nova-loop-card__title { line-height: 1.3; }
.nova-loop-card__title a:hover { opacity: .8; }
.nova-loop-pagination { margin-top: 2rem; text-align: center; }
.nova-loop-pagination__btn {
    display: inline-block; padding: 10px 20px; border: 1px solid #e5e7eb;
    border-radius: 6px; text-decoration: none; color: #374151; font-weight: 600;
    transition: all .15s;
}
.nova-loop-pagination__btn:hover { background: #7c3aed; color: #fff; border-color: #7c3aed; }
.nova-loop-load-more {
    background: #7c3aed; color: #fff; border: none; padding: 12px 32px;
    border-radius: 6px; font-size: 15px; font-weight: 600; cursor: pointer;
    transition: background .2s, transform .1s;
}
.nova-loop-load-more:hover { background: #6d28d9; }
.nova-loop-load-more:active { transform: scale(.97); }
.nova-loop-empty { color: #6b7280; text-align: center; padding: 3rem 0; font-size: 1rem; }

@media (max-width: 1024px) {
    .nova-loop-grid { grid-template-columns: repeat(var(--nova-cols-tablet, 2), 1fr) !important; }
}
@media (max-width: 767px) {
    .nova-loop-grid { grid-template-columns: repeat(var(--nova-cols-mobile, 1), 1fr) !important; }
    .nova-loop-filters { gap: 6px; }
    .nova-loop-filter-btn { padding: 5px 12px; font-size: 12px; }
}

/* ── Table ───────────────────────────────────────────────────────────────── */
.nova-table-wrap { }
.nova-table-responsive { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.nova-table { width: 100%; border-collapse: collapse; }
.nova-table th, .nova-table td { border: 1px solid #e5e7eb; text-align: left; }
.nova-table--striped tbody tr:nth-child(even) { background: #f9fafb; }
.nova-table--hover tbody tr { transition: background .1s; }
.nova-table--sortable th { cursor: pointer; user-select: none; }
.nova-table--sortable th:hover { opacity: .9; }
.nova-table-sort-icon { margin-left: 4px; opacity: .5; font-size: 10px; }

/* ── Repeater control (editor) ───────────────────────────────────────────── */
/* styles are inline in the control render */

/* ── Lottie Animation ────────────────────────────────────────────────────── */
.nova-lottie-wrap { }
.nova-lottie { display: block; }

/* ── Reviews Grid ────────────────────────────────────────────────────────── */
.nova-reviews-grid { display: grid; }
.nova-review-card { transition: transform .2s, box-shadow .2s; }
.nova-review-card:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,0,0,.08) !important; }
.nova-review-star { line-height: 1; }
.nova-review-text { line-height: 1.7; }
.nova-review-name { }

@media (max-width: 767px) {
    .nova-reviews-grid { grid-template-columns: 1fr !important; }
}

/* ── PayPal Button ───────────────────────────────────────────────────────── */
.nova-paypal-wrap form { display: inline-block; }
.nova-paypal-wrap a:hover { filter: brightness(1.1); }

/* ── Before / After Slider ───────────────────────────────────────────────── */
.nova-ba-wrap { }
.nova-ba { touch-action: none; }
.nova-ba__before { will-change: width, height; }
.nova-ba__handle { will-change: left, top; }
.nova-ba__label { pointer-events: none; }

/* ── Box Shadow (section-level, from controls) ───────────────────────────── */
/* Generated via CSS_Manager box shadow composite */

/* ── Typography control (editor canvas preview) ─────────────────────────── */
/* Typography values applied directly via get_inline_css on individual widgets */

/* ── Keyboard shortcut reference ─────────────────────────────────────────── */
/* Rendered via ShortcutsPanel JS module, no frontend CSS needed */

/* ── Smooth transitions on all interactive widgets ───────────────────────── */
.nova-accordion__header,
.nova-tabs__tab,
.nova-button,
.nova-loop-card,
.nova-review-card,
.nova-price-table { transition-property: transform, box-shadow, background-color, color, border-color, opacity; transition-duration: .2s; transition-timing-function: ease; }

/* ── Animated Headline ───────────────────────────────────────────────────── */
.nova-animated-headline { display: block; line-height: 1.2; }
.nova-animated-headline__static { }
.nova-animated-headline__dynamic { display: inline; }
.nova-animated-headline__word { display: none; }
.nova-animated-headline__word--active { display: inline; }

/* ── Video ───────────────────────────────────────────────────────────────── */
.nova-video { }
.nova-video__wrapper { position: relative; overflow: hidden; }
.nova-video__overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; cursor: pointer; background: rgba(0,0,0,.3); transition: background .2s; }
.nova-video__overlay:hover { background: rgba(0,0,0,.4); }
.nova-video__play-btn { width: 64px; height: 64px; border-radius: 50%; background: rgba(255,255,255,.9); display: flex; align-items: center; justify-content: center; transition: transform .2s; }
.nova-video__overlay:hover .nova-video__play-btn { transform: scale(1.1); }
.nova-video__iframe { width: 100%; aspect-ratio: 16/9; border: none; display: block; }

/* ── Slides / Carousel ───────────────────────────────────────────────────── */
.nova-slides { position: relative; overflow: hidden; }
.nova-slides__inner { display: flex; transition: transform .4s ease; }
.nova-slides__item { flex: 0 0 100%; min-width: 0; }
.nova-slides__nav { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(0,0,0,.4); color: #fff; border: none; border-radius: 50%; width: 40px; height: 40px; font-size: 18px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .15s; z-index: 2; }
.nova-slides__nav:hover { background: rgba(0,0,0,.7); }
.nova-slides__nav--prev { left: 12px; }
.nova-slides__nav--next { right: 12px; }
.nova-slides__dots { display: flex; justify-content: center; gap: 6px; padding: 10px 0; }
.nova-slides__dot { width: 8px; height: 8px; border-radius: 50%; background: rgba(0,0,0,.3); border: none; cursor: pointer; padding: 0; transition: background .15s, transform .15s; }
.nova-slides__dot--active { background: #7c3aed; transform: scale(1.3); }

/* ── Gallery ─────────────────────────────────────────────────────────────── */
.nova-gallery { display: grid; gap: 8px; }
.nova-gallery__item { overflow: hidden; border-radius: 4px; cursor: zoom-in; }
.nova-gallery__item img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .3s ease; }
.nova-gallery__item:hover img { transform: scale(1.05); }
.nova-gallery-lightbox { position: fixed; inset: 0; background: rgba(0,0,0,.92); z-index: 99999; display: flex; align-items: center; justify-content: center; }
.nova-gallery-lightbox__img { max-width: 90vw; max-height: 90vh; object-fit: contain; border-radius: 4px; }
.nova-gallery-lightbox__close { position: absolute; top: 20px; right: 24px; color: #fff; background: none; border: none; font-size: 32px; cursor: pointer; line-height: 1; opacity: .8; transition: opacity .15s; }
.nova-gallery-lightbox__close:hover { opacity: 1; }
.nova-gallery-lightbox__prev,
.nova-gallery-lightbox__next { position: absolute; top: 50%; transform: translateY(-50%); color: #fff; background: rgba(255,255,255,.1); border: none; border-radius: 50%; width: 48px; height: 48px; font-size: 22px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .15s; }
.nova-gallery-lightbox__prev:hover,
.nova-gallery-lightbox__next:hover { background: rgba(255,255,255,.2); }
.nova-gallery-lightbox__prev { left: 20px; }
.nova-gallery-lightbox__next { right: 20px; }

/* ── Image Carousel ──────────────────────────────────────────────────────── */
.nova-image-carousel { position: relative; overflow: hidden; }
.nova-image-carousel__track { display: flex; transition: transform .4s ease; }
.nova-image-carousel__slide { flex-shrink: 0; }
.nova-image-carousel__slide img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ── Flip Box ────────────────────────────────────────────────────────────── */
.nova-flip-box { perspective: 1000px; }
.nova-flip-box__inner { position: relative; width: 100%; transform-style: preserve-3d; transition: transform .6s; }
.nova-flip-box:hover .nova-flip-box__inner { transform: rotateY(180deg); }
.nova-flip-box--vertical:hover .nova-flip-box__inner { transform: rotateX(180deg); }
.nova-flip-box__front,
.nova-flip-box__back { position: absolute; width: 100%; backface-visibility: hidden; -webkit-backface-visibility: hidden; display: flex; align-items: center; justify-content: center; padding: 20px; box-sizing: border-box; }
.nova-flip-box__back { transform: rotateY(180deg); }
.nova-flip-box--vertical .nova-flip-box__back { transform: rotateX(180deg); }

/* ── Call To Action ──────────────────────────────────────────────────────── */
.nova-cta { position: relative; overflow: hidden; }
.nova-cta__content { position: relative; z-index: 1; text-align: center; padding: 3rem 2rem; max-width: 800px; width: 100%; margin: 0 auto; }
.nova-cta__title { margin: 0 0 1rem; }
.nova-cta__description { margin: 0 0 1.5rem; }
.nova-cta__btn { display: inline-block; text-decoration: none; font-weight: 600; transition: filter .15s, transform .1s; }
.nova-cta__btn:hover { filter: brightness(1.1); }
.nova-cta__btn:active { transform: scale(.97); }

/* ── Code Highlight ──────────────────────────────────────────────────────── */
.nova-code-highlight { position: relative; }
.nova-code-highlight pre { margin: 0; overflow-x: auto; }
.nova-code-highlight code { display: block; padding: 1.25rem; font-family: ui-monospace, 'Cascadia Code', monospace; font-size: .875rem; line-height: 1.7; tab-size: 4; }

/* ── Hotspot ─────────────────────────────────────────────────────────────── */
.nova-hotspot { position: relative; display: inline-block; }
.nova-hotspot__image { display: block; max-width: 100%; }
.nova-hotspot__point { position: absolute; transform: translate(-50%, -50%); cursor: pointer; }
.nova-hotspot__dot { display: flex; align-items: center; justify-content: center; border-radius: 50%; font-weight: 700; transition: transform .2s; animation: nova-hotspot-pulse 2s ease-in-out infinite; }
.nova-hotspot__point:hover .nova-hotspot__dot { transform: scale(1.15); animation: none; }
@keyframes nova-hotspot-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(124,58,237,.4); }
    50%       { box-shadow: 0 0 0 10px rgba(124,58,237,0); }
}
.nova-hotspot__tooltip { position: absolute; bottom: calc(100% + 10px); left: 50%; transform: translateX(-50%) translateY(4px); background: #1e293b; color: #f1f5f9; padding: 8px 12px; border-radius: 6px; font-size: 12px; white-space: nowrap; opacity: 0; visibility: hidden; transition: opacity .2s, transform .2s, visibility .2s; z-index: 100; pointer-events: none; }
.nova-hotspot__tooltip::after { content: ''; position: absolute; top: 100%; left: 50%; transform: translateX(-50%); border: 5px solid transparent; border-top-color: #1e293b; }

/* ── Popup / Off-Canvas ──────────────────────────────────────────────────── */
.nova-popup-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.6); z-index: 99998; display: none; opacity: 0; transition: opacity .25s; }
.nova-popup-overlay.active { display: flex; align-items: center; justify-content: center; opacity: 1; }
.nova-popup-box { background: #fff; border-radius: 12px; max-width: 90vw; max-height: 90vh; overflow-y: auto; position: relative; z-index: 99999; transform: scale(.95); transition: transform .25s; box-shadow: 0 24px 80px rgba(0,0,0,.3); }
.nova-popup-overlay.active .nova-popup-box { transform: scale(1); }
.nova-popup-close { position: absolute; top: 12px; right: 16px; background: none; border: none; font-size: 24px; cursor: pointer; color: #6b7280; line-height: 1; z-index: 1; }
.nova-off-canvas { position: fixed; top: 0; height: 100%; background: #fff; z-index: 99999; overflow-y: auto; transition: transform .3s ease; box-shadow: 0 0 40px rgba(0,0,0,.2); }
.nova-off-canvas--left  { left: 0; transform: translateX(-100%); }
.nova-off-canvas--right { right: 0; transform: translateX(100%); }
.nova-off-canvas.active { transform: translateX(0); }
.nova-off-canvas-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.5); z-index: 99998; display: none; }
.nova-off-canvas-backdrop.active { display: block; }

/* ── Login ───────────────────────────────────────────────────────────────── */
.nova-login__form { max-width: 360px; }
.nova-login__field { margin-bottom: 1rem; }
.nova-login__label { display: block; font-size: .875rem; font-weight: 600; margin-bottom: .375rem; }
.nova-login__input { width: 100%; padding: .625rem .875rem; border: 1px solid #d1d5db; border-radius: 6px; font-size: .9375rem; box-sizing: border-box; transition: border-color .15s, box-shadow .15s; }
.nova-login__input:focus { outline: none; border-color: #7c3aed; box-shadow: 0 0 0 3px rgba(124,58,237,.15); }
.nova-login__submit { width: 100%; padding: .75rem; background: #7c3aed; color: #fff; border: none; border-radius: 6px; font-size: 1rem; font-weight: 600; cursor: pointer; transition: background .2s; }
.nova-login__submit:hover { background: #6d28d9; }
.nova-login__links { display: flex; justify-content: space-between; font-size: .875rem; margin-top: .75rem; }
.nova-login__links a { color: #7c3aed; text-decoration: none; }
.nova-login__links a:hover { text-decoration: underline; }
.nova-login__msg { margin-top: .75rem; padding: .75rem 1rem; border-radius: 6px; font-size: .875rem; }
.nova-login__msg--error   { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }
.nova-login__msg--success { background: #f0fdf4; color: #166534; border: 1px solid #bbf7d0; }

/* ── Nav Menu ────────────────────────────────────────────────────────────── */
.nova-nav-menu { }
.nova-nav-menu__list { display: flex; list-style: none; margin: 0; padding: 0; flex-wrap: wrap; gap: 0; }
.nova-nav-menu__list--vertical { flex-direction: column; }
.nova-nav-menu__item { position: relative; }
.nova-nav-menu__link { display: block; text-decoration: none; transition: color .15s; padding: .5rem .75rem; white-space: nowrap; }
.nova-nav-menu__link:hover,
.nova-nav-menu__item.current-menu-item > .nova-nav-menu__link { color: var(--nova-color-primary, #7c3aed); }
.nova-nav-menu__toggle { display: none; background: none; border: 1px solid #e5e7eb; border-radius: 4px; padding: 6px 10px; cursor: pointer; font-size: 18px; line-height: 1; }
.nova-nav-menu__dropdown { position: absolute; top: 100%; left: 0; background: #fff; border: 1px solid #e5e7eb; border-radius: 8px; min-width: 200px; box-shadow: 0 8px 24px rgba(0,0,0,.08); list-style: none; padding: 4px 0; margin: 0; display: none; z-index: 100; }
.nova-nav-menu__item:hover > .nova-nav-menu__dropdown { display: block; }
.nova-nav-menu__dropdown .nova-nav-menu__link { padding: .5rem 1rem; font-size: .9375rem; }
@media (max-width: 767px) {
    .nova-nav-menu__toggle { display: block; }
    .nova-nav-menu__list { display: none; flex-direction: column; width: 100%; background: #fff; border: 1px solid #e5e7eb; border-radius: 8px; padding: 4px 0; margin-top: 4px; }
    .nova-nav-menu__list--open { display: flex; }
    .nova-nav-menu__dropdown { position: static; box-shadow: none; border: none; padding-left: 16px; }
}

/* ── Share Buttons ───────────────────────────────────────────────────────── */
.nova-share-buttons { display: flex; flex-wrap: wrap; gap: 8px; }
.nova-share-btn { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; border-radius: 6px; text-decoration: none; font-size: 13px; font-weight: 600; color: #fff; transition: filter .15s, transform .1s; cursor: pointer; border: none; }
.nova-share-btn:hover { filter: brightness(1.1); }
.nova-share-btn:active { transform: scale(.97); }
.nova-share-btn--facebook  { background: #1877f2; }
.nova-share-btn--twitter   { background: #1da1f2; }
.nova-share-btn--linkedin  { background: #0a66c2; }
.nova-share-btn--whatsapp  { background: #25d366; }
.nova-share-btn--pinterest { background: #e60023; }
.nova-share-btn--email     { background: #6b7280; }
.nova-share-btn--copy      { background: #334155; }

/* ── Image hover effects ─────────────────────────────────────────────────── */
.nova-image { overflow: hidden; display: inline-block; }
.nova-image--hover { cursor: pointer; }
.nova-image__img { transition: transform .3s ease, filter .3s ease, opacity .3s ease; display: block; }

/* ── Countdown ───────────────────────────────────────────────────────────── */
.nova-countdown { display: flex; flex-wrap: wrap; gap: 16px; transition: opacity .4s ease; }
.nova-countdown__box { text-align: center; min-width: 60px; padding: 12px 16px; border-radius: 6px; }
.nova-countdown__digit { display: block; font-size: 2.25rem; font-weight: 800; line-height: 1; }
.nova-countdown__label { display: block; font-size: .6875rem; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; margin-top: 4px; opacity: .7; }
.nova-countdown__sep { font-size: 2rem; font-weight: 800; line-height: 1; align-self: center; }
.nova-countdown__message { font-size: 1.25rem; font-weight: 700; padding: 1rem; text-align: center; }

/* ── Form field error state ──────────────────────────────────────────────── */
.nova-form__field--error .nova-form__input,
.nova-form__field--error .nova-form__textarea,
.nova-form__field--error .nova-form__select {
    border-color: #ef4444;
    box-shadow: 0 0 0 3px rgba(239,68,68,.15);
}
.nova-form__field--error::after {
    content: attr(data-error);
    display: block;
    font-size: .75rem;
    color: #ef4444;
    margin-top: .25rem;
}

/* ── TOC active link ─────────────────────────────────────────────────────── */
.nova-toc__link { transition: color .15s; text-decoration: none; }
.nova-toc__link--active { color: var(--nova-color-primary, #7c3aed); font-weight: 700; }
.nova-toc__link:hover { color: var(--nova-color-primary, #7c3aed); }

/* ── Loop Grid masonry ───────────────────────────────────────────────────── */
.nova-loop-grid--masonry { position: relative; }
.nova-loop-grid--masonry .nova-loop-card { will-change: top, left; }

/* ── WooCommerce AJAX add-to-cart ────────────────────────────────────────── */
.nova-woo-atc { transition: background-color .2s, transform .1s; cursor: pointer; }
.nova-woo-atc:disabled { opacity: .7; cursor: wait; }
.nova-woo-atc:active:not(:disabled) { transform: scale(.97); }

/* ── Device preview frame (editor canvas) ────────────────────────────────── */
/* Applied via inline styles in Canvas.setDevice() */

/* ── Schema.org (hidden) ─────────────────────────────────────────────────── */
[itemscope] { }

/* ── Theme Builder: suppress theme header/footer when Nova templates active ── */
/* Applied when body has .nova-has-header / .nova-has-footer class */
body.nova-has-header .site-header,
body.nova-has-header header.site-header,
body.nova-has-header #masthead,
body.nova-has-header #site-header,
body.nova-has-header .header-area,
body.nova-has-header .main-header { display: none !important; }

body.nova-has-footer .site-footer,
body.nova-has-footer footer.site-footer,
body.nova-has-footer #colophon,
body.nova-has-footer #site-footer,
body.nova-has-footer .footer-area,
body.nova-has-footer .main-footer { display: none !important; }

/* Nova header/footer positioning */
.nova-header-template {
    position: relative;
    z-index: 100;
    width: 100%;
}
.nova-footer-template {
    position: relative;
    z-index: 10;
    width: 100%;
}

/* ── RTL support ─────────────────────────────────────────────────────────── */
[dir="rtl"] .nova-section__inner,
.rtl .nova-section__inner { direction: rtl; }
[dir="rtl"] .nova-widget,
.rtl .nova-widget { direction: rtl; }
[dir="rtl"] .nova-nav-menu__list,
.rtl .nova-nav-menu__list { flex-direction: row-reverse; }

/* ── Accessibility ───────────────────────────────────────────────────────── */
.nova-skip-link {
    position: absolute;
    top: -999px;
    left: 0;
    z-index: 999999;
    padding: 8px 16px;
    background: #7c3aed;
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    border-radius: 0 0 6px 6px;
    transition: top .1s;
}
.nova-skip-link:focus { top: 0; }

/* Focus visible for keyboard nav */
.nova-widget a:focus-visible,
.nova-button:focus-visible,
.nova-tabs__tab:focus-visible,
.nova-accordion__header:focus-visible { outline: 2px solid #7c3aed; outline-offset: 2px; }

/* ── Print styles ────────────────────────────────────────────────────────── */
@media print {
    .nova-popup-overlay,
    .nova-off-canvas,
    .nova-off-canvas-backdrop,
    .nova-sticky,
    .nova-topbar { display: none !important; }
    .nova-section { break-inside: avoid; }
    .nova-image__img { max-width: 100%; }
}

/* ── Nova page: remove theme content width constraints ────────────────────── */
/* When Nova Builder controls the page, the theme's content container
   should not constrain our sections. We target common theme content selectors. */
body.nova-page .entry-content,
body.nova-page .post-content,
body.nova-page .page-content,
body.nova-page .site-content,
body.nova-page article.page > .entry-content,
body.nova-page .wp-block-post-content {
    max-width: none !important;
    width: 100% !important;
    padding: 0 !important;
    margin: 0 !important;
    float: none !important;
}

/* Remove padding from common theme wrappers on Nova pages */
body.nova-page .site-main,
body.nova-page #main,
body.nova-page main#content,
body.nova-page .page-wrapper {
    padding: 0 !important;
    margin: 0 !important;
}

/* Ensure sections can go full width */
body.nova-page .nova-section {
    margin-left: 0 !important;
    margin-right: 0 !important;
}

/* ── Alert widget ────────────────────────────────────────────────────────── */
.nova-alert {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 14px 18px;
    border-radius: 8px;
    border: 1px solid currentColor;
    font-size: 14px;
    line-height: 1.5;
    position: relative;
    overflow: hidden;
}
.nova-alert--info    { background: #eff6ff; color: #1d4ed8; border-color: #bfdbfe; }
.nova-alert--success { background: #f0fdf4; color: #166534; border-color: #bbf7d0; }
.nova-alert--warning { background: #fffbeb; color: #92400e; border-color: #fde68a; }
.nova-alert--danger  { background: #fef2f2; color: #991b1b; border-color: #fecaca; }
.nova-alert__icon    { flex-shrink: 0; margin-top: 1px; }
.nova-alert__content { flex: 1; }
.nova-alert__title   { font-weight: 700; margin-bottom: 2px; }
.nova-alert__dismiss {
    background: none;
    border: none;
    cursor: pointer;
    opacity: .6;
    padding: 0;
    font-size: 18px;
    line-height: 1;
    flex-shrink: 0;
    color: inherit;
    transition: opacity .15s;
}
.nova-alert__dismiss:hover { opacity: 1; }

/* ── Share Buttons ───────────────────────────────────────────────────────── */
.nova-share-buttons  { display: flex; flex-wrap: wrap; gap: 8px; }
.nova-share-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
    border: none;
    transition: opacity .15s, transform .1s;
}
.nova-share-btn:hover    { opacity: .88; transform: translateY(-1px); }
.nova-share-btn:active   { transform: translateY(0); }
.nova-share-btn--facebook  { background: #1877f2; color: #fff; }
.nova-share-btn--twitter   { background: #1da1f2; color: #fff; }
.nova-share-btn--linkedin  { background: #0a66c2; color: #fff; }
.nova-share-btn--pinterest { background: #e60023; color: #fff; }
.nova-share-btn--email     { background: #6b7280; color: #fff; }
.nova-share-btn--copy      { background: #7c3aed; color: #fff; }

/* ── Login Widget ────────────────────────────────────────────────────────── */
.nova-login-form     { max-width: 420px; }
.nova-login__field   { margin-bottom: 16px; }
.nova-login__label   { display: block; font-size: 13px; font-weight: 600; margin-bottom: 6px; color: #374151; }
.nova-login__input   { width: 100%; padding: 10px 14px; border: 1px solid #d1d5db; border-radius: 6px; font-size: 14px; transition: border-color .15s; box-sizing: border-box; }
.nova-login__input:focus { outline: none; border-color: #7c3aed; box-shadow: 0 0 0 3px rgba(124,58,237,.15); }
.nova-login__submit  { width: 100%; padding: 11px 24px; background: #7c3aed; color: #fff; border: none; border-radius: 6px; font-size: 14px; font-weight: 600; cursor: pointer; transition: background .15s; }
.nova-login__submit:hover:not(:disabled) { background: #6d28d9; }
.nova-login__submit:disabled { opacity: .7; cursor: wait; }
.nova-login__message { margin-top: 10px; font-size: 13px; }
.nova-login__links   { margin-top: 14px; font-size: 13px; display: flex; justify-content: space-between; }
.nova-login__links a { color: #7c3aed; text-decoration: none; }
.nova-login__links a:hover { text-decoration: underline; }
