/* Iguape municipal design system - shared runtime theme */
:root {
    --iguape-brand: #305a9f;
    --iguape-brand-strong: #214a86;
    --iguape-brand-soft: #e8f0fa;
    --iguape-accent: #0f766e;
    --iguape-info: #256d85;
    --iguape-success: #24724f;
    --iguape-warning: #936300;
    --iguape-danger: #a7352a;
    --iguape-ink: #1f3446;
    --iguape-muted: #5f6b75;
    --iguape-line: #d7dee7;
    --iguape-surface: #f3f6f9;
    --iguape-panel: #ffffff;
    --iguape-soft: #f8fafc;
    --iguape-radius: 8px;
    --iguape-shadow: 0 12px 28px rgba(21, 48, 82, .08);
    --iguape-focus: 0 0 0 .2rem rgba(48, 90, 159, .16);
}

body,
.app-standard-shell {
    min-width: 320px;
    overflow-x: hidden;
    color: var(--iguape-ink);
    background:
        linear-gradient(180deg, #ffffff 0, #f8fafc 15rem, var(--iguape-surface) 44rem),
        linear-gradient(135deg, rgba(48, 90, 159, .09), transparent 30rem),
        linear-gradient(315deg, rgba(15, 118, 110, .07), transparent 28rem);
    letter-spacing: 0;
}

.app-standard-shell {
    --std-brand: var(--iguape-brand);
    --std-brand-strong: var(--iguape-brand-strong);
    --std-accent: var(--iguape-accent);
    --std-info: var(--iguape-info);
    --std-success: var(--iguape-success);
    --std-warning: var(--iguape-warning);
    --std-danger: var(--iguape-danger);
    --std-ink: var(--iguape-ink);
    --std-muted: var(--iguape-muted);
    --std-line: var(--iguape-line);
    --std-surface: var(--iguape-surface);
    --std-soft: var(--iguape-soft);
    --std-shadow: var(--iguape-shadow);
}

.app-standard-shell .content-wrap,
.page,
.portal-shell {
    align-content: start;
    gap: 1rem;
}

.app-standard-shell .desktop-sidebar,
.app-standard-shell .topbar,
.portal-header,
.system-card,
.privacy-card,
.stat-card,
.metric,
.overview-card,
.quick-card,
.home-quick-card,
.panel,
.card,
.table-card,
.form-card,
.detail-card,
.filter-card,
.diario-card,
.live-card,
.text-page,
.review-card,
.topic-card,
.person-card,
.career-card,
.status-card,
.issue-card,
.ops-panel {
    border-color: var(--iguape-line);
    background: var(--iguape-panel);
    box-shadow: var(--iguape-shadow);
}

.app-standard-shell .topbar,
.app-standard-shell .desktop-sidebar,
.topbar {
    background: rgba(255, 255, 255, .98);
    border-color: var(--iguape-line);
}

.app-standard-shell .nav-link,
.nav a {
    color: var(--iguape-ink);
    border-left: 3px solid transparent;
}

.app-standard-shell .nav-link:hover,
.app-standard-shell .nav-link:focus,
.app-standard-shell .nav-link.active,
.app-standard-shell .nav-link[aria-current="page"],
.nav a:hover,
.nav a[aria-current="page"] {
    border-color: rgba(48, 90, 159, .24);
    border-left-color: var(--iguape-brand);
    background: linear-gradient(90deg, rgba(48, 90, 159, .14), rgba(15, 118, 110, .07));
    color: var(--iguape-brand-strong);
}

.page-title,
.page-header h1,
.dashboard-header h1,
.list-header h1,
.section-title,
.header-copy h1,
.page-head h1,
.admin-page-title h1,
.text-page h1,
.login-card-header h1,
.login-card-header h2 {
    color: var(--iguape-ink);
    letter-spacing: 0;
}

.page-subtitle,
.panel-subtitle,
.panel-header p,
.panel-heading p,
.form-card-header p,
.header-copy p,
.system-card p,
.privacy-card p,
.footer,
.portal-footer,
.muted {
    color: var(--iguape-muted);
}

.stat-card,
.metric,
.overview-card,
.quick-card,
.home-quick-card,
.status-card,
.issue-card,
.system-card {
    border-top: 4px solid var(--iguape-brand);
}

.stat-card:nth-child(4n + 2),
.metric:nth-child(4n + 2),
.overview-card:nth-child(4n + 2),
.quick-card:nth-child(4n + 2),
.home-quick-card:nth-child(4n + 2),
.status-card:nth-child(4n + 2),
.issue-card:nth-child(4n + 2),
.system-card:nth-child(4n + 2) {
    border-top-color: var(--iguape-success);
}

.stat-card:nth-child(4n + 3),
.metric:nth-child(4n + 3),
.overview-card:nth-child(4n + 3),
.quick-card:nth-child(4n + 3),
.home-quick-card:nth-child(4n + 3),
.status-card:nth-child(4n + 3),
.issue-card:nth-child(4n + 3),
.system-card:nth-child(4n + 3) {
    border-top-color: var(--iguape-warning);
}

.stat-card:nth-child(4n),
.metric:nth-child(4n),
.overview-card:nth-child(4n),
.quick-card:nth-child(4n),
.home-quick-card:nth-child(4n),
.status-card:nth-child(4n),
.issue-card:nth-child(4n),
.system-card:nth-child(4n) {
    border-top-color: var(--iguape-info);
}

.button,
.btn,
.button-primary,
.btn-primary,
.login-form button[type="submit"],
.card-actions a:first-child,
.page-actions a:first-child,
.quick-actions a:first-child {
    background: var(--iguape-brand);
    border-color: var(--iguape-brand);
    color: #ffffff;
    box-shadow: none;
}

.button:hover,
.btn:hover,
.button-primary:hover,
.btn-primary:hover,
.login-form button[type="submit"]:hover,
.card-actions a:first-child:hover,
.page-actions a:first-child:hover,
.quick-actions a:first-child:hover {
    background: var(--iguape-brand-strong);
    border-color: var(--iguape-brand-strong);
    color: #ffffff;
}

.button-secondary,
.btn-secondary,
.button-ghost,
.btn-light,
.card-actions a:nth-child(n + 2),
.page-actions a:nth-child(n + 2),
.quick-actions a:nth-child(n + 2) {
    background: #eef3f8;
    border-color: #cfd9e4;
    color: var(--iguape-ink);
}

.button-danger,
.btn-danger {
    background: var(--iguape-danger);
    border-color: var(--iguape-danger);
    color: #ffffff;
}

input,
select,
textarea,
.form-control,
.form-select {
    max-width: 100%;
    border-color: #cfd9e4;
    color: var(--iguape-ink);
}

input:focus,
select:focus,
textarea:focus,
.form-control:focus,
.form-select:focus,
.button:focus-visible,
.btn:focus-visible,
.nav-link:focus-visible,
.nav a:focus-visible {
    outline: 0;
    border-color: var(--iguape-brand);
    box-shadow: var(--iguape-focus);
}

th,
.data-table th {
    background: #edf2f7;
    color: #314253;
}

tbody tr:nth-child(even) td {
    background: #fbfcfe;
}

tbody tr:hover td {
    background: #f3f7fb;
}

.badge-success,
.badge-vigente,
.status-informacao,
.severity-label.severity-ok,
.event-badge.event-nomeacao,
.event-badge.event-posse,
.event-badge.event-ingresso {
    background: #edf7f1;
    color: var(--iguape-success);
}

.badge-warning,
.badge-pendente,
.deadline-badge-vence-30,
.deadline-badge-vence-60,
.deadline-badge-vence-90,
.severity-label.severity-warn,
.event-badge.event-revisar {
    background: #fff7e6;
    color: var(--iguape-warning);
}

.badge-danger,
.badge-nao-vigente,
.deadline-badge-vencido,
.severity-label.severity-error,
.event-badge.event-exoneracao,
.event-badge.event-saida {
    background: #fff0ee;
    color: var(--iguape-danger);
}

.badge-muted,
.status-sem-informacao {
    background: #eef2f6;
    color: var(--iguape-muted);
}

.table-wrap,
.table-responsive,
.contracts-table-wrap,
.table-scroll {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

@media (max-width: 768px) {
    .app-standard-shell .topbar,
    .topbar {
        padding: .75rem;
        gap: .65rem;
    }

    .app-standard-shell .content-wrap,
    .page,
    .portal-shell {
        gap: .8rem;
    }

    .page-title,
    .page-header h1,
    .dashboard-header h1,
    .list-header h1,
    .section-title,
    .header-copy h1,
    .page-head h1,
    .admin-page-title h1,
    .text-page h1 {
        font-size: 1.12rem;
    }

    .panel,
    .card,
    .form-card,
    .detail-card,
    .filter-card,
    .table-card,
    .stat-card,
    .metric,
    .system-card,
    .privacy-card,
    .diario-card,
    .live-card,
    .text-page,
    .review-card,
    .topic-card,
    .person-card,
    .career-card,
    .overview-card,
    .status-card,
    .issue-card,
    .ops-panel {
        padding: .9rem;
    }

    .button,
    .btn,
    .card-actions a,
    .page-actions a,
    .quick-actions a,
    .quick-actions button {
        min-height: 2.75rem;
        width: 100%;
        justify-content: center;
    }
}
