/* Highlight.js: manter fundo transparente para harmonizar com o wrapper */
.hljs { background: transparent !important; }
pre .hljs { background: transparent !important; }

:root {
  --color-brand-900: #1B2754;
  --color-brand-500: #1C7FB7;
}

.bg-plasas-brand { background-color: var(--color-brand-500); }
.bg-plasas-brand-strong { background-color: var(--color-brand-900); }
.text-plasas-brand { color: var(--color-brand-500); }
.text-plasas-brand-strong { color: var(--color-brand-900); }
.border-plasas-brand { border-color: var(--color-brand-500); }

.btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; border-radius: 0.375rem; padding: 0.5rem 0.75rem; font-size: 0.875rem; line-height: 1.25rem; font-weight: 500; cursor: pointer; user-select: none; transition: background-color .2s ease, color .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease; border: 1px solid transparent; }
.btn:focus-visible { outline: none; box-shadow: 0 0 0 2px rgba(37,99,235,0.35); }
.btn:disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; }

.btn-sm { padding: 0.375rem 0.5rem; font-size: 0.75rem; line-height: 1rem; }
.btn-lg { padding: 0.75rem 1rem; font-size: 1rem; line-height: 1.5rem; }
.btn-block { width: 100%; }
.btn-icon { padding: 0; width: 2.25rem; height: 2.25rem; display: inline-flex; align-items: center; justify-content: center; }

.btn-primary { background-color: #2563eb; color: #fff; border-color: #2563eb; }
.btn-primary:hover { background-color: #1d4ed8; border-color: #1d4ed8; }

.btn-secondary { background-color: #ffffff; color: #334155; border-color: #e2e8f0; }
.btn-secondary:hover { background-color: #f8fafc; }
.dark .btn-secondary { background-color: #0b1220; color: #e2e8f0; border-color: #334155; }
.dark .btn-secondary:hover { background-color: #0f172a; }

.btn-outline { background-color: transparent; color: #2563eb; border-color: #60a5fa; }
.btn-outline:hover { background-color: rgba(37,99,235,0.1); }
.dark .btn-outline { color: #60a5fa; border-color: #60a5fa; }
.dark .btn-outline:hover { background-color: rgba(96,165,250,0.15); }

.btn-ghost { background-color: transparent; color: #334155; border-color: transparent; }
.btn-ghost:hover { background-color: #f1f5f9; }
.dark .btn-ghost { color: #e2e8f0; }
.dark .btn-ghost:hover { background-color: #0f172a; }

.btn-danger { background-color: #dc2626; color: #ffffff; border-color: #dc2626; }
.btn-danger:hover { background-color: #b91c1c; border-color: #b91c1c; }

.btn-plasas { background-color: var(--color-brand-500); color: #ffffff; border-color: var(--color-brand-500); }
.btn-plasas:hover { filter: brightness(0.95); }

.form-label { display: block; margin-bottom: 0.25rem; font-size: 0.875rem; line-height: 1.25rem; font-weight: 500; color: #334155; }
.dark .form-label { color: #e2e8f0; }

.form-input, .form-textarea, .form-select { width: 100%; border: 1px solid #e2e8f0; background-color: #ffffff; color: #334155; border-radius: 0.375rem; padding: 0.5rem 0.75rem; font-size: 0.875rem; line-height: 1.25rem; transition: border-color .2s ease, box-shadow .2s ease, background-color .2s ease, color .2s ease; }
.dark .form-input, .dark .form-textarea, .dark .form-select { border-color: #334155; background-color: #0b1220; color: #e2e8f0; }
.form-input::placeholder, .form-textarea::placeholder { color: #94a3b8; }
.dark .form-input::placeholder, .dark .form-textarea::placeholder { color: #64748b; }
.form-input:focus-visible, .form-textarea:focus-visible, .form-select:focus-visible { outline: none; border-color: #2563eb; box-shadow: 0 0 0 2px rgba(37,99,235,0.35); }
.form-input:disabled, .form-textarea:disabled, .form-select:disabled { opacity: 0.6; cursor: not-allowed; }

.input-sm { padding: 0.375rem 0.5rem; font-size: 0.75rem; line-height: 1rem; }
.input-lg { padding: 0.75rem 1rem; font-size: 1rem; line-height: 1.5rem; }

.form-textarea { min-height: 6rem; resize: vertical; }

.checkbox, .radio { width: 1rem; height: 1rem; accent-color: #2563eb; }
.dark .checkbox, .dark .radio { accent-color: #60a5fa; }

.is-error { border-color: #dc2626; }
.is-error:focus-visible { box-shadow: 0 0 0 2px rgba(220,38,38,0.35); }
.is-success { border-color: #16a34a; }
.is-success:focus-visible { box-shadow: 0 0 0 2px rgba(22,163,74,0.35); }
.form-error-text { margin-top: 0.25rem; font-size: 0.75rem; color: #dc2626; }
.form-success-text { margin-top: 0.25rem; font-size: 0.75rem; color: #16a34a; }

.switch { display: inline-flex; align-items: center; gap: 0.5rem; cursor: pointer; }
.switch-input { position: absolute; opacity: 0; width: 0; height: 0; }
.switch-slider { position: relative; width: 2.75rem; height: 1.5rem; border-radius: 9999px; background-color: #e2e8f0; transition: background-color .2s ease; }
.dark .switch-slider { background-color: #334155; }
.switch-slider::before { content: ""; position: absolute; left: 0.125rem; top: 0.125rem; width: 1.25rem; height: 1.25rem; border-radius: 9999px; background-color: #ffffff; transition: transform .2s ease; }
.dark .switch-slider::before { background-color: #e2e8f0; }
.switch-input:checked + .switch-slider { background-color: #2563eb; }
.switch-input:checked + .switch-slider::before { transform: translateX(1.25rem); }
.switch-label { font-size: 0.875rem; color: #334155; }
.dark .switch-label { color: #e2e8f0; }

.tag { display: inline-flex; align-items: center; justify-content: center; gap: 0.375rem; border: 1px solid transparent; border-radius: 9999px; padding: 0.125rem 0.5rem; font-size: 0.75rem; line-height: 1rem; font-weight: 500; }
.tag-sm { padding: 0.0625rem 0.375rem; font-size: 0.6875rem; }
.tag-lg { padding: 0.25rem 0.75rem; font-size: 0.875rem; line-height: 1.25rem; }
.tag-primary { background-color: #2563eb; color: #ffffff; border-color: #2563eb; }
.tag-secondary { background-color: #ffffff; color: #334155; border-color: #e2e8f0; }
.dark .tag-secondary { background-color: #0b1220; color: #e2e8f0; border-color: #334155; }
.tag-outline { background-color: transparent; color: #2563eb; border-color: #60a5fa; }
.dark .tag-outline { color: #60a5fa; border-color: #60a5fa; }
.tag-success { background-color: #16a34a; color: #ffffff; border-color: #16a34a; }
.tag-danger { background-color: #dc2626; color: #ffffff; border-color: #dc2626; }
.tag-brand { background-color: var(--color-brand-500); color: #ffffff; border-color: var(--color-brand-500); }
.tag-close { display: inline-flex; align-items: center; justify-content: center; width: 1rem; height: 1rem; border: none; background: transparent; color: inherit; cursor: pointer; border-radius: 9999px; }
.tag-close:hover { filter: brightness(0.9); }

.alert { display: flex; align-items: flex-start; gap: 0.5rem; border-radius: 0.5rem; padding: 0.5rem 0.75rem; border-width: 1px; border-style: solid; }
.alert-icon { display: inline-flex; align-items: center; justify-content: center; }
.alert-close { margin-left: auto; display: inline-flex; align-items: center; justify-content: center; width: 1.5rem; height: 1.5rem; border: none; background: transparent; cursor: pointer; border-radius: 0.375rem; }
.alert-close:hover { filter: brightness(0.95); }
.alert-info { background-color: #eff6ff; border-color: #bfdbfe; color: #1e3a8a; }
.alert-success { background-color: #dcfce7; border-color: #86efac; color: #166534; }
.alert-warning { background-color: #fef3c7; border-color: #fcd34d; color: #92400e; }
.alert-danger { background-color: #fee2e2; border-color: #fca5a5; color: #7f1d1d; }
.dark .alert-info { background-color: #0b1220; border-color: #334155; color: #60a5fa; }
.dark .alert-success { background-color: #052e1a; border-color: #14532d; color: #22c55e; }
.dark .alert-warning { background-color: #2b1d06; border-color: #92400e; color: #f59e0b; }
.dark .alert-danger { background-color: #320b0b; border-color: #7f1d1d; color: #f87171; }

.toast { display: flex; align-items: center; gap: 0.5rem; border-radius: 0.5rem; padding: 0.5rem 0.75rem; border-width: 1px; border-style: solid; background-color: #ffffff; color: #334155; box-shadow: 0 10px 15px -3px rgba(2,6,23,0.1), 0 4px 6px -4px rgba(2,6,23,0.1); max-width: 24rem; }
.dark .toast { color: #e2e8f0; }
.toast-info { background-color: #eff6ff; border-color: #93c5fd; color: #1e3a8a; }
.toast-success { background-color: #dcfce7; border-color: #86efac; color: #166534; }
.toast-warning { background-color: #fef3c7; border-color: #fcd34d; color: #92400e; }
.toast-danger { background-color: #fee2e2; border-color: #fca5a5; color: #7f1d1d; }
.dark .toast-info { background-color: #0b1220; border-color: #60a5fa; color: #60a5fa; }
.dark .toast-success { background-color: #052e1a; border-color: #22c55e; color: #22c55e; }
.dark .toast-warning { background-color: #2b1d06; border-color: #f59e0b; color: #f59e0b; }
.dark .toast-danger { background-color: #320b0b; border-color: #f87171; color: #f87171; }
.toast-close { margin-left: auto; display: inline-flex; align-items: center; justify-content: center; width: 1.5rem; height: 1.5rem; border: none; background: transparent; cursor: pointer; border-radius: 0.375rem; }
.toast-action { margin-left: auto; display: inline-flex; align-items: center; justify-content: center; gap: 0.25rem; border-radius: 0.375rem; padding: 0.25rem 0.5rem; font-size: 0.75rem; line-height: 1rem; border: 1px solid #e2e8f0; }
.dark .toast-action { border-color: #334155; }

.snackbar { display: inline-flex; align-items: center; gap: 0.5rem; border-radius: 9999px; padding: 0.5rem 0.75rem; background-color: #0f172a; color: #ffffff; box-shadow: 0 10px 15px -3px rgba(2,6,23,0.2), 0 4px 6px -4px rgba(2,6,23,0.2); max-width: 32rem; }
.btn-success { background-color: #16a34a; color: #ffffff; border-color: #16a34a; }
.btn-success:hover { background-color: #15803d; border-color: #15803d; }
.snackbar-success { background-color: #166534; }
.snackbar-warning { background-color: #92400e; }
.snackbar-danger { background-color: #7f1d1d; }
.snackbar-action { margin-left: 0.5rem; border-radius: 0.375rem; padding: 0.25rem 0.5rem; font-size: 0.75rem; line-height: 1rem; background-color: rgba(255,255,255,0.1); color: #fff; }

@keyframes ui-spin { to { transform: rotate(360deg); } }
.spinner { width: 1.25rem; height: 1.25rem; border-radius: 9999px; border: 2px solid #e2e8f0; border-top-color: #2563eb; animation: ui-spin .6s linear infinite; }
.dark .spinner { border-color: #334155; border-top-color: #60a5fa; }
.spinner-sm { width: 1rem; height: 1rem; border-width: 2px; }
.spinner-lg { width: 2rem; height: 2rem; border-width: 3px; }
.spinner-brand { border-color: #bfdbfe; border-top-color: var(--color-brand-500); }
.spinner-white { border-color: rgba(255,255,255,0.4); border-top-color: #ffffff; }
.spinner-muted { border-color: #e2e8f0; border-top-color: #64748b; }
.spinner-overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background-color: rgba(2,6,23,0.06); }
.dark .spinner-overlay { background-color: rgba(2,6,23,0.4); }

.tabs-underline { display: flex; gap: 0.5rem; border-bottom: 1px solid #e2e8f0; }
.dark .tabs-underline { border-color: #334155; }
.tab { appearance: none; background: transparent; border: 0; padding: 0.5rem 0.75rem; font-size: 0.875rem; line-height: 1.25rem; color: #334155; border-bottom: 2px solid transparent; cursor: pointer; border-radius: 0.375rem 0.375rem 0 0; }
.dark .tab { color: #e2e8f0; }
.tab:hover { background-color: #f1f5f9; }
.dark .tab:hover { background-color: #0f172a; }
.tab[aria-disabled="true"] { opacity: 0.5; cursor: not-allowed; }
.tab.tab-active { color: var(--color-brand-500); border-bottom-color: var(--color-brand-500); }

.tabs-pill { display: flex; gap: 0.5rem; }
.tab-pill { appearance: none; background-color: #ffffff; color: #334155; border: 1px solid #e2e8f0; border-radius: 9999px; padding: 0.375rem 0.75rem; font-size: 0.875rem; line-height: 1.25rem; cursor: pointer; }
.tab-pill:hover { background-color: #f8fafc; }
.dark .tab-pill { background-color: #0b1220; color: #e2e8f0; border-color: #334155; }
.dark .tab-pill:hover { background-color: #0f172a; }
.tab-pill.tab-active { background-color: var(--color-brand-500); color: #ffffff; border-color: var(--color-brand-500); }

.tabs-vertical { display: flex; flex-direction: column; gap: 0.25rem; border-left: 1px solid #e2e8f0; padding-left: 0.25rem; }
.dark .tabs-vertical { border-color: #334155; }
.tab-vertical { appearance: none; background: transparent; border: 0; padding: 0.375rem 0.75rem; font-size: 0.875rem; line-height: 1.25rem; color: #334155; border-left: 2px solid transparent; cursor: pointer; border-radius: 0 0.375rem 0.375rem 0; }
.dark .tab-vertical { color: #e2e8f0; }
.tab-vertical:hover { background-color: #f1f5f9; }
.dark .tab-vertical:hover { background-color: #0f172a; }
.tab-vertical.tab-active { color: var(--color-brand-500); border-left-color: var(--color-brand-500); }
