/* Aura Builder — frontend + canvas base
   Prefer theme CSS variables (ThemeStyles bridge) over hard-coded colors. */
.ab-document {
  width: 100%;
  box-sizing: border-box;
  display: flow-root; /* clear floats / contain children */
}
.ab-node {
  position: relative;
  box-sizing: border-box;
  /* Never float out of flow — elements must push siblings down */
  float: none !important;
  clear: both;
  max-width: 100%;
  min-width: 0;
}
/* Leaf widgets occupy full row in normal document flow */
.ab-node:not(.ab-type-section):not(.ab-type-container):not(.ab-type-root) {
  display: block;
  width: 100%;
}
/*
 * Grid sections use 12 tracks. Leaves placed directly (not in containers)
 * must span the full row — otherwise each leaf only gets 1/12 and menus
 * stack vertically (classic header bug: logo + nav side-by-side squashed).
 */
.ab-type-section.ab-section--grid,
.ab-type-section[style*="grid-template-columns"] {
  display: grid !important;
  grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
  align-items: stretch;
  width: 100%;
  box-sizing: border-box;
}
/* Columns in a grid section: never force full-row clear/float stacking */
.ab-type-section.ab-section--grid > .ab-type-container,
.ab-type-section[style*="grid-template-columns"] > .ab-type-container {
  clear: none !important;
  float: none !important;
  min-width: 0;
  max-width: 100%;
  /* Equal-height cards in a row (e.g. Matrículas × 3) */
  align-self: stretch !important;
  height: auto !important;
  min-height: 100%;
  box-sizing: border-box;
}
/*
 * Card columns: stack content and pin the last button to the bottom
 * so CTAs line up across cards (editor + site).
 */
.ab-type-section.ab-section--grid > .ab-type-container.ab-container--column,
.ab-type-section[style*="grid-template-columns"] > .ab-type-container.ab-container--column,
.ab-type-container.ab-container--row > .ab-type-container.ab-container--column {
  display: flex !important;
  flex-direction: column !important;
}
.ab-type-section.ab-section--grid > .ab-type-container.ab-container--column > .ab-type-button:last-child,
.ab-type-section[style*="grid-template-columns"] > .ab-type-container.ab-container--column > .ab-type-button:last-child,
.ab-type-container.ab-container--row > .ab-type-container.ab-container--column > .ab-type-button:last-child {
  margin-top: auto !important;
}
/* Text/heading blocks inside cards should not prevent the button from sinking */
.ab-type-section.ab-section--grid > .ab-type-container.ab-container--column > .ab-type-text,
.ab-type-section.ab-section--grid > .ab-type-container.ab-container--column > .ab-type-heading,
.ab-type-section.ab-section--grid > .ab-type-container.ab-container--column > .ab-type-icon {
  flex: 0 0 auto;
}
/*
 * Fallback spans when StyleEngine CSS is missing (prevents 1/12 squeeze).
 * Prefer explicit grid-column from node CSS when present.
 */
.ab-type-section.ab-section--grid > .ab-type-container:only-child {
  grid-column: 1 / -1;
}
/* Common 2-col header: first column logo (~25%), second menu (~75%) */
.ab-theme-builder-header .ab-type-section.ab-section--grid > .ab-type-container:first-child:nth-last-child(2) {
  grid-column: span 3;
}
.ab-theme-builder-header .ab-type-section.ab-section--grid > .ab-type-container:last-child:nth-child(2) {
  grid-column: span 9;
}
/* Common 3-col footer */
.ab-theme-builder-footer .ab-type-section.ab-section--grid > .ab-type-container:nth-child(1):nth-last-child(3),
.ab-theme-builder-footer .ab-type-section.ab-section--grid > .ab-type-container:nth-child(2):nth-last-child(2),
.ab-theme-builder-footer .ab-type-section.ab-section--grid > .ab-type-container:nth-child(3):nth-last-child(1) {
  grid-column: span 4;
}
.ab-type-section.ab-section--grid > .ab-node:not(.ab-type-container):not(.ab-type-section),
.ab-type-section[style*="grid-template-columns"] > .ab-node:not(.ab-type-container):not(.ab-type-section) {
  grid-column: 1 / -1;
  width: 100%;
  max-width: 100%;
}
/* Editor chrome must not steal a grid track when section is selected */
.ab-type-section.ab-section--grid > .ab-overlay-chrome,
.ab-type-section.ab-section--grid > .ab-resize-handle {
  grid-column: 1 / -1;
  width: auto;
}
/*
 * Row sections (header): logo + menu side by side.
 * Override the leaf width:100% so flex can shrink/grow naturally.
 */
.ab-type-section.ab-section--row > .ab-node:not(.ab-type-container):not(.ab-type-section),
.ab-type-section[style*="flex-direction:row"] > .ab-node:not(.ab-type-container):not(.ab-type-section) {
  width: auto;
  max-width: 100%;
  flex: 0 1 auto;
  min-width: 0;
}
.ab-type-section.ab-section--row > .ab-type-nav_menu,
.ab-type-section[style*="flex-direction:row"] > .ab-type-nav_menu {
  flex: 1 1 auto;
  min-width: 0;
  width: auto !important;
  max-width: 100%;
}
/* Desktop: force row. Mobile drawer must NOT inherit this (see @media below). */
@media (min-width: 768px) {
  .ab-nav-menu--horizontal .ab-nav-menu__list {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: wrap;
    align-items: center;
  }
  .ab-nav-menu--horizontal .ab-nav-menu__item {
    width: auto !important;
    max-width: none !important;
    flex: 0 0 auto !important;
    display: block !important;
  }
  .ab-nav-menu--horizontal .ab-nav-menu__link {
    width: auto !important;
    display: inline-flex !important;
  }
  /* Header: logo | menu side-by-side even if node CSS late-loads */
  .ab-theme-builder-header .ab-type-section.ab-section--grid {
    display: grid !important;
    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
    align-items: center !important;
  }
  .ab-theme-builder-footer .ab-type-section.ab-section--grid {
    display: grid !important;
    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
  }
}
.ab-type-section,
.ab-type-container,
.ab-type-root {
  float: none !important;
  clear: both;
}

/* Mobile stack fallback for multi-column sections (StyleEngine also emits per-node rules). */
@media (max-width: 767px) {
  .ab-document--front .ab-type-section {
    grid-template-columns: 1fr !important;
  }
  .ab-document--front .ab-type-section > .ab-type-container {
    grid-column: 1 / -1 !important;
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 auto !important;
  }
}
.ab-type-section {
  /* Default zero spacing — user margin/padding (inline / StyleEngine !important) must win.
     Do NOT use !important here: it blocked the 4-side spacing controls in the editor. */
  margin: 0;
  margin-block: 0;
  padding: 0;
  width: 100%;
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
}
.ab-type-root {
  width: 100%;
  /* Empilha seções; gap vem do setting da Raiz (padrão 0) */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
}
.ab-type-container {
  min-height: 24px;
  width: 100%;
  background-size: cover;
  background-position: center center;
}
/* 12-col grid children stretch full cell */
.ab-type-section[style*="grid-template-columns"] > .ab-type-container {
  min-width: 0;
}
.ab-heading { line-height: 1.25; margin: 0 0 0.5em; }
.ab-text { line-height: 1.65; }
/* Text/heading color comes from node styles (inline). Do not force theme color on leaves. */
.ab-node .ab-text,
.ab-node .ab-heading,
.ab-node [data-field="text"],
.ab-node .ab-html {
  /* allow inherit from node inline color; theme must not force black */
  -webkit-text-fill-color: inherit;
}
/*
 * Image widget — default = tamanho natural (logo, foto, etc.).
 * Só preenche a caixa (cover) quando o nó tem altura fixa (.ab-has-h).
 * Nunca forçar width:100% no default: estoura logos em colunas/flex.
 */
.ab-type-image {
  line-height: 0;
  max-width: 100%;
}
.ab-type-image > .ab-image {
  display: inline-block;
  max-width: 100%;
  line-height: 0;
  box-sizing: border-box;
  vertical-align: middle;
}
.ab-image img,
.ab-type-image img {
  max-width: 100%;
  width: auto;
  height: auto;
  display: inline-block;
  vertical-align: middle;
}
/* Altura fixa no nó → preenche a caixa (editor + site iguais).
   !important so PHP inline styles cannot leave “half empty” letterbox. */
.ab-type-image.ab-has-h {
  overflow: hidden;
  line-height: 0;
}
.ab-type-image.ab-has-h > .ab-image,
.ab-type-image.ab-has-h > .ab-image--fill {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  height: 100% !important;
  overflow: hidden;
  line-height: 0;
  box-sizing: border-box !important;
}
.ab-type-image.ab-has-h img,
.ab-type-image.ab-has-h > .ab-image img {
  width: 100% !important;
  max-width: 100% !important;
  height: 100% !important;
  display: block !important;
  object-fit: cover !important;
  /* Foco do recorte: Topo / Centro / Base (settings.object_position) */
  object-position: var(--ab-img-pos, center center) !important;
  vertical-align: top !important;
  box-sizing: border-box !important;
}
/* Allow object-fit override when user chooses contain/fill inside fixed box */
.ab-type-image.ab-has-h[data-fit="contain"] img,
.ab-type-image.ab-has-h .ab-image[data-fit="contain"] img {
  object-fit: contain !important;
}
.ab-type-image.ab-has-h[data-fit="fill"] img,
.ab-type-image.ab-has-h .ab-image[data-fit="fill"] img {
  object-fit: fill !important;
}
.ab-img-ph {
  padding: 32px;
  background: var(--wp--preset--color--tertiary, #f1f5f9);
  color: var(--wp--preset--color--secondary, #64748b);
  text-align: center;
  border-radius: 0;
  border: 1px dashed currentColor;
  opacity: 0.8;
}
/* Button node is a full-row block for alignment; the face is .ab-btn (shrink-wrapped). */
.ab-type-button {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  /* Wrapper must not paint its own box (padding/border/bg belong on .ab-btn). */
  background: transparent !important;
  background-image: none !important;
  border: 0 !important;
  padding: 0 !important;
  margin-left: 0;
  margin-right: 0;
}
.ab-type-button .ab-btn-wrap {
  display: block;
  width: 100%;
  box-sizing: border-box;
}
/* Horizontal row container: hug content height, no vertical abyss.
   Alignment uses CSS vars from settings (justify_content / align_items). */
.ab-type-container.ab-container--row,
.ab-type-container[style*="flex-direction:row"] {
  justify-content: var(--ab-row-justify, flex-start) !important;
  align-items: var(--ab-row-align, flex-start) !important;
  flex-wrap: wrap !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  align-self: flex-start !important;
  flex: 0 0 auto !important;
  flex-basis: auto !important;
  flex-grow: 0 !important;
  flex-shrink: 0 !important;
}
/* Column containers inside a row: share space (flex-grow from StyleEngine).
   min-width:0 lets 4 equal columns fit with gap without wrapping. */
.ab-type-container.ab-container--row > .ab-type-container,
.ab-type-container[style*="flex-direction:row"] > .ab-type-container {
  min-width: 0 !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}
.ab-type-container.ab-container--row > .ab-type-container > .ab-type-image,
.ab-type-container[style*="flex-direction:row"] > .ab-type-container > .ab-type-image {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
}
.ab-type-container.ab-container--row > .ab-type-container > .ab-type-image img,
.ab-type-container[style*="flex-direction:row"] > .ab-type-container > .ab-type-image img {
  width: 100% !important;
  max-width: 100% !important;
  height: auto !important;
  display: block !important;
}
/* Inside a horizontal row: sit side-by-side, not full-width stack */
.ab-type-container.ab-container--row > .ab-type-button,
.ab-type-container[style*="flex-direction:row"] > .ab-type-button,
.ab-type-section.ab-section--row > .ab-type-button,
.ab-type-section[style*="flex-direction:row"] > .ab-type-button {
  width: auto !important;
  max-width: 100% !important;
  flex: 0 1 auto !important;
  min-width: 0;
  height: auto !important;
  min-height: 0 !important;
  align-self: flex-start !important;
}
.ab-type-container.ab-container--row > .ab-type-button .ab-btn-wrap,
.ab-type-container[style*="flex-direction:row"] > .ab-type-button .ab-btn-wrap,
.ab-type-section.ab-section--row > .ab-type-button .ab-btn-wrap,
.ab-type-section[style*="flex-direction:row"] > .ab-type-button .ab-btn-wrap {
  width: auto !important;
}
.ab-type-container.ab-container--row > .ab-node:not(.ab-type-container):not(.ab-type-section),
.ab-type-container[style*="flex-direction:row"] > .ab-node:not(.ab-type-container):not(.ab-type-section) {
  width: auto !important;
  max-width: 100% !important;
  flex: 0 1 auto !important;
  min-width: 0;
  height: auto !important;
  min-height: 0 !important;
  align-self: flex-start !important;
}
.ab-btn,
a.ab-btn,
a.ab-btn.wp-element-button,
.ab-type-button .ab-btn,
.ab-btn-wrap .ab-btn {
  display: inline-block;
  padding: calc(0.667em + 2px) calc(1.333em + 2px);
  /* Default: primary fill + white text. Per-button StyleEngine sets
     --ab-btn-color / --ab-btn-bg so white pills keep dark/red labels. */
  background: var(--ab-btn-bg, var(--ab-color-primary, var(--wp--preset--color--primary, #7c3aed)));
  background-color: var(--ab-btn-bg, var(--ab-color-primary, var(--wp--preset--color--primary, #7c3aed)));
  color: var(--ab-btn-color, var(--ab-color-btn-text, #ffffff)) !important;
  -webkit-text-fill-color: var(--ab-btn-color, var(--ab-color-btn-text, #ffffff)) !important;
  border-radius: var(--ab-radius-md, 8px);
  text-decoration: none !important;
  font-weight: 500;
  border: 1px solid transparent;
  transition: filter 0.2s ease, opacity 0.2s ease;
  box-sizing: border-box;
  max-width: 100%;
  box-shadow: none;
}
.ab-btn:hover,
a.ab-btn:hover,
a.ab-btn:visited,
a.ab-btn:focus,
a.ab-btn.wp-element-button:hover,
a.ab-btn.wp-element-button:visited,
a.ab-btn.wp-element-button:focus {
  filter: brightness(0.95);
  opacity: 1;
  text-decoration: none !important;
  /* Keep label color — theme visited links must not paint red/purple */
  color: var(--ab-btn-color, var(--ab-color-btn-text, #ffffff)) !important;
  -webkit-text-fill-color: var(--ab-btn-color, var(--ab-color-btn-text, #ffffff)) !important;
}
/* Explicit high-specificity so custom node colors always beat defaults */
.ab-type-button .ab-btn,
.ab-type-button a.ab-btn,
.ab-type-button a.ab-btn.wp-element-button {
  color: var(--ab-btn-color, var(--ab-color-btn-text, #ffffff)) !important;
  -webkit-text-fill-color: var(--ab-btn-color, var(--ab-color-btn-text, #ffffff)) !important;
  background-color: var(--ab-btn-bg, var(--ab-color-primary, #7c3aed));
}

/* Comments form widget — editor preview + real WP comment_form() */
.ab-comments-form {
  max-width: 100%;
  width: 100%;
  box-sizing: border-box;
  padding: 4px 2px 8px;
}
/* (editor chrome styles refined below with public form) */
.ab-comments-form__title,
.ab-comments-form .comment-reply-title {
  margin: 0 0 16px !important;
  padding: 0 !important;
  font-size: 1.25rem !important;
  font-weight: 700 !important;
  line-height: 1.3 !important;
  color: inherit;
}
.ab-comments-form__list-title {
  margin: 0 0 12px;
  font-size: 1.15rem;
  font-weight: 700;
}
.ab-comments-form__list {
  list-style: none;
  padding: 0;
  margin: 0 0 1.75rem;
}
.ab-comments-form__list .comment {
  margin-bottom: 1rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid #e2e8f0;
}
.ab-comments-form__list .avatar {
  border-radius: 50%;
  margin-right: 12px;
  vertical-align: middle;
}
.ab-comments-form__closed {
  color: #64748b;
  font-size: 14px;
}

/* Form shell (public + editor preview) */
.ab-comments-form__form,
.ab-comments-form .ab-comment-form,
.ab-comments-form .comment-form {
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin: 0;
  padding: 0;
  border: 0;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}
.ab-comment-form__row,
.ab-comments-form .comment-form-comment,
.ab-comments-form .comment-form-author,
.ab-comments-form .comment-form-email,
.ab-comments-form .comment-form-url,
.ab-comments-form .form-submit {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 8px;
  margin: 0 !important;
  padding: 0 !important;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}
.ab-comments-form label,
.ab-comment-form label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: #334155;
  margin: 0;
  line-height: 1.35;
}
.ab-comments-form .required,
.ab-comment-form .required {
  color: #dc2626;
  font-weight: 700;
}
/* Inputs / textarea — match editor field cards */
.ab-comment-form__control,
.ab-comments-form input[type="text"],
.ab-comments-form input[type="email"],
.ab-comments-form input[type="url"],
.ab-comments-form input[type="password"],
.ab-comments-form textarea,
.ab-comments-form .comment-form input[type="text"],
.ab-comments-form .comment-form input[type="email"],
.ab-comments-form .comment-form input[type="url"],
.ab-comments-form .comment-form textarea {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  margin: 0 !important;
  border: 1px solid #e2e8f0 !important;
  border-radius: 8px !important;
  padding: 12px 14px !important;
  background: #fff !important;
  color: #0f172a !important;
  font: 400 15px/1.45 system-ui, -apple-system, Segoe UI, Roboto, sans-serif !important;
  min-height: 44px;
  box-shadow: none !important;
  outline: none;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
  appearance: none;
  -webkit-appearance: none;
}
.ab-comment-form__textarea,
.ab-comments-form textarea,
.ab-comments-form .comment-form textarea {
  min-height: 120px !important;
  resize: vertical;
  line-height: 1.5 !important;
}
.ab-comments-form input:focus,
.ab-comments-form textarea:focus {
  border-color: #7c3aed !important;
  box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.15) !important;
}
/* Editor fake controls (non-interactive) */
.ab-comment-form__control--fake {
  min-height: 44px;
  background: #fff !important;
  pointer-events: none;
}
.ab-comment-form__control--fake.ab-comment-form__textarea {
  min-height: 120px !important;
}
/* Logged-in line — avoid "Suporte.Edite" text run-on */
.ab-comment-form__logged-in,
.ab-comments-form .logged-in-as {
  display: block !important;
  margin: 0 !important;
  padding: 12px 16px !important;
  border-radius: 10px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  color: #475569 !important;
  -webkit-text-fill-color: #475569 !important;
  font-size: 13px !important;
  line-height: 1.55 !important;
  box-sizing: border-box;
}
.ab-comment-form__logged-in a,
.ab-comments-form .logged-in-as a {
  color: #4c1d95 !important;
  -webkit-text-fill-color: #4c1d95 !important;
  text-decoration: underline;
  margin: 0 0.15em;
}
.ab-comment-form__logged-in strong,
.ab-comments-form .logged-in-as strong {
  color: #0f172a !important;
  -webkit-text-fill-color: #0f172a !important;
  font-weight: 700;
}
.ab-comment-form__required-note {
  display: inline;
  color: #64748b !important;
  -webkit-text-fill-color: #64748b !important;
}
/* Submit — colors via CSS vars (settings btn_bg / btn_color), never inherit text color */
.ab-comment-form__submit,
.ab-comments-form .ab-btn.submit,
.ab-comments-form input[type="submit"],
.ab-comments-form button[type="submit"],
.ab-comments-form .ab-comment-form__submit.ab-btn {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: auto !important;
  min-width: 160px;
  margin: 4px 0 0 !important;
  padding: 14px 24px !important;
  border: 0 !important;
  border-radius: var(--ab-cf-btn-radius, 8px) !important;
  background: var(--ab-cf-btn-bg, var(--ab-color-primary, #4c1d95)) !important;
  background-image: none !important;
  color: var(--ab-cf-btn-color, #ffffff) !important;
  -webkit-text-fill-color: var(--ab-cf-btn-color, #ffffff) !important;
  font: 700 14px/1.2 system-ui, sans-serif !important;
  cursor: pointer;
  box-shadow: none !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  box-sizing: border-box !important;
}
.ab-comment-form__submit:hover,
.ab-comments-form button[type="submit"]:hover,
.ab-comments-form input[type="submit"]:hover {
  filter: brightness(1.06);
}
.ab-comments-form button[type="submit"]:disabled,
.ab-comment-form__submit:disabled {
  opacity: 0.75;
  cursor: default;
}
.ab-comment-form__submit.is-full,
.ab-comments-form .ab-comment-form__submit.is-full {
  width: 100% !important;
  max-width: 100% !important;
  display: flex !important;
  justify-content: center;
}
/* Editor preview: light card like public form (no purple wash) */
.ab-comments-form--editor {
  border: 1px dashed #c4b5fd;
  border-radius: 12px;
  padding: 18px;
  background: #fff;
}
.ab-comments-form--editor .ab-comment-form__control--fake::before {
  content: attr(data-placeholder);
  color: #94a3b8;
  font-size: 14px;
}
/* Hide WP cookies checkbox clutter slightly nicer */
.ab-comments-form .comment-form-cookies-consent {
  flex-direction: row !important;
  align-items: flex-start !important;
  gap: 8px !important;
  font-size: 13px;
  color: #64748b;
}
.ab-comments-form .comment-form-cookies-consent input {
  width: auto !important;
  min-height: 0 !important;
  margin-top: 3px !important;
  padding: 0 !important;
}
.ab-heading.ab-h1 { font-size: var(--ab-font-size-h1, 2.5rem); }
.ab-heading.ab-h2 { font-size: var(--ab-font-size-h2, 2rem); }
.ab-heading.ab-h3 { font-size: var(--ab-font-size-h3, 1.5rem); }
.ab-text { font-size: var(--ab-font-size-body, 1rem); }
.ab-spacer { width: 100%; }
.ab-divider {
  border: 0;
  border-top: 1px solid currentColor;
  opacity: 0.25;
  margin: 1rem 0;
}
/* Equal page gutters — match editor .ab-page-body (16 mobile / 20 tablet / 24 desktop). */
body.ab-builder-page {
  --ab-page-gutter: 16px;
  overflow-x: clip;
  max-width: 100%;
}
@media (min-width: 768px) {
  body.ab-builder-page {
    --ab-page-gutter: 20px;
  }
}
@media (min-width: 1024px) {
  body.ab-builder-page {
    --ab-page-gutter: 24px;
  }
}
html:has(body.ab-builder-page) {
  overflow-x: clip;
}
.ab-content-wrap {
  width: 100%;
  max-width: 100% !important;
  box-sizing: border-box;
  /* Single pair of gutters — do NOT also set padding-inline elsewhere */
  padding-left: var(--ab-page-gutter, 16px) !important;
  padding-right: var(--ab-page-gutter, 16px) !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  left: auto !important;
  right: auto !important;
  position: relative !important;
  float: none !important;
}
body.ab-builder-page .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)).ab-content-wrap,
body.ab-builder-page .wp-block-post-content.is-layout-constrained {
  max-width: none !important;
  width: 100% !important;
}
/* Theme FSE often caps children of entry-content — keep builder full-bleed of its wrap */
.ab-content-wrap.entry-content > .ab-document,
.ab-content-wrap > .ab-document {
  max-width: none !important;
  width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  box-sizing: border-box;
}
/*
 * Block themes (TT4 etc.) apply:
 *   .entry-content > * { max-width: content-size; margin-inline: auto }
 * That overrides our root max-width (wide 1200) and squeezes sections/accordion
 * on the public page while the editor looks fine. Neutralize for builder trees;
 * root wide/content re-applies its own max-width with higher priority below.
 */
/*
 * Neutralize theme max-width on builder trees, but do NOT zero margin-left/right
 * on every .ab-node — that blocked user Margem externa (4-side controls).
 * Only reset auto-centering on the document root wrappers.
 */
body.ab-builder-page .ab-content-wrap.entry-content > *,
body.ab-builder-page .entry-content.ab-content-wrap > *,
body.ab-builder-page .ab-content-wrap .ab-document,
body.ab-builder-page .ab-content-wrap .ab-type-root {
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
body.ab-builder-page .ab-content-wrap .ab-node,
body.ab-builder-page .ab-content-wrap .ab-type-section,
body.ab-builder-page .ab-content-wrap .ab-type-container,
body.ab-builder-page .ab-content-wrap .ab-type-accordion,
body.ab-builder-page .ab-content-wrap .ab-type-loop_grid {
  max-width: none !important;
}
/* Root width modes (StyleEngine also sets inline/class rules with !important) */
body.ab-builder-page .ab-type-root.ab-root--full {
  max-width: none !important;
  width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
body.ab-builder-page .ab-type-root.ab-root--wide {
  max-width: var(--ab-root-max, 1200px) !important;
  width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
body.ab-builder-page .ab-type-root.ab-root--content {
  max-width: var(--wp--style--global--content-size, 650px) !important;
  width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
/*
 * Kill theme "alignfull = 100vw + calc(50% - 50vw)" tricks.
 * Those make the right gap larger than the left when a scrollbar is present.
 */
body.ab-builder-page .alignfull,
body.ab-builder-page .entry-content.ab-content-wrap.alignfull,
body.ab-builder-page .ab-content-wrap.alignfull,
body.ab-builder-page .wp-block-post-content.alignfull {
  width: 100% !important;
  max-width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  margin-inline: 0 !important;
  /* gutters already on .ab-content-wrap — do not double padding-inline */
  left: auto !important;
  right: auto !important;
  inset-inline: auto !important;
  position: relative !important;
  float: none !important;
  transform: none !important;
}
body.ab-builder-page .is-layout-constrained > .ab-content-wrap,
body.ab-builder-page .is-layout-constrained > .ab-document,
body.ab-builder-page .wp-block-post-content.is-layout-constrained {
  max-width: none !important;
  width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
/* Theme main / article wrappers sometimes add extra right pad or max-width */
body.ab-builder-page .wp-site-blocks > main,
body.ab-builder-page main.wp-block-group,
body.ab-builder-page .entry-content:not(.ab-content-wrap) {
  max-width: none !important;
  width: 100% !important;
  box-sizing: border-box;
}
body.ab-builder-page .ab-type-section {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}
/* Root: NÃO forçar max-width:100% genérico — usa .ab-root--full / --wide / --content */
body.ab-builder-page .ab-type-root {
  width: 100%;
  box-sizing: border-box;
}
/*
 * Theme Builder header/footer — true full-bleed (edge to edge).
 * Themes (FSE has-global-padding / is-layout-constrained) and our old
 * document padding created white side strips. Backgrounds live on sections;
 * horizontal padding belongs on section/content styles, not the outer wrap.
 */
.ab-theme-builder-part,
.ab-theme-builder-header,
.ab-theme-builder-footer,
footer.ab-theme-builder-footer,
header.ab-theme-builder-header {
  display: block !important;
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  margin-inline: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  box-sizing: border-box !important;
  float: none !important;
  position: relative;
  left: auto !important;
  right: auto !important;
  inset-inline: auto !important;
}
/* Break out of theme root padding (has-global-padding on .wp-site-blocks) */
body .wp-site-blocks > .ab-theme-builder-footer,
body .wp-site-blocks > .ab-theme-builder-header,
body .wp-site-blocks > footer.ab-theme-builder-footer,
body .wp-site-blocks > header.ab-theme-builder-header,
body .has-global-padding > .ab-theme-builder-footer,
body .has-global-padding > .ab-theme-builder-header,
body .is-layout-constrained > .ab-theme-builder-footer,
body .is-layout-constrained > .ab-theme-builder-header {
  width: 100vw !important;
  max-width: 100vw !important;
  margin-left: calc(50% - 50vw) !important;
  margin-right: calc(50% - 50vw) !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}
/* Also cancel WP template-part wrapper constraints */
.wp-block-template-part:has(.ab-theme-builder-footer),
.wp-block-template-part:has(.ab-theme-builder-header) {
  max-width: none !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
}
body.ab-builder-page .ab-theme-builder-header > .ab-document,
body.ab-builder-page .ab-theme-builder-footer > .ab-document,
.ab-theme-builder-header > .ab-document,
.ab-theme-builder-footer > .ab-document,
.ab-theme-builder-header .ab-document,
.ab-theme-builder-footer .ab-document {
  box-sizing: border-box !important;
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}
body.ab-builder-page .ab-theme-builder-footer .ab-type-root,
body.ab-builder-page .ab-theme-builder-header .ab-type-root,
.ab-theme-builder-footer .ab-type-root,
.ab-theme-builder-header .ab-type-root {
  width: 100% !important;
  box-sizing: border-box !important;
}
body.ab-builder-page .ab-theme-builder-footer .ab-type-root.ab-root--full,
body.ab-builder-page .ab-theme-builder-header .ab-type-root.ab-root--full,
.ab-theme-builder-footer .ab-type-root.ab-root--full,
.ab-theme-builder-header .ab-type-root.ab-root--full {
  max-width: none !important;
  width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
body.ab-builder-page .ab-theme-builder-footer .ab-type-root.ab-root--wide,
body.ab-builder-page .ab-theme-builder-header .ab-type-root.ab-root--wide,
.ab-theme-builder-footer .ab-type-root.ab-root--wide,
.ab-theme-builder-header .ab-type-root.ab-root--wide {
  max-width: var(--ab-root-max, 1200px) !important;
  width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
/* Full-bleed sections inside theme parts */
.ab-theme-builder-part .ab-type-section,
.ab-theme-builder-footer .ab-type-section,
.ab-theme-builder-header .ab-type-section {
  width: 100% !important;
  max-width: none !important;
  box-sizing: border-box !important;
  margin: 0 !important;
  margin-block: 0 !important;
}
/* Footer/header stack: no theme block-gap white strips between sections */
.ab-theme-builder-footer,
.ab-theme-builder-header {
  --wp--style--block-gap: 0px;
}
.ab-theme-builder-footer .ab-type-root,
.ab-theme-builder-header .ab-type-root {
  display: flex !important;
  flex-direction: column !important;
  gap: 0 !important;
  row-gap: 0 !important;
}
.ab-theme-builder-footer .ab-type-root > .ab-type-section,
.ab-theme-builder-header .ab-type-root > .ab-type-section {
  margin: 0 !important;
  margin-block-start: 0 !important;
  margin-block-end: 0 !important;
}
/* Footer 3-col grid: equal columns, stretch like the Theme Builder editor */
@media (min-width: 768px) {
  .ab-theme-builder-footer .ab-type-section.ab-section--grid {
    display: grid !important;
    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
    align-items: stretch !important;
  }
  .ab-theme-builder-footer .ab-type-section.ab-section--grid > .ab-type-container {
    min-width: 0;
    max-width: 100%;
  }
}
/* Editor canvas body = same gutters as front .ab-content-wrap */
.ab-page-body {
  font-family: var(--wp--preset--font-family--system-font, inherit);
  color: var(--wp--preset--color--foreground, #0f172a);
  background: var(--wp--preset--color--background, #fff);
  box-sizing: border-box;
  width: 100%;
}

/*
 * Editor guides must NOT change layout metrics (no padding/border that
 * shrinks content). Use outline only so canvas matches the public page.
 */
.ab-document--editor .ab-type-section {
  outline: 1px dashed #c4b5fd;
  outline-offset: -1px;
  border: none;
  border-radius: 0;
  /* Do NOT set background/background-color here — it fights inline bg image. */
  /* Sem padding/margin forçados — WYSIWYG igual ao front */
  padding: 0;
  margin: 0;
}
.ab-document--editor .ab-type-container {
  outline: 1px dashed #a78bfa;
  outline-offset: -1px;
  border: none;
  border-radius: 0;
  background-color: transparent;
  padding: 0;
  min-height: 24px;
}
.ab-document--editor .ab-node[data-ab-editable]:not(.ab-type-root):not(.ab-type-section):not(.ab-type-container) {
  outline: 1px solid transparent;
  outline-offset: -1px;
  border: none;
  border-radius: 0;
  padding: 0;
  cursor: pointer;
}
.ab-document--editor .ab-node[data-ab-editable]:not(.ab-type-root):not(.ab-type-section):not(.ab-type-container):hover {
  outline-color: #c4b5fd;
  background: rgba(124, 58, 237, 0.04);
}
.ab-document--editor .ab-node.is-selected {
  /* Outline only — never override element background/color from props */
  outline: 2px solid #7c3aed !important;
  outline-offset: 0;
  border: none !important;
  box-shadow: none;
}
.ab-drop-empty {
  border: 2px dashed #c4b5fd;
  border-radius: 8px;
  padding: 28px 16px;
  text-align: center;
  color: #7c3aed;
  font: 600 12px/1.4 system-ui, sans-serif;
  margin: 4px 0;
  min-height: 100px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(124, 58, 237, 0.04);
  box-sizing: border-box;
  cursor: pointer;
}
/* Empty column containers: fill the grid cell so the dashed zone is obvious */
.ab-document--editor .ab-type-section[style*="grid"] > .ab-type-container,
.ab-document--editor .ab-type-section > .ab-type-container {
  min-height: 120px;
}
.ab-document--editor .ab-type-container > .ab-drop-empty {
  min-height: 120px;
  height: 100%;
  margin: 0;
  flex: 1 1 auto;
}

/* Selection chrome + handles (Elementor-like)
 * Toolbar is position:absolute (top:-28px) — NÃO usar margin-top para
 * abrir espaço, senão o canvas diverge do site público. */
.ab-document--editor .ab-node {
  position: relative;
  margin-top: 0;
  /* Preserve document stacking; --ab-z set from style bag when present */
  z-index: var(--ab-z, auto);
  /* Never clip resize handles / chrome (they sit slightly outside the box) */
  overflow: visible !important;
}
/*
 * Selected node elevates chrome/handles so they stay clickable over siblings,
 * without wiping a custom z-index the user set (--ab-z).
 * !important beats inline style z-index from styleAttr during edit.
 */
.ab-document--editor .ab-node.is-selected {
  z-index: calc(var(--ab-z, 0) + 40) !important;
  scroll-margin-top: 40px;
  /* CRITICAL: handles sit at top/left/right/bottom: -5px — overflow must stay visible */
  overflow: visible !important;
}
/* Sections/containers: children must paint in DOM order (layers list). */
.ab-document--editor .ab-type-section,
.ab-document--editor .ab-type-container {
  isolation: auto;
}
/* Clip media inside selected nodes without hiding handles on the node box */
.ab-document--editor .ab-node.is-selected > .ab-gallery,
.ab-document--editor .ab-node.is-selected > .ab-carousel,
.ab-document--editor .ab-node.is-selected > .ab-img-carousel,
.ab-document--editor .ab-node.is-selected > .ab-image,
.ab-document--editor .ab-node.is-selected > .ab-image-box,
.ab-document--editor .ab-node.is-selected > .ab-video,
.ab-document--editor .ab-node.is-selected > .ab-embed {
  border-radius: inherit;
  overflow: hidden;
  max-width: 100%;
}
/* While resizing, keep the active node above neighbors so handles track the box */
.ab-document--editor .ab-node.is-resizing {
  z-index: calc(var(--ab-z, 0) + 60) !important;
  overflow: visible !important;
}
.ab-document--editor .ab-type-section,
.ab-document--editor .ab-type-section.is-selected,
.ab-document--editor .ab-type-container.is-selected {
  margin-top: 0;
}
/* Stack sections/containers as a vertical document flow */
.ab-document--editor.ab-document,
.ab-document--editor {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0;
}
.ab-overlay-chrome {
  position: absolute;
  left: 0;
  right: auto;
  top: -28px;
  height: 26px;
  display: flex;
  align-items: center;
  gap: 4px;
  z-index: 20;
  pointer-events: auto;
  /* Never inherit node text color / fill from style panel */
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  line-height: 1 !important;
  background: transparent !important;
  background-image: none !important;
}
.ab-overlay-chrome *,
.ab-overlay-chrome .ab-overlay-label,
.ab-overlay-chrome .ab-overlay-actions,
.ab-overlay-chrome button {
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif !important;
}
.ab-overlay-label {
  background: #7c3aed !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  font: 600 11px/1 system-ui, sans-serif !important;
  padding: 5px 8px;
  border-radius: 4px 4px 0 0;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
  user-select: none;
}
.ab-overlay-actions {
  display: inline-flex;
  gap: 2px;
  background: #7c3aed !important;
  border-radius: 4px 4px 0 0;
  padding: 2px;
}
.ab-overlay-actions button {
  border: 0;
  background: transparent;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  font: 600 11px system-ui, sans-serif !important;
  padding: 4px 8px;
  cursor: pointer;
  border-radius: 3px;
  white-space: nowrap;
  line-height: 1.2;
}
.ab-overlay-actions button:hover { background: rgba(255,255,255,.2); }
.ab-chrome-act--dup {
  letter-spacing: 0.01em;
  background: rgba(255,255,255,.12) !important;
}
.ab-chrome-act--dup:hover {
  background: rgba(255,255,255,.28) !important;
}
.ab-chrome-act--copy-style,
.ab-chrome-act--paste-style {
  letter-spacing: 0.01em;
  background: rgba(255,255,255,.1) !important;
}
.ab-chrome-act--paste-style {
  background: rgba(52, 211, 153, 0.35) !important;
}
.ab-chrome-act--copy-style:hover,
.ab-chrome-act--paste-style:hover {
  background: rgba(255,255,255,.28) !important;
}
.ab-chrome-act--del {
  font-size: 14px;
  padding: 2px 8px;
}
/* ▲ / ▼ reorder among siblings */
.ab-chrome-act--order {
  font-size: 10px !important;
  padding: 2px 6px !important;
  min-width: 22px;
  line-height: 1 !important;
  background: rgba(255, 255, 255, 0.12) !important;
  letter-spacing: 0;
}
.ab-chrome-act--order:hover:not(:disabled):not(.is-disabled) {
  background: rgba(255, 255, 255, 0.3) !important;
}
.ab-chrome-act--order:disabled,
.ab-chrome-act--order.is-disabled {
  opacity: 0.35;
  cursor: default !important;
  pointer-events: none;
}
.ab-drag-handle {
  cursor: grab;
  padding: 0 4px;
  opacity: 0.95;
}
.ab-drag-handle:active { cursor: grabbing; }

/*
 * Alças de redimensionamento: SEMPRE 10×10px.
 * Sem height:100% / top+bottom (isso esticava as alças laterais
 * quando o bloco recebia height via arraste).
 */
.ab-document--editor .ab-resize-handle,
.ab-resize-handle {
  position: absolute !important;
  width: 12px !important;
  height: 12px !important;
  min-width: 12px !important;
  min-height: 12px !important;
  max-width: 12px !important;
  max-height: 12px !important;
  margin: 0 !important;
  padding: 0 !important;
  flex: 0 0 12px !important;
  background: #fff !important;
  border: 2px solid #7c3aed !important;
  border-radius: 2px !important;
  z-index: 100 !important;
  box-sizing: border-box !important;
  pointer-events: auto !important;
  overflow: visible !important;
  line-height: 0 !important;
  font-size: 0 !important;
  inset: auto !important; /* limpa top/right/bottom/left herdados */
  opacity: 1 !important;
  visibility: visible !important;
  display: block !important;
}
.ab-resize-handle.n  {
  top: -5px !important;
  left: 50% !important;
  transform: translateX(-50%) !important;
  cursor: ns-resize;
}
.ab-resize-handle.s  {
  bottom: -5px !important;
  left: 50% !important;
  transform: translateX(-50%) !important;
  cursor: ns-resize;
}
.ab-resize-handle.e  {
  right: -5px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  cursor: ew-resize;
}
.ab-resize-handle.w  {
  left: -5px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  cursor: ew-resize;
}
.ab-resize-handle.ne {
  top: -5px !important;
  right: -5px !important;
  transform: none !important;
  cursor: nesw-resize;
}
.ab-resize-handle.nw {
  top: -5px !important;
  left: -5px !important;
  transform: none !important;
  cursor: nwse-resize;
}
.ab-resize-handle.se {
  bottom: -5px !important;
  right: -5px !important;
  transform: none !important;
  cursor: nwse-resize;
}
.ab-resize-handle.sw {
  bottom: -5px !important;
  left: -5px !important;
  transform: none !important;
  cursor: nesw-resize;
}

.ab-node.is-dragging {
  opacity: 0.4;
  pointer-events: none !important;
}
body.ab-is-dragging {
  cursor: grabbing !important;
}
body.ab-is-dragging .ab-node {
  /* allow hit-testing containers while dragging */
}
/* Target column / container while dragging — dashed purple = can drop */
.ab-node.ab-drop-target,
.ab-type-container.ab-drop-target-col {
  outline: 2px dashed #7c3aed !important;
  outline-offset: -2px;
  background: rgba(124, 58, 237, 0.07) !important;
  box-shadow: inset 0 0 0 1px rgba(124, 58, 237, 0.25);
}
.ab-type-container.ab-drop-target-col > .ab-drop-empty {
  border-color: #7c3aed !important;
  background: rgba(124, 58, 237, 0.12) !important;
  color: #7c3aed !important;
  min-height: 80px;
}
.ab-drop-indicator {
  height: 4px;
  background: #7c3aed;
  border-radius: 3px;
  margin: 4px 0;
  box-shadow: 0 0 0 2px rgba(124, 58, 237, 0.25);
  pointer-events: none;
  position: relative;
  z-index: 30;
}
.ab-drop-indicator--in {
  margin: 8px 4px;
}

.ab-html { min-height: 1em; }

/* Dynamic + embed */
.ab-dynamic { line-height: 1.5; }
.ab-dynamic-badge {
  display: inline-block;
  font: 600 10px/1 system-ui, sans-serif;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #7c3aed;
  background: rgba(124, 58, 237, 0.1);
  border: 1px solid rgba(124, 58, 237, 0.25);
  border-radius: 4px;
  padding: 3px 6px;
  margin-bottom: 6px;
}
.ab-document--front .ab-dynamic-badge { display: none; }
.ab-dynamic-nav ul,
.ab-dynamic-menu {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.ab-dynamic-nav a { text-decoration: none; color: inherit; }
.ab-dynamic-avatar { border-radius: 50%; max-width: 96px; height: auto; }
.ab-dynamic-avatar-ph {
  display: inline-flex;
  width: 48px;
  height: 48px;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: #e2e8f0;
  font-size: 22px;
}
.ab-dynamic-nav-preview {
  padding: 8px 12px;
  border: 1px dashed #cbd5e1;
  border-radius: 6px;
  color: #64748b;
  font: 600 12px system-ui, sans-serif;
}
.ab-embed { width: 100%; }
.ab-embed--empty {
  padding: 24px;
  border: 1px dashed #cbd5e1;
  border-radius: 8px;
  color: #64748b;
  font: 600 12px system-ui, sans-serif;
  text-align: center;
}
.ab-embed-responsive {
  position: relative;
  width: 100%;
  padding-bottom: 56.25%;
  height: 0;
  overflow: hidden;
  border-radius: 8px;
  background: #0f172a;
}
.ab-embed-responsive iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
.ab-breadcrumbs { font-size: 0.9em; opacity: 0.85; }
.ab-bc-sep { opacity: 0.5; margin: 0 0.25em; }

/* Elementor-like widget kit */
.ab-empty, .ab-maps--editor, .ab-sidebar--editor {
  padding: 16px;
  border: 1px dashed #cbd5e1;
  border-radius: 8px;
  color: #64748b;
  font: 600 12px system-ui, sans-serif;
  text-align: center;
}
.ab-star-rating { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.ab-star { color: #e2e8f0; font-size: 1.25rem; }
.ab-star.is-full, .ab-star.is-half { color: #f59e0b; }
.ab-star-score { margin-left: 6px; font-weight: 600; color: #64748b; font-size: .9rem; }
.ab-maps iframe { width: 100%; border: 0; border-radius: 8px; display: block; }
.ab-icon-wrap { line-height: 1; }
.ab-image-box, .ab-icon-box {
  display: flex;
  flex-direction: column;
  gap: 0;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  min-width: 0;
  overflow: hidden;
}
.ab-image-box {
  --ab-ib-radius: 12px;
  --ab-ib-media-w: 40%;
  --ab-ib-fit: cover;
  --ab-ib-border: #e2e8f0;
  --ab-ib-height: auto;
  --ab-ib-pad: 16px 18px 18px;
  border: none;
  outline: none;
}
.ab-image-box--top { flex-direction: column; }
.ab-image-box--bottom { flex-direction: column-reverse; }
.ab-image-box--left { flex-direction: row; align-items: stretch; }
.ab-image-box--right { flex-direction: row-reverse; align-items: stretch; }
.ab-image-box--no-border {
  border: none !important;
  outline: none !important;
}
.ab-image-box--shadow {
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.12);
  border-radius: var(--ab-ib-radius);
  background: #fff;
  border: none !important;
}
.ab-image-box--border {
  border: 1px solid var(--ab-ib-border) !important;
  border-radius: var(--ab-ib-radius);
  background: #fff;
}
.ab-image-box--shadow.ab-image-box--border {
  border: 1px solid var(--ab-ib-border) !important;
}
.ab-image-box__link {
  display: flex !important;
  flex-direction: inherit;
  align-items: inherit;
  gap: inherit;
  width: 100%;
  min-width: 0;
  text-decoration: none;
  color: inherit;
  box-sizing: border-box;
}
.ab-image-box__media {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow: hidden;
  border-radius: var(--ab-ib-radius);
  line-height: 0;
  flex: 0 0 auto;
  height: var(--ab-ib-height, auto);
  border: none;
}
/* Card com sombra/contorno: imagem colada no topo, cantos só em cima */
.ab-image-box--top.ab-image-box--shadow .ab-image-box__media,
.ab-image-box--top.ab-image-box--border .ab-image-box__media,
.ab-image-box--top.ab-image-box--shadow .ab-image-box__link > .ab-image-box__media,
.ab-image-box--top.ab-image-box--border .ab-image-box__link > .ab-image-box__media {
  border-radius: var(--ab-ib-radius) var(--ab-ib-radius) 0 0;
}
.ab-image-box--bottom.ab-image-box--shadow .ab-image-box__media,
.ab-image-box--bottom.ab-image-box--border .ab-image-box__media {
  border-radius: 0 0 var(--ab-ib-radius) var(--ab-ib-radius);
}
.ab-image-box--left .ab-image-box__media,
.ab-image-box--right .ab-image-box__media,
.ab-image-box--left .ab-image-box__link > .ab-image-box__media,
.ab-image-box--right .ab-image-box__link > .ab-image-box__media {
  flex: 0 0 var(--ab-ib-media-w);
  width: var(--ab-ib-media-w);
  max-width: var(--ab-ib-media-w);
}
.ab-image-box--left.ab-image-box--shadow .ab-image-box__media,
.ab-image-box--left.ab-image-box--border .ab-image-box__media {
  border-radius: var(--ab-ib-radius) 0 0 var(--ab-ib-radius);
}
.ab-image-box--right.ab-image-box--shadow .ab-image-box__media,
.ab-image-box--right.ab-image-box--border .ab-image-box__media {
  border-radius: 0 var(--ab-ib-radius) var(--ab-ib-radius) 0;
}
.ab-image-box__body {
  min-width: 0;
  box-sizing: border-box;
  padding: var(--ab-ib-pad, 16px 18px 18px);
}
.ab-image-box--left .ab-image-box__body,
.ab-image-box--right .ab-image-box__body,
.ab-image-box--left .ab-image-box__link > .ab-image-box__body,
.ab-image-box--right .ab-image-box__link > .ab-image-box__body {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 16px 18px;
  min-width: 0;
}
.ab-image-box__media img,
.ab-image-box img {
  display: block;
  width: 100% !important;
  max-width: 100% !important;
  height: 100% !important;
  min-height: var(--ab-ib-height, auto);
  object-fit: var(--ab-ib-fit, cover);
  object-position: var(--ab-ib-pos, 50% 50%);
  border: none !important;
  outline: none;
  box-shadow: none;
}
.ab-image-box:not([style*="--ab-ib-height"]) .ab-image-box__media img,
.ab-image-box:not([style*="--ab-ib-height"]) .ab-image-box img {
  height: auto !important;
  min-height: 0;
}
.ab-image-box__title, .ab-icon-box__title { margin: 0 0 8px; font-size: 1.15rem; line-height: 1.3; }
.ab-image-box__desc, .ab-icon-box__desc { margin: 0; opacity: .85; line-height: 1.55; }

/* Contador animado */
.ab-counter__number { font-size: clamp(1.75rem, 4vw, 2.75rem); font-weight: 700; line-height: 1.1; font-variant-numeric: tabular-nums; }
.ab-counter__title { margin-top: .35em; opacity: .75; font-size: .95rem; }
.ab-icon-box__icon { font-size: 2rem; line-height: 1; }
.ab-icon-box .ab-icon-box__link {
  text-decoration: none;
  color: inherit;
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
@media (max-width: 767px) {
  .ab-image-box--left,
  .ab-image-box--right {
    flex-direction: column;
  }
  .ab-image-box--left .ab-image-box__media,
  .ab-image-box--right .ab-image-box__media,
  .ab-image-box--left .ab-image-box__link > .ab-image-box__media,
  .ab-image-box--right .ab-image-box__link > .ab-image-box__media {
    flex: 0 0 auto;
    width: 100%;
    max-width: 100%;
  }
}

/* Accordion — sempre 100% da largura do pai (seção/container) */
.ab-accordion,
.ab-accordion[data-ab-accordion],
.ab-type-accordion,
.ab-type-accordion > .ab-accordion {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box;
  display: block;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
/* Accordion image layout + multi-open */
.ab-accordion__body {
  display: block;
}
.ab-accordion--img-left .ab-accordion__body,
.ab-accordion--img-right .ab-accordion__body {
  display: flex;
  gap: 14px;
  align-items: flex-start;
}
.ab-accordion--img-right .ab-accordion__body {
  flex-direction: row-reverse;
}
.ab-accordion--img-left .ab-accordion__media,
.ab-accordion--img-right .ab-accordion__media {
  flex: 0 0 38%;
  max-width: 38%;
  margin: 0;
}
.ab-accordion--img-left .ab-accordion__content,
.ab-accordion--img-right .ab-accordion__content {
  flex: 1 1 auto;
  min-width: 0;
}
.ab-accordion--icon-chevron .ab-accordion__item.is-open .ab-accordion__icon {
  transform: rotate(180deg);
}
.ab-accordion__icon {
  display: inline-block;
  transition: transform 0.2s ease;
}
@media (max-width: 767px) {
  .ab-accordion--img-left .ab-accordion__body,
  .ab-accordion--img-right .ab-accordion__body {
    flex-direction: column;
  }
  .ab-accordion--img-left .ab-accordion__media,
  .ab-accordion--img-right .ab-accordion__media {
    flex: 0 0 auto;
    max-width: 100%;
    width: 100%;
  }
}

/* Gallery — fills node width/height styles */
.ab-type-gallery {
  display: flex;
  flex-direction: column;
  min-height: 0;
  box-sizing: border-box;
  border-radius: var(--ab-radius, 0);
  /* Front: clip rounded corners. Editor: keep visible so handles aren't cut. */
  overflow: hidden;
}
.ab-document--editor .ab-type-gallery,
.ab-document--editor .ab-type-carousel,
.ab-document--editor .ab-type-image_carousel_pro,
.ab-document--editor .ab-type-image {
  overflow: visible !important;
}
.ab-type-gallery > .ab-gallery {
  flex: 1 1 auto;
  min-height: 0;
  width: 100%;
  max-width: 100%;
  border-radius: inherit;
  overflow: hidden;
  box-sizing: border-box;
}
/* Gallery leaf never wider than its column/section */
.ab-type-gallery {
  max-width: 100% !important;
  box-sizing: border-box !important;
}
.ab-document--editor .ab-type-gallery.ab-has-w,
.ab-document--editor .ab-type-gallery.ab-has-h {
  max-width: 100% !important;
}
.ab-gallery {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  min-width: 0;
  border-radius: var(--ab-radius, 0);
  overflow: hidden;
}
.ab-gallery--grid {
  display: grid;
  grid-template-columns: repeat(var(--ab-gal-cols, 3), minmax(0, 1fr));
  gap: var(--ab-gal-gap, 8px);
}
.ab-gallery--masonry {
  column-count: var(--ab-gal-cols, 3);
  column-gap: var(--ab-gal-gap, 8px);
}
.ab-gallery--masonry .ab-gallery__item {
  break-inside: avoid;
  margin-bottom: var(--ab-gal-gap, 8px);
}
.ab-gallery__item {
  margin: 0;
  overflow: hidden;
  border-radius: var(--ab-radius, 6px);
  width: 100%;
  max-width: 100%;
  min-width: 0;
  background: #f1f5f9;
}
.ab-gallery--grid .ab-gallery__item {
  aspect-ratio: var(--ab-gal-ratio, 4 / 3);
}
.ab-gallery__item img {
  width: 100% !important;
  max-width: 100% !important;
  height: 100% !important;
  display: block;
  object-fit: cover;
  vertical-align: middle;
}
.ab-gallery--masonry .ab-gallery__item img {
  height: auto !important;
  object-fit: cover;
}
/* Fixed height on gallery node: fill the box (editor + front match) */
.ab-type-gallery.ab-has-h > .ab-gallery {
  height: 100%;
  min-height: 0;
}
.ab-type-gallery.ab-has-h > .ab-gallery--grid {
  height: 100%;
  grid-auto-rows: minmax(0, 1fr);
  align-content: stretch;
}
.ab-type-gallery.ab-has-h > .ab-gallery--grid .ab-gallery__item {
  aspect-ratio: auto;
  height: 100%;
  min-height: 0;
}
.ab-type-gallery.ab-has-h > .ab-gallery--slider {
  height: 100%;
}
.ab-type-gallery.ab-has-h > .ab-gallery--slider .ab-gallery__track {
  height: 100%;
}
.ab-type-gallery.ab-has-h > .ab-gallery--slider .ab-gallery__item {
  aspect-ratio: auto;
  height: 100%;
  align-self: stretch;
}
.ab-gallery--slider {
  position: relative;
  overflow: hidden;
  width: 100%;
  /* Ensure a real box height for hero slides */
  min-height: 200px;
}
.ab-gallery--slider .ab-gallery__track {
  display: flex !important;
  flex-wrap: nowrap !important;
  gap: var(--ab-gal-gap, 8px);
  transition: transform .4s ease;
  will-change: transform;
  height: 100%;
  width: 100%;
  box-sizing: border-box;
}
.ab-gallery--slider .ab-gallery__item {
  flex: 0 0 calc((100% - (var(--ab-gal-per, 1) - 1) * var(--ab-gal-gap, 8px)) / var(--ab-gal-per, 1)) !important;
  max-width: calc((100% - (var(--ab-gal-per, 1) - 1) * var(--ab-gal-gap, 8px)) / var(--ab-gal-per, 1)) !important;
  width: calc((100% - (var(--ab-gal-per, 1) - 1) * var(--ab-gal-gap, 8px)) / var(--ab-gal-per, 1)) !important;
  min-width: 0;
  aspect-ratio: var(--ab-gal-ratio, 16 / 9);
  box-sizing: border-box;
  /* one slide visible at a time when per=1 */
  flex-shrink: 0 !important;
}
/* per_view=1 → full-bleed hero slide */
.ab-gallery--slider[data-per="1"] .ab-gallery__item {
  flex: 0 0 100% !important;
  max-width: 100% !important;
  width: 100% !important;
}
/* When parent node has fixed height, slides fill the box (hero slider) */
.ab-type-gallery.ab-has-h .ab-gallery--slider,
.ab-type-gallery.ab-has-h .ab-gallery--slider .ab-gallery__track {
  height: 100%;
  min-height: 0;
}
.ab-type-gallery.ab-has-h .ab-gallery--slider .ab-gallery__item,
.ab-gallery--slider.ab-gallery--fill .ab-gallery__item {
  aspect-ratio: auto !important;
  height: 100% !important;
}
.ab-type-gallery.ab-has-h .ab-gallery--slider .ab-gallery__item img {
  height: 100% !important;
  object-fit: cover !important;
}
.ab-gallery__nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 20;
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 50%;
  background: rgba(255,255,255,.95);
  color: #0f172a;
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(0,0,0,.2);
  pointer-events: auto !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  padding: 0;
  user-select: none;
  -webkit-user-select: none;
}
.ab-gallery__nav:hover { background: #fff; }
.ab-gallery__nav--prev { left: 12px; }
.ab-gallery__nav--next { right: 12px; }
/* Editor: nav above chrome */
.ab-document--editor .ab-gallery__nav {
  z-index: 50;
}

/* Carousel — height follows --ab-carousel-h; width 100% of node */
.ab-type-carousel,
.ab-type-image_carousel_pro {
  overflow: hidden;
  box-sizing: border-box;
}
.ab-type-carousel.ab-has-h > .ab-carousel,
.ab-type-image_carousel_pro.ab-has-h > .ab-img-carousel,
.ab-type-image_carousel_pro.ab-has-h > .ab-carousel {
  height: 100% !important;
}
.ab-carousel {
  position: relative;
  overflow: hidden;
  border-radius: 8px;
  background: #0f172a;
  height: var(--ab-carousel-h, 280px);
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  min-width: 0;
}
.ab-carousel__track { position: relative; height: 100%; width: 100%; }
.ab-carousel--single .ab-carousel__slide,
.ab-carousel--fade .ab-carousel__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity .45s ease;
  pointer-events: none;
}
.ab-carousel--single .ab-carousel__slide.is-active,
.ab-carousel--fade .ab-carousel__slide.is-active {
  opacity: 1;
  z-index: 1;
  pointer-events: auto;
}
.ab-carousel--multi .ab-carousel__track {
  display: flex;
  gap: var(--ab-carousel-gap, 8px);
  height: 100%;
  transition: transform .4s ease;
}
.ab-carousel--multi .ab-carousel__slide {
  position: relative;
  flex: 0 0 calc((100% - (var(--ab-carousel-per, 1) - 1) * var(--ab-carousel-gap, 8px)) / var(--ab-carousel-per, 1));
  max-width: calc((100% - (var(--ab-carousel-per, 1) - 1) * var(--ab-carousel-gap, 8px)) / var(--ab-carousel-per, 1));
  height: 100%;
  opacity: 1;
}
.ab-carousel__slide img {
  width: 100% !important;
  max-width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  display: block;
}
.ab-carousel__nav {
  position: absolute;
  top: 50%;
  z-index: 3;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 50%;
  background: rgba(255,255,255,.92);
  color: #0f172a;
  font-size: 22px;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(0,0,0,.2);
}
.ab-carousel__nav--prev { left: 10px; }
.ab-carousel__nav--next { right: 10px; }
.ab-carousel__dots {
  position: absolute;
  left: 0; right: 0; bottom: 10px;
  z-index: 3;
  display: flex;
  justify-content: center;
  gap: 8px;
}
.ab-carousel__dot {
  width: 9px; height: 9px; border-radius: 50%; border: 0; padding: 0;
  background: rgba(255,255,255,.45); cursor: pointer;
}
.ab-carousel__dot.is-active { background: #fff; transform: scale(1.15); }

.ab-icon-list { list-style: none; margin: 0; padding: 0; }
.ab-icon-list__item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: .4em 0;
}
.ab-icon-list__icon {
  flex-shrink: 0;
  font-size: 1.15em;
  line-height: 1.3;
  min-width: 1.25em;
  text-align: center;
}
.ab-icon-list__text { flex: 1 1 auto; min-width: 0; line-height: 1.45; }

.ab-testimonial { margin: 0; padding: 1rem 1.25rem; border-left: 3px solid currentColor; background: rgba(0,0,0,.03); border-radius: 0 8px 8px 0; }
.ab-testimonial__meta { display: flex; align-items: center; gap: 10px; margin-top: 12px; }
.ab-testimonial__avatar { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; }
.ab-testimonial__avatar--ph { display: inline-flex; align-items: center; justify-content: center; background: #e2e8f0; }
.ab-testimonial__role { display: block; font-size: .85em; opacity: .7; }
.ab-tabs__nav { display: flex; flex-wrap: wrap; gap: 4px; border-bottom: 1px solid #e2e8f0; margin-bottom: 12px; }
.ab-tabs__tab { border: 0; background: transparent; padding: 10px 14px; cursor: pointer; font: 600 13px system-ui, sans-serif; color: #64748b; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.ab-tabs__tab.is-active { color: #7c3aed; border-bottom-color: #7c3aed; }
.ab-tabs__panel { display: none; padding: 4px 0 8px; }
.ab-tabs__panel.is-active { display: block; }
.ab-accordion__item { border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 8px; overflow: hidden; background: #fff; }
.ab-accordion__head { width: 100%; text-align: left; border: 0; background: #f8fafc; padding: 12px 14px; font: 600 14px system-ui, sans-serif; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 8px; color: #0f172a; }
.ab-accordion__title { flex: 1 1 auto; min-width: 0; }
.ab-accordion__icon { flex-shrink: 0; font-size: 1.15rem; line-height: 1; color: #64748b; transition: transform .15s ease; }
.ab-accordion__body { display: none; padding: 12px 14px; border-top: 1px solid #e2e8f0; }
.ab-accordion__item.is-open .ab-accordion__body { display: block; }
.ab-accordion__item.is-open .ab-accordion__icon { transform: rotate(45deg); }
.ab-accordion__media { margin: 0 0 12px; border-radius: 8px; overflow: hidden; }
.ab-accordion__media img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 280px;
  object-fit: var(--ab-acc-fit, cover);
  object-position: var(--ab-acc-pos, 50% 50%);
}
.ab-accordion__text { margin: 0 0 8px; color: #475569; line-height: 1.6; font-size: 14px; }
.ab-accordion__text:last-child { margin-bottom: 0; }
.ab-toggle-list { display: flex; flex-direction: column; gap: 8px; width: 100%; }
.ab-toggle-w { border: 1px solid #e2e8f0; border-radius: 8px; overflow: hidden; background: #fff; }
.ab-toggle-w__head {
  width: 100%;
  text-align: left;
  border: 0;
  background: #f8fafc;
  padding: 12px 14px;
  font: 600 14px system-ui, sans-serif;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  color: #0f172a;
}
.ab-toggle-w__title { flex: 1 1 auto; min-width: 0; }
.ab-toggle-w__icon { flex-shrink: 0; color: #64748b; transition: transform .15s; }
.ab-toggle-w.is-open .ab-toggle-w__icon { transform: rotate(180deg); }
.ab-toggle-w__body { display: none; padding: 12px 14px; border-top: 1px solid #e2e8f0; }
.ab-toggle-w.is-open .ab-toggle-w__body { display: block; }
.ab-toggle-w__media { margin: 0 0 12px; border-radius: 8px; overflow: hidden; }
.ab-toggle-w__media img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  max-height: 280px;
  object-fit: var(--ab-tg-fit, cover);
  object-position: var(--ab-tg-pos, 50% 50%);
}
.ab-toggle-w__text { margin: 0 0 8px; color: #475569; line-height: 1.6; font-size: 14px; }
.ab-toggle-w__text:last-child { margin-bottom: 0; }

.ab-tabs__media { margin: 0 0 12px; border-radius: 8px; overflow: hidden; }
.ab-tabs__media img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  max-height: 280px;
  object-fit: var(--ab-tabs-fit, cover);
  object-position: var(--ab-tabs-pos, 50% 50%);
}
.ab-tabs__text { margin: 0 0 8px; color: #475569; line-height: 1.6; }

.ab-social {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  --ab-social-size: 40px;
}
.ab-social--left { justify-content: flex-start; }
.ab-social--center { justify-content: center; }
.ab-social--right { justify-content: flex-end; }
.ab-social__item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  text-decoration: none;
  color: #0f172a;
  transition: transform .15s ease;
}
.ab-social__item:hover { transform: translateY(-2px); }
.ab-social__badge {
  width: var(--ab-social-size);
  height: var(--ab-social-size);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font: 700 13px/1 system-ui, sans-serif;
  color: #fff !important;
  background: var(--ab-social-color, #0f172a);
  box-shadow: 0 6px 16px rgba(15, 23, 42, 0.15);
}
.ab-social--circle .ab-social__badge { border-radius: 50%; }
.ab-social--rounded .ab-social__badge { border-radius: 12px; }
.ab-social--square .ab-social__badge { border-radius: 4px; }
.ab-social__label { font: 600 13px system-ui, sans-serif; }
.ab-social__item--facebook .ab-social__badge { background: #1877f2; }
.ab-social__item--instagram .ab-social__badge { background: linear-gradient(45deg, #f09433, #e6683c, #dc2743, #cc2366, #bc1888); }
.ab-social__item--youtube .ab-social__badge { background: #ff0000; }
.ab-social__item--whatsapp .ab-social__badge { background: #25d366; }
.ab-social__item--linkedin .ab-social__badge { background: #0a66c2; }
.ab-social__item--x .ab-social__badge,
.ab-social__item--twitter .ab-social__badge { background: #111; }
.ab-social__item--tiktok .ab-social__badge { background: #010101; }
.ab-social__item--telegram .ab-social__badge { background: #229ed9; }
.ab-social__item--pinterest .ab-social__badge { background: #e60023; }
.ab-social__item--email .ab-social__badge { background: #64748b; }

.ab-page-content { width: 100%; max-width: 100%; box-sizing: border-box; min-width: 0; }
.ab-page-content__title { margin: 0 0 1rem; }
.ab-page-content__body { min-width: 0; }
.ab-page-content--editor {
  padding: 16px;
  border: 1px dashed #c4b5fd;
  border-radius: 8px;
  background: #f8fafc;
  color: #475569;
}
.ab-progress__head { display: flex; justify-content: space-between; margin-bottom: 6px; font: 600 13px system-ui, sans-serif; }
.ab-progress__track { height: 10px; background: #e2e8f0; border-radius: 999px; overflow: hidden; }
.ab-progress__bar { height: 100%; background: linear-gradient(90deg, #7c3aed, #4f46e5); border-radius: 999px; }
.ab-shortcode--editor code { font-size: 12px; }
.ab-menu-anchor { height: 0; position: relative; }
.ab-anchor-label { position: absolute; top: -10px; left: 0; font: 600 10px system-ui, sans-serif; color: #7c3aed; background: #f5f3ff; padding: 2px 6px; border-radius: 4px; }
.ab-document--front .ab-anchor-label { display: none; }
.ab-alert { padding: 14px 16px; border-radius: 8px; border: 1px solid transparent; margin: 0 0 1rem; }
.ab-alert--info { background: #eff6ff; border-color: #bfdbfe; color: #1e3a8a; }
.ab-alert--success { background: #ecfdf5; border-color: #a7f3d0; color: #065f46; }
.ab-alert--warning { background: #fffbeb; border-color: #fde68a; color: #92400e; }
.ab-alert--danger { background: #fef2f2; border-color: #fecaca; color: #991b1b; }
.ab-alert__title { display: block; margin-bottom: 4px; }
.ab-text-path__svg { max-width: 100%; height: auto; overflow: visible; }
.ab-text-path__text { fill: currentColor; font-size: 12px; letter-spacing: 1px; }
.ab-video-el { max-width: 100%; height: auto; border-radius: 8px; }
.ab-kit-item { border: 1px solid #e2e8f0; border-radius: 6px; padding: 10px 12px; margin-bottom: 6px; }
.ab-kit-item strong { display: block; margin-bottom: 4px; }

/* Loop Grid (query loop / posts listing) */
.ab-loop-grid {
  width: 100%;
  box-sizing: border-box;
  max-width: 100%;
}
.ab-loop-grid__list {
  display: grid;
  grid-template-columns: repeat(var(--ab-loop-cols, 3), minmax(0, 1fr));
  gap: var(--ab-loop-gap, 24px);
  align-items: stretch;
}
/* Desktop visibility from data-*-d */
.ab-loop-grid[data-img-d="0"] .ab-loop-card__media-wrap { display: none !important; }
.ab-loop-grid[data-date-d="0"] .ab-loop-card__date { display: none !important; }
.ab-loop-grid[data-auth-d="0"] .ab-loop-card__author { display: none !important; }
.ab-loop-grid[data-title-d="0"] .ab-loop-card__title,
.ab-loop-grid[data-title-d="0"] .ab-loop-card__overlay { display: none !important; }
.ab-loop-grid[data-ex-d="0"] .ab-loop-card__excerpt { display: none !important; }
.ab-loop-grid[data-more-d="0"] .ab-loop-card__more { display: none !important; }
.ab-loop-grid[data-shadow-d="0"] .ab-loop-card { box-shadow: none !important; }
.ab-loop-grid[data-border-d="0"] .ab-loop-card { border-color: transparent !important; }

@media (max-width: 1024px) {
  .ab-loop-grid__list {
    grid-template-columns: repeat(var(--ab-loop-cols-t, 2), minmax(0, 1fr));
    gap: var(--ab-loop-gap-t, var(--ab-loop-gap, 24px));
  }
  .ab-loop-grid[data-img-t="0"] .ab-loop-card__media-wrap { display: none !important; }
  .ab-loop-grid[data-img-t="1"] .ab-loop-card__media-wrap { display: block !important; }
  .ab-loop-grid[data-date-t="0"] .ab-loop-card__date { display: none !important; }
  .ab-loop-grid[data-date-t="1"] .ab-loop-card__date { display: inline !important; }
  .ab-loop-grid[data-auth-t="0"] .ab-loop-card__author { display: none !important; }
  .ab-loop-grid[data-auth-t="1"] .ab-loop-card__author { display: inline !important; }
  .ab-loop-grid[data-title-t="0"] .ab-loop-card__title,
  .ab-loop-grid[data-title-t="0"] .ab-loop-card__overlay { display: none !important; }
  .ab-loop-grid[data-title-t="1"] .ab-loop-card__title { display: block !important; }
  .ab-loop-grid[data-ex-t="0"] .ab-loop-card__excerpt { display: none !important; }
  .ab-loop-grid[data-ex-t="1"] .ab-loop-card__excerpt { display: block !important; }
  .ab-loop-grid[data-more-t="0"] .ab-loop-card__more { display: none !important; }
  .ab-loop-grid[data-more-t="1"] .ab-loop-card__more { display: inline-block !important; }
  .ab-loop-grid[data-shadow-t="0"] .ab-loop-card { box-shadow: none !important; }
  .ab-loop-grid[data-border-t="0"] .ab-loop-card { border-color: transparent !important; }
}
@media (max-width: 767px) {
  .ab-loop-grid__list {
    grid-template-columns: repeat(var(--ab-loop-cols-m, 1), minmax(0, 1fr));
    gap: var(--ab-loop-gap-m, var(--ab-loop-gap-t, var(--ab-loop-gap, 24px)));
  }
  .ab-loop-grid[data-img-m="0"] .ab-loop-card__media-wrap { display: none !important; }
  .ab-loop-grid[data-img-m="1"] .ab-loop-card__media-wrap { display: block !important; }
  .ab-loop-grid[data-date-m="0"] .ab-loop-card__date { display: none !important; }
  .ab-loop-grid[data-date-m="1"] .ab-loop-card__date { display: inline !important; }
  .ab-loop-grid[data-auth-m="0"] .ab-loop-card__author { display: none !important; }
  .ab-loop-grid[data-auth-m="1"] .ab-loop-card__author { display: inline !important; }
  .ab-loop-grid[data-title-m="0"] .ab-loop-card__title,
  .ab-loop-grid[data-title-m="0"] .ab-loop-card__overlay { display: none !important; }
  .ab-loop-grid[data-title-m="1"] .ab-loop-card__title { display: block !important; }
  .ab-loop-grid[data-ex-m="0"] .ab-loop-card__excerpt { display: none !important; }
  .ab-loop-grid[data-ex-m="1"] .ab-loop-card__excerpt { display: block !important; }
  .ab-loop-grid[data-more-m="0"] .ab-loop-card__more { display: none !important; }
  .ab-loop-grid[data-more-m="1"] .ab-loop-card__more { display: inline-block !important; }
  .ab-loop-grid[data-shadow-m="0"] .ab-loop-card { box-shadow: none !important; }
  .ab-loop-grid[data-border-m="0"] .ab-loop-card { border-color: transparent !important; }
}
.ab-loop-card {
  display: flex;
  flex-direction: column;
  background: var(--wp--preset--color--background, #fff);
  border-radius: 10px;
  overflow: hidden;
  min-width: 0;
  width: 100%;
  height: 100%;
  border: 1px solid transparent;
  box-sizing: border-box;
}
.ab-loop-card.has-border,
.ab-loop-grid--border .ab-loop-card {
  border-color: rgba(15, 23, 42, 0.12);
}
/*
 * Media box: aspect-ratio fixo + img absoluta (cover).
 * Tema WP costuma forçar img{height:auto} e quebra o alinhamento entre cards.
 */
.ab-loop-card__media-wrap {
  position: relative;
  width: 100%;
  flex: 0 0 auto;
  aspect-ratio: var(--ab-loop-ratio, 16 / 9);
  overflow: hidden;
  background: #e2e8f0;
  line-height: 0;
}
.ab-loop-card__media-wrap > .ab-loop-card__media,
.ab-loop-card__media-wrap > a.ab-loop-card__media {
  position: absolute !important;
  inset: 0 !important;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
}
.ab-loop-card__media-wrap img,
.ab-loop-card__media-wrap .ab-loop-card__img,
.ab-loop-card__media-wrap .ab-loop-card__media-ph {
  position: absolute !important;
  inset: 0 !important;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  max-height: none !important;
  object-fit: var(--ab-loop-fit, cover) !important;
  object-position: var(--ab-loop-pos, 50% 50%) !important;
  border: 0 !important;
  border-radius: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  box-shadow: none !important;
}
.ab-loop-card__body {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 14px 16px 16px;
  box-sizing: border-box;
  min-width: 0;
  /* Never inherit forced min-height from StyleEngine node rules */
  min-height: 0 !important;
  height: auto !important;
}
/* wpautop sometimes wraps the link in <p> — keep layout compact + pin to bottom */
.ab-loop-card__body > p {
  margin: 0;
  padding: 0;
}
.ab-loop-card__body > p:has(.ab-loop-card__more),
.ab-loop-card__more,
.ab-loop-card__body > .ab-loop-card__more {
  margin-top: auto;
}
.ab-loop-card__more {
  display: inline-block;
  align-self: flex-start;
  margin-top: auto;
  color: var(--ab-color-primary, #1e3a8a);
  font: 700 12px/1.3 system-ui, sans-serif;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.ab-loop-card__more:hover {
  opacity: 0.85;
}
/* Prevent StyleEngine height leak onto cards (equal columns, natural body). */
.ab-loop-grid .ab-loop-card {
  min-height: 0 !important;
  height: 100%;
}
.ab-loop-card__cat {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 2;
  background: rgba(15, 23, 42, 0.78);
  color: #fff;
  font: 600 10px/1.2 system-ui, sans-serif;
  padding: 5px 8px;
  border-radius: 6px;
  max-width: calc(100% - 20px);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Theme Builder header/footer base (full-bleed rules above take priority) */
.ab-theme-builder-part {
  width: 100%;
  max-width: none;
  box-sizing: border-box;
}
.ab-theme-builder-header .ab-document,
.ab-theme-builder-footer .ab-document {
  width: 100%;
  max-width: none;
  padding-left: 0;
  padding-right: 0;
}

/* Nav menu — styles + dropdown (school header pattern) */
.ab-nav-menu {
  position: relative;
  --ab-nm-gap: 8px;
  --ab-nm-accent: #eab308;
  --ab-nm-text: inherit;
  --ab-nm-hover: var(--ab-nm-accent, #eab308);
  z-index: 40;
  width: 100%;
  max-width: 100%;
}
.ab-nav-menu__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--ab-nm-gap, 8px);
  list-style: none;
  margin: 0;
  padding: 0;
}
.ab-nav-menu--vertical .ab-nav-menu__list {
  flex-direction: column;
  align-items: flex-start;
}
.ab-nav-menu--left .ab-nav-menu__list { justify-content: flex-start; }
.ab-nav-menu--center .ab-nav-menu__list { justify-content: center; }
.ab-nav-menu--right .ab-nav-menu__list { justify-content: flex-end; }
.ab-nav-menu__item {
  list-style: none;
  margin: 0;
  padding: 0;
  position: relative;
}
.ab-nav-menu__link {
  text-decoration: none;
  color: var(--ab-nm-text, inherit);
  font: 600 14px/1.3 system-ui, sans-serif;
  padding: 8px 10px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  cursor: pointer;
  border-radius: 0;
  transition: color .15s, background .15s, box-shadow .15s, border-color .15s;
  white-space: nowrap;
}
.ab-nav-menu__caret {
  font-size: 10px;
  opacity: 0.75;
  line-height: 1;
  margin-left: 2px;
  transition: transform .15s;
}
.ab-nav-menu__item.has-children:hover > .ab-nav-menu__link .ab-nav-menu__caret,
.ab-nav-menu__item.has-children.is-open > .ab-nav-menu__link .ab-nav-menu__caret {
  transform: rotate(180deg);
}

/* Style: underline (active gold bar like reference) */
.ab-nav-menu--underline .ab-nav-menu__link {
  border-radius: 0;
  border-bottom: 2px solid transparent;
  padding-left: 6px;
  padding-right: 6px;
  padding-bottom: 6px;
}
.ab-nav-menu--underline .ab-nav-menu__link:hover {
  color: var(--ab-nm-hover, var(--ab-nm-accent, #eab308));
  border-bottom-color: var(--ab-nm-hover, var(--ab-nm-accent, #eab308));
}
.ab-nav-menu--underline .ab-nav-menu__link.is-active,
.ab-nav-menu--underline .ab-nav-menu__item.is-current > .ab-nav-menu__link,
.ab-nav-menu--underline .ab-nav-menu__item.is-open > .ab-nav-menu__link {
  color: var(--ab-nm-accent, #eab308);
  border-bottom-color: var(--ab-nm-accent, #eab308);
}

/* Style: classic — clean text, accent on hover */
.ab-nav-menu--classic .ab-nav-menu__link:hover {
  color: var(--ab-nm-hover, var(--ab-nm-accent, #eab308));
}
.ab-nav-menu--classic .ab-nav-menu__link.is-active,
.ab-nav-menu--classic .ab-nav-menu__item.is-current > .ab-nav-menu__link {
  color: var(--ab-nm-accent, #eab308);
}

/* Style: pills */
.ab-nav-menu--pills .ab-nav-menu__link {
  padding: 8px 16px;
  border-radius: 999px;
  background: rgba(15, 23, 42, 0.05);
}
.ab-nav-menu--pills .ab-nav-menu__link:hover {
  background: var(--ab-nm-hover, var(--ab-nm-accent, #0f2744));
  color: #fff;
}
.ab-nav-menu--pills .ab-nav-menu__link.is-active,
.ab-nav-menu--pills .ab-nav-menu__item.is-current > .ab-nav-menu__link {
  background: var(--ab-nm-accent, #0f2744);
  color: #fff;
}

/* Style: buttons (CTA chips) */
.ab-nav-menu--buttons .ab-nav-menu__link {
  padding: 9px 16px;
  border-radius: 999px;
  background: var(--ab-nm-accent, #0f2744);
  color: #fff !important;
  box-shadow: 0 2px 8px rgba(15, 39, 68, 0.2);
}
.ab-nav-menu--buttons .ab-nav-menu__link:hover {
  background: var(--ab-nm-hover, var(--ab-nm-accent, #0f2744));
  filter: brightness(1.05);
  color: #fff !important;
}

/* Style: minimal */
.ab-nav-menu--minimal .ab-nav-menu__link:hover {
  color: var(--ab-nm-hover, var(--ab-nm-accent, #eab308));
}
.ab-nav-menu--minimal .ab-nav-menu__link.is-active {
  color: var(--ab-nm-accent, #eab308);
}

/* Style: bordered */
.ab-nav-menu--bordered .ab-nav-menu__link {
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  padding: 8px 12px;
}
.ab-nav-menu--bordered .ab-nav-menu__link:hover,
.ab-nav-menu--bordered .ab-nav-menu__link.is-active {
  border-color: var(--ab-nm-accent, #eab308);
  color: var(--ab-nm-accent, #eab308);
}

/* Dropdown panel — absolute overlay (never expand in-flow with bullets). */
.ab-nav-menu__sub,
.ab-nav-menu--horizontal .ab-nav-menu__sub,
.ab-nav-menu ul.ab-nav-menu__sub {
  list-style: none !important;
  list-style-type: none !important;
  margin: 0 !important;
  padding: 6px 0 !important;
  position: absolute !important;
  top: calc(100% + 6px) !important;
  left: 0 !important;
  right: auto !important;
  min-width: 220px;
  max-width: min(320px, 90vw);
  background: #fff !important;
  border: 1px solid #e8edf3 !important;
  border-radius: 10px !important;
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.14), 0 2px 6px rgba(15, 23, 42, 0.06) !important;
  opacity: 0;
  visibility: hidden;
  transform: translateY(6px);
  transition: opacity .16s ease, transform .16s ease, visibility .16s;
  z-index: 200;
  pointer-events: none;
  display: block !important;
  width: auto !important;
  height: auto !important;
  flex-direction: column !important;
}
.ab-nav-menu--vertical .ab-nav-menu__sub {
  top: 0 !important;
  left: calc(100% + 6px) !important;
}
/* Hover / open on desktop */
.ab-nav-menu__item.has-children:hover > .ab-nav-menu__sub,
.ab-nav-menu__item.has-children.is-open > .ab-nav-menu__sub,
.ab-nav-menu__item.has-children:focus-within > .ab-nav-menu__sub {
  opacity: 1 !important;
  visibility: visible !important;
  transform: translateY(0) !important;
  pointer-events: auto !important;
}
.ab-nav-menu__sub-item,
.ab-nav-menu__sub > li {
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
  list-style-type: none !important;
  border-bottom: 1px solid #f1f5f9;
  display: block !important;
  width: 100% !important;
  float: none !important;
}
.ab-nav-menu__sub-item:last-child {
  border-bottom: 0;
}
.ab-nav-menu__sub-item::marker,
.ab-nav-menu__sub > li::marker,
.ab-nav-menu__list > li::marker {
  content: none !important;
  font-size: 0 !important;
}
.ab-nav-menu__sub-link {
  display: block !important;
  padding: 11px 16px !important;
  font: 500 14px/1.35 system-ui, sans-serif !important;
  color: #1e293b !important;
  text-decoration: none !important;
  white-space: nowrap;
  transition: background .12s, color .12s;
  width: 100% !important;
  box-sizing: border-box;
}
.ab-nav-menu__sub-link:hover,
.ab-nav-menu__sub-link.is-active {
  background: #f8fafc !important;
  color: var(--ab-nm-accent, #0f2744) !important;
}

/*
 * Editor / chrome / desktop preview: NEVER use mobile “always expanded” submenus
 * even when the canvas iframe is <768px wide (sidebars open).
 */
.ab-document--editor .ab-nav-menu--horizontal .ab-nav-menu__sub,
.ab-page-preview:not(.ab-bp-mobile) .ab-nav-menu--horizontal .ab-nav-menu__sub,
.ab-theme-builder-header .ab-nav-menu--horizontal .ab-nav-menu__sub,
.ab-force-desktop-nav .ab-nav-menu .ab-nav-menu__sub,
.ab-chrome-frame .ab-nav-menu .ab-nav-menu__sub {
  position: absolute !important;
  top: calc(100% + 6px) !important;
  left: 0 !important;
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
  transform: translateY(6px) !important;
  background: #fff !important;
  border: 1px solid #e8edf3 !important;
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.14) !important;
  padding: 6px 0 !important;
  min-width: 220px !important;
  list-style: none !important;
}
.ab-document--editor .ab-nav-menu--horizontal .ab-nav-menu__item.has-children:hover > .ab-nav-menu__sub,
.ab-document--editor .ab-nav-menu--horizontal .ab-nav-menu__item.has-children.is-open > .ab-nav-menu__sub,
.ab-page-preview:not(.ab-bp-mobile) .ab-nav-menu--horizontal .ab-nav-menu__item.has-children:hover > .ab-nav-menu__sub,
.ab-page-preview:not(.ab-bp-mobile) .ab-nav-menu--horizontal .ab-nav-menu__item.has-children.is-open > .ab-nav-menu__sub,
.ab-theme-builder-header .ab-nav-menu--horizontal .ab-nav-menu__item.has-children:hover > .ab-nav-menu__sub,
.ab-theme-builder-header .ab-nav-menu--horizontal .ab-nav-menu__item.has-children.is-open > .ab-nav-menu__sub,
.ab-force-desktop-nav .ab-nav-menu__item.has-children:hover > .ab-nav-menu__sub,
.ab-force-desktop-nav .ab-nav-menu__item.has-children.is-open > .ab-nav-menu__sub,
.ab-chrome-frame .ab-nav-menu__item.has-children:hover > .ab-nav-menu__sub,
.ab-chrome-frame .ab-nav-menu__item.has-children.is-open > .ab-nav-menu__sub {
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
  transform: translateY(0) !important;
}
/* Header chrome: allow dropdowns to paint outside the node box */
.ab-theme-builder-header,
.ab-theme-builder-header .ab-type-section,
.ab-theme-builder-header .ab-type-container,
.ab-theme-builder-header .ab-type-nav_menu,
.ab-document--editor .ab-type-nav_menu,
.ab-document--editor .ab-type-nav_menu .ab-nav-menu {
  overflow: visible !important;
}

.ab-nav-menu__toggle {
  display: none;
  align-items: center;
  gap: 8px;
  border: 1px solid var(--ab-color-border, #e2e8f0);
  background: #fff;
  border-radius: 8px;
  padding: 10px 14px;
  font: 600 13px system-ui, sans-serif;
  cursor: pointer;
  color: #0f172a;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
}
.ab-nav-menu__toggle[aria-expanded="true"] {
  border-color: var(--ab-nm-accent, #eab308);
  color: var(--ab-nm-accent, #eab308);
}
.ab-nav-menu__burger {
  width: 18px;
  height: 2px;
  background: currentColor;
  box-shadow: 0 5px 0 currentColor, 0 -5px 0 currentColor;
  flex-shrink: 0;
}

/* Mobile real (viewport) */
@media (max-width: 767px) {
  /* Theme builder header: stack logo + menu */
  .ab-theme-builder-header .ab-type-section.ab-section--row,
  .ab-theme-builder-header .ab-type-section[style*="flex-direction:row"] {
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 12px !important;
  }
  .ab-theme-builder-header .ab-type-section > .ab-type-nav_menu,
  .ab-theme-builder-header .ab-type-section > .ab-type-dynamic {
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 auto !important;
  }

  .ab-nav-menu--mobile-drawer {
    width: 100%;
  }
  .ab-nav-menu--mobile-drawer .ab-nav-menu__toggle {
    display: inline-flex !important;
  }
  /* Closed: hide list completely (override desktop row !important). */
  .ab-nav-menu--horizontal.ab-nav-menu--mobile-drawer .ab-nav-menu__list,
  .ab-nav-menu--mobile-drawer .ab-nav-menu__list {
    display: none !important;
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    gap: 4px !important;
    position: absolute;
    left: 0;
    right: 0;
    top: calc(100% + 6px);
    z-index: 100;
    min-width: min(100%, 280px);
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    margin: 0;
    padding: 10px !important;
    list-style: none;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    box-shadow: 0 16px 40px rgba(15, 23, 42, 0.16);
  }
  .ab-nav-menu--horizontal.ab-nav-menu--mobile-drawer.is-open .ab-nav-menu__list,
  .ab-nav-menu--mobile-drawer.is-open .ab-nav-menu__list {
    display: flex !important;
    flex-direction: column !important;
    flex-wrap: nowrap !important;
  }
  .ab-nav-menu--mobile-drawer .ab-nav-menu__item {
    display: block !important;
    width: 100% !important;
    margin: 0 !important;
  }
  .ab-nav-menu--mobile-drawer .ab-nav-menu__link {
    display: block !important;
    width: 100% !important;
    box-sizing: border-box;
    padding: 12px 14px !important;
    text-align: left !important;
    border-radius: 8px !important;
    white-space: normal;
  }
  .ab-nav-menu--mobile-drawer .ab-nav-menu__link:hover,
  .ab-nav-menu--mobile-drawer .ab-nav-menu__link:focus {
    background: #f1f5f9;
  }
  /* Pills on mobile drawer: full-width chips, not multi-col wrap */
  .ab-nav-menu--mobile-drawer.ab-nav-menu--pills .ab-nav-menu__link {
    background: #f8fafc;
    border-radius: 8px !important;
  }
  /* Nested dropdowns inside mobile drawer: always expanded stack.
     Do NOT apply in editor/chrome/desktop preview (canvas often <768px). */
  .ab-nav-menu--mobile-drawer .ab-nav-menu__sub {
    position: static !important;
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
    pointer-events: auto !important;
    box-shadow: none !important;
    border: 0 !important;
    border-radius: 0 !important;
    min-width: 0 !important;
    max-width: none !important;
    padding: 0 0 4px 12px !important;
    background: transparent !important;
  }
  .ab-document--editor .ab-nav-menu--mobile-drawer .ab-nav-menu__sub,
  .ab-page-preview:not(.ab-bp-mobile) .ab-nav-menu--mobile-drawer .ab-nav-menu__sub,
  .ab-theme-builder-header .ab-nav-menu--mobile-drawer .ab-nav-menu__sub,
  .ab-force-desktop-nav .ab-nav-menu--mobile-drawer .ab-nav-menu__sub,
  .ab-chrome-frame .ab-nav-menu--mobile-drawer .ab-nav-menu__sub {
    position: absolute !important;
    top: calc(100% + 6px) !important;
    left: 0 !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    transform: translateY(6px) !important;
    box-shadow: 0 12px 32px rgba(15, 23, 42, 0.14) !important;
    border: 1px solid #e8edf3 !important;
    border-radius: 10px !important;
    min-width: 220px !important;
    padding: 6px 0 !important;
    background: #fff !important;
  }
  .ab-document--editor .ab-nav-menu--mobile-drawer .ab-nav-menu__item.has-children:hover > .ab-nav-menu__sub,
  .ab-page-preview:not(.ab-bp-mobile) .ab-nav-menu--mobile-drawer .ab-nav-menu__item.has-children:hover > .ab-nav-menu__sub,
  .ab-theme-builder-header .ab-nav-menu--mobile-drawer .ab-nav-menu__item.has-children:hover > .ab-nav-menu__sub,
  .ab-force-desktop-nav .ab-nav-menu--mobile-drawer .ab-nav-menu__item.has-children:hover > .ab-nav-menu__sub,
  .ab-chrome-frame .ab-nav-menu--mobile-drawer .ab-nav-menu__item.has-children:hover > .ab-nav-menu__sub {
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
    transform: translateY(0) !important;
  }
  .ab-nav-menu--mobile-drawer .ab-nav-menu__sub-link {
    padding: 10px 12px !important;
    white-space: normal !important;
  }
  .ab-nav-menu--mobile-drawer .ab-nav-menu__sub-item {
    border-bottom: 0 !important;
  }
  .ab-nav-menu--mobile-stack .ab-nav-menu__list {
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    align-items: stretch !important;
  }

  .ab-nav-menu--mobile-stack .ab-nav-menu__toggle {
    display: none !important;
  }
}

/* Editor canvas mobile simulation */
.ab-page-preview.ab-bp-mobile .ab-nav-menu--mobile-drawer .ab-nav-menu__toggle {
  display: inline-flex !important;
}
.ab-page-preview.ab-bp-mobile .ab-nav-menu--horizontal.ab-nav-menu--mobile-drawer .ab-nav-menu__list,
.ab-page-preview.ab-bp-mobile .ab-nav-menu--mobile-drawer .ab-nav-menu__list {
  display: none !important;
  flex-direction: column !important;
  flex-wrap: nowrap !important;
  align-items: stretch !important;
  position: absolute;
  left: 0;
  right: 0;
  top: calc(100% + 6px);
  z-index: 100;
  width: 100%;
  box-sizing: border-box;
  padding: 10px !important;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  box-shadow: 0 16px 40px rgba(15, 23, 42, 0.16);
}
.ab-page-preview.ab-bp-mobile .ab-nav-menu--horizontal.ab-nav-menu--mobile-drawer.is-open .ab-nav-menu__list,
.ab-page-preview.ab-bp-mobile .ab-nav-menu--mobile-drawer.is-open .ab-nav-menu__list {
  display: flex !important;
  flex-direction: column !important;
  flex-wrap: nowrap !important;
}
.ab-page-preview.ab-bp-mobile .ab-nav-menu--mobile-drawer .ab-nav-menu__item {
  width: 100% !important;
  display: block !important;
}
.ab-page-preview.ab-bp-mobile .ab-nav-menu--mobile-drawer .ab-nav-menu__link {
  display: block !important;
  width: 100% !important;
  box-sizing: border-box;
  padding: 12px 14px !important;
  text-align: left !important;
}
.ab-page-preview.ab-bp-mobile .ab-nav-menu--mobile-stack .ab-nav-menu__list {
  flex-direction: column !important;
  flex-wrap: nowrap !important;
  align-items: stretch !important;
}
/* No desktop do editor, never show hamburger */
.ab-page-preview:not(.ab-bp-mobile) .ab-nav-menu__toggle {
  display: none !important;
}
.ab-page-preview:not(.ab-bp-mobile) .ab-nav-menu--horizontal .ab-nav-menu__list {
  display: flex !important;
  flex-direction: row !important;
}
.ab-loop-card.has-shadow,
.ab-loop-grid--shadow .ab-loop-card {
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.12);
}
/* Image position */
.ab-loop-card--img-top { flex-direction: column; }
.ab-loop-card--img-left,
.ab-loop-card--img-right {
  flex-direction: row;
  align-items: stretch;
}
.ab-loop-card--img-left .ab-loop-card__media-wrap,
.ab-loop-card--img-right .ab-loop-card__media-wrap {
  flex: 0 0 42%;
  max-width: 42%;
  min-width: 0;
}
.ab-loop-card--img-left .ab-loop-card__body,
.ab-loop-card--img-right .ab-loop-card__body {
  flex: 1;
  min-width: 0;
}
@media (max-width: 640px) {
  .ab-loop-card--img-left,
  .ab-loop-card--img-right { flex-direction: column; }
  .ab-loop-card--img-left .ab-loop-card__media-wrap,
  .ab-loop-card--img-right .ab-loop-card__media-wrap {
    flex: none;
    max-width: none;
    width: 100%;
  }
}
.ab-loop-card__media-wrap {
  position: relative;
  width: 100%;
  min-width: 0;
  overflow: hidden;
  background: #e2e8f0;
}
.ab-loop-card__media {
  display: block;
  width: 100%;
  position: relative;
  aspect-ratio: 16 / 10;
  min-height: 120px;
  overflow: hidden;
  background: #e2e8f0;
}
.ab-loop-card__img {
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  object-fit: var(--ab-loop-fit, cover) !important;
  object-position: var(--ab-loop-pos, 50% 50%) !important;
  display: block !important;
  margin: 0 !important;
  border: 0 !important;
  vertical-align: middle;
}
.ab-loop-card__media-ph,
.ab-loop-card__media--ph {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 140px;
  background: linear-gradient(135deg, #e2e8f0, #cbd5e1);
}
/* Title over image */
.ab-loop-card__overlay {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 28px 16px 16px;
  background: linear-gradient(transparent, rgba(0,0,0,.72));
  z-index: 2;
  pointer-events: none;
}
.ab-loop-card__overlay .ab-loop-card__title {
  margin: 0;
  color: #fff;
  font-size: 1.1rem;
  line-height: 1.3;
  text-shadow: 0 1px 2px rgba(0,0,0,.35);
  pointer-events: auto;
}
.ab-loop-card__overlay .ab-loop-card__title a {
  color: #fff !important;
  text-decoration: none;
}
/* Slider mode */
.ab-loop-grid--slider {
  position: relative;
  overflow: hidden;
  width: 100%;
}
.ab-loop-slider-viewport {
  position: relative;
  overflow: hidden;
  width: 100%;
  border-radius: 10px;
}
.ab-loop-grid--slider .ab-loop-grid__list,
.ab-loop-grid--slider .ab-loop-slider__track {
  display: flex !important;
  gap: 0 !important;
  width: 100%;
  margin: 0;
  padding: 0;
}
.ab-loop-grid--slider .ab-loop-card {
  flex: 0 0 100% !important;
  min-width: 100% !important;
  max-width: 100% !important;
  height: auto;
}
.ab-loop-grid--slider .ab-loop-card__media {
  aspect-ratio: 16 / 9;
  min-height: 180px;
  max-height: 420px;
}
/* Dots ON TOP of the image (horizontal) */
.ab-loop-slider__dots {
  position: absolute;
  left: 0;
  right: 0;
  top: 14px;
  z-index: 5;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  pointer-events: none;
  padding: 0 12px;
}
.ab-loop-slider__dot {
  pointer-events: auto;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: 2px solid rgba(255,255,255,.95);
  background: rgba(255,255,255,.35);
  padding: 0;
  cursor: pointer;
  box-shadow: 0 1px 4px rgba(0,0,0,.35);
  transition: background .15s, transform .15s;
}
.ab-loop-slider__dot.is-active {
  background: #fff;
  transform: scale(1.15);
}
.ab-loop-slider__nav {
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  z-index: 5;
  display: flex;
  justify-content: space-between;
  padding: 0 10px;
  pointer-events: none;
}
.ab-loop-slider__btn {
  pointer-events: auto;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 0;
  background: rgba(15, 23, 42, 0.55);
  color: #fff;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.ab-loop-slider__btn:hover {
  background: rgba(124, 58, 237, 0.9);
}
.ab-loop-card__media--ph {
  min-height: 140px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #94a3b8;
  font: 600 12px system-ui, sans-serif;
}
.ab-loop-card__img {
  width: 100% !important;
  height: 100% !important;
  object-fit: var(--ab-loop-fit, cover) !important;
  object-position: var(--ab-loop-pos, 50% 50%) !important;
  display: block !important;
  max-width: none !important;
  max-height: none !important;
}
.ab-loop-card__meta {
  font-size: 12px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #94a3b8;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.ab-loop-card__sep { opacity: 0.5; }
.ab-loop-card__title {
  margin: 0;
  font-size: 1.15rem;
  line-height: 1.3;
  font-weight: 600;
}
.ab-loop-card__title a {
  color: inherit;
  text-decoration: none;
}
.ab-loop-card__title a:hover { text-decoration: underline; }
.ab-loop-card__excerpt {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.55;
  opacity: 0.85;
  flex: 1;
}
.ab-loop-card__more {
  margin-top: 6px;
  font: 600 12px/1 system-ui, sans-serif;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: underline;
  text-underline-offset: 3px;
  color: inherit;
  align-self: flex-start;
}
.ab-loop-pagination {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
  margin-top: 28px;
}
.ab-loop-pagination__item {
  min-width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  border: 1px solid #e2e8f0;
  text-decoration: none;
  color: inherit;
  font: 600 13px system-ui, sans-serif;
  padding: 0 10px;
}
.ab-loop-pagination__item.is-current {
  background: #7c3aed;
  border-color: #7c3aed;
  color: #fff;
}
.ab-loop-grid__banner {
  font: 600 11px system-ui, sans-serif;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #7c3aed;
  background: #f5f3ff;
  border: 1px solid #ddd6fe;
  border-radius: 6px;
  padding: 6px 10px;
  margin-bottom: 12px;
}
.ab-loop-empty {
  grid-column: 1 / -1;
  padding: 24px;
  text-align: center;
  color: #64748b;
  font: 600 13px system-ui, sans-serif;
  border: 1px dashed #cbd5e1;
  border-radius: 8px;
}
.ab-loop-ph-line {
  height: 10px;
  background: #e2e8f0;
  border-radius: 4px;
  margin-bottom: 8px;
}
.ab-loop-ph-line--lg { height: 16px; width: 70%; }

/* Creative Cards grid (click → content panel) */
.ab-creative-cards {
  width: 100%;
  box-sizing: border-box;
}
.ab-creative-cards__grid {
  display: grid;
  grid-template-columns: repeat(var(--ab-cc-cols, 4), minmax(0, 1fr));
  gap: var(--ab-cc-gap, 16px);
}
@media (max-width: 1024px) {
  .ab-creative-cards__grid {
    grid-template-columns: repeat(var(--ab-cc-cols-t, 2), minmax(0, 1fr));
  }
}
@media (max-width: 767px) {
  .ab-creative-cards__grid {
    grid-template-columns: repeat(var(--ab-cc-cols-m, 1), minmax(0, 1fr));
  }
}
.ab-creative-card {
  appearance: none;
  border: 0;
  padding: 0;
  margin: 0;
  cursor: pointer;
  border-radius: var(--ab-cc-r, 16px);
  overflow: hidden;
  height: var(--ab-cc-h, 160px);
  min-height: var(--ab-cc-h, 160px);
  position: relative;
  display: block;
  width: 100%;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
  transition: transform .15s ease, box-shadow .15s ease;
  background: var(--ab-cc-bg, #7c3aed);
}
.ab-creative-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(15, 23, 42, 0.18);
}
.ab-creative-card.is-active {
  outline: 3px solid rgba(255,255,255,.55);
  outline-offset: 0;
  box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.35), 0 12px 28px rgba(15, 23, 42, 0.2);
}
.ab-creative-card__media,
.ab-creative-card__solid {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  text-align: center;
  padding: 14px;
  box-sizing: border-box;
  color: #fff;
  gap: 6px;
}
.ab-creative-card__media {
  padding: 0;
  display: block;
  position: relative;
  overflow: hidden;
}
.ab-creative-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.ab-creative-card__media-ph {
  display: block;
  width: 100%;
  height: 100%;
  background: #cbd5e1;
}
.ab-creative-card__icon {
  font-size: 1.75rem;
  line-height: 1;
  filter: drop-shadow(0 1px 2px rgba(0,0,0,.2));
}
.ab-creative-card__title {
  font: 700 14px/1.25 system-ui, sans-serif;
  text-shadow: 0 1px 2px rgba(0,0,0,.25);
}
.ab-creative-card__sub {
  font: 500 12px/1.3 system-ui, sans-serif;
  opacity: 0.9;
}
.ab-creative-cards__panels {
  margin-top: 14px;
  position: relative;
}
.ab-creative-panel {
  display: none;
  position: relative;
  background: var(--ab-cc-panel-bg, #7cb342);
  color: #fff;
  border-radius: 16px;
  padding: 22px 28px 24px;
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.15);
  animation: ab-cc-rise .25s ease both;
}
.ab-creative-panel.is-open { display: block; }
@keyframes ab-cc-rise {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: none; }
}
.ab-creative-panel__caret {
  position: absolute;
  top: -10px;
  left: 50%;
  width: 0;
  height: 0;
  margin-left: -10px;
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  border-bottom: 10px solid var(--ab-cc-panel-bg, #7cb342);
  transform: translateX(-50%);
}
.ab-creative-panel__close {
  position: absolute;
  top: 10px;
  right: 12px;
  border: 0;
  background: rgba(0,0,0,.15);
  color: #fff;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
}
.ab-creative-panel__close:hover { background: rgba(0,0,0,.28); }
.ab-creative-panel__title {
  margin: 0 0 10px;
  font-size: 1.25rem;
  font-weight: 700;
}
.ab-creative-panel__text {
  margin: 0 0 10px;
  line-height: 1.6;
  opacity: 0.95;
}
.ab-creative-panel__meta {
  margin: 0;
  opacity: 0.85;
  font-size: 0.9rem;
}

/* ========== Creative widgets (Turbo-inspired) ========== */

/* Advanced Accordion */
.ab-adv-acc { width: 100%; display: flex; flex-direction: column; gap: 10px; }
.ab-adv-acc__item {
  border-radius: 12px;
  overflow: hidden;
  background: #fff;
  border: 1px solid #e2e8f0;
  box-shadow: 0 4px 14px rgba(15, 23, 42, 0.06);
  transition: box-shadow .2s ease, border-color .2s ease;
}
.ab-adv-acc__item.is-open {
  border-color: var(--ab-acc-accent, #7c3aed);
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.1);
}
.ab-adv-acc__head {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border: 0;
  background: transparent;
  cursor: pointer;
  text-align: left;
  font: 600 15px/1.3 system-ui, sans-serif;
  color: #0f172a;
}
.ab-adv-acc__icon {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: color-mix(in srgb, var(--ab-acc-accent, #7c3aed) 16%, #fff);
  font-size: 1.1rem;
  flex-shrink: 0;
}
.ab-adv-acc__title { flex: 1 1 auto; min-width: 0; }
.ab-adv-acc__chev {
  width: 10px;
  height: 10px;
  border-right: 2px solid #64748b;
  border-bottom: 2px solid #64748b;
  transform: rotate(45deg);
  transition: transform .2s ease;
  flex-shrink: 0;
  margin-right: 4px;
}
.ab-adv-acc__item.is-open .ab-adv-acc__chev {
  transform: rotate(225deg);
  border-color: var(--ab-acc-accent, #7c3aed);
}
.ab-adv-acc__body {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows .28s ease;
}
.ab-adv-acc__item.is-open .ab-adv-acc__body { grid-template-rows: 1fr; }
.ab-adv-acc__body-inner {
  overflow: hidden;
  padding: 0 16px;
  color: #475569;
  line-height: 1.6;
  font-size: 14px;
}
.ab-adv-acc__item.is-open .ab-adv-acc__body-inner { padding-bottom: 16px; }
.ab-adv-acc--classic .ab-adv-acc__item { border-radius: 0; border-left: 3px solid var(--ab-acc-accent, #7c3aed); }
.ab-adv-acc--bordered .ab-adv-acc__item { border-width: 2px; box-shadow: none; }
.ab-adv-acc--soft .ab-adv-acc__item { background: #f8fafc; border: 0; }

/* Preview Card */
.ab-preview-card {
  position: relative;
  border-radius: var(--ab-pc-r, 16px);
  overflow: hidden;
  background: #0f172a;
  color: #fff;
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.18);
  display: block;
  width: 100%;
  min-height: 280px;
}
.ab-preview-card__media {
  position: absolute;
  inset: 0;
}
.ab-preview-card__media img,
.ab-preview-card__ph {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .45s ease;
}
.ab-preview-card__ph { background: linear-gradient(135deg, #334155, #1e293b); }
.ab-preview-card__shade {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 20%, rgba(15, 23, 42, 0.85) 100%);
  transition: opacity .3s ease;
}
.ab-preview-card__body {
  position: relative;
  z-index: 1;
  padding: 24px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 280px;
  gap: 6px;
}
.ab-preview-card__sub {
  font: 600 11px system-ui, sans-serif;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.85;
  color: #c4b5fd;
}
.ab-preview-card__title {
  margin: 0;
  font: 700 1.35rem/1.25 system-ui, sans-serif;
}
.ab-preview-card__text {
  margin: 0;
  font: 400 14px/1.55 system-ui, sans-serif;
  opacity: 0.92;
  max-width: 40ch;
}
.ab-preview-card__btn {
  display: inline-flex;
  align-self: flex-start;
  margin-top: 10px;
  padding: 10px 16px;
  border-radius: 999px;
  background: #7c3aed;
  color: #fff !important;
  text-decoration: none;
  font: 600 13px system-ui, sans-serif;
  transition: transform .15s ease, background .15s ease;
}
.ab-preview-card__btn:hover { background: #6d28d9; transform: translateY(-1px); }
.ab-preview-card--hover .ab-preview-card__text,
.ab-preview-card--hover .ab-preview-card__btn {
  opacity: 0;
  transform: translateY(10px);
  transition: opacity .3s ease, transform .3s ease;
}
.ab-preview-card--hover:hover .ab-preview-card__text,
.ab-preview-card--hover:hover .ab-preview-card__btn {
  opacity: 1;
  transform: none;
}
.ab-preview-card--hover:hover .ab-preview-card__media img {
  transform: scale(1.06);
}
.ab-preview-card--below {
  background: #fff;
  color: #0f172a;
  min-height: 0;
}
.ab-preview-card--below .ab-preview-card__media {
  position: relative;
  height: 200px;
}
.ab-preview-card--below .ab-preview-card__shade { display: none; }
.ab-preview-card--below .ab-preview-card__body {
  min-height: 0;
  color: #0f172a;
  padding: 18px 20px 22px;
}
.ab-preview-card--below .ab-preview-card__sub { color: #7c3aed; }
.ab-preview-card--below .ab-preview-card__text { color: #475569; }
.ab-preview-card--overlay .ab-preview-card__shade {
  background: rgba(15, 23, 42, 0.55);
}

/* Info Box */
.ab-info-box {
  --ab-ib-accent: #7c3aed;
  padding: 28px 24px;
  border-radius: 16px;
  text-align: center;
  box-sizing: border-box;
  transition: transform .2s ease, box-shadow .2s ease;
}
.ab-info-box--left { text-align: left; }
.ab-info-box--right { text-align: right; }
.ab-info-box--center { text-align: center; }
.ab-info-box--card {
  background: #fff;
  border: 1px solid #e2e8f0;
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.08);
}
.ab-info-box--card:hover {
  transform: translateY(-3px);
  box-shadow: 0 16px 36px rgba(15, 23, 42, 0.12);
}
.ab-info-box--border {
  background: transparent;
  border: 2px solid var(--ab-ib-accent);
}
.ab-info-box--flat { background: transparent; border: 0; padding: 12px 0; }
.ab-info-box--soft {
  background: color-mix(in srgb, var(--ab-ib-accent) 10%, #fff);
  border: 0;
}
.ab-info-box__icon {
  width: 56px;
  height: 56px;
  margin: 0 auto 14px;
  border-radius: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.6rem;
  background: color-mix(in srgb, var(--ab-ib-accent) 18%, #fff);
  color: var(--ab-ib-accent);
}
.ab-info-box--left .ab-info-box__icon { margin-left: 0; }
.ab-info-box--right .ab-info-box__icon { margin-right: 0; margin-left: auto; }
.ab-info-box__title {
  margin: 0 0 8px;
  font: 700 1.15rem/1.3 system-ui, sans-serif;
  color: #0f172a;
}
.ab-info-box__text {
  margin: 0 0 14px;
  color: #475569;
  line-height: 1.6;
  font-size: 14px;
}
.ab-info-box__btn {
  display: inline-flex;
  padding: 10px 18px;
  border-radius: 999px;
  background: var(--ab-ib-accent);
  color: #fff !important;
  text-decoration: none;
  font: 600 13px system-ui, sans-serif;
}
.ab-info-box__btn:hover { filter: brightness(1.08); }

/* Social Bar */
.ab-social-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  --ab-sb-size: 44px;
}
.ab-social-bar--row { flex-direction: row; }
.ab-social-bar--column { flex-direction: column; }
.ab-social-bar--left { justify-content: flex-start; align-items: flex-start; }
.ab-social-bar--center { justify-content: center; align-items: center; }
.ab-social-bar--right { justify-content: flex-end; align-items: flex-end; }
.ab-social-bar__item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  text-decoration: none;
  color: #fff;
  transition: transform .15s ease, box-shadow .15s ease;
}
.ab-social-bar__item:hover { transform: translateY(-2px); }
.ab-social-bar__badge {
  width: var(--ab-sb-size);
  height: var(--ab-sb-size);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font: 700 13px/1 system-ui, sans-serif;
  background: #334155;
  color: #fff;
  box-shadow: 0 6px 16px rgba(15, 23, 42, 0.15);
}
.ab-social-bar--circle .ab-social-bar__badge { border-radius: 50%; }
.ab-social-bar--rounded .ab-social-bar__badge { border-radius: 12px; }
.ab-social-bar--square .ab-social-bar__badge { border-radius: 4px; }
.ab-social-bar__label {
  font: 600 13px system-ui, sans-serif;
  color: #0f172a;
}
.ab-social-bar__item--facebook .ab-social-bar__badge { background: #1877f2; }
.ab-social-bar__item--instagram .ab-social-bar__badge { background: linear-gradient(45deg, #f09433, #e6683c, #dc2743, #cc2366, #bc1888); }
.ab-social-bar__item--youtube .ab-social-bar__badge { background: #ff0000; }
.ab-social-bar__item--whatsapp .ab-social-bar__badge { background: #25d366; }
.ab-social-bar__item--linkedin .ab-social-bar__badge { background: #0a66c2; }
.ab-social-bar__item--twitter .ab-social-bar__badge,
.ab-social-bar__item--x .ab-social-bar__badge { background: #111; }
.ab-social-bar__item--tiktok .ab-social-bar__badge { background: #010101; }
.ab-social-bar__item--telegram .ab-social-bar__badge { background: #229ed9; }

/* Text Animation */
.ab-text-anim {
  margin: 0;
  font: 700 clamp(1.4rem, 3vw, 2.25rem)/1.25 system-ui, sans-serif;
  color: #0f172a;
}
.ab-text-anim--left { text-align: left; }
.ab-text-anim--center { text-align: center; }
.ab-text-anim--right { text-align: right; }
.ab-text-anim__word {
  color: #7c3aed;
  display: inline-block;
  min-width: 0.5ch;
}
.ab-text-anim__cursor {
  display: inline-block;
  margin-left: 2px;
  color: #7c3aed;
  animation: ab-ta-blink 1s step-end infinite;
  font-weight: 400;
}
@keyframes ab-ta-blink {
  50% { opacity: 0; }
}
.ab-text-anim--gradient .ab-text-anim__word {
  background: linear-gradient(90deg, #7c3aed, #2563eb, #db2777, #7c3aed);
  background-size: 300% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  animation: ab-ta-grad 4s linear infinite;
}
@keyframes ab-ta-grad {
  to { background-position: 300% 0; }
}
.ab-text-anim--fade .ab-text-anim__word.is-swap,
.ab-text-anim--slide .ab-text-anim__word.is-swap,
.ab-text-anim--bounce .ab-text-anim__word.is-swap {
  animation: ab-ta-fade .45s ease both;
}
.ab-text-anim--slide .ab-text-anim__word.is-swap {
  animation-name: ab-ta-slide;
}
.ab-text-anim--bounce .ab-text-anim__word.is-swap {
  animation-name: ab-ta-bounce;
}
@keyframes ab-ta-fade {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes ab-ta-slide {
  from { opacity: 0; transform: translateY(0.6em); }
  to { opacity: 1; transform: none; }
}
@keyframes ab-ta-bounce {
  0% { opacity: 0; transform: scale(0.7); }
  60% { opacity: 1; transform: scale(1.08); }
  100% { transform: none; }
}

/* Image Float */
.ab-img-float {
  display: flex;
  justify-content: center;
  width: 100%;
  max-width: 100%;
}
.ab-img-float img {
  display: block;
  width: auto;
  max-width: 100%;
  height: var(--ab-if-h, 320px);
  object-fit: cover;
  object-position: var(--ab-if-pos, 50% 50%);
  border-radius: var(--ab-if-r, 16px);
}
.ab-img-float.has-shadow img {
  box-shadow: 0 20px 50px rgba(15, 23, 42, 0.22);
}
.ab-img-float--float img { animation: ab-if-float 4s ease-in-out infinite; }
.ab-img-float--bob img { animation: ab-if-bob 2.8s ease-in-out infinite; }
.ab-img-float--pulse img { animation: ab-if-pulse 2.4s ease-in-out infinite; }
.ab-img-float--tilt img { animation: ab-if-tilt 5s ease-in-out infinite; }
.ab-img-float--rotate img { animation: ab-if-rotate 12s linear infinite; }
@keyframes ab-if-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-14px); }
}
@keyframes ab-if-bob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}
@keyframes ab-if-pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.04); }
}
@keyframes ab-if-tilt {
  0%, 100% { transform: rotate(-2deg); }
  50% { transform: rotate(2deg); }
}
@keyframes ab-if-rotate {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

/* Image Overlay */
.ab-img-overlay {
  position: relative;
  display: block;
  width: 100%;
  height: var(--ab-io-h, 280px);
  border-radius: var(--ab-io-r, 16px);
  overflow: hidden;
  text-decoration: none;
  color: #fff;
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.12);
}
.ab-img-overlay__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--ab-io-pos, 50% 50%);
  display: block;
  transition: transform .45s ease, filter .35s ease;
}
.ab-img-overlay__mask {
  position: absolute;
  inset: 0;
  background: var(--ab-io-color, #0f172a);
  opacity: 0;
  transition: opacity .35s ease;
  pointer-events: none;
}
.ab-img-overlay__content {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 20px;
  text-align: center;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity .35s ease, transform .35s ease;
  z-index: 1;
  pointer-events: none;
}
.ab-img-overlay__title {
  font: 700 1.25rem/1.25 system-ui, sans-serif;
  text-shadow: 0 2px 8px rgba(0,0,0,.35);
}
.ab-img-overlay__text {
  font: 400 14px/1.45 system-ui, sans-serif;
  opacity: 0.92;
  max-width: 36ch;
}
.ab-img-overlay:hover .ab-img-overlay__mask,
.ab-img-overlay.is-preview .ab-img-overlay__mask {
  opacity: var(--ab-io-op, 0.7);
}
.ab-img-overlay:hover .ab-img-overlay__content,
.ab-img-overlay.is-preview .ab-img-overlay__content {
  opacity: 1;
  transform: none;
}
.ab-img-overlay--zoom:hover .ab-img-overlay__img,
.ab-img-overlay--zoom.is-preview .ab-img-overlay__img {
  transform: scale(1.08);
}
.ab-img-overlay--slide-up .ab-img-overlay__content {
  justify-content: flex-end;
  transform: translateY(30%);
}
.ab-img-overlay--slide-up:hover .ab-img-overlay__content,
.ab-img-overlay--slide-up.is-preview .ab-img-overlay__content {
  transform: none;
}
.ab-img-overlay--blur:hover .ab-img-overlay__img,
.ab-img-overlay--blur.is-preview .ab-img-overlay__img {
  filter: blur(3px) scale(1.04);
}
.ab-img-overlay--color .ab-img-overlay__mask {
  mix-blend-mode: multiply;
}

/* Image Carousel Pro */
.ab-img-carousel {
  position: relative;
  width: 100%;
  height: var(--ab-ic-h, 360px);
  border-radius: var(--ab-ic-r, 12px);
  overflow: hidden;
  background: #0f172a;
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.14);
}
.ab-img-carousel__track {
  position: relative;
  width: 100%;
  height: 100%;
}
.ab-img-carousel__slide {
  position: absolute;
  inset: 0;
  margin: 0;
  opacity: 0;
  transition: opacity .5s ease;
  pointer-events: none;
}
.ab-img-carousel__slide.is-active {
  opacity: 1;
  pointer-events: auto;
  z-index: 1;
}
.ab-img-carousel__slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.ab-img-carousel__cap {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 14px 18px;
  background: linear-gradient(transparent, rgba(0,0,0,.65));
  color: #fff;
  font: 600 14px system-ui, sans-serif;
}
.ab-img-carousel__nav {
  position: absolute;
  top: 50%;
  z-index: 3;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 50%;
  background: rgba(255,255,255,.92);
  color: #0f172a;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(0,0,0,.2);
}
.ab-img-carousel__nav:hover { background: #fff; }
.ab-img-carousel__nav--prev { left: 12px; }
.ab-img-carousel__nav--next { right: 12px; }
.ab-img-carousel__dots {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 12px;
  z-index: 3;
  display: flex;
  justify-content: center;
  gap: 8px;
}
.ab-img-carousel__dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  border: 0;
  padding: 0;
  background: rgba(255,255,255,.45);
  cursor: pointer;
  transition: background .15s, transform .15s;
}
.ab-img-carousel__dot.is-active {
  background: #fff;
  transform: scale(1.2);
}

/* Nav Menu desktop row */
@media (min-width: 768px) {
  .ab-nav-menu--horizontal .ab-nav-menu__list {
    flex-direction: row;
    flex-wrap: wrap;
  }
  /* Keep dropdown open while moving from parent to panel */
  .ab-nav-menu--horizontal .ab-nav-menu__item.has-children::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    height: 10px;
  }
}

.ab-page-preview.ab-bp-mobile .ab-loop-grid__list {
  grid-template-columns: repeat(var(--ab-loop-cols-m, 1), minmax(0, 1fr)) !important;
}
.ab-page-preview.ab-bp-tablet .ab-loop-grid__list {
  grid-template-columns: repeat(var(--ab-loop-cols-t, 2), minmax(0, 1fr)) !important;
}

/* Theme chrome fallbacks when used in editor preview */
.ab-theme-chrome-inner .wp-block-group {
  box-sizing: border-box;
}
.ab-theme-chrome-inner img {
  max-width: 100%;
  height: auto;
}
.ab-theme-chrome-inner .wp-block-navigation {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
}
.ab-theme-chrome-inner .wp-block-navigation ul {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.ab-theme-chrome-inner a {
  color: inherit;
  text-decoration: none;
}
.ab-import-banner {
  background: #1e1b4b;
  border: 1px solid #7c3aed;
  color: #e9d5ff;
  padding: 10px 14px;
  border-radius: 8px;
  margin-bottom: 12px;
  font: 13px system-ui, sans-serif;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}
.ab-import-banner button {
  border: 0;
  background: #7c3aed;
  color: #fff;
  border-radius: 6px;
  padding: 6px 10px;
  font: 600 12px system-ui, sans-serif;
  cursor: pointer;
  white-space: nowrap;
}

/* ========== Motion Effects (efeitos.txt) ========== */
.ab-fx {
  --ab-fx-duration: 800ms;
  --ab-fx-delay: 0ms;
  --ab-fx-hover-duration: 300ms;
  --ab-fx-transition: 300ms;
  transition:
    transform var(--ab-fx-transition, 300ms) ease,
    opacity var(--ab-fx-transition, 300ms) ease,
    box-shadow var(--ab-fx-transition, 300ms) ease,
    filter var(--ab-fx-hover-duration, 300ms) ease;
  will-change: transform, opacity;
}
.ab-fx-static { transform-origin: center center; }

/* Entrance: initial state (before .ab-fx-in) */
.ab-fx-entrance:not(.ab-fx-in) {
  animation: none !important;
}
.ab-fx-entrance--fadein:not(.ab-fx-in) { opacity: 0; }
.ab-fx-entrance--fadeinup:not(.ab-fx-in) { opacity: 0; transform: translateY(28px); }
.ab-fx-entrance--fadeindown:not(.ab-fx-in) { opacity: 0; transform: translateY(-28px); }
.ab-fx-entrance--fadeinleft:not(.ab-fx-in) { opacity: 0; transform: translateX(-32px); }
.ab-fx-entrance--fadeinright:not(.ab-fx-in) { opacity: 0; transform: translateX(32px); }
.ab-fx-entrance--zoomin:not(.ab-fx-in) { opacity: 0; transform: scale(0.85); }
.ab-fx-entrance--zoominup:not(.ab-fx-in) { opacity: 0; transform: scale(0.9) translateY(24px); }
.ab-fx-entrance--slideinup:not(.ab-fx-in) { opacity: 0; transform: translateY(48px); }
.ab-fx-entrance--slideindown:not(.ab-fx-in) { opacity: 0; transform: translateY(-48px); }
.ab-fx-entrance--slideinleft:not(.ab-fx-in) { opacity: 0; transform: translateX(-48px); }
.ab-fx-entrance--slideinright:not(.ab-fx-in) { opacity: 0; transform: translateX(48px); }
.ab-fx-entrance--bouncein:not(.ab-fx-in) { opacity: 0; transform: scale(0.3); }
.ab-fx-entrance--flipinx:not(.ab-fx-in) { opacity: 0; transform: perspective(400px) rotateX(90deg); }
.ab-fx-entrance--flipiny:not(.ab-fx-in) { opacity: 0; transform: perspective(400px) rotateY(90deg); }
.ab-fx-entrance--rotatein:not(.ab-fx-in) { opacity: 0; transform: rotate(-180deg) scale(0.7); }
.ab-fx-entrance--lightspeedin:not(.ab-fx-in) { opacity: 0; transform: translateX(100%) skewX(-20deg); }

/* Entrance: animated in */
.ab-fx-entrance.ab-fx-in {
  animation-duration: var(--ab-fx-duration, 800ms);
  animation-delay: var(--ab-fx-delay, 0ms);
  animation-fill-mode: both;
  animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
}
.ab-fx-entrance--fadein.ab-fx-in { animation-name: ab-fx-fadein; }
.ab-fx-entrance--fadeinup.ab-fx-in { animation-name: ab-fx-fadeinup; }
.ab-fx-entrance--fadeindown.ab-fx-in { animation-name: ab-fx-fadeindown; }
.ab-fx-entrance--fadeinleft.ab-fx-in { animation-name: ab-fx-fadeinleft; }
.ab-fx-entrance--fadeinright.ab-fx-in { animation-name: ab-fx-fadeinright; }
.ab-fx-entrance--zoomin.ab-fx-in { animation-name: ab-fx-zoomin; }
.ab-fx-entrance--zoominup.ab-fx-in { animation-name: ab-fx-zoominup; }
.ab-fx-entrance--slideinup.ab-fx-in { animation-name: ab-fx-slideinup; }
.ab-fx-entrance--slideindown.ab-fx-in { animation-name: ab-fx-slideindown; }
.ab-fx-entrance--slideinleft.ab-fx-in { animation-name: ab-fx-slideinleft; }
.ab-fx-entrance--slideinright.ab-fx-in { animation-name: ab-fx-slideinright; }
.ab-fx-entrance--bouncein.ab-fx-in { animation-name: ab-fx-bouncein; animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }
.ab-fx-entrance--flipinx.ab-fx-in { animation-name: ab-fx-flipinx; }
.ab-fx-entrance--flipiny.ab-fx-in { animation-name: ab-fx-flipiny; }
.ab-fx-entrance--rotatein.ab-fx-in { animation-name: ab-fx-rotatein; }
.ab-fx-entrance--lightspeedin.ab-fx-in { animation-name: ab-fx-lightspeedin; }

@keyframes ab-fx-fadein { from { opacity: 0; } to { opacity: 1; } }
@keyframes ab-fx-fadeinup { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: none; } }
@keyframes ab-fx-fadeindown { from { opacity: 0; transform: translateY(-28px); } to { opacity: 1; transform: none; } }
@keyframes ab-fx-fadeinleft { from { opacity: 0; transform: translateX(-32px); } to { opacity: 1; transform: none; } }
@keyframes ab-fx-fadeinright { from { opacity: 0; transform: translateX(32px); } to { opacity: 1; transform: none; } }
@keyframes ab-fx-zoomin { from { opacity: 0; transform: scale(0.85); } to { opacity: 1; transform: none; } }
@keyframes ab-fx-zoominup { from { opacity: 0; transform: scale(0.9) translateY(24px); } to { opacity: 1; transform: none; } }
@keyframes ab-fx-slideinup { from { opacity: 0; transform: translateY(48px); } to { opacity: 1; transform: none; } }
@keyframes ab-fx-slideindown { from { opacity: 0; transform: translateY(-48px); } to { opacity: 1; transform: none; } }
@keyframes ab-fx-slideinleft { from { opacity: 0; transform: translateX(-48px); } to { opacity: 1; transform: none; } }
@keyframes ab-fx-slideinright { from { opacity: 0; transform: translateX(48px); } to { opacity: 1; transform: none; } }
@keyframes ab-fx-bouncein {
  0% { opacity: 0; transform: scale(0.3); }
  50% { opacity: 1; transform: scale(1.05); }
  70% { transform: scale(0.95); }
  100% { transform: scale(1); }
}
@keyframes ab-fx-flipinx {
  from { opacity: 0; transform: perspective(400px) rotateX(90deg); }
  to { opacity: 1; transform: perspective(400px) rotateX(0); }
}
@keyframes ab-fx-flipiny {
  from { opacity: 0; transform: perspective(400px) rotateY(90deg); }
  to { opacity: 1; transform: perspective(400px) rotateY(0); }
}
@keyframes ab-fx-rotatein {
  from { opacity: 0; transform: rotate(-180deg) scale(0.7); }
  to { opacity: 1; transform: none; }
}
@keyframes ab-fx-lightspeedin {
  from { opacity: 0; transform: translateX(100%) skewX(-20deg); }
  60% { opacity: 1; transform: translateX(-5%) skewX(8deg); }
  100% { transform: none; }
}

/* Hover effects */
.ab-fx-hover { transition-duration: var(--ab-fx-hover-duration, 300ms); }
.ab-fx-hover--grow:hover { transform: scale(1.05); }
.ab-fx-hover--shrink:hover { transform: scale(0.95); }
.ab-fx-hover--lift:hover { transform: translateY(-8px); box-shadow: 0 16px 32px rgba(15,23,42,.18); }
.ab-fx-hover--sink:hover { transform: translateY(4px); }
.ab-fx-hover--float:hover { transform: translateY(-4px); }
.ab-fx-hover--pulse:hover { animation: ab-fx-pulse 0.6s ease; }
.ab-fx-hover--wobble:hover { animation: ab-fx-wobble 0.7s ease; }
.ab-fx-hover--buzz:hover { animation: ab-fx-buzz 0.35s linear; }
.ab-fx-hover--glow:hover { box-shadow: 0 0 0 4px rgba(124,58,237,.25), 0 12px 28px rgba(124,58,237,.35); }
.ab-fx-hover--brightness:hover { filter: brightness(1.1); }
.ab-fx-hover--grayscale { filter: grayscale(1); }
.ab-fx-hover--grayscale:hover { filter: grayscale(0); }
.ab-fx-hover--blur:hover { filter: blur(2px); }
.ab-fx-hover--rotate:hover { transform: rotate(3deg); }
.ab-fx-hover--skew:hover { transform: skewX(-4deg); }
.ab-fx-hover--borderglow:hover { outline: 2px solid #7c3aed; outline-offset: 3px; box-shadow: 0 0 0 6px rgba(124,58,237,.15); }

@keyframes ab-fx-pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.06); }
}
@keyframes ab-fx-wobble {
  0%, 100% { transform: rotate(0); }
  25% { transform: rotate(-4deg); }
  75% { transform: rotate(4deg); }
}
@keyframes ab-fx-buzz {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-3px); }
  75% { transform: translateX(3px); }
}

/* Shadows */
.ab-fx-shadow--sm { box-shadow: 0 2px 8px rgba(15,23,42,.08); }
.ab-fx-shadow--md { box-shadow: 0 8px 20px rgba(15,23,42,.12); }
.ab-fx-shadow--lg { box-shadow: 0 16px 40px rgba(15,23,42,.16); }
.ab-fx-shadow--xl { box-shadow: 0 24px 60px rgba(15,23,42,.22); }
.ab-fx-shadow--colored { box-shadow: 0 12px 32px rgba(124,58,237,.28); }

/* ── Site background carousel ───────────────────────────────────────── */
.ab-content-wrap,
.ab-page-body {
  position: relative;
}
.ab-site-bg-carousel {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
}
.ab-content-wrap > .ab-document,
.ab-page-body > .ab-document,
.ab-page-body > .ab-theme-chrome {
  position: relative;
  z-index: 1;
}
.ab-site-bg-carousel__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 1s ease, transform 1s ease;
  background-repeat: no-repeat;
  background-position: center center;
  background-size: cover;
}
.ab-site-bg-carousel__slide.is-active {
  opacity: 1;
}
.ab-site-bg-carousel--fx-zoom .ab-site-bg-carousel__slide.is-active {
  animation: ab-bg-zoom 8s ease infinite alternate;
}
.ab-site-bg-carousel--fx-slide .ab-site-bg-carousel__slide {
  transform: translateX(8%);
}
.ab-site-bg-carousel--fx-slide .ab-site-bg-carousel__slide.is-active {
  transform: translateX(0);
}
.ab-site-bg-carousel--editor {
  min-height: 100%;
}
@keyframes ab-bg-zoom {
  from { transform: scale(1); }
  to { transform: scale(1.08); }
}

/* ── Popup widget (editor placeholder + front modal) ────────────────── */
.ab-popup-placeholder {
  border: 2px dashed #a78bfa;
  border-radius: 12px;
  padding: 16px;
  background: linear-gradient(135deg, rgba(124,58,237,.08), rgba(15,23,42,.04));
  text-align: center;
  min-height: 120px;
}
.ab-popup-placeholder__badge {
  display: inline-block;
  background: #7c3aed;
  color: #fff;
  font: 700 11px/1 system-ui, sans-serif;
  padding: 5px 10px;
  border-radius: 999px;
  margin-bottom: 10px;
}
.ab-popup-placeholder__img {
  max-width: 220px;
  max-height: 140px;
  object-fit: cover;
  border-radius: 8px;
  display: block;
  margin: 0 auto 8px;
}
.ab-popup-placeholder__empty,
.ab-popup-placeholder__hint {
  margin: 6px 0 0;
  font: 12px/1.4 system-ui, sans-serif;
  color: #64748b;
}

.ab-popup-modal {
  position: fixed;
  inset: 0;
  z-index: 100000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  opacity: 0;
  visibility: hidden;
  transition: opacity .28s ease, visibility .28s ease;
}
.ab-popup-modal.is-open {
  opacity: 1;
  visibility: visible;
}
.ab-popup-modal--overlay {
  background: rgba(15, 23, 42, 0.62);
  backdrop-filter: blur(2px);
}
.ab-popup-modal__dialog {
  position: relative;
  width: 100%;
  max-width: 720px;
  background: #fff;
  border-radius: 14px;
  box-shadow: 0 24px 64px rgba(0,0,0,.35);
  overflow: hidden;
  transform: translateY(12px) scale(.96);
  transition: transform .28s ease;
}
.ab-popup-modal.is-open .ab-popup-modal__dialog {
  transform: none;
}
.ab-popup-modal--fx-zoomin .ab-popup-modal__dialog {
  transform: scale(.85);
}
.ab-popup-modal--fx-zoomin.is-open .ab-popup-modal__dialog {
  transform: scale(1);
}
.ab-popup-modal--fx-fadeinup .ab-popup-modal__dialog {
  transform: translateY(40px);
}
.ab-popup-modal--fx-fadeinup.is-open .ab-popup-modal__dialog {
  transform: none;
}
.ab-popup-modal--fx-slideinup .ab-popup-modal__dialog {
  transform: translateY(80%);
}
.ab-popup-modal--fx-slideinup.is-open .ab-popup-modal__dialog {
  transform: none;
}
.ab-popup-modal--fx-bouncein.is-open .ab-popup-modal__dialog {
  animation: ab-popup-bounce .5s ease;
}
@keyframes ab-popup-bounce {
  0% { transform: scale(.7); }
  50% { transform: scale(1.05); }
  100% { transform: scale(1); }
}
.ab-popup-modal__close {
  position: absolute;
  top: 8px;
  right: 10px;
  z-index: 5;
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 50%;
  background: rgba(15,23,42,.72);
  color: #fff;
  font: 700 22px/1 system-ui, sans-serif;
  cursor: pointer;
}
.ab-popup-modal__close:hover { background: #7c3aed; }
.ab-popup-modal__body {
  position: relative;
  min-height: 120px;
}
.ab-popup-modal__slide {
  display: none;
  margin: 0;
}
.ab-popup-modal__slide.is-active {
  display: block;
}
.ab-popup-modal__slide img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 80vh;
  object-fit: contain;
  background: #0f172a;
}
.ab-popup-modal__body--fade .ab-popup-modal__slide {
  animation: ab-popup-fade .4s ease;
}
.ab-popup-modal__body--zoom .ab-popup-modal__slide.is-active {
  animation: ab-popup-zoom-in .45s ease;
}
@keyframes ab-popup-fade {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes ab-popup-zoom-in {
  from { opacity: 0; transform: scale(.92); }
  to { opacity: 1; transform: scale(1); }
}
.ab-popup-modal__nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 4;
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 50%;
  background: rgba(15,23,42,.55);
  color: #fff;
  font-size: 22px;
  cursor: pointer;
}
.ab-popup-modal__nav:hover { background: #7c3aed; }
.ab-popup-modal__nav--prev { left: 10px; }
.ab-popup-modal__nav--next { right: 10px; }
.ab-popup-modal__dots {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 12px;
  display: flex;
  justify-content: center;
  gap: 6px;
  z-index: 4;
}
.ab-popup-modal__dot {
  width: 8px;
  height: 8px;
  border: 0;
  border-radius: 50%;
  background: rgba(255,255,255,.45);
  cursor: pointer;
  padding: 0;
}
.ab-popup-modal__dot.is-active { background: #fff; }

/* Carousel slide transition effects */
.ab-carousel { --ab-carousel-speed: 450ms; }
.ab-carousel--fx-fade .ab-carousel__slide {
  transition: opacity var(--ab-carousel-speed, 450ms) ease;
}
.ab-carousel--fx-slide.ab-carousel--multi .ab-carousel__track {
  transition: transform var(--ab-carousel-speed, 450ms) ease;
}
.ab-carousel--fx-zoom .ab-carousel__slide {
  transition: opacity var(--ab-carousel-speed, 450ms) ease, transform var(--ab-carousel-speed, 450ms) ease;
}
.ab-carousel--fx-zoom .ab-carousel__slide:not(.is-active) {
  transform: scale(0.92);
  opacity: 0;
}
.ab-carousel--fx-zoom .ab-carousel__slide.is-active {
  transform: scale(1);
  opacity: 1;
}
.ab-carousel--fx-flip .ab-carousel__slide {
  transition: opacity var(--ab-carousel-speed, 450ms) ease, transform var(--ab-carousel-speed, 450ms) ease;
  transform-style: preserve-3d;
}
.ab-carousel--fx-flip .ab-carousel__slide:not(.is-active) {
  opacity: 0;
  transform: rotateY(70deg) scale(0.95);
}
.ab-carousel--fx-flip .ab-carousel__slide.is-active {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .ab-fx-entrance:not(.ab-fx-in) { opacity: 1 !important; transform: none !important; }
  .ab-fx-entrance.ab-fx-in { animation: none !important; }
  .ab-fx-hover:hover { animation: none !important; }
}
