/* ----------------------------------------------------
   DESIGN SYSTEM & ESTILOS GLOBAIS - FASICLIN
------------------------------------------------------- */

:root {
  /* Paleta de Cores HSL Tailored (Claro, Branco e Verde) */
  --bg-base: #f1f5f9;       /* Slate 100 */
  --bg-surface: #ffffff;    /* Branco */
  --bg-surface-elevated: #ffffff;
  --login-background: radial-gradient(circle at 10% 20%, #e2e8f0 0%, #f8fafc 90.1%);
  --surface-hover: rgba(15, 23, 42, 0.05);
  --surface-subtle: rgba(15, 23, 42, 0.03);
  --table-row-hover: rgba(15, 23, 42, 0.02);
  
  --primary-gradient: linear-gradient(135deg, #16a34a 0%, #15803d 100%);
  --primary-color: #16a34a;
  --primary-hover: #15803d;
  --primary-glow: rgba(22, 163, 74, 0.4);
  
  --success-color: hsl(158, 64%, 52%);
  --success-glow: rgba(16, 185, 129, 0.3);
  
  --danger-color: hsl(343, 81%, 59%);
  --danger-glow: rgba(239, 68, 68, 0.3);
  
  --warning-color: hsl(38, 92%, 50%);
  --warning-glow: rgba(245, 158, 11, 0.3);
  
  --text-primary: #1e293b;   /* Slate 800 */
  --text-secondary: #64748b; /* Slate 500 */
  --text-muted: #94a3b8;     /* Slate 400 */
  --border-color: rgba(0, 0, 0, 0.1);
  --border-focus: rgba(22, 163, 74, 0.5);
  
  /* Efeito Glassmorphic (Claro) */
  --glass-bg: rgba(255, 255, 255, 0.85);
  --glass-border: rgba(0, 0, 0, 0.05);
  --glass-shadow: 0 4px 16px rgba(0, 0, 0, 0.05);
  --glass-blur: blur(12px);

  /* Fontes */
  --font-header: 'Outfit', sans-serif;
  --font-body: 'Inter', sans-serif;
  
  /* Bordas e Sombras */
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 20px;
  --shadow-sm: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
  --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
  --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
  
  /* Movimento: curto, funcional e sem alterar a identidade visual */
  --motion-fast: 150ms;
  --motion-base: 220ms;
  --motion-slow: 320ms;
  --ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --ease-emphasized: cubic-bezier(0.16, 1, 0.3, 1);
  --transition-fast: var(--motion-fast) var(--ease-standard);
  --transition-normal: var(--motion-base) var(--ease-standard);
  --transition-slow: var(--motion-slow) var(--ease-emphasized);
}

/* Modo claro obrigatório. */
html[data-theme="light"] {
  color-scheme: light;
}

/*
Modo escuro preservado, mas desativado por decisão do produto.
html[data-theme="dark"] {
  color-scheme: dark;
  --bg-base: #0f172a !important;
  --bg-surface: #1e293b !important;
  --bg-surface-elevated: #334155 !important;
  --text-primary: #f8fafc !important;
  --text-secondary: #94a3b8 !important;
  --text-muted: #64748b !important;
  --border-color: rgba(255, 255, 255, 0.08) !important;
  --border-focus: rgba(99, 102, 241, 0.5) !important;
  --glass-bg: rgba(30, 41, 59, 0.65) !important;
  --glass-border: rgba(255, 255, 255, 0.05) !important;
  --glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37) !important;
  --login-background: radial-gradient(circle at 10% 20%, #0f172a 0%, #1e293b 90.1%) !important;
  --surface-hover: rgba(255, 255, 255, 0.05) !important;
  --surface-subtle: rgba(255, 255, 255, 0.03) !important;
  --table-row-hover: rgba(255, 255, 255, 0.01) !important;
}
*/

/* Os controles permanecem no código, mas ficam ocultos enquanto o tema escuro estiver desativado. */
.theme-toggle-btn {
  display: none !important;
}

/*
html[data-theme="dark"] {
  color-scheme: dark;
  --bg-base: #0f172a !important;
  --bg-surface: #1e293b !important;
  --bg-surface-elevated: #334155 !important;
  --text-primary: #f8fafc !important;
  --text-secondary: #94a3b8 !important;
  --text-muted: #64748b !important;
  --border-color: rgba(255, 255, 255, 0.08) !important;
  --border-focus: rgba(99, 102, 241, 0.5) !important;
  --glass-bg: rgba(30, 41, 59, 0.65) !important;
  --glass-border: rgba(255, 255, 255, 0.05) !important;
  --glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37) !important;
  --login-background: radial-gradient(circle at 10% 20%, #0f172a 0%, #1e293b 90.1%) !important;
  --surface-hover: rgba(255, 255, 255, 0.05) !important;
  --surface-subtle: rgba(255, 255, 255, 0.03) !important;
  --table-row-hover: rgba(255, 255, 255, 0.01) !important;
}
*/

/* Reset Geral */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* Central de relatórios financeiros */
.reports-page { max-width: 1440px; }
.reports-hero { display:flex; justify-content:space-between; gap:1.5rem; align-items:center; padding:1.6rem 1.8rem; margin-bottom:1.15rem; border:1px solid color-mix(in srgb, var(--primary-color) 22%, #fff); border-radius:var(--radius-lg); background:linear-gradient(115deg, color-mix(in srgb, var(--primary-color) 10%, #fff), #fff 56%); box-shadow:var(--shadow-sm); }
.reports-eyebrow { color:var(--primary-color); font-size:.76rem; font-weight:800; text-transform:uppercase; letter-spacing:.07em; }
.reports-hero h2 { margin:.35rem 0; font-size:1.55rem; }
.reports-hero p { margin:0; color:var(--text-secondary); }
.reports-hero-total { min-width:190px; padding:1rem 1.2rem; border-radius:var(--radius-md); background:var(--bg-surface); text-align:right; box-shadow:var(--shadow-sm); }
.reports-hero-total small { display:block; color:var(--text-secondary); }
.reports-hero-total strong { color:var(--primary-color); font-size:1.25rem; }
.report-type-grid { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:1rem; margin-bottom:1.15rem; }
.report-type-card { display:flex; align-items:center; gap:.8rem; width:100%; padding:1.1rem; border:1px solid var(--border-color); border-radius:var(--radius-md); background:var(--bg-surface); color:var(--text-primary); cursor:pointer; text-align:left; transition:.18s ease; }
.report-type-card:hover, .report-type-card.is-active { border-color:var(--primary-color); box-shadow:0 8px 22px color-mix(in srgb, var(--primary-color) 16%, transparent); transform:translateY(-1px); }
.report-type-card > i:first-child { display:grid; place-items:center; width:2.35rem; height:2.35rem; border-radius:50%; background:color-mix(in srgb, var(--primary-color) 12%, #fff); color:var(--primary-color); }
.report-type-card span { display:grid; gap:.24rem; flex:1; }
.report-type-card small, .reports-card-heading p { color:var(--text-secondary); font-size:.78rem; line-height:1.35; }
.reports-filter-card, .reports-result { padding:1.3rem; border:1px solid var(--border-color); border-radius:var(--radius-lg); background:var(--bg-surface); box-shadow:var(--shadow-sm); }
.reports-card-heading { display:flex; justify-content:space-between; gap:1rem; align-items:start; padding-bottom:1rem; margin-bottom:1rem; border-bottom:1px solid var(--border-color); }
.reports-card-heading h3 { margin:0; font-size:1.08rem; }.reports-card-heading h3 i { color:var(--primary-color); }.reports-card-heading p { margin:.25rem 0 0; }.reports-card-heading > span { color:var(--primary-color); font-size:.82rem; font-weight:700; white-space:nowrap; }
.reports-filter-grid { display:grid; grid-template-columns:repeat(5, minmax(0, 1fr)); gap:.85rem; align-items:end; }
.reports-filter-grid > label, .reports-semesters { display:grid; gap:.4rem; color:var(--text-secondary); font-size:.78rem; font-weight:700; }
.reports-filter-grid select, .reports-filter-grid input { min-height:2.55rem; border:1px solid var(--border-color); border-radius:var(--radius-sm); padding:.55rem .65rem; background:var(--bg-surface); color:var(--text-primary); font:inherit; }
.reports-semesters { grid-column:1 / -1; padding:.8rem; border:1px solid var(--border-color); border-radius:var(--radius-sm); }.reports-semesters legend { padding:0 .3rem; }.reports-semesters legend small { font-weight:400; }.reports-semesters > div { display:flex; flex-wrap:wrap; gap:.55rem 1rem; }.reports-semesters label { font-size:.8rem; font-weight:500; color:var(--text-primary); }
.reports-filter-actions { display:flex; gap:.55rem; grid-column:1 / -1; }.reports-filter-actions .btn { white-space:nowrap; }
.reports-result { margin-top:1.15rem; padding:0; overflow:hidden; }.reports-result-title { display:flex; justify-content:space-between; padding:1rem 1.3rem; border-bottom:1px solid var(--border-color); background:color-mix(in srgb, var(--primary-color) 5%, #fff); }.reports-result-title span { font-weight:800; }.reports-result-title small { color:var(--text-secondary); }
.report-result-section { margin:1rem; border:1px solid var(--border-color); border-radius:var(--radius-md); overflow:hidden; }.report-result-section > header { display:flex; justify-content:space-between; gap:1rem; align-items:center; padding:.75rem 1rem; background:#f8fafc; }.report-result-section--income > header { background:#047857; color:#fff; }.report-result-section--expense > header { background:#be123c; color:#fff; }.report-result-section--mixed > header { background:#0369a1; color:#fff; }.report-result-section--income > header p,.report-result-section--expense > header p,.report-result-section--mixed > header p,.report-result-section--income > header > strong,.report-result-section--expense > header > strong,.report-result-section--mixed > header > strong { color:#fff; }.report-result-section h3 { margin:0; font-size:.95rem; }.report-result-section p { margin:.18rem 0 0; color:var(--text-secondary); font-size:.75rem; }.report-result-section > header > strong { color:var(--primary-color); }.report-table-wrap { overflow-x:auto; }.reports-table { width:100%; border-collapse:collapse; }.reports-table th, .reports-table td { padding:.7rem .8rem; border-bottom:1px solid var(--border-color); text-align:left; font-size:.8rem; }.reports-table th { background:#fbfcfd; color:var(--text-secondary); font-size:.72rem; text-transform:uppercase; letter-spacing:.03em; }.report-money { text-align:right !important; font-weight:700; white-space:nowrap; }.is-income { color:var(--success-color); }.is-expense { color:var(--danger-color); }.reports-empty { padding:1.2rem !important; text-align:center !important; color:var(--text-secondary); }.report-section-totals { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:1rem 1.5rem; padding:.75rem 1rem; background:#fbfcfd; font-size:.79rem; }.report-section-totals span { display:flex; gap:.35rem; }.reports-empty-panel { margin:1rem; padding:1.5rem; color:var(--text-secondary); text-align:center; border:1px dashed var(--border-color); border-radius:var(--radius-md); }
@media (max-width: 1050px) { .report-type-grid { grid-template-columns:1fr; }.reports-filter-grid { grid-template-columns:repeat(2, minmax(0, 1fr)); } }
@media (max-width: 650px) { .reports-hero { display:block; padding:1.2rem; }.reports-hero-total { margin-top:1rem; text-align:left; }.reports-filter-grid { grid-template-columns:1fr; }.reports-filter-actions { flex-wrap:wrap; }.reports-result-title, .report-result-section > header { align-items:flex-start; flex-direction:column; gap:.35rem; }.report-section-totals { justify-content:flex-start; gap:.6rem 1rem; } }

/* Layout contábil do relatório Receita x Despesas */
.revenue-report { padding:1rem; background:#f7fbff; }.revenue-summary-grid { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:.65rem; margin-bottom:.7rem; }.revenue-summary-card { display:grid; gap:.22rem; padding:.7rem .9rem; text-align:center; border:1px solid; border-radius:var(--radius-sm); background:#fff; }.revenue-summary-card small { color:var(--text-secondary); font-size:.66rem; font-weight:800; text-transform:uppercase; }.revenue-summary-card strong { font-size:1rem; }.revenue-summary-card span { color:var(--text-secondary); font-size:.68rem; }.revenue-summary-card--income { border-color:#a7f3d0; }.revenue-summary-card--income strong { color:#047857; }.revenue-summary-card--expense { border-color:#fecdd3; }.revenue-summary-card--expense strong { color:#be123c; }.revenue-summary-card--balance { border-color:#bae6fd; }.revenue-summary-card--balance strong { color:#0369a1; }.revenue-ledger { overflow:hidden; margin:.75rem 0; border:1px solid var(--border-color); border-radius:var(--radius-sm); background:#fff; }.revenue-ledger > header { display:flex; justify-content:space-between; align-items:center; padding:.4rem .65rem; color:#fff; text-transform:uppercase; font-size:.7rem; font-weight:800; letter-spacing:.035em; }.revenue-ledger--income > header { background:#047857; }.revenue-ledger--expense > header { background:#be123c; }.revenue-ledger > header small { font-size:.61rem; font-weight:700; }.revenue-table th, .revenue-table td { padding:.48rem .55rem; font-size:.69rem; }.revenue-table th { font-size:.61rem; }.revenue-ledger > footer { display:flex; justify-content:space-between; align-items:center; padding:.43rem .65rem; background:#f8fafc; border-top:1px solid var(--border-color); font-size:.68rem; font-weight:800; text-transform:uppercase; }.revenue-balance-panel { width:min(100%, 320px); margin:.85rem 0 0 auto; border:1px solid #cbd5e1; border-radius:var(--radius-sm); overflow:hidden; background:#fff; }.revenue-balance-panel div { display:flex; justify-content:space-between; gap:1rem; padding:.45rem .65rem; border-bottom:1px solid #e2e8f0; font-size:.7rem; }.revenue-balance-panel div:last-child { border:0; background:#ecfdf5; text-transform:uppercase; font-weight:800; }

@media (max-width: 650px) { .revenue-summary-grid { grid-template-columns:1fr; }.revenue-ledger > header { align-items:flex-start; flex-direction:column; gap:.2rem; }.revenue-balance-panel { width:100%; } }

/* Dashboard financeiro */
.dashboard-toolbar { display:flex; justify-content:flex-end; gap:.7rem; margin:0 0 1rem; }.dashboard-toolbar label { display:flex; align-items:center; gap:.45rem; font-size:.8rem; font-weight:700; }.dashboard-toolbar select { min-height:2.5rem; padding:0 .6rem; border:1px solid var(--border-color); border-radius:var(--radius-sm); background:#fff; }.financial-dashboard { display:grid; gap:1rem; }.financial-dashboard-header { display:flex; justify-content:space-between; align-items:center; padding:.2rem .25rem; }.financial-dashboard-header h2 { margin:0; font-size:1.35rem; }.financial-dashboard-header h2 span { margin-left:.45rem; padding:.28rem .55rem; border-radius:999px; background:#edf4ff; color:#49657e; font-size:.72rem; }.financial-dashboard-header p { margin:.25rem 0 0; color:var(--text-secondary); }.dashboard-sync { padding:.55rem .8rem; border:1px solid #a7f3d0; border-radius:999px; background:#ecfdf5; color:#047857; font-size:.8rem; font-weight:700; }.dashboard-sync i { font-size:.55rem; }.dashboard-kpis { display:grid; grid-template-columns:repeat(4,1fr); gap:1rem; }.dashboard-kpi,.dashboard-current,.dashboard-panel,.dashboard-chart { border:1px solid #dce5ef; border-radius:var(--radius-md); background:#fff; box-shadow:var(--shadow-sm); }.dashboard-kpi { display:grid; gap:.7rem; min-height:150px; padding:1.2rem; }.dashboard-kpi small { color:#5d7898; font-weight:800; text-transform:uppercase; }.dashboard-kpi strong { font-size:1.6rem; }.dashboard-kpi span { padding-top:.7rem; border-top:1px solid #e8eef5; color:#64748b; font-size:.82rem; }.dashboard-kpi--income strong { color:#2563eb; }.dashboard-kpi--expense strong { color:#e11d48; }.dashboard-kpi--balance strong { color:#d11a43; }.dashboard-current { padding:1rem; background:#15233b; color:#fff; }.dashboard-current small { display:block; text-transform:uppercase; font-weight:800; }.dashboard-current>b { display:block; margin:.65rem 0; color:#a7f3d0; }.dashboard-current div { display:grid; grid-template-columns:1fr 1fr; gap:.45rem; }.dashboard-current span { padding:.55rem; border:1px solid #334155; border-radius:.5rem; font-size:.7rem; }.dashboard-current strong { display:block; margin-top:.3rem; color:#34d399; }.dashboard-grid,.dashboard-charts { display:grid; grid-template-columns:42% 1fr; gap:1rem; }.dashboard-panel { overflow:hidden; }.dashboard-panel>header { display:flex; justify-content:space-between; align-items:center; padding:1rem; color:#fff; background:#9f1239; }.dashboard-annual>header { background:#243b9c; }.dashboard-panel h3,.dashboard-chart h3 { margin:0; font-size:1rem; }.dashboard-panel p { margin:.2rem 0 0; font-size:.75rem; }.dashboard-panel>header>b { padding:.4rem .6rem; border:1px solid #ffffff55; border-radius:.35rem; font-size:.8rem; }.dashboard-panel table { width:100%; border-collapse:collapse; }.dashboard-panel th,.dashboard-panel td { padding:.7rem .85rem; border-bottom:1px solid #e5eaf1; font-size:.78rem; text-align:left; }.dashboard-panel th { color:#526c89; font-size:.67rem; text-transform:uppercase; }.dashboard-expenses td:nth-child(2),.dashboard-expenses td:nth-child(3) { color:#e11d48; font-weight:700; }.dashboard-expenses td i { display:block; height:.45rem; border-radius:99px; background:#d11a43; }.dashboard-panel footer { display:flex; justify-content:space-between; padding:.8rem; color:#9f1239; background:#fff1f2; font-size:.8rem; font-weight:800; text-transform:uppercase; }.dashboard-annual tfoot { background:#edf4ff; }.dashboard-annual tfoot th { padding:.8rem; font-size:.78rem; }.dashboard-status { padding:.22rem .38rem; border-radius:.3rem; font-style:normal; font-size:.68rem; }.dashboard-status--positive { color:#047857; background:#d1fae5; }.dashboard-status--negative { color:#be123c; background:#ffe4e6; }.dashboard-status--neutral { color:#0369a1; background:#e0f2fe; }.dashboard-chart { padding:1.2rem; }.dashboard-chart header { display:flex; justify-content:space-between; padding-bottom:.8rem; border-bottom:1px solid #e6edf5; }.dashboard-chart header span { color:#2563eb; font-size:.75rem; font-weight:700; }.dashboard-bars { display:flex; align-items:end; gap:.7rem; height:220px; padding:1.4rem .2rem 0; border-bottom:1px solid #cbd5e1; }.dashboard-bars>div { position:relative; display:grid; align-items:end; flex:1; height:100%; text-align:center; }.dashboard-bars i { min-height:2px; border-radius:.35rem .35rem 0 0; background:#2563eb; }.dashboard-bars--expense i { background:#d11a43; }.dashboard-bars b { position:absolute; bottom:calc(100% + .25rem); width:100%; color:#2563eb; font-size:.62rem; }.dashboard-bars--expense b { color:#d11a43; }.dashboard-bars small { padding-top:.4rem; color:#526c89; font-size:.67rem; } @media (max-width:1050px) { .dashboard-kpis,.dashboard-grid,.dashboard-charts { grid-template-columns:1fr 1fr; }.dashboard-grid,.dashboard-charts { grid-template-columns:1fr; } } @media (max-width:650px) { .financial-dashboard-header,.dashboard-toolbar { align-items:flex-start; flex-direction:column; }.dashboard-kpis { grid-template-columns:1fr; }.dashboard-panel { overflow-x:auto; }.dashboard-panel table { min-width:560px; } }
.dashboard-comparison { margin-top:1rem; padding:1.25rem; border:1px solid #dce5ef; border-radius:var(--radius-md); background:#fff; box-shadow:var(--shadow-sm); }.dashboard-comparison header { display:flex; justify-content:space-between; gap:1rem; padding-bottom:.9rem; border-bottom:1px solid #e6edf5; }.dashboard-comparison h3 { margin:0; font-size:1rem; }.dashboard-comparison p { margin:.2rem 0 0; color:var(--text-secondary); font-size:.78rem; }.dashboard-comparison header span { font-size:.78rem; font-weight:700; }.dashboard-legend { display:inline-block; width:.65rem; height:.65rem; margin:0 .3rem 0 .55rem; border-radius:50%; }.dashboard-legend--income { background:#2563eb; }.dashboard-legend--expense { background:#e11d48; }.dashboard-comparison-row { margin-top:1rem; }.dashboard-comparison-row>div { display:flex; justify-content:space-between; text-transform:uppercase; font-size:.82rem; }.dashboard-comparison-row aside { position:relative; height:2rem; margin-top:.45rem; overflow:hidden; border:1px solid #dce5ef; border-radius:.45rem; background:#edf2f7; }.dashboard-comparison-bar { display:block; height:100%; border-radius:.35rem; }.dashboard-comparison-bar--income { background:linear-gradient(90deg,#1d4ed8,#3b82f6); }.dashboard-comparison-bar--expense { background:linear-gradient(90deg,#be123c,#ef4444); }.dashboard-comparison-row aside b { position:absolute; top:.48rem; right:.7rem; color:#fff; font-size:.75rem; } @media (max-width:650px) { .dashboard-comparison header { flex-direction:column; } }

/* Módulo de Manutenção */
.maintenance-page { display: grid; gap: 1.25rem; }
.maintenance-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.maintenance-toolbar h2 { margin: 0; display: flex; align-items: center; gap: .65rem; font-family: var(--font-header); }
.maintenance-toolbar h2 i { color: var(--primary-color); }
.maintenance-toolbar p { margin: .35rem 0 0; color: var(--text-secondary); }
.maintenance-toolbar-actions { display: flex; align-items: center; justify-content: flex-end; gap: .65rem; flex-wrap: wrap; }
.maintenance-list-card { padding: 0; overflow: hidden; }
.maintenance-data-table { width: 100%; min-width: 820px; table-layout: fixed; border-collapse: separate; border-spacing: 0 .45rem; }
.maintenance-data-table :is(th, td) { vertical-align: middle; padding-inline: .65rem; overflow-wrap: anywhere; }
.maintenance-data-table .maintenance-col-request { width: 12%; }
.maintenance-data-table .maintenance-col-failure { width: 17%; }
.maintenance-data-table .maintenance-col-box { width: 6%; }
.maintenance-data-table .maintenance-col-location { width: 15%; }
.maintenance-data-table .maintenance-col-priority { width: 9%; }
.maintenance-data-table .maintenance-col-executor { width: 9%; }
.maintenance-data-table .maintenance-col-status { width: 11%; }
.maintenance-data-table .maintenance-col-delivery { width: 10%; }
.maintenance-data-table .maintenance-col-actions { width: 11%; }
.maintenance-data-table td:first-child strong,
.maintenance-data-table td:nth-child(3) strong { display: block; }
.maintenance-status-row { --maintenance-row-color: #94a3b8; }
.maintenance-status-row.is-pending { --maintenance-row-color: #fb923c; }
.maintenance-status-row.is-running { --maintenance-row-color: #eab308; }
.maintenance-status-row.is-done { --maintenance-row-color: #22c55e; }
.maintenance-status-row.is-purchase { --maintenance-row-color: #dc2626; }
.maintenance-status-row > td { border-top: 2px solid var(--maintenance-row-color) !important; border-bottom: 2px solid var(--maintenance-row-color) !important; }
.maintenance-status-row > td:first-child { border-left: 2px solid var(--maintenance-row-color) !important; border-radius: var(--radius-sm) 0 0 var(--radius-sm); }
.maintenance-status-row > td:last-child { border-right: 2px solid var(--maintenance-row-color) !important; border-radius: 0 var(--radius-sm) var(--radius-sm) 0; }
.maintenance-cell-note { display: block; margin-top: .3rem; color: var(--text-secondary); line-height: 1.35; }
.maintenance-failure-text { display: block; min-width: 0; max-width: 100%; line-height: 1.4; overflow-wrap: anywhere; }
.maintenance-badge { display: inline-flex; align-items: center; justify-content: center; padding: .28rem .6rem; border-radius: 999px; font-size: .75rem; font-weight: 700; white-space: nowrap; }
.maintenance-badge.is-low { color: #166534; background: #dcfce7; }
.maintenance-badge.is-medium { color: #92400e; background: #fef3c7; }
.maintenance-badge.is-high { color: #991b1b; background: #fee2e2; }
.maintenance-badge.is-pending { color: #9a3412; background: #fed7aa; }
.maintenance-badge.is-running { color: #854d0e; background: #fef08a; }
.maintenance-badge.is-done { color: #166534; background: #bbf7d0; }
.maintenance-badge.is-purchase { color: #fff; background: #b91c1c; }
.maintenance-actions-cell .table-actions { flex-wrap: wrap; justify-content: center; gap: .35rem; }
.maintenance-actions-cell .btn-icon { width: 38px; height: 38px; }
.maintenance-actions-cell .btn-complete-maintenance { color: #16a34a; }
.maintenance-actions-cell .btn-edit-maintenance { color: #2563eb; }
.maintenance-actions-cell .btn-delete-maintenance { color: #dc2626; }
.maintenance-actions-cell .btn-complete-maintenance:hover { color: #15803d; background: #f0fdf4; border-color: #86efac; }
.maintenance-actions-cell .btn-edit-maintenance:hover { color: #1d4ed8; background: #eff6ff; border-color: #93c5fd; }
.maintenance-actions-cell .btn-delete-maintenance:hover { color: #b91c1c; background: #fef2f2; border-color: #fca5a5; }
.maintenance-empty { text-align: center; padding: 3.5rem 1rem !important; color: var(--text-secondary); }
.maintenance-empty i, .maintenance-empty strong, .maintenance-empty span { display: block; }
.maintenance-empty i { margin-bottom: .75rem; color: var(--primary-color); font-size: 2rem; }
.maintenance-empty strong { color: var(--text-primary); margin-bottom: .25rem; }
.modal-content.maintenance-request-modal-content { width: min(880px, calc(100vw - 2rem)); max-width: 880px; max-height: calc(100dvh - 3rem); overflow: hidden; }
.maintenance-request-modal-header { align-items: flex-start; padding: 1.35rem 1.5rem; }
.maintenance-request-modal-heading { display: flex; align-items: flex-start; gap: .85rem; min-width: 0; }
.maintenance-request-modal-icon { display: grid; place-items: center; width: 42px; height: 42px; flex: 0 0 42px; border-radius: var(--radius-sm); background: color-mix(in srgb, var(--primary-color) 12%, var(--bg-surface)); color: var(--primary-color); font-size: 1.05rem; }
.maintenance-request-modal-heading h3 { margin: 0; font-size: 1.22rem; }
.maintenance-request-modal-heading .task-modal-subtitle { margin-top: .22rem; line-height: 1.4; }
.maintenance-request-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.05rem 1.25rem; padding: 1.35rem 1.5rem 1.5rem; }
.maintenance-request-form-grid .form-group { min-width: 0; margin: 0; gap: .45rem; }
.maintenance-request-form-grid .form-group > label { display: flex; align-items: center; flex-wrap: wrap; gap: .4rem; color: var(--text-secondary); font-size: .79rem; font-weight: 700; }
.maintenance-request-form-grid :is(input, select, textarea) {
  width: 100%;
  max-width: none;
  min-height: 46px;
  padding: .72rem .85rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  outline: none;
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  font-size: .88rem;
  line-height: 1.35;
  box-sizing: border-box;
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast), background-color var(--transition-fast);
}
.maintenance-request-form-grid select { cursor: pointer; }
.maintenance-status-select { font-weight: 700 !important; transition: color .2s ease, background-color .2s ease, border-color .2s ease, box-shadow .2s ease !important; }
.maintenance-status-select[data-status="pendente"] { color: #9a3412; background-color: #fff7ed; border-color: #fb923c; }
.maintenance-status-select[data-status="em_execucao"] { color: #854d0e; background-color: #fefce8; border-color: #eab308; }
.maintenance-status-select[data-status="concluida"] { color: #166534; background-color: #f0fdf4; border-color: #22c55e; }
.maintenance-status-select[data-status="compra_pendente"] { color: #991b1b; background-color: #fef2f2; border-color: #dc2626; }
.maintenance-status-select option[value="pendente"] { color: #9a3412; background: #fed7aa; }
.maintenance-status-select option[value="em_execucao"] { color: #854d0e; background: #fef08a; }
.maintenance-status-select option[value="concluida"] { color: #166534; background: #bbf7d0; }
.maintenance-status-select option[value="compra_pendente"] { color: #fff; background: #b91c1c; }
.task-priority-select { font-weight: 700 !important; transition: color .2s ease, background-color .2s ease, border-color .2s ease, box-shadow .2s ease !important; }
.task-priority-select[data-priority="baixa"] { color: #166534; background-color: #f0fdf4; border-color: #22c55e; }
.task-priority-select[data-priority="media"] { color: #854d0e; background-color: #fefce8; border-color: #eab308; }
.task-priority-select[data-priority="alta"] { color: #991b1b; background-color: #fef2f2; border-color: #dc2626; }
.task-priority-select option[value="baixa"] { color: #166534; background: #bbf7d0; }
.task-priority-select option[value="media"] { color: #854d0e; background: #fef08a; }
.task-priority-select option[value="alta"] { color: #fff; background: #b91c1c; }
.maintenance-inline-catalog-field { display: grid; grid-template-columns: minmax(0, 1fr) 46px; align-items: stretch; gap: .55rem; min-width: 0; }
.maintenance-inline-catalog-field select { min-width: 0; }
.scheduler-selected-tags { display: flex; flex-wrap: wrap; gap: .4rem; min-height: 1.5rem; }
.scheduler-selected-tag { display: inline-flex; align-items: center; gap: .45rem; max-width: 100%; padding: .35rem .55rem; border: 1px solid rgba(22, 163, 74, .35); border-radius: 999px; background: rgba(22, 163, 74, .08); color: var(--text-primary); font-size: .78rem; }
.scheduler-selected-tag .maintenance-remove-equipment { border: 0; background: transparent; color: var(--danger-color); cursor: pointer; font: inherit; font-size: 1rem; line-height: 1; padding: 0; }
.central-data-update-notice { position: fixed; right: 1rem; bottom: 1rem; z-index: 9998; display: flex; align-items: center; gap: 1rem; max-width: min(560px, calc(100vw - 2rem)); padding: .85rem 1rem; border: 1px solid rgba(22, 163, 74, .35); border-radius: var(--radius-md); background: var(--bg-surface); color: var(--text-primary); box-shadow: var(--shadow-lg); }
.central-data-update-notice > div { display: flex; align-items: center; gap: .65rem; min-width: 0; }
.central-data-update-notice > div > i { color: var(--primary-color); font-size: 1.1rem; }
.central-data-update-notice span { display: grid; gap: .12rem; }
.central-data-update-notice small { color: var(--text-secondary); line-height: 1.25; }
.central-data-update-notice .btn { flex: 0 0 auto; white-space: nowrap; }
@media (max-width: 640px) { .central-data-update-notice { left: .75rem; right: .75rem; bottom: .75rem; flex-direction: column; align-items: stretch; } .central-data-update-notice .btn { width: 100%; } }
.maintenance-inline-add {
  width: 46px;
  height: 46px;
  border-color: color-mix(in srgb, var(--primary-color) 35%, var(--border-color));
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--primary-color) 7%, var(--bg-surface));
  color: var(--primary-color);
  font-size: .9rem;
}
.maintenance-inline-add:hover { border-color: var(--primary-color); background: color-mix(in srgb, var(--primary-color) 14%, var(--bg-surface)); color: var(--primary-hover); transform: translateY(-1px); }
.maintenance-inline-add:focus-visible { outline: 3px solid color-mix(in srgb, var(--primary-color) 22%, transparent); outline-offset: 1px; }
.maintenance-field-hint { display: flex; align-items: center; gap: .4rem; margin-top: -.08rem; color: var(--text-muted); font-size: .72rem; line-height: 1.35; }
.maintenance-field-hint i { color: var(--primary-color); }
.maintenance-request-form-grid :is(input, select, textarea):hover { border-color: color-mix(in srgb, var(--primary-color) 34%, var(--border-color)); }
.maintenance-request-form-grid :is(input, select, textarea):focus { border-color: var(--primary-color); box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary-color) 16%, transparent); background: var(--bg-surface); }
.maintenance-request-form-grid :is(input, textarea)::placeholder { color: var(--text-muted); opacity: 1; }
.maintenance-corrective-field { grid-column: 1 / -1; }
.maintenance-corrective-field textarea { resize: vertical; min-height: 112px; }
.maintenance-request-modal-content .modal-footer { padding: 1rem 1.5rem; background: var(--bg-surface); box-shadow: 0 -8px 22px rgba(15, 23, 42, .04); }
.maintenance-request-modal-content .modal-footer .btn { min-height: 44px; padding-inline: 1.05rem; }
.maintenance-request-modal-content .modal-footer .btn-primary { min-width: 175px; justify-content: center; }
.maintenance-quick-catalog-overlay { z-index: 130; }
.modal-content.maintenance-quick-catalog-content { max-width: 500px; }
.maintenance-quick-catalog-body { display: grid; gap: .75rem; }
.maintenance-quick-catalog-body .input-container input { min-height: 46px; padding: .72rem .9rem; }
.maintenance-quick-catalog-body > small { display: flex; align-items: flex-start; gap: .45rem; color: var(--text-muted); font-size: .75rem; line-height: 1.45; }
.maintenance-quick-catalog-body > small i { margin-top: .15rem; color: var(--primary-color); }

/* Catálogos de manutenção em Configurações */
.maintenance-catalogs-shell { display: grid; gap: 1.25rem; }
.maintenance-catalogs-header { margin-bottom: 0; }
.maintenance-catalog-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; align-items: start; }
.maintenance-catalog-card { padding: 1rem; min-width: 0; }
.maintenance-catalog-card-header { display: flex; align-items: center; gap: .75rem; padding-bottom: .9rem; border-bottom: 1px solid var(--border-color); }
.maintenance-catalog-card-header > span { display: grid; place-items: center; width: 38px; height: 38px; flex: 0 0 38px; border-radius: var(--radius-sm); color: var(--primary-color); background: color-mix(in srgb, var(--primary-color) 12%, transparent); }
.maintenance-catalog-card-header h4 { margin: 0; }
.maintenance-catalog-card-header small { display: block; margin-top: .2rem; color: var(--text-secondary); }
.maintenance-catalog-form { padding: .9rem 0; border-bottom: 1px solid var(--border-color); }
.maintenance-catalog-form label { display: block; margin-bottom: .4rem; font-size: .78rem; font-weight: 700; color: var(--text-secondary); }
.maintenance-catalog-control { display: flex; align-items: stretch; gap: .55rem; min-width: 0; }
.maintenance-catalog-input {
  width: 100%; min-width: 0; min-height: 46px; flex: 1 1 auto;
  padding: .72rem .9rem; border: 1px solid var(--border-color); border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated); color: var(--text-primary); font: inherit; line-height: 1.2;
  outline: none; transition: border-color .2s ease, box-shadow .2s ease, background-color .2s ease;
}
.maintenance-catalog-input::placeholder { color: var(--text-muted); opacity: 1; }
.maintenance-catalog-input:hover { border-color: color-mix(in srgb, var(--primary-color) 34%, var(--border-color)); }
.maintenance-catalog-input:focus { border-color: var(--primary-color); background: var(--bg-surface); box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary-color) 16%, transparent); }
.maintenance-catalog-form .btn { min-height: 46px; padding-inline: .85rem; white-space: nowrap; }
.maintenance-catalog-list { display: grid; max-height: 360px; overflow: auto; }
.maintenance-catalog-row { display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: .72rem .15rem; border-bottom: 1px solid var(--border-color); }
.maintenance-catalog-row > span { min-width: 0; overflow-wrap: anywhere; }
.maintenance-catalog-row .table-actions { flex-wrap: nowrap; }
.maintenance-catalog-empty { padding: 1.2rem .25rem; color: var(--text-secondary); text-align: center; }
.maintenance-catalog-note { display: flex; gap: .65rem; align-items: flex-start; padding: .85rem 1rem; border: 1px solid color-mix(in srgb, var(--primary-color) 25%, var(--border-color)); border-radius: var(--radius-sm); color: var(--text-secondary); background: color-mix(in srgb, var(--primary-color) 5%, var(--bg-surface)); }
.maintenance-catalog-note i { margin-top: .15rem; color: var(--primary-color); }

@media (max-width: 1050px) {
  .maintenance-catalog-grid { grid-template-columns: 1fr; }
}

@media (max-width: 700px) {
  .maintenance-toolbar { align-items: stretch; flex-direction: column; }
  .maintenance-toolbar-actions { display: grid; grid-template-columns: 1fr; }
  .maintenance-toolbar .btn { width: 100%; justify-content: center; }
  .modal-overlay:has(.maintenance-request-modal-content) { padding: .65rem; }
  .modal-content.maintenance-request-modal-content { width: 100%; max-height: calc(100dvh - 1.3rem); border-radius: var(--radius-md); }
  .maintenance-request-modal-header { padding: 1rem; }
  .maintenance-request-modal-icon { width: 38px; height: 38px; flex-basis: 38px; }
  .maintenance-request-form-grid { grid-template-columns: 1fr; gap: .9rem; padding: 1rem !important; max-height: none !important; }
  .maintenance-corrective-field { grid-column: auto; }
  .maintenance-request-modal-content .modal-footer { display: grid; grid-template-columns: 1fr 1.35fr; padding: .85rem 1rem; gap: .6rem; }
  .maintenance-request-modal-content .modal-footer .btn { width: 100%; min-width: 0; padding-inline: .65rem; justify-content: center; }
  .maintenance-data-table { min-width: 0; }
  .maintenance-data-table { table-layout: auto; border-spacing: 0 .65rem; }
  .maintenance-data-table colgroup { display: none; }
  .maintenance-data-table td { display: grid !important; grid-template-columns: minmax(105px, 38%) 1fr; gap: .75rem; align-items: start; }
  .maintenance-data-table td::before { position: static !important; }
  .maintenance-data-table .maintenance-actions-cell .table-actions { justify-content: flex-start; }
  .maintenance-failure-text { min-width: 0; max-width: none; }
  .maintenance-catalog-control { flex-wrap: wrap; }
  .maintenance-catalog-form input { flex-basis: 100%; }
}

[hidden] {
  display: none !important;
}

html, body, #app, .main-frame {
  max-width: 100vw;
  overflow-x: clip;
}

body {
  font-family: var(--font-body);
  background-color: var(--bg-base);
  color: var(--text-primary);
  min-height: 100vh;
  line-height: 1.5;
}

:where(a, button, input, select, textarea, [role="button"]):focus-visible {
  outline: 3px solid var(--border-focus);
  outline-offset: 2px;
}

/* Custom Scrollbar */
::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}
::-webkit-scrollbar-track {
  background: var(--bg-base);
}
::-webkit-scrollbar-thumb {
  background: rgba(100, 116, 139, 0.35);
  border: 2px solid var(--bg-base);
  border-radius: var(--radius-sm);
}
::-webkit-scrollbar-thumb:hover {
  background: var(--primary-color);
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-header);
  font-weight: 600;
  letter-spacing: -0.02em;
}

/* --- LOADER INICIAL --- */
.initial-loader {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100vh;
  gap: 1.5rem;
}
.spinner {
  width: 50px;
  height: 50px;
  border: 4px solid var(--border-color);
  border-top: 4px solid var(--primary-color);
  border-radius: 50%;
  animation: spin 1s linear infinite;
  box-shadow: 0 0 15px var(--primary-glow);
}
.initial-loader p {
  color: var(--text-secondary);
  font-family: var(--font-header);
  font-size: 1.1rem;
  letter-spacing: 0.05em;
  animation: pulse 1.5s infinite ease-in-out;
}

.initial-loader-logo {
  color: var(--primary-color);
  font-size: 4rem;
  animation: float 4s ease-in-out infinite;
}

.initial-loader-cache-btn {
  margin-top: 0.5rem;
  background: var(--bg-surface);
  border-style: dashed;
  color: var(--text-secondary);
  font-size: 0.8rem;
}

.fatal-error-screen {
  min-height: 100vh;
  height: auto;
  padding: 2rem;
  text-align: center;
  background: var(--bg-base);
  color: var(--text-primary);
}

.fatal-error-icon {
  color: var(--danger-color);
  font-size: 3.5rem;
  margin-bottom: 1rem;
}

.fatal-error-screen h2 {
  color: var(--danger-color);
  font-size: 1.5rem;
  font-weight: 700;
  margin-bottom: 0.5rem;
}

.fatal-error-description {
  color: var(--text-secondary);
  font-size: 0.95rem;
  max-width: 550px;
  margin-bottom: 1.5rem;
}

.fatal-error-details {
  width: min(100%, 650px);
  padding: 1rem;
  margin-bottom: 1.5rem;
  overflow-x: auto;
  text-align: left;
  background: rgba(239, 68, 68, 0.08);
  border: 1px solid rgba(239, 68, 68, 0.3);
  border-radius: var(--radius-sm);
}

.fatal-error-details strong {
  display: block;
  color: var(--danger-color);
  font-size: 0.85rem;
  margin-bottom: 0.25rem;
}

.fatal-error-details code,
.fatal-error-details pre {
  color: var(--text-primary);
  font-family: monospace;
  white-space: pre-wrap;
  word-break: break-word;
}

.fatal-error-details code {
  font-size: 0.8rem;
}

.fatal-error-details pre {
  color: var(--text-secondary);
  font-size: 0.75rem;
  margin-top: 0.5rem;
}

/* --- LAYOUT DA APLICAÇÃO --- */
.app-container {
  display: grid;
  grid-template-columns: 260px 1fr;
  min-height: 100vh;
}

/* Hamburguer Menu Toggle no Mobile */
.sidebar-toggle-btn {
  display: none;
  background: transparent;
  border: none;
  color: var(--text-primary);
  font-size: 1.4rem;
  cursor: pointer;
  padding: 0.5rem;
  margin-right: 0.75rem;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  border-radius: var(--radius-sm);
  transition:
    background-color var(--transition-fast),
    color var(--transition-fast),
    transform var(--transition-fast);
}

.sidebar-toggle-btn:hover {
  background: var(--surface-hover);
}

@media (max-width: 1024px) {
  .app-container {
    grid-template-columns: 80px 1fr;
  }
}

@media (max-width: 768px) {
  .sidebar-toggle-btn {
    display: inline-flex;
  }
  
  .app-container {
    grid-template-columns: 1fr;
  }
  
  .sidebar {
    position: fixed !important;
    top: 0;
    left: -280px; /* Esconde a sidebar fora da tela */
    width: 280px;
    height: 100vh;
    box-shadow: 10px 0 30px rgba(0, 0, 0, 0.5);
    transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1000 !important;
    transform: translate3d(0, 0, 0);
    -webkit-transform: translate3d(0, 0, 0);
    overflow: hidden;
  }
  
  .sidebar.open {
    left: 0 !important; /* Desliza para dentro */
  }
  
  /* Backdrop de fundo no mobile */
  .sidebar-backdrop {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: rgba(15, 23, 42, 0.8);
    z-index: 999 !important;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.3s ease, visibility 0.3s ease;
  }
  
  .sidebar-backdrop.active {
    opacity: 1;
    visibility: visible;
    pointer-events: auto !important;
  }
  
  .top-header {
    padding: 1rem !important;
  }
  
  .header-controls {
    gap: 0.5rem !important;
  }
  
  .company-selector-wrapper {
    padding: 0.4rem 0.6rem !important;
  }
  
  .network-status-badge {
    padding: 0.4rem 0.6rem !important;
    font-size: 0.75rem !important;
  }
  
  .net-simulator-btn {
    padding: 0.4rem 0.6rem !important;
  }
  
  .net-simulator-btn span {
    display: none; /* Oculta texto para caber o ícone */
  }
}

/* Sidebar */
.sidebar {
  background: var(--bg-surface);
  border-right: 1px solid var(--border-color);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 1.5rem 1rem;
  z-index: 10;
}

.sidebar-main {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
}

.sidebar-main nav {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  scrollbar-width: thin;
}

.logo-section {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0.5rem 1.5rem 0.5rem;
  border-bottom: 1px solid var(--border-color);
}

.logo-icon {
  background: var(--primary-gradient);
  width: 40px;
  height: 40px;
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 14px var(--primary-glow);
}

.logo-icon i {
  font-size: 1.25rem;
  color: #fff;
}

.logo-text {
  font-family: var(--font-header);
  font-size: 1.25rem;
  font-weight: 800;
  background: linear-gradient(to right, var(--text-primary), var(--text-secondary));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

.menu-list {
  list-style: none;
  margin-top: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  flex-grow: 1;
}

.menu-item a {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 0.75rem 1rem;
  color: var(--text-secondary);
  text-decoration: none;
  border-radius: var(--radius-sm);
  font-weight: 500;
  font-size: 0.95rem;
  transition:
    background-color var(--transition-fast),
    color var(--transition-fast),
    transform var(--transition-fast);
}

.menu-item a:hover {
  background: var(--surface-subtle);
  color: var(--text-primary);
}

.menu-item.active a {
  background: var(--primary-gradient);
  color: #fff;
  box-shadow: 0 4px 15px var(--primary-glow);
}

.menu-item a i {
  font-size: 1.1rem;
  width: 20px;
  text-align: center;
}

.sidebar-footer {
  margin-top: 1.5rem;
  padding-top: 1rem;
  border-top: 1px solid var(--border-color);
}

.app-version {
  margin-top: 0.75rem;
  color: var(--text-muted);
  font-size: 0.72rem;
  text-align: center;
  letter-spacing: 0.02em;
}

.sidebar-logout-btn {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 1rem;
  padding: 0.75rem 1rem;
  border: 1px solid rgba(239, 68, 68, 0.25);
  border-radius: var(--radius-sm);
  background: rgba(239, 68, 68, 0.08);
  color: var(--danger-color);
  font: inherit;
  font-weight: 600;
  cursor: pointer;
  transition: background-color var(--transition-fast), transform var(--transition-fast);
}

.sidebar-logout-btn:hover {
  background: rgba(239, 68, 68, 0.15);
  transform: translateY(-1px);
}

.sidebar-logout-btn i {
  width: 20px;
  text-align: center;
}

@media (min-width: 769px) and (max-width: 1024px) {
  .sidebar {
    padding-left: 0.75rem;
    padding-right: 0.75rem;
  }

  .logo-text,
  .menu-item a span,
  .sidebar-logout-btn span {
    display: none;
  }

  .logo-section,
  .menu-item a,
  .sidebar-logout-btn {
    justify-content: center;
  }

  .menu-item a,
  .sidebar-logout-btn {
    padding-left: 0.5rem;
    padding-right: 0.5rem;
  }
}

/* User Info Section in Sidebar */
.user-widget {
  background: var(--glass-bg);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: 0.75rem;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-top: auto;
}

.user-avatar {
  background: var(--primary-gradient);
  width: 38px;
  height: 38px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: bold;
  font-family: var(--font-header);
}

.user-details {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  flex-grow: 1;
}

.user-name {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text-primary);
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}

.user-role {
  font-size: 0.75rem;
  color: var(--text-muted);
}

.logout-btn {
  background: transparent;
  border: none;
  color: var(--text-secondary);
  cursor: pointer;
  padding: 0.25rem;
  font-size: 1.1rem;
  transition:
    background-color var(--transition-fast),
    color var(--transition-fast),
    transform var(--transition-fast);
}

.logout-btn:hover {
  color: var(--danger-color);
  transform: translateX(2px);
}

/* Content Frame */
.main-frame {
  display: flex;
  flex-direction: column;
  height: 100vh;
  overflow-y: auto;
}

/* Header */
.top-header {
  background: var(--bg-surface);
  border-bottom: 1px solid var(--border-color);
  padding: 1rem 2rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 70px;
  flex-wrap: wrap;
  /* O cabeçalho precisa manter sua altura quando o conteúdo da tela cresce. */
  flex: 0 0 auto;
}

.header-title-area {
  display: flex;
  flex-direction: column;
}

.header-title-area h2 {
  font-size: 1.5rem;
  color: var(--text-primary);
}

.header-subtitle {
  font-size: 0.85rem;
  color: var(--text-secondary);
}

.header-controls {
  display: flex;
  align-items: center;
  gap: 1.25rem;
}

/* Seletor Multi-Empresa */
.company-selector-wrapper {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 40px;
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  padding: 0.25rem 0.75rem;
  border-radius: var(--radius-sm);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
  transition:
    border-color var(--transition-fast),
    box-shadow var(--transition-fast);
}

.company-selector-wrapper:focus-within {
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.14);
}

.company-selector-wrapper i {
  color: var(--primary-color);
}

.company-selector {
  min-width: 150px;
  min-height: 32px;
  background: transparent;
  border: 0 !important;
  border-radius: 0;
  box-shadow: none !important;
  outline: none;
  color: var(--text-primary);
  font-family: var(--font-header);
  font-weight: 600;
  font-size: 0.85rem;
  cursor: pointer;
  padding: 0.25rem 0.25rem;
}

.company-selector option {
  background: var(--bg-surface);
  color: var(--text-primary);
}

/* Conexão / Status PWA */
.network-status-badge {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  background: var(--glass-bg);
  border: 1px solid var(--border-color);
  padding: 0.5rem 1rem;
  border-radius: var(--radius-sm);
  font-size: 0.8rem;
  font-weight: 600;
  cursor: default;
}

.status-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  display: inline-block;
}

.status-dot.online {
  background-color: var(--success-color);
  box-shadow: 0 0 8px var(--success-glow);
  animation: pulse-dot-green 1.5s infinite;
}

.status-dot.offline {
  background-color: var(--danger-color);
  box-shadow: 0 0 8px var(--danger-glow);
  animation: pulse-dot-red 1.5s infinite;
}

/* Simulador de Rede & Botão de Perfil */
.net-simulator-btn,
.profile-toggle-btn,
.theme-toggle-btn {
  background: var(--bg-surface-elevated);
  border: 1px solid var(--border-color);
  color: var(--text-primary);
  padding: 0.5rem 0.75rem;
  border-radius: var(--radius-sm);
  cursor: pointer;
  font-size: 0.8rem;
  font-weight: 500;
  transition:
    background-color var(--transition-fast),
    border-color var(--transition-fast),
    color var(--transition-fast),
    transform var(--transition-fast);
  display: flex;
  align-items: center;
  gap: 0.35rem;
  min-height: 44px;
}

.net-simulator-btn:hover,
.profile-toggle-btn:hover,
.theme-toggle-btn:hover {
  background: var(--primary-hover);
  border-color: var(--primary-hover);
  color: #fff;
  box-shadow: 0 4px 10px var(--primary-glow);
}

.net-simulator-btn:hover i,
.profile-toggle-btn:hover i,
.theme-toggle-btn:hover i {
  color: #fff !important;
}

/* --- TELA DE LOGIN --- */
.login-wrapper {
  background: var(--login-background);
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
}

.login-card {
  position: relative;
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  animation: surface-enter var(--motion-slow) var(--ease-emphasized) both;
  box-shadow: var(--glass-shadow);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  border-radius: var(--radius-lg);
  width: 100%;
  max-width: 440px;
  padding: 2.5rem;
  display: flex;
  flex-direction: column;
  gap: 1.75rem;
  animation: fadeInDown 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

.login-theme-toggle {
  position: absolute;
  top: 1rem;
  right: 1rem;
  z-index: 2;
}

.login-theme-toggle span {
  white-space: nowrap;
}

.login-header {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
}

/* Container da logo personalizada na tela de login */
.login-logo-container {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  min-height: 90px !important;
  margin-bottom: 1rem !important;
  overflow: visible !important;
}

.login-logo-container img {
  max-height: 120px !important;
  max-width: 90% !important;
  width: auto !important;
  height: auto !important;
  object-fit: contain !important;
  display: block !important;
  margin: 0 auto !important;
}

.login-logo {
  background: var(--primary-gradient);
  width: 60px;
  height: 60px;
  border-radius: var(--radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 8px 24px var(--primary-glow);
  font-size: 1.75rem;
  color: #fff;
  margin-bottom: 0.5rem;
  animation: float 4s ease-in-out infinite;
}

.login-logo--brand {
  width: 76px;
  height: 76px;
  padding: 0;
  background: transparent;
  box-shadow: none;
  border-radius: 0;
}

.login-logo--brand img {
  display: block;
  width: 100%;
  height: 100%;
}

.login-header h1 {
  font-size: 2rem;
  font-weight: 800;
  color: var(--text-primary);
}

.login-header p {
  color: var(--text-secondary);
  font-size: 0.9rem;
}

.login-form {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.login-recovery-header {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.4rem;
  margin-bottom: 0.25rem;
  text-align: center;
}

.login-recovery-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  margin-bottom: 0.2rem;
  border-radius: 50%;
  background: rgba(22, 163, 74, 0.12);
  color: var(--primary-color);
  font-size: 1.35rem;
}

.login-recovery-icon--brand {
  width: 54px;
  height: 54px;
  background: transparent;
}

.login-recovery-icon--brand img {
  display: block;
  width: 100%;
  height: 100%;
}

.login-recovery-header h3 {
  margin: 0;
  color: var(--text-primary);
  font-family: var(--font-header);
  font-size: 1.1rem;
}

.login-recovery-header p {
  margin: 0;
  color: var(--text-secondary);
  font-size: 0.88rem;
  line-height: 1.5;
}

.login-mfa-qr-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
  padding: 1rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--surface-subtle);
}

.login-mfa-qr-code {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 180px;
  padding: 0.75rem;
  border-radius: var(--radius-sm);
  background: #fff;
}

.login-mfa-qr-code :is(canvas, img) {
  display: block;
  width: min(180px, 100%) !important;
  height: auto !important;
}

.login-mfa-qr-card p {
  margin: 0;
  color: var(--text-secondary);
  font-size: 0.8rem;
  line-height: 1.45;
  text-align: center;
}

.login-form .login-mfa-secret {
  overflow: hidden;
  font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace;
  font-size: 0.8rem;
  letter-spacing: 0.04em;
  text-overflow: ellipsis;
}

.login-secondary-btn {
  width: 100%;
  margin-top: 0.25rem;
  padding: 0.75rem 1rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-secondary);
  font-family: var(--font-header);
  font-weight: 600;
  cursor: pointer;
  transition: border-color var(--transition-fast), color var(--transition-fast), background-color var(--transition-fast);
}

.login-secondary-btn:hover {
  border-color: var(--primary-color);
  background: var(--surface-hover);
  color: var(--primary-color);
}

.login-password-requirements {
  display: flex;
  align-items: flex-start;
  gap: 0.45rem;
  margin: -0.45rem 0 0;
  color: var(--text-muted);
  font-size: 0.78rem;
  line-height: 1.45;
}

.login-password-requirements i {
  flex: 0 0 auto;
  margin-top: 0.15rem;
  color: var(--primary-color);
}

.form-group {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.form-group label {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text-secondary);
}

.input-container {
  position: relative;
  display: flex;
  align-items: center;
}

.input-container > i {
  position: absolute;
  left: 1rem;
  color: var(--text-muted);
  transition:
    color var(--transition-fast),
    transform var(--transition-fast);
}

.input-container input,
.input-container select,
.form-group textarea {
  width: 100%;
  background: var(--bg-surface-elevated);
  border: 1px solid var(--border-color);
  color: var(--text-primary);
  padding: 0.75rem 1rem 0.75rem 2.7rem;
  border-radius: var(--radius-sm);
  font-family: var(--font-body);
  font-size: 0.95rem;
  transition:
    background-color var(--transition-normal),
    border-color var(--transition-normal),
    box-shadow var(--transition-normal);
}

.form-group textarea {
  padding: 0.75rem 1rem;
  resize: vertical;
  min-height: 80px;
}

.input-container input:focus,
.input-container select:focus,
.form-group textarea:focus {
  border-color: var(--border-focus);
  box-shadow: 0 0 8px var(--primary-glow);
  background: var(--bg-surface-elevated);
}

.login-form .input-container input,
.login-form .input-container select {
  min-height: 46px;
}

/* --- CONFIGURAÇÃO DE E-MAIL & RECUPERAÇÃO --- */
.email-provider-shell {
  width: 100%;
  max-width: 880px;
  margin: 0 auto;
}

.email-provider-card {
  overflow: hidden;
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
}

.email-provider-header {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  padding: 1.5rem;
  border-bottom: 1px solid var(--border-color);
  background: linear-gradient(135deg, rgba(22, 163, 74, 0.08), rgba(22, 163, 74, 0.02));
}

.email-provider-icon {
  display: inline-flex;
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
  background: rgba(22, 163, 74, 0.12);
  color: var(--primary-color);
  font-size: 1.15rem;
}

.email-provider-heading {
  min-width: 0;
}

.email-provider-heading h3 {
  margin: 0;
  color: var(--primary-color);
  font-size: 1.25rem;
  line-height: 1.3;
}

.email-provider-heading p {
  max-width: 620px;
  margin: 0.375rem 0 0;
  color: var(--text-secondary);
  font-size: 0.85rem;
  line-height: 1.5;
}

.email-provider-form {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  padding: 1.5rem;
}

.email-provider-grid {
  display: grid;
  gap: 1rem;
}

.email-provider-grid--server {
  grid-template-columns: minmax(0, 1fr) 140px;
}

.email-provider-grid--account {
  grid-template-columns: minmax(220px, 0.85fr) minmax(260px, 1.15fr);
}

.email-provider-form .form-group {
  min-width: 0;
}

.email-provider-form :is(input, select) {
  width: 100%;
  min-height: 44px;
  padding: 0.65rem 0.75rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.9rem;
  transition:
    border-color var(--transition-fast),
    box-shadow var(--transition-fast),
    background-color var(--transition-fast);
}

.email-provider-form :is(input, select):hover {
  border-color: rgba(100, 116, 139, 0.45);
}

.email-provider-form :is(input, select):focus {
  outline: none;
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.14);
}

.email-provider-form input::placeholder {
  color: var(--text-muted);
  opacity: 1;
}

.email-provider-note {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  margin: -0.25rem 0 0;
  padding: 0.75rem;
  border: 1px solid rgba(22, 163, 74, 0.14);
  border-radius: var(--radius-sm);
  background: rgba(22, 163, 74, 0.05);
  color: var(--text-secondary);
  font-size: 0.8rem;
  line-height: 1.45;
}

.email-provider-note i {
  margin-top: 0.15rem;
  color: var(--primary-color);
}

.email-provider-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  padding-top: 0.25rem;
}

@media (max-width: 720px) {
  .email-provider-grid--server,
  .email-provider-grid--account {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 480px) {
  .email-provider-header,
  .email-provider-form {
    padding: 1rem;
  }

  .email-provider-header {
    gap: 0.75rem;
  }

  .email-provider-icon {
    flex-basis: 40px;
    width: 40px;
    height: 40px;
  }

  .email-provider-heading h3 {
    font-size: 1.05rem;
  }

  .email-provider-actions .btn {
    width: 100%;
    justify-content: center;
  }
}

/* --- CADASTRO DE CARGOS E PERMISSÕES --- */
.role-create-form {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(220px, 1fr) auto;
  align-items: end;
  gap: 1rem;
  margin-bottom: 1rem;
  padding: 1.25rem;
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

.role-create-form .form-group {
  min-width: 0;
  margin: 0;
}

.role-create-form :is(input, select) {
  width: 100%;
  min-height: 44px;
  padding: 0.65rem 0.75rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.9rem;
  transition:
    border-color var(--transition-fast),
    box-shadow var(--transition-fast),
    background-color var(--transition-fast);
}

.role-create-form :is(input, select):hover {
  border-color: rgba(100, 116, 139, 0.45);
}

.role-create-form :is(input, select):focus {
  outline: none;
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.14);
}

.role-create-form input::placeholder {
  color: var(--text-muted);
  opacity: 1;
}

.role-create-form > .btn {
  min-height: 44px;
  white-space: nowrap;
}

@media (max-width: 900px) {
  .role-create-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .role-create-form > .btn {
    grid-column: 1 / -1;
    justify-self: start;
  }
}

@media (max-width: 600px) {
  .role-create-form {
    grid-template-columns: 1fr;
    padding: 1rem;
  }

  .role-create-form > .btn {
    grid-column: auto;
    width: 100%;
    justify-content: center;
  }
}

/* --- FILTROS DE PEDIDOS DE COMPRA --- */
.shopping-orders-filter-form {
  display: grid;
  grid-template-columns:
    minmax(170px, 1.05fr)
    minmax(170px, 1fr)
    minmax(120px, 0.72fr)
    minmax(160px, 0.9fr)
    minmax(170px, 1fr)
    auto;
  align-items: end;
  gap: 1rem;
  margin-bottom: 1rem;
  padding: 1.25rem;
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

.shopping-orders-filter-form .form-group {
  min-width: 0;
  margin: 0;
}

.shopping-orders-filter-form :is(input, select) {
  width: 100%;
  min-height: 44px;
  padding: 0.65rem 0.75rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.88rem;
  transition:
    border-color var(--transition-fast),
    box-shadow var(--transition-fast),
    background-color var(--transition-fast);
}

.shopping-orders-filter-form :is(input, select):hover {
  border-color: rgba(100, 116, 139, 0.45);
}

.shopping-orders-filter-form :is(input, select):focus {
  outline: none;
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.14);
}

.shopping-orders-filter-form input::placeholder {
  color: var(--text-muted);
  opacity: 1;
}

.shopping-filter-actions {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.shopping-filter-actions .btn {
  min-height: 44px;
  white-space: nowrap;
}

@media (max-width: 1120px) {
  .shopping-orders-filter-form {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .shopping-filter-actions {
    grid-column: span 3;
  }
}

@media (max-width: 760px) {
  .shopping-orders-filter-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .shopping-filter-actions {
    grid-column: span 2;
  }
}

@media (max-width: 520px) {
  .shopping-orders-filter-form {
    grid-template-columns: 1fr;
    padding: 1rem;
  }

  .shopping-filter-actions {
    grid-column: auto;
  }

  .shopping-filter-actions .btn {
    flex: 1 1 0;
    justify-content: center;
  }
}

/* --- CONTROLES ESPECÍFICOS DO PLANNER --- */
.task-date-input {
  width: 100%;
  min-height: 44px;
  padding: 0.65rem 0.75rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.9rem;
  transition:
    border-color var(--transition-fast),
    box-shadow var(--transition-fast);
}

.task-date-input:hover {
  border-color: rgba(100, 116, 139, 0.45);
}

.task-date-input:focus {
  outline: none;
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.14);
}

.task-field-hint {
  display: block;
  margin-top: 0.4rem;
  color: var(--text-muted);
  font-size: 0.75rem;
  line-height: 1.4;
}

.task-inline-create-field {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  width: 100%;
  min-width: 0;
}

.task-inline-create-control {
  flex: 1 1 auto;
  width: auto;
  min-width: 0;
}

.task-inline-create-control > :is(input, select) {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

.task-inline-add-button {
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
  border-color: color-mix(in srgb, var(--primary-color) 30%, var(--border-color));
  background: color-mix(in srgb, var(--primary-color) 5%, var(--bg-surface-elevated));
  color: var(--primary-color);
}

.task-inline-add-button:hover {
  border-color: var(--primary-color);
  background: color-mix(in srgb, var(--primary-color) 10%, var(--bg-surface-elevated));
}

.task-inline-add-button:focus-visible {
  outline: 2px solid var(--primary-color);
  outline-offset: 2px;
}

.task-location-links-grid { min-width: 0; }
.task-location-links-grid .form-group { min-width: 0; margin: 0; }
.task-location-link-select {
  display: block; flex: 1 1 auto; width: 100%; min-width: 0; min-height: 46px; box-sizing: border-box;
  padding: .72rem 2.35rem .72rem .9rem; border: 1px solid var(--border-color); border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated); color: var(--text-primary); font: inherit; line-height: 1.2;
  cursor: pointer; outline: none; transition: border-color .2s ease, box-shadow .2s ease, background-color .2s ease;
}
.task-location-link-select:hover { border-color: color-mix(in srgb, var(--primary-color) 34%, var(--border-color)); }
.task-location-link-select:focus { border-color: var(--primary-color); background: var(--bg-surface); box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary-color) 16%, transparent); }
.task-location-links-grid .task-field-hint { display: block; margin-top: .4rem; line-height: 1.4; }

.task-checklist-editor {
  padding: 1rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--surface-subtle);
}

.task-checklist-editor-header,
.task-category-template-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.75rem;
}

.task-checklist-editor-header label { margin: 0; }
.task-checklist-editor-items,
.task-category-template-items { display: grid; gap: 0.55rem; }

.task-checklist-editor-row,
.task-category-template-row {
  display: flex;
  align-items: center;
  gap: 0.55rem;
}

.task-checklist-editor-row {
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr) 44px;
  min-width: 0;
}

.task-checklist-editor-row > i {
  width: 20px;
  color: var(--primary-color);
  font-size: 1rem;
  text-align: center;
}

.task-checklist-editor-row input,
.task-category-template-row input { flex: 1; min-width: 0; }

.task-checklist-editor-row input {
  width: 100%;
  min-height: 44px;
  padding: 0.65rem 0.75rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.88rem;
  box-sizing: border-box;
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

.task-checklist-editor-row input:hover {
  border-color: color-mix(in srgb, var(--primary-color) 38%, var(--border-color));
}

.task-checklist-editor-row input:focus {
  outline: none;
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.14);
}

.task-checklist-editor-row .btn-remove-task-checklist-item {
  width: 44px;
  height: 44px;
  color: var(--danger-color);
}

.task-checklist-editor-row .btn-remove-task-checklist-item:hover {
  color: #fff;
  border-color: var(--danger-color);
  background: var(--danger-color);
}

.task-checklist-editor-empty {
  padding: 0.75rem;
  border: 1px dashed var(--border-color);
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  font-size: 0.8rem;
  text-align: center;
}

.task-category-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  width: fit-content;
  margin-top: 0.65rem;
  padding: 0.2rem 0.45rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--primary-color) 10%, transparent);
  color: var(--primary-color);
  font-size: 0.68rem;
  font-weight: 700;
}

.task-card-checklist {
  margin-top: 0.7rem;
  padding: 0.65rem;
  border: 1px solid var(--border-color);
  border-radius: 8px;
  background: var(--surface-subtle);
}

.task-card-checklist-header {
  display: flex;
  justify-content: space-between;
  gap: 0.5rem;
  color: var(--text-secondary);
  font-size: 0.75rem;
}

.task-card-checklist-progress {
  height: 4px;
  margin: 0.45rem 0 0.55rem;
  overflow: hidden;
  border-radius: 999px;
  background: var(--border-color);
}

.task-card-checklist-progress span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--success-color);
  transition: width 180ms ease;
}

.task-card-checklist-items { display: grid; gap: 0.4rem; }
.task-card-checklist-item {
  display: flex;
  align-items: flex-start;
  gap: 0.45rem;
  color: var(--text-secondary);
  font-size: 0.76rem;
  line-height: 1.35;
  cursor: pointer;
}
.task-card-checklist-item input { margin-top: 0.12rem; accent-color: var(--success-color); }
.task-card-checklist-item.is-completed span { color: var(--text-muted); text-decoration: line-through; }

.task-category-config-form {
  display: grid;
  gap: 1rem;
  margin-bottom: 1.25rem;
  padding: 1rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-surface);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

.task-category-config-form .form-group {
  margin: 0;
}

.task-category-config-form input {
  width: 100%;
  min-width: 0;
  min-height: 44px;
  padding: 0.65rem 0.75rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.88rem;
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

.task-category-config-form input:hover {
  border-color: color-mix(in srgb, var(--primary-color) 38%, var(--border-color));
}

.task-category-config-form input:focus {
  outline: none;
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.14);
}

.task-category-template-header > div {
  min-width: 0;
}

.task-category-template-header small {
  display: block;
  margin-top: 0.2rem;
  color: var(--text-muted);
  line-height: 1.4;
}
.task-category-template-order {
  display: grid;
  place-items: center;
  width: 1.7rem;
  height: 1.7rem;
  flex: 0 0 auto;
  border-radius: 50%;
  background: color-mix(in srgb, var(--primary-color) 12%, transparent);
  color: var(--primary-color);
  font-size: 0.72rem;
  font-weight: 700;
}
.task-category-config-list { display: grid; gap: 0.75rem; }
.task-category-config-card {
  padding: 1rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-surface-elevated);
}
.task-category-config-card-header { display: flex; justify-content: space-between; gap: 1rem; }
.task-category-config-card-header h4 { margin: 0 0 0.25rem; color: var(--text-primary); }
.task-category-config-card-header h4 i { color: var(--primary-color); }
.task-category-config-card-header span { color: var(--text-muted); font-size: 0.75rem; }
.task-category-config-checklist { display: grid; gap: 0.4rem; margin-top: 0.8rem; padding-top: 0.75rem; border-top: 1px solid var(--border-color); }
.task-category-config-checklist > div { display: flex; gap: 0.45rem; color: var(--text-secondary); font-size: 0.8rem; }
.task-category-config-checklist > div i { color: var(--success-color); margin-top: 0.12rem; }
.task-category-no-checklist { color: var(--text-muted); font-size: 0.8rem; font-style: italic; }

@media (max-width: 640px) {
  .task-category-config-form {
    padding: 0.85rem;
  }

  .task-category-template-header {
    align-items: stretch;
    flex-direction: column;
  }

  .task-category-template-header .btn {
    width: 100%;
    justify-content: center;
  }

  .task-category-template-row {
    align-items: stretch;
  }

  .task-category-template-row .btn-icon {
    flex: 0 0 44px;
    width: 44px;
    height: 44px;
  }

  .task-category-config-form .task-option-form-actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .task-category-config-form .task-option-form-actions .btn {
    width: 100%;
    justify-content: center;
  }

  .task-category-config-card-header {
    align-items: flex-start;
  }
}

.task-photo-field {
  padding-top: 1rem;
  border-top: 1px solid var(--border-color);
}

.task-photo-picker {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-top: 0.45rem;
  padding: 0.85rem;
  border: 1px dashed var(--border-color);
  border-radius: var(--radius-md);
  background: var(--surface-subtle);
}

.task-photo-preview {
  width: 112px;
  height: 88px;
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  overflow: hidden;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-muted);
  text-align: center;
}

.task-photo-preview i { font-size: 1.5rem; }
.task-photo-preview span { padding: 0 0.3rem; font-size: 0.68rem; }
.task-photo-preview img { width: 100%; height: 100%; object-fit: cover; }
.task-photo-actions { display: flex; flex: 1; flex-wrap: wrap; gap: 0.5rem; }

.task-card-photo {
  width: 100%;
  height: 145px;
  margin: 0.7rem 0 0;
  overflow: hidden;
  border: 1px solid var(--border-color);
  border-radius: 8px;
  background: var(--surface-subtle);
}

.task-card-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }

@media (max-width: 560px) {
  .task-checklist-editor-header {
    align-items: stretch;
    flex-direction: column;
  }

  .task-checklist-editor-header .btn {
    width: 100%;
    justify-content: center;
  }

  .task-photo-picker { align-items: stretch; flex-direction: column; }
  .task-photo-preview { width: 100%; height: 150px; }
  .task-photo-actions .btn { flex: 1 1 145px; justify-content: center; }
}

.task-optional-label {
  display: inline-flex;
  margin-left: 0.35rem;
  padding: 0.1rem 0.4rem;
  border-radius: 999px;
  background: var(--surface-subtle);
  color: var(--text-muted);
  font-size: 0.65rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  vertical-align: middle;
}

.task-equipment-field {
  position: relative;
  display: flex;
  align-items: center;
  flex: 1;
  min-width: 0;
}

.task-equipment-field > i {
  position: absolute;
  left: 1rem;
  z-index: 1;
  color: var(--primary-color);
  pointer-events: none;
}

.task-equipment-field input {
  width: 100%;
  min-height: 44px;
  padding-left: 2.75rem;
  padding-right: 3rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.88rem;
  transition:
    border-color var(--transition-fast),
    box-shadow var(--transition-fast);
}

.task-equipment-field input:hover {
  border-color: rgba(100, 116, 139, 0.45);
}

.task-equipment-field input:focus {
  outline: none;
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.14);
}

.task-clear-equipment {
  position: absolute;
  right: 0.45rem;
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  padding: 0;
  border: 0;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
}

.task-clear-equipment[hidden] {
  display: none;
}

.task-clear-equipment:hover {
  background: var(--surface-subtle);
  color: var(--text-primary);
}

.task-clear-equipment:focus-visible {
  outline: 2px solid var(--primary-color);
  outline-offset: 2px;
}

.task-equipment-chip {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  margin-top: 0.65rem;
  padding: 0.55rem 0.7rem;
  border: 1px solid color-mix(in srgb, var(--primary-color) 22%, var(--border-color));
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--primary-color) 6%, var(--bg-surface-elevated));
  color: var(--text-secondary);
  font-size: 0.75rem;
  line-height: 1.3;
}

.task-equipment-chip > i {
  flex: 0 0 auto;
  color: var(--primary-color);
}

.task-equipment-chip span {
  min-width: 0;
  overflow-wrap: anywhere;
}

.task-equipment-chip strong {
  display: block;
  color: var(--text-primary);
  font-size: 0.72rem;
}

.task-maintenance-room-chip {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  margin-top: 0.55rem;
  padding: 0.55rem 0.7rem;
  border: 1px solid color-mix(in srgb, var(--warning-color) 28%, var(--border-color));
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--warning-color) 7%, var(--bg-surface-elevated));
  color: var(--text-secondary);
  font-size: 0.75rem;
  line-height: 1.3;
}

.task-maintenance-room-chip > i {
  flex: 0 0 auto;
  color: var(--warning-color);
}

.task-maintenance-room-chip span,
.task-maintenance-room-chip strong,
.task-maintenance-room-chip small {
  display: block;
  min-width: 0;
  overflow-wrap: anywhere;
}

.task-maintenance-room-chip strong {
  color: var(--text-primary);
}

.task-maintenance-room-chip small {
  margin-top: 0.1rem;
  color: var(--text-muted);
  font-size: 0.68rem;
}

.task-modal-subtitle {
  margin: 0.2rem 0 0;
  color: var(--text-muted);
  font-size: 0.75rem;
  line-height: 1.35;
}

.task-quick-equipment-form {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.task-quick-equipment-form :is(input, select, textarea) {
  width: 100%;
  min-height: 44px;
  padding: 0.65rem 0.75rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.88rem;
}

.task-quick-equipment-form textarea {
  min-height: 76px;
  resize: vertical;
}

.task-quick-equipment-form :is(input, select, textarea):focus {
  outline: none;
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.14);
}

.task-online-save-note {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  margin: 0;
  padding: 0.7rem 0.8rem;
  border: 1px solid color-mix(in srgb, var(--primary-color) 18%, var(--border-color));
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--primary-color) 5%, var(--bg-surface-elevated));
  color: var(--text-secondary);
  font-size: 0.76rem;
  line-height: 1.4;
}

.task-online-save-note i {
  margin-top: 0.08rem;
  color: var(--primary-color);
}

/* --- IDENTIDADE VISUAL E CABEÇALHO DE IMPRESSOS --- */
.branding-print-card,
.branding-apply-all-card {
  padding: 1.25rem;
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

.branding-check-row {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  color: var(--text-primary);
  font-size: 0.88rem;
  line-height: 1.45;
  cursor: pointer;
}

.branding-check-row--primary {
  margin-bottom: 1.25rem;
  font-size: 0.92rem;
}

.branding-check-row input[type="checkbox"],
.permission-screen-card input[type="checkbox"] {
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  margin-top: 0.1rem;
  accent-color: var(--primary-color);
  cursor: pointer;
}

.branding-print-card :is(input[type="text"], input[type="number"]) {
  width: 100%;
  min-height: 44px;
  padding: 0.65rem 0.75rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.88rem;
}

.branding-print-card :is(input[type="text"], input[type="number"]):focus,
.branding-radius-control input:focus {
  outline: none;
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.14);
}

.branding-print-details {
  margin: 1rem 0;
}

.branding-print-orientation {
  max-width: 420px;
  margin-top: 0.75rem;
}

.branding-print-orientation-control {
  width: 100%;
}

.branding-print-orientation-control select {
  min-height: 44px;
  font-size: 0.88rem;
  cursor: pointer;
}

.branding-print-orientation-help {
  display: flex;
  align-items: flex-start;
  gap: 0.4rem;
  margin: 0;
  color: var(--text-secondary);
  font-size: 0.78rem;
  line-height: 1.45;
}

.branding-print-orientation-help i {
  margin-top: 0.12rem;
  color: var(--primary-color);
}

.branding-color-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.25rem;
  margin-top: 1.25rem;
  padding: 1.25rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--surface-subtle);
}

.branding-color-control,
.branding-radius-control {
  display: flex;
  min-height: 44px;
  align-items: center;
  gap: 0.75rem;
}

.branding-color-control input[type="color"] {
  width: 44px;
  height: 44px;
  padding: 3px;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface);
  cursor: pointer;
}

.branding-color-control input[type="color"]::-webkit-color-swatch-wrapper {
  padding: 0;
}

.branding-color-control input[type="color"]::-webkit-color-swatch {
  border: 0;
  border-radius: 5px;
}

.branding-color-control span {
  color: var(--text-secondary);
  font-family: monospace;
  font-size: 0.85rem;
}

.branding-radius-control input {
  width: 80px;
  min-height: 44px;
  padding: 0.65rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  text-align: center;
}

.branding-radius-control span {
  color: var(--text-secondary);
  font-size: 0.8rem;
}

.branding-apply-all-card {
  margin-top: 1rem;
}

.branding-apply-all-card p {
  margin: 0.5rem 0 0 1.9rem;
  color: var(--text-secondary);
  font-size: 0.78rem;
  line-height: 1.5;
}

@media (max-width: 620px) {
  .branding-print-grid,
  .branding-color-grid {
    grid-template-columns: 1fr;
  }

  .branding-print-card,
  .branding-apply-all-card,
  .branding-color-grid {
    padding: 1rem;
  }

  .branding-apply-all-card p {
    margin-left: 0;
  }
}

/* --- MODAL DE USUÁRIOS E MATRIZ DE PERMISSÕES --- */
.user-modal-content {
  max-width: 900px !important;
  max-height: min(92dvh, 920px);
}

.user-modal-body {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  max-height: none !important;
}

.user-permissions-panel {
  padding: 1.25rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--surface-subtle);
}

.user-permissions-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-bottom: 0.75rem;
}

.user-permissions-header h4 {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0;
  font-family: var(--font-header);
  font-size: 0.98rem;
}

.user-permissions-header .btn {
  min-height: 36px;
  padding: 0.45rem 0.75rem;
  background: var(--bg-surface);
  color: var(--text-primary);
  font-size: 0.75rem;
}

.user-permissions-help {
  margin: 0 0 1rem;
  color: var(--text-secondary);
  font-size: 0.8rem;
  line-height: 1.5;
}

.permissions-matrix {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
}

.permission-screen-card {
  min-width: 0;
  padding: 0.9rem 1rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface);
}

.permission-screen-toggle,
.permission-action-toggle {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  cursor: pointer;
}

.permission-screen-toggle {
  color: var(--text-primary);
  font-size: 0.86rem;
  font-weight: 600;
}

.permission-actions-list {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  margin: 0.6rem 0 0 1.6rem;
}

.permission-action-toggle {
  color: var(--text-secondary);
  font-size: 0.78rem;
  line-height: 1.35;
}

@media (max-width: 620px) {
  .permissions-matrix {
    grid-template-columns: 1fr;
  }

  .user-permissions-panel {
    padding: 1rem;
  }

  .user-permissions-header .btn {
    width: 100%;
    justify-content: center;
  }
}

.input-container input:focus + i {
  color: var(--primary-color);
}

.login-btn {
  background: var(--primary-gradient);
  border: none;
  color: #fff;
  padding: 0.85rem;
  border-radius: var(--radius-sm);
  font-family: var(--font-header);
  font-weight: 700;
  font-size: 1rem;
  cursor: pointer;
  transition:
    transform var(--transition-normal),
    box-shadow var(--transition-normal),
    filter var(--transition-normal);
  box-shadow: 0 4px 15px var(--primary-glow);
  margin-top: 0.5rem;
}

.login-btn:hover {
  background: var(--primary-hover);
  transform: translateY(-2px);
  box-shadow: 0 6px 20px var(--primary-glow);
  filter: none;
}

.login-btn:active {
  transform: translateY(0);
}

.login-error {
  background: rgba(239, 68, 68, 0.1);
  border: 1px solid var(--danger-color);
  color: var(--danger-color);
  padding: 0.75rem;
  border-radius: var(--radius-sm);
  font-size: 0.85rem;
  text-align: center;
  animation: shake 0.4s ease-in-out;
}

.login-success {
  background: rgba(22, 163, 74, 0.1);
  border: 1px solid var(--success-color);
  color: var(--success-color);
  padding: 0.75rem;
  border-radius: var(--radius-sm);
  font-size: 0.85rem;
  text-align: center;
}

/* --- TELA PRINCIPAL (DASHBOARD & MURAL) --- */
.page-content {
  padding: 2rem;
  display: flex;
  flex-direction: column;
  gap: 2rem;
  min-width: 0;
  animation: page-enter var(--motion-base) var(--ease-emphasized);
}

/* Abas de Configurações: ocupam toda a largura e não deixam o conteúdo
   da aba influenciar a organização da faixa de navegação. */
.config-tabs {
  width: 100%;
  flex: 0 0 auto;
  align-content: flex-start;
}

.config-tab-content {
  width: 100%;
  min-width: 0;
  flex: 0 0 auto;
}

/* --- SOBRE O SISTEMA --- */
.about-page { max-width: 1080px; }
.about-header { margin-bottom: -0.75rem; }
.about-header h2 { margin: 0; font-family: var(--font-header); font-size: 1.65rem; color: var(--text-primary); }
.about-header p:not(.about-eyebrow) { margin: 0.4rem 0 0; color: var(--text-secondary); }
.about-eyebrow { margin: 0 0 0.45rem; color: var(--primary-color); font-size: 0.82rem; font-weight: 700; }
.about-tabs { margin-bottom: -0.75rem; }
.about-tab-panel { width: 100%; }
.about-system-card, .about-detail-card, .about-release-card, .about-history-intro {
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
}
.about-system-card { display: flex; align-items: center; gap: 1.25rem; padding: 1.5rem; }
.about-system-mark { width: 58px; height: 58px; display: grid; place-items: center; flex: 0 0 auto; border-radius: var(--radius-sm); background: color-mix(in srgb, var(--primary-color) 13%, var(--bg-surface)); color: var(--primary-color); font-size: 1.5rem; }
.about-system-card h3, .about-history-intro h3 { margin: 0; font-family: var(--font-header); color: var(--text-primary); }
.about-system-card p, .about-history-intro p { margin: 0.45rem 0 0; color: var(--text-secondary); line-height: 1.55; }
.about-details-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin-top: 1rem; }
.about-detail-card { display: flex; gap: 0.8rem; align-items: flex-start; padding: 1rem; }
.about-detail-card > i { color: var(--primary-color); margin-top: 0.15rem; }
.about-detail-card span { display: block; color: var(--text-secondary); font-size: 0.78rem; margin-bottom: 0.2rem; }
.about-detail-card strong { display: block; color: var(--text-primary); font-size: 0.92rem; line-height: 1.35; }
.about-history-intro { padding: 1.25rem 1.5rem; }
.about-history-list { display: grid; gap: 0.85rem; margin-top: 1rem; }
.about-release-card { padding: 1.1rem 1.25rem; border-left: 4px solid var(--primary-color); }
.about-release-heading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.about-release-version { font-family: var(--font-header); font-weight: 700; color: var(--text-primary); }
.about-release-heading time { color: var(--text-secondary); font-size: 0.83rem; }
.about-release-card ul { margin: 0.75rem 0 0; padding-left: 1.1rem; color: var(--text-secondary); }
.about-release-card li + li { margin-top: 0.38rem; }

@media (max-width: 700px) {
  .about-details-grid { grid-template-columns: 1fr; }
  .about-system-card { align-items: flex-start; }
  .about-release-heading { align-items: flex-start; flex-direction: column; gap: 0.25rem; }
}

.users-filter-bar {
  display: grid;
  grid-template-columns: minmax(240px, 1fr) minmax(190px, 0.8fr) minmax(180px, 0.65fr) auto;
  align-items: end;
  gap: 0.75rem;
  margin-bottom: 1rem;
  padding: 1rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-surface);
}

.scheduler-room-first-field {
  padding: 1rem;
  border: 1px solid color-mix(in srgb, var(--primary-color) 30%, var(--border-color));
  border-radius: var(--radius-md);
  background: color-mix(in srgb, var(--primary-color) 5%, var(--bg-surface));
}

.scheduler-room-first-control {
  display: flex;
  width: 100%;
  gap: 0.5rem;
}

.scheduler-room-search-shell {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
}

.scheduler-room-search-shell input {
  width: 100%;
  min-height: 46px;
  padding: 0.75rem 1rem;
}

.scheduler-room-suggestions {
  position: absolute;
  top: calc(100% + 0.25rem);
  left: 0;
  z-index: 30;
}

.scheduler-room-suggestion .sched-material-suggestion-name {
  white-space: normal;
}

.scheduler-room-no-results {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.85rem;
  color: var(--text-muted);
  font-size: 0.82rem;
}

.scheduler-created-at-cell {
  min-width: 130px;
  color: var(--text-secondary) !important;
  font-size: 0.8rem;
  line-height: 1.45;
}

.scheduler-created-at-cell i {
  margin-right: 0.25rem;
  color: var(--primary-color);
}

.scheduler-created-at-missing {
  color: var(--text-muted);
  font-style: italic;
}

.scheduler-room-first-control .btn {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 46px;
  height: 46px;
  padding: 0;
  font-size: 1.1rem;
  font-weight: 700;
}

.scheduler-professional-control {
  display: flex;
  width: 100%;
  gap: 0.5rem;
}

.scheduler-professional-search-shell {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
}

.scheduler-professional-search-shell input {
  width: 100%;
  min-height: 46px;
  padding: 0.75rem 1rem;
}

.scheduler-professional-suggestions {
  position: absolute;
  top: calc(100% + 0.25rem);
  left: 0;
  z-index: 30;
}

.scheduler-professional-suggestion .sched-material-suggestion-name {
  white-space: normal;
}

.scheduler-professional-control .btn {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 46px;
  height: 46px;
  padding: 0;
  font-size: 1.1rem;
  font-weight: 700;
}

.scheduler-professional-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
}

.users-filter-field {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  min-width: 0;
}

.users-filter-field label {
  color: var(--text-secondary);
  font-size: 0.78rem;
  font-weight: 600;
}

.users-filter-field .input-container {
  width: 100%;
}

.users-filter-field :is(input, select) {
  width: 100%;
  min-height: 46px;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  transition: border-color var(--motion-fast), box-shadow var(--motion-fast);
}

.users-filter-field :is(input, select):focus {
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px var(--primary-glow);
  outline: none;
}

.users-filter-select select {
  cursor: pointer;
  appearance: auto;
}

.users-clear-filters {
  min-height: 44px;
  white-space: nowrap;
}

.users-filter-count {
  grid-column: 1 / -1;
  justify-self: end;
  align-self: center;
  color: var(--text-muted);
  font-size: 0.78rem;
  white-space: nowrap;
}

.users-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.35rem;
  padding: 2rem;
  color: var(--text-muted);
  text-align: center;
}

.users-empty-state i {
  margin-bottom: 0.25rem;
  font-size: 1.5rem;
}

.users-empty-state strong {
  color: var(--text-primary);
}

@media (max-width: 980px) {
  .users-filter-bar {
    grid-template-columns: 1fr 1fr;
  }

  .users-clear-filters { align-self: end; }
}

@media (max-width: 600px) {
  .users-filter-bar {
    grid-template-columns: 1fr;
  }

  .users-filter-count {
    justify-self: start;
  }
}

/* Grade de salas: mantém cabeçalho e ações acessíveis em áreas mais baixas. */
.config-rooms-grid {
  width: 100%;
  min-width: 0;
}

.config-rooms-table-wrapper {
  max-height: min(62dvh, 640px);
  overflow: auto;
  scrollbar-gutter: stable;
}

.config-rooms-table {
  min-width: 880px;
  table-layout: fixed;
}

.config-rooms-table th {
  position: sticky;
  top: 0;
  z-index: 2;
}

.config-rooms-table th:nth-child(1) { width: 17%; }
.config-rooms-table th:nth-child(2) { width: 17%; }
.config-rooms-table th:nth-child(3) { width: 14%; }
.config-rooms-table th:nth-child(4) { width: 28%; }
.config-rooms-table th:nth-child(5) { width: 12%; }
.config-rooms-table th:nth-child(6) { width: 12%; }

.config-rooms-table td {
  vertical-align: middle;
  overflow-wrap: anywhere;
}

.config-rooms-table .table-actions {
  flex-wrap: nowrap;
  white-space: nowrap;
}

@media (max-width: 768px) {
  .config-rooms-toolbar > div {
    max-width: none !important;
    justify-content: stretch !important;
  }

  .config-rooms-toolbar input {
    max-width: none !important;
  }

  .config-rooms-table-wrapper {
    max-height: none;
    overflow: visible !important;
  }

  .config-rooms-table {
    min-width: 0;
    table-layout: auto;
  }
}

/* --- LIXEIRA OPERACIONAL --- */
.trash-panel {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  min-width: 0;
}

.trash-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.trash-panel-heading {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  min-width: 0;
}

.trash-panel-icon {
  display: grid;
  place-items: center;
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
  border: 1px solid color-mix(in srgb, var(--danger-color) 24%, var(--border-color));
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--danger-color) 9%, var(--bg-surface));
  color: var(--danger-color);
}

.trash-panel-heading h3 {
  margin: 0;
  color: var(--text-primary);
  font-size: 1.15rem;
}

.trash-panel-heading p {
  margin: 0.25rem 0 0;
  color: var(--text-secondary);
  font-size: 0.82rem;
  line-height: 1.45;
}

.trash-count-badge {
  flex: 0 0 auto;
  padding: 0.4rem 0.7rem;
  border: 1px solid var(--border-color);
  border-radius: 999px;
  background: var(--bg-surface);
  color: var(--text-secondary);
  font-size: 0.75rem;
  font-weight: 700;
}

.trash-filter-card {
  display: grid;
  grid-template-columns: minmax(210px, 280px) auto minmax(150px, 1fr);
  align-items: end;
  gap: 1rem;
  padding: 1rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-surface);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

.trash-date-field {
  min-width: 0;
}

.trash-date-field label {
  display: block;
  margin-bottom: 0.4rem;
  color: var(--text-secondary);
  font-size: 0.75rem;
  font-weight: 600;
}

.trash-date-field input {
  width: 100%;
  min-height: 44px;
  padding: 0.6rem 0.75rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.86rem;
}

.trash-date-field input:focus {
  outline: none;
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.14);
}

.trash-filter-actions {
  display: flex;
  align-items: center;
  gap: 0.55rem;
}

.trash-filter-actions .btn {
  white-space: nowrap;
}

.trash-filter-summary {
  display: grid;
  justify-items: end;
  align-self: center;
  gap: 0.05rem;
  color: var(--text-secondary);
  font-size: 0.72rem;
}

.trash-filter-summary strong {
  color: var(--text-primary);
  font-size: 0.9rem;
}

.trash-filter-summary small {
  color: var(--text-muted);
  font-size: 0.7rem;
}

.trash-table-wrapper {
  overflow-x: auto;
}

.trash-table {
  min-width: 960px;
}

.trash-store-code {
  display: inline-flex;
  padding: 0.3rem 0.5rem;
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-secondary);
  font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
  font-size: 0.73rem;
  font-weight: 600;
}

.trash-item-name {
  font-weight: 600;
}

.trash-deleted-at {
  color: var(--text-secondary) !important;
  font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
  font-size: 0.78rem;
}

.trash-deleted-by {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  color: var(--text-secondary);
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--text-primary);
  font-family: inherit;
  cursor: pointer;
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);
}

.sync-diagnostics-modal-content { max-width: 760px; }
.sync-diagnostics-modal-body { display: grid; gap: 1rem; }
.sync-diagnostics-modal-help {
  margin: 0;
  padding: .85rem 1rem;
  border: 1px solid color-mix(in srgb, var(--warning-color) 45%, var(--border-color));
  border-radius: var(--radius-sm);
  background: var(--surface-subtle);
  color: var(--text-secondary);
  font-size: .86rem;
  line-height: 1.5;
}
.sync-diagnostics-modal-help i { color: var(--warning-color); margin-right: .4rem; }
.sync-diagnostics-list { display: grid; gap: .75rem; }
.sync-diagnostic-item {
  padding: .9rem;
  border: 1px solid color-mix(in srgb, var(--warning-color) 38%, var(--border-color));
  border-radius: var(--radius-sm);
  background: var(--surface-subtle);
}
.sync-diagnostic-item > div { display: grid; gap: .4rem; min-width: 0; }
.sync-diagnostic-item span { color: var(--text-secondary); font-size: .82rem; overflow-wrap: anywhere; }
.sync-diagnostic-rejected-item { border-color: color-mix(in srgb, var(--danger-color) 35%, var(--border-color)); }

.trash-deleted-by i {
  color: var(--primary-color);
}

.trash-row-actions {
  flex-wrap: wrap;
}

.trash-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  min-height: 150px;
  padding: 1.5rem;
  text-align: center;
}

.trash-empty-state > i {
  margin-bottom: 0.35rem;
  color: var(--text-muted);
  font-size: 1.6rem;
}

.trash-empty-state strong {
  color: var(--text-primary);
  font-size: 0.92rem;
}

.trash-empty-state span {
  max-width: 360px;
  color: var(--text-muted);
  font-size: 0.78rem;
  line-height: 1.45;
}

@media (max-width: 768px) {
  .trash-panel-header {
    align-items: flex-start;
  }

  .trash-panel-heading {
    align-items: flex-start;
  }

  .trash-panel-icon {
    flex-basis: 40px;
    width: 40px;
    height: 40px;
  }

  .trash-count-badge {
    margin-top: 0.15rem;
  }

  .trash-filter-card {
    grid-template-columns: 1fr;
    align-items: stretch;
  }

  .trash-filter-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }

  .trash-filter-summary {
    justify-items: start;
    padding-top: 0.75rem;
    border-top: 1px solid var(--border-color);
  }

  .trash-table {
    min-width: 0;
  }

  .trash-empty-row,
  .trash-empty-row td {
    display: block !important;
  }

  .trash-empty-row td {
    padding: 0 !important;
    border: 0 !important;
    text-align: center !important;
  }

  .trash-empty-row td::before {
    display: none !important;
    content: none !important;
  }

  .trash-empty-state {
    min-height: 130px;
  }

  .trash-row-actions {
    gap: 0.5rem;
  }

  .trash-row-actions .btn {
    flex: 1 1 150px;
  }
}

/* --- CATÁLOGOS DE OPÇÕES DAS TAREFAS --- */
.task-options-shell {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  min-width: 0;
}

.task-options-header {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) auto;
  align-items: center;
  gap: 0.9rem;
}

.task-options-icon {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: 1px solid color-mix(in srgb, var(--primary-color) 24%, var(--border-color));
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--primary-color) 8%, var(--bg-surface));
  color: var(--primary-color);
}

.task-options-header h3 {
  margin: 0;
  color: var(--text-primary);
  font-size: 1.15rem;
}

.task-options-header p {
  margin: 0.25rem 0 0;
  color: var(--text-secondary);
  font-size: 0.82rem;
  line-height: 1.45;
}

.task-options-count {
  padding: 0.4rem 0.7rem;
  border: 1px solid var(--border-color);
  border-radius: 999px;
  background: var(--bg-surface);
  color: var(--text-secondary);
  font-size: 0.75rem;
  font-weight: 700;
  white-space: nowrap;
}

.task-option-form {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) auto;
  align-items: end;
  gap: 1rem;
  padding: 1rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-surface);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

.task-option-form .form-group {
  margin: 0;
}

.task-option-form input,
.task-option-form select {
  width: 100%;
  min-height: 44px;
  padding: 0.65rem 0.75rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.88rem;
}

.task-option-form input:focus,
.task-option-form select:focus {
  outline: none;
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.14);
}

.task-option-form-actions {
  display: flex;
  align-items: center;
  gap: 0.55rem;
}

.reservation-purposes-manager-shell .task-option-form {
  grid-template-columns: minmax(220px, 1fr) minmax(300px, 1.2fr) auto;
}

.reservation-purpose-fields {
  min-width: 0;
  margin: 0;
  padding: 0.75rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.55rem;
}

.reservation-purpose-fields legend {
  padding: 0 0.35rem;
  color: var(--text-secondary);
  font-size: 0.76rem;
  font-weight: 700;
}

.reservation-purpose-checkbox {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  cursor: pointer;
}

.task-option-form .reservation-purpose-checkbox input[type="checkbox"],
.reservation-purpose-checkbox input[type="checkbox"] {
  flex: 0 0 auto;
  width: 18px;
  min-height: 18px;
  height: 18px;
  margin: 0.1rem 0 0;
  padding: 0;
  accent-color: var(--primary-color);
}

.reservation-purpose-checkbox span {
  display: grid;
  gap: 0.1rem;
  min-width: 0;
}

.reservation-purpose-checkbox strong {
  color: var(--text-primary);
  font-size: 0.84rem;
}

.reservation-purpose-checkbox small {
  color: var(--text-secondary);
  font-size: 0.73rem;
  line-height: 1.35;
}

.reservation-purpose-field-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}

.courses-manager-shell .task-option-form {
  grid-template-columns: minmax(220px, 1fr) minmax(360px, 1.45fr) auto;
}


.scheduler-withdrawal-fields {
  border: 1px solid rgba(22, 163, 74, 0.32);
  border-radius: var(--radius-md);
  padding: 1rem;
  background: rgba(22, 163, 74, 0.06);
}

.scheduler-withdrawal-fields[hidden],
.scheduler-withdrawal-fields [hidden] {
  display: none !important;
}

.scheduler-withdrawal-heading {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  margin-bottom: 0.9rem;
  color: var(--primary-color);
}

.scheduler-withdrawal-heading > div {
  display: grid;
  gap: 0.15rem;
}

.scheduler-withdrawal-heading span {
  color: var(--text-secondary);
  font-size: 0.76rem;
  font-weight: 400;
}

.scheduler-withdrawal-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.85rem;
}

.scheduler-withdrawal-status-field {
  grid-column: 1 / -1;
}

.scheduler-record-type-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  margin: 0 0.3rem 0.35rem 0;
  padding: 0.24rem 0.45rem;
  border-radius: 999px;
  background: rgba(22, 163, 74, 0.12);
  color: var(--primary-color);
  font-size: 0.7rem;
  font-weight: 700;
}

.scheduler-withdrawal-dates-summary {
  display: grid;
  gap: 0.12rem;
  margin-top: 0.3rem;
  color: var(--text-secondary);
  font-size: 0.7rem;
  font-weight: 500;
}

.task-options-table {
  min-width: 720px;
}

.task-option-value {
  font-weight: 600;
}

.task-option-usage {
  display: inline-flex;
  padding: 0.3rem 0.5rem;
  border-radius: 999px;
  background: var(--bg-surface-elevated);
  color: var(--text-secondary);
  font-size: 0.72rem;
  font-weight: 600;
}

.task-option-created-at {
  color: var(--text-secondary) !important;
  font-size: 0.78rem;
}

.task-option-row-actions {
  align-items: center;
}

.task-option-row-actions .btn-icon {
  width: 44px;
  height: 44px;
}

.task-option-row-actions .btn-delete-task-option {
  color: var(--danger-color);
}

.maintenance-room-name {
  display: block;
}

.maintenance-room-status-badge {
  display: inline-flex;
  align-items: center;
  margin-top: 0.4rem;
  padding: 0.25rem 0.5rem;
  border: 1px solid transparent;
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 700;
  line-height: 1;
}

.maintenance-room-status-badge.is-disponivel {
  border-color: color-mix(in srgb, var(--success-color) 28%, transparent);
  background: color-mix(in srgb, var(--success-color) 10%, var(--bg-surface));
  color: var(--success-color);
}

.maintenance-room-status-badge.is-em_manutencao {
  border-color: color-mix(in srgb, var(--warning-color) 32%, transparent);
  background: color-mix(in srgb, var(--warning-color) 11%, var(--bg-surface));
  color: var(--warning-color);
}

.maintenance-room-status-badge.is-indisponivel {
  border-color: color-mix(in srgb, var(--danger-color) 28%, transparent);
  background: color-mix(in srgb, var(--danger-color) 9%, var(--bg-surface));
  color: var(--danger-color);
}

.btn-change-maintenance-room-status {
  color: var(--primary-color);
}

.btn-delete-maintenance-room {
  color: var(--danger-color);
}

.maintenance-room-form-control[readonly] {
  cursor: default;
  background: var(--bg-surface-elevated);
  color: var(--text-secondary);
}

.task-options-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  min-height: 145px;
  padding: 1.5rem;
  text-align: center;
}

.task-options-empty-state i {
  margin-bottom: 0.35rem;
  color: var(--text-muted);
  font-size: 1.55rem;
}

.task-options-empty-state strong {
  color: var(--text-primary);
  font-size: 0.92rem;
}

.task-options-empty-state span {
  color: var(--text-muted);
  font-size: 0.78rem;
}

.task-options-note {
  display: flex;
  align-items: flex-start;
  gap: 0.45rem;
  margin: 0;
  color: var(--text-muted);
  font-size: 0.75rem;
  line-height: 1.45;
}

.task-options-note i {
  margin-top: 0.12rem;
  color: var(--primary-color);
}

/* Modal do catálogo independente de ambientes de manutenção. */
.maintenance-room-modal-content {
  max-width: 520px;
}

.professor-manager-toolbar {
  align-items: end;
}

.professor-manager-search-group {
  flex: 1 1 360px;
}

.professors-table th:nth-child(1) { width: 18%; }
.professors-table th:nth-child(2) { width: 16%; }
.professors-table th:nth-child(3) { width: 22%; }
.professors-table th:nth-child(4) { width: 17%; }
.professors-table th:nth-child(5) { width: 15%; }
.professors-table th:nth-child(6) { width: 12%; }

.professor-name {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  font-weight: 700;
}

.professor-name i,
.professor-contact a i {
  color: var(--primary-color);
}

.professor-contact {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 0.2rem;
}

.professor-contact a,
.professor-contact small,
.professor-contact span {
  overflow-wrap: anywhere;
}

.professor-contact a {
  color: var(--text-primary);
  text-decoration: none;
}

.professor-contact small,
.professor-contact span {
  color: var(--text-secondary);
}

.professor-user-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.3rem 0.5rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--primary-color) 10%, var(--bg-surface));
  color: var(--primary-color);
  font-size: 0.75rem;
  font-weight: 700;
}

.professor-modal-content {
  max-width: 680px;
}

.professor-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.professor-form-full {
  grid-column: 1 / -1;
}

.maintenance-room-modal-body {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.maintenance-room-modal-body .form-group {
  margin: 0;
}

.maintenance-room-modal-body .form-group label {
  color: var(--text-secondary);
  font-size: 0.85rem;
  font-weight: 600;
}

.maintenance-room-form-control {
  width: 100%;
  min-height: 44px;
  padding: 0.7rem 0.85rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  outline: none;
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.9rem;
  line-height: 1.35;
  transition:
    border-color var(--transition-fast),
    box-shadow var(--transition-fast),
    background-color var(--transition-fast);
}

.maintenance-room-form-control::placeholder {
  color: var(--text-muted);
  opacity: 1;
}

.maintenance-room-form-control:hover:not(:disabled) {
  border-color: color-mix(in srgb, var(--primary-color) 42%, var(--border-color));
}

.maintenance-room-form-control:focus-visible {
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary-color) 16%, transparent);
  background: var(--bg-surface);
}

.maintenance-room-form-control:disabled {
  cursor: not-allowed;
  opacity: 0.65;
}

.room-reservation-settings {
  display: grid;
  grid-template-columns: minmax(140px, 0.8fr) repeat(2, minmax(140px, 1fr));
  gap: 1rem;
}

.room-reservation-settings input {
  min-height: 44px;
}

.room-reservation-window {
  display: block;
  margin-top: 0.3rem;
  color: var(--text-secondary);
  font-size: 0.75rem;
  font-weight: 500;
}

.room-fixed-schedule-summary {
  display: block;
  margin-top: 0.25rem;
  color: var(--text-muted);
  font-size: 0.72rem;
  line-height: 1.35;
}

.room-fixed-schedule-card {
  min-width: 0;
  margin: 0;
  padding: 1rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: color-mix(in srgb, var(--primary-color) 3%, var(--bg-surface));
}

.room-fixed-schedule-card legend {
  padding: 0 0.4rem;
  color: var(--text-primary);
  font-family: var(--font-header);
  font-size: 0.9rem;
  font-weight: 700;
}

.room-fixed-schedule-card > p {
  margin: 0 0 1rem;
  color: var(--text-secondary);
  font-size: 0.78rem;
  line-height: 1.45;
}

.room-fixed-time-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.room-fixed-weekdays {
  margin-top: 1rem;
}

.room-fixed-weekdays > span {
  display: block;
  margin-bottom: 0.5rem;
  color: var(--text-secondary);
  font-size: 0.82rem;
  font-weight: 600;
}

.room-weekday-options {
  display: grid;
  grid-template-columns: repeat(7, minmax(44px, 1fr));
  gap: 0.45rem;
}

.room-weekday-option {
  position: relative;
  min-width: 0;
  cursor: pointer;
}

.room-weekday-option input {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
}

.room-weekday-option span {
  display: grid;
  place-items: center;
  min-height: 44px;
  padding: 0.45rem 0.3rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface);
  color: var(--text-secondary);
  font-size: 0.75rem;
  font-weight: 700;
  transition:
    background-color var(--transition-fast),
    border-color var(--transition-fast),
    box-shadow var(--transition-fast),
    color var(--transition-fast);
}

.room-weekday-option:hover span {
  border-color: color-mix(in srgb, var(--primary-color) 45%, var(--border-color));
}

.room-weekday-option input:focus-visible + span {
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary-color) 16%, transparent);
}

.room-weekday-option input:checked + span {
  border-color: var(--primary-color);
  background: color-mix(in srgb, var(--primary-color) 12%, var(--bg-surface));
  color: var(--primary-color);
}

.scheduler-field-hint {
  display: block;
  margin-top: 0.4rem;
  color: var(--text-muted);
  font-size: 0.75rem;
  line-height: 1.4;
}

.sched-material-suggestions {
  position: relative;
  z-index: 5;
  width: 100%;
  max-height: 220px;
  margin-top: 0.35rem;
  overflow-y: auto;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface);
  box-shadow: var(--shadow-md);
}

.sched-material-suggestions[hidden] {
  display: none;
}

.sched-material-suggestion {
  display: flex;
  width: 100%;
  min-height: 48px;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.65rem 0.85rem;
  border: 0;
  border-bottom: 1px solid var(--border-color);
  background: transparent;
  color: var(--text-primary);
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.sched-material-suggestion:last-child {
  border-bottom: 0;
}

.sched-material-suggestion:hover,
.sched-material-suggestion:focus-visible {
  outline: none;
  background: color-mix(in srgb, var(--primary-color) 10%, var(--bg-surface));
}

.sched-material-suggestion-name {
  min-width: 0;
  overflow: hidden;
  font-weight: 600;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.sched-material-suggestion-stock {
  flex: 0 0 auto;
  color: var(--text-secondary);
  font-size: 0.78rem;
  white-space: nowrap;
}

/* Campo reutilizável: novas opções inseridas no select de finalidade
   herdam automaticamente o mesmo layout e os mesmos estados visuais. */
.scheduler-select-shell {
  position: relative;
  width: 100%;
}

.scheduler-select-shell::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 1.05rem;
  width: 0.45rem;
  height: 0.45rem;
  border-right: 2px solid var(--text-secondary);
  border-bottom: 2px solid var(--text-secondary);
  pointer-events: none;
  transform: translateY(-70%) rotate(45deg);
}

.scheduler-select-control {
  width: 100%;
  min-height: 48px;
  padding: 0.75rem 2.75rem 0.75rem 1rem;
  appearance: none;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  outline: none;
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font-family: var(--font-body);
  font-size: 0.95rem;
  cursor: pointer;
  transition:
    background-color var(--transition-fast),
    border-color var(--transition-fast),
    box-shadow var(--transition-fast);
}

.scheduler-select-control:hover:not(:disabled) {
  border-color: color-mix(in srgb, var(--primary-color) 42%, var(--border-color));
}

.scheduler-select-control:focus-visible {
  border-color: var(--primary-color);
  background: var(--bg-surface);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary-color) 16%, transparent);
}

.scheduler-select-control:disabled {
  cursor: not-allowed;
  opacity: 0.65;
}

.scheduler-notes-input {
  width: 100%;
  min-height: 110px;
  padding: 0.75rem 0.9rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  outline: none;
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font: inherit;
  line-height: 1.5;
  resize: vertical;
  transition:
    border-color var(--transition-fast),
    box-shadow var(--transition-fast);
}

.scheduler-notes-input:focus-visible {
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary-color) 16%, transparent);
}

.scheduler-notes-preview {
  display: -webkit-box;
  max-width: 220px;
  margin-top: 0.45rem;
  overflow: hidden;
  color: var(--text-secondary);
  font-size: 0.75rem;
  line-height: 1.35;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

@media (max-width: 768px) {
  .task-options-header {
    grid-template-columns: 40px minmax(0, 1fr) auto;
    align-items: start;
  }

  .task-options-icon {
    width: 40px;
    height: 40px;
  }

  .task-options-count {
    margin-top: 0.15rem;
  }

  .task-option-form {
    grid-template-columns: 1fr;
    align-items: stretch;
  }

  .reservation-purposes-manager-shell .task-option-form {
    grid-template-columns: 1fr;
  }

  .courses-manager-shell .task-option-form {
    grid-template-columns: 1fr;
  }

  .task-option-form-actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .task-option-form-actions:has(#btn-cancel-task-option-edit:not([hidden])) {
    grid-template-columns: 1fr 1fr;
  }

  .task-options-table {
    min-width: 0;
  }

  .task-options-empty-row,
  .task-options-empty-row td {
    display: block !important;
  }

  .task-options-empty-row td {
    padding: 0 !important;
    border: 0 !important;
    text-align: center !important;
  }

  .task-options-empty-row td::before {
    display: none !important;
    content: none !important;
  }

  .task-option-row-actions {
    gap: 0.5rem;
  }

  .maintenance-room-modal-content .modal-header {
    align-items: flex-start;
    padding: 1rem;
  }

  .maintenance-room-modal-content .modal-footer {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem;
  }

  .maintenance-room-modal-content .modal-footer .btn {
    width: 100%;
    min-height: 44px;
  }

  .room-reservation-settings {
    grid-template-columns: 1fr;
    gap: 0.75rem;
  }

  .room-fixed-time-grid {
    grid-template-columns: 1fr;
    gap: 0.75rem;
  }

  .room-weekday-options {
    grid-template-columns: repeat(4, minmax(44px, 1fr));
  }
}

@media (max-width: 420px) {
  .maintenance-room-modal-content .modal-footer {
    grid-template-columns: 1fr;
  }

  .maintenance-room-modal-content .modal-footer .btn-primary {
    grid-row: 1;
  }
}

.stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1.5rem;
}

.stat-card {
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  transition:
    transform var(--transition-normal),
    box-shadow var(--transition-normal),
    border-color var(--transition-normal);
  position: relative;
  overflow: hidden;
}

.stat-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
  border-color: var(--border-focus);
}

.stat-info {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.stat-label {
  font-size: 0.85rem;
  color: var(--text-secondary);
  font-weight: 500;
}

.stat-value {
  font-size: 1.75rem;
  font-weight: 800;
  font-family: var(--font-header);
}

.stat-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
}

.stat-card.primary .stat-icon {
  background: rgba(22, 163, 74, 0.1);
  color: var(--primary-color);
}
.stat-card.success .stat-icon {
  background: rgba(16, 185, 129, 0.1);
  color: var(--success-color);
}
.stat-card.danger .stat-icon {
  background: rgba(239, 68, 68, 0.1);
  color: var(--danger-color);
}
.stat-card.warning .stat-icon {
  background: rgba(245, 158, 11, 0.1);
  color: var(--warning-color);
}

/* MURAL DE ATENDIMENTO */
.mural-section {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.mural-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.mural-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1.5rem;
}

.mural-card {
  background: var(--glass-bg);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: 1.25rem;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  position: relative;
  transition:
    transform var(--transition-normal),
    box-shadow var(--transition-normal),
    border-color var(--transition-normal),
    background-color var(--transition-normal);
  border-left: 4px solid var(--text-muted);
}

.mural-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}

.mural-card.status-aguardando {
  border-left-color: var(--warning-color);
}

.mural-card.status-atendimento {
  border-left-color: var(--primary-color);
  background: linear-gradient(135deg, var(--bg-surface) 0%, rgba(22, 163, 74, 0.06) 100%);
}

.mural-card.status-concluido {
  border-left-color: var(--success-color);
  opacity: 0.8;
}

.mural-time {
  font-family: var(--font-header);
  font-weight: 700;
  font-size: 1.1rem;
  color: var(--text-primary);
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.mural-patient {
  font-size: 1rem;
  font-weight: 600;
}

.mural-professional {
  font-size: 0.85rem;
  color: var(--text-secondary);
  display: flex;
  align-items: center;
  gap: 0.35rem;
}

.mural-room {
  align-self: flex-start;
  background: var(--bg-surface-elevated);
  padding: 0.25rem 0.5rem;
  border-radius: var(--radius-sm);
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--text-primary);
}

.badge {
  padding: 0.25rem 0.5rem;
  border-radius: var(--radius-sm);
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
}
.badge-warning { background: rgba(245, 158, 11, 0.15); color: var(--warning-color); }
.badge-primary,
.badge-success { background: rgba(22, 163, 74, 0.15); color: var(--primary-hover); }
.badge-danger { background: rgba(239, 68, 68, 0.15); color: var(--danger-color); }

.protected-account-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin-left: 0.35rem;
  color: var(--text-secondary);
  font-size: 0.7rem;
  font-weight: 600;
}

.no-actions-label {
  color: var(--text-muted);
  font-size: 0.78rem;
  font-weight: 500;
}

/* --- CONTROLES E BOTÕES DE MÓDULOS --- */
.section-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 1rem;
  margin-bottom: 1rem;
}

.btn {
  background: var(--bg-surface-elevated);
  border: 1px solid var(--border-color);
  color: var(--text-primary);
  padding: 0.65rem 1.25rem;
  border-radius: var(--radius-sm);
  font-family: var(--font-header);
  font-weight: 600;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 44px;
  justify-content: center;
  transition:
    transform var(--transition-fast),
    background-color var(--transition-fast),
    border-color var(--transition-fast),
    color var(--transition-fast),
    box-shadow var(--transition-fast),
    filter var(--transition-fast);
}

.btn:not(.btn-primary):not(.btn-success):not(.btn-danger):hover {
  background: var(--surface-hover);
  transform: translateY(-1px);
}

.btn:active,
.login-btn:active,
.sidebar-toggle-btn:active,
.profile-toggle-btn:active,
.net-simulator-btn:active {
  transform: translateY(0) scale(0.98);
}

.btn-primary {
  background: var(--primary-gradient);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 4px 10px var(--primary-glow);
}

.btn-primary:hover {
  background: var(--primary-hover);
  border-color: var(--primary-hover);
  color: #fff;
  filter: none;
  transform: translateY(-1px);
}

.btn-success {
  background: var(--primary-hover);
  border-color: var(--primary-hover);
  color: #fff;
  box-shadow: 0 4px 10px var(--primary-glow);
}

.btn-success:hover {
  background: var(--primary-hover);
  border-color: var(--primary-hover);
  color: #fff;
  box-shadow: 0 6px 14px var(--primary-glow);
  filter: none;
  transform: translateY(-1px);
}

.btn-danger {
  background: var(--danger-color);
  border-color: transparent;
  color: #fff;
}
.btn-danger:hover {
  background: var(--danger-color);
  border-color: var(--danger-color);
  color: #fff;
  box-shadow: 0 4px 10px var(--danger-glow);
  filter: none;
  transform: translateY(-1px);
}

.btn:disabled,
.login-btn:disabled {
  background: var(--surface-hover);
  border-color: var(--border-color);
  color: var(--text-secondary);
  box-shadow: none;
  cursor: not-allowed;
  filter: none;
  transform: none;
}

.btn:disabled:hover,
.login-btn:disabled:hover {
  background: var(--surface-hover);
  border-color: var(--border-color);
  color: var(--text-secondary);
  box-shadow: none;
  filter: none;
  transform: none;
}

.btn-sm {
  padding: 0.4rem 0.75rem;
  font-size: 0.8rem;
  min-height: 44px;
}

.table-actions .btn-sm,
.btn-icon {
  min-width: 44px;
}

.btn-icon {
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text-primary);
  background: var(--bg-surface-elevated);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition:
    transform var(--transition-fast),
    background-color var(--transition-fast),
    border-color var(--transition-fast),
    color var(--transition-fast);
}

.btn-icon:hover {
  color: var(--primary-color);
  background: var(--surface-hover);
  border-color: var(--border-focus);
  transform: translateY(-1px);
}

.btn-icon:active {
  transform: scale(0.98);
}

/* Ações anexas aos selects de categoria/localização no cadastro de estoque. */
.input-container .stock-option-add-btn {
  flex: 0 0 46px;
  width: 46px;
  height: 46px;
  min-width: 46px;
  padding: 0;
  color: var(--primary-color);
  border-color: color-mix(in srgb, var(--primary-color) 55%, var(--border-color));
}

.input-container .stock-option-add-btn i {
  position: static;
  color: currentColor;
  transform: none;
}

.input-container .stock-option-add-btn:hover {
  color: var(--primary-hover);
}

/* Campo de auditoria: reserva espaço para o acionador de leitura por câmera. */
#barcode-input {
  padding-right: 4.25rem !important;
}

body.scanner-open {
  overflow: hidden;
}

#modal-barcode-scanner,
#modal-stock-scanner {
  z-index: 5000;
  align-items: center;
}

#modal-barcode-scanner .scanner-modal-content,
#modal-stock-scanner .scanner-modal-content {
  max-width: 520px;
  text-align: left;
}

.scanner-preview {
  position: relative;
  overflow: hidden;
  border-radius: var(--radius-sm);
  background: #0f172a;
  min-height: 260px;
  display: flex;
  align-items: center;
  justify-content: center;
}

#barcode-scanner-video,
#stock-scanner-video {
  display: block;
  width: 100%;
  min-height: 260px;
  max-height: 55dvh;
  object-fit: cover;
  background: #0f172a;
}

.scanner-frame {
  position: absolute;
  inset: 18% 12%;
  border: 2px solid var(--primary-color);
  border-radius: var(--radius-sm);
  box-shadow: 0 0 0 999px rgba(15, 23, 42, 0.25);
  pointer-events: none;
}

.profile-dropdown-item {
  display: flex;
  width: 100%;
  min-height: 44px;
  align-items: center;
  gap: 0.5rem;
  padding: 0.75rem 1rem;
  color: var(--text-primary);
  background: transparent;
  border: 0;
  text-align: left;
  text-decoration: none;
  font-family: var(--font-body);
  font-size: 0.85rem;
  cursor: pointer;
  transition:
    background-color var(--transition-fast),
    color var(--transition-fast);
}

.profile-dropdown-item:hover {
  background: var(--surface-hover);
  color: var(--primary-color);
}

.profile-dropdown-logout {
  color: var(--danger-color);
}

.profile-dropdown-logout:hover {
  color: var(--danger-color);
  background: rgba(239, 68, 68, 0.08);
}

.welcome-logo-fallback {
  width: 120px;
  height: 120px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #ffffff;
  background: var(--primary-gradient);
  border-radius: var(--radius-md);
  box-shadow: 0 8px 24px var(--primary-glow);
  font-size: 3rem;
}

.welcome-company-title {
  color: var(--text-primary);
  font-size: 1.5rem;
  margin-top: 1rem;
}

.app-toast {
  animation: toast-enter var(--motion-base) var(--ease-emphasized) both;
}

.app-toast.is-leaving {
  animation: toast-exit var(--motion-fast) var(--ease-standard) both;
}

/* --- TABELAS E DATA GRID --- */
.table-responsive {
  width: 100%;
}

.table-wrapper {
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  overflow-x: auto;
}

.data-table {
  width: 100%;
  border-collapse: collapse;
  text-align: left;
  font-size: 0.9rem;
}

.data-table th {
  background: var(--surface-subtle);
  padding: 1rem;
  font-weight: 600;
  color: var(--text-secondary);
  border-bottom: 1px solid var(--border-color);
  font-family: var(--font-header);
}

.data-table td {
  padding: 1rem;
  border-bottom: 1px solid var(--border-color);
  color: var(--text-primary);
}

.data-table tr:last-child td {
  border-bottom: none;
}

.data-table tr:hover td {
  background: var(--table-row-hover);
}

.table-actions {
  display: flex;
  gap: 0.5rem;
}

/* Grade de O.C.: no desktop mantém todas as colunas legíveis; em telas
   estreitas, somente a área da tabela ganha rolagem horizontal. */
.purchase-order-table-wrapper {
  overflow-x: auto;
  overscroll-behavior-inline: contain;
}

.purchase-order-table {
  width: 100%;
  min-width: 1020px;
  table-layout: fixed;
}

.purchase-order-table :is(th, td) {
  padding: .75rem .55rem;
  vertical-align: top;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.purchase-order-table .po-col-select {
  width: 3%;
  padding-inline: .4rem;
}

.purchase-order-table .po-col-number { width: 7%; }
.purchase-order-table .po-col-invoice { width: 8%; }
.purchase-order-table .po-col-product { width: 16%; }
.purchase-order-table .po-col-supplier { width: 12%; }
.purchase-order-table .po-col-course { width: 10%; }
.purchase-order-table .po-col-payment { width: 9%; }
.purchase-order-table .po-col-installments { width: 9%; }
.purchase-order-table .po-col-due-date { width: 9%; }
.purchase-order-table .po-col-value { width: 8%; font-weight: 700; white-space: nowrap; }
.purchase-order-table .po-col-actions { width: 10%; min-width: 7.25rem; }

.purchase-order-table .finance-document-summary,
.purchase-order-table .action-buttons {
  min-width: 0;
  max-width: 100%;
}

.purchase-order-attachment-links {
  display: grid;
  gap: .25rem;
  margin-top: .3rem;
}

.purchase-order-attachment-link {
  display: flex;
  align-items: flex-start;
  gap: .3rem;
  color: var(--primary-color);
  font-size: .76rem;
  text-decoration: none;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.purchase-order-attachment-link span {
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.purchase-order-attachment-link:hover {
  text-decoration: underline;
}

.purchase-order-table .action-buttons {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: .35rem;
}

.purchase-order-table .action-buttons .btn {
  flex: 0 0 auto;
}

.purchase-order-bulk-actions {
  margin: .75rem 0;
  align-items: center;
  gap: .5rem;
}

/* Financeiro: cabeçalhos e linhas seguem a hierarquia visual das O.C.
   (identificação primeiro, detalhes em apoio e ações discretas). */
.finance-records-panel {
  margin-top: 1.25rem;
  padding: 0;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  background: var(--bg-surface);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
}

.finance-table-panel-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 1.15rem;
  border-bottom: 1px solid var(--border-color);
  background: linear-gradient(110deg, var(--bg-surface) 0%, var(--surface-subtle) 100%);
}

.finance-table-title,
.finance-table-heading-actions {
  display: flex;
  align-items: center;
  gap: .75rem;
  min-width: 0;
}

.finance-table-title > div { min-width: 0; }
.finance-table-title h3,
.finance-table-title p { margin: 0; }

.finance-table-title h3 {
  color: var(--text-primary);
  font-size: 1.02rem;
}

.finance-table-title p {
  margin-top: .2rem;
  color: var(--text-secondary);
  font-size: .78rem;
}

.finance-table-title-icon {
  display: inline-grid;
  place-items: center;
  flex: 0 0 auto;
  width: 2.35rem;
  height: 2.35rem;
  border: 1px solid color-mix(in srgb, var(--primary-color) 26%, transparent);
  border-radius: .7rem;
  background: color-mix(in srgb, var(--primary-color) 9%, var(--bg-surface));
  color: var(--primary-color);
}

.finance-table-count {
  display: inline-flex;
  align-items: center;
  margin-left: .4rem;
  padding: .18rem .52rem;
  border: 1px solid var(--border-color);
  border-radius: 999px;
  background: var(--bg-surface-elevated);
  color: var(--text-secondary);
  font-size: .72rem;
  font-weight: 700;
  vertical-align: middle;
}

.finance-table-heading-actions {
  flex-wrap: wrap;
  justify-content: flex-end;
}

.finance-purchase-orders-panel {
  margin: 0 1.15rem 1.25rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-surface);
  overflow: hidden;
}

.finance-movements-section {
  margin: 0 1.15rem 1.25rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-surface);
  overflow: hidden;
}

.finance-purchase-orders-panel .finance-table-panel-heading {
  padding: .9rem 1rem;
}

.finance-movements-section .finance-table-panel-heading {
  padding: .9rem 1rem;
}

.finance-export-button i { color: var(--danger-color); }

.finance-purchase-orders-panel .purchase-order-bulk-actions {
  margin: .75rem 1rem;
}

.finance-purchase-orders-panel .purchase-order-table-wrapper,
.finance-movements-section .finance-movements-table-wrapper {
  border: 0;
  border-radius: 0;
}

.purchase-order-table th,
.finance-movements-table th {
  padding-block: .8rem;
  background: var(--surface-subtle);
  color: var(--text-secondary);
  font-size: .7rem;
  letter-spacing: .025em;
  text-transform: uppercase;
}

.purchase-order-row td,
.finance-movement-row td {
  padding-block: .85rem;
  vertical-align: top;
}

.purchase-order-number {
  display: inline-flex;
  align-items: center;
  padding: .22rem .48rem;
  border: 1px solid var(--border-color);
  border-radius: .35rem;
  background: var(--surface-subtle);
  color: var(--text-primary);
  font-family: var(--font-mono, var(--font-header));
  font-size: .78rem;
}

.purchase-order-invoice {
  color: var(--text-primary);
  font-size: .78rem;
  font-weight: 700;
}

.purchase-order-attachment-link {
  align-items: center;
  width: fit-content;
  max-width: 100%;
  padding: .22rem .42rem;
  border: 1px solid color-mix(in srgb, var(--primary-color) 25%, transparent);
  border-radius: .35rem;
  background: color-mix(in srgb, var(--primary-color) 7%, var(--bg-surface));
  font-size: .7rem;
}

.purchase-order-supplier {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  color: var(--text-primary);
  font-size: .8rem;
  font-weight: 600;
}

.purchase-order-supplier i { color: var(--text-muted); font-size: .75rem; }

.purchase-order-course {
  display: inline-flex;
  padding: .2rem .45rem;
  border: 1px solid color-mix(in srgb, var(--primary-color) 20%, transparent);
  border-radius: 999px;
  background: color-mix(in srgb, var(--primary-color) 7%, var(--bg-surface));
  color: var(--primary-color-dark, var(--primary-color));
  font-size: .72rem;
  font-weight: 700;
}

.purchase-order-table .po-col-installments span,
.purchase-order-table .po-col-due-date strong {
  color: var(--text-secondary);
  font-size: .78rem;
}

.purchase-order-table .po-col-value {
  color: var(--text-primary);
  font-family: var(--font-header);
  font-size: .86rem;
}

.purchase-order-table .action-buttons,
.finance-row-actions {
  justify-content: center;
}

.purchase-order-table .action-buttons .btn,
.finance-row-actions .btn {
  min-width: 2rem;
  padding-inline: .45rem;
  color: var(--text-secondary);
}

.finance-movements-table .finance-date-cell,
.finance-category-cell span,
.finance-credit-summary {
  color: var(--text-secondary);
  font-size: .74rem;
}

.finance-movements-table .finance-date-cell {
  display: grid;
  gap: .2rem;
  white-space: nowrap;
}

.finance-category-cell,
.finance-description-cell,
.finance-payment-cell { min-width: 0; }

.finance-category-cell strong,
.finance-description-cell strong,
.finance-payment-cell strong {
  display: block;
  color: var(--text-primary);
  font-size: .83rem;
}

.finance-category-cell span { display: block; margin-top: .18rem; }

.finance-document-summary,
.finance-credit-summary { margin-top: .2rem; }

.finance-type-badge {
  display: inline-flex;
  align-items: center;
  padding: .2rem .48rem;
  border-radius: 999px;
  font-size: .68rem;
  font-weight: 800;
  text-transform: uppercase;
}

.finance-type-badge.is-income {
  background: color-mix(in srgb, var(--success-color) 12%, var(--bg-surface));
  color: var(--success-color);
}

.finance-type-badge.is-expense {
  background: color-mix(in srgb, var(--danger-color) 11%, var(--bg-surface));
  color: var(--danger-color);
}

.finance-value-cell {
  white-space: nowrap;
  font-family: var(--font-header);
  font-weight: 800;
  text-align: right;
}

.finance-value-cell.is-income { color: var(--success-color); }
.finance-value-cell.is-expense { color: var(--danger-color); }

.finance-movements-section > .finance-pagination,
.finance-purchase-orders-panel > .finance-pagination {
  margin-inline: 1.15rem;
  padding-bottom: .85rem;
}

@media (max-width: 760px) {
  .finance-records-panel { border-radius: var(--radius-md); }

  .finance-table-panel-heading,
  .finance-table-heading-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .finance-table-heading-actions .btn { justify-content: center; }
  .finance-purchase-orders-panel,
  .finance-movements-section { margin-inline: .7rem; }
  .finance-purchase-orders-panel .purchase-order-bulk-actions { margin-inline: .7rem; }
  .finance-movements-section > .finance-pagination,
  .finance-purchase-orders-panel > .finance-pagination { margin-inline: .7rem; }
  .finance-table-count { margin-left: 0; }
}

.finance-pagination,
.scheduler-pagination {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  padding: .8rem 0 .1rem;
  color: var(--text-secondary);
  font-size: .82rem;
}

.finance-pagination-summary strong,
.scheduler-pagination-summary strong {
  color: var(--text-primary);
}

.finance-pagination-controls,
.scheduler-pagination-controls {
  display: flex;
  align-items: center;
  gap: .3rem;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.finance-pagination-button,
.scheduler-pagination-button {
  min-width: 2.15rem;
  justify-content: center;
}

.finance-pagination-button.is-current,
.scheduler-pagination-button.is-current {
  background: var(--primary-color);
  border-color: var(--primary-color);
  color: #fff;
}

.finance-pagination-button:disabled,
.scheduler-pagination-button:disabled {
  cursor: not-allowed;
  opacity: .45;
}

.finance-pagination-ellipsis,
.scheduler-pagination-ellipsis {
  padding: 0 .15rem;
  color: var(--text-muted);
}

@media (max-width: 640px) {
  .finance-pagination,
  .scheduler-pagination {
    align-items: flex-start;
    flex-direction: column;
  }

  .finance-pagination-controls,
  .scheduler-pagination-controls {
    justify-content: flex-start;
  }
}

.special-request-actions { flex-wrap: wrap; align-items: center; }

.manual-separation-product-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 90px auto;
  gap: 0.5rem;
  align-items: end;
}

.manual-separation-product-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  margin-bottom: .45rem;
}

.manual-separation-product-heading label { margin-bottom: 0; }

.manual-separation-product-suggestions .sched-material-suggestion {
  align-items: flex-start;
}

.manual-separation-product-suggestions .sched-material-suggestion-name {
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

.manual-product-quick-content { max-width: 620px; }
.manual-product-quick-body { display: flex; flex-direction: column; gap: 1rem; }

.manual-separation-product-search {
  position: relative;
  min-width: 0;
}

.manual-separation-product-suggestions {
  position: absolute;
  top: calc(100% + 0.25rem);
  left: 0;
  width: 100%;
  margin-top: 0;
  z-index: 40;
}

.manual-separation-product-empty {
  padding: 0.85rem 1rem;
  color: var(--text-secondary);
  font-size: 0.85rem;
}

@media (max-width: 680px) {
  .professor-form-grid {
    grid-template-columns: 1fr;
  }

  .professor-form-full {
    grid-column: auto;
  }

  .professor-manager-toolbar .task-option-form-actions,
  .professor-manager-toolbar .btn {
    width: 100%;
  }

  .manual-separation-product-row { grid-template-columns: minmax(0, 1fr) 82px; }
  .manual-separation-product-row .btn { grid-column: 1 / -1; width: 100%; justify-content: center; }
  .manual-separation-product-heading { align-items: flex-start; flex-direction: column; }
}

.users-data-table { table-layout: fixed; min-width: 900px; }
.users-data-table .users-col-login { width: 11%; }
.users-data-table .users-col-role { width: 15%; }
.users-data-table .users-col-status { width: 8%; }
.users-data-table .users-col-mfa { width: 8%; }
.users-data-table .users-col-company { width: 15%; }
.users-data-table .users-col-register { width: 9%; }
.users-data-table .users-col-actions { width: 34%; }
.users-data-table th,
.users-data-table td { padding: 0.9rem 0.75rem; vertical-align: middle; overflow-wrap: anywhere; }
.users-data-table .badge { white-space: nowrap; }
.users-company-cell { line-height: 1.45; }
.users-actions-cell { overflow: visible; }
.users-table-actions { display: grid; grid-template-columns: repeat(2, minmax(96px, 1fr)); gap: 0.5rem; align-items: stretch; }
.users-table-actions .btn { width: 100%; min-width: 0; min-height: 40px; padding: 0.45rem 0.6rem; justify-content: center; white-space: nowrap; }

@media (max-width: 1024px) and (min-width: 769px) {
  .users-data-table { min-width: 820px; font-size: 0.82rem; }
  .users-data-table .users-col-login { width: 10%; }
  .users-data-table .users-col-role { width: 14%; }
  .users-data-table .users-col-company { width: 14%; }
  .users-data-table .users-col-actions { width: 37%; }
  .users-data-table th,
  .users-data-table td { padding: 0.75rem 0.55rem; }
  .users-table-actions { gap: 0.4rem; }
  .users-table-actions .btn { font-size: 0.74rem; }
}

@media (max-width: 768px) {
  .users-data-table { min-width: 0; table-layout: auto; }
  .users-data-table colgroup { display: none; }
  .users-data-table .users-actions-cell { display: block !important; text-align: initial !important; }
  .users-table-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; }
}

/* --- GRID DO ESTOQUE (PRATELEIRAS) --- */
.stock-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 1.5rem;
}

.product-card {
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition:
    transform var(--transition-normal),
    box-shadow var(--transition-normal),
    border-color var(--transition-normal);
}

.product-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
  border-color: var(--border-focus);
}

.product-card[role="button"] {
  cursor: pointer;
}

.product-card[role="button"]:focus-visible {
  outline: 3px solid var(--border-focus);
  outline-offset: 3px;
}

.product-img {
  height: 140px;
  background: var(--bg-surface-elevated);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}

.product-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.product-img i {
  font-size: 3rem;
  color: var(--text-muted);
}

.product-price-badge {
  position: absolute;
  bottom: 0.75rem;
  right: 0.75rem;
  background: var(--primary-gradient);
  color: #fff;
  padding: 0.25rem 0.5rem;
  font-family: var(--font-header);
  font-weight: 700;
  border-radius: var(--radius-sm);
  font-size: 0.85rem;
}

.product-info {
  padding: 1.25rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  flex-grow: 1;
}

.product-name {
  font-size: 1.05rem;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.product-code {
  font-size: 0.75rem;
  color: var(--text-muted);
}

.product-location {
  font-size: 0.8rem;
  color: var(--text-secondary);
  display: flex;
  align-items: center;
  gap: 0.35rem;
}

.product-qty-section {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 0.5rem;
}

.product-qty {
  font-size: 1.1rem;
  font-weight: 700;
  font-family: var(--font-header);
}

.product-qty.low {
  color: var(--danger-color);
  animation: text-pulse-red 2s infinite;
}

/* --- KANBAN BOARD (PLANNER DE TAREFAS) --- */
.kanban-board {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
  align-items: stretch;
  width: 100%;
}

@media (max-width: 960px) {
  .kanban-board {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.kanban-column,
.kanban-col {
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 240px;
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

.kanban-column-header,
.kanban-col-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  min-height: 48px;
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--border-color);
  border-left: 4px solid var(--text-muted);
  background: var(--surface-subtle);
  color: var(--text-primary);
  font-family: var(--font-header);
  font-size: 0.95rem;
  font-weight: 600;
  line-height: 1.25;
}

.kanban-col-header--pending { border-left-color: #64748b; }
.kanban-col-header--progress {
  border-left-color: var(--primary-color);
  background: rgba(22, 163, 74, 0.06);
}
.kanban-col-header--complete {
  border-left-color: var(--success-color);
  background: rgba(16, 185, 129, 0.07);
}

.kanban-column-title {
  font-family: var(--font-header);
  font-weight: 700;
  font-size: 1.05rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.kanban-column-count {
  background: var(--bg-surface-elevated);
  padding: 0.15rem 0.5rem;
  border-radius: 10px;
  font-size: 0.75rem;
  font-weight: 700;
}

.kanban-column-count,
.kanban-col-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.5rem;
  min-height: 1.5rem;
  padding: 0.125rem 0.4rem;
  border: 1px solid var(--border-color);
  border-radius: 999px;
  background: var(--bg-surface);
  color: var(--text-secondary);
  font-family: var(--font-body);
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1;
}

.kanban-list,
.kanban-cards {
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: 0.75rem;
  min-height: 184px;
  padding: 1rem;
}

.kanban-empty-state {
  display: flex;
  flex: 1;
  min-height: 116px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 1rem;
  border: 1px dashed rgba(100, 116, 139, 0.32);
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  font-size: 0.8rem;
  text-align: center;
}

.kanban-empty-state i {
  color: var(--text-muted);
  font-size: 1rem;
}

.task-card {
  background: var(--glass-bg);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  padding: 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  cursor: grab;
  transition:
    transform var(--transition-normal),
    box-shadow var(--transition-normal),
    border-color var(--transition-normal);
}

.task-card:hover {
  transform: translateY(-2px);
  border-color: var(--border-focus);
  box-shadow: var(--shadow-sm);
}

.task-card--overdue {
  border-color: rgba(220, 38, 38, 0.7);
  box-shadow: 0 0 0 1px rgba(220, 38, 38, 0.08);
}

.task-card--overdue:hover { border-color: #dc2626; }

.task-overdue-summary {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin: 0.75rem 0 1rem;
  padding: 0.75rem 1rem;
  border: 1px solid rgba(220, 38, 38, 0.28);
  border-radius: var(--radius-sm);
  background: rgba(220, 38, 38, 0.08);
  color: var(--danger-color);
}

.task-overdue-summary > i { font-size: 1.1rem; }
.task-overdue-summary div { display: flex; flex-direction: column; gap: 0.1rem; }
.task-overdue-summary span { color: var(--text-secondary); font-size: 0.78rem; }

.task-deadline-fields {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 0.75rem;
  padding: 0.75rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: rgba(99, 102, 241, 0.04);
}

.task-deadline-fields .task-field-hint { grid-column: 1 / -1; }

.task-deadline {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.45rem 0.55rem;
  border-radius: var(--radius-sm);
  background: rgba(99, 102, 241, 0.07);
  color: var(--text-secondary);
  font-size: 0.75rem;
}

.task-deadline--overdue {
  background: rgba(220, 38, 38, 0.11);
  color: var(--danger-color);
  font-weight: 600;
}

.almoxarifado-request-text {
  margin: 0.5rem 0;
  padding: 0.65rem 0.75rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font-size: 0.82rem;
}

.almoxarifado-request-text > strong {
  display: block;
  margin-bottom: 0.3rem;
  color: var(--text-secondary);
  font-size: 0.72rem;
}

.almoxarifado-request-text > div {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

/* Os cartões do almoxarifado têm conteúdos de tamanhos muito diferentes.
   Impede que os menores sejam esticados até a altura do maior da linha. */
.almoxarifado-cards-grid {
  align-items: start;
}

.almoxarifado-cards-grid > .mural-card {
  align-self: start;
  height: auto;
  min-height: 0;
}

.task-pending-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.35rem;
}

.task-pending-actions .btn { padding: 0.35rem 0.55rem; }

.task-card-icon-button {
  min-width: 2rem;
  color: var(--primary-color);
  background: rgba(99, 102, 241, 0.08);
  border-color: rgba(99, 102, 241, 0.2);
}

.task-card-icon-button--danger {
  color: var(--danger-color);
  background: rgba(220, 38, 38, 0.07);
  border-color: rgba(220, 38, 38, 0.2);
}

.task-priority-badge {
  align-self: flex-start;
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  padding: 0.15rem 0.4rem;
  border-radius: var(--radius-sm);
}

.task-priority-alta { background: rgba(239, 68, 68, 0.15); color: var(--danger-color); }
.task-priority-media { background: rgba(245, 158, 11, 0.15); color: var(--warning-color); }
.task-priority-baixa { background: rgba(16, 185, 129, 0.15); color: var(--success-color); }

.task-title {
  font-weight: 600;
  font-size: 0.95rem;
}

.task-desc {
  font-size: 0.8rem;
  color: var(--text-secondary);
}

.task-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-top: 1px solid var(--border-color);
  padding-top: 0.5rem;
  margin-top: 0.25rem;
  font-size: 0.75rem;
  color: var(--text-muted);
}

.task-assignee {
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

@media (max-width: 640px) {
  .reservation-purpose-fields,
  .scheduler-withdrawal-grid {
    grid-template-columns: 1fr;
  }

  .scheduler-withdrawal-status-field {
    grid-column: auto;
  }
  .kanban-board {
    grid-template-columns: 1fr;
  }

  .task-deadline-fields { grid-template-columns: 1fr; }

  .task-footer {
    align-items: flex-end;
    gap: 0.5rem;
  }

  .kanban-col-header {
    min-height: 44px;
    padding: 0.625rem 0.75rem;
  }

  .kanban-cards {
    padding: 0.75rem;
  }
}

/* --- TELA FINANCEIRA --- */
.finance-summary {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}

@media (max-width: 768px) {
  .finance-summary {
    grid-template-columns: 1fr;
  }
}

.finance-card {
  padding: 1.5rem;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-color);
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.finance-card.receitas {
  background: linear-gradient(135deg, var(--bg-surface) 0%, rgba(16, 185, 129, 0.05) 100%);
  border-left: 4px solid var(--success-color);
}

.finance-card.despesas {
  background: linear-gradient(135deg, var(--bg-surface) 0%, rgba(239, 68, 68, 0.05) 100%);
  border-left: 4px solid var(--danger-color);
}

.finance-card.saldo {
  background: linear-gradient(135deg, var(--bg-surface) 0%, rgba(22, 163, 74, 0.05) 100%);
  border-left: 4px solid var(--primary-color);
}

.finance-register-dashboard {
  margin: 1rem 0 1.5rem;
  padding: 1rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  background: var(--bg-surface);
  box-shadow: var(--shadow-sm);
}

.finance-register-dashboard-heading,
.finance-register-card-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.finance-register-dashboard-heading h3,
.finance-register-dashboard-heading p {
  margin: 0;
}

.finance-register-dashboard-heading h3 i {
  margin-right: 0.4rem;
  color: var(--primary-color);
}

.finance-register-dashboard-heading p,
.finance-register-dashboard-heading > span,
.finance-register-card-title span,
.finance-register-dashboard-empty {
  color: var(--text-secondary);
  font-size: 0.78rem;
}

.finance-register-dashboard-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 0.85rem;
  margin-top: 1rem;
}

.finance-register-card {
  min-width: 0;
  padding: 0.9rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-surface-elevated);
}

.finance-register-card dl {
  display: grid;
  gap: 0.45rem;
  margin: 0.8rem 0 0;
}

.finance-register-card dl > div {
  display: flex;
  justify-content: space-between;
  gap: 0.75rem;
  color: var(--text-secondary);
  font-size: 0.82rem;
}

.finance-register-card dt,
.finance-register-card dd {
  margin: 0;
}

.finance-register-card dd {
  font-weight: 700;
}

.finance-register-balance {
  margin-top: 0.3rem;
  padding-top: 0.55rem;
  border-top: 1px solid var(--border-color);
}

.finance-register-card .is-positive { color: var(--success-color); }
.finance-register-card .is-negative { color: var(--danger-color); }
.finance-register-dashboard-empty { margin: 0; }

#fin-register-help {
  color: var(--text-secondary);
  font-size: 0.76rem;
  line-height: 1.4;
}

.finance-entry-modal-content {
  max-width: 720px;
}

.finance-entry-modal-content--purchase-order {
  width: min(920px, calc(100vw - 2rem));
  max-width: 920px !important;
  overflow: hidden;
  box-sizing: border-box;
}

#fin-modal .finance-entry-modal-content--purchase-order {
  width: min(920px, calc(100vw - 2rem)) !important;
  max-width: 920px !important;
}

.finance-entry-mode-bar {
  display: flex;
  align-items: center;
  padding: .7rem 1.5rem;
  border-bottom: 1px solid var(--border-color);
  background: var(--bg-surface-elevated);
}

.finance-entry-mode-control {
  display: grid;
  gap: .2rem;
  width: min(280px, 100%);
}

.finance-entry-mode-control label {
  color: var(--text-secondary);
  font-size: .72rem;
  font-weight: 700;
}

.finance-entry-mode-control select {
  width: 100%;
  min-height: 2.35rem;
  padding: .35rem .55rem;
}

#finance-standard-entry-panel[hidden],
#finance-purchase-order-panel[hidden] {
  display: none;
}

#finance-standard-entry-panel,
#finance-purchase-order-panel {
  display: flex;
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
}

#finance-standard-entry-panel > form,
#finance-purchase-order-panel > form {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}

.finance-select-action {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 46px;
  gap: 0.5rem;
  align-items: stretch;
}

.finance-select-action .input-container {
  min-width: 0;
}

.finance-supplier-autocomplete {
  position: relative;
  min-width: 0;
}

.finance-supplier-autocomplete .input-container { width: 100%; }

.finance-supplier-suggestions {
  position: absolute;
  top: calc(100% + 0.25rem);
  left: 0;
  z-index: 40;
  margin-top: 0;
}

.finance-supplier-suggestions .sched-material-suggestion-name {
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

.finance-catalog-add-btn {
  width: 46px;
  min-width: 46px;
  height: 46px;
  padding: 0;
  justify-content: center;
  color: var(--primary-color);
  border-color: color-mix(in srgb, var(--primary-color) 55%, var(--border-color));
  background: var(--bg-surface-elevated);
}

.finance-catalog-add-btn:hover {
  color: var(--primary-hover);
  border-color: var(--primary-color);
}

/* Linhas repetíveis da O.C.: a estrutura dinâmica reutiliza os mesmos campos do formulário. */
.po-course-line-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(130px, 0.42fr) 46px;
  gap: 1rem;
  align-items: start;
}

.po-course-line-grid + .po-course-line-grid {
  margin-top: 0.75rem;
}

.po-course-line-grid .form-group {
  margin-bottom: 0;
}

.po-course-line-action .btn {
  width: 46px;
  min-width: 46px;
  height: 46px;
  padding: 0;
  justify-content: center;
}

@media (max-width: 720px) {
  .po-course-line-grid {
    grid-template-columns: 1fr;
    gap: 0.75rem;
  }

  .po-course-line-action .btn {
    width: 100%;
  }
}

.finance-quick-catalog-overlay {
  z-index: 180;
}

.finance-quick-catalog-content {
  max-width: 520px;
}

.finance-quick-catalog-body {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.finance-quick-category-context {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  min-height: 46px;
  padding: 0.75rem 1rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
  background: var(--surface-subtle);
}

.finance-quick-category-context[hidden] {
  display: none;
}

.finance-quick-category-context i {
  color: var(--primary-color);
}

.finance-entry-modal-body,
.finance-category-modal-body {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.finance-credit-options {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  padding: 1rem;
  border: 1px solid color-mix(in srgb, var(--primary-color) 34%, var(--border-color));
  border-radius: var(--radius-md);
  background: color-mix(in srgb, var(--primary-color) 5%, var(--bg-surface));
}

.finance-credit-options[hidden],
.finance-credit-options [hidden] {
  display: none !important;
}

.finance-credit-help,
.finance-modal-subtitle,
.finance-category-item span,
.finance-category-modal-body .form-group small {
  margin: 0;
  color: var(--text-secondary);
  font-size: 0.78rem;
  line-height: 1.45;
}

.finance-credit-summary,
.finance-document-summary {
  margin-top: 0.3rem;
  color: var(--text-muted);
  font-size: 0.72rem;
}

.finance-shared-fields {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  padding: 1rem;
  border: 1px solid color-mix(in srgb, var(--primary-color) 25%, var(--border-color));
  border-radius: var(--radius-md);
  background: color-mix(in srgb, var(--primary-color) 3%, var(--bg-surface));
}

.finance-shared-fields-heading strong {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  color: var(--text-primary);
  font-size: 0.88rem;
}

.finance-shared-fields-heading strong i {
  color: var(--primary-color);
}

.finance-shared-fields-heading span {
  display: block;
  margin-top: 0.2rem;
  color: var(--text-secondary);
  font-size: 0.75rem;
  line-height: 1.4;
}

.finance-attachment-item {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  max-width: 100%;
  margin: 0.3rem 0.35rem 0 0;
  padding: 0.25rem 0.4rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  overflow-wrap: anywhere;
  background: var(--bg-surface);
}

.finance-attachment-item .btn {
  flex: 0 0 auto;
  min-height: 1.55rem;
  min-width: 1.55rem;
  padding: 0.1rem 0.3rem;
}

/* Ordem de Compra: campos e anexos não podem ampliar o modal nem exigir
   rolagem horizontal, inclusive em monitores menores. */
#finance-purchase-order-panel .modal-body {
  overflow-x: hidden;
}

#finance-purchase-order-panel .grid-2-col > *,
#finance-purchase-order-panel .form-group,
#finance-purchase-order-panel .input-container,
#finance-purchase-order-panel .finance-select-action {
  min-width: 0;
  max-width: 100%;
}

#finance-purchase-order-panel .po-course-line-grid {
  min-width: 0;
  max-width: 100%;
}

#finance-purchase-order-panel input,
#finance-purchase-order-panel select,
#finance-purchase-order-panel textarea {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

#finance-purchase-order-panel .finance-document-summary {
  overflow-wrap: anywhere;
}

@media (max-width: 720px) {
  .finance-entry-modal-content .modal-header {
    align-items: flex-start;
    flex-wrap: wrap;
  }

  .finance-entry-mode-bar {
    padding: .65rem 1rem;
  }

  .finance-entry-mode-control {
    flex: 1 1 100%;
  }
}

.finance-category-modal-content {
  max-width: 680px;
}

.finance-category-modal-content .modal-header > div {
  min-width: 0;
}

.finance-category-modal-content textarea {
  width: 100%;
  min-height: 120px;
  resize: vertical;
}

.finance-category-list {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  padding-top: 0.5rem;
  border-top: 1px solid var(--border-color);
}

.finance-category-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.8rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
}

.finance-category-item > div:first-child {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 0.25rem;
}

.finance-category-actions {
  display: flex;
  flex: 0 0 auto;
  gap: 0.4rem;
}

.finance-category-empty {
  margin: 0;
  padding: 1rem;
  text-align: center;
  color: var(--text-muted);
}

@media (max-width: 600px) {
  .finance-category-item {
    align-items: flex-start;
    flex-direction: column;
  }

  .finance-category-actions {
    width: 100%;
    justify-content: flex-end;
  }
}

/* --- MODAIS --- */
.modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  min-height: 100dvh;
  background: rgba(15, 23, 42, 0.75);
  backdrop-filter: blur(4px);
  display: flex;
  align-items: flex-start;
  justify-content: center;
  z-index: 100;
  padding: 1.5rem;
  overflow-y: auto;
}

.modal-content {
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  width: 100%;
  max-width: 550px;
  box-shadow: var(--shadow-lg);
  display: flex;
  flex-direction: column;
  max-height: calc(100dvh - 3rem);
  margin: auto;
  overflow: hidden;
  animation: scaleIn var(--motion-base) var(--ease-emphasized) both;
}

/* Formulários que possuem corpo rolável e rodapé fixo dentro do modal. */
.modal-content > form {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}

.modal-header {
  padding: 1.25rem 1.5rem;
  border-bottom: 1px solid var(--border-color);
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.modal-header h3 {
  font-size: 1.2rem;
  color: var(--text-primary);
}

.modal-close-btn {
  background: transparent;
  border: none;
  color: var(--text-secondary);
  font-size: 1.25rem;
  cursor: pointer;
  min-width: 44px;
  min-height: 44px;
  transition:
    color var(--transition-fast),
    background-color var(--transition-fast),
    transform var(--transition-fast);
}

.modal-close-btn:hover {
  color: var(--danger-color);
}

.modal-body {
  padding: 1.5rem;
  overflow-y: auto;
  min-height: 0;
  flex: 1 1 auto;
}

.modal-footer {
  padding: 1rem 1.5rem;
  border-top: 1px solid var(--border-color);
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.75rem;
  flex-shrink: 0;
}

/* --- ANIMATIONS --- */
@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

@keyframes pulse {
  0%, 100% { opacity: 0.6; }
  50% { opacity: 1; }
}

@keyframes pulse-dot-green {
  0% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.4); }
  70% { box-shadow: 0 0 0 6px rgba(16, 185, 129, 0); }
  100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); }
}

@keyframes pulse-dot-red {
  0% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.4); }
  70% { box-shadow: 0 0 0 6px rgba(239, 68, 68, 0); }
  100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0); }
}

@keyframes fadeInDown {
  from {
    opacity: 0;
    transform: translateY(-20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes page-enter {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes surface-enter {
  from {
    opacity: 0;
    transform: translateY(10px) scale(0.99);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes toast-enter {
  from {
    opacity: 0;
    transform: translateY(8px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes toast-exit {
  from {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
  to {
    opacity: 0;
    transform: translateY(4px) scale(0.98);
  }
}

@keyframes scaleIn {
  from {
    opacity: 0;
    transform: scale(0.95);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

@keyframes shake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-6px); }
  75% { transform: translateX(6px); }
}

@keyframes text-pulse-red {
  0%, 100% { color: var(--text-primary); }
  50% { color: var(--danger-color); }
}

/* --- CLASSES DE RESPONSIVIDADE DE GRID PARA FORMULÁRIOS --- */
.grid-2-col,
.grid-3-col,
.grid-1-2-col,
.grid-3-1-col {
  display: grid;
  gap: 1rem;
}

.grid-2-col {
  grid-template-columns: 1fr 1fr;
}

.grid-3-col {
  grid-template-columns: 1.2fr 1fr 1fr;
}

.grid-1-2-col {
  grid-template-columns: 1.2fr 1fr;
}

.grid-3-1-col {
  grid-template-columns: 3fr 1fr;
}

/* --- OVERRIDES RESPONSIVOS PARA MOBILE --- */
@media (max-width: 768px) {
  /* Cabeçalho Responsivo em 1 linha compacta */
  .top-header {
    flex-direction: column !important;
    align-items: flex-start !important;
    justify-content: flex-start !important;
    gap: 0.5rem !important;
    padding: 0.6rem 0.85rem !important;
  }
  
  .header-first-line {
    width: 100% !important;
  }
  
  .support-tool, .hide-on-mobile {
    display: none !important;
  }
  
  .page-content {
    padding: 0.75rem 0.5rem !important;
    box-sizing: border-box !important;
    max-width: 100vw !important;
    gap: 1rem !important;
  }
  
  .nav-tabs-wrapper {
    display: flex !important;
    flex-wrap: wrap !important;
    overflow-x: visible !important;
    white-space: normal !important;
    padding-bottom: 0.75rem !important;
    margin-bottom: 0 !important;
    gap: 0.5rem !important;
  }
  
  .nav-tabs-wrapper .btn {
    flex: 1 1 calc(50% - 0.5rem) !important;
    white-space: normal !important;
    text-align: center !important;
    justify-content: center !important;
    padding: 0.5rem !important;
    font-size: 0.82rem !important;
    line-height: 1.2 !important;
    min-height: 44px !important;
    box-sizing: border-box !important;
  }

  .nav-tabs-wrapper .btn:not(.btn-primary) {
    box-shadow: none !important;
  }
  
  .nav-tabs-wrapper::-webkit-scrollbar {
    display: none !important;
  }
  
  .nav-tabs-wrapper::-webkit-scrollbar-thumb {
    display: none !important;
  }

  .section-actions {
    flex-direction: column !important;
    align-items: stretch !important;
  }
  
  .search-actions-container {
    display: flex !important;
    flex-wrap: wrap !important;
    width: 100% !important;
  }
  
  .search-input-field {
    width: 100% !important;
    max-width: 100% !important;
    margin-bottom: 0.5rem;
  }
  
  .search-actions-container .btn {
    flex: 1 1 auto !important;
    justify-content: center;
    text-align: center;
  }

  .header-subtitle {
    display: none !important;
  }

  .header-title-area h2 {
    font-size: 1.15rem !important;
  }
  
  .header-controls {
    width: 100% !important;
    min-width: 0 !important;
    justify-content: flex-end !important;
    flex-wrap: nowrap !important;
    gap: 0.35rem !important;
    box-sizing: border-box !important;
  }
  
  .company-selector-wrapper {
    flex: 1 1 auto !important;
    width: auto !important;
    min-width: 0 !important;
    overflow: hidden !important;
  }

  .company-selector {
    width: 100% !important;
    min-width: 0 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
  }

  .network-status-badge {
    flex: 0 0 auto !important;
    white-space: nowrap !important;
  }

  .profile-dropdown-wrapper {
    flex: 0 0 44px !important;
    width: 44px !important;
    min-width: 44px !important;
    margin-left: auto !important;
  }

  .profile-toggle-btn {
    width: 44px !important;
    padding: 0 !important;
    justify-content: center !important;
  }

  .company-selector-wrapper,
  .network-status-badge,
  .net-simulator-btn,
  .profile-toggle-btn,
  .theme-toggle-btn {
    flex-grow: 0 !important;
    font-size: 0.75rem !important;
    padding: 0.35rem 0.6rem !important;
  }

  .sidebar-toggle-btn,
  .profile-toggle-btn,
  .net-simulator-btn {
    min-width: 44px !important;
    min-height: 44px !important;
  }

  /* Estatísticas em 1 coluna */
  .stats-grid {
    grid-template-columns: 1fr !important;
    gap: 1rem !important;
  }

  /* Grids de formulário e layouts empilhados em 1 coluna no mobile (< 768px) */
  .grid-2-col,
  .grid-3-col,
  .grid-1-2-col,
  .grid-3-1-col {
    grid-template-columns: 1fr !important;
    gap: 0.75rem !important;
  }

  /* Enquadramento responsivo perfeito de modais no celular */
  .modal-container {
    padding: 0.5rem !important;
  }
  
  .modal-content {
    width: 100% !important;
    max-width: 100% !important;
    border-radius: var(--radius-md) !important;
    box-sizing: border-box !important;
  }
  
  .modal-body {
    padding: 1rem 0.75rem !important;
    max-height: 75vh !important;
    overflow-x: hidden !important;
    box-sizing: border-box !important;
  }
  
  .modal-body select,
  .modal-body input,
  .modal-body button {
    max-width: 100% !important;
    box-sizing: border-box !important;
  }
  
  .modal-body select {
    min-width: 0 !important;
  }

  /* Sobrescrever grades inline em formulários do estoque */
  div[style*="grid-template-columns: 1fr 1fr"],
  div[style*="grid-template-columns: repeat(2, 1fr)"] {
    grid-template-columns: 1fr !important;
    gap: 0.75rem !important;
  }

  /* Transforma tabelas de dados em Cards Responsivos Empilhados no celular */
  .data-table, 
  .data-table tbody, 
  .data-table tr, 
  .data-table td {
    display: block !important;
    width: 100% !important;
    box-sizing: border-box !important;
  }

  .data-table thead {
    display: none !important;
  }

  .data-table tr {
    background: var(--bg-surface) !important;
    border: 1px solid var(--border-color) !important;
    border-radius: var(--radius-md) !important;
    margin-bottom: 1rem !important;
    padding: 0.75rem 1rem !important;
    box-shadow: none;
  }

  .data-table td {
    display: flex !important;
    justify-content: space-between !important;
    align-items: center !important;
    padding: 0.5rem 0 !important;
    border-bottom: 1px solid var(--border-color) !important;
    font-size: 0.85rem !important;
    text-align: right !important;
    white-space: normal !important;
    word-break: break-word !important;
    max-width: 100% !important;
  }

  .data-table td:last-child {
    border-bottom: none !important;
    padding-top: 0.75rem !important;
    justify-content: flex-end !important;
  }

  .data-table td[data-label]::before {
    content: attr(data-label);
    font-weight: 700;
    color: var(--text-secondary);
    font-size: 0.8rem;
    text-align: left;
    margin-right: 1rem;
    flex-shrink: 0;
  }

  .table-responsive,
  .table-wrapper {
    width: 100%;
    overflow-x: hidden !important;
    margin-bottom: 1.5rem;
  }
}

@media (max-width: 576px) {
  /* Enquadramento Responsivo e Elegante da Tela de Login para Celular */
  .login-wrapper {
    padding: 1rem !important;
    align-items: flex-start !important;
    padding-top: 6vh !important;
    padding-bottom: 6vh !important;
  }
  .login-card {
    padding: 1.75rem 1.25rem !important;
    border-radius: var(--radius-md) !important;
    width: 100% !important;
    max-width: 100% !important;
    gap: 1.25rem !important;
  }
  .login-logo-container {
    min-height: 70px !important;
    margin-bottom: 0.5rem !important;
  }
  .login-logo-container img {
    max-height: 85px !important;
  }
  .login-header h1 {
    font-size: 1.5rem !important;
  }

  /* Modais ocupam tela cheia com pequena margem */
  .modal-overlay {
    padding: 0.5rem !important;
  }
  
  .modal-content {
    max-width: 100% !important;
    max-height: 95vh !important;
  }

  .modal-body {
    padding: 1rem !important;
    max-height: 70vh !important;
  }
  
  .modal-footer {
    padding: 0.75rem 1rem !important;
  }

  #modal-barcode-scanner,
  #modal-stock-scanner {
    padding: 0 !important;
    align-items: stretch;
    background: var(--bg-base);
  }

  #modal-barcode-scanner .scanner-modal-content,
  #modal-stock-scanner .scanner-modal-content {
    height: 100dvh;
    max-height: 100dvh !important;
    border: 0;
    border-radius: 0 !important;
    background: var(--bg-surface);
  }

  #modal-barcode-scanner .modal-body,
  #modal-stock-scanner .modal-body {
    display: flex;
    flex-direction: column;
    max-height: none !important;
    padding: 0.75rem !important;
  }

  #modal-barcode-scanner .scanner-preview,
  #modal-stock-scanner .scanner-preview {
    flex: 1 1 auto;
    min-height: 50dvh;
    border-radius: var(--radius-sm);
  }

  #barcode-scanner-video,
  #stock-scanner-video {
    width: 100%;
    height: 100%;
    min-height: 50dvh;
    max-height: none;
  }

  /* Detalhes de prontuário e ficha */
  #view-patient-details-body {
    padding: 1rem !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
.scheduler-slot-validation {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 42px;
  padding: 0.7rem 0.85rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface-elevated);
  color: var(--text-secondary);
  font-size: 0.82rem;
  line-height: 1.35;
}

.scheduler-slot-validation.is-valid {
  border-color: rgba(22, 163, 74, 0.45);
  background: rgba(22, 163, 74, 0.08);
  color: var(--success-color, #15803d);
}

.scheduler-slot-validation.is-invalid {
  border-color: rgba(239, 68, 68, 0.5);
  background: rgba(239, 68, 68, 0.08);
  color: var(--danger-color, #dc2626);
}

.scheduler-purpose-badge {
  display: inline-flex;
  align-items: center;
  padding: 0.18rem 0.5rem;
  border-radius: 999px;
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

.scheduler-purpose-badge.is-aula {
  background: rgba(37, 99, 235, 0.12);
  color: #2563eb;
}

.scheduler-purpose-badge.is-procedimento {
  background: rgba(22, 163, 74, 0.12);
  color: var(--primary-color);
}

.scheduler-purpose-badge.is-custom {
  background: rgba(124, 58, 237, 0.12);
  color: #6d28d9;
}

.scheduler-purpose-control {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.5rem;
  width: 100%;
}

.scheduler-purpose-control .btn {
  min-width: 48px;
  min-height: 44px;
  padding-inline: 0.85rem;
}

.scheduler-selected-slots { display: flex; flex-direction: column; gap: 0.55rem; padding: 0.85rem 1rem; border: 1px dashed var(--border-color); border-radius: var(--radius-md); background: var(--surface-subtle); }
.scheduler-selected-slots > span { color: var(--text-secondary); font-size: 0.82rem; font-weight: 700; }
.scheduler-selected-slots > span i { margin-right: 0.35rem; color: var(--primary-color); }
.scheduler-selected-slots > small { color: var(--text-muted); }

.scheduler-configured-slots-field { min-width: 0; }
.scheduler-configured-slots-field > label i { margin-right: 0.3rem; color: var(--primary-color); }
.scheduler-time-slot-picker { display: grid; grid-template-columns: repeat(auto-fit, minmax(132px, 1fr)); gap: 0.5rem; min-height: 48px; padding: 0.5rem; border: 1px solid var(--border-color); border-radius: var(--radius-sm); background: var(--surface-subtle); }
.scheduler-time-slot-picker:focus { outline: 2px solid color-mix(in srgb, var(--primary-color) 20%, transparent); outline-offset: 2px; }
.scheduler-time-slot-picker > span { display: flex; grid-column: 1 / -1; align-items: center; gap: 0.45rem; min-height: 34px; color: var(--text-muted); font-size: 0.78rem; }
.scheduler-time-slot-picker > span i { color: var(--primary-color); }
.scheduler-time-slot-picker > span.is-unavailable i { color: var(--danger-color); }
.scheduler-time-slot-option { position: relative; display: block; cursor: pointer; }
.scheduler-time-slot-option input { position: absolute; opacity: 0; pointer-events: none; }
.scheduler-time-slot-option span { display: flex; align-items: center; gap: 0.4rem; min-height: 40px; padding: 0.45rem 0.55rem; border: 1px solid var(--border-color); border-radius: var(--radius-sm); background: var(--bg-surface); color: var(--text-secondary); font-size: 0.77rem; transition: border-color .15s ease, background .15s ease, color .15s ease; }
.scheduler-time-slot-option span > i { color: var(--primary-color); }
.scheduler-time-slot-option strong { color: var(--text-primary); white-space: nowrap; }
.scheduler-time-slot-option em { margin-left: auto; color: var(--text-muted); font-size: 0.66rem; font-style: normal; }
.scheduler-time-slot-option small { margin-left: auto; color: var(--danger-color); font-size: 0.65rem; font-weight: 700; }
.scheduler-time-slot-option:hover:not(.is-disabled) span,
.scheduler-time-slot-option input:focus-visible + span { border-color: var(--primary-color); }
.scheduler-time-slot-option.is-selected span { border-color: var(--primary-color); background: color-mix(in srgb, var(--primary-color) 11%, var(--bg-surface)); color: var(--text-primary); }
.scheduler-time-slot-option.is-selected span::before { content: "✓"; display: grid; place-items: center; width: 17px; height: 17px; border-radius: 999px; background: var(--primary-color); color: #fff; font-size: 0.64rem; font-weight: 800; }
.scheduler-time-slot-option.is-disabled { cursor: not-allowed; }
.scheduler-time-slot-option.is-disabled span { border-style: dashed; background: color-mix(in srgb, var(--danger-color) 5%, var(--bg-surface)); color: var(--text-muted); }
#sched-selected-dates { display: flex; flex-wrap: wrap; gap: 0.45rem; }
.scheduler-date-time-tag { display: inline-flex; align-items: center; gap: 0.45rem; min-height: 34px; padding: 0.35rem 0.65rem; border: 1px solid rgba(22, 163, 74, 0.38); border-radius: 999px; background: rgba(22, 163, 74, 0.1); color: var(--text-primary); cursor: pointer; font: inherit; font-size: 0.78rem; }
.scheduler-date-time-tag > i:first-child { color: var(--primary-color); }
.scheduler-date-time-tag strong { color: var(--primary-color); }
.scheduler-date-time-tag > i:last-child { color: var(--text-muted); }
.scheduler-date-time-tag:hover { border-color: var(--danger-color); background: rgba(239, 68, 68, 0.08); }

.scheduler-quick-modal { z-index: 180; }
.system-quick-create-modal { z-index: 220; }
.scheduler-quick-modal-content { max-width: 550px; }
.scheduler-quick-room-content { max-width: 650px; }
.scheduler-quick-modal-subtitle { margin: 0.3rem 0 0; color: var(--text-muted); font-size: 0.8rem; font-weight: 400; }
.scheduler-quick-modal-body { display: flex; flex-direction: column; gap: 1rem; padding: 1.5rem; overflow-y: auto; }
.scheduler-quick-modal-body .input-container input { min-height: 46px; padding: 0.75rem 0.9rem; }
.scheduler-quick-room-windows { display: flex; flex-direction: column; gap: 0.85rem; padding: 1rem; border: 1px solid var(--border-color); border-radius: var(--radius-md); background: var(--surface-subtle); }
.scheduler-quick-room-windows > strong { color: var(--text-secondary); font-size: 0.85rem; }
.scheduler-quick-room-windows > strong i { margin-right: 0.35rem; color: var(--primary-color); }

.whatsapp-config-shell { width: 100%; max-width: 920px; margin: 0 auto; }
.whatsapp-config-card { overflow: hidden; background: var(--bg-surface); border: 1px solid var(--border-color); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); }
.whatsapp-config-header { display: flex; gap: 1rem; align-items: flex-start; padding: 1.5rem; border-bottom: 1px solid var(--border-color); background: linear-gradient(135deg, rgba(22, 163, 74, 0.08), rgba(22, 163, 74, 0.02)); }
.whatsapp-config-heading { min-width: 0; }
.whatsapp-config-header h3 { margin: 0; font-family: var(--font-header); color: var(--text-primary); font-size: 1.15rem; line-height: 1.3; }
.whatsapp-config-header p { max-width: 660px; margin: 0.375rem 0 0; color: var(--text-secondary); line-height: 1.5; }
.whatsapp-config-icon { width: 44px; height: 44px; flex: 0 0 44px; border-radius: 14px; display: grid; place-items: center; background: rgba(37, 211, 102, 0.14); color: #16a34a; font-size: 1.35rem; }
.whatsapp-config-body { display: flex; flex-direction: column; gap: 1rem; padding: 1.5rem; }
.whatsapp-config-body .form-group { min-width: 0; margin: 0; }
.whatsapp-config-scope-control > i { left: 0.9rem; }
.whatsapp-config-scope-control select { min-height: 44px; padding: 0.65rem 0.75rem 0.65rem 2.55rem; }
.whatsapp-config-label { display: block; margin-bottom: 0.45rem; color: var(--text-secondary); font-size: 0.78rem; font-weight: 600; }
.whatsapp-status { display: flex; align-items: center; gap: 0.7rem; min-height: 44px; margin: 0; padding: 0.75rem 0.9rem; border: 1px solid var(--border-color); border-radius: var(--radius-sm); background: var(--bg-surface-elevated); }
.whatsapp-status-dot { width: 11px; height: 11px; border-radius: 50%; background: #f59e0b; box-shadow: 0 0 0 5px rgba(245, 158, 11, 0.12); }
.whatsapp-status.is-connected .whatsapp-status-dot { background: #22c55e; box-shadow: 0 0 0 5px rgba(34, 197, 94, 0.13); }
.whatsapp-status div { display: flex; flex-direction: column; gap: 0.15rem; }
.whatsapp-status small { color: var(--text-secondary); }
.whatsapp-qr-panel { display: grid; grid-template-columns: minmax(220px, 320px) 1fr; gap: 1.5rem; align-items: center; margin: 0; padding: 1.25rem; border: 1px solid rgba(37, 211, 102, 0.3); border-radius: var(--radius-md); background: rgba(37, 211, 102, 0.05); }
.whatsapp-qr-panel img { width: 100%; max-width: 320px; border-radius: 12px; background: #fff; padding: 8px; }
.whatsapp-qr-panel ol { margin: 0.7rem 0 0; padding-left: 1.2rem; color: var(--text-secondary); line-height: 1.7; }
.whatsapp-config-actions { display: flex; gap: 0.65rem; flex-wrap: wrap; margin-top: 0.25rem; }
.whatsapp-config-note { display: flex; align-items: flex-start; gap: 0.5rem; margin: 0.25rem 0 0; padding-top: 1rem; border-top: 1px solid var(--border-color); color: var(--text-muted); font-size: 0.8rem; line-height: 1.5; }
.whatsapp-config-note i { flex: 0 0 auto; margin-top: 0.15rem; color: var(--primary-color); }

@media (max-width: 680px) {
  .whatsapp-config-header, .whatsapp-config-body { padding: 1rem; }
  .whatsapp-qr-panel { grid-template-columns: 1fr; }
  .whatsapp-qr-panel img { margin: 0 auto; }
  .whatsapp-config-actions .btn { width: 100%; justify-content: center; }
  .users-data-table { min-width: 0; table-layout: auto; }
  .users-data-table colgroup { display: none; }
  .users-data-table .users-actions-cell { display: block !important; }
  .users-table-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; }
}

.scheduler-filters {
  margin-bottom: 1.5rem;
  padding: 1rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-surface-elevated);
}

.task-planner-filters {
  margin-top: 1rem;
}

.task-pdf-fields-modal-content {
  width: min(680px, calc(100vw - 2rem));
  max-width: 680px;
}

.task-pdf-fields-modal-content .modal-header h3 i {
  margin-right: 0.4rem;
  color: #ef4444;
}

.task-pdf-fields-modal-body {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.task-pdf-selection-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.8rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--surface-subtle);
  color: var(--text-secondary);
  font-size: 0.8rem;
}

.task-pdf-selection-actions > div {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.task-pdf-fields-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.65rem;
}

.task-pdf-field-option {
  position: relative;
  cursor: pointer;
}

.task-pdf-field-option input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.task-pdf-field-option span {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  min-height: 42px;
  box-sizing: border-box;
  padding: 0.65rem 0.75rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface);
  color: var(--text-secondary);
  font-size: 0.82rem;
  transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease;
}

.task-pdf-field-option span i {
  display: grid;
  place-items: center;
  width: 20px;
  height: 20px;
  flex: 0 0 20px;
  border: 1px solid var(--border-color);
  border-radius: 5px;
  color: transparent;
  font-size: 0.65rem;
}

.task-pdf-field-option input:checked + span {
  border-color: var(--primary-color);
  background: color-mix(in srgb, var(--primary-color) 8%, var(--bg-surface));
  color: var(--text-primary);
}

.task-pdf-field-option input:checked + span i {
  border-color: var(--primary-color);
  background: var(--primary-color);
  color: #fff;
}

.task-pdf-field-option input:focus-visible + span {
  outline: 2px solid color-mix(in srgb, var(--primary-color) 28%, transparent);
  outline-offset: 2px;
}

@media (max-width: 620px) {
  .task-pdf-selection-actions { align-items: flex-start; flex-direction: column; }
  .task-pdf-selection-actions > div,
  .task-pdf-selection-actions .btn { width: 100%; }
  .task-pdf-selection-actions .btn { justify-content: center; }
  .task-pdf-fields-grid { grid-template-columns: 1fr; }
}

.scheduler-filter-heading,
.scheduler-filter-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}

.scheduler-filter-heading {
  margin-bottom: 1rem;
}

.scheduler-filter-heading > div {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.scheduler-filter-heading strong {
  color: var(--text-primary);
  font-size: 0.9rem;
}

.scheduler-filter-heading strong i {
  margin-right: 0.35rem;
  color: var(--primary-color);
}

.scheduler-filter-heading span {
  color: var(--text-muted);
  font-size: 0.75rem;
}

.scheduler-filter-count {
  flex: 0 0 auto;
  padding: 0.35rem 0.65rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--primary-color) 12%, transparent);
  color: var(--primary-color) !important;
  font-weight: 700;
}

.scheduler-filter-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.85rem;
  align-items: end;
}

.scheduler-filter-field,
.scheduler-filter-period {
  min-width: 0;
}

.scheduler-filter-search,
.scheduler-filter-date-period {
  grid-column: span 2;
}

.scheduler-filter-field label,
.scheduler-filter-period legend {
  display: block;
  margin: 0 0 0.35rem;
  padding: 0;
  color: var(--text-secondary);
  font-size: 0.75rem;
  font-weight: 700;
}

.scheduler-filter-field label i,
.scheduler-filter-period legend i {
  margin-right: 0.25rem;
}

.scheduler-filter-field :is(input, select),
.scheduler-filter-period input {
  width: 100%;
  height: 40px;
  box-sizing: border-box;
  padding: 0.55rem 0.7rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.82rem;
}

.scheduler-filter-field :is(input, select):focus,
.scheduler-filter-period input:focus {
  border-color: var(--primary-color);
  outline: 2px solid color-mix(in srgb, var(--primary-color) 18%, transparent);
  outline-offset: 0;
}

.scheduler-filter-period {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.5rem;
  margin: 0;
  padding: 0;
  border: 0;
}

.scheduler-filter-period legend {
  grid-column: 1 / -1;
}

.scheduler-filter-period label {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 0.4rem;
  color: var(--text-muted);
  font-size: 0.7rem;
}

.scheduler-filter-actions {
  justify-content: flex-end;
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid var(--border-color);
}

.scheduler-filter-actions .btn {
  min-height: 40px;
}

@media (max-width: 1100px) {
  .scheduler-filter-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .scheduler-filter-search,
  .scheduler-filter-date-period { grid-column: span 1; }
}

@media (max-width: 620px) {
  .scheduler-filters { padding: 0.85rem; }
  .scheduler-filter-heading { align-items: flex-start; }
  .scheduler-filter-grid { grid-template-columns: 1fr; }
  .scheduler-filter-actions { display: grid; grid-template-columns: 1fr; }
  .scheduler-filter-actions .btn { width: 100%; justify-content: center; }
}

/* Grade de agendamentos: filtros frequentes sempre visíveis e refinamentos em drawer. */
.scheduler-records-panel {
  margin-top: 1.25rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  background: var(--bg-surface);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
}

.scheduler-table-panel-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 1.15rem;
  border-bottom: 1px solid var(--border-color);
  background: linear-gradient(110deg, var(--bg-surface) 0%, var(--surface-subtle) 100%);
}

.scheduler-table-title,
.scheduler-table-heading-actions {
  display: flex;
  align-items: center;
  gap: .75rem;
  min-width: 0;
}

.scheduler-table-title > div { min-width: 0; }
.scheduler-table-title h3,
.scheduler-table-title p { margin: 0; }

.scheduler-table-title h3 {
  color: var(--text-primary);
  font-size: 1.02rem;
}

.scheduler-table-title p {
  margin-top: .2rem;
  color: var(--text-secondary);
  font-size: .78rem;
}

.scheduler-table-title-icon {
  display: inline-grid;
  place-items: center;
  flex: 0 0 auto;
  width: 2.35rem;
  height: 2.35rem;
  border: 1px solid color-mix(in srgb, var(--primary-color) 26%, transparent);
  border-radius: .7rem;
  background: color-mix(in srgb, var(--primary-color) 9%, var(--bg-surface));
  color: var(--primary-color);
}

.scheduler-table-count {
  display: inline-flex;
  align-items: center;
  margin-left: .4rem;
  padding: .18rem .52rem;
  border: 1px solid var(--border-color);
  border-radius: 999px;
  background: var(--bg-surface-elevated);
  color: var(--text-secondary);
  font-size: .72rem;
  font-weight: 700;
  vertical-align: middle;
}

.scheduler-table-heading-actions {
  flex-wrap: wrap;
  justify-content: flex-end;
}

.scheduler-quickbar {
  display: flex;
  flex-direction: column;
  gap: 0.8rem;
  margin: 1rem 1.15rem;
  padding: 0.85rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-surface-elevated);
  box-shadow: 0 8px 20px rgba(15, 23, 42, 0.04);
}

.scheduler-list-card {
  margin: 0 1.15rem 1.25rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-surface);
  overflow: hidden;
}

.scheduler-list-card .scheduler-table-wrapper { border: 0; border-radius: 0; }
.scheduler-list-card > .scheduler-pagination { margin: 0 1rem; padding-bottom: .85rem; }

.scheduler-calendar {
  margin: 0 1.15rem 1rem;
  padding: 1rem;
  border: 1px solid color-mix(in srgb, var(--border-color) 88%, #cbd5e1);
  border-radius: calc(var(--radius-md) + .15rem);
  background: linear-gradient(180deg, var(--bg-surface-elevated) 0%, color-mix(in srgb, var(--bg-surface-elevated) 94%, #f8fafc) 100%);
  box-shadow: 0 8px 24px rgba(15, 23, 42, .045);
}

.scheduler-calendar-header,
.scheduler-calendar-actions,
.scheduler-calendar footer {
  display: flex;
  align-items: center;
  gap: .6rem;
}

.scheduler-calendar-header,
.scheduler-calendar footer { justify-content: space-between; }

.scheduler-calendar-header { padding-bottom: .9rem; border-bottom: 1px solid color-mix(in srgb, var(--border-color) 72%, transparent); }

.scheduler-calendar-header > div:first-child > span {
  color: var(--text-muted);
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .035em;
}

.scheduler-calendar h4 {
  margin: .18rem 0 0;
  color: var(--text-primary);
  font-size: 1rem;
  text-transform: capitalize;
}

.scheduler-calendar h4 i { margin-right: .35rem; color: var(--primary-color); }
.scheduler-calendar-actions { flex-wrap: wrap; justify-content: flex-end; }

.scheduler-calendar-view-label {
  display: inline-flex;
  align-items: center;
  min-height: 1.85rem;
  padding: 0 .58rem;
  border: 1px solid color-mix(in srgb, var(--primary-color) 18%, transparent);
  border-radius: 999px;
  background: color-mix(in srgb, var(--primary-color) 9%, var(--bg-surface));
  color: var(--primary-color);
  font-size: .7rem;
  font-weight: 800;
}

.scheduler-calendar-weekdays,
.scheduler-calendar-days {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
}

.scheduler-calendar-weekdays {
  gap: .45rem;
  margin-top: .9rem;
}

.scheduler-calendar-weekdays span {
  color: color-mix(in srgb, var(--text-muted) 86%, #64748b);
  font-size: .66rem;
  font-weight: 800;
  padding-left: .35rem;
  text-align: left;
  text-transform: uppercase;
}

.scheduler-calendar-days { gap: .45rem; margin-top: .45rem; }

.scheduler-calendar-day,
.scheduler-calendar-empty {
  min-height: clamp(4.5rem, 7vw, 6.15rem);
  border-radius: .65rem;
}

.scheduler-calendar-day {
  position: relative;
  display: flex;
  align-items: flex-start;
  flex-direction: column;
  justify-content: flex-start;
  padding: .55rem;
  border: 1px solid color-mix(in srgb, var(--border-color) 58%, transparent);
  background: color-mix(in srgb, var(--bg-surface) 92%, #f8fafc);
  color: var(--text-primary);
  cursor: pointer;
  font: inherit;
  font-size: .78rem;
  font-weight: 700;
  transition: border-color .16s ease, background-color .16s ease, color .16s ease, box-shadow .16s ease, transform .16s ease;
}

.scheduler-calendar-day > span { line-height: 1; }

.scheduler-calendar-day:hover {
  border-color: color-mix(in srgb, var(--primary-color) 45%, var(--border-color));
  background: color-mix(in srgb, var(--primary-color) 7%, var(--bg-surface));
  color: var(--primary-color);
  box-shadow: 0 5px 12px rgba(15, 23, 42, .08);
  transform: translateY(-1px);
}

.scheduler-calendar-day.has-appointments {
  border-color: color-mix(in srgb, var(--primary-color) 34%, var(--border-color));
  background: color-mix(in srgb, var(--primary-color) 5%, var(--bg-surface));
}

.scheduler-calendar-day.is-today { box-shadow: inset 0 0 0 1px var(--primary-color); }

.scheduler-calendar-day.is-selected {
  border-color: var(--primary-color);
  background: var(--primary-color);
  color: #fff;
}

.scheduler-calendar-day small {
  position: absolute;
  top: .45rem;
  right: .45rem;
  display: inline-grid;
  place-items: center;
  min-width: 1.05rem;
  height: 1.05rem;
  padding: 0 .2rem;
  border-radius: 999px;
  background: var(--primary-color);
  box-shadow: 0 2px 5px color-mix(in srgb, var(--primary-color) 24%, transparent);
  color: #fff;
  font-size: .62rem;
  font-weight: 800;
}

.scheduler-calendar-day.is-selected small { background: rgba(255, 255, 255, .22); color: #fff; }

.scheduler-calendar-day em {
  margin-top: auto;
  color: color-mix(in srgb, var(--primary-color) 84%, var(--text-secondary));
  font-size: .66rem;
  font-style: normal;
  font-weight: 700;
  line-height: 1.15;
  text-align: left;
}

.scheduler-calendar-day.is-selected em { color: rgba(255, 255, 255, .92); }

.scheduler-day-workspace {
  margin: 0 1.15rem 1rem;
  border: 1px solid color-mix(in srgb, var(--primary-color) 28%, var(--border-color));
  border-radius: var(--radius-md);
  background: var(--bg-surface-elevated);
  box-shadow: 0 10px 28px rgba(15, 23, 42, .07);
  overflow: hidden;
}

.scheduler-day-workspace-header {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 1rem;
  padding: 1rem;
  border-bottom: 1px solid var(--border-color);
  background: linear-gradient(110deg, color-mix(in srgb, var(--primary-color) 8%, var(--bg-surface)) 0%, var(--bg-surface) 100%);
}

.scheduler-day-workspace-header > div:nth-child(2) { min-width: 0; }

.scheduler-day-workspace-header span {
  color: var(--text-muted);
  font-size: .66rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .035em;
}

.scheduler-day-workspace-header h4 {
  margin: .18rem 0 0;
  color: var(--text-primary);
  font-size: 1.05rem;
}

.scheduler-day-workspace-header h4 i { margin-right: .35rem; color: var(--primary-color); }

.scheduler-day-workspace-header p {
  margin: .2rem 0 0;
  color: var(--text-secondary);
  font-size: .75rem;
}

.scheduler-day-workspace-navigation {
  display: flex;
  align-items: center;
  gap: .35rem;
}

.scheduler-day-workspace-content { padding: .85rem; }

.scheduler-day-workspace footer {
  padding: .75rem 1rem;
  border-top: 1px solid var(--border-color);
  color: var(--text-secondary);
  font-size: .74rem;
}

.scheduler-day-workspace footer i { margin-right: .3rem; color: var(--primary-color); }

.scheduler-calendar-expanded {
  margin-top: .85rem;
  padding: .85rem;
  border: 1px solid color-mix(in srgb, var(--primary-color) 28%, var(--border-color));
  border-radius: var(--radius-md);
  background: color-mix(in srgb, var(--primary-color) 4%, var(--bg-surface));
}

.scheduler-calendar-expanded > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  margin-bottom: .65rem;
}

.scheduler-calendar-expanded > header span {
  color: var(--text-muted);
  font-size: .66rem;
  font-weight: 800;
  text-transform: uppercase;
}

.scheduler-calendar-expanded h5 {
  margin: .15rem 0 0;
  color: var(--text-primary);
  font-size: .88rem;
}

.scheduler-calendar-appointment-card {
  display: grid;
  grid-template-columns: minmax(88px, .55fr) minmax(0, 2.2fr) auto auto;
  align-items: center;
  gap: .7rem;
  padding: .7rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface);
}

.scheduler-calendar-appointment-card + .scheduler-calendar-appointment-card { margin-top: .5rem; }

.scheduler-calendar-appointment-time {
  color: var(--primary-color);
  font-size: .78rem;
  font-weight: 800;
  white-space: nowrap;
}

.scheduler-calendar-appointment-main { min-width: 0; }
.scheduler-calendar-appointment-main .scheduler-purpose-badge { margin-bottom: .2rem; }
.scheduler-calendar-appointment-main strong { display: block; color: var(--text-primary); font-size: .84rem; overflow-wrap: anywhere; }
.scheduler-calendar-appointment-main p { margin: .22rem 0 0; color: var(--text-secondary); font-size: .72rem; overflow-wrap: anywhere; }
.scheduler-calendar-appointment-main p span { margin-inline: .18rem; }

.scheduler-calendar-appointment-actions {
  display: flex;
  align-items: center;
  gap: .3rem;
}

.scheduler-calendar-appointment-actions .btn {
  min-width: 1.9rem;
  padding-inline: .42rem;
  color: var(--text-secondary);
}

.scheduler-calendar-expanded-empty {
  margin: 0;
  padding: .6rem 0;
  color: var(--text-secondary);
  font-size: .78rem;
}

.scheduler-calendar footer {
  margin-top: .9rem;
  padding-top: .8rem;
  border-top: 1px solid var(--border-color);
  color: var(--text-secondary);
  font-size: .74rem;
}

.scheduler-calendar footer strong { color: var(--text-primary); }
.scheduler-calendar footer span { display: inline-flex; align-items: center; gap: .35rem; }
.scheduler-calendar footer i { color: var(--primary-color); font-size: .65rem; }

.scheduler-quickbar-main {
  display: grid;
  grid-template-columns: minmax(230px, 1.8fr) minmax(250px, 1.15fr) minmax(130px, 0.65fr) auto;
  align-items: end;
  gap: 0.65rem;
}

.scheduler-quick-search {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  min-height: 42px;
  padding: 0 0.75rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface);
  color: var(--text-muted);
}

.scheduler-quick-search:focus-within {
  border-color: var(--primary-color);
  outline: 2px solid color-mix(in srgb, var(--primary-color) 18%, transparent);
}

.scheduler-quick-search input {
  width: 100%;
  min-width: 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--text-primary);
  font: inherit;
  font-size: 0.84rem;
}

.scheduler-quick-period,
.scheduler-quick-status {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

.scheduler-quick-period {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.45rem;
}

.scheduler-quick-period legend,
.scheduler-quick-status > span {
  display: block;
  grid-column: 1 / -1;
  margin: 0 0 0.3rem;
  padding: 0;
  color: var(--text-muted);
  font-size: 0.7rem;
  font-weight: 700;
}

.scheduler-quick-period label {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 0.3rem;
  color: var(--text-muted);
  font-size: 0.68rem;
}

.scheduler-quickbar :is(select, input[type="date"]) {
  width: 100%;
  height: 42px;
  box-sizing: border-box;
  padding: 0.5rem 0.55rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  background: var(--bg-surface);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.78rem;
}

.scheduler-open-filter-drawer {
  min-height: 42px;
  white-space: nowrap;
  background: var(--bg-surface-elevated);
  border: 1px solid var(--border-color);
  color: var(--text-primary);
}

.scheduler-open-filter-drawer > span {
  display: inline-grid;
  place-items: center;
  min-width: 18px;
  height: 18px;
  margin-left: 0.25rem;
  border-radius: 999px;
  background: var(--primary-color);
  color: #fff;
  font-size: 0.68rem;
}

.scheduler-segment-tabs {
  display: flex;
  gap: 0.4rem;
  overflow-x: auto;
  padding-bottom: 0.1rem;
}

.scheduler-segment-tab {
  flex: 0 0 auto;
  min-height: 32px;
  padding: 0.4rem 0.7rem;
  border: 1px solid transparent;
  border-radius: 999px;
  background: transparent;
  color: var(--text-secondary);
  cursor: pointer;
  font: inherit;
  font-size: 0.76rem;
  font-weight: 700;
}

.scheduler-segment-tab:hover,
.scheduler-segment-tab.is-active {
  border-color: color-mix(in srgb, var(--primary-color) 35%, var(--border-color));
  background: color-mix(in srgb, var(--primary-color) 10%, var(--bg-surface));
  color: var(--primary-color);
}

.scheduler-filter-drawer {
  position: fixed;
  z-index: 260;
  inset: 0;
}

.scheduler-filter-drawer[hidden] { display: none; }

.scheduler-filter-drawer-backdrop {
  position: absolute;
  inset: 0;
  border: 0;
  background: rgba(15, 23, 42, 0.42);
  cursor: default;
}

.scheduler-filter-drawer-panel {
  position: absolute;
  top: 0;
  right: 0;
  display: flex;
  flex-direction: column;
  width: min(580px, 100vw);
  height: 100%;
  overflow: hidden;
  background: var(--bg-surface-elevated);
  box-shadow: -18px 0 42px rgba(15, 23, 42, 0.22);
  animation: scheduler-filter-drawer-enter 0.2s ease-out;
}

@keyframes scheduler-filter-drawer-enter {
  from { transform: translateX(100%); }
  to { transform: translateX(0); }
}

.scheduler-filter-drawer-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.2rem 1.25rem 1rem;
  border-bottom: 1px solid var(--border-color);
}

.scheduler-filter-drawer-header span {
  color: var(--text-muted);
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.035em;
}

.scheduler-filter-drawer-header h4 {
  margin: 0.25rem 0 0;
  color: var(--text-primary);
  font-size: 1.05rem;
}

.scheduler-filter-drawer-header h4 i { margin-right: 0.4rem; color: var(--primary-color); }

.scheduler-filter-drawer .scheduler-filters {
  display: flex;
  min-height: 0;
  flex: 1;
  flex-direction: column;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.scheduler-drawer-body {
  display: flex;
  min-height: 0;
  flex: 1;
  flex-direction: column;
  gap: 1rem;
  overflow-y: auto;
  padding: 1rem 1.25rem 1.4rem;
}

.scheduler-filter-group {
  padding: 0.9rem;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--surface-subtle);
}

.scheduler-filter-group h5 {
  margin: 0 0 0.75rem;
  color: var(--text-primary);
  font-size: 0.82rem;
}

.scheduler-filter-group h5 i { margin-right: 0.35rem; color: var(--primary-color); }

.scheduler-filter-drawer .scheduler-filter-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
}

.scheduler-drawer-footer {
  position: sticky;
  bottom: 0;
  justify-content: space-between;
  margin: 0;
  padding: 0.85rem 1.25rem;
  border-top: 1px solid var(--border-color);
  background: var(--bg-surface-elevated);
}

.scheduler-drawer-footer > span {
  color: var(--text-muted);
  font-size: 0.76rem;
}

.scheduler-drawer-footer > span strong { color: var(--text-primary); }
.scheduler-drawer-footer > div { display: flex; gap: 0.5rem; flex-wrap: wrap; justify-content: flex-end; }

@media (max-width: 1050px) {
  .scheduler-quickbar-main { grid-template-columns: minmax(240px, 1fr) minmax(250px, 1fr) auto; }
  .scheduler-quick-status { grid-column: 2; }
  .scheduler-open-filter-drawer { grid-column: 3; grid-row: 1 / span 2; align-self: end; }
}

@media (max-width: 680px) {
  .scheduler-table-panel-heading,
  .scheduler-table-heading-actions { align-items: stretch; flex-direction: column; }
  .scheduler-table-heading-actions .btn { justify-content: center; }
  .scheduler-quickbar,
  .scheduler-list-card,
  .scheduler-calendar,
  .scheduler-day-workspace { margin-inline: .7rem; }
  .scheduler-list-card > .scheduler-pagination { margin-inline: .7rem; }
  .scheduler-table-count { margin-left: 0; }
  .scheduler-calendar-header,
  .scheduler-calendar footer { align-items: stretch; flex-direction: column; }
  .scheduler-calendar-actions { justify-content: stretch; }
  .scheduler-calendar-actions .btn { flex: 1; justify-content: center; }
  .scheduler-calendar-view-label { justify-content: center; }
  .scheduler-calendar-day,
  .scheduler-calendar-empty { min-height: 3.15rem; }
  .scheduler-calendar-day { padding: .3rem; }
  .scheduler-calendar-day em { display: none; }
  .scheduler-calendar-expanded > header { align-items: flex-start; }
  .scheduler-calendar-appointment-card { grid-template-columns: 1fr auto; gap: .55rem; }
  .scheduler-calendar-appointment-time,
  .scheduler-calendar-appointment-main { grid-column: 1 / 2; }
  .scheduler-calendar-appointment-time { grid-row: 1; }
  .scheduler-calendar-appointment-main { grid-row: 2; }
  .scheduler-calendar-appointment-card > .scheduler-status-badge { grid-column: 2; grid-row: 1; }
  .scheduler-calendar-appointment-actions { grid-column: 2; grid-row: 2; align-self: end; }
  .scheduler-day-workspace-header { grid-template-columns: 1fr auto; gap: .7rem; }
  .scheduler-day-workspace-header > .btn { grid-column: 1 / -1; justify-content: center; }
  .scheduler-day-workspace-navigation { justify-content: flex-end; }
  .scheduler-quickbar-main { grid-template-columns: 1fr; }
  .scheduler-quick-status,
  .scheduler-open-filter-drawer { grid-column: auto; grid-row: auto; }
  .scheduler-quick-period { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .scheduler-open-filter-drawer { width: 100%; justify-content: center; }
  .scheduler-filter-drawer-panel { width: min(100%, 580px); }
  .scheduler-filter-drawer .scheduler-filter-grid { grid-template-columns: 1fr; }
  .scheduler-drawer-footer { align-items: stretch; flex-direction: column; }
  .scheduler-drawer-footer > div { display: grid; grid-template-columns: 1fr 1fr; }
  .scheduler-drawer-footer .btn { width: 100%; justify-content: center; }
}

.scheduler-client-name {
  margin-top: 0.3rem;
  font-weight: 600;
  line-height: 1.45;
  white-space: normal;
  overflow-wrap: anywhere;
}

.scheduler-appointment-row td { padding-block: .85rem; vertical-align: top; }

.scheduler-date-cell {
  display: grid;
  gap: .2rem;
  color: var(--text-primary);
  font-size: .8rem;
  font-weight: 700;
  white-space: nowrap;
}

.scheduler-date-cell > div + div {
  color: var(--text-secondary);
  font-size: .74rem;
  font-weight: 500;
}

.scheduler-purpose-cell .scheduler-purpose-badge,
.scheduler-purpose-cell .scheduler-record-type-badge { margin-bottom: .25rem; }

.scheduler-professional-cell strong {
  display: block;
  color: var(--text-primary);
  font-size: .82rem;
}

.scheduler-room-cell .mural-room {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  padding: .22rem .45rem;
  border: 1px solid color-mix(in srgb, var(--primary-color) 20%, transparent);
  border-radius: 999px;
  background: color-mix(in srgb, var(--primary-color) 7%, var(--bg-surface));
  color: var(--primary-color);
  font-size: .74rem;
  font-weight: 700;
}

.scheduler-observation-cell,
.scheduler-materials-cell {
  max-width: 180px;
  color: var(--text-secondary);
  font-size: .78rem;
}

.scheduler-materials-cell {
  overflow: hidden;
  text-overflow: ellipsis;
}

.scheduler-status-badge {
  display: inline-flex;
  align-items: center;
  padding: .2rem .48rem;
  border-radius: 999px;
  font-size: .68rem;
  font-weight: 800;
  text-transform: uppercase;
}

.scheduler-status-badge.badge-success { background: color-mix(in srgb, var(--success-color) 12%, var(--bg-surface)); color: var(--success-color); }
.scheduler-status-badge.badge-danger { background: color-mix(in srgb, var(--danger-color) 11%, var(--bg-surface)); color: var(--danger-color); }
.scheduler-status-badge.badge-warning { background: color-mix(in srgb, #f59e0b 13%, var(--bg-surface)); color: #b45309; }

.scheduler-actions-cell .table-actions { justify-content: center; }

.scheduler-actions-cell .table-actions .btn {
  min-width: 2rem;
  padding-inline: .45rem;
  color: var(--text-secondary);
}

.data-table td.scheduler-actions-cell {
  vertical-align: top;
  overflow: visible;
}

.scheduler-actions-cell .table-actions {
  flex-wrap: nowrap;
  align-items: center;
}

/* Agenda: mantém todas as ações visíveis nas larguras de tablet/desktop. */
.scheduler-data-table {
  table-layout: fixed;
}

.scheduler-data-table th,
.scheduler-data-table td {
  overflow-wrap: anywhere;
}

.scheduler-data-table .scheduler-section-row td {
  background: var(--bg-surface-elevated);
  color: var(--text-primary);
  font-weight: 700;
  padding: 0.7rem 0.85rem;
  border-top: 2px solid var(--border-color);
  text-align: left;
}

.scheduler-data-table .scheduler-section-row i {
  color: var(--primary-color);
  margin-right: 0.4rem;
}

.scheduler-data-table .scheduler-section-row.is-completed i {
  color: var(--success-color);
}

.scheduler-data-table .scheduler-section-row span {
  float: right;
  min-width: 1.6rem;
  padding: 0.1rem 0.45rem;
  border-radius: 999px;
  background: var(--bg-surface);
  color: var(--text-secondary);
  font-size: 0.75rem;
  text-align: center;
}

@media (min-width: 769px) {
  .scheduler-table-wrapper {
    overflow-x: hidden;
  }

  .scheduler-data-table {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    font-size: 0.8rem;
  }

  .scheduler-data-table th,
  .scheduler-data-table td {
    box-sizing: border-box;
    padding: 0.7rem 0.4rem;
  }

  .scheduler-data-table.scheduler-has-created-at th:nth-child(1),
  .scheduler-data-table.scheduler-has-created-at td:nth-child(1) { width: 10%; }
  .scheduler-data-table.scheduler-has-created-at th:nth-child(2),
  .scheduler-data-table.scheduler-has-created-at td:nth-child(2) { width: 11%; }
  .scheduler-data-table.scheduler-has-created-at th:nth-child(3),
  .scheduler-data-table.scheduler-has-created-at td:nth-child(3) { width: 11%; }
  .scheduler-data-table.scheduler-has-created-at th:nth-child(4),
  .scheduler-data-table.scheduler-has-created-at td:nth-child(4) { width: 10%; }
  .scheduler-data-table.scheduler-has-created-at th:nth-child(5),
  .scheduler-data-table.scheduler-has-created-at td:nth-child(5) { width: 10%; }
  .scheduler-data-table.scheduler-has-created-at th:nth-child(6),
  .scheduler-data-table.scheduler-has-created-at td:nth-child(6) { width: 13%; }
  .scheduler-data-table.scheduler-has-created-at th:nth-child(7),
  .scheduler-data-table.scheduler-has-created-at td:nth-child(7) { width: 12%; }
  .scheduler-data-table.scheduler-has-created-at th:nth-child(8),
  .scheduler-data-table.scheduler-has-created-at td:nth-child(8) { width: 8%; }
  .scheduler-data-table.scheduler-has-created-at th:nth-child(9),
  .scheduler-data-table.scheduler-has-created-at td:nth-child(9) { width: 15%; }

  .scheduler-actions-cell .table-actions {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(36px, 1fr));
    gap: 0.35rem;
    min-width: 0;
  }

  .scheduler-actions-cell .btn {
    width: 100%;
    min-width: 0;
    min-height: 40px;
    padding: 0.45rem;
    justify-content: center;
  }

  .scheduler-data-table.scheduler-has-created-at th:nth-child(9),
  .scheduler-data-table.scheduler-has-created-at td:nth-child(9) {
    min-width: 0;
    padding-right: 0.65rem;
  }
}

.scheduler-class-fields {
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: 1rem;
  background: var(--bg-surface);
}

.scheduler-class-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr) minmax(180px, 0.65fr);
  gap: 1rem;
  align-items: end;
}

.scheduler-class-grid.is-course-only {
  grid-template-columns: minmax(0, 1fr);
}

.scheduler-class-grid.is-course-only.has-discipline {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}

.scheduler-course-control,
.scheduler-semester-control {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.5rem;
  width: 100%;
}

.scheduler-course-control .btn,
.scheduler-semester-control .btn {
  min-width: 48px;
  min-height: 44px;
}

.scheduler-semester-group {
  margin-top: 1rem;
}

.scheduler-semester-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  min-height: 1.7rem;
  margin-top: 0.15rem;
}

.scheduler-semester-tags .sched-semester-tag {
  border: 1px solid rgba(22, 163, 74, 0.28);
  padding: 0.25rem 0.55rem;
  cursor: pointer;
}

@media (max-width: 640px) {
  .scheduler-purpose-client-grid {
    grid-template-columns: 1fr;
  }

  .scheduler-class-grid {
    grid-template-columns: 1fr;
  }

  .scheduler-semester-control {
    grid-template-columns: 1fr;
  }

  .scheduler-semester-control .btn {
    width: 100%;
  }
}
