/* =====================================================================
   Eduliv Design System (rebrand 2026) × MemberKit — CSS de preview  v2
   Uso: colar em uma extensão de user-CSS (Stylus etc.) para
   acesse.eduliv.com.br. Não altera nada no MemberKit.

   Fonte da verdade: projeto "Eduliv Design System" no Claude Design —
   colors_and_type.css · components.css · filters.css · dashboard.css ·
   preview/*.html (markup canônico). Cada bloco abaixo cita o componente
   do DS que ele reproduz.

   Temas:
     · MemberKit "classic"  (html[data-theme="classic"]) → tema CLEAN (paper + ink + lime)
     · MemberKit "dracula"  (html[data-theme="dracula"], wrappers .dark) → tema DARK do DS
   ===================================================================== */

@import url("https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,300..800&family=Manrope:wght@300..800&family=JetBrains+Mono:ital,wght@0,300..700;1,300..700&display=swap");

/* ---------------------------------------------------------------------
   1. TOKENS — tema clean (padrão)   ← colors_and_type.css + aliases de components.css
   --------------------------------------------------------------------- */
:root {
  /* paleta primitiva */
  --edu-ink-1000: #0A0E18;
  --edu-ink-900:  #0F1421;
  --edu-ink-700:  #2B3245;
  --edu-ink-500:  #5C6373;
  --edu-ink-300:  #9AA3B8;
  --edu-ink-200:  #C6CBD7;
  --edu-ink-100:  #E3E6EC;
  --edu-paper-50:  #FAF9F6;
  --edu-paper-100: #F2F0ED;
  --edu-paper-200: #E7E4DF;
  --edu-paper-300: #D6D1C8;
  --edu-liv-100: #F4FFCF;
  --edu-liv-300: #EAFEA6;
  --edu-liv-500: #DCFE6E;   /* Liv lime — o CTA */
  --edu-liv-700: #A9C838;
  --edu-liv-900: #5E7018;
  --edu-success: #1F8A5B;
  --edu-warning: #D4A21E;
  --edu-danger:  #C8341E;
  --edu-info:    #2A6FDB;

  /* superfícies semânticas */
  --edu-bg:            var(--edu-paper-100);
  --edu-bg-elevated:   var(--edu-paper-50);
  --edu-bg-sunken:     var(--edu-paper-200);
  --edu-bg-invert:     var(--edu-ink-900);
  --edu-fg:            var(--edu-ink-900);
  --edu-fg-muted:      var(--edu-ink-500);
  --edu-fg-subtle:     var(--edu-ink-300);
  --edu-fg-invert:     var(--edu-paper-50);
  --edu-border:        var(--edu-ink-100);
  --edu-border-strong: var(--edu-ink-200);
  --edu-border-ink:    var(--edu-ink-900);
  --edu-accent:        var(--edu-liv-500);
  --edu-accent-ink:    var(--edu-ink-1000);
  --edu-accent-soft:   var(--edu-liv-100);
  --edu-accent-strong: var(--edu-liv-900);
  --edu-surface-hover: var(--edu-paper-200);
  --edu-scrim:         rgba(10, 14, 24, 0.45);
  --edu-success-soft:  #DFF1E7;  --edu-success-fg: var(--edu-success);
  --edu-warning-soft:  #FAEDC8;  --edu-warning-fg: #8A6A0E;
  --edu-danger-soft:   #FBE3DC;  --edu-danger-fg:  var(--edu-danger);
  --edu-info-soft:     #DEE9FB;  --edu-info-fg:    #2155A8;

  /* tipografia */
  --edu-font-display: "Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;
  --edu-font-sans:    "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;
  --edu-font-mono:    "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;

  /* raios */
  --edu-r-xs: 4px;
  --edu-r-sm: 8px;
  --edu-r-md: 12px;
  --edu-r-lg: 18px;
  --edu-r-xl: 28px;
  --edu-r-pill: 999px;

  /* sombras */
  --edu-shadow-1: 0 1px 0 rgba(15, 20, 33, 0.04), 0 1px 2px rgba(15, 20, 33, 0.06);
  --edu-shadow-2: 0 2px 4px rgba(15, 20, 33, 0.06), 0 6px 16px rgba(15, 20, 33, 0.08);
  --edu-shadow-3: 0 10px 24px rgba(15, 20, 33, 0.10), 0 24px 48px rgba(15, 20, 33, 0.10);
  --edu-shadow-pop:    6px 6px 0 var(--edu-ink-900);   /* assinatura */
  --edu-shadow-pop-sm: 2px 2px 0 var(--edu-ink-900);
  --edu-focus-ring:    0 0 0 3px var(--edu-liv-300);

  /* motion */
  --edu-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --edu-dur-fast: 120ms;
  --edu-dur-base: 220ms;

  /* -------- remapeamento das variáveis Tailwind/shadcn do MemberKit -------- */
  --background:             36 16.1% 93.9% !important;   /* paper-100 */
  --foreground:             223.3 37.5% 9.4% !important; /* ink-900 */
  --card:                   45 28.6% 97.3% !important;   /* paper-50 */
  --card-foreground:        223.3 37.5% 9.4% !important;
  --popover:                45 28.6% 97.3% !important;
  --popover-foreground:     223.3 37.5% 9.4% !important;
  --muted:                  37.5 14.3% 89% !important;   /* paper-200 */
  --muted-foreground:       221.7 11.1% 40.6% !important;/* ink-500 */
  --secondary:              37.5 14.3% 89% !important;
  --secondary-foreground:   221.7 11.1% 40.6% !important;
  --accent:                 37.5 14.3% 89% !important;
  --accent-foreground:      223.3 37.5% 9.4% !important;
  --border:                 220 19.1% 90.8% !important;  /* ink-100 */
  --input:                  222.4 17.5% 81% !important;  /* ink-200 */
  --ring:                   72.9 56.7% 50.2% !important; /* liv-700 */
  --brand:                  74.2 98.6% 71.4% !important; /* liv-500 */
  --brand-light:            73.6 97.8% 82.4% !important; /* liv-300 */
  --brand-dark:             72.9 56.7% 50.2% !important; /* liv-700 */
  --brand-invert:           222.9 41.2% 6.7% !important; /* ink-1000 — texto sobre lime */
  --destructive:            7.8 73.9% 45.1% !important;
  --destructive-foreground: 0 0% 100% !important;
  --navbar-primary:         45 28.6% 97.3% !important;
  --navbar-secondary:       45 28.6% 97.3% !important;
  --navbar-background:      none !important;
  --devise-background:      none !important;
  --swiper-theme-color:      #DCFE6E !important;
  --swiper-pagination-color: #DCFE6E !important;
  --ranking-hero-bg:         #0F1421 !important;
  --ranking-subtitle-color:  #9AA3B8 !important;
}

/* ---------------------------------------------------------------------
   1b. TOKENS — tema dark   ← bloco [data-theme="dark"] de filters.css/components.css
   --------------------------------------------------------------------- */
html[data-theme="dracula"],
.dark {
  color-scheme: dark;
  --edu-bg:            var(--edu-ink-900);
  --edu-bg-elevated:   #161D2E;
  --edu-bg-sunken:     #0B101C;
  --edu-bg-invert:     var(--edu-paper-100);
  --edu-fg:            var(--edu-paper-100);
  --edu-fg-muted:      var(--edu-ink-300);
  --edu-fg-subtle:     var(--edu-ink-500);
  --edu-fg-invert:     var(--edu-ink-900);
  --edu-border:        #232B3E;
  --edu-border-strong: #323B52;
  --edu-border-ink:    var(--edu-paper-100);
  --edu-accent:        var(--edu-liv-500);
  --edu-accent-ink:    var(--edu-ink-1000);
  --edu-accent-soft:   #28301E;
  --edu-accent-strong: var(--edu-liv-500);
  --edu-surface-hover: #202940;
  --edu-scrim:         rgba(4, 6, 11, 0.62);
  --edu-success-soft:  #142E20;  --edu-success-fg: #74CCA4;
  --edu-warning-soft:  #332A12;  --edu-warning-fg: #EBC979;
  --edu-danger-soft:   #371712;  --edu-danger-fg:  #ED8975;
  --edu-info-soft:     #14233D;  --edu-info-fg:    #8AB3F0;
  --edu-shadow-1: 0 1px 0 rgba(5, 7, 13, 0.2), 0 1px 2px rgba(5, 7, 13, 0.3);
  --edu-shadow-2: 0 2px 4px rgba(5, 7, 13, 0.3), 0 6px 16px rgba(5, 7, 13, 0.35);
  --edu-shadow-3: 0 10px 24px rgba(5, 7, 13, 0.4), 0 24px 48px rgba(5, 7, 13, 0.4);
  --edu-shadow-pop:    6px 6px 0 var(--edu-liv-900);
  --edu-shadow-pop-sm: 2px 2px 0 var(--edu-liv-900);
  --edu-focus-ring:    0 0 0 3px rgba(220, 254, 110, 0.3);

  --background:             223.3 37.5% 9.4% !important;
  --foreground:             36 16.1% 93.9% !important;
  --card:                   222.5 35.3% 13.3% !important;
  --card-foreground:        36 16.1% 93.9% !important;
  --popover:                222.5 35.3% 13.3% !important;
  --popover-foreground:     36 16.1% 93.9% !important;
  --muted:                  222.2 27.8% 19% !important;
  --muted-foreground:       222 17.4% 66.3% !important;
  --secondary:              222.2 27.8% 19% !important;
  --secondary-foreground:   222 17.4% 66.3% !important;
  --accent:                 223.1 33.3% 18.8% !important;
  --accent-foreground:      36 16.1% 93.9% !important;
  --border:                 222.2 27.8% 19% !important;
  --input:                  223.1 24.2% 25.9% !important;
  --ring:                   74.2 98.6% 71.4% !important;
  --brand:                  74.2 98.6% 71.4% !important;
  --brand-light:            73.6 97.8% 82.4% !important;
  --brand-dark:             72.9 56.7% 50.2% !important;
  --brand-invert:           222.9 41.2% 6.7% !important;
  --destructive:            10 76.9% 69.4% !important;
  --destructive-foreground: 222.9 41.2% 6.7% !important;
  --navbar-primary:         222.5 35.3% 13.3% !important;
  --navbar-secondary:       222.5 35.3% 13.3% !important;
}

/* ---------------------------------------------------------------------
   1c. TOPBAR no tema clean — o MemberKit mantém .dark na topbar mesmo
   no "classic"; aqui a barra segue o tema da página.
   --------------------------------------------------------------------- */
html[data-theme="classic"] .topbar,
html[data-theme="classic"] .topbar.dark {
  color-scheme: light;
  --edu-bg:            var(--edu-paper-100);
  --edu-bg-elevated:   var(--edu-paper-50);
  --edu-bg-sunken:     var(--edu-paper-200);
  --edu-bg-invert:     var(--edu-ink-900);
  --edu-fg:            var(--edu-ink-900);
  --edu-fg-muted:      var(--edu-ink-500);
  --edu-fg-subtle:     var(--edu-ink-300);
  --edu-fg-invert:     var(--edu-paper-50);
  --edu-border:        var(--edu-ink-100);
  --edu-border-strong: var(--edu-ink-200);
  --edu-border-ink:    var(--edu-ink-900);
  --edu-accent-strong: var(--edu-liv-900);
  --edu-accent-soft:   var(--edu-liv-100);
  --edu-surface-hover: var(--edu-paper-200);
  --edu-shadow-2: 0 2px 4px rgba(15, 20, 33, 0.06), 0 6px 16px rgba(15, 20, 33, 0.08);
  --edu-shadow-pop:    6px 6px 0 var(--edu-ink-900);
  --edu-shadow-pop-sm: 2px 2px 0 var(--edu-ink-900);
  --edu-focus-ring:    0 0 0 3px var(--edu-liv-300);
  --background:             36 16.1% 93.9% !important;
  --foreground:             223.3 37.5% 9.4% !important;
  --card:                   45 28.6% 97.3% !important;
  --popover:                45 28.6% 97.3% !important;
  --popover-foreground:     223.3 37.5% 9.4% !important;
  --muted:                  37.5 14.3% 89% !important;
  --muted-foreground:       221.7 11.1% 40.6% !important;
  --secondary:              37.5 14.3% 89% !important;
  --secondary-foreground:   221.7 11.1% 40.6% !important;
  --accent:                 37.5 14.3% 89% !important;
  --accent-foreground:      223.3 37.5% 9.4% !important;
  --border:                 220 19.1% 90.8% !important;
  --input:                  222.4 17.5% 81% !important;
}

/* ---------------------------------------------------------------------
   2. BASE — tipografia   ← colors_and_type.css (semantic type styles)
   --------------------------------------------------------------------- */
html, body {
  background: var(--edu-bg) !important;
  color: var(--edu-fg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
body, .font-sans, button, input, select, textarea { font-family: var(--edu-font-sans) !important; }
body { line-height: 1.55; }

h1, h2, .h1, .h2 {
  font-family: var(--edu-font-display) !important;
  font-weight: 600 !important;
  line-height: 1.12 !important;
  letter-spacing: -0.02em;
  text-wrap: balance;
}
.h1 { font-size: 40px !important; }
.h2 { font-size: 30px !important; letter-spacing: -0.015em; }
h3, .h3 { font-family: var(--edu-font-sans) !important; font-weight: 700 !important; letter-spacing: -0.005em; }
h4, .h4 { font-family: var(--edu-font-sans) !important; font-weight: 700 !important; }
code, kbd, pre { font-family: var(--edu-font-mono) !important; }

::selection { background: var(--edu-accent); color: var(--edu-accent-ink); }

/* foco visível — anel lime (o MemberKit usa outline-none em quase tudo) */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, [tabindex]:focus-visible {
  outline: 2.5px solid var(--edu-liv-700) !important;
  outline-offset: 2px !important;
}

/* lime nunca é cor de texto sobre paper — só preenchimento (README: "sempre com ink por cima") */
/* (sem barras invertidas nos seletores: a extensão User JavaScript and CSS as remove
   e o Chrome descarta a regra inteira — por isso [class~="…"] no lugar de .hover:x escapado) */
.text-brand:not(.dark *),
[class~="hover:text-brand"]:hover:not(.dark *),
[class~="md:hover:text-brand"]:hover:not(.dark *) { color: var(--edu-accent-strong) !important; }
.badge-brand:not(.dark *) { background: var(--edu-accent-soft) !important; color: var(--edu-accent-strong) !important; }
/* resultado de busca / favoritos: título em ink, não em lime */
.search__entry h4 a:not(.dark *) { color: var(--edu-fg) !important; }
.search__entry h4 a:hover { text-decoration: underline; text-underline-offset: 3px; }
.search__entry p.text-brand:not(.dark *) { color: var(--edu-accent-strong) !important; }

/* ---------------------------------------------------------------------
   3. TOPBAR   ← preview/nav.html (paper-50 · borda ink-100 · ghost buttons)
   --------------------------------------------------------------------- */
header.topbar {
  background: var(--edu-bg-elevated) !important;
  background-image: none !important;
  color: var(--edu-fg) !important;
  border-bottom: 1px solid var(--edu-border);
  box-shadow: none !important;
}
.topbar__button {
  background: transparent !important;
  color: var(--edu-fg-muted) !important;
  border-radius: var(--edu-r-md) !important;
  transition: background var(--edu-dur-fast) var(--edu-ease-out), color var(--edu-dur-fast) var(--edu-ease-out);
}
.topbar__button:hover,
.topbar__button[aria-expanded="true"] { background: var(--edu-surface-hover) !important; color: var(--edu-fg) !important; }
.topbar__button img.rounded-full { border: 1.5px solid var(--edu-border-strong); }   /* .avatar */
.topbar__badge {                                                                    /* .badge.b-liv */
  background: var(--edu-accent) !important;
  color: var(--edu-accent-ink) !important;
  font-family: var(--edu-font-mono) !important;
  font-weight: 600 !important;
  border: 1.5px solid var(--edu-bg-elevated) !important;
  border-radius: var(--edu-r-pill) !important;
}
/* logo: em barra clara o wordmark branco atual vira ink (a logomarca nova precisa ser trocada em Aparência) */
.topbar:not(.dark) img.max-h-12,
html[data-theme="classic"] .topbar img.max-h-12 {
  filter: brightness(0) invert(8%) sepia(24%) saturate(1400%) hue-rotate(196deg) brightness(92%);
}

/* busca   ← .fsearch (filters.css): 36px · 1px border-strong · r-sm · focus ring */
.topbar__search-control, .navbar__search-control { position: relative; }
.topbar__search-input, .navbar__search-input {
  height: 36px;
  background: var(--edu-bg) !important;
  color: var(--edu-fg) !important;
  border: 1px solid var(--edu-border-strong) !important;
  border-radius: var(--edu-r-sm) !important;
  font-size: 14px !important;
  box-shadow: none !important;
  transition: border-color var(--edu-dur-fast) var(--edu-ease-out), box-shadow var(--edu-dur-fast) var(--edu-ease-out);
}
.topbar__search-input::placeholder, .navbar__search-input::placeholder { color: var(--edu-fg-subtle) !important; }
.topbar__search-input:focus, .navbar__search-input:focus {
  border-color: var(--edu-border-ink) !important;
  box-shadow: var(--edu-focus-ring) !important;
  outline: none !important;
}
.topbar__search-control button, .navbar__search-control button { color: var(--edu-fg-subtle) !important; }
.topbar__search-control:focus-within button { color: var(--edu-fg) !important; }

/* ---------------------------------------------------------------------
   4. SIDEBAR (nav#navbar)
   Item ativo = lime + ink (linguagem de "selecionado" do DS: .step.current /
   .cal-d.sel / .kpi.accent). Hover = surface-hover (.menu-item:hover).
   --------------------------------------------------------------------- */
#navbar, nav.navbar, .navbar-blend-gradient, .navbar-dark, .navbar__inner {
  background: var(--edu-bg-elevated) !important;
  background-image: none !important;
  color: var(--edu-fg) !important;
}
#navbar::before, #navbar::after, .navbar__inner::before, .navbar__inner::after { background: none !important; }
#navbar { border-right: 1px solid var(--edu-border); }

.navbar__link {
  background: transparent !important;
  color: var(--edu-fg-muted) !important;
  border-radius: var(--edu-r-md) !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  padding: 8px 10px !important;
  transition: background var(--edu-dur-fast) var(--edu-ease-out), color var(--edu-dur-fast) var(--edu-ease-out);
}
.navbar__link:hover { background: var(--edu-surface-hover) !important; color: var(--edu-fg) !important; }
.navbar__link.active {
  background: var(--edu-accent) !important;
  color: var(--edu-accent-ink) !important;
  font-weight: 700 !important;
}
.navbar__text { font-family: var(--edu-font-sans) !important; }

.navbar__badge {                                   /* .fcount */
  background: var(--edu-bg-sunken) !important;
  color: var(--edu-fg-muted) !important;
  font-family: var(--edu-font-mono) !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  line-height: 1;
  min-width: 19px;
  height: 19px !important;
  padding: 0 6px !important;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--edu-r-pill) !important;
  font-variant-numeric: tabular-nums;
}
.navbar__link.active .navbar__badge { background: var(--edu-accent-ink) !important; color: var(--edu-accent) !important; }
.navbar__divisor { border: 0 !important; height: 1px !important; background: var(--edu-border) !important; margin: 8px 8px !important; }
.navbar__button { color: var(--edu-fg-muted) !important; border-radius: var(--edu-r-md) !important; }
.navbar-backdrop { background: var(--edu-scrim) !important; }

/* ---------------------------------------------------------------------
   5. ÁREA PRINCIPAL + CABEÇALHO DE PÁGINA   ← .phead (components.css / preview/page-header.html)
   crumbs · título display · sub 14.5px muted · .hairline · ações compactas
   (menu ghost · secundário · PRIMÁRIO lime por último)
   --------------------------------------------------------------------- */
#main { background: var(--edu-bg) !important; color: var(--edu-fg) !important; }

#main > .backdrop-blur-lg,
#main .backdrop-blur-lg.relative {
  background: color-mix(in srgb, var(--edu-bg-elevated) 82%, transparent) !important;
  backdrop-filter: blur(12px) !important;
  -webkit-backdrop-filter: blur(12px) !important;
  border-bottom: 1px solid var(--edu-border);
}
.backdrop-edge { display: none !important; }

.backdrop-blur-lg h4.h3 {                        /* .phead .title (variante phead-sm = 22px) */
  font-family: var(--edu-font-display) !important;
  font-size: 22px !important;
  font-weight: 600 !important;
  letter-spacing: -0.02em;
  line-height: 1.08 !important;
  color: var(--edu-fg) !important;
  text-wrap: balance;
}
.backdrop-blur-lg p.text-muted-foreground {      /* .phead .sub */
  font-size: 14.5px !important;
  color: var(--edu-fg-muted) !important;
  margin-top: 5px;
}
/* .phead .actions — botões compactos, sem esticar */
.backdrop-blur-lg .flex.gap-2 { gap: 10px !important; }
.backdrop-blur-lg .btn { flex-grow: 0 !important; }
/* a ação principal (criar) é a última — como "+ Nova aula" no preview do DS */
.backdrop-blur-lg .btn:last-child,
.backdrop-blur-lg .btn:only-child {
  background: var(--edu-accent) !important;
  color: var(--edu-accent-ink) !important;
  border-color: var(--edu-border-ink) !important;
  box-shadow: var(--edu-shadow-pop) !important;
}
.backdrop-blur-lg .btn:last-child:hover,
.backdrop-blur-lg .btn:only-child:hover { box-shadow: var(--edu-shadow-pop-sm) !important; transform: translate(2px, 2px); background: var(--edu-accent) !important; }
.backdrop-blur-lg .btn:last-child:active,
.backdrop-blur-lg .btn:only-child:active { box-shadow: none !important; transform: translate(4px, 4px); }

/* títulos de seção da vitrine ("Análise de Dados" + "ver tudo") */
h3.h2 {
  font-family: var(--edu-font-display) !important;
  font-size: 26px !important;
  font-weight: 600 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.1 !important;
  color: var(--edu-fg) !important;
  display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap;
}
h3.h2 a, .h2 > a.inline-block {                   /* .phead .back — mono caps */
  font-family: var(--edu-font-mono) !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--edu-fg-muted) !important;
  text-decoration: none !important;
  margin-left: 0 !important;
  padding: 3px 8px;
  border-radius: 6px;
  transition: all var(--edu-dur-fast) var(--edu-ease-out);
}
h3.h2 a:hover, .h2 > a.inline-block:hover { color: var(--edu-fg) !important; background: var(--edu-surface-hover); }

/* título do curso / da aula   ← h1/h2 do DS (Bricolage 600) */
h3.text-xl.font-medium.tracking-tight,
h2.content__title {
  font-family: var(--edu-font-display) !important;
  font-size: 30px !important;
  font-weight: 600 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.08 !important;
  color: var(--edu-fg) !important;
  text-wrap: balance;
}
h2.content__title { font-size: 32px !important; }

/* ---------------------------------------------------------------------
   6. BOTÕES   ← .btn canônico (components.css)
   base: Manrope 600 15px · borda 2px border-ink · 10px 18px · r 12 · gap 8
   primary = lime + shadow-pop (hover: pop-sm + translate 2px; active: sem sombra + 4px)
   secondary = bg-elevated · ink = bg-invert · ghost = sem borda · danger
   sm: 6px 12px 13px r8 · lg: 14px 24px 17px r14 · icon: 41×41
   --------------------------------------------------------------------- */
.btn {
  font-family: var(--edu-font-sans) !important;
  font-weight: 600 !important;
  font-size: 15px;
  line-height: 1.2;
  padding: 10px 18px;
  border: 2px solid var(--edu-border-ink) !important;
  border-radius: var(--edu-r-md) !important;
  background: transparent;
  color: var(--edu-fg);
  box-shadow: none;
  gap: 8px;
  white-space: nowrap;
  transition: all var(--edu-dur-fast) var(--edu-ease-out) !important;
}
.btn-md { padding: 10px 18px !important; font-size: 15px !important; }
.btn-lg { padding: 14px 24px !important; font-size: 17px !important; border-radius: 14px !important; }
.btn-sm { padding: 6px 12px !important; font-size: 13px !important; border-radius: var(--edu-r-sm) !important; gap: 6px; }
.btn.p-2, .btn-icon { padding: 0 !important; width: 41px; height: 41px; flex: none; justify-content: center; }
.btn-sm.btn-icon, .btn-ghost.btn-icon { width: 31px; height: 31px; }
.btn:disabled, .btn[disabled] { opacity: 0.45; pointer-events: none; }
.btn-block { width: 100%; }

/* PRIMÁRIO — lime + pop (todo CTA) */
.btn-primary,
.btn-outline-primary,
input.btn.btn-primary,
.btn-brand {
  background: var(--edu-accent) !important;
  color: var(--edu-accent-ink) !important;
  border-color: var(--edu-border-ink) !important;
  box-shadow: var(--edu-shadow-pop) !important;
}
.btn-primary:hover, .btn-outline-primary:hover, .btn-brand:hover {
  background: var(--edu-accent) !important;
  color: var(--edu-accent-ink) !important;
  box-shadow: var(--edu-shadow-pop-sm) !important;
  transform: translate(2px, 2px);
}
.btn-primary:active, .btn-outline-primary:active, .btn-brand:active { box-shadow: none !important; transform: translate(4px, 4px); }
/* botão "Publicar" embutido no campo de comentário: pop reduzido para não vazar do campo */
.stack-input .btn-primary { box-shadow: var(--edu-shadow-pop-sm) !important; }
.stack-input .btn-primary:hover { box-shadow: none !important; transform: translate(2px, 2px); }

/* SECUNDÁRIO — bg-elevated + borda ink 2px */
.btn-secondary, .btn-outline-secondary {
  background: var(--edu-bg-elevated) !important;
  color: var(--edu-fg) !important;
  border-color: var(--edu-border-ink) !important;
  backdrop-filter: none !important;
}
.btn-secondary:hover, .btn-outline-secondary:hover { background: var(--edu-surface-hover) !important; }

/* INK */
.btn-dark, .btn-ink { background: var(--edu-bg-invert) !important; color: var(--edu-fg-invert) !important; border-color: var(--edu-border-ink) !important; }

/* GHOST */
.btn-ghost { background: transparent !important; border-color: transparent !important; color: var(--edu-fg-muted) !important; }
.btn-ghost:hover { background: var(--edu-surface-hover) !important; color: var(--edu-fg) !important; }

/* DANGER / SUCCESS (feedback) */
.btn-danger, .btn-outline-danger { background: var(--edu-danger) !important; color: #fff !important; border-color: var(--edu-border-ink) !important; }
.btn-success, .btn-outline-success { background: var(--edu-success-soft) !important; color: var(--edu-success-fg) !important; border-color: var(--edu-border-ink) !important; }

/* CTA do aluno na aula ("Marcar como concluído") = primário */
.popout__inner .btn-block,
.lesson__completion .btn-block {
  background: var(--edu-accent) !important;
  color: var(--edu-accent-ink) !important;
  border-color: var(--edu-border-ink) !important;
  box-shadow: var(--edu-shadow-pop) !important;
}
.popout__inner .btn-block:hover, .lesson__completion .btn-block:hover { box-shadow: var(--edu-shadow-pop-sm) !important; transform: translate(2px, 2px); }
.popout__inner .btn-block:active, .lesson__completion .btn-block:active { box-shadow: none !important; transform: translate(4px, 4px); }

/* botões de ferramenta só-ícone (barra da aula)   ← .dbtn (dashboard.css): 1px border-strong · muted · hover ink */
.breadcrumbs .btn, .breadcrumbs .join .btn {
  border: 1px solid var(--edu-border-strong) !important;
  background: var(--edu-bg-elevated) !important;
  color: var(--edu-fg-muted) !important;
  border-radius: var(--edu-r-sm) !important;
  width: 40px; height: 40px; padding: 0 !important;
  box-shadow: none !important;
}
.breadcrumbs .btn:hover { border-color: var(--edu-border-ink) !important; color: var(--edu-fg) !important; background: var(--edu-surface-hover) !important; }
.join { gap: 0; }
.join > .btn:not(:first-child) { border-left-width: 0 !important; border-top-left-radius: 0 !important; border-bottom-left-radius: 0 !important; }
.join > .btn:not(:last-child) { border-top-right-radius: 0 !important; border-bottom-right-radius: 0 !important; }

/* ---------------------------------------------------------------------
   7. CHIPS DE CATEGORIA DA VITRINE (.storefront__button)
   idle   ← .ftrigger (filters.css): 36px · 1px border-strong · bg-elevated · muted 500 · hover borda ink
   ativo  ← .cal-d.sel / .step.current: lime + ink + anel ink
   --------------------------------------------------------------------- */
.storefront__button.btn {
  height: 36px;
  background: var(--edu-bg-elevated) !important;
  color: var(--edu-fg-muted) !important;
  border: 1px solid var(--edu-border-strong) !important;
  border-radius: var(--edu-r-sm) !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  padding: 0 12px !important;
  box-shadow: none !important;
}
.storefront__button.btn:hover { color: var(--edu-fg) !important; border-color: var(--edu-border-ink) !important; background: var(--edu-surface-hover) !important; }
.storefront__button.btn.active {
  background: var(--edu-accent) !important;
  color: var(--edu-accent-ink) !important;
  border-color: var(--edu-accent-ink) !important;
  font-weight: 700 !important;
  box-shadow: inset 0 0 0 1px var(--edu-accent-ink) !important;
}
/* o slot da direita ("Disponíveis" / "Exibir Banners") usa ml-auto e abre um vão; segue na fila com o mesmo gap de 12px */
.swiper-wrapper > .swiper-slide.ml-auto { margin-left: 0 !important; }
.swiper-button-next button, .swiper-button-prev button { color: var(--edu-fg-muted) !important; }
.swiper-button-next button:hover, .swiper-button-prev button:hover { color: var(--edu-fg) !important; }

/* ---------------------------------------------------------------------
   8. CARDS DE CURSO (.poster)   ← paper card (README "Cards" + "Hover & press")
   bg-elevated · 1px ink-100 · r-lg · hover: borda engrossa para 2px ink · sem lift/scale
   --------------------------------------------------------------------- */
.poster__inner {
  border-radius: var(--edu-r-lg) !important;
  border: 1px solid var(--edu-border-strong);
  background: var(--edu-bg-elevated);
  transition: border-color var(--edu-dur-fast) var(--edu-ease-out), box-shadow var(--edu-dur-fast) var(--edu-ease-out) !important;
  --tw-scale-x: 1 !important;
  --tw-scale-y: 1 !important;
}
.poster:hover .poster__inner, .group:hover .poster__inner {
  border-color: var(--edu-border-ink);
  box-shadow: inset 0 0 0 1px var(--edu-border-ink);
  transform: none !important;
}
.poster__inner img { border-radius: 0 !important; }
/* hover: título + descrição legíveis sobre a capa — scrim ink forte embaixo, capa livre em cima;
   título Manrope 700 com sublinhado lime (README "Hover & press"); descrição em 3 linhas */
.poster__backdrop { background: linear-gradient(180deg, rgba(15, 20, 33, 0) 18%, rgba(15, 20, 33, 0.62) 48%, rgba(15, 20, 33, 0.96) 100%) !important; }
.poster__details h4 {
  font-family: var(--edu-font-sans) !important;
  font-size: 17px !important;
  font-weight: 700 !important;
  line-height: 1.25 !important;
  letter-spacing: -0.005em;
  color: var(--edu-paper-100) !important;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
}
.poster__details h4::after { content: ""; display: block; width: 28px; height: 3px; margin-top: 7px; background: var(--edu-liv-500); border-radius: 2px; }
.poster__details p {
  color: rgba(242, 240, 237, 0.86) !important;
  font-size: 13.5px !important;
  line-height: 1.45 !important;
  margin-top: 8px !important;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
  text-wrap: pretty;
}
.poster__content { font-family: var(--edu-font-sans); }
.poster__content [class~="bg-white/30"] { background: rgba(250, 249, 246, 0.35) !important; }
.poster .bg-brand, .bg-brand { background-color: var(--edu-accent) !important; }

/* ---------------------------------------------------------------------
   8b. CADEADO DO CARD (.card__lock)   ← DS "Iconography" (Lucide · stroke 1.75)
   O MemberKit desenha um cadeado SOLID (Heroicons). Trocamos pelo lock do
   Lucide — mesmo traço dos ícones injetados pelo JS (eye/sun/moon). Via
   mask + currentColor: ink no tema clean, paper no dark. Sem tocar no JS.
   --------------------------------------------------------------------- */
.card__lock { --edu-icon-lock: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='1.75'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Crect%20x='3'%20y='11'%20width='18'%20height='11'%20rx='2'%20ry='2'/%3E%3Cpath%20d='M7%2011V7a5%205%200%200%201%2010%200v4'/%3E%3C/svg%3E"); }
.card__lock .icon > svg { display: none !important; }
.card__lock .icon { display: block !important; width: 1.125rem; height: 1.125rem; }
.card__lock .icon::after {
  content: ""; display: block; width: 100%; height: 100%;
  background-color: currentColor;
  -webkit-mask: var(--edu-icon-lock) center / contain no-repeat;
          mask: var(--edu-icon-lock) center / contain no-repeat;
}

/* ---------------------------------------------------------------------
   9. PÁGINA DO CURSO — meta, progresso (.dprogress), módulos (paper card), aulas
   --------------------------------------------------------------------- */
.sidebar__duration { font-size: 13.5px !important; color: var(--edu-fg-muted) !important; font-weight: 500 !important; flex-wrap: wrap; }
.sidebar__duration > * { white-space: nowrap; }
.sidebar__duration a { color: var(--edu-fg) !important; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.sidebar__duration a:hover { color: var(--edu-liv-700) !important; }

.sidebar__progressbar, .popout__progressbar {      /* .dprogress .pm-track: 10px · bg-sunken · pill */
  background: var(--edu-bg-sunken) !important;
  height: 10px !important;
  border-radius: var(--edu-r-pill) !important;
  overflow: hidden;
}
.popout__progressbar { height: 8px !important; }
.sidebar__progressbar > div, .popout__progressbar > div { background: var(--edu-accent) !important; border-radius: var(--edu-r-pill) !important; }
.sidebar__progress span, .popout__progress {       /* .pm-val: mono tabular */
  font-family: var(--edu-font-mono) !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  color: var(--edu-fg) !important;
  font-variant-numeric: tabular-nums;
}

.section.rounded-lg, .section.bg-card {            /* paper card */
  background: var(--edu-bg-elevated) !important;
  border: 1px solid var(--edu-border) !important;
  border-radius: var(--edu-r-lg) !important;
  box-shadow: none !important;
  overflow: hidden;
}
.section h4 { font-family: var(--edu-font-sans) !important; font-size: 16px !important; font-weight: 700 !important; color: var(--edu-fg) !important; }
.section__items li { background: transparent !important; border-color: var(--edu-border) !important; transition: background var(--edu-dur-fast) var(--edu-ease-out); }
.section__items li:hover { background: color-mix(in srgb, var(--edu-surface-hover) 55%, transparent) !important; }
a.lesson__title { color: var(--edu-fg) !important; font-size: 15px !important; font-weight: 500 !important; text-decoration: none; }
a.lesson__title:hover { color: var(--edu-liv-700) !important; text-decoration: underline; text-underline-offset: 3px; }
.lesson__muted { font-family: var(--edu-font-mono) !important; font-size: 11.5px !important; color: var(--edu-fg-subtle) !important; letter-spacing: 0.02em; }
/* ícones de status da aula são imagens brancas — no tema clean, inverte para ink */
.section__items li > .flex-none img:not(.dark *) { filter: invert(1) hue-rotate(180deg); }
.shadow-subtle { box-shadow: none !important; }
.bg-card { background-color: var(--edu-bg-elevated) !important; }
.border-border { border-color: var(--edu-border) !important; }

/* ---------------------------------------------------------------------
   10. PÁGINA DA AULA — player (ink full-bleed), lista lateral, crumbs, popout
   --------------------------------------------------------------------- */
.bg-theater { background: var(--edu-ink-900) !important; }

.aside__entry {
  color: rgba(242, 240, 237, 0.62) !important;
  border-radius: var(--edu-r-md);
  margin: 2px 8px;
  padding: 10px 12px !important;
  transition: background var(--edu-dur-fast) var(--edu-ease-out), color var(--edu-dur-fast);
}
.aside__entry:hover { background: rgba(255, 255, 255, 0.06) !important; color: var(--edu-paper-100) !important; }
.aside__entry.active, .aside__entry[aria-current] {
  background: rgba(220, 254, 110, 0.14) !important;
  color: var(--edu-paper-100) !important;
  box-shadow: inset 3px 0 0 var(--edu-liv-500);
}
.aside__entry img.rounded { border-radius: 6px !important; }
.aside__entry .font-medium { font-family: var(--edu-font-sans); font-weight: 600; font-size: 13.5px; }

.breadcrumbs {                                     /* .phead .crumbs */
  background: var(--edu-bg-elevated) !important;
  border-bottom: 1px solid var(--edu-border);
  color: var(--edu-fg-subtle) !important;
  backdrop-filter: none !important;
}
.breadcrumbs a {
  font-family: var(--edu-font-mono) !important;
  font-size: 10.5px !important;
  font-weight: 500 !important;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--edu-fg-muted) !important;
  text-decoration: none !important;
}
.breadcrumbs a:hover { color: var(--edu-fg) !important; }
.breadcrumbs .icon { color: var(--edu-fg-subtle) !important; }

.popout__inner {                                   /* paper card */
  background: var(--edu-bg-elevated) !important;
  border: 1px solid var(--edu-border) !important;
  border-radius: var(--edu-r-lg) !important;
  box-shadow: none !important;
}
.popout__ratings { background: var(--edu-bg) !important; border: 1px solid var(--edu-border) !important; border-radius: var(--edu-r-md) !important; }
.popout__rating button { transition: transform var(--edu-dur-fast) var(--edu-ease-out); }

.prose { font-family: var(--edu-font-sans) !important; color: var(--edu-fg) !important; font-size: 16px; line-height: 1.55; }
.prose a { color: var(--edu-fg); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.prose a:hover { color: var(--edu-liv-700); }
.prose h1, .prose h2 { font-family: var(--edu-font-display); font-weight: 600; letter-spacing: -0.015em; }
.prose code { font-family: var(--edu-font-mono); }
.prose mark { background: linear-gradient(180deg, transparent 55%, var(--edu-liv-500) 55%); color: var(--edu-ink-1000); }   /* .liv-mark */

/* ---------------------------------------------------------------------
   11. FORMULÁRIOS   ← .field (components.css): 15px · 10px 12px · 1px border-strong · r-sm · bg-elevated · focus ring
   --------------------------------------------------------------------- */
.form-input, .form-textarea, .form-select, .form-multiselect,
input[type="text"]:not(.topbar__search-input):not(.navbar__search-input), input[type="email"], input[type="password"], input[type="search"], input[type="number"], input[type="url"], textarea, select {
  font-family: var(--edu-font-sans) !important;
  font-size: 15px;
  background-color: var(--edu-bg-elevated) !important;   /* -color: preserva a seta (background-image) do select */
  color: var(--edu-fg) !important;
  border: 1px solid var(--edu-border-strong) !important;
  border-radius: var(--edu-r-sm) !important;
  box-shadow: none !important;
  transition: border-color var(--edu-dur-fast), box-shadow var(--edu-dur-fast);
}
.form-input::placeholder, .form-textarea::placeholder, textarea::placeholder, input::placeholder { color: var(--edu-fg-subtle) !important; }
.form-input:focus, .form-textarea:focus, .form-select:focus, textarea:focus, input:focus, select:focus {
  border-color: var(--edu-border-ink) !important;
  box-shadow: var(--edu-focus-ring) !important;
  outline: none !important;
}
.form-input-ghost { background-color: var(--edu-bg) !important; }
/* seta do select em ink nos dois temas (o MemberKit usa uma seta cinza fixa) */
select.form-select, select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%230F1421' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 8l4 4 4-4'/%3E%3C/svg%3E") !important;
  background-position: right 10px center !important;
  background-repeat: no-repeat !important;
  background-size: 18px 18px !important;
  padding-right: 36px !important;
  appearance: none !important; -webkit-appearance: none !important;
}
.dark select.form-select, .dark select, html[data-theme="dracula"] select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23F2F0ED' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 8l4 4 4-4'/%3E%3C/svg%3E") !important;
}
div.form-input > select { background-image: none !important; padding-right: 18px !important; }
/* campo composto (ex.: telefone = país + DDI + número): o wrapper div.form-input é o "campo";
   os filhos ghost ficam transparentes e sem borda, e o foco vai para o wrapper */
div.form-input { display: flex; align-items: center; padding: 0 12px !important; min-height: 44px; }
div.form-input > input, div.form-input > select, div.form-input .form-input-ghost, div.form-input .form-select-ghost {
  background: transparent !important; border: 0 !important; box-shadow: none !important; border-radius: 0 !important;
  height: auto !important; padding: 0 !important; font-size: 15px !important; color: var(--edu-fg) !important;
}
div.form-input > select { color: var(--edu-fg-muted) !important; padding-right: 18px !important; }
div.form-input > span { color: var(--edu-fg-muted); font-variant-numeric: tabular-nums; }
div.form-input:focus-within { border-color: var(--edu-border-ink) !important; box-shadow: var(--edu-focus-ring) !important; }
.form-input-sm { font-size: 13px !important; }
label, .form-label { font-weight: 600; font-size: 13px; color: var(--edu-fg); }
input[type="checkbox"], input[type="radio"] { accent-color: var(--edu-liv-700); }

/* ---------------------------------------------------------------------
   12. TABS (.tabs-box)   ← .seg segmented: gap 3 · pad 4 · r-md · bg-sunken · ativo = bg-elevated + anel ink 1.5px
   --------------------------------------------------------------------- */
.tabs.tabs-box {
  display: inline-flex; align-items: center; gap: 3px;
  padding: 4px !important;
  border-radius: var(--edu-r-md) !important;
  border: 1px solid var(--edu-border-strong) !important;
  background: var(--edu-bg-sunken) !important;
}
.tabs.tabs-box .tab {
  height: 32px;
  padding: 0 12px !important;
  border-radius: var(--edu-r-sm) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  color: var(--edu-fg-muted) !important;
  background: transparent !important;
  border: 0 !important;
  transition: all var(--edu-dur-fast) var(--edu-ease-out);
}
.tabs.tabs-box .tab:hover { color: var(--edu-fg) !important; }
/* mobile: o MemberKit troca as tabs por um <select> (.hidden md:flex) — respeitar */
.tabs.tabs-box.hidden { display: none; }
@media (min-width: 768px) { .tabs.tabs-box.hidden { display: inline-flex; } }
.tabs.tabs-box .tab.active { background: var(--edu-bg-elevated) !important; color: var(--edu-fg) !important; box-shadow: inset 0 0 0 1.5px var(--edu-border-ink) !important; }

/* ---------------------------------------------------------------------
   13. DROPDOWNS / MENUS   ← .menu / .menu-item
   --------------------------------------------------------------------- */
.dropdown-menu, .dropdown-content {
  background: var(--edu-bg-elevated) !important;
  color: var(--edu-fg) !important;
  border: 1px solid var(--edu-border) !important;
  border-radius: var(--edu-r-md) !important;
  box-shadow: var(--edu-shadow-2) !important;
  padding: 6px !important;
  min-width: 214px;
}
.dropdown-menu a, .dropdown-menu button, .dropdown-menu input[type="submit"], .dropdown-menu label {
  border-radius: var(--edu-r-sm) !important;
  font-family: var(--edu-font-sans) !important;
  font-size: 13.5px !important;
  font-weight: 500 !important;
  color: var(--edu-fg) !important;
  background: transparent !important;
  text-decoration: none !important;
  transition: background var(--edu-dur-fast) var(--edu-ease-out);
}
.dropdown-menu a:hover, .dropdown-menu button:hover, .dropdown-menu input[type="submit"]:hover, .dropdown-menu label:hover { background: var(--edu-surface-hover) !important; }
.dropdown-menu hr { border-color: var(--edu-border) !important; margin: 5px 4px !important; }

/* ---------------------------------------------------------------------
   14. COMENTÁRIOS
   --------------------------------------------------------------------- */
.comment__line { color: var(--edu-border) !important; }
.comment__user .font-semibold { font-weight: 700 !important; color: var(--edu-fg); }
.comment__time { font-family: var(--edu-font-mono) !important; font-size: 11.5px !important; letter-spacing: 0.03em; color: var(--edu-fg-subtle) !important; }
.comment__content { color: var(--edu-fg); font-size: 15px; }
.comment__link { color: var(--edu-fg-subtle) !important; border-radius: var(--edu-r-sm) !important; transition: all var(--edu-dur-fast) var(--edu-ease-out); }
.comment__link:hover { color: var(--edu-fg) !important; background: var(--edu-surface-hover); }
.comment img.rounded-full { border: 1.5px solid var(--edu-border-strong); }
.stack-input .btn { border-radius: var(--edu-r-sm) !important; }

/* ---------------------------------------------------------------------
   15. MODAIS / OVERLAYS   ← .modal (r-lg · shadow-3 · scrim)
   --------------------------------------------------------------------- */
.modal, .modal-box, dialog, [role="dialog"] > div.bg-card, .toast, .alert {
  background: var(--edu-bg-elevated) !important;
  color: var(--edu-fg) !important;
  border: 1px solid var(--edu-border) !important;
  border-radius: var(--edu-r-lg) !important;
  box-shadow: var(--edu-shadow-3) !important;
}
.modal-backdrop, dialog::backdrop { background: var(--edu-scrim) !important; }

/* ---------------------------------------------------------------------
   16. TABELAS (listas do admin)   ← .dtable: cabeçalho mono caps 10.5px · linhas 1px border · hover surface-hover
   --------------------------------------------------------------------- */
table thead th {
  font-family: var(--edu-font-mono) !important;
  font-weight: 600 !important;
  font-size: 10.5px !important;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--edu-fg-subtle) !important;
  border-bottom: 1px solid var(--edu-border) !important;
  background: var(--edu-bg-elevated) !important;
}
table tbody td { border-color: var(--edu-border) !important; color: var(--edu-fg); }
table tbody tr:hover td { background: var(--edu-surface-hover) !important; }

/* ---------------------------------------------------------------------
   18. AUTH (Devise: login · esqueci a senha · redefinir senha)
   ← README "Cards" (statement card = 2px ink + shadow-pop, 1 por tela),
     "Backgrounds" (sem foto; padrão de triângulos play), .field, .btn-primary,
     .eduliv-eyebrow, headlines em minúsculas. Layout do MemberKit mantido.
   --------------------------------------------------------------------- */
.bg-devise {
  position: relative;
  isolation: isolate;
  background-color: var(--edu-bg) !important;
  background-image: none !important;
  padding: 40px 0;
}
.bg-devise > * { position: relative; z-index: 1; }
/* padrão de triângulos play numa camada própria: mais forte nas bordas, limpo atrás do card */
.bg-devise::before {
  content: "";
  position: absolute; inset: 0; z-index: 0;
  opacity: 0.7;
  pointer-events: none;
  -webkit-mask-image: radial-gradient(ellipse 48% 80% at 50% 46%, transparent 42%, #000 100%);
  mask-image: radial-gradient(ellipse 48% 80% at 50% 46%, transparent 42%, #000 100%);
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='220'%20height='220'%20viewBox='0%200%20220%20220'%3E%3Cpath%20d='M24%2026l28%2016-28%2016z'%20fill='none'%20stroke='%23C6CBD7'%20stroke-width='1.6'%20stroke-linejoin='round'/%3E%3Cpath%20d='M132%2048l28%2016-28%2016z'%20fill='%23DCFE6E'/%3E%3Cpath%20d='M70%20118l28%2016-28%2016z'%20fill='%230F1421'/%3E%3Cpath%20d='M158%20150l28%2016-28%2016z'%20fill='none'%20stroke='%23C6CBD7'%20stroke-width='1.6'%20stroke-linejoin='round'/%3E%3Cpath%20d='M14%20186l20%2011.5-20%2011.5z'%20fill='none'%20stroke='%23C6CBD7'%20stroke-width='1.6'%20stroke-linejoin='round'/%3E%3C/svg%3E") !important;
  background-size: 220px 220px !important;
  background-position: 0 0 !important;
  background-repeat: repeat !important;
}
html[data-theme="dracula"] .bg-devise::before,
.dark .bg-devise::before, .dark.bg-devise::before {
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='220'%20height='220'%20viewBox='0%200%20220%20220'%3E%3Cpath%20d='M24%2026l28%2016-28%2016z'%20fill='none'%20stroke='%23323B52'%20stroke-width='1.6'%20stroke-linejoin='round'/%3E%3Cpath%20d='M132%2048l28%2016-28%2016z'%20fill='%23DCFE6E'/%3E%3Cpath%20d='M70%20118l28%2016-28%2016z'%20fill='%23F2F0ED'%20fill-opacity='.22'/%3E%3Cpath%20d='M158%20150l28%2016-28%2016z'%20fill='none'%20stroke='%23323B52'%20stroke-width='1.6'%20stroke-linejoin='round'/%3E%3Cpath%20d='M14%20186l20%2011.5-20%2011.5z'%20fill='none'%20stroke='%23323B52'%20stroke-width='1.6'%20stroke-linejoin='round'/%3E%3C/svg%3E") !important;
}
.bg-devise > [class~="sm:max-w-lg"] { max-width: 480px !important; }

/* logo acima do card: no clean vira ink (a logomarca nova precisa ser trocada em Aparência) */
.bg-devise img.logo { max-height: 40px !important; margin-bottom: 28px !important; }
.bg-devise img.logo:not(.dark *) { filter: brightness(0) invert(8%) sepia(24%) saturate(1400%) hue-rotate(196deg) brightness(92%); }

/* statement card */
.bg-devise .bg-card {
  background: var(--edu-bg-elevated) !important;
  border: 2px solid var(--edu-border-ink) !important;
  border-radius: var(--edu-r-lg) !important;
  box-shadow: var(--edu-shadow-pop) !important;
  padding: 32px 32px 28px !important;
}
@media (max-width: 640px) { .bg-devise .bg-card { padding: 24px 20px !important; } }

/* eyebrow + headline (o JS injeta na tela de login; "Esqueceu sua senha?" já existe) */
.bg-devise .edu-eyebrow, .edu-eyebrow {
  font-family: var(--edu-font-mono) !important;
  font-size: 11px !important;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  font-weight: 500 !important;
  color: var(--edu-fg-subtle) !important;
  margin: 0 0 8px;
}
.bg-devise h2, .bg-devise .h3 {
  font-family: var(--edu-font-display) !important;
  font-size: 28px !important;
  font-weight: 600 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.08 !important;
  color: var(--edu-fg) !important;
  text-transform: lowercase;                      /* headlines em minúsculas (README "Casing") */
  text-wrap: balance;
  margin: 0;
}
.bg-devise p.text-muted-foreground { font-size: 14.5px !important; color: var(--edu-fg-muted) !important; margin-top: 6px !important; }
.bg-devise .edu-head { margin-bottom: 22px; }

/* erro de autenticação → tint danger (components.css --danger-soft/--danger-fg) */
.bg-devise p.text-destructive {
  background: var(--edu-danger-soft) !important;
  color: var(--edu-danger-fg) !important;
  font-size: 13.5px !important;
  font-weight: 600 !important;
  padding: 10px 12px;
  border-radius: var(--edu-r-sm);
  margin: 0;
}
.bg-devise p.text-destructive + hr { display: none; }
.bg-devise hr { border-color: var(--edu-border) !important; }

/* campos (.field) */
.bg-devise .form-group { display: flex; flex-direction: column; gap: 6px; }
.bg-devise .form-label { font-size: 13px !important; font-weight: 600 !important; color: var(--edu-fg) !important; margin: 0 !important; }
.bg-devise .form-input { font-size: 15px !important; padding: 10px 12px !important; height: auto !important; }
/* slot de ícone à direita (o JS monta .edu-control + botão mostrar/ocultar senha) */
.edu-control { position: relative; display: flex; align-items: center; }
.edu-control .form-input { padding-right: 42px !important; }
.edu-control .edu-slot-action {
  position: absolute; right: 7px; z-index: 1;
  appearance: none; border: 0; background: transparent; cursor: pointer;
  display: flex; align-items: center; padding: 5px; border-radius: 6px;
  color: var(--edu-fg-subtle);
  transition: color var(--edu-dur-fast), background var(--edu-dur-fast);
}
.edu-control .edu-slot-action:hover { color: var(--edu-fg); background: var(--edu-surface-hover); }
.edu-control .edu-slot-action svg { width: 16px; height: 16px; }

/* rodapé do form: link + CTA lime */
.bg-devise .text-muted-foreground a {
  color: var(--edu-fg) !important;
  font-weight: 600;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  transition: color var(--edu-dur-fast) var(--edu-ease-out);
}
.bg-devise .text-muted-foreground a:hover { color: var(--edu-liv-700) !important; }
.bg-devise .btn.lowercase { text-transform: none !important; }   /* rótulos em sentence case (README "Casing") */
.bg-devise input[type="submit"].btn { padding: 12px 22px !important; font-size: 16px !important; border-radius: var(--edu-r-md) !important; }
.bg-devise .btn-block { width: 100%; }

/* botão de tema nas telas de auth (o JS monta; na app ele entra na topbar) */
.edu-theme-fixed { position: fixed; top: 14px; right: 16px; z-index: 50; width: 40px; height: 40px; display: grid; place-items: center; border: 1px solid var(--edu-border-strong) !important; background: var(--edu-bg-elevated) !important; cursor: pointer; }
#edu-theme-toggle { cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }

/* "voltar para o login" (injetado pelo JS na tela de senha) ← .phead .back */
.edu-back {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--edu-font-mono) !important;
  font-size: 11px !important;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--edu-fg-muted) !important;
  text-decoration: none !important;
  padding: 3px 8px 3px 4px;
  margin: 18px 0 0 -4px;
  border-radius: 6px;
  transition: all var(--edu-dur-fast) var(--edu-ease-out);
}
.edu-back:hover { color: var(--edu-fg) !important; background: var(--edu-surface-hover); }
.edu-back svg { width: 13px; height: 13px; }

/* ---------------------------------------------------------------------
   19. PÁGINA 404
   --------------------------------------------------------------------- */
h1.text-2xl.font-extrabold.tracking-tight {
  font-family: var(--edu-font-display) !important;
  font-size: 64px !important;
  font-weight: 600 !important;
  letter-spacing: -0.03em !important;
  line-height: 0.96 !important;
  border-color: var(--edu-border-strong) !important;
}
h1.text-2xl.font-extrabold.tracking-tight + h2 { font-family: var(--edu-font-sans) !important; font-weight: 500 !important; font-size: 16px !important; color: var(--edu-fg-muted) !important; max-width: 34ch; }

/* ---------------------------------------------------------------------
   20. LOGOMARCA (rebrand 2026) — assets do DS (design-system/assets/logo-eduliv*.png)
   embutidos como WebP 320px. Navy (#0F1421) no clean, branco no dark.
   "content: url()" substitui a imagem do <img> do MemberKit sem JS.
   --------------------------------------------------------------------- */
.topbar img.max-h-12, .navbar img.max-h-12, .bg-devise img.logo {
  content: url("data:image/webp;base64,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");
  filter: none !important;
  height: auto;
  width: auto;
}
/* tamanho: 30px na barra de 64px (nav do DS: marca 28px), 36px acima do card de login */
.topbar img.max-h-12, .navbar img.max-h-12 { max-height: 30px !important; }
.bg-devise img.logo { max-height: 36px !important; }
.topbar.dark img.max-h-12, .dark .navbar img.max-h-12, .dark .bg-devise img.logo, html[data-theme="dracula"] img.logo {
  content: url("data:image/webp;base64,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");
}
html[data-theme="classic"] .topbar img.max-h-12, html[data-theme="classic"] .navbar img.max-h-12, html[data-theme="classic"] img.logo {
  content: url("data:image/webp;base64,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");
}

/* ---------------------------------------------------------------------
   21. ITENS OCULTOS NA SIDEBAR
   O MemberKit marca cada link com uma classe estável nav-item-<recurso>;
   esconder por ela é mais robusto que por texto/posição e não pisca como
   remover via JS. Só oculta o link — as rotas continuam acessíveis por URL;
   para desligar de verdade, desative o módulo em Configurações do MemberKit.
   --------------------------------------------------------------------- */
#navbar .navbar__link.nav-item-registration,   /* Minha conta: só no menu do avatar */
#navbar .navbar__link.nav-item-forum,      /* Comunidades  (/posts) */
#navbar .navbar__link.nav-item-ranking,    /* Ranking      (/ranking) */
#navbar .navbar__link.nav-item-message {   /* Atendimento  (/messages/new) */
  display: none !important;
}

/* ---------------------------------------------------------------------
   17. UTILITÁRIOS TAILWIND COM COR FIXA + scrollbar
   --------------------------------------------------------------------- */
[class~="text-white/60"] { color: rgba(242, 240, 237, 0.6) !important; }
.text-gray-300 { color: var(--edu-fg-subtle) !important; }
.bg-zinc-950, [class~="dark:bg-black"] { background-color: var(--edu-ink-900) !important; }
.bg-slate-50 { background-color: var(--edu-bg) !important; }
.rounded-lg { border-radius: var(--edu-r-md); }
.rounded-xl { border-radius: var(--edu-r-lg); }
.rounded-2xl { border-radius: var(--edu-r-xl); }
img.rounded-lg { border-radius: var(--edu-r-md); }
hr { border-color: var(--edu-border) !important; }

* { scrollbar-width: thin; scrollbar-color: var(--edu-border-strong) transparent; }
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-thumb { background: var(--edu-border-strong); border-radius: 999px; border: 3px solid transparent; background-clip: padding-box; }
*::-webkit-scrollbar-track { background: transparent; }

@media (prefers-reduced-motion: reduce) {
  .btn, .poster__inner, .navbar__link, .topbar__button { transition-duration: 60ms !important; }
}

/* ---------------------------------------------------------------------
   22. FAVORITOS — sem a coluna de filtros (Todos/Cursos/Módulos/Aulas);
   só o que foi favoritado, com a lista ocupando a largura toda.
   Escopo: a grade da busca cujo filtro ativo é ?type=bookmark.
   --------------------------------------------------------------------- */
#main .grid:has(a.text-brand[href="/search_results?type=bookmark"]) > [class~="md:col-span-2"] { display: none !important; }
#main .grid:has(a.text-brand[href="/search_results?type=bookmark"]) > [class~="md:col-span-6"],
#main .grid:has(a.text-brand[href="/search_results?type=bookmark"]) > [class~="md:col-start-3"] { grid-column: 1 / -1 !important; }

/* ---------------------------------------------------------------------
   23. AULA — sem o botão "Apagar as luzes" (modo teatro)
   --------------------------------------------------------------------- */
#main button[data-controller="theater"],
#main [data-action*="theater#show"] { display: none !important; }

/* ---------------------------------------------------------------------
   24. MINHA CONTA — avatar maior (48px → 96px) com o botão de editar
   proporcional e anel lime no hover.
   --------------------------------------------------------------------- */
label[data-controller="upload-preview"] img[data-upload-preview-target="image"] {
  width: 96px !important;
  height: 96px !important;
  object-fit: cover;
  border: 2px solid var(--edu-border-strong);
  transition: box-shadow var(--edu-dur-fast) var(--edu-ease-out);
}
label[data-controller="upload-preview"]:hover img[data-upload-preview-target="image"] { box-shadow: var(--edu-focus-ring); }
label[data-controller="upload-preview"] .btn-icon {
  width: 34px !important;
  height: 34px !important;
  bottom: 0 !important;
  right: 0 !important;
}
label[data-controller="upload-preview"] .btn-icon .icon { width: 18px !important; height: 18px !important; }

/* ---------------------------------------------------------------------
   25. FLASH (toast de aviso/erro) — statement card do DS: paper-50, borda
   ink, shadow-pop, faixa lime à esquerda. O texto vem do JS (CONFIG.flash).
   --------------------------------------------------------------------- */
@keyframes edu-flash {
  0%   { opacity: 0; transform: translate(-50%, -16px); }
  6%   { opacity: 1; transform: translate(-50%, 0); }
  88%  { opacity: 1; transform: translate(-50%, 0); }
  100% { opacity: 0; transform: translate(-50%, -8px); }
}
.flash {
  top: 20px !important;
  width: min(520px, calc(100vw - 32px)) !important;
  max-width: none !important;
  padding: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  animation: edu-flash 8s var(--edu-ease-out) both !important;
}
.flash-content {
  position: relative;
  display: block !important;
  padding: 16px 20px 16px 24px !important;
  border: 1.5px solid var(--edu-border-ink) !important;
  border-radius: var(--edu-r-md) !important;
  background: var(--edu-bg-elevated) !important;
  color: var(--edu-fg) !important;
  box-shadow: var(--edu-shadow-pop-sm) !important;
  font-family: var(--edu-font-sans) !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
  text-align: left !important;
}
/* faixa lime à esquerda — "sempre com ink por cima" */
.flash-content.flash-alert  { border-left: 6px solid var(--edu-accent) !important; }
.flash-content.flash-notice { border-left: 6px solid var(--edu-success) !important; }
.edu-flash-title {
  display: block;
  font-family: var(--edu-font-display) !important;
  font-weight: 700; font-size: 18px; line-height: 1.2; letter-spacing: -0.01em;
  margin-bottom: 4px;
}
.edu-flash-body { display: block; color: var(--edu-fg-muted); }
.edu-flash-link {
  display: inline-flex; align-items: center; gap: 6px; margin-top: 10px;
  font-family: var(--edu-font-mono) !important; font-size: 12px; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--edu-fg) !important; text-decoration: none !important;
  border-bottom: 2px solid var(--edu-accent);
}
.edu-flash-link:hover { border-bottom-color: var(--edu-fg); }

/* ---------------------------------------------------------------------
   26. MODAL DE ACESSO (curso fora da conta) — substitui o flash genérico.
   Construído pelo JS (CONFIG.flash[...].mode = 'modal'): scrim + statement
   card com CTA primário lime (oferta) e secundário (já paguei → atualizar).
   --------------------------------------------------------------------- */
.edu-modal {
  position: fixed; inset: 0; z-index: 1000;
  display: grid; place-items: center; padding: 16px;
  background: var(--edu-scrim);
  backdrop-filter: blur(2px);
  animation: edu-modal-in var(--edu-dur-base) var(--edu-ease-out) both;
}
@keyframes edu-modal-in   { from { opacity: 0; } to { opacity: 1; } }
@keyframes edu-modal-card { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.edu-modal__card {
  position: relative;
  width: min(560px, 100%);
  padding: 32px 32px 28px;
  border: 1.5px solid var(--edu-border-ink);
  border-radius: var(--edu-r-lg);
  background: var(--edu-bg-elevated);
  color: var(--edu-fg);
  box-shadow: var(--edu-shadow-pop);
  font-family: var(--edu-font-sans);
  animation: edu-modal-card var(--edu-dur-base) var(--edu-ease-out) both;
}
.edu-modal__close {
  position: absolute; top: 14px; right: 14px;
  width: 36px; height: 36px; display: grid; place-items: center;
  border: 0; border-radius: var(--edu-r-sm); background: transparent; color: var(--edu-fg-muted);
  cursor: pointer; font-size: 22px; line-height: 1;
}
.edu-modal__close:hover { background: var(--edu-surface-hover); color: var(--edu-fg); }
.edu-modal__eyebrow {
  display: inline-block; margin-bottom: 14px; padding: 4px 10px;
  border-radius: var(--edu-r-pill); background: var(--edu-accent); color: var(--edu-accent-ink);
  font-family: var(--edu-font-mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; font-weight: 600;
}
.edu-modal__title {
  margin: 0 0 12px;
  font-family: var(--edu-font-display); font-weight: 700; font-size: 28px; line-height: 1.1; letter-spacing: -0.02em;
  text-wrap: balance;
}
.edu-modal__body { margin: 0 0 8px; font-size: 15px; line-height: 1.55; color: var(--edu-fg-muted); }
.edu-modal__body strong { color: var(--edu-fg); font-weight: 700; }
.edu-modal__offer {
  margin: 18px 0 20px; padding: 14px 16px;
  border-left: 6px solid var(--edu-accent); border-radius: 0 var(--edu-r-sm) var(--edu-r-sm) 0;
  background: var(--edu-accent-soft); color: var(--edu-fg);
  font-size: 15px; line-height: 1.5;
}
.edu-modal__actions { display: flex; flex-wrap: wrap; gap: 12px 14px; align-items: center; }
.edu-modal__actions .btn { text-decoration: none !important; }
.edu-modal__actions .btn-primary { font-size: 16px !important; padding: 13px 22px !important; }
.edu-modal__hint {
  margin: 14px 0 0; font-size: 13px; color: var(--edu-fg-subtle);
}
.edu-modal__hint kbd {
  font-family: var(--edu-font-mono); font-size: 11px; padding: 1px 6px;
  border: 1px solid var(--edu-border-strong); border-bottom-width: 2px; border-radius: 4px; background: var(--edu-bg);
}
@media (max-width: 480px) {
  .edu-modal__card { padding: 26px 20px 22px; border-radius: var(--edu-r-md); }
  .edu-modal__title { font-size: 24px; }
  .edu-modal__actions .btn { width: 100%; justify-content: center; }
}

/* ---------------------------------------------------------------------
   27. TIPOGRAFIA — rede de segurança para conteúdo injetado por scripts
   de terceiros (ex.: modal "Confirme seus dados" do cdn.js), que trazem
   font-family própria inline. Garante as três famílias do DS em tudo.
   --------------------------------------------------------------------- */
.eduliv-overlay, .eduliv-overlay *, .tippy-box, .tippy-content, [data-tippy-root] * {
  font-family: var(--edu-font-sans) !important;
}
.eduliv-overlay h1, .eduliv-overlay h2 {
  font-family: var(--edu-font-display) !important;
  font-weight: 600 !important; letter-spacing: -0.02em; line-height: 1.12 !important;
}
.eduliv-overlay code, .eduliv-overlay kbd { font-family: var(--edu-font-mono) !important; }

/* ---------------------------------------------------------------------
   28. PERFIL — chips de ícone (violet/sky/emerald/indigo do Tailwind → DS:
   lime-100 + ink; dark: accent-soft + lime)
   --------------------------------------------------------------------- */
#main [class*="bg-violet-"], #main [class*="bg-sky-"], #main [class*="bg-emerald-"], #main [class*="bg-indigo-"] {
  background-color: var(--edu-accent-soft) !important;
  color: var(--edu-fg) !important;
  border-radius: var(--edu-r-sm) !important;
}
.dark #main [class*="bg-violet-"], .dark #main [class*="bg-sky-"], .dark #main [class*="bg-emerald-"], .dark #main [class*="bg-indigo-"] {
  color: var(--edu-accent) !important;
}

/* ---------------------------------------------------------------------
   29. TAB BAR INFERIOR (mobile < 768px) — navegação estilo app, montada
   pelo JS (#edu-tabbar): 4 itens, ícone + rótulo, ativo = pílula lime.
   --------------------------------------------------------------------- */
.edu-tabbar { display: none; }
@media (max-width: 767px) {
  .edu-tabbar {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 45;
    display: grid; grid-template-columns: repeat(var(--edu-tabbar-cols, 4), 1fr);
    height: calc(62px + env(safe-area-inset-bottom, 0px));
    padding: 6px 8px calc(6px + env(safe-area-inset-bottom, 0px));
    background: var(--edu-bg-elevated);
    border-top: 1px solid var(--edu-border);
    box-shadow: 0 -4px 16px rgba(15, 20, 33, 0.06);
    font-family: var(--edu-font-sans);
  }
  .dark .edu-tabbar, html[data-theme="dracula"] .edu-tabbar { box-shadow: 0 -4px 16px rgba(4, 6, 11, 0.4); }
  .edu-tabbar__item {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
    color: var(--edu-fg-muted) !important; text-decoration: none !important;
    border-radius: var(--edu-r-sm);
    -webkit-tap-highlight-color: transparent;
  }
  .edu-tabbar__icon {
    display: grid; place-items: center; width: 44px; height: 28px;
    border-radius: var(--edu-r-pill);
    transition: background var(--edu-dur-fast) var(--edu-ease-out), color var(--edu-dur-fast) var(--edu-ease-out);
  }
  .edu-tabbar__icon svg { width: 22px; height: 22px; stroke-width: 1.75; }
  .edu-tabbar__label { font-size: 11px; font-weight: 600; letter-spacing: 0; line-height: 1; }
  .edu-tabbar__item.is-active { color: var(--edu-fg) !important; }
  .edu-tabbar__item.is-active .edu-tabbar__label { font-weight: 700; }
  .edu-tabbar__item.is-active .edu-tabbar__icon { background: var(--edu-accent); color: var(--edu-accent-ink); }
  .edu-tabbar__item:active .edu-tabbar__icon { background: var(--edu-surface-hover); }

  /* sem hambúrguer no mobile: a navegação é a tab bar (o drawer segue acessível só no desktop) */
  html.edu-has-tabbar .topbar button.topbar__button[data-action*="dispatch#emit"] { display: none !important; }

  /* espaço para o conteúdo não ficar atrás da barra */
  html.edu-has-tabbar #main { padding-bottom: calc(76px + env(safe-area-inset-bottom, 0px)) !important; }
  html.edu-has-tabbar .edu-modal { padding-bottom: calc(16px + 62px + env(safe-area-inset-bottom, 0px)); }
}

/* ---------------------------------------------------------------------
   30. ESCALA MOBILE (< 768px) — a vitrine estava com muito "chrome"
   (títulos 26px, setas, chips altos) em volta de pôsteres de 180px.
   Títulos de seção menores, pôsteres maiores (swiper em slidesPerView
   'auto': a largura vem do CSS), setas escondidas (é swipe), chips
   mais baixos.
   --------------------------------------------------------------------- */
@media (max-width: 767px) {
  #main .h2, #main h2.h2 { font-size: 22px !important; line-height: 1.15 !important; }
  #main .h1, #main h1.h1 { font-size: 30px !important; }
  .poster.swiper-slide { width: 58vw !important; max-width: 240px; }
  #main button[data-action="swiper#prev"], #main button[data-action="swiper#next"] { display: none !important; }
  a.storefront__button { height: 34px !important; padding: 0 12px !important; font-size: 13px !important; }
}

/* ---------------------------------------------------------------------
   31. MINHA CONTA — sem o bloco "Fuso horário" (e a divisória logo depois).
   O select continua no form, só escondido: o valor atual segue sendo salvo.
   --------------------------------------------------------------------- */
#edit_user > .grid:has(#user_time_zone),
#edit_user > .grid:has(#user_time_zone) + hr { display: none !important; }

/* ---------------------------------------------------------------------
   18b. AUTH · LAYOUT SPLIT DO LOGIN  ← espelha o portal novo (/entrar)
   Só na tela de login (o JS monta .edu-auth: aside dark + main paper).
   Desktop: split (marca à esquerda, form à direita) no statement card.
   Mobile:  empilha full-bleed (hero dark em cima, form embaixo).
   Especificidade reforçada (.bg-devise …) p/ vencer as regras da seção 18.
   --------------------------------------------------------------------- */
.bg-devise:has(.edu-auth){ padding:0 !important; min-height:100vh; display:flex; align-items:center; justify-content:center; }
.bg-devise:has(.edu-auth)::before{ opacity:.4; }
.bg-devise img.logo.edu-auth__logo--src{ display:none !important; }
.bg-devise > [class~="sm:max-w-lg"]:has(.edu-auth){ max-width:940px !important; width:100% !important; padding-left:0 !important; padding-right:0 !important; }
.bg-devise .bg-card.edu-auth{ padding:0 !important; overflow:hidden; width:100% !important; max-width:940px !important; margin:auto; display:grid; grid-template-columns:1.05fr .95fr; align-items:stretch; }

/* aside (marca, dark) */
.bg-devise .edu-auth__aside{ background:var(--edu-ink-900); color:var(--edu-fg-invert); padding:46px 42px; display:flex; flex-direction:column; justify-content:center; align-items:flex-start; position:relative; overflow:hidden; }
.bg-devise .edu-auth__aside::before{ content:""; position:absolute; inset:0; opacity:.55; pointer-events:none; background-image:radial-gradient(rgba(255,255,255,.05) 1.4px, transparent 1.5px); background-size:15px 15px; }
.bg-devise .edu-auth__aside > *{ position:relative; z-index:1; }
.bg-devise .edu-auth__logo{ max-height:29px !important; width:auto !important; margin:0 0 26px !important; filter:brightness(0) invert(1) !important; }
.bg-devise .edu-auth .edu-head{ margin:0 !important; }
.bg-devise .edu-auth__aside .edu-eyebrow{ display:inline-flex; width:fit-content; white-space:nowrap; align-items:center; color:var(--edu-liv-500) !important; background:transparent; border:1px solid var(--edu-ink-700) !important; border-radius:var(--edu-r-pill); padding:5px 13px !important; margin:0 0 15px !important; letter-spacing:.11em; }
.bg-devise .edu-auth__aside h2{ color:var(--edu-fg-invert) !important; font-size:33px !important; }
.bg-devise .edu-auth__aside p.text-muted-foreground{ color:var(--edu-ink-300) !important; font-size:15px !important; margin-top:12px !important; max-width:34ch; }

/* main (form, paper) */
.bg-devise .edu-auth__main{ background:var(--edu-bg-elevated); padding:46px 42px; display:flex; flex-direction:column; justify-content:center; }
.bg-devise .edu-auth__main .space-y-5{ display:flex; flex-direction:column; gap:16px; }

/* inputs com ícone Lucide à esquerda (mail / lock, stroke 1.75) */
.bg-devise .edu-auth .form-input{ padding-left:42px !important; background-repeat:no-repeat; background-position:13px center; background-size:18px 18px; }
.bg-devise .edu-auth #user_email{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239AA3B8' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='4' width='20' height='16' rx='2'/%3E%3Cpath d='m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7'/%3E%3C/svg%3E") !important; }
.bg-devise .edu-auth #user_password{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239AA3B8' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E") !important; }
.bg-devise .edu-control .form-input{ padding-right:42px !important; }

/* checkbox lime "lembrar de mim" */
.bg-devise .edu-remember{ display:flex; align-items:center; gap:10px; cursor:pointer; font-size:14.5px; color:var(--edu-fg); user-select:none; }
.bg-devise .edu-remember input{ position:absolute; opacity:0; width:0; height:0; }
.bg-devise .edu-remember .box{ width:22px; height:22px; flex:none; border-radius:7px; border:1.5px solid var(--edu-border-strong); background:var(--edu-bg-elevated); display:flex; align-items:center; justify-content:center; transition:all var(--edu-dur-fast) var(--edu-ease-out); }
.bg-devise .edu-remember input:checked + .box{ background:var(--edu-liv-500); border-color:var(--edu-accent-strong); }
.bg-devise .edu-remember .box svg{ width:13px; height:13px; color:var(--edu-ink-1000); opacity:0; transform:scale(.5); transition:all var(--edu-dur-fast); }
.bg-devise .edu-remember input:checked + .box svg{ opacity:1; transform:scale(1); }
.bg-devise .edu-remember input:focus-visible + .box{ box-shadow:var(--edu-focus-ring); }

/* rodapé do form: CTA full-width + link empilhado e centralizado */
.bg-devise .edu-authfooter{ display:flex; flex-direction:column; gap:14px; align-items:stretch; margin-top:6px; }
.bg-devise .edu-authfooter .edu-submit{ order:0; width:100% !important; }
.bg-devise .edu-authfooter > *:not(.edu-submit){ order:1; text-align:center; margin:0 !important; }
.bg-devise .edu-auth input[type="submit"].btn{ padding:14px 24px !important; font-size:17px !important; border-radius:14px !important; text-transform:none !important; }

/* mobile: empilha full-bleed (hero dark em cima, form embaixo) */
@media (max-width:860px){
  .bg-devise > [class~="sm:max-w-lg"]:has(.edu-auth){ max-width:none !important; }
  .bg-devise .bg-card.edu-auth{ grid-template-columns:1fr; max-width:none !important; width:100% !important; min-height:100vh; border:0 !important; border-radius:0 !important; box-shadow:none !important; }
  .bg-devise:has(.edu-auth)::before{ display:none; }
  .bg-devise .edu-auth__aside{ padding:34px 24px 30px; justify-content:flex-start; }
  .bg-devise .edu-auth__aside h2{ font-size:28px !important; }
  .bg-devise .edu-auth__main{ padding:28px 24px 36px; }
}

/* Badge de novidade no item Certificados — reusa .navbar__badge (já no DS
   desta folha). Só o posicionamento na tab bar, que o MemberKit não tem. */
.edu-tabbar__item { position: relative; }
.edu-tabbar__item .navbar__badge[data-edu-cert-new] {
  position: absolute;
  top: 2px;
  right: calc(50% - 22px);
  min-width: auto;
  height: 16px !important;
  padding: 0 5px !important;
  font-size: 9px !important;
}
