:root {
    --ms-brand-red: var(--hms-color-brand-red, #E31E24);
    --ms-brand-red-dark: var(--hms-color-brand-red-dark, #B8141A);
    --ms-brand-red-soft: var(--hms-color-brand-red-soft, #FDE8E9);
    --ms-brand-orange: var(--hms-color-brand-orange, #F7941D);
    --ms-brand-orange-soft: var(--hms-color-brand-orange-soft, #FFF3E4);
    --ms-brand-gray: var(--hms-color-brand-gray, #4A4A4A);
    --ms-green: var(--hms-color-primary, #E53935);
    --ms-green-dark: var(--hms-primary-hover, #B42318);
    --ms-green-soft: var(--hms-color-brand-red-100, #F9D6D5);
    --ms-yellow: var(--ms-brand-orange);
    --ms-ink: var(--hms-text-primary, #262626);
    --ms-muted: var(--hms-text-muted, #64748b);
    --ms-border: var(--hms-border-color, #e5e7eb);
    --ms-bg: var(--hms-bg-page, #f8fafc);
    --ms-surface: var(--hms-bg-surface);
    --ms-radius-card: var(--hms-radius-lg, .5rem);
    --ms-radius-control: var(--hms-radius-md, .5rem);
    --ms-shadow-soft: var(--hms-shadow-md, 0 4px 12px rgba(var(--hms-shadow-color-rgb, 74, 74, 74), .08));
    --ms-bg-light: var(--hms-bg-surface-muted, #F2F2F2);
}

body {
    background: var(--ms-bg);
    color: var(--ms-ink);
    font-family: var(--hms-font-family-base);
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6, .navbar-brand, .sidebar-link, .fw-bold, .kpi-value {
    font-family: var(--hms-font-family-heading);
}

.display-1,
.display-4,
.display-5 {
    font-weight: 800;
    letter-spacing: 0;
}

.display-1 {
    font-size: var(--hms-font-size-display-xl, 4rem);
}

.display-4 {
    font-size: var(--hms-font-size-display-lg, 2.75rem);
    line-height: var(--hms-line-height-display-tight, 1.12);
}

.display-5 {
    font-size: var(--hms-font-size-display-sm, 2.35rem);
    line-height: var(--hms-line-height-display, 1.18);
}

@media (max-width: 575.98px) {
    .display-1 {
        font-size: var(--hms-font-size-display-xl-compact, 3.2rem);
    }

    .display-4 {
        font-size: var(--hms-font-size-display-lg-compact, 2.2rem);
    }

    .display-5 {
        font-size: var(--hms-font-size-display-sm-compact, 2rem);
    }
}

::selection {
    background: rgba(var(--hms-color-brand-orange-rgb, 247, 148, 29), .24);
    color: var(--ms-ink);
}

:focus-visible {
    outline: 0;
    box-shadow: var(--hms-focus, 0 0 0 .22rem rgba(var(--hms-color-brand-red-rgb, 227, 30, 36), .22));
}

.form-control:focus,
.form-select:focus,
.btn:focus-visible,
.page-link:focus,
.form-check-input:focus {
    border-color: var(--ms-green);
    box-shadow: var(--hms-focus, 0 0 0 .22rem rgba(var(--hms-color-brand-red-rgb, 227, 30, 36), .22));
}

.card,
.modal-content,
.dropdown-menu,
.rounded-3,
.rounded-4 {
    border-radius: var(--ms-radius-card) !important;
}

.rounded-5 {
    border-radius: var(--hms-radius-lg, .5rem) !important;
}

.shadow-sm {
    box-shadow: var(--hms-shadow-sm, 0 1px 2px rgba(var(--hms-shadow-color-rgb, 74, 74, 74), .06)) !important;
}

.shadow {
    box-shadow: var(--hms-shadow-md, 0 4px 12px rgba(var(--hms-shadow-color-rgb, 74, 74, 74), .08)) !important;
}

.shadow-lg {
    box-shadow: var(--hms-shadow-lg, 0 10px 25px rgba(var(--hms-shadow-color-rgb, 74, 74, 74), .12)) !important;
}

.public-navbar {
    backdrop-filter: saturate(140%) blur(10px);
}

.public-navbar .navbar-brand img {
    height: var(--hms-logo-height-public, 42px);
    max-width: min(var(--hms-logo-width-public-max, 220px), 52vw);
    object-fit: contain;
}

.public-navbar .navbar-collapse {
    padding-top: var(--hms-space-4, 1rem);
}
.public-navbar .navbar-nav {
    align-items: center;
    text-align: center;
}
.public-navbar .navbar-nav .btn.rounded-pill {
    margin-block: 0.45rem;
}
.public-navbar .public-search {
    margin-inline: auto;
    justify-content: center;
    margin-top: 1.25rem !important;
}
.public-navbar .public-language-switcher {
    border-left: 0 !important;
    padding-left: 0 !important;
    margin-top: 0.75rem !important;
    justify-content: center;
}

.public-navbar .nav-link {
    color: var(--ms-ink);
    font-weight: 700;
    padding-block: .65rem;
}

.public-navbar .nav-link:hover,
.public-navbar .nav-link:focus-visible {
    color: var(--ms-green);
}

.public-navbar .public-search {
    width: min(100%, 280px);
}

/* CTA persistente na barra (sempre visível, mesmo com menu recolhido) */
.public-navbar .navbar-actions {
    margin-left: auto;
}
.public-navbar .navbar-persistent-cta {
    white-space: nowrap;
}
@media (max-width: 575.98px) {
    .public-navbar .navbar-persistent-cta {
        padding-inline: 0.85rem;
        font-size: var(--hms-font-size-sm, 0.875rem);
    }
    .public-navbar .navbar-brand img {
        max-width: 40vw;
    }
}

.public-user-avatar {
    width: var(--hms-size-avatar-sm, 32px);
    height: var(--hms-size-avatar-sm, 32px);
    border-radius: 50%;
    font-size: var(--hms-font-size-utility-lg, .85rem);
}

.public-language-switcher {
    font-size: var(--hms-font-size-helper, .9rem);
}

.public-language-switcher .lang-btn {
    background: transparent;
    border: 0;
    color: var(--ms-muted);
}

.public-language-switcher .lang-btn.active,
.public-language-switcher .lang-btn:hover,
.public-language-switcher .lang-btn:focus-visible {
    color: var(--ms-green) !important;
}

.hero-section {
    background: linear-gradient(135deg, rgba(var(--hms-bg-surface-rgb, 255, 255, 255), .98) 0%, rgba(var(--hms-color-brand-red-soft-rgb, 253, 232, 233), .7) 62%, rgba(var(--hms-color-brand-orange-soft-rgb, 255, 243, 228), .78) 100%);
    border-bottom: 1px solid rgba(var(--hms-color-brand-red-rgb, 227, 30, 36), .10);
}

.hero-section .lead {
    max-width: var(--hms-content-width-copy, 66ch);
    line-height: var(--hms-line-height-relaxed, 1.75);
}

.public-hero {
    background: linear-gradient(135deg, rgba(var(--hms-bg-surface-rgb, 255, 255, 255), .98) 0%, var(--ms-bg) 54%, rgba(var(--hms-color-brand-red-soft-rgb, 253, 232, 233), .62) 100%) !important;
    border-bottom: 1px solid rgba(var(--hms-color-brand-red-rgb, 227, 30, 36), .1);
}

.public-hero.bg-primary {
    background: linear-gradient(135deg, var(--ms-green-dark) 0%, var(--ms-green) 58%, var(--ms-yellow) 100%) !important;
    border-bottom: 0;
}

.public-hero .display-5 {
    color: var(--ms-green-dark);
    font-size: var(--hms-font-size-display-md, 2.4rem);
    letter-spacing: 0;
    line-height: var(--hms-line-height-display, 1.18);
}

.public-hero.bg-primary .display-5 {
    color: var(--hms-text-inverse);
}

.public-hero .lead {
    line-height: var(--hms-line-height-relaxed, 1.75);
    margin-inline: auto;
    max-width: var(--hms-content-width-copy, 66ch);
}

@media (max-width: 575.98px) {
    .public-hero .display-5 {
        font-size: var(--hms-font-size-display-sm-compact, 2rem);
    }
}

.hero-badge {
    display: inline-flex;
    gap: var(--hms-space-2, .5rem);
    align-items: center;
    border-radius: 999px;
    padding: .45rem .9rem;
    background: var(--hms-bg-surface);
    color: var(--ms-green-dark);
    border: 1px solid rgba(var(--hms-color-brand-red-rgb, 227, 30, 36), .14);
    font-weight: 700;
}

.section-eyebrow {
    color: var(--ms-green);
    display: inline-flex;
    font-family: var(--hms-font-family-heading);
    font-size: var(--hms-font-size-label-md, .82rem);
    font-weight: 800;
    letter-spacing: 0;
    text-transform: uppercase;
}

/* Incremento 64 — Hierarquia tipográfica por peso e cor de texto */
.text-primary-strong {
    color: var(--hms-primary);
    font-weight: var(--hms-font-weight-bold, 700);
}

.text-secondary-soft {
    color: var(--hms-text-secondary);
    font-weight: var(--hms-font-weight-medium, 500);
}

.text-muted-compact {
    color: var(--hms-text-muted);
    font-size: var(--hms-font-size-sm, .875rem);
}

.public-hero-card {
    background: rgba(var(--hms-bg-surface-rgb, 255, 255, 255), .92);
}

.hero-kpi-logo {
    height: var(--hms-size-media-sm, 48px);
    object-fit: contain;
}

.hero-metric {
    background: var(--hms-surface-muted, #f1f5f9);
    border: 1px solid rgba(var(--hms-color-brand-red-rgb, 227, 30, 36), .08);
    border-radius: var(--ms-radius-card);
    min-height: var(--hms-hero-metric-min-height, 104px);
}

.card-soft {
    border: 1px solid var(--ms-border);
    box-shadow: var(--ms-shadow-soft);
    border-radius: var(--ms-radius-card);
}

.ministry-icon {
    width: var(--hms-size-media-sm, 48px);
    height: var(--hms-size-media-sm, 48px);
    display: inline-grid;
    place-items: center;
    border-radius: var(--ms-radius-card);
    background: var(--ms-green-soft);
    color: var(--ms-green-dark);
    font-weight: 800;
}

.app-shell {
    min-height: 100vh;
    display: flex;
}

.app-sidebar {
    position: fixed;
    inset: 0 auto 0 0;
    width: var(--hms-sidebar-width);
    z-index: var(--hms-z-sidebar, 1030);
    overflow-y: auto;
    transition: transform var(--hms-transition-base);
    background: linear-gradient(180deg, var(--ms-green) 0%, var(--ms-green-dark) 100%) !important;
    border-right: 1px solid rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .12) !important;
    color: var(--hms-text-inverse);
}

.app-main {
    margin-left: var(--hms-sidebar-width);
    flex: 1;
    min-width: 0;
    background: var(--ms-bg);
    transition: margin-left var(--hms-transition-base);
}

@media (min-width: 992px) {
    body.sidebar-collapsed .app-sidebar {
        transform: translateX(-100%);
    }
    body.sidebar-collapsed .app-main {
        margin-left: 0;
    }
}

.app-content {
    padding: var(--hms-space-6, 1.5rem);
}

.app-topbar {
    min-height: var(--hms-topbar-min-height, 76px);
    display: flex;
    align-items: center;
    gap: var(--hms-space-4, 1rem);
    padding: var(--hms-space-4, 1rem) var(--hms-space-6, 1.5rem);
    position: sticky;
    top: 0;
    z-index: var(--hms-z-topbar, 1020);
    background-color: var(--hms-surface) !important;
    border-bottom: 1px solid var(--hms-border) !important;
    color: var(--hms-text) !important;
}

.topbar-heading {
    min-width: 0;
}

.topbar-title {
    color: var(--ms-ink);
    font-family: var(--hms-font-family-heading);
    font-weight: 800;
    line-height: var(--hms-line-height-compact, 1.25);
}

.topbar-subtitle {
    color: var(--ms-muted);
    font-size: var(--hms-font-size-subtitle, .92rem);
}

.topbar-actions {
    align-items: center;
    display: flex;
    gap: var(--hms-space-topbar-gap, .85rem);
    margin-left: auto;
}

.topbar-theme-select {
    width: var(--hms-topbar-theme-select-width, 112px);
}

.topbar-icon-link {
    align-items: center;
    color: var(--ms-muted);
    display: inline-flex;
    justify-content: center;
    min-height: var(--hms-size-control-sm, 40px);
    min-width: var(--hms-size-control-sm, 40px);
    padding: var(--hms-space-2, .5rem);
    position: relative;
    text-decoration: none;
}

.topbar-icon-link:hover,
.topbar-icon-link:focus-visible {
    color: var(--ms-green);
}

.topbar-notification-badge {
    font-size: var(--hms-font-size-badge, .65rem);
    inset: .1rem -.15rem auto auto;
    padding: .25em .42em;
    position: absolute;
}

.topbar-profile {
    align-items: center;
    color: var(--ms-ink);
    display: inline-flex;
    gap: var(--hms-space-profile-gap, .65rem);
    text-decoration: none;
}

.topbar-avatar {
    align-items: center;
    background: var(--ms-green);
    border-radius: 50%;
    color: var(--hms-text-inverse);
    display: inline-flex;
    font-weight: 800;
    height: var(--hms-topbar-avatar-size, 38px);
    justify-content: center;
    width: var(--hms-topbar-avatar-size, 38px);
}

.topbar-logout {
    border-radius: var(--ms-radius-control);
    min-height: var(--hms-topbar-logout-min-height, 36px);
}

.hamburger-button {
    align-items: center;
    display: inline-flex;
    justify-content: center;
    min-height: var(--hms-size-touch-target, 44px);
    min-width: var(--hms-size-touch-target, 44px);
    padding: .55rem;
}

.hamburger-lines {
    display: inline-grid;
    gap: var(--hms-hamburger-line-gap, 4px);
    width: var(--hms-hamburger-line-width, 20px);
}

.hamburger-lines span {
    background: currentColor;
    border-radius: 999px;
    display: block;
    height: var(--hms-hamburger-line-height, 2px);
    width: 100%;
}

.topbar-menu-button {
    flex: 0 0 auto;
}

.sidebar-brand {
    border-bottom: 1px solid rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .18);
    padding: var(--hms-space-6, 1.5rem);
    text-align: center;
}

.sidebar-logo {
    max-height: var(--hms-size-media-sm, 48px);
    object-fit: contain;
}

.sidebar-title {
    color: rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .84);
    font-size: .86rem;
    font-weight: 700;
    margin-top: .55rem;
}

.sidebar-nav {
    padding: var(--hms-space-4, 1rem);
}

.sidebar-link {
    display: flex;
    align-items: center;
    gap: var(--hms-space-sidebar-link-gap, .75rem);
    color: rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .84) !important;
    text-decoration: none;
    border-radius: var(--ms-radius-card);
    padding: var(--hms-space-sidebar-link-block, .85rem) var(--hms-space-4, 1rem);
    margin-bottom: .25rem;
    font-weight: 600;
    transition: background-color var(--hms-transition-fast), color var(--hms-transition-fast), padding-left var(--hms-transition-fast);
}

.sidebar-link:hover,
.sidebar-link:focus-visible {
    color: var(--hms-text-inverse) !important;
    background-color: rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .10) !important;
}

.sidebar-link.active {
    color: var(--hms-text-inverse) !important;
    background-color: rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .16) !important;
    border-left: 4px solid var(--hms-color-brand-orange);
    padding-left: calc(1rem - 4px);
}

.kpi-card {
    background-color: var(--hms-surface) !important;
    border: 1px solid var(--hms-border) !important;
    border-radius: var(--ms-radius-card) !important;
    box-shadow: var(--hms-shadow) !important;
    transition: border-color var(--hms-transition-fast), box-shadow var(--hms-transition-fast), transform var(--hms-transition-fast);
}

.kpi-card:hover {
    border-color: rgba(var(--hms-color-brand-red-rgb, 227, 30, 36), .22) !important;
    box-shadow: var(--hms-shadow-md) !important;
}

.kpi-value {
    font-size: var(--hms-font-size-metric-lg, 2.2rem);
    font-weight: var(--hms-font-weight-bold, 800);
    color: var(--hms-primary) !important;
}

@media (max-width: 575.98px) {
    .kpi-value {
        font-size: var(--hms-font-size-metric-lg-compact, 1.85rem);
    }
}

.kpi-card-label {
    color: var(--hms-text-secondary);
    font-size: var(--hms-font-size-label-sm, .78rem);
    font-weight: var(--hms-font-weight-medium, 500);
    letter-spacing: 0;
    text-transform: uppercase;
}

.kpi-card-hint {
    color: var(--ms-muted);
    font-size: var(--hms-font-size-helper, .9rem);
}

.kpi-card-icon {
    color: var(--ms-green);
    font-size: var(--hms-icon-size-xl, 1.9rem);
}

.table-card {
    border: 1px solid var(--hms-border) !important;
    border-radius: var(--ms-radius-card) !important;
    overflow: hidden;
    background: var(--hms-surface) !important;
    box-shadow: var(--hms-shadow) !important;
}

.table-card-header {
    border-bottom: 1px solid var(--hms-border);
    padding: var(--hms-space-table-card-block, 1.15rem) var(--hms-space-table-card-inline, 1.35rem);
}

.table-card-title {
    font-size: var(--hms-font-size-section-title, 1.05rem);
    font-weight: 800;
    margin: 0;
}

.table-card-operational .table > :not(caption) > * > * {
    padding: var(--hms-space-table-cell-block, .85rem) var(--hms-space-4, 1rem);
}

.dashboard-progress {
    height: var(--hms-progress-height-sm, 8px);
}

.dashboard-hero {
    background: linear-gradient(135deg, var(--ms-green) 0%, var(--ms-yellow) 100%);
    border: 0;
    border-radius: var(--ms-radius-card);
    box-shadow: var(--hms-shadow-md);
    color: var(--hms-text-inverse);
    margin-bottom: var(--hms-space-6, 1.5rem);
    overflow: hidden;
}

.dashboard-hero-body {
    align-items: center;
    display: flex;
    justify-content: space-between;
    gap: var(--hms-space-5, 1.25rem);
    padding: clamp(1.5rem, 3vw, 3rem);
    position: relative;
}

.dashboard-hero-content {
    max-width: var(--hms-content-width-hero, 70ch);
    position: relative;
    z-index: var(--hms-z-content, 2);
}

.dashboard-hero-seal {
    flex: 0 0 var(--hms-dashboard-seal-width, 110px);
    max-width: var(--hms-dashboard-seal-width, 110px);
    position: relative;
    z-index: var(--hms-z-base, 1);
}

.dashboard-hero-image {
    filter: drop-shadow(0 8px 16px rgba(var(--hms-shadow-color-rgb, 74, 74, 74), .25));
}

.dashboard-avatar-container {
    background: rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .2);
    height: var(--hms-dashboard-avatar-size, 90px);
    width: var(--hms-dashboard-avatar-size, 90px);
}

.dashboard-avatar-initials {
    background: rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .25);
    color: var(--hms-text-inverse, #fff);
    font-size: var(--hms-dashboard-avatar-font-size, 2.5rem);
    font-weight: 800;
    text-shadow: var(--hms-dashboard-avatar-shadow, 0 2px 4px rgba(0, 0, 0, .15));
}

.dashboard-info-card {
    background: var(--hms-surface);
    border: 1px solid var(--hms-border);
    border-radius: var(--ms-radius-card);
    box-shadow: var(--hms-shadow);
}

.crud-page-header {
    background: var(--hms-surface);
    border: 1px solid var(--hms-border);
    border-radius: var(--ms-radius-card);
    box-shadow: var(--hms-shadow-sm);
    padding: var(--hms-space-4, 1rem);
}

.crud-title {
    color: var(--ms-ink);
    font-family: var(--hms-font-family-heading);
    font-size: var(--hms-font-size-crud-title, 1.22rem);
    font-weight: 800;
    margin-bottom: .25rem;
}

.crud-subtitle {
    color: var(--ms-muted);
    margin-bottom: 0;
}

.crud-actions {
    display: flex;
    gap: var(--hms-space-2, .5rem);
    justify-content: flex-end;
}

.crud-search {
    min-width: min(100%, 220px);
}

.crud-viewbar {
    align-items: center;
    display: flex;
    justify-content: space-between;
    margin-bottom: 1rem;
}

.crud-viewbar .btn-group {
    border-radius: var(--ms-radius-control);
    overflow: hidden;
}

.crud-modal-content {
    border: 0;
    border-radius: var(--ms-radius-card);
}

.crud-modal-header,
.crud-modal-footer {
    background: var(--hms-surface-muted);
    border-color: var(--hms-border);
}

.crud-modal-body {
    background: var(--hms-surface);
}

.crud-field .form-label {
    color: var(--ms-ink);
    font-weight: 700;
}

.crud-image-preview-img {
    max-height: var(--hms-crud-card-image-height, 120px);
    max-width: 100%;
    object-fit: contain;
}

.crud-upload-progress {
    height: var(--hms-progress-height-xs, 5px);
}

.crud-card-image-header {
    height: var(--hms-crud-card-image-height, 120px);
    overflow: hidden;
}

.crud-card-image-contain {
    max-height: 100%;
    object-fit: contain;
}

.crud-card-image-cover {
    height: 100%;
    object-fit: cover;
    width: 100%;
}

.crud-card-avatar {
    height: var(--hms-crud-card-avatar-size, 90px);
    object-fit: cover;
    width: var(--hms-crud-card-avatar-size, 90px);
}

.crud-row-actions,
.crud-card-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--hms-space-action-gap, .4rem);
    justify-content: flex-end;
}

.crud-result-card {
    background: var(--hms-surface);
    border: 1px solid var(--hms-border);
    border-radius: var(--ms-radius-card);
    box-shadow: var(--hms-shadow-sm);
}

.crud-result-card .card-body {
    padding: var(--hms-space-5, 1.25rem);
}

.crud-card-field {
    min-width: 0;
}

.crud-card-label {
    color: var(--ms-muted);
    display: block;
    font-size: var(--hms-font-size-label-xs, .72rem);
    font-weight: 800;
    letter-spacing: 0;
    margin-bottom: .25rem;
    text-transform: uppercase;
}

.crud-card-actions .btn {
    flex: 1 1 0;
}

.crud-loading-state {
    align-items: center;
    color: var(--ms-muted);
    display: flex;
    justify-content: center;
    min-height: var(--hms-crud-loading-min-height, 96px);
}

.crud-state {
    margin: 0;
}

.crud-state-icon {
    color: var(--ms-green);
    display: block;
    font-size: var(--hms-icon-size-lg, 1.7rem);
    margin-bottom: var(--hms-space-profile-gap, .65rem);
}

.crud-state-error {
    border-color: rgba(var(--hms-color-danger-rgb, 184, 20, 26), .25) !important;
}

.crud-state-error .crud-state-icon,
.crud-state-error .empty-state-title {
    color: var(--hms-color-danger, var(--ms-brand-red-dark));
}

.floating-alert {
    bottom: 1.25rem;
    max-width: min(350px, calc(100vw - 2rem));
    position: fixed;
    right: 1.25rem;
    z-index: var(--hms-z-alert, 9999);
}

.breadcrumb.app-breadcrumb {
    align-items: center;
    background-color: var(--hms-surface) !important;
    border: 1px solid var(--hms-border) !important;
    border-radius: var(--ms-radius-card) !important;
    box-shadow: var(--hms-shadow-sm) !important;
    display: flex;
    font-family: var(--hms-font-family-base);
    gap: .2rem;
    margin: 0;
    padding: .7rem 1rem !important;
}

.breadcrumb.app-breadcrumb .breadcrumb-item.active {
    color: var(--ms-ink);
    font-weight: 800;
}

.breadcrumb.app-breadcrumb .app-breadcrumb-link {
    color: var(--ms-green);
    font-weight: 700;
    text-decoration: none;
}

.breadcrumb.app-breadcrumb .app-breadcrumb-link:hover,
.breadcrumb.app-breadcrumb .app-breadcrumb-link:focus-visible {
    color: var(--ms-green-dark);
    text-decoration: underline;
}

@media (max-width: 991.98px) {
    .app-content {
        padding: var(--hms-space-4, 1rem);
    }

    .app-topbar {
        padding-left: var(--hms-space-4, 1rem);
        padding-right: var(--hms-space-4, 1rem);
    }

    .topbar-actions {
        gap: var(--hms-space-2, .5rem);
    }

    .topbar-subtitle,
    .theme-switcher {
        display: none !important;
    }
}

@media (max-width: 767.98px) {
    .app-topbar {
        align-items: flex-start;
        flex-wrap: wrap;
        min-height: auto;
        padding: .85rem var(--hms-space-4, 1rem);
    }

    .topbar-heading {
        flex: 1 1 calc(100% - 56px);
    }

    .topbar-actions {
        flex: 1 1 100%;
        justify-content: space-between;
        margin-left: 0;
    }

    .topbar-profile {
        min-width: 0;
    }

    .crud-actions {
        flex-wrap: wrap;
        justify-content: stretch;
        gap: var(--hms-space-3, 0.75rem);
    }

    .crud-actions .btn,
    .crud-actions .crud-search {
        flex: 1 1 100%;
    }

    .dashboard-hero-body {
        align-items: flex-start;
    }

    .floating-alert {
        bottom: 1rem;
        left: 1rem;
        right: 1rem;
        width: auto;
    }
}

.status-pill {
    display: inline-flex;
    align-items: center;
    border-radius: 999px;
    padding: .25rem .65rem;
    font-size: var(--hms-font-size-label-sm, .78rem);
    font-weight: 700;
    background: var(--hms-status-neutral-bg);
    color: var(--hms-status-neutral-text);
}

.status-pill.pendente,
.status-pill.rascunho,
.status-pill.triagem,
.status-pill.media,
.status-pill.em-atendimento,
.status-pill.aguardando-usuario {
    background: var(--hms-status-warning-bg);
    color: var(--hms-status-warning-text);
}

.status-pill.cancelado,
.status-pill.inativo,
.status-pill.reprovado,
.status-pill.alta,
.status-pill.urgente {
    background: var(--hms-status-danger-bg);
    color: var(--hms-status-danger-text);
}

.status-pill.concluido,
.status-pill.realizado,
.status-pill.aprovado,
.status-pill.recebido,
.status-pill.ativo,
.status-pill.publicada,
.status-pill.respondido {
    background: var(--hms-status-success-bg);
    color: var(--hms-status-success-text);
}

.status-pill.aberto,
.status-pill.baixa,
.status-pill.em-andamento,
.status-pill.reaberto {
    background: var(--hms-status-info-bg);
    color: var(--hms-status-info-text);
}

.form-control:focus,
.form-select:focus {
    border-color: rgba(var(--hms-color-brand-red-rgb, 227, 30, 36), .5);
    box-shadow: var(--hms-focus, 0 0 0 .2rem rgba(var(--hms-color-brand-red-rgb, 227, 30, 36), .12));
}

.btn-primary {
    background: var(--hms-primary) !important;
    border-color: var(--hms-primary) !important;
    color: var(--hms-text-inverse) !important;
    transition: background-color var(--hms-transition-fast), border-color var(--hms-transition-fast), box-shadow var(--hms-transition-fast), transform var(--hms-transition-fast) !important;
}

.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active {
    background: var(--hms-primary-hover) !important;
    border-color: var(--hms-primary-hover) !important;
    color: var(--hms-text-inverse) !important;
}

.btn-success {
    background: var(--hms-color-success) !important;
    border-color: var(--hms-color-success) !important;
    color: var(--hms-text-inverse) !important;
    transition: background-color var(--hms-transition-fast), border-color var(--hms-transition-fast), box-shadow var(--hms-transition-fast), transform var(--hms-transition-fast) !important;
}

.btn-success:hover,
.btn-success:focus,
.btn-success:active {
    background: var(--hms-color-success-dark) !important;
    border-color: var(--hms-color-success-dark) !important;
    color: var(--hms-text-inverse) !important;
}

/* Incremento 70 — Estado disabled institucional */
.btn-primary:disabled,
.btn-primary.disabled {
    background: var(--hms-primary) !important;
    border-color: var(--hms-primary) !important;
    color: var(--hms-text-inverse) !important;
    opacity: 0.55;
    cursor: not-allowed;
    transform: none !important;
    box-shadow: none !important;
}

.btn-success:disabled,
.btn-success.disabled {
    background: var(--hms-color-success) !important;
    border-color: var(--hms-color-success) !important;
    color: var(--hms-text-inverse) !important;
    opacity: 0.55;
    cursor: not-allowed;
    transform: none !important;
    box-shadow: none !important;
}

.btn-outline-primary:disabled,
.btn-outline-primary.disabled {
    color: var(--hms-primary) !important;
    border-color: var(--hms-primary) !important;
    opacity: 0.55;
    cursor: not-allowed;
    transform: none !important;
}

.btn-outline-success:disabled,
.btn-outline-success.disabled {
    color: var(--hms-color-success) !important;
    border-color: var(--hms-color-success) !important;
    opacity: 0.55;
    cursor: not-allowed;
    transform: none !important;
}

.btn-outline-primary {
    color: var(--hms-primary) !important;
    border-color: var(--hms-primary) !important;
}

.btn-outline-success {
    color: var(--hms-color-success) !important;
    border-color: var(--hms-color-success) !important;
}

.btn-outline-primary:hover,
.btn-outline-primary:focus,
.btn-outline-primary:active {
    background-color: var(--hms-primary) !important;
    border-color: var(--hms-primary) !important;
    color: var(--hms-text-inverse) !important;
}

.btn-outline-success:hover,
.btn-outline-success:focus,
.btn-outline-success:active {
    background-color: var(--hms-color-success) !important;
    border-color: var(--hms-color-success) !important;
    color: var(--hms-text-inverse) !important;
}

.btn-secondary,
.btn-info {
    background-color: var(--hms-color-secondary, #475569) !important;
    border-color: var(--hms-color-secondary, #475569) !important;
    color: var(--hms-text-inverse) !important;
}

.btn-secondary:hover,
.btn-secondary:focus,
.btn-secondary:active,
.btn-info:hover,
.btn-info:focus,
.btn-info:active {
    background-color: var(--hms-color-gray-700, #334155) !important;
    border-color: var(--hms-color-gray-700, #334155) !important;
    color: var(--hms-text-inverse) !important;
}

.btn-warning {
    background-color: var(--ms-yellow) !important;
    border-color: var(--ms-yellow) !important;
    color: var(--hms-text-inverse) !important;
}

.btn-warning:hover,
.btn-warning:focus,
.btn-warning:active {
    background-color: var(--hms-color-accent-dark, #C45F08) !important;
    border-color: var(--hms-color-accent-dark, #C45F08) !important;
    color: var(--hms-text-inverse) !important;
}

.btn-danger {
    background-color: var(--hms-color-danger, var(--ms-brand-red-dark)) !important;
    border-color: var(--hms-color-danger, var(--ms-brand-red-dark)) !important;
    color: var(--hms-text-inverse) !important;
}

.btn-danger:hover,
.btn-danger:focus,
.btn-danger:active {
    background-color: var(--hms-color-brand-red-900, #6D1711) !important;
    border-color: var(--hms-color-brand-red-900, #6D1711) !important;
    color: var(--hms-text-inverse) !important;
}

.btn-outline-secondary,
.btn-outline-info {
    color: var(--hms-color-secondary, #475569) !important;
    border-color: var(--hms-color-secondary, #475569) !important;
}

.btn-outline-secondary:hover,
.btn-outline-secondary:focus,
.btn-outline-secondary:active,
.btn-outline-info:hover,
.btn-outline-info:focus,
.btn-outline-info:active {
    background-color: var(--hms-color-secondary, #475569) !important;
    border-color: var(--hms-color-secondary, #475569) !important;
    color: var(--hms-text-inverse) !important;
}

.btn-outline-warning {
    color: var(--hms-color-warning, #b45309) !important;
    border-color: var(--ms-yellow) !important;
}

.btn-outline-warning:hover,
.btn-outline-warning:focus,
.btn-outline-warning:active {
    background-color: var(--ms-yellow) !important;
    border-color: var(--ms-yellow) !important;
    color: var(--hms-text-inverse) !important;
}

.btn-outline-danger {
    color: var(--hms-color-danger, var(--ms-brand-red-dark)) !important;
    border-color: var(--hms-color-danger, var(--ms-brand-red-dark)) !important;
}

.btn-outline-danger:hover,
.btn-outline-danger:focus,
.btn-outline-danger:active {
    background-color: var(--hms-color-danger, var(--ms-brand-red-dark)) !important;
    border-color: var(--hms-color-danger, var(--ms-brand-red-dark)) !important;
    color: var(--hms-text-inverse) !important;
}

.collapse:not(.show) {
    display: none;
}

.collapse.show {
    display: block;
}

tr.collapse.show {
    display: table-row;
}

tbody.collapse.show {
    display: table-row-group;
}

.collapsing {
    height: 0;
    overflow: hidden;
    transition: height var(--hms-transition-base);
}

.text-primary {
    color: var(--hms-primary) !important;
}

.text-success {
    color: var(--hms-color-success) !important;
}

.text-secondary {
    color: var(--hms-text-secondary, #475569) !important;
}

.text-info {
    color: var(--hms-color-info, #0f766e) !important;
}

.text-warning {
    color: var(--hms-color-warning, #b45309) !important;
}

.text-danger {
    color: var(--hms-color-danger, var(--ms-brand-red-dark)) !important;
}

.text-primary-emphasis {
    color: var(--hms-primary-hover) !important;
}

.text-success-emphasis {
    color: var(--hms-color-success-dark) !important;
}

.text-secondary-emphasis {
    color: var(--hms-color-gray-700, #334155) !important;
}

.text-info-emphasis {
    color: var(--hms-color-info, #0f766e) !important;
}

.text-warning-emphasis {
    color: var(--hms-color-warning, #b45309) !important;
}

.text-danger-emphasis {
    color: var(--hms-color-danger, var(--ms-brand-red-dark)) !important;
}

.bg-primary {
    background-color: var(--hms-primary) !important;
}

.bg-success {
    background-color: var(--hms-color-success) !important;
}

.bg-secondary {
    background-color: var(--hms-color-secondary, #475569) !important;
}

.bg-info {
    background-color: var(--hms-color-info, #0f766e) !important;
}

.bg-warning {
    background-color: var(--ms-yellow) !important;
}

.bg-danger {
    background-color: var(--hms-color-danger, var(--ms-brand-red-dark)) !important;
}

.bg-primary-subtle {
    background-color: rgba(var(--hms-primary-rgb), 0.1) !important;
}

.bg-success-subtle {
    background-color: var(--hms-color-success-bg) !important;
}

.bg-secondary-subtle {
    background-color: var(--hms-color-secondary-bg, #f1f5f9) !important;
}

.bg-info-subtle {
    background-color: var(--hms-color-info-bg, #ccfbf1) !important;
}

.bg-warning-subtle {
    background-color: var(--hms-color-warning-bg, #fef3c7) !important;
}

.bg-danger-subtle {
    background-color: var(--hms-color-danger-bg, var(--ms-brand-red-soft)) !important;
}

.border-primary {
    border-color: var(--hms-primary) !important;
}

.border-success {
    border-color: var(--hms-color-success) !important;
}

.border-secondary {
    border-color: var(--hms-color-secondary, #475569) !important;
}

.border-info {
    border-color: var(--hms-color-info, #0f766e) !important;
}

.border-warning {
    border-color: var(--ms-yellow) !important;
}

.border-danger {
    border-color: var(--hms-color-danger, var(--ms-brand-red-dark)) !important;
}

.border-primary-subtle {
    border-color: rgba(var(--hms-primary-rgb), .2) !important;
}

.border-success-subtle {
    border-color: rgba(var(--hms-color-success-rgb), .2) !important;
}

.border-secondary-subtle {
    border-color: var(--hms-border, #e5e7eb) !important;
}

.border-info-subtle {
    border-color: rgba(var(--hms-color-info-rgb, 15, 118, 110), .28) !important;
}

.border-warning-subtle {
    border-color: rgba(var(--hms-color-warning-rgb, 180, 83, 9), .32) !important;
}

.border-danger-subtle {
    border-color: rgba(var(--hms-color-danger-rgb, 184, 20, 26), .28) !important;
}

.auth-panel {
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding-block: var(--hms-space-8, 2rem);
    background:
        linear-gradient(135deg, rgba(var(--hms-bg-surface-rgb, 255, 255, 255), .98) 0%, var(--ms-bg) 48%, rgba(var(--hms-color-brand-red-soft-rgb, 253, 232, 233), .72) 100%);
}

.auth-card {
    width: min(94vw, 440px);
    border: 0;
    border-radius: var(--ms-radius-card);
    box-shadow: var(--hms-shadow-lg, 0 10px 25px rgba(var(--hms-shadow-color-rgb, 74, 74, 74), .12));
}

.auth-card-wide {
    width: min(96vw, 680px);
}

.auth-intro {
    text-align: center;
    margin-bottom: var(--hms-space-5, 1.25rem);
}

.auth-logo {
    max-height: var(--hms-logo-height-auth, 100px);
    object-fit: contain;
}

.auth-title {
    color: var(--ms-ink);
    letter-spacing: 0;
}

.auth-subtitle {
    color: var(--ms-muted);
    line-height: var(--hms-line-height-relaxed, 1.65);
}

.auth-maintenance-alert {
    max-width: var(--hms-content-width-auth, 500px);
}

.auth-links {
    color: var(--ms-muted);
}

.auth-links a {
    font-weight: 700;
}

.legal-consent-card {
    border: 0;
    box-shadow: var(--ms-shadow-soft);
}

.legal-update-alert {
    border: 1px solid rgba(var(--hms-color-brand-orange-rgb, 247, 148, 29), .22);
    background: var(--ms-brand-orange-soft, rgb(var(--hms-color-brand-orange-soft-rgb, 255, 243, 228)));
    color: var(--ms-ink);
}

.legal-document-box {
    max-height: var(--hms-content-height-legal-box, 220px);
    overflow-y: auto;
    font-size: .93rem;
    line-height: var(--hms-line-height-copy, 1.65);
    background: var(--ms-bg-light);
    border: 1px solid var(--ms-border);
    border-radius: var(--ms-radius-card);
    padding: var(--hms-space-4, 1rem);
}

@media (max-width: 991.98px) {
    .app-sidebar { transform: translateX(-100%); }
    .app-sidebar.show { transform: translateX(0); }
    .app-main { margin-left: 0; }
}

/* Custom Animations and Styling for Graphic Elements */
.hover-zoom {
    transition: transform var(--hms-transition-base), filter var(--hms-transition-base), box-shadow var(--hms-transition-base);
}
.hover-zoom:hover {
    transform: translateY(-2px);
    filter: drop-shadow(0 8px 16px rgba(var(--hms-shadow-color-rgb, 74, 74, 74), .12));
}

.ministry-logo-container {
    aspect-ratio: var(--hms-aspect-banner, 16 / 9);
    width: 100%;
    max-width: var(--hms-logo-width-ministry, 160px);
    margin-inline: auto;
    background: var(--hms-surface-muted, #f1f5f9);
    transition: background-color var(--hms-transition-slow), border-color var(--hms-transition-slow), transform var(--hms-transition-slow);
    border: 1px solid rgba(var(--hms-color-brand-red-rgb, 227, 30, 36), .08);
}

.ministry-logo-container img {
    max-height: 100%;
    object-fit: contain;
}

.public-feature-card {
    border: 1px solid var(--ms-border);
    min-height: 100%;
    transition: transform var(--hms-transition-base), box-shadow var(--hms-transition-base), border-color var(--hms-transition-base);
}

/* Incremento 69 — Hover refinado em cards públicos */
.public-feature-card:hover {
    border-color: rgba(var(--hms-color-brand-red-rgb, 227, 30, 36), .18);
    box-shadow: var(--hms-shadow-md);
    transform: translateY(-2px);
}

.campaign-progress {
    height: var(--hms-progress-height-md, 10px);
}

.campaign-banner-container {
    aspect-ratio: var(--hms-aspect-banner, 16 / 9);
    border-bottom: 1px solid rgba(var(--hms-shadow-color-rgb, 74, 74, 74), .08);
    height: var(--hms-campaign-banner-height, 160px);
    overflow: hidden;
}

.public-media {
    aspect-ratio: var(--hms-aspect-card, 4 / 3);
    object-fit: cover;
    width: 100%;
}

.brand-logo-xl {
    max-height: var(--hms-logo-height-brand-xl, 200px);
    object-fit: contain;
}

.ministry-logo-container-sm {
    height: var(--hms-logo-height-ministry-sm, 80px);
    width: 100%;
}

.ministry-logo-container-md {
    height: var(--hms-logo-height-ministry-md, 100px);
    width: 100%;
}

.public-copy-narrow {
    max-width: var(--hms-content-width-narrow, 700px);
}

.max-w-2xl {
    max-width: var(--hms-content-width-2xl, 42rem);
}

.font-semibold {
    font-weight: var(--hms-font-weight-semibold, 600);
}

.leading-relaxed {
    line-height: var(--hms-line-height-relaxed, 1.75);
}

.text-sm {
    font-size: var(--hms-font-size-sm, .875rem);
}

.legal-page-container {
    max-width: var(--hms-content-width-legal, 920px);
}

.legal-page-content {
    line-height: var(--hms-line-height-relaxed, 1.75);
    white-space: pre-wrap;
}

.prewrap-text {
    white-space: pre-wrap;
}

.prewrap-relaxed {
    line-height: var(--hms-line-height-copy-tight, 1.6);
    white-space: pre-wrap;
}

.line-clamp-3 {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    overflow: hidden;
}

.line-clamp-2 {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
}

/* ===== Mídia / Galeria ===== */
.object-cover {
    object-fit: cover;
}

.midia-thumb {
    position: relative;
    width: 100%;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--hms-bg-page, #f4f1ec);
}

.midia-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.midia-play {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 3rem;
    color: #fff;
    text-shadow: 0 2px 12px rgba(0, 0, 0, .55);
    pointer-events: none;
}

.midia-slider-wrap {
    --midia-slide-w: 300px;
}

.midia-slider {
    scroll-snap-type: x mandatory;
    scrollbar-width: thin;
}

.midia-slide {
    width: var(--midia-slide-w);
    scroll-snap-align: start;
    transition: transform .2s ease, box-shadow .2s ease;
}

.midia-slide:hover {
    transform: translateY(-4px);
}

.midia-slider-nav {
    position: absolute;
    top: 38%;
    z-index: 3;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    border: 0;
    background: var(--hms-color-primary, #e53935);
    color: #fff;
    box-shadow: 0 4px 14px rgba(0, 0, 0, .2);
    display: flex;
    align-items: center;
    justify-content: center;
}

.midia-slider-prev {
    left: -10px;
}

.midia-slider-next {
    right: -10px;
}

@media (max-width: 575.98px) {
    .midia-slider-wrap {
        --midia-slide-w: 80vw;
    }

    .midia-slider-nav {
        display: none;
    }
}

.min-h-description {
    min-height: var(--hms-description-min-height, 4.5rem);
}

.fs-7 {
    font-size: var(--hms-font-size-utility-lg, .85rem);
}

.fs-8 {
    font-size: var(--hms-font-size-utility-md, .8rem);
}

.impact-icon-lg {
    font-size: var(--hms-icon-size-md, 1.5rem);
    height: var(--hms-size-feature-icon, 60px);
    width: var(--hms-size-feature-icon, 60px);
}

.impact-icon-lg .bi {
    line-height: var(--hms-line-height-icon, 1);
}

.public-chart-box {
    height: var(--hms-chart-height-lg, 320px);
    position: relative;
    width: 100%;
}

.page-link-circle {
    height: var(--hms-size-control-sm, 40px);
    width: var(--hms-size-control-sm, 40px);
}

.pagination .page-link {
    transition: background-color var(--hms-transition-base), border-color var(--hms-transition-base), color var(--hms-transition-base);
}

.pagination .page-link:hover,
.pagination .page-link:focus-visible {
    background-color: var(--ms-green-soft) !important;
    color: var(--ms-green-dark) !important;
}

.progress-thin {
    height: var(--hms-progress-height-sm, 8px);
}

.task-status-select {
    max-width: var(--hms-task-status-select-width, 190px);
}

.institution-logo-box {
    height: var(--hms-logo-height-institution-box, 180px);
    max-width: var(--hms-logo-width-institution-box, 200px);
}

.notification-new-badge {
    font-size: var(--hms-font-size-badge, .65rem);
}

.text-xs {
    font-size: var(--hms-font-size-xs, .75rem);
}

.text-xxs {
    font-size: var(--hms-font-size-utility-xs, .7rem);
}

.fs-9 {
    font-size: var(--hms-font-size-label-xs, .72rem);
}

.btn-xs {
    --bs-btn-padding-y: .16rem;
    --bs-btn-padding-x: .45rem;
    --bs-btn-font-size: var(--hms-font-size-label-xs, .72rem);
    --bs-btn-border-radius: var(--ms-radius-control);
}

.shadow-xs {
    box-shadow: var(--hms-shadow-sm, 0 1px 2px rgba(var(--hms-shadow-color-rgb, 74, 74, 74), .06)) !important;
}

.rounded-bottom-4 {
    border-bottom-left-radius: var(--ms-radius-card) !important;
    border-bottom-right-radius: var(--ms-radius-card) !important;
}

@media (min-width: 992px) {
    .py-lg-6 {
        padding-bottom: 4rem !important;
        padding-top: 4rem !important;
    }
}

.truncate-150,
.truncate-200,
.truncate-250,
.truncate-300,
.truncate-420,
.truncate-450 {
    overflow: hidden;
    text-overflow: ellipsis;
}

.truncate-150 { max-width: var(--hms-truncate-width-xs, 150px); }
.truncate-200 { max-width: var(--hms-truncate-width-sm, 200px); }
.truncate-250 { max-width: var(--hms-truncate-width-md, 250px); }
.truncate-300 { max-width: var(--hms-truncate-width-lg, 300px); }
.truncate-420 { max-width: var(--hms-truncate-width-xl, 420px); }
.truncate-450 { max-width: var(--hms-truncate-width-2xl, 450px); }

.max-w-420 { max-width: var(--hms-truncate-width-xl, 420px); }
.max-w-450 { max-width: var(--hms-truncate-width-2xl, 450px); }

.truncate-nowrap {
    white-space: nowrap;
}

.table-col-70 { width: var(--hms-table-col-width-xs, 70px); }
.table-col-80 { width: var(--hms-table-col-width-sm, 80px); }
.table-col-100 { width: var(--hms-table-col-width-md, 100px); }
.table-col-130 { width: var(--hms-table-col-width-lg, 130px); }
.table-col-150 { width: var(--hms-table-col-width-xl, 150px); }
.table-col-200 { width: var(--hms-table-col-width-2xl, 200px); }
.table-col-220 { width: var(--hms-table-col-width-3xl, 220px); }

.code-block-scroll {
    max-height: var(--hms-scroll-height-md, 300px);
    overflow-y: auto;
}

.code-block-json {
    font-family: monospace;
    white-space: pre-wrap;
}

.legal-version-box {
    max-height: var(--hms-scroll-height-lg, 360px);
    overflow-y: auto;
    white-space: pre-wrap;
}

.article-content-readable {
    color: var(--hms-text-secondary, #475569);
    font-size: var(--hms-font-size-article, 1.1rem);
    line-height: var(--hms-line-height-readable, 1.8);
    max-width: var(--hms-content-width-readable, 65ch);
}

/* Incremento 67 — max-width 65ch em textos corridos */
.legal-page-content p,
.support-message-text {
    max-width: var(--hms-content-width-readable, 65ch);
}

.support-thread-body {
    background-color: var(--hms-surface-muted, #f8f9fa);
}

.support-message-box {
    max-width: 80%;
}

.support-message-meta {
    font-size: var(--hms-font-size-utility-md, .8rem);
}

.support-message-text {
    white-space: pre-wrap;
    word-break: break-word;
}

.sticky-offset-md {
    top: var(--hms-space-6, 1.5rem);
}

.favorite-thumb {
    flex-shrink: 0;
    height: var(--hms-size-thumb-md, 64px);
    width: var(--hms-size-thumb-md, 64px);
}

.kpi-value-compact {
    font-size: var(--hms-font-size-metric-sm, 1.7rem);
}

.kpi-value-prominent {
    font-size: var(--hms-font-size-metric-md, 1.8rem);
}

.progress-bar-dynamic {
    width: 0;
}

.progress-bar-full {
    width: 100%;
}

.event-review-note {
    font-size: var(--hms-font-size-xs, .75rem);
    font-style: italic;
    max-width: var(--hms-note-width-sm, 150px);
}

.obs-presenca {
    font-size: var(--hms-font-size-utility-md, .8rem);
    max-width: var(--hms-note-width-md, 180px);
}

.chart-container-260,
.chart-container-300 {
    position: relative;
}

.chart-container-260 {
    height: var(--hms-chart-height-sm, 260px);
}

.chart-container-300 {
    height: var(--hms-chart-height-md, 300px);
}

.review-hero {
    background: linear-gradient(135deg, var(--ms-green) 0%, var(--ms-yellow) 100%);
}

.review-info-alert {
    background-color: var(--ms-green-soft);
    color: var(--ms-green-dark);
}

.hover-yellow {
    transition: color var(--hms-transition-base), transform var(--hms-transition-base);
}

.hover-yellow:hover {
    transform: scale(1.15);
}

.star-rating-button {
    align-items: center;
    background: transparent;
    border: 0;
    color: var(--ms-muted);
    display: inline-flex;
    justify-content: center;
    line-height: var(--hms-line-height-icon, 1);
    min-height: var(--hms-size-touch-target, 44px);
    min-width: var(--hms-size-touch-target, 44px);
    padding: 0;
    transition: color var(--hms-transition-base), transform var(--hms-transition-base);
}

.star-rating-button:hover,
.star-rating-button:focus-visible,
.star-rating-button[aria-checked="true"] {
    color: var(--ms-yellow);
    transform: scale(1.08);
}

.star-rating .bi-star-fill {
    color: var(--ms-yellow) !important;
}

.nav-pills .nav-link {
    background-color: var(--ms-bg-light);
    color: var(--ms-ink);
    transition: background-color var(--hms-transition-slow), color var(--hms-transition-slow), transform var(--hms-transition-fast);
}

.nav-pills .nav-link:hover,
.nav-pills .nav-link:focus-visible {
    background-color: var(--hms-color-gray-200, #e2e8f0);
}

.nav-pills .nav-link.active {
    background-color: var(--ms-green) !important;
    color: var(--hms-text-inverse) !important;
}

.transition-all {
    transition: background-color var(--hms-transition-base), border-color var(--hms-transition-base), box-shadow var(--hms-transition-base), color var(--hms-transition-base), transform var(--hms-transition-base);
}

.hover-zoom-soft:hover {
    background-color: rgba(var(--hms-bg-page-rgb, 248, 250, 252), .8);
    transform: translateX(3px);
}

.border-4 {
    border-left-width: var(--hms-border-width-emphasis, 4px) !important;
}

.maintenance-body,
.maintenance-wrapper {
    min-height: 100vh;
}

.maintenance-body {
    background: var(--ms-bg);
}

.maintenance-wrapper {
    align-items: center;
    display: flex;
}

.maintenance-card {
    margin: 0 auto;
    max-width: var(--hms-content-width-maintenance, 720px);
}

.seal-logo {
    height: var(--hms-logo-height-seal, 120px);
    object-fit: contain;
}

.public-contact-card {
    background: linear-gradient(180deg, var(--hms-bg-surface), rgba(var(--hms-color-brand-orange-soft-rgb, 255, 243, 228), .42));
}
.card:hover .ministry-logo-container {
    background-color: var(--ms-green-soft) !important;
    border-color: rgba(var(--hms-color-brand-red-rgb, 227, 30, 36), .15);
}

.hero-logo-glow {
    filter: drop-shadow(0 8px 24px rgba(var(--hms-color-brand-red-rgb, 227, 30, 36), .15));
    transition: transform var(--hms-transition-emphasis);
}
.hero-logo-glow:hover {
    transform: translateY(-5px);
}

/* Sidebar Groups and Submenus */
.sidebar-group {
    margin-bottom: 0;
}

.sidebar-group-header {
    display: flex;
    align-items: center;
    width: 100%;
    color: rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .86);
    background: none;
    border: none;
    padding: var(--hms-space-sidebar-link-block, .85rem) var(--hms-space-4, 1rem);
    border-radius: var(--ms-radius-card);
    font-weight: 600;
    font-size: var(--hms-font-size-nav, 0.95rem);
    cursor: pointer;
    transition: background-color var(--hms-transition-base), color var(--hms-transition-base);
    font-family: var(--hms-font-family-heading);
}

.sidebar-group-header:hover {
    color: var(--hms-text-inverse);
    background: rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .1);
}

.sidebar-group-header:not(.collapsed) {
    color: var(--hms-text-inverse);
    background: rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .15);
}

.sidebar-group-header i:last-child {
    transition: transform var(--hms-transition-base);
}

.sidebar-group-header:not(.collapsed) i:last-child {
    transform: rotate(180deg);
}

.sidebar-group .collapse {
    padding: 0 var(--hms-space-2, 0.5rem) var(--hms-space-2, 0.5rem) var(--hms-space-2, 0.5rem);
}

.sidebar-link-sub {
    display: flex;
    align-items: center;
    gap: var(--hms-space-sidebar-sub-gap, .65rem);
    color: rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .72);
    text-decoration: none;
    border-radius: var(--ms-radius-card);
    padding: .7rem 0.9rem 0.7rem 1.8rem;
    margin-bottom: .15rem;
    font-weight: 500;
    font-size: var(--hms-font-size-helper, 0.9rem);
    transition: background-color var(--hms-transition-base), color var(--hms-transition-base), padding-left var(--hms-transition-base);
}

.sidebar-link-sub:hover,
.sidebar-link-sub.active {
    color: var(--hms-text-inverse);
    background: rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .12);
    padding-left: 2rem;
}

.sidebar-subgroup {
    margin-bottom: var(--hms-space-4, 1rem);
}

.sidebar-subgroup-label {
    display: block;
    font-size: var(--hms-font-size-xs, 0.75rem);
    font-weight: 700;
    text-transform: uppercase;
    color: rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .5);
    padding: 0.5rem 1.8rem 0.5rem 1rem;
    margin-bottom: var(--hms-space-1, 0.25rem);
    letter-spacing: 0;
}

.site-footer {
    background: linear-gradient(135deg, var(--ms-green-dark), var(--ms-green));
    color: var(--hms-text-inverse);
    padding: var(--hms-space-footer-block-start, 3.25rem) 0 var(--hms-space-footer-block-end, 2.25rem);
}

.app-shell + .site-footer {
    margin-left: 280px;
    transition: margin-left var(--hms-transition-base);
}

body.sidebar-collapsed .app-shell + .site-footer {
    margin-left: 0;
}

.site-footer-title {
    color: var(--hms-text-inverse);
    font-family: var(--hms-font-family-heading);
    font-size: var(--hms-font-size-section-title, 1.05rem);
    font-weight: 800;
    margin-bottom: var(--hms-space-footer-title-gap, 1.15rem);
}

.site-footer-links {
    display: grid;
    gap: var(--hms-space-footer-link-gap, .7rem);
    list-style: none;
    margin: 0;
    padding: 0;
}

.site-footer a {
    color: rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .9);
    text-decoration: none;
}

.site-footer a:hover,
.site-footer a:focus {
    color: var(--hms-text-inverse);
    text-decoration: underline;
}

.site-footer-bottom {
    border-top: 1px solid rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .28);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--hms-space-4, 1rem);
    margin-top: 2rem;
    padding-top: var(--hms-space-footer-divider-gap, .9rem);
}

.site-footer-brand {
    display: inline-flex;
    align-items: center;
    gap: var(--hms-space-footer-link-gap, .7rem);
}

.site-footer-logo {
    width: var(--hms-size-control-sm, 40px);
    height: var(--hms-size-control-sm, 40px);
    object-fit: contain;
}

.site-footer-note {
    color: rgba(var(--hms-text-inverse-rgb, 255, 255, 255), .88);
    margin: 0;
}

@media (max-width: 991.98px) {
    .app-shell + .site-footer {
        margin-left: 0;
    }
}

@media (max-width: 767.98px) {
    .site-footer {
        padding: var(--hms-space-footer-block-start-sm, 2.5rem) 0 var(--hms-space-footer-block-end-sm, 2rem);
    }

    .site-footer-bottom {
        align-items: flex-start;
        flex-direction: column;
    }
}

/* Tailwind & Bootstrap Collapse Conflict Resolution */
.collapse.show {
    visibility: visible !important;
}
.collapsing {
    visibility: visible !important;
}

/* Breadcrumb Styling overrides */
.breadcrumb {
    background-color: var(--hms-bg-surface) !important;
    border: 1px solid var(--ms-border);
    padding: var(--hms-space-3, 0.75rem) var(--hms-space-5, 1.25rem) !important;
    border-radius: var(--ms-radius-card) !important;
    box-shadow: var(--hms-shadow-sm, 0 1px 2px rgba(var(--hms-shadow-color-rgb, 74, 74, 74), .06)) !important;
}
body.tema-escuro .breadcrumb {
    background-color: var(--hms-surface) !important;
    border-color: var(--hms-border) !important;
}

/* Chart fallback summaries */
.chart-fallback {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 100%;
    padding: var(--hms-space-4);
    border: 1px solid var(--hms-border);
    border-radius: var(--hms-radius-lg);
    background: var(--hms-surface-muted);
    color: var(--hms-text);
}

.chart-fallback-title {
    margin-bottom: var(--hms-space-3);
    font-family: var(--hms-font-family-heading);
    font-size: var(--hms-font-size-sm);
    font-weight: var(--hms-font-weight-bold);
    color: var(--hms-text-primary);
}

.chart-fallback-list {
    display: grid;
    gap: var(--hms-space-2);
}

.chart-fallback-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--hms-space-3);
    padding: var(--hms-space-2) var(--hms-space-3);
    border: 1px solid var(--hms-border);
    border-radius: var(--hms-radius-md);
    background: var(--hms-surface);
}

.chart-fallback-row::before {
    content: "";
    flex: 0 0 0.65rem;
    width: 0.65rem;
    height: 0.65rem;
    border-radius: var(--hms-radius-pill);
    background: var(--hms-color-brand-red);
}

.chart-fallback-row:nth-child(2n)::before {
    background: var(--hms-color-brand-orange);
}

.chart-fallback-row:nth-child(3n)::before {
    background: var(--hms-color-info);
}

.chart-fallback-row:nth-child(4n)::before {
    background: var(--hms-color-warning);
}

.chart-fallback-label {
    flex: 1;
    min-width: 0;
    color: var(--hms-text-secondary);
    font-size: var(--hms-font-size-sm);
}

.chart-fallback-value {
    color: var(--hms-text-primary);
    font-size: var(--hms-font-size-sm);
    white-space: nowrap;
}

.chart-fallback-note {
    margin: var(--hms-space-3) 0 0;
    color: var(--hms-text-muted);
    font-size: var(--hms-font-size-xs);
}

/* Bootstrap Icons offline fallback */
html.hms-icons-fallback .bi::before,
html.hms-icons-fallback [class^="bi-"]::before,
html.hms-icons-fallback [class*=" bi-"]::before {
    content: "i";
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1em;
    min-height: 1em;
    font-family: var(--hms-font-family-base);
    font-style: normal;
    font-weight: var(--hms-font-weight-bold);
    line-height: var(--hms-line-height-icon, 1);
    text-align: center;
    text-transform: none;
}

html.hms-icons-fallback .bi-chevron-left::before,
html.hms-icons-fallback .bi-arrow-left::before,
html.hms-icons-fallback .bi-arrow-counterclockwise::before {
    content: "<";
}

html.hms-icons-fallback .bi-chevron-right::before,
html.hms-icons-fallback .bi-box-arrow-up-right::before,
html.hms-icons-fallback .bi-box-arrow-right::before {
    content: ">";
}

html.hms-icons-fallback .bi-chevron-down::before {
    content: "v";
}

html.hms-icons-fallback .bi-plus-lg::before,
html.hms-icons-fallback .bi-plus-circle::before,
html.hms-icons-fallback .bi-person-plus::before {
    content: "+";
}

html.hms-icons-fallback .bi-check-lg::before,
html.hms-icons-fallback .bi-check-circle::before,
html.hms-icons-fallback .bi-check-circle-fill::before,
html.hms-icons-fallback .bi-check2-all::before,
html.hms-icons-fallback .bi-check2-square::before {
    content: "ok";
    font-size: var(--hms-font-size-icon-fallback, 0.72em);
}

html.hms-icons-fallback .bi-x-circle::before,
html.hms-icons-fallback .bi-trash3::before,
html.hms-icons-fallback .bi-slash-circle::before {
    content: "x";
}

html.hms-icons-fallback .bi-exclamation-triangle::before,
html.hms-icons-fallback .bi-exclamation-triangle-fill::before,
html.hms-icons-fallback .bi-bell::before,
html.hms-icons-fallback .bi-bell-fill::before,
html.hms-icons-fallback .bi-bell-slash::before {
    content: "!";
}

html.hms-icons-fallback .bi-question-circle::before,
html.hms-icons-fallback .bi-info-circle::before,
html.hms-icons-fallback .bi-info-circle-fill::before {
    content: "?";
}

html.hms-icons-fallback .bi-search::before,
html.hms-icons-fallback .bi-search-heart::before,
html.hms-icons-fallback .bi-filter::before,
html.hms-icons-fallback .bi-funnel::before,
html.hms-icons-fallback .bi-eye::before,
html.hms-icons-fallback .bi-eye-slash::before {
    content: "o";
}

html.hms-icons-fallback .bi-star::before,
html.hms-icons-fallback .bi-star-fill::before,
html.hms-icons-fallback .bi-star-half::before,
html.hms-icons-fallback .bi-heart::before,
html.hms-icons-fallback .bi-heart-fill::before,
html.hms-icons-fallback .bi-heart-pulse::before,
html.hms-icons-fallback .bi-box2-heart::before,
html.hms-icons-fallback .bi-bookmark::before,
html.hms-icons-fallback .bi-bookmark-heart::before {
    content: "*";
}

html.hms-icons-fallback .bi-envelope::before,
html.hms-icons-fallback .bi-envelope-fill::before,
html.hms-icons-fallback .bi-send::before,
html.hms-icons-fallback .bi-send-fill::before,
html.hms-icons-fallback .bi-chat-left-text::before,
html.hms-icons-fallback .bi-chat-left-dots::before,
html.hms-icons-fallback .bi-chat-left-heart::before,
html.hms-icons-fallback .bi-chat-heart::before,
html.hms-icons-fallback .bi-chat-square-text::before,
html.hms-icons-fallback .bi-chat-square-quote::before {
    content: "m";
}

html.hms-icons-fallback .bi-calendar-event::before,
html.hms-icons-fallback .bi-calendar-check::before,
html.hms-icons-fallback .bi-calendar-check-fill::before,
html.hms-icons-fallback .bi-calendar-heart::before,
html.hms-icons-fallback .bi-calendar-x::before,
html.hms-icons-fallback .bi-clock::before,
html.hms-icons-fallback .bi-clock-history::before {
    content: "d";
}

html.hms-icons-fallback .bi-person::before,
html.hms-icons-fallback .bi-person-heart::before,
html.hms-icons-fallback .bi-person-lines-fill::before,
html.hms-icons-fallback .bi-people::before,
html.hms-icons-fallback .bi-hand-heart::before,
html.hms-icons-fallback .bi-hand-index::before,
html.hms-icons-fallback .bi-hand-thumbs-up::before,
html.hms-icons-fallback .bi-hand-thumbs-down::before {
    content: "p";
}

html.hms-icons-fallback .bi-building::before,
html.hms-icons-fallback .bi-building-heart::before,
html.hms-icons-fallback .bi-briefcase::before,
html.hms-icons-fallback .bi-diagram-3::before,
html.hms-icons-fallback .bi-megaphone::before,
html.hms-icons-fallback .bi-megaphone-fill::before {
    content: "b";
}

html.hms-icons-fallback .bi-file-text::before,
html.hms-icons-fallback .bi-file-earmark-check::before,
html.hms-icons-fallback .bi-mortarboard::before,
html.hms-icons-fallback .bi-folder::before,
html.hms-icons-fallback .bi-folder2-open::before,
html.hms-icons-fallback .bi-archive::before,
html.hms-icons-fallback .bi-database::before,
html.hms-icons-fallback .bi-server::before,
html.hms-icons-fallback .bi-download::before,
html.hms-icons-fallback .bi-save::before {
    content: "f";
}

html.hms-icons-fallback .bi-geo-alt::before,
html.hms-icons-fallback .bi-geo-alt-fill::before,
html.hms-icons-fallback .bi-globe::before,
html.hms-icons-fallback .bi-tag::before,
html.hms-icons-fallback .bi-tag-fill::before {
    content: "@";
}

html.hms-icons-fallback .bi-gear::before,
html.hms-icons-fallback .bi-tools::before,
html.hms-icons-fallback .bi-sliders::before,
html.hms-icons-fallback .bi-palette::before,
html.hms-icons-fallback .bi-palette-fill::before {
    content: "#";
}

html.hms-icons-fallback .bi-bar-chart::before,
html.hms-icons-fallback .bi-bar-chart-line::before,
html.hms-icons-fallback .bi-activity::before,
html.hms-icons-fallback .bi-speedometer2::before {
    content: "%";
}

html.hms-icons-fallback .bi-lock::before,
html.hms-icons-fallback .bi-lock-fill::before,
html.hms-icons-fallback .bi-shield-check::before,
html.hms-icons-fallback .bi-shield-lock::before,
html.hms-icons-fallback .bi-shield-lock-fill::before {
    content: "l";
}
.breadcrumb-item a {
    color: var(--ms-green) !important;
    font-weight: 600;
    transition: color var(--hms-transition-fast);
}
.breadcrumb-item a:hover,
.breadcrumb-item a:focus-visible {
    color: var(--ms-green-dark) !important;
    text-decoration: underline !important;
}
body.tema-escuro .breadcrumb-item a {
    color: var(--hms-primary) !important;
}
body.tema-escuro .breadcrumb-item a:hover,
body.tema-escuro .breadcrumb-item a:focus-visible {
    color: var(--hms-primary-hover) !important;
}
body.tema-escuro .breadcrumb-item.active {
    color: var(--hms-text) !important;
}
body.tema-escuro .breadcrumb-item::before {
    color: var(--hms-text-muted) !important;
}

/* =========================================================
   DESIGN SYSTEM OVERRIDES - DARK MODE AND INPUT HARMONIZATION
   ========================================================= */

/* Dark Mode Table Overrides */
body.tema-escuro .table {
    color: var(--hms-text) !important;
}

body.tema-escuro thead.table-light th {
    background-color: var(--hms-surface-muted) !important;
    color: var(--hms-text) !important;
    border-bottom-color: var(--hms-border) !important;
}

body.tema-escuro .table td {
    border-bottom-color: var(--hms-border) !important;
    color: var(--hms-text) !important;
}

/* Zebra striping for table data */
.table-striped tbody tr:nth-of-type(odd) {
    background-color: var(--hms-table-striped-bg) !important;
}

/* Modais dark mode compliance */
body.tema-escuro .modal-content {
    background-color: var(--hms-surface) !important;
    color: var(--hms-text) !important;
    border: 1px solid var(--hms-border) !important;
}

body.tema-escuro .modal-header,
body.tema-escuro .modal-footer {
    border-color: var(--hms-border) !important;
    background-color: var(--hms-surface-muted) !important;
}

body.tema-escuro .modal-header .btn-close {
    filter: invert(1) grayscale(100%) brightness(200%) !important;
}

/* Form Controls & Form Select Input Harmonization */
.form-control,
.form-select {
    background-color: var(--hms-surface) !important;
    border: 1px solid var(--hms-border) !important;
    color: var(--hms-text) !important;
    border-radius: var(--hms-radius-md) !important;
    font-family: var(--hms-font-family-base) !important;
    transition: border-color var(--hms-transition-fast), box-shadow var(--hms-transition-fast) !important;
}

.form-control:focus,
.form-select:focus {
    border-color: var(--hms-primary) !important;
    box-shadow: var(--hms-focus) !important;
    outline: none !important;
}

body.tema-escuro .form-control::placeholder {
    color: var(--hms-text-muted) !important;
    opacity: 0.7;
}

/* Empty states — Incremento 66: microcopy institucional de confiança */
.empty-state {
    padding: var(--hms-space-8) !important;
    border: 2px dashed var(--hms-border) !important;
    border-radius: var(--hms-radius-xl) !important;
    background-color: var(--hms-surface) !important;
    text-align: center;
}

.empty-state-icon {
    color: var(--hms-text-muted);
    font-size: var(--hms-icon-size-xl, 1.9rem);
    margin-bottom: var(--hms-space-3, .75rem);
    display: block;
    opacity: 0.7;
}

/* Microcopy institucional para alertas amigáveis */
.alert-institutional {
    background-color: var(--hms-color-info-bg);
    border-color: rgba(var(--hms-color-info-rgb, 15, 118, 110), .3);
    color: var(--hms-color-info);
    border-left: 4px solid var(--hms-color-info);
}

/* Active links, breadcrumb fixes */
.breadcrumb {
    background-color: var(--hms-surface) !important;
    border: 1px solid var(--hms-border) !important;
    box-shadow: var(--hms-shadow) !important;
}

body.tema-escuro .breadcrumb {
    background-color: var(--hms-surface) !important;
    border-color: var(--hms-border) !important;
}

/* =========================================================
   PREMIUM MOTION DESIGN & TACTILE ANIMATIONS
   ========================================================= */

/* Smooth transitions for inputs, buttons, and state switches */
.form-control,
.form-select,
.btn,
.page-link,
.form-check-input {
    transition: background-color var(--hms-transition-base), border-color var(--hms-transition-base), box-shadow var(--hms-transition-base), transform var(--hms-transition-fast), color var(--hms-transition-base) !important;
}

/* Real-time Theme Transition smoothness (Claro/Escuro switch) */
body,
.app-sidebar,
.app-topbar,
.card,
.table,
.modal-content,
.form-control,
.form-select {
    transition: background-color var(--hms-transition-slow), border-color var(--hms-transition-slow), color var(--hms-transition-slow), box-shadow var(--hms-transition-slow) !important;
}

/* Tactile scale down micro-interaction on button/interactive item clicks */
.btn:active {
    transform: scale(0.97) !important;
}

/* Wiggle Keyframes for drawing user attention (e.g. notifications) */
@keyframes hmsWiggle {
    0%, 100% { transform: rotate(0deg); }
    15% { transform: rotate(-8deg); }
    30% { transform: rotate(6deg); }
    45% { transform: rotate(-4deg); }
    60% { transform: rotate(3deg); }
    75% { transform: rotate(-1deg); }
}

.hms-wiggle {
    animation: hmsWiggle 0.6s ease-in-out;
    transform-origin: 50% 0;
}

.hms-wiggle-hover:hover i,
.hms-wiggle-hover:focus-visible i {
    animation: hmsWiggle 0.6s ease-in-out;
}

/* Skeleton Loading Shimmer effect */
@keyframes hmsShimmer {
    0% {
        background-position: -200% 0;
    }
    100% {
        background-position: 200% 0;
    }
}

.hms-skeleton {
    background: linear-gradient(90deg, var(--hms-surface) 25%, var(--hms-surface-muted) 50%, var(--hms-surface) 75%);
    background-size: 200% 100%;
    animation: hmsShimmer 1.5s infinite linear;
    border-radius: var(--hms-radius-md);
    display: inline-block;
    width: 100%;
}

.hms-skeleton-text {
    height: var(--hms-skeleton-height-text, 1.15rem);
    margin-bottom: 0.5rem;
}

.hms-skeleton-title {
    height: var(--hms-skeleton-height-title, 1.6rem);
    margin-bottom: 0.75rem;
    width: 60%;
}

.hms-skeleton-pill {
    height: var(--hms-skeleton-height-pill, 1.75rem);
    border-radius: var(--hms-radius-pill);
    width: var(--hms-skeleton-width-pill, 80px);
}

.hms-skeleton-w-70 { width: var(--hms-skeleton-width-70, 70%); }
.hms-skeleton-w-80 { width: var(--hms-skeleton-width-80, 80%); }
.hms-skeleton-w-85 { width: var(--hms-skeleton-width-85, 85%); }
.hms-skeleton-w-90 { width: var(--hms-skeleton-width-90, 90%); }
.hms-skeleton-w-95 { width: var(--hms-skeleton-width-95, 95%); }
.hms-skeleton-w-100 { width: var(--hms-skeleton-width-100, 100%); }

.hms-skeleton-pill-offset {
    margin-top: var(--hms-skeleton-pill-offset-top, 1rem);
}

.hms-skeleton-square {
    height: var(--hms-size-media-sm, 48px);
    width: var(--hms-size-media-sm, 48px);
}

.hms-skeleton-card {
    padding: var(--hms-space-5, 1.25rem);
    border: 1px solid var(--hms-border);
    border-radius: var(--hms-radius-xl);
    background: var(--hms-surface);
    height: 100%;
}

/* Fade In animation for dynamic page content loading */
@keyframes hmsFadeIn {
    from {
        opacity: 0;
        transform: translateY(6px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.hms-fade-in {
    animation: hmsFadeIn 0.22s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

/* Interactive Hover Micro-animations (Elevations and Shadows) */
.btn {
    transition: background-color var(--hms-transition-base), border-color var(--hms-transition-base), color var(--hms-transition-base), box-shadow var(--hms-transition-base), transform var(--hms-transition-base) !important;
}

.btn:hover {
    transform: translateY(-1.5px);
    box-shadow: var(--hms-shadow-md);
}

.btn:active {
    transform: scale(0.97) translateY(0) !important;
}

.card.hover-zoom {
    transition: transform var(--hms-transition-base), box-shadow var(--hms-transition-base), border-color var(--hms-transition-base) !important;
}

.card.hover-zoom:hover {
    transform: translateY(-3px) !important;
    box-shadow: var(--hms-shadow-lg) !important;
}

/* Accessibility: Disable/simplify animations under prefers-reduced-motion OS preference */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-delay: -1ms !important;
        animation-duration: 1ms !important;
        animation-iteration-count: 1 !important;
        background-attachment: initial !important;
        scroll-behavior: auto !important;
        transition-delay: 0s !important;
        transition-duration: 0s !important;
    }

    .hms-skeleton {
        animation: none !important;
        background: var(--hms-surface-muted) !important;
    }

    .hms-fade-in {
        animation: none !important;
        opacity: 1 !important;
        transform: none !important;
    }
}

/* =========================================================
   INCREMENTO 73 — Tipografia dos Títulos de Seção
   ========================================================= */

.public-section-title {
    font-family: var(--hms-font-family-heading);
    font-size: var(--hms-font-size-3xl, 1.875rem);
    font-weight: var(--hms-font-weight-bold, 700);
    color: var(--hms-text-primary);
    line-height: var(--hms-line-height-display-tight, 1.12);
    margin-bottom: var(--hms-space-2, .5rem);
}

.public-section-subtitle {
    color: var(--hms-text-secondary);
    font-size: var(--hms-font-size-lg, 1.125rem);
    line-height: var(--hms-line-height-copy-tight, 1.6);
    max-width: var(--hms-content-width-readable, 65ch);
}

/* =========================================================
   INCREMENTO 74 — Loading States para Operações Longas
   ========================================================= */

.btn-loading {
    position: relative;
    cursor: wait;
    opacity: 0.8;
}

.btn-loading::after {
    content: "";
    display: inline-block;
    width: 0.85em;
    height: 0.85em;
    border: 2px solid currentColor;
    border-right-color: transparent;
    border-radius: 999px;
    animation: hms-spin 0.7s linear infinite;
    margin-left: 0.45rem;
    vertical-align: middle;
}

.form-processing-overlay {
    position: absolute;
    inset: 0;
    background: rgba(var(--hms-bg-surface-rgb, 255, 255, 255), 0.8);
    border-radius: inherit;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: var(--hms-z-content, 2);
    backdrop-filter: blur(2px);
}

/* =========================================================
   INCREMENTO 75 — Alertas Semânticos com Ícone + Cor + Texto
   ========================================================= */

.alert-success-institutional {
    background-color: var(--hms-color-success-bg);
    border-color: rgba(var(--hms-color-success-rgb, 21, 128, 61), .3);
    color: var(--hms-color-success);
    border-left: 4px solid var(--hms-color-success);
    display: flex;
    align-items: flex-start;
    gap: var(--hms-space-3, .75rem);
}

.alert-success-institutional::before {
    content: "\F26A";
    font-family: 'bootstrap-icons';
    font-size: 1.1em;
    flex-shrink: 0;
    margin-top: 0.05em;
}

.alert-danger-institutional {
    background-color: var(--hms-color-danger-bg);
    border-color: rgba(var(--hms-color-danger-rgb, 184, 20, 26), .3);
    color: var(--hms-color-danger);
    border-left: 4px solid var(--hms-color-danger);
    display: flex;
    align-items: flex-start;
    gap: var(--hms-space-3, .75rem);
}

.alert-danger-institutional::before {
    content: "\F33A";
    font-family: 'bootstrap-icons';
    font-size: 1.1em;
    flex-shrink: 0;
    margin-top: 0.05em;
}

.alert-warning-institutional {
    background-color: var(--hms-color-warning-bg);
    border-color: rgba(var(--hms-color-warning-rgb, 180, 83, 9), .3);
    color: var(--hms-color-warning);
    border-left: 4px solid var(--hms-color-warning);
    display: flex;
    align-items: flex-start;
    gap: var(--hms-space-3, .75rem);
}

.alert-warning-institutional::before {
    content: "\F33B";
    font-family: 'bootstrap-icons';
    font-size: 1.1em;
    flex-shrink: 0;
    margin-top: 0.05em;
}

.alert-info-institutional {
    background-color: var(--hms-color-info-bg);
    border-color: rgba(var(--hms-color-info-rgb, 15, 118, 110), .3);
    color: var(--hms-color-info);
    border-left: 4px solid var(--hms-color-info);
    display: flex;
    align-items: flex-start;
    gap: var(--hms-space-3, .75rem);
}

.alert-info-institutional::before {
    content: "\F431";
    font-family: 'bootstrap-icons';
    font-size: 1.1em;
    flex-shrink: 0;
    margin-top: 0.05em;
}

/* Incremento 75 — Fallback para ambientes sem Bootstrap Icons */
html.hms-icons-fallback .alert-success-institutional::before { content: "[OK]"; font-family: var(--hms-font-family-base); font-size: var(--hms-font-size-sm); }
html.hms-icons-fallback .alert-danger-institutional::before  { content: "[!]";  font-family: var(--hms-font-family-base); font-size: var(--hms-font-size-sm); }
html.hms-icons-fallback .alert-warning-institutional::before { content: "[!]";  font-family: var(--hms-font-family-base); font-size: var(--hms-font-size-sm); }
html.hms-icons-fallback .alert-info-institutional::before    { content: "[i]";  font-family: var(--hms-font-family-base); font-size: var(--hms-font-size-sm); }
