/* Soroponto Web · Interface 2026 (v0.15)
 * Camada visual. Nenhum seletor altera regras de cálculo, nomes de campos ou endpoints.
 * A folha legada permanece carregada para compatibilidade com os formulários Windows.
 */
:root {
  color-scheme: dark;
  --ui-bg: #0c1519;
  --ui-sidebar: #0e191e;
  --ui-top: #142126;
  --ui-surface: #18272d;
  --ui-surface-2: #1c2d33;
  --ui-surface-3: #23363c;
  --ui-field: #102026;
  --ui-border: #2c4349;
  --ui-border-focus: #48d79a;
  --ui-text: #edf6f3;
  --ui-muted: #9cb6b3;
  --ui-soft: #bdd1cf;
  --ui-green: #39cd87;
  --ui-green-deep: #147c52;
  --ui-green-wash: rgba(45, 203, 128, .12);
  --ui-warning: #f1bf78;
  --ui-danger: #ff989e;
  --ui-shadow: 0 16px 38px rgba(2, 10, 13, .19);
  --ui-radius: 15px;
  --ui-radius-sm: 9px;
  --navy: var(--ui-sidebar);
  --navy2: var(--ui-top);
  --panel: var(--ui-surface);
  --panel2: var(--ui-surface-2);
  --line: var(--ui-border);
  --green: var(--ui-green-deep);
  --mint: var(--ui-green);
  --text: var(--ui-text);
  --mute: var(--ui-muted);
  --danger: var(--ui-danger);
  --surface: var(--ui-surface-2);
  --input-bg: var(--ui-field);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { background: var(--ui-bg); color: var(--ui-text); font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif; font-size: 14px; line-height: 1.5; -webkit-font-smoothing: antialiased; }
body:has(.login-shell) { background: radial-gradient(circle at 72% 18%, #153b32 0, transparent 36%), radial-gradient(circle at 14% 85%, #133038 0, transparent 44%), #0d161b; }
button, input, select, textarea { font: inherit; }
button, a, summary, input, select, textarea { -webkit-tap-highlight-color: transparent; }
a { color: #74e6b3; text-decoration: none; }
a:hover { color: #b1f5d3; }
button { cursor: pointer; }
:focus-visible { outline: 3px solid rgba(73, 219, 150, .84); outline-offset: 3px; }
::selection { background: #278b62; color: white; }
[hidden] { display: none !important; }

/* Estrutura e navegação — todas as telas autenticadas */
.app-shell { min-height: 100vh; display: flex; align-items: stretch; }
.sidebar { width: 268px; min-width: 268px; height: 100dvh; position: sticky; top: 0; display: flex; flex-direction: column; overflow-y: auto; background: linear-gradient(180deg, #12242a, var(--ui-sidebar) 34%); border-right: 1px solid #254047; scrollbar-width: thin; scrollbar-color: #38545a transparent; z-index: 30; }
.brand { padding: 24px 22px 22px; gap: 13px; border-bottom: 1px solid rgba(142, 185, 174, .14); }
.brand img { width: 45px; height: 45px; padding: 6px; object-fit: contain; border-radius: 14px; background: linear-gradient(145deg, #1b503a, #143a32); box-shadow: inset 0 0 0 1px rgba(94, 235, 164, .25); }
.brand strong { font-size: 16px; color: #f0fff9; letter-spacing: .12em; line-height: 1.2; }
.brand span { font-size: 12px; color: #9fbdb7; margin-top: 4px; letter-spacing: .01em; }
.side-subtitle { padding: 23px 22px 11px; font-size: 10px; letter-spacing: .17em; color: #819e9c; }
.side-subtitle .view-tag { display: block; font-size: 10px; margin: 8px 0 0; padding: 0; border: 0; letter-spacing: 0; font-weight: 500; color: #66d6a2; text-transform: none; }
.sidebar nav { padding: 5px 11px 15px; flex: 1; }
.nav-section { padding: 1px 0 4px; }
.nav-section-label { border: 0; border-radius: 10px; margin: 3px 0; padding: 11px 10px; color: #a6c0bb; letter-spacing: .045em; font-weight: 650; text-transform: none; font-size: 12px; gap: 10px; }
.nav-group-icon { width: 17px; height: 17px; stroke: currentColor; flex: none; opacity: .75; }
.nav-group-label { flex: 1; }
.nav-section-label:hover { background: rgba(108, 165, 143, .1); color: #def8ed; }
.nav-section[open] > .nav-section-label { background: rgba(45, 203, 128, .1); color: #75e9b4; border: 0; }
.nav-section[open] > .nav-section-label .nav-group-icon { opacity: 1; }
.nav-arrow { width: 7px; height: 7px; opacity: .8; transition: transform .2s ease; }
.nav-section-content { padding: 3px 0 7px 6px; }
.nav-link { border: 1px solid transparent; border-radius: 9px; margin: 3px 0; min-height: 40px; padding: 9px 9px; gap: 11px; color: #b7cbc7; font-size: 12.5px; font-weight: 520; line-height: 1.2; transition: color .15s, background .15s, border .15s; }
.nav-link:hover { border-color: rgba(99, 172, 146, .14); background: #1c3733; color: #f2fff9; }
.nav-link.selected { border: 1px solid rgba(87, 227, 153, .28); background: linear-gradient(90deg, rgba(47, 171, 108, .27), rgba(38, 133, 89, .12)); color: #8ff1bc; font-weight: 720; }
.nav-link .nav-svg { width: 17px; height: 17px; color: #8eb5a9; stroke: currentColor; flex-shrink: 0; }
.nav-link.selected .nav-svg { color: #73ebb0; }
.pending-label { font-size: 9px; border: 1px solid #766143; border-radius: 4px; padding: 2px 4px; color: #e9c995; font-weight: 600; }
.side-bottom { border-top: 1px solid rgba(142, 185, 174, .14); padding: 16px 22px 19px; color: #a0b8b3; font-size: 11px; line-height: 1.5; }
.side-bottom span { color: #648781; padding-top: 3px; }
.main-shell { min-width: 0; flex: 1; background: radial-gradient(circle at 94% 0%, rgba(41, 146, 101, .045), transparent 32%), var(--ui-bg); }
.topbar { height: 76px; position: sticky; top: 0; z-index: 20; display: flex; gap: 24px; justify-content: space-between; align-items: center; background: rgba(20, 33, 38, .96); backdrop-filter: blur(18px); border-bottom: 1px solid var(--ui-border); padding: 0 clamp(18px, 2.4vw, 38px); }
.topbar-context { min-width: 125px; flex: 0 1 260px; }
.topbar-context small { display: block; color: #90b0a7; font-size: 10px; text-transform: uppercase; font-weight: 700; letter-spacing: .14em; line-height: 1.2; }
.breadcrumb { font-size: 14px; font-weight: 650; color: var(--ui-text); margin-top: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.module-search-bar { width: 340px; max-width: 340px; flex: 1 1 230px; min-width: 160px; height: 40px; background: #101f24; border: 1px solid #304d4f; border-radius: 11px; overflow: hidden; transition: border-color .16s, box-shadow .16s; }
.module-search-bar:focus-within { border-color: var(--ui-green); box-shadow: 0 0 0 3px rgba(51, 209, 132, .12); }
.module-search-bar input { color: var(--ui-text); font-size: 12px; padding: 10px 14px; }
.module-search-bar input::placeholder { color: #8aa5a3; }
.module-search-bar button { background: transparent; color: #9ec8b8; border-left: 1px solid #284144; padding: 6px 13px; height: 100%; font-size: 20px; }
.module-search-bar button:hover { background: #204237; color: #a8edcb; }
.right-top { gap: 12px; flex: 0 0 auto; color: var(--ui-text); }
.mode-flag { color: #a6c7b6; background: rgba(44, 90, 70, .2); border-color: rgba(95, 169, 130, .25); border-radius: 7px; font-size: 10px; letter-spacing: .03em; padding: 6px 8px; white-space: nowrap; }
.top-user { color: #ceddd9; font-size: 12px; max-width: 155px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
.user-avatar { width: 34px; height: 34px; display: grid; place-items: center; background: #284c3e; border: 1px solid #41765b; border-radius: 11px; color: #b9f6d4; font-weight: 750; flex: 0 0 auto; }
.logout { border: 1px solid #3c5658; border-radius: 9px; background: #1c3035; color: #dee8e4; padding: 8px 12px; font-size: 12px; font-weight: 650; transition: background .15s; }
.logout:hover { background: #32454c; color: white; }
#mobileMenu { display: none; background: transparent; border: 1px solid var(--ui-border); color: #fff; border-radius: 9px; width: 39px; height: 39px; place-items: center; }
#sidebarBackdrop { display: none; }
.content { background: transparent; min-height: calc(100vh - 76px); max-width: 1700px; margin: 0 auto; padding: clamp(20px, 2.5vw, 36px) clamp(18px, 2.6vw, 44px) 42px; }
.page-title { align-items: start; margin-bottom: 26px; gap: 16px; }
.page-eyebrow { color: #70bba0; font-size: 11px; text-transform: uppercase; letter-spacing: .13em; font-weight: 800; margin-bottom: 7px; }
.page-title h1 { font-size: clamp(23px, 2vw, 30px); letter-spacing: -.035em; line-height: 1.2; font-weight: 750; }
.page-version { color: #91aaa7; font-size: 10px; line-height: 1.5; text-align: right; max-width: 280px; }
.footnote { margin-top: 15px; border-top: 1px solid rgba(146, 182, 169, .11); padding: 20px 0 3px; line-height: 1.6; font-size: 11px; color: #809f99; }

/* Blocos, cards e indicadores */
.panel, .quick-actions { background: linear-gradient(145deg, #1a2b31, #17262c); border: 1px solid var(--ui-border); border-radius: var(--ui-radius); box-shadow: var(--ui-shadow); margin-bottom: 22px; padding: 21px 23px; min-width: 0; }
.panel h2, .quick-actions h2 { font-size: 16px; letter-spacing: -.01em; color: #ecf7f2; font-weight: 700; }
.panel h3 { font-size: 14px; color: #deefe8; }
.panel p, .quick-actions p { line-height: 1.65; }
.panel-head { margin-bottom: 19px; padding-bottom: 15px; border-bottom: 1px solid #2d4347; flex-wrap: wrap; }
.panel-head span { color: #a4bab5; font-size: 11px; }
.quick-actions { background: radial-gradient(circle at right top, rgba(47, 190, 116, .13), transparent 45%), linear-gradient(135deg, #1b3230, #17262c); border-color: #36614e; }
.dashboard-kicker { font-size: 11px; letter-spacing: .13em; font-weight: 800; text-transform: uppercase; color: #78dca8; margin-bottom: 9px; }
.dashboard-intro { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.dashboard-intro h2 { font-size: 24px; font-weight: 760; letter-spacing: -.04em; }
.dashboard-intro p { color: #bed1ca; margin: 6px 0 0; max-width: 720px; }
.dashboard-decor { width: 52px; height: 52px; border-radius: 16px; background: rgba(58, 215, 139, .11); border: 1px solid rgba(64, 214, 139, .24); color: #71e7ac; display: grid; place-items: center; flex: 0 0 auto; }
.dashboard-decor svg { width: 27px; height: 27px; }
.action-items { gap: 10px; margin-top: 20px; }
.action-items a { display: inline-flex; align-items: center; gap: 9px; min-height: 41px; background: rgba(34, 97, 67, .34); border: 1px solid rgba(76, 197, 134, .35); color: #d4ffeb; border-radius: 9px; padding: 10px 13px; font-weight: 640; font-size: 12px; box-shadow: none; transition: transform .15s, background .15s; }
.action-items a:hover { background: #216b4b; color: white; transform: translateY(-1px); }
.action-items svg { width: 17px; height: 17px; }
.stats-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-bottom: 22px; }
.stat { min-width: 0; min-height: 142px; padding: 19px; background: linear-gradient(160deg, #1e3035, #17272c); border: 1px solid #31494d; border-top: 1px solid #31494d; border-radius: 14px; position: relative; box-shadow: 0 8px 24px rgba(0, 0, 0, .10); }
.stat-icon { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 10px; border: 1px solid #2c7559; background: rgba(29, 124, 81, .22); color: #76e7ac; margin-bottom: 12px; }
.stat-icon svg { width: 19px; height: 19px; }
.stat span { color: #b0c7bf; font-size: 12px; }
.stat strong { color: #f2fff8; font-size: clamp(23px, 2vw, 30px); letter-spacing: -.035em; font-variant-numeric: tabular-nums; margin-top: 8px; font-weight: 750; line-height: 1.25; overflow-wrap: anywhere; }
.stat small { display: block; color: #819e9c; line-height: 1.45; margin-top: 6px; }
.stat-link { display: block; text-decoration: none; color: inherit; transition: border-color .16s ease, transform .16s ease, box-shadow .16s ease; }
.stat-link:hover, .stat-link:focus-visible { border-color: #58bf8c; box-shadow: 0 10px 28px rgba(0,0,0,.18); transform: translateY(-2px); outline-offset: 3px; }


/* Formulários em todas as páginas; nomes e inputs permanecem intactos */
input:not([type=checkbox]):not([type=radio]):not([type=hidden]), select, textarea { color: var(--ui-text); background: var(--ui-field); border: 1px solid #3a5658; border-radius: var(--ui-radius-sm); padding: 10px 12px; min-height: 40px; box-shadow: none; max-width: 100%; }
input::placeholder, textarea::placeholder { color: #819e9c; opacity: 1; }
input:not([type=checkbox]):not([type=radio]):not([type=hidden]):focus, select:focus, textarea:focus { border-color: var(--ui-border-focus); outline: 0; box-shadow: 0 0 0 3px rgba(57, 205, 135, .14); }
input[type=checkbox], input[type=radio] { accent-color: #38d18c; cursor: pointer; }
input:disabled, select:disabled, textarea:disabled { opacity: .56; cursor: not-allowed; }
select option { background: #14252a; color: var(--ui-text); }
label { color: #c6d8d2; }
.filterbar, .win-filterbar { display: flex; gap: 13px; flex-wrap: wrap; align-items: flex-end; margin: 10px 0 20px; }
.filterbar label, .win-filterbar label { font-size: 12px; font-weight: 660; color: #bdd2ca; }
.filterbar input, .filterbar select, .win-filterbar input, .win-filterbar select { background: var(--ui-field); color: var(--ui-text); border: 1px solid #3a5658; border-radius: 9px; padding: 10px 12px; min-height: 40px; }
.filterbar input[name=q] { min-width: min(280px, 100%); }
.cad-form { margin-top: 20px; }
.cad-grid { gap: 18px; }
.cad-grid label, .cad-days label { gap: 8px; font-size: 12px; font-weight: 650; color: #bfd6cc; }
.cad-grid input, .cad-grid select, .cad-days input, .parity-form input:not([type=checkbox]), .parity-form select { background: var(--ui-field); border: 1px solid #3a5658; color: var(--ui-text); border-radius: 9px; min-height: 40px; }
.parity-grid { gap: 18px; }
.parity-form { background: #172930; border: 1px solid #345052; border-radius: 13px; gap: 16px; padding: 22px; }
.parity-form label { color: #c5d9d2; font-size: 12px; font-weight: 640; gap: 7px; }
.parity-form .win-checkbox-label { padding: 10px 11px; background: #1d3336; border: 1px solid #345052; border-radius: 9px; }
.win-checkbox-label { cursor: pointer; }
.cad-actions { gap: 12px; margin-top: 22px; }
.green-button, .action-items .green-button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; background: linear-gradient(135deg, #259b63, #187e54); border: 1px solid #38b978; color: #fff; border-radius: 9px; padding: 10px 16px; min-height: 40px; font-weight: 720; font-size: 12px; box-shadow: 0 5px 14px rgba(7, 61, 38, .16); transition: background .15s, box-shadow .15s, transform .15s; }
.green-button:hover { background: linear-gradient(135deg, #35bc79, #229d69); color: #fff; transform: translateY(-1px); box-shadow: 0 7px 16px rgba(6, 77, 44, .2); }
.green-button:active, .win-button:active { transform: translateY(0); }
.win-button { background: #25393e; color: #e3f3e9; border: 1px solid #466064; border-radius: 9px; padding: 9px 13px; min-height: 38px; font-weight: 650; transition: background .15s, border-color .15s, transform .15s; }
.win-button:hover { background: #2d5048; border-color: #558c72; color: white; }
.catalog-delete { border: 1px solid #755255; background: #402a31; color: #ffc4c3; border-radius: 8px; padding: 7px 10px; }
.catalog-delete:hover { background: #6b343e; }
.catalog-actions>a { color: #8af2ba; }
.cad-tabs { margin: 14px 0 20px; gap: 9px; }
.cad-tabs a { border: 1px solid #466064; background: #20383a; border-radius: 9px; }
.cad-tabs a.active { background: #176b4a; border-color: #38bd7c; color: #fff; }

/* Tabelas e filtros */
.scroll-x { overflow-x: auto; scrollbar-width: thin; scrollbar-color: #48625f #142328; border-radius: 10px; border: 1px solid #304449; }
table, .win-table { width: 100%; min-width: 640px; border-collapse: collapse; border-spacing: 0; font-size: 12.5px; }
th, .win-table th { background: #22373c; color: #bfe2d4; font-size: 11px; font-weight: 760; letter-spacing: .025em; text-transform: none; border: 0; border-bottom: 1px solid #3b5a59; padding: 13px 15px; text-align: left; white-space: nowrap; }
td, .win-table td { color: #e3ece8; border: 0; border-bottom: 1px solid #30474a; padding: 13px 15px; vertical-align: middle; }
tbody tr:nth-child(even) td { background: rgba(46, 67, 69, .18); }
tbody tr:hover td, .win-table tr:hover td { background: #28413f; }
tbody tr:last-child td { border-bottom: 0; }
.win-table tr:has(input[type=radio]:checked) td { background: #205842; }
.empty { color: #96b4af; font-size: 13px; padding: 36px 15px; text-align: center; }
.win-table td:first-child, .win-table th:first-child { text-align: center; }
.punch-table th, .punch-table td { text-align: center; }
.punch-table th:first-child, .punch-table td:first-child { text-align: left; }
.punch-table .mark.hasmark { color: #9bf5c0; }
.punch-table .mark.justi { color: #f5c981; }
.win-toolbar { margin-bottom: 18px; gap: 14px; }
.win-toolbar h2 { font-size: 20px; font-weight: 760; letter-spacing: -.03em; color: #eaf8f0; }
.win-toolbar-buttons, .win-selection-tools, .win-cycle-toolbar { gap: 9px; }
.win-filterbar label { color: #acc8be; }
.win-filterbar input { min-width: min(240px, 100%); }
.win-hint, .win-muted { font-size: 12px; line-height: 1.65; }
.win-hint { color: #e9bf86; }
.win-muted { color: #a1c1b4; }
.panel-note { background: rgba(63, 158, 117, .10); border-left: 3px solid #48c98b; border-radius: 0 9px 9px 0; color: #b9dbce; padding: 13px 15px; }
.alert-success, .alert-warning { border-radius: 10px; padding: 13px 16px; margin: 12px 0 18px; font-size: 13px; line-height: 1.5; }
.alert-success { background: #1b4937; color: #bff6d4; border: 1px solid #397959; }
.alert-warning { background: #533a33; color: #ffe6cb; border: 1px solid #885846; }
.label-ok { color: #88eeb4; }
.label-warning { color: #f1c78a; }
.placeholder { padding: 43px 22px; }
.placeholder-icon { color: #64e5a2; }

/* Modais de Horários/Feriados/Justificativas: layout denso e amplo, sem perder os campos */
.win-dialog { border: 1px solid #42605e; background: #182a2f; border-radius: 16px; color: #f0f9f5; box-shadow: 0 30px 90px rgba(0, 0, 0, .58); width: min(1510px, 96vw); max-width: 96vw; max-height: 94dvh; }
.win-dialog::backdrop { background: rgba(3, 11, 14, .77); backdrop-filter: blur(4px); }
.win-dialog[open] { display: flex; flex-direction: column; }
.win-form { max-height: 94dvh; }
.win-dialog-head { padding: 19px 24px; background: #20353a; border-bottom: 1px solid #38585a; }
.win-dialog-head h2 { font-size: 18px; letter-spacing: -.02em; font-weight: 760; color: #f0faf6; }
.win-close { width: 36px; height: 36px; border-radius: 9px; display: grid; place-items: center; background: rgba(255,255,255,.04); color: #dce9e2; font-size: 23px; line-height: 1; }
.win-close:hover { background: #365050; }
.win-dialog-body { background: #182a2f; padding: 22px 24px; }
.win-dialog-footer { background: #20353a; padding: 16px 24px; border-top: 1px solid #38585a; }
.win-mini-dialog { width: min(650px, 94vw); }
.win-mini-form { gap: 15px; }
.win-mini-form label { color: #d3e5dc; font-weight: 620; }
.win-schedule-fields { gap: 16px 24px; }
.win-schedule-fields label { color: #cfe4d8; font-size: 12px; font-weight: 670; }
.win-schedule-fields input:not([type=checkbox]), .win-schedule-fields select, .win-base-date input, .win-mini-form input, .win-mini-form select { background: #102126; border: 1px solid #3a5c58; border-radius: 8px; color: #edf7f3; min-height: 39px; }
.win-base-date { margin: 20px 0 16px; gap: 12px; }
.win-base-date label { color: #cfe7db; font-weight: 640; }
.win-base-date span { color: #ebc58e; }
.win-grid-title { font-size: 12px; color: #aedbc7; }
.win-grid-scroll { border: 1px solid #3c5758; background: #13252a; border-radius: 10px; scrollbar-color: #527a6c #102026; }
.win-day-table { min-width: 1700px; width: max-content; }
.win-day-table th { background: #25403d; color: #daf0e4; padding: 11px 8px; border-bottom: 1px solid #3d6558; }
.win-day-table td { background: #193035; padding: 7px 5px; border-bottom: 1px solid #294b4a; }
.win-day-table tr:nth-child(even) td { background: #1b3438; }
.win-day-table tr:hover td { background: #284745; }
.win-day-table input:not([type=checkbox]), .win-day-table select { background: #11262c; color: #f2fcf6; border-color: #486a64; border-radius: 6px; font-size: 12px; }
.win-day-table input.win-hour { width: 91px; }
.win-day-table input.win-number { width: 69px; }
.win-charge { color: #90efbd; }
.win-tabbar { border-bottom: 1px solid #395954; gap: 7px; margin: 18px 0; }
.win-tab { border: 1px solid #3d5758; border-bottom: 0; border-radius: 9px 9px 0 0; color: #bed4cb; background: #21363c; padding: 11px 16px; font-size: 12px; }
.win-tab.active { background: #1d7952; color: #fff; border-color: #35ad76; }
.win-stats div { border: 1px solid #375955; background: #1a3235; border-radius: 11px; padding: 17px; }
.win-stats b { color: #89f1b8; }
.punch-treat-form input, .punch-treat-form select { background: var(--ui-field); color: var(--ui-text); border-color: #49625f; }

/* Login */
.login-shell { width: min(900px, calc(100vw - 36px)); min-height: 525px; grid-template-columns: minmax(0, 1.14fr) minmax(270px, .86fr); background: #19282d; border: 1px solid #355752; border-radius: 22px; overflow: hidden; box-shadow: 0 32px 90px rgba(0, 0, 0, .42); margin: clamp(28px, 9vh, 105px) auto; }
.login-left { padding: clamp(30px, 4vw, 52px); }
.login-mark { display: inline-flex; align-items: center; gap: 10px; color: #89f1ba; letter-spacing: .12em; font-size: 12px; }
.login-mark::before { content: ''; width: 9px; height: 9px; border-radius: 50%; background: #4bdd9a; box-shadow: 0 0 0 5px rgba(61, 205, 133, .11); }
.login-left h1 { margin-top: 28px; font-size: clamp(27px, 3vw, 37px); letter-spacing: -.04em; font-weight: 760; }
.login-intro { color: #b6cfc5; font-size: 14px; margin-bottom: 36px; }
.login-left label { color: #c9e1d6; font-size: 11px; letter-spacing: .08em; }
.login-left input:not([type=checkbox]) { display: block; width: 100%; height: 46px; border-radius: 9px; padding: 10px 13px; margin-bottom: 20px; background: #102126; color: #f3fcf7; border: 1px solid #3d5b58; }
.login-submit { width: 100%; min-height: 46px; margin-top: 8px; font-size: 14px; }
.login-fine { color: #8eaca3; line-height: 1.6; margin-top: 29px; }
.login-right { border-left: 1px solid #335850; background: radial-gradient(circle at 55% 37%, #245e46 0%, #1b3e36 36%, #112a2d 85%); padding: 28px; text-align: center; }
.login-right strong { color: #a3f5c8; font-size: 13px; letter-spacing: .14em; }
.login-right img { width: 185px; height: 185px; object-fit: contain; margin: 35px 0 20px; filter: drop-shadow(0 12px 20px rgba(0, 0, 0, .22)); }
.login-right h2 { font-size: 18px; letter-spacing: -.025em; }
.login-right p { color: #b5dfca; }
.login-right span { color: #95bbac; }
.login-error { background: #683e3d; border: 1px solid #a05a54; border-radius: 9px; padding: 12px; }

/* Responsividade */
@media (max-width: 1340px) {
  .stats-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .sidebar { width: 242px; min-width: 242px; }
  .module-search-bar { max-width: 270px; }
  .mode-flag { display: none; }
}
@media (max-width: 1020px) {
  .stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .topbar { gap: 12px; }
  .module-search-bar { max-width: 210px; }
  .top-user { display: none; }
  .page-version { max-width: 190px; }
}
@media (max-width: 800px) {
  .sidebar { display: flex; position: fixed; top: 0; left: 0; width: min(286px, 88vw); min-width: 0; height: 100dvh; transform: translateX(-105%); transition: transform .22s ease; box-shadow: 18px 0 40px rgba(0,0,0,.36); z-index: 101; }
  .sidebar.open { transform: translateX(0); }
  #sidebarBackdrop.show { display: block; position: fixed; inset: 0; background: rgba(1, 9, 12, .67); z-index: 100; border: 0; cursor: default; }
  #mobileMenu { display: grid; flex: 0 0 auto; }
  .topbar { padding: 0 16px; height: 66px; }
  .module-search-bar { max-width: 260px; }
  .content { padding: 22px 16px 36px; }
  .page-title { flex-direction: column; gap: 5px; }
  .page-version { text-align: left; max-width: 100%; }
  .panel, .quick-actions { padding: 18px; }
}
@media (max-width: 560px) {
  .topbar-context { flex: 0 1 auto; min-width: 0; }
  .breadcrumb { font-size: 12px; max-width: 125px; }
  .module-search-bar { flex: 0 1 36px; min-width: 36px; max-width: 40px; transition: max-width .2s ease, flex-basis .2s ease; }
  .module-search-bar:focus-within { max-width: 170px; flex-basis: 170px; }
  .module-search-bar input { padding: 9px 6px; min-width: 0; }
  .module-search-bar:not(:focus-within) input { width: 0; padding: 0; }
  .module-search-bar button { padding: 5px 8px; border-left: 0; }
  .user-avatar { width: 31px; height: 31px; }
  .logout { padding: 8px 9px; }
  .right-top { gap: 6px; }
  .stats-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
  .stat { padding: 15px; min-height: 125px; }
  .stat strong { font-size: 24px; }
  .dashboard-intro h2 { font-size: 22px; }
  .dashboard-decor { display: none; }
  .filterbar, .win-filterbar { align-items: stretch; }
  .filterbar label, .win-filterbar label { max-width: 100%; }
  .filterbar input, .filterbar select, .win-filterbar input, .win-filterbar select { min-width: 0; width: 100%; }
  .win-toolbar { align-items: flex-start; }
  .win-toolbar-buttons { width: 100%; }
  .win-mini-form { grid-template-columns: 1fr; }
  .win-mini-form .win-checkbox-label { grid-column: auto; }
  .win-dialog, .win-dialog[open] { width: 100vw; max-width: 100vw; max-height: 100dvh; border-radius: 0; }
  .win-form { max-height: 100dvh; }
  .win-schedule-fields { grid-template-columns: 1fr; }
  .win-schedule-fields label:nth-child(2) { grid-column: auto; }
  .win-dialog-head, .win-dialog-footer { padding: 14px 16px; }
  .win-dialog-body { padding: 16px; }
  .login-shell { grid-template-columns: 1fr; width: min(420px, calc(100vw - 28px)); margin: 20px auto; }
  .login-left { padding: 33px 26px; }
  .login-right { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
@media print {
  :root { color-scheme: light; }
  body, .main-shell, .content, .panel, .quick-actions, .stat { color: #111; background: #fff; box-shadow: none; }
  .sidebar, .topbar, #sidebarBackdrop, .action-items, .logout, .footnote, .page-version { display: none !important; }
  .content { max-width: none; padding: 0; }
  .panel { border: 0; padding: 8px 0; }
  td, th { background: #fff !important; color: #111 !important; }
}

/* Campos da pesquisa global mantêm o aspecto embutido na barra. */
.module-search-bar input[type=search], .module-search-bar input[type=search]:focus {
  border: 0; border-radius: 0; box-shadow: none; min-height: 38px;
  height: 38px; padding: 9px 12px; flex: 1 1 auto;
  background: transparent; color: var(--ui-text);
}
.module-search-bar button { display: grid; place-items: center; min-width: 41px; }
.win-date-control input[type=date], .win-base-date input[type=date] {
  width: 44px; min-width: 44px; max-width: 44px; padding: 6px 4px;
  color: transparent; font-size: 0;
}
.win-date-control input[type=date]::-webkit-calendar-picker-indicator,
.win-base-date input[type=date]::-webkit-calendar-picker-indicator { filter: invert(.77) sepia(.31) saturate(1.8) hue-rotate(90deg); }

.nav-section-label > span:first-child { flex: 1; order: 0; }
.nav-section-label > .nav-group-icon { order: -1; }
.nav-section-label > .nav-arrow { order: 2; }

/* SVGs locais sem dependência de bibliotecas/CDN */
.nav-group-icon, .nav-svg, .stat-icon svg, .dashboard-decor svg,
.action-items svg, .module-search-bar svg, #mobileMenu svg {
  fill: none; stroke: currentColor; stroke-width: 1.8;
  stroke-linecap: round; stroke-linejoin: round;
}

/* v0.16 · Cadastros com destaque visual, sem alterar lógica das operações */
.employee-hero { display:flex; align-items:center; justify-content:space-between; gap:22px;
  margin-bottom:19px; padding:clamp(22px,3vw,34px); border:1px solid rgba(63,206,137,.32);
  border-radius:17px; background:radial-gradient(circle at 92% 20%,rgba(54,221,143,.17),transparent 38%),linear-gradient(125deg,#193b35,#17282d 72%); box-shadow:0 16px 38px rgba(0,0,0,.15); }
.employee-hero-copy { flex:1; min-width:0; }
.employee-eyebrow { display:inline-flex; align-items:center; gap:8px; font-size:10px; font-weight:800; letter-spacing:.15em; color:#80efb6; }
.employee-eyebrow svg { width:18px; height:18px; stroke:currentColor; fill:none; }
.employee-hero h2 { font-size:clamp(19px,2.2vw,26px); line-height:1.25; letter-spacing:-.04em; margin:10px 0 7px; color:#f4fff9; }
.employee-hero p { margin:0; max-width:650px; font-size:13px; line-height:1.6; color:#b7d6cb; }
.employee-hero-stats { display:flex; flex-wrap:wrap; gap:10px; margin-top:18px; }
.employee-hero-stats span { padding:7px 12px; border-radius:9px; border:1px solid rgba(118,199,156,.21); background:rgba(6,27,25,.33); color:#b6d2c9; font-size:11px; }
.employee-hero-stats strong { color:#eafff5; font-size:14px; margin-right:5px; font-variant-numeric:tabular-nums; }
.employee-hero > .green-button { flex-shrink:0; white-space:nowrap; }
.employee-company-hero { background:radial-gradient(circle at 92% 20%,rgba(54,221,143,.14),transparent 42%),linear-gradient(125deg,#19323a,#17282d 72%); }
@media(max-width:700px) { .employee-hero { flex-direction:column; align-items:stretch; } .employee-hero > .green-button { text-align:center; } }

/* Cadastros de funcionário v0.17 - seções equivalentes ao Windows */
.win-person-header{display:flex;align-items:center;gap:14px;margin:22px 0 12px;padding:12px 16px;border-left:3px solid #3cce94;background:linear-gradient(90deg,rgba(42,135,111,.18),transparent);border-radius:8px}
.win-person-header>span{display:grid;place-items:center;border-radius:10px;background:#1d594b;color:#c4fce7;font-size:13px;font-weight:800;width:38px;height:38px}
.win-person-header h3{margin:0;font-size:17px;color:#f3fff9}.win-person-header p{margin:4px 0 0;font-size:12px;color:#a9cbbf}
.employee-personal-details{margin:18px 0;border:1px solid #31564c;border-radius:12px;padding:12px 16px;background:#102a2a}
.employee-personal-details summary{cursor:pointer;font-size:15px;font-weight:700;color:#e5fbf3;padding:9px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.employee-personal-details summary small{font-weight:400;color:#a8c6bc;margin-left:auto}.employee-personal-details summary .badge-index{color:#77e4b9;font-size:11px;letter-spacing:.08em}
.employee-section-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 20px}
.employee-active-field{max-width:360px;display:block;margin-bottom:20px}
@media(max-width:750px){.employee-section-grid{grid-template-columns:1fr}.employee-personal-details summary small{margin:0}}

/* Gerenciar pontos: grade de edição estilo aplicativo Windows */
.manage-v017{overflow:hidden}.manage-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin:12px 0}
.manage-actions{display:flex;gap:8px;flex-wrap:wrap}.manage-status-row{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:11px 3px;color:#9cc7b9;font-size:12px}
.manage-status-row .has-pending{color:#ffd391}.manage-scroll{max-height:65vh;overflow:auto;border:1px solid #32514a;border-radius:12px}
.manage-grid{border-collapse:separate;border-spacing:0;font-size:12px;min-width:1750px;width:100%}.manage-grid thead{position:sticky;top:0;z-index:5}
.manage-grid th,.manage-grid td{white-space:nowrap;vertical-align:middle;padding:9px 8px}.manage-grid .sticky-day{position:sticky;left:0;z-index:2;background:#1c3436;font-weight:700}
.manage-grid .edited{background:#204d3d}.manage-grid .manage-deficit{background:rgba(153,74,61,.1)}.manage-grid .manage-time-cell{padding:4px 3px}
.manage-grid .manage-punch{min-width:93px;max-width:110px;width:100%;padding:8px 6px;color:#e8fff2;background:#102527;border:1px solid #385952;border-radius:7px;font:inherit;color-scheme:dark}
.manage-grid .manage-punch:focus{outline:2px solid #45d49a;border-color:#45d49a}.manage-grid .manage-flag-cell{text-align:center}.manage-grid .manage-day-flag{accent-color:#36c790;width:18px;height:18px}
.manage-grid .manage-obs{min-width:230px;white-space:normal}.manage-type{font-size:11px;color:#b9dcce}.manage-footer{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:16px;padding:16px 0}
.manage-navigation,.manage-save{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}.manage-save label{font-size:12px;min-width:220px}.manage-save input{display:block;margin-top:5px;width:100%;min-width:210px}.manage-save button:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:760px){.manage-scroll{max-height:58vh}.manage-navigation .win-button{padding:7px}.manage-save{width:100%}}

.manage-column-options{display:flex;align-items:center;gap:16px;flex-wrap:wrap;color:#a6d3c2;font-size:12px;margin:10px 0}
.manage-column-options label{display:flex;align-items:center;gap:6px;cursor:pointer}.manage-column-options input{accent-color:#42cf98}
.manage-grid [hidden]{display:none}.manage-grid .manage-adjust-cell{color:#a2f4c9}


/* v0.17.1 — cadastro de funcionário em uma página dedicada */
.employee-form-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.employee-back-link{color:#9df1c8;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex;align-items:center;gap:9px}
.employee-back-link:hover,.employee-back-link:focus-visible{text-decoration:underline;color:#dbffeb}
.employee-form-step{font-size:12px;color:#a6c8bd}
.employee-form-intro{border:1px solid rgba(69,212,154,.22);border-radius:16px;padding:clamp(20px,3vw,30px);margin-bottom:18px;background:linear-gradient(115deg,#153a34,#17282d 83%)}
.employee-form-intro h2{font-size:clamp(21px,2.2vw,28px);letter-spacing:-.03em;margin:10px 0 8px;color:#f0fff8}
.employee-form-intro p{font-size:13px;line-height:1.6;color:#b8d5cb;margin:0;max-width:690px}
.employee-form-toolbar + .employee-form-intro + .panel{margin-top:14px}
.employee-cancel-link{color:#bdebd6;text-decoration:none;padding:10px;font-size:13px}
.employee-cancel-link:hover{text-decoration:underline}
@media(max-width:700px){.employee-form-toolbar{align-items:flex-start;flex-direction:column}.employee-form-step{display:none}}

.employee-list-company-summary{font-size:12px;color:#a7cabb;padding:2px 0 11px}.employee-list-company-summary span{color:#e0f9e8;font-weight:700}

/* v0.17.2: Ícones SVG embutidos na página para evitar 404/cache do sprite remoto. */
.soroponto-icon-sprite {
  position: absolute !important; width: 0 !important; height: 0 !important;
  overflow: hidden !important; pointer-events: none !important;
}

/* v0.17.4 — cartões de presença: seis indicadores e barras proporcionais. */
.dashboard-presence{margin:0 0 22px}
.dashboard-presence-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:14px 0 18px}
.dashboard-presence-header h2{font-size:20px;color:#eefbf4;letter-spacing:-.02em;margin:4px 0 6px}
.dashboard-presence-header p{font-size:12px;color:#a4bcb5;margin:0}
.dashboard-presence-header p strong{color:#e4f4ec}
.presence-refresh{border:1px solid #365c50;border-radius:9px;padding:10px 13px;color:#b7f4d8;text-decoration:none;font-size:12px;font-weight:700}
.presence-refresh:hover{background:#20463a;color:white}
.presence-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.presence-card{min-height:190px;padding:18px 19px;display:flex;flex-direction:column}
.presence-card strong{margin:10px 0 9px;font-size:clamp(32px,3.1vw,42px)}
.presence-card .stat-icon{margin-bottom:12px}
.presence-card>span{font-weight:650;font-size:12px}
.presence-card .presence-progress{display:flex;align-items:center;gap:10px;width:100%;margin-top:2px}
.presence-card progress{height:9px;flex:1;min-width:0;appearance:none;border:0;border-radius:12px;overflow:hidden;background:#30464a}
.presence-card progress::-webkit-progress-bar{background:#30464a;border-radius:12px}
.presence-card progress::-webkit-progress-value{background:#48d4a2;border-radius:12px}
.presence-card progress::-moz-progress-bar{background:#48d4a2;border-radius:12px}
.presence-card .presence-progress b{font-size:11px;color:#a8c4b9;font-weight:650;white-space:nowrap}
.presence-card small{margin-top:10px}
.presence-faltando progress::-webkit-progress-value{background:#efb94c}
.presence-faltando progress::-moz-progress-bar{background:#efb94c}
.presence-faltando .stat-icon{color:#ffd178;border-color:#806a36;background:rgba(154,107,30,.18)}
.presence-notice{font-size:12px;color:#c5d6d0;background:#1d3234;border-left:3px solid #7aceab;padding:11px 15px;border-radius:4px}
@media(max-width:780px){.presence-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-presence-header h2{font-size:18px}}
@media(max-width:540px){.presence-grid{grid-template-columns:1fr}.presence-card{min-height:175px}}
@media print{.presence-card progress{border:1px solid #bbb}.presence-progress b{color:#444}}

/* v0.17.5: lista detalhada por card, aberta por clique. */
.presence-card{cursor:pointer}
.presence-hint{color:#8eecc0!important;font-weight:700;font-size:11px;margin-top:auto!important;padding-top:8px}
.presence-dialog{width:min(580px,calc(100vw - 28px));max-height:min(80vh,780px);border:1px solid #41665b;border-radius:16px;padding:0;background:#15282c;color:#e7f4ef;box-shadow:0 24px 90px rgba(0,0,0,.65);overflow:hidden}
.presence-dialog::backdrop{background:rgba(1,10,12,.72);backdrop-filter:blur(4px)}
.presence-dialog-header{display:flex;justify-content:space-between;align-items:flex-start;padding:22px 24px 16px;border-bottom:1px solid #37544e;gap:15px}
.presence-dialog-header h2{font-size:21px;line-height:1.25;margin:7px 0 6px;color:#f1fff9}
.presence-dialog-header p{font-size:12px;color:#b8d2c8;margin:0}
.presence-dialog-close{flex-shrink:0;font-size:28px;line-height:1;width:37px;height:37px;display:grid;place-items:center;border-radius:9px;background:#243e40;border:1px solid #45605d;color:#d9f3e9;cursor:pointer}
.presence-dialog-close:hover,.presence-dialog-close:focus-visible{background:#355a50;outline:2px solid #67d7aa;outline-offset:2px}
.presence-dialog-body{padding:16px 24px;overflow-y:auto;max-height:52vh}
.presence-detail-group[hidden]{display:none!important}
.presence-dialog-count{margin:0 0 14px;color:#bcd8cd;font-size:13px}
.presence-employee-list{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.presence-employee-list li{display:flex;gap:12px;align-items:center;padding:10px 12px;border:1px solid #32534d;border-radius:10px;background:#1c3436}
.presence-employee-avatar{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;color:#8eecc0;background:#214739;border:1px solid #327659;flex-shrink:0}
.presence-employee-avatar svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}
.presence-employee-info{min-width:0;display:grid;gap:2px}
.presence-employee-info strong{font-size:13px;color:#effff6;overflow-wrap:anywhere}
.presence-employee-info small{font-size:11px;color:#a9c8bd}
.presence-detail-empty{margin:8px 0;padding:18px;background:#1c3436;border-radius:10px;color:#bcd8cd;font-size:13px}
.presence-dialog-footer{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:15px 24px;border-top:1px solid #37544e}
.presence-dialog-link{color:#92edbe;font-size:12px;font-weight:650}
.presence-dialog-done{background:#198c5a;color:#fff;border:1px solid #3bb67e;border-radius:9px;padding:10px 17px;font-weight:700;cursor:pointer}
.presence-dialog-done:hover{background:#21a76a}
@media(max-width:540px){.presence-dialog-header,.presence-dialog-footer{padding:15px}.presence-dialog-body{padding:12px 15px}.presence-dialog-header h2{font-size:18px}}


/* v0.17.6 — Filtro de data e acesso ao ponto no painel. */
.presence-date-filter{display:flex;flex-wrap:wrap;align-items:end;gap:9px}
.presence-date-filter label{display:grid;gap:5px;font-size:12px;color:#b0d0c4;font-weight:650}
.presence-date-filter input[type=date]{color:#ebfff6;color-scheme:dark;background:#142d30;border:1px solid #3b6457;border-radius:8px;min-height:40px;padding:8px 11px;max-width:180px}
.presence-date-filter button{background:#168958;color:#fff;border:1px solid #3cb77c;border-radius:8px;min-height:40px;padding:9px 14px;font-size:12px;font-weight:700;cursor:pointer}
.presence-date-filter button:hover{background:#1fa16b}
.presence-date-filter .presence-refresh{min-height:40px;display:flex;align-items:center}
.presence-date-filter :is(button,input,a):focus-visible{outline:2px solid #81eebc;outline-offset:2px}
.presence-employee-detail{margin-left:auto;white-space:nowrap;text-decoration:none;background:#1c6c4b;border:1px solid #399c73;color:#eafff4;border-radius:8px;padding:8px 10px;font-size:12px;font-weight:700}
.presence-employee-detail:hover,.presence-employee-detail:focus-visible{background:#278b60;color:white}
@media(max-width:540px){.presence-date-filter{width:100%}.presence-date-filter label{flex:1 1 160px}.presence-date-filter input[type=date]{max-width:none;width:100%}.presence-employee-list li{flex-wrap:wrap}.presence-employee-detail{margin-left:46px}}

/* v0.17.7 - filtro de empresa e data, compatível com mobile */
.presence-date-filter select{color:#ebfff6;background:#142d30;border:1px solid #3b6457;border-radius:8px;min-height:40px;padding:8px 32px 8px 11px;min-width:205px;max-width:300px;font-size:12px}
.presence-date-filter select:focus-visible{outline:2px solid #81eebc;outline-offset:2px}
@media(max-width:540px){.presence-date-filter select{width:100%;max-width:none}}

/* Painel por período v0.17.8: diário, semanal e mensal visualmente distintos. */
.report-overview{background:linear-gradient(125deg,#193330 0%,#14272e 65%,#1b2c30 100%);border:1px solid #335248;border-radius:18px;padding:24px;margin:0 0 22px;box-shadow:0 12px 38px #08191835}
.report-topline{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.report-topline h2{margin:3px 0 7px;color:#effff7;font-size:25px;letter-spacing:-.025em}
.report-topline p{font-size:13px;color:#a8c0b8;margin:0}
.report-status-pill{display:flex;align-items:center;gap:8px;border:1px solid #3b6954;background:#1b3e36;border-radius:100px;padding:9px 14px;color:#c7f5dc;font-size:12px;font-weight:650;max-width:100%}
.report-status-pill svg{height:17px;width:17px;stroke:currentColor;fill:none}
.report-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:24px 0 18px}
.report-tab{display:flex;align-items:center;gap:12px;min-width:0;text-decoration:none!important;padding:16px 14px;background:#11272b;border:1px solid #36514b;border-radius:13px;color:#b9ccc5;transition:border-color .18s,background .18s,transform .18s}
.report-tab:hover{border-color:#61c695;background:#1c3d36;transform:translateY(-2px)}
.report-tab.is-active{background:linear-gradient(115deg,#185b43,#194335);border-color:#41c782;color:white;box-shadow:inset 0 0 0 1px #3cbd7a38}
.report-tab:focus-visible{outline:2px solid #90ecc2;outline-offset:2px}
.report-tab svg{width:24px;height:24px;stroke:currentColor;fill:none;flex:none;color:#80e7b1}
.report-tab span{display:grid;gap:4px;min-width:0}.report-tab strong{font-size:13px;line-height:1.3}.report-tab small{font-size:11px;color:#a7bab1;line-height:1.4}.report-tab.is-active small{color:#c8eddb}
.report-filters{border-top:1px solid #345047;padding-top:17px;align-items:end;justify-content:flex-start}
.report-filters .report-fixed-period{display:grid;gap:7px;min-height:40px;margin-right:auto;align-content:center}
.report-fixed-period small{font-size:11px;color:#acc6bb}.report-fixed-period strong{font-size:13px;color:#eff7f1}
.report-filters label{min-width:180px}.report-filters label input{width:100%}
.report-section{margin-bottom:24px}.report-section-title{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:0 0 18px}
.report-section-title h2{font-size:24px;line-height:1.3;color:#f0fff6;margin:4px 0 6px;letter-spacing:-.02em}.report-section-title p{font-size:12px;color:#acc6bc;margin:0}.report-section-title strong{color:#e7fff1}
.report-meta{display:inline-flex;border:1px solid #3d6654;background:#17332e;color:#bbdfca;border-radius:100px;font-size:11px;font-weight:650;padding:8px 13px}
.report-daily{padding:21px;border-radius:16px;border:1px solid #335249;background:#122a2c}
.report-week .report-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:18px 0}
.report-kpi{min-width:0;background:#142c30;border:1px solid #38564f;border-top:3px solid #39aa78;border-radius:13px;padding:18px;display:grid;gap:9px}
.report-kpi span{color:#baccc6;font-size:12px;font-weight:650}.report-kpi strong{font-size:33px;color:#effff7;line-height:1;letter-spacing:-.035em}.report-kpi small{font-size:11px;color:#8ea9a1;line-height:1.35}.report-kpi.danger{border-top-color:#d88978}.report-kpi.accent{border-top-color:#72aee6}
.report-chart-panel{background:#162d30;border:1px solid #39544e;border-radius:16px;padding:23px;min-width:0}
.report-chart-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:20px}.report-chart-heading h3,.report-breakdown h3{color:#f0fff5;font-size:17px;margin:0 0 5px}.report-chart-heading p,.report-breakdown>p{color:#9db9b1;font-size:12px;margin:0}
.report-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:11px;color:#b7ccc4}.report-legend span{display:flex;gap:6px;align-items:center}.report-legend i{display:block;width:10px;height:10px;border-radius:3px}.legend-working{background:#34bb7e}.legend-missing{background:#e48f86}
.report-week-rows{display:grid;gap:10px}.report-week-row{display:grid;grid-template-columns:85px minmax(50px,1fr) 150px;align-items:center;gap:15px;min-height:38px}
.report-week-day{display:flex;gap:8px;align-items:baseline}.report-week-day strong{font-size:13px;color:#ebfff7}.report-week-day span{font-size:11px;color:#92ada4}
.report-week-bar,.report-month-week-track{width:100%;height:14px;background:#274542;border-radius:7px;overflow:hidden;display:flex;position:relative}.report-bar-working{height:100%;background:#34bb7e}.report-bar-missing{height:100%;background:#e48f86}
.report-week-count{color:#a9c8ba;font-size:11px;text-align:right}.report-week-count strong{color:#dcffed}.report-week-count span{color:#e0aaa0}
.report-week-pending{display:flex;align-items:center;padding:5px 0;color:#819b95;font-size:12px;font-style:italic}.report-week-row.is-future{opacity:.68}
.report-inline-note{margin-top:16px;border-left:3px solid #3ba579;background:#17332f;color:#b5d4c5;border-radius:0 8px 8px 0;padding:12px 15px;font-size:12px;line-height:1.6}
.report-month-hero{display:grid;grid-template-columns:1.35fr 1fr 1fr;gap:14px;margin:18px 0 22px}.report-month-main,.report-month-side{background:linear-gradient(135deg,#1d5943,#193b39);border:1px solid #438366;border-radius:16px;padding:22px;min-width:0}.report-month-side{background:#162d31;border-color:#3c5952}
.report-month-hero span{font-size:12px;color:#c4e3d4;font-weight:650}.report-month-hero strong{display:block;color:#eefff5;font-size:40px;margin:10px 0;line-height:1}.report-month-hero p{font-size:12px;color:#c6ecdc;margin:5px 0}.report-month-hero small{font-size:11px;color:#9ebfb1;line-height:1.5}
.report-month-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:16px}.report-month-weeks{display:grid;gap:17px}.report-month-week{display:grid;gap:7px}.report-month-week-label{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:#daeae1}.report-month-week-label span{color:#91aaa1;font-size:11px}.report-month-week-track{height:16px}.report-month-week-value{font-size:11px;color:#bcd4c5}.report-month-week-value b{color:#a6f4cf}.report-month-week-value span{color:#e4a9a0}.report-month .report-legend{margin-top:24px}
.report-breakdown{background:#162d30;border:1px solid #3b5750;border-radius:16px;padding:23px;min-width:0}.report-breakdown>p{margin-bottom:22px}.report-breakdown-row{margin-bottom:20px}.report-breakdown-row:last-child{margin-bottom:0}.report-breakdown-top{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:7px;font-size:12px;color:#d8f1e4}.report-breakdown-top strong{color:#effff4;font-size:15px}.report-breakdown-track{height:8px;background:#29443e;border-radius:7px;overflow:hidden}.report-breakdown-track span{display:block;height:100%;background:linear-gradient(90deg,#2cac75,#75dab2);border-radius:7px}.report-breakdown-row small{display:block;font-size:10px;color:#97b3a5;margin-top:5px}
@media(max-width:1050px){.report-week .report-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.report-month-layout{grid-template-columns:1fr}.report-month-hero{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.report-tabs{grid-template-columns:1fr}.report-tab{padding:12px 15px}.report-month-hero{grid-template-columns:1fr}.report-month-hero strong{font-size:34px}.report-topline h2{font-size:21px}.report-overview{padding:17px}.report-week-row{grid-template-columns:66px minmax(40px,1fr);gap:9px}.report-week-count{grid-column:2;text-align:left}.report-week-day{flex-direction:column;gap:2px}.report-chart-panel,.report-breakdown{padding:16px}.report-fixed-period{min-width:100%}}
@media(max-width:480px){.report-week .report-kpis{grid-template-columns:1fr 1fr}.report-kpi{padding:13px}.report-kpi strong{font-size:28px}.report-tabs{gap:8px}.report-section-title h2{font-size:20px}}

/* Calendário mensal v0.17.8 */
.report-week-bar{cursor:pointer;transition:filter .18s;display:flex;text-decoration:none}.report-week-bar:hover{filter:brightness(1.3)}.report-week-bar:focus-visible{outline:2px solid #82e9b1;outline-offset:3px}
.report-calendar-panel{margin-top:18px;background:#162d30;border:1px solid #39544e;border-radius:16px;padding:22px}
.report-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:9px}
.report-calendar-weekday{text-align:center;color:#8fbaaa;font-size:11px;font-weight:700;letter-spacing:.03em;padding:4px 0 8px}
.report-calendar-day{display:grid;gap:4px;min-height:73px;background:#1d4339;border:1px solid #3e7c60;border-radius:11px;padding:10px;color:#d9fae7!important;text-decoration:none!important;min-width:0;transition:background .18s,border-color .18s}
.report-calendar-day strong{font-size:14px;color:#effff3}.report-calendar-day span,.report-calendar-day small{font-size:10px;color:#b4e1c7}.report-calendar-day small{color:#8cb8a6}
.report-calendar-day.has-absence{border-color:#9a6a5e;background:#463932}.report-calendar-day.has-absence small{color:#f1bcb0}
a.report-calendar-day:hover{background:#28674c;border-color:#66dca0}a.report-calendar-day:focus-visible{outline:2px solid #89f4ba;outline-offset:3px}
.report-calendar-day.is-future{opacity:.45;background:#233637;border-color:#3a5350}
@media(max-width:730px){.report-calendar-panel{padding:12px}.report-calendar-grid{gap:4px}.report-calendar-day{padding:6px 4px;min-height:62px}.report-calendar-day strong{font-size:12px}.report-calendar-day span,.report-calendar-day small{font-size:9px}}
@media(max-width:470px){.report-calendar-day span{font-size:8px}.report-calendar-day small{font-size:8px}}

/* v0.17.8.1 – férias em destaque nos resumos semanal e mensal */
.report-week .report-kpis{grid-template-columns:repeat(5,minmax(0,1fr))}
.report-kpi.vacation,.report-month-side.vacation{border-top:3px solid #70cfa8;background:linear-gradient(140deg,#174538,#163132);text-decoration:none;color:inherit;transition:background .18s,border-color .18s}
.report-kpi.vacation:hover,.report-month-side.vacation:hover{background:#225044;border-color:#90e2ba}
.report-kpi.vacation:focus-visible,.report-month-side.vacation:focus-visible{outline:2px solid #a2f8ca;outline-offset:3px}
.report-kpi.vacation span,.report-month-side.vacation span{display:flex;gap:7px;align-items:center}
.report-kpi.vacation svg,.report-month-side.vacation svg{height:19px;width:19px;stroke:currentColor;fill:none;flex:none;color:#9cf3c5}
.report-month-hero{grid-template-columns:1.35fr repeat(3,minmax(0,1fr))}
@media(max-width:1200px){.report-week .report-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.report-month-hero{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.report-week .report-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.report-month-hero{grid-template-columns:1fr}}
@media(max-width:480px){.report-week .report-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v0.17.8.2 — drill-down semanal/mensal sem alterar os cálculos de presença */
.report-detail-trigger{cursor:pointer;color:inherit;text-decoration:none;transition:background .16s,border-color .16s,transform .16s}
.report-detail-trigger:hover{border-color:#75dda9;background-color:#1a4039;transform:translateY(-1px)}
.report-detail-trigger:focus-visible{outline:2px solid #8cf2c5;outline-offset:3px}
.report-breakdown-row.report-detail-trigger{display:block;text-align:left;width:100%;border:1px solid transparent;border-radius:9px;margin:0 0 11px;padding:8px 9px;background:transparent;color:inherit;font:inherit}
.report-breakdown-row.report-detail-trigger:last-child{margin-bottom:0}
.report-breakdown-row.report-detail-trigger:hover{background:#1c403a}
.period-detail-dialog{width:min(710px,calc(100vw - 28px))}
.period-detail-meta{font-size:12px;color:#bedccd;margin-bottom:15px}
.period-detail-days{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.period-detail-day{font-size:11px;color:#b6edd4;border:1px solid #3d6e58;padding:3px 7px;border-radius:7px;text-decoration:none}
.period-detail-day:hover,.period-detail-day:focus-visible{color:#fff;background:#265c45}
.period-detail-employee{align-items:flex-start!important}
.period-detail-employee .presence-employee-info{flex:1}
.period-detail-employee .presence-employee-detail{margin-left:auto;white-space:nowrap}
@media(max-width:600px){.period-detail-employee .presence-employee-detail{margin-left:0}}

/* v0.17.8.3 — busca local e exportação CSV nos detalhes diários e periódicos. */
.presence-list-toolbar{display:flex;align-items:end;flex-wrap:wrap;gap:10px 14px;padding:12px 24px;border-bottom:1px solid #37544e;background:#193237}
.presence-list-toolbar label{display:grid;gap:4px;flex:1 1 210px;min-width:0;color:#b9dccc;font-size:12px;font-weight:650}
.presence-list-toolbar input{width:100%;min-height:39px;padding:9px 11px;border-radius:9px;background:#102629;border:1px solid #487167;color:#effff9;font:inherit;font-size:13px}
.presence-list-toolbar input:focus-visible{outline:2px solid #85f0b6;outline-offset:2px}
.presence-export-csv{min-height:39px;padding:9px 15px;border-radius:9px;background:#207d55;border:1px solid #3da77b;color:#fff;font:inherit;font-size:12px;font-weight:750;cursor:pointer}
.presence-export-csv:not(:disabled):hover{background:#298e62}
.presence-export-csv:focus-visible{outline:2px solid #8cf2c5;outline-offset:2px}
.presence-export-csv:disabled{opacity:.45;cursor:not-allowed}
.presence-search-count{flex-basis:100%;color:#b4d7ca;font-size:12px}
.presence-employee-list li[hidden]{display:none!important}
@media(max-width:540px){.presence-list-toolbar{padding:12px 15px}.presence-export-csv{width:100%}}

/* v0.17.8.4 — filtros de equipe no painel. */
.report-filters { flex-wrap: wrap; align-items: end; gap: 12px; }
.report-filters > label { min-width: 160px; flex: 1 1 175px; }
.report-filters select { width: 100%; }
@media (max-width: 730px) { .report-filters > label { flex-basis: 100%; } }

/* v0.17.8.5 — comparativo mensal de equipes, independente das três visões. */
.team-compare-header{border:1px solid #376357;border-radius:17px;padding:24px;background:linear-gradient(125deg,#193b34,#192b32 72%);margin-bottom:18px}
.team-compare-intro{display:flex;align-items:start;justify-content:space-between;gap:20px}
.team-compare-intro h2{font-size:clamp(20px,2.5vw,29px);letter-spacing:-.03em;margin:7px 0 8px}
.team-compare-intro p{max-width:675px;color:#c1d5d0;margin:0}
.team-compare-month{min-width:205px;border:1px solid #3f655d;background:#18382f;padding:12px 16px;border-radius:12px;display:grid;gap:3px}
.team-compare-month span,.team-compare-month small{color:#a6c6ba;font-size:11px}
.team-compare-month strong{font-size:17px;color:#effff6}
.team-compare-actions{display:flex;flex-wrap:wrap;gap:9px;margin:23px 0 15px}
.team-compare-actions a{border:1px solid #39645a;border-radius:10px;padding:9px 14px;background:#17352f;color:#c3efdc;font-weight:700;font-size:12px;display:inline-flex;align-items:center;gap:7px}
.team-compare-actions a.is-selected,.team-compare-actions a:hover{background:#1e7553;border-color:#42b686;color:#fff}
.team-compare-actions svg{width:16px;height:16px;stroke:currentColor;fill:none}
.team-compare-filters{display:flex;gap:12px;flex-wrap:wrap;align-items:end;border-top:1px solid #426158;padding-top:16px}
.team-compare-filters label{display:grid;gap:6px;min-width:180px;flex:1;color:#d0e2da;font-size:12px;font-weight:700}
.team-compare-filters select,.team-compare-filters input{min-height:41px;background:#10262a;color:#edfff7;border:1px solid #467265;border-radius:9px;padding:8px 12px;width:100%}
.team-compare-filters button{min-height:41px;border:1px solid #42a878;border-radius:9px;background:#21865c;color:#fff;padding:10px 17px;font-size:12px;font-weight:800}
.team-compare-filters button:hover{background:#2ca272}
.team-compare-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:0 0 18px}
.team-compare-summary>div{background:#1a2d32;border:1px solid #344d53;border-radius:13px;padding:17px;display:grid;gap:4px;min-width:0}
.team-compare-summary span{color:#bddbd2;font-size:12px}
.team-compare-summary strong{font-size:clamp(23px,2vw,30px);font-weight:800;color:#f0fff8;line-height:1.25}
.team-compare-summary small{color:#8daea8;font-size:10px}
.team-compare-report{border:1px solid #334c52;border-radius:15px;background:#192b30;padding:20px;min-width:0}
.team-compare-title{display:flex;justify-content:space-between;align-items:start;gap:18px;padding:0 3px 15px}
.team-compare-title h3{font-size:18px;margin:5px 0}
.team-compare-title p,.team-compare-title>span{color:#aac7c0;font-size:12px;margin:0}
.team-compare-scroll{overflow:auto;scrollbar-width:thin;border:1px solid #355059;border-radius:10px}
.team-compare-table{border-collapse:collapse;width:100%;min-width:975px;font-size:12px;font-variant-numeric:tabular-nums}
.team-compare-table th,.team-compare-table td{padding:13px 9px;text-align:center;border-bottom:1px solid #345057;white-space:nowrap}
.team-compare-table th:first-child,.team-compare-table td:first-child{text-align:left;min-width:175px}
.team-compare-table thead th{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:#a9d6c4;background:#20383c;position:sticky;top:0}
.team-compare-table tbody tr:hover{background:#1c3b39}
.team-compare-table tbody th{font-size:12px;font-weight:750;color:#ebfff7}
.team-compare-team-name{display:flex;gap:10px;align-items:center}
.team-compare-rank{border:1px solid #41695c;background:#1a5240;color:#9cf0c6;border-radius:7px;width:25px;height:25px;display:flex;align-items:center;justify-content:center;flex:none;font-size:11px}
.team-compare-metric{color:#e4f8f0;background:transparent;border:1px solid transparent;border-radius:8px;padding:6px 11px;min-width:37px;font-weight:800}
.team-compare-metric:hover,.team-compare-metric:focus-visible{background:#206047;border-color:#62cfa0;color:#fff}
.team-compare-faltando{color:#ffc28b}
.team-compare-ferias{color:#83edbc}
.team-compare-rate strong{color:#ffcc90}
.team-compare-track{height:6px;min-width:75px;background:#30454a;border-radius:50px;overflow:hidden;margin-top:6px}
.team-compare-track span{display:block;background:#ebaa68;height:100%;border-radius:50px}
.team-compare-table tfoot{background:#1c3f39;color:#e2ffef;font-weight:800}
.team-compare-explain{border-top:1px solid #355159;padding:14px 5px 0;margin-top:15px;display:grid;gap:7px}
.team-compare-explain p{font-size:11px;color:#a5c4bb;line-height:1.55;margin:0}
.team-compare-dialog{width:min(730px,calc(100vw - 24px))}
@media(max-width:1100px){.team-compare-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:690px){.team-compare-header{padding:17px}.team-compare-intro{display:grid}.team-compare-month{min-width:0;width:100%}.team-compare-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.team-compare-title{display:grid}.team-compare-filters label{flex-basis:100%}.team-compare-filters button{width:100%}}

.team-comparison-entry{margin:12px 0 18px}.team-comparison-entry a{display:inline-flex;align-items:center;gap:8px;border:1px solid #3c7661;background:#1a4537;color:#bff1d7;border-radius:9px;padding:8px 13px;font-size:12px;font-weight:750}.team-comparison-entry a:hover{background:#21734e}.team-comparison-entry svg{width:17px;height:17px;stroke:currentColor;fill:none}

/* v0.17.8.6 — ferramentas locais do comparativo; sem exposição de nomes no HTML. */
.team-compare-toolbar{display:flex;flex-wrap:wrap;align-items:end;gap:11px;margin:0 0 15px;padding:14px;border:1px solid #3b5c57;border-radius:12px;background:#152a2d}
.team-compare-toolbar label{display:grid;gap:6px;color:#bedbd2;font-size:12px;font-weight:700}
.team-compare-search{flex:2 1 230px}
.team-compare-sort{flex:1 1 220px}
.team-compare-toolbar input,.team-compare-toolbar select{min-height:40px;width:100%;background:#10252a;color:#f2fff8;border:1px solid #4b716b;border-radius:9px;padding:8px 12px;font:inherit;font-size:12px}
.team-compare-toolbar input:focus-visible,.team-compare-toolbar select:focus-visible{outline:2px solid #60dba2;outline-offset:2px}
.team-compare-export{min-height:40px;border:1px solid #44b785;border-radius:9px;background:#207c56;color:#fff;padding:9px 14px;font-size:12px;font-weight:800;white-space:nowrap}
.team-compare-export:hover,.team-compare-export:focus-visible{background:#2b996b;outline-color:#66dba5}
.team-compare-export:disabled{cursor:not-allowed;opacity:.48}
.team-compare-visible-count{font-size:11px;color:#a2cbbb;padding-bottom:11px;white-space:nowrap}
.team-compare-no-results{padding:18px;border:1px dashed #4c766d;border-radius:10px;color:#b4d5c8;text-align:center;font-size:12px}
.team-compare-table tbody tr[hidden],.team-compare-no-results[hidden]{display:none!important}
@media(max-width:680px){.team-compare-toolbar{align-items:stretch}.team-compare-search,.team-compare-sort{flex-basis:100%}.team-compare-export{width:100%}.team-compare-visible-count{padding:0}}

/* v0.17.8.7 — evolução temporal entre equipes */
.team-trend-section{margin:20px 0 0;background:#1a2d32;border:1px solid #35524d;border-radius:15px;padding:20px;min-width:0}
.team-trend-heading{display:flex;justify-content:space-between;align-items:start;gap:18px}
.team-trend-heading h3{margin:5px 0;font-size:19px;color:#eefff8}
.team-trend-heading p,.team-trend-footnote{font-size:12px;color:#a9c9c0;line-height:1.55}
.team-trend-periods{display:grid;gap:4px;font-size:11px;color:#a9d3c0;white-space:nowrap;text-align:right}
.team-trend-notice{font-size:12px;color:#dfdebe;background:#2c352f;padding:11px 13px;border:1px solid #686d50;border-radius:9px;margin:13px 0}
.team-trend-scroll{overflow-x:auto;border-radius:10px;border:1px solid #38565a;scrollbar-width:thin}
.team-trend-table{border-collapse:collapse;min-width:1040px;width:100%;font-size:12px;font-variant-numeric:tabular-nums}
.team-trend-table th,.team-trend-table td{text-align:center;border-bottom:1px solid #355158;padding:12px 9px;white-space:nowrap}
.team-trend-table th:first-child{text-align:left;min-width:170px}
.team-trend-table tbody th{color:#e3fff2;font-weight:700}
.team-trend-table tbody th small{display:block;color:#b6c7bc;font-size:10px;font-weight:400}
.team-trend-table thead th{font-size:10px;background:#223b3e;color:#b3e3ca;text-transform:uppercase;letter-spacing:.03em}
.team-trend-table tbody tr:hover{background:#21423b}
.team-trend-delta{border-radius:6px;padding:5px 8px;display:inline-block;font-weight:800}
.team-trend-delta.trend-worse{color:#ffd7ad;background:#513b2d}
.team-trend-delta.trend-better{color:#a8ebc7;background:#234b40}
.team-trend-delta.trend-same,.team-trend-neutral{color:#d4ded8;background:#324445}
.team-trend-empty{color:#b4cfc8;text-align:left!important}
.team-trend-footnote{margin:14px 0 0}
@media(max-width:700px){.team-trend-section{padding:14px}.team-trend-heading{display:grid}.team-trend-periods{text-align:left;white-space:normal}}
