:root{--navy:#172739;--navy2:#203245;--navy3:#34434e;--panel:#343f48;--panel2:#3e4a54;--line:#69777d;--green:#198d5b;--mint:#69efb1;--text:#f8fafb;--mute:#c0ced3;--danger:#f2a6a6}
*{box-sizing:border-box}body{margin:0;font-family:'Segoe UI',Arial,Helvetica,sans-serif;background:#1a2b3d;color:var(--text);font-size:14px}button,input,select{font:inherit}a{text-decoration:none;color:inherit}button{cursor:pointer}
.app-shell{display:flex;min-height:100vh}.sidebar{width:248px;flex:none;position:sticky;top:0;height:100vh;overflow:auto;background:#132436;border-right:1px solid #465861}.brand{padding:19px 15px;display:flex;gap:12px;align-items:center;border-bottom:1px solid #304859}.brand img{object-fit:contain}.brand strong{color:var(--mint);display:block;font-size:16px;letter-spacing:.6px}.brand span{display:block;font-size:11px;color:#c4e0d4}.side-subtitle{padding:13px 17px;font-size:11px;font-weight:bold;color:#b9ced0;letter-spacing:1px}.view-tag{border:1px solid #356b55;color:var(--mint);font-size:9px;border-radius:12px;padding:3px 6px;margin-left:5px}.nav-section{padding-bottom:5px}.nav-section-label{padding:12px 17px;display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;list-style:none;color:#a6d5c4;text-transform:uppercase;letter-spacing:1px;font-size:10px;font-weight:700;user-select:none;border-left:3px solid transparent}.nav-section-label::-webkit-details-marker{display:none}.nav-section-label::marker{content:""}.nav-section-label:hover{background:#1e3d37;color:#86f5bf}.nav-section-label:focus-visible{outline:2px solid #6aefb1;outline-offset:-2px}.nav-section[open]>.nav-section-label{background:#1b3b36;color:var(--mint);border-left-color:#52d79c}.nav-arrow{width:8px;height:8px;flex:none;border-bottom:2px solid currentColor;border-right:2px solid currentColor;transform:rotate(-45deg);transition:transform .16s ease}.nav-section[open]>.nav-section-label .nav-arrow{transform:rotate(45deg)}.nav-section-content{padding:3px 0 7px}.nav-link{display:flex;gap:10px;align-items:center;padding:8px 17px;font-size:12px;color:#dfeded;border-left:3px solid transparent}.nav-link:hover{background:#244339}.nav-link.selected{background:#254a40;color:var(--mint);border-left-color:#52d79c;font-weight:700}.nav-dot{color:#9dcbbc;font-size:10px;width:13px}.side-bottom{padding:15px;color:#799d99;font-size:10px;border-top:1px solid #304454}.side-bottom span{display:block;padding-top:4px}
.main-shell{flex:1;min-width:0}.topbar{height:67px;background:#3c4852;border-bottom:1px solid #86939a;padding:0 25px;display:flex;gap:10px;justify-content:space-between;align-items:center}.breadcrumb{font-size:14px;font-weight:700}.right-top{display:flex;align-items:center;gap:14px;font-size:12px}.mode-flag{background:#213d36;color:#6ef0ae;border:1px solid #327b57;border-radius:5px;padding:6px 10px;font-weight:bold;font-size:10px}.top-user{color:#d4e6e1}.logout{border:1px solid #a2b1b3;padding:5px 11px;border-radius:3px;background:#354851;color:#fff}#mobileMenu{display:none}.content{padding:27px 26px 44px}.page-title{display:flex;gap:12px;justify-content:space-between;align-items:center;margin-bottom:20px}.page-title h1{font-size:22px;line-height:1.3;margin:0;color:#f8fbff;font-weight:700}.page-version{font-size:11px;color:#abc2bd}.quick-actions,.panel{border:1px solid #8c999e;background:#36424c;border-radius:3px;margin-bottom:20px;padding:15px 15px 18px}.quick-actions h2,.panel h2{font-size:16px;margin:0;color:#fff}.action-items{display:flex;flex-wrap:wrap;gap:11px;margin-top:16px}.action-items a,.green-button{background:var(--green);color:#fff;border:1px solid #d2e5da;padding:10px 14px;font-weight:600;font-size:12px;display:inline-flex;align-items:center;border-radius:2px}.action-items a:hover,.green-button:hover{background:#26a66a}.stats-grid{display:grid;grid-template-columns:repeat(5,minmax(145px,1fr));gap:13px;margin-bottom:20px}.stat{background:#3e4952;border-top:3px solid #50ca8c;padding:17px 16px;min-height:123px}.stat span{display:block;font-size:12px;color:#d7e3e9}.stat strong{display:block;font-size:30px;margin-top:10px}.stat small{color:#b1bfc5;font-size:11px}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:13px}.panel-head span{font-size:11px;color:#bdced2}.scroll-x{overflow:auto}table{width:100%;border-collapse:collapse;min-width:660px;font-size:12px}th{background:#283943;padding:10px 12px;border:1px solid #7b8b92;text-align:left;font-size:11px;color:#f0fbfd;white-space:nowrap}td{padding:10px 12px;border-bottom:1px solid #586773;color:#ecf0f2}tr:hover td{background:#42525b}.empty{text-align:center;color:#c2cdd1;padding:24px}.filterbar{display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin-bottom:15px}.filterbar input,.filterbar select{background:#f3f8f9;color:#20313a;border:1px solid #869799;border-radius:2px;padding:8px 9px;min-width:130px}.filterbar input[name=q]{min-width:280px}.filterbar label{font-weight:600;font-size:12px}.points-filter select{max-width:350px}.panel-note{background:#304047;border-left:3px solid #65ce9f;color:#c5dad5;padding:10px 12px;margin:13px 0;font-size:12px}.punch-table th,.punch-table td{text-align:center}.punch-table th:first-child,.punch-table td:first-child{text-align:left}.punch-table .datecell{white-space:nowrap}.punch-table .mark.hasmark{color:#9ef2bf;font-weight:700}.punch-table .mark.justi{color:#ffd387;font-weight:700}.placeholder{text-align:center;padding:38px;max-width:670px;margin:auto;color:#d7e0e5}.placeholder-icon{font-size:39px;color:#60d09d}.placeholder h3{color:#fff}.placeholder p{line-height:1.65}.footnote{font-size:11px;color:#a8c0bd;padding:19px 0 5px}
.login-shell{width:min(750px,calc(100vw - 28px));min-height:445px;margin:clamp(30px,10vh,115px) auto;display:grid;grid-template-columns:438px 1fr;box-shadow:0 12px 48px rgba(0,0,0,.32);background:#414c56}.login-left{padding:34px 39px}.login-mark{color:#6bea9f;font-size:13px;font-weight:700}.login-left h1{font-size:30px;margin:14px 0 4px;color:white}.login-intro{color:#c9d7dc;margin-bottom:28px}.login-left label{display:block;color:#d6e3e7;font-weight:700;margin:0 0 7px;font-size:12px}.login-left input{display:block;width:100%;height:41px;background:#f4f7fa;color:#172c34;border:2px solid #75958c;margin-bottom:15px;padding:9px}.login-left input:focus{outline:none;border-color:#6feaab}.login-submit{width:92%;justify-content:center;font-size:15px;margin-top:11px;height:45px}.login-fine{color:#bfd1d5;font-size:11px;margin-top:25px}.login-error{background:#704140;padding:9px;color:white}.login-right{background:#334b42;display:flex;align-items:center;flex-direction:column;padding:17px;color:#edf8f4}.login-right strong{color:#70efaa}.login-right img{width:180px;height:180px;object-fit:contain;margin:22px 0 10px}.login-right h2{font-size:15px;margin:4px 0 8px}.login-right p{font-size:12px}.login-right span{font-size:11px;color:#adc6ba;margin-top:auto;padding-bottom:13px}
@media(max-width:1100px){.stats-grid{grid-template-columns:repeat(3,1fr)}.sidebar{width:208px}.content{padding:22px 18px}}
@media(max-width:760px){.sidebar{display:none;position:fixed;z-index:10;box-shadow:15px 0 30px #111}.sidebar.open{display:block}.topbar{padding:0 12px}.breadcrumb{font-size:12px}#mobileMenu{display:block;background:transparent;color:white;border:none;font-size:19px}.stats-grid{grid-template-columns:repeat(2,1fr)}.right-top .top-user,.page-version{display:none}.mode-flag{font-size:9px}.login-shell{grid-template-columns:1fr;width:min(430px,calc(100vw - 30px));margin:25px auto}.login-right{display:none}.login-left{padding:34px 25px}}
.label-ok{color:#81e6b4;font-weight:600}.label-warning{color:#fbd58a;font-weight:600}
/* v0.9: cadastros operacionais, sem alterar tema original */
.cad-form{margin-top:14px}.cad-grid{display:grid;grid-template-columns:repeat(2,minmax(200px,1fr));gap:14px}.cad-grid label,.cad-days label{display:flex;flex-direction:column;gap:6px;color:#e6f5ee;font-size:12px;font-weight:600}.cad-grid input,.cad-grid select,.cad-days input{width:100%;min-height:38px;padding:9px;background:#f3f8f9;border:1px solid #7eaaa0;color:#20313a;border-radius:3px}.cad-grid small{font-size:10px;font-weight:400;color:#c4e5d4}.cad-days{display:grid;grid-template-columns:repeat(2,minmax(200px,1fr));gap:10px;margin:13px 0}.cad-tabs{display:flex;gap:9px;margin:14px 0}.cad-tabs a{border:1px solid #9cb6b0;padding:8px 13px;border-radius:4px}.cad-tabs a.active{background:#198d5b;border-color:#4ae29d}.cad-actions{display:flex;align-items:center;gap:16px;margin-top:18px}.alert-success{background:#22543c;padding:12px;margin:10px 0;color:#e7fff0}.alert-warning{background:#704140;padding:12px;margin:10px 0;color:#fff}.muted{color:#c0ced3}.panel-note a{text-decoration:underline}@media(max-width:760px){.cad-grid,.cad-days{grid-template-columns:1fr}}
/* v0.10 - controles de catálogo no mesmo tema cinza/verde do Windows */
.catalog-actions{white-space:nowrap}.catalog-actions>a{color:#75edaf;font-weight:700;margin-right:12px}.catalog-actions form{display:inline}.catalog-delete{background:transparent;border:1px solid #a6b5bd;color:#f0d2cf;padding:5px 9px;border-radius:3px}.catalog-delete:hover{background:#654144}.cad-grid a{color:#99eac2;text-decoration:underline}
/* v0.10 - busca global de módulos e sinalização honesta de paridade */
.module-search-bar{display:flex;align-items:center;flex:0 1 320px;min-width:130px;max-width:320px;background:#233748;border:1px solid #557263;border-radius:4px;overflow:hidden}.module-search-bar input{background:transparent;border:0;color:#fff;min-width:0;flex:1;font:inherit;font-size:12px;padding:8px 10px;outline-offset:-2px}.module-search-bar input::placeholder{color:#b7c7d2}.module-search-bar button{border:0;background:#198d5b;color:#fff;font-size:19px;padding:3px 12px}.pending-label{font-size:9px;color:#d8c79c;margin-left:auto;white-space:nowrap}.nav-link{gap:5px}.nav-link .nav-dot{margin-right:4px}@media(max-width:1080px){.module-search-bar{max-width:190px}}@media(max-width:760px){.module-search-bar{display:none}.pending-label{font-size:8px}}
/* v0.10 - paleta alinhada aos valores da GUI Tkinter Windows v5.0.25.19 */
:root{--green:#218e57;--navy:#172638;--navy2:#414a54;--panel:#454d57;--line:#59636d}
body{background:#111c2a}.sidebar{background:#172638}.topbar{background:#172638;border-bottom-color:#345064}.content{background:#414a54;min-height:calc(100vh - 67px)}
.panel,.quick-actions{background:#454d57;border-color:#59636d;border-radius:5px}.stat{background:#454d57;border-top-color:#58db8b}th{background:#28343e}tr:hover td{background:#35414b}
.nav-link.selected{background:#218e57;color:#fff}.nav-section[open]>.nav-section-label{background:#263d50;border-left-color:#58db8b}.module-search-bar button{background:#218e57}
/* v0.11 — cadastros operacionais com disposição do Soroponto Windows v5.0.25.6 */
.win-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}.win-toolbar h2{font-size:21px;letter-spacing:.2px;margin:0}.win-toolbar-buttons,.win-cycle-toolbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.win-button{font:inherit;display:inline-flex;justify-content:center;align-items:center;border:1px solid #a9b7bc;border-radius:2px;background:#394b54;color:#f5f9fa;padding:9px 13px;font-weight:600;font-size:12px;cursor:pointer}.win-button:hover{background:#286249}.win-filterbar{display:flex;gap:16px;flex-wrap:wrap;align-items:center;margin:12px 0}.win-filterbar label{display:flex;gap:8px;align-items:center;font-size:12px}.win-filterbar input,.win-filterbar select{color:#20303a;background:#f1f6f8;border:1px solid #a6b8bb;padding:7px;min-height:34px}.win-filterbar input{min-width:250px}.win-list{min-height:225px}.win-table tr[data-schedule-id],.win-table tr[data-catalog-id]{cursor:pointer}.win-table tr:has(input[type=radio]:checked) td{background:#245d4a}.win-hint{color:#f3c679;font-size:11px;margin:12px 0}.win-muted{color:#b4d9cc;font-size:11px;margin:9px 0}.win-dialog{border:1px solid #819099;border-radius:0;background:#414a54;color:#f7fcfc;box-shadow:0 18px 70px #030b13cc;max-width:min(1560px,97vw);width:min(1560px,97vw);max-height:94vh;padding:0;overflow:hidden}.win-dialog::backdrop{background:rgba(8,15,22,.72)}.win-dialog[open]{display:flex;flex-direction:column}.win-form{display:flex;flex-direction:column;max-height:94vh;min-height:0}.win-dialog-head{padding:12px 18px;border-bottom:1px solid #68747c;display:flex;align-items:center;justify-content:space-between;flex:none}.win-dialog-head h2{margin:0;font-size:20px}.win-close{background:transparent;color:white;border:0;font-size:26px;cursor:pointer}.win-dialog-body{padding:17px 18px;overflow:auto;flex:1;min-height:0}.win-dialog-footer{display:flex;justify-content:flex-end;gap:12px;padding:12px 18px;border-top:1px solid #68747c;background:#414a54;flex:none}.win-schedule-fields{display:grid;grid-template-columns: minmax(200px,1fr) minmax(240px,1.4fr) minmax(200px,1fr);gap:9px 20px;max-width:1110px}.win-schedule-fields label{font-size:12px;display:flex;gap:9px;align-items:center}.win-schedule-fields label:nth-child(2){grid-column:span 2}.win-schedule-fields input:not([type=checkbox]),.win-schedule-fields select,.win-base-date input,.win-mini-form input,.win-mini-form select{min-width:0;background:#f3f7f7;border:1px solid #9dacb1;border-radius:1px;color:#142731;padding:8px;min-height:34px}.win-schedule-fields input:not([type=checkbox]){flex:1}.win-inline-check{white-space:nowrap}.win-base-date{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:15px 0;font-size:12px}.win-base-date label{display:flex;gap:10px;align-items:center}.win-base-date .win-date-picker{max-width:48px}.win-base-date span{color:#f3c679}.win-grid-title{font-size:11px;color:#f3c679}.win-grid-scroll{max-height:49vh;overflow:auto;border:1px solid #68737d;background:#454d57}.win-day-table{min-width:1700px;border-spacing:0;border-collapse:collapse;width:max-content}.win-day-table th{position:sticky;top:0;z-index:1;background:#414a54;font-size:11px;padding:9px 6px;text-align:center;border:0;border-bottom:1px solid #68737d}.win-day-table td{padding:5px 4px;border:0;text-align:center;background:#454d57}.win-day-table .day-name{text-align:left;min-width:120px;white-space:nowrap}.win-day-table input:not([type=checkbox]),.win-day-table select{background:#f1f4f5;color:#1c2f36;border:1px solid #a4aeb4;padding:5px;min-height:30px;font-size:12px}.win-day-table select{width:127px}.win-day-table input.win-hour{width:84px}.win-day-table input.win-number{width:64px}.win-day-table input[type=checkbox]{width:18px;height:18px;accent-color:#218e57}.win-charge{min-width:54px;font-weight:700;color:#def7e8}.win-cycle-toolbar{justify-content:space-between;margin:7px 0 12px}.win-cycle-toolbar strong{font-size:12px}.win-tabbar{display:flex;gap:6px;border-bottom:1px solid #8b999e;padding-bottom:0;margin:12px 0}.win-tab{background:#33424b;color:#f1f5f5;border:1px solid #8b999e;border-bottom:0;padding:12px 18px;font-weight:700;cursor:pointer}.win-tab.active{background:#218e57}.win-mini-dialog{width:min(680px,94vw)}.win-mini-form{display:grid;grid-template-columns:130px 1fr;align-items:center;gap:14px;margin:10px 0}.win-mini-form input[type=checkbox]{width:19px;height:19px;accent-color:#218e57}.win-mini-form label{font-size:13px}.win-mini-form .win-checkbox-label{grid-column:2;display:flex;gap:12px;align-items:center}.win-date-control{display:flex;gap:7px;align-items:center}.win-date-control input[type=text]{width:min(280px,70%)}.win-date-control input[type=date]{max-width:46px}.win-table th:first-child{width:31px}.win-table td:first-child{text-align:center}.win-table input[type=radio]{accent-color:#218e57}.win-selection-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.win-dialog[open][hidden], [hidden]{display:none!important}@media(max-width:760px){.win-dialog,.win-dialog[open]{max-height:100dvh;width:100vw;max-width:100vw}.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 h2{font-size:17px}.win-dialog-body{padding:12px}.win-mini-form{grid-template-columns:1fr}.win-mini-form .win-checkbox-label{grid-column:auto}}
/* Calendário compacto ao lado da data em DD/MM/AAAA, como no programa Windows. */
.win-date-control input[type=date],.win-base-date input[type=date]{width:44px;max-width:44px;min-width:44px;color:transparent;font-size:0;padding:5px 3px}
.win-date-control input[type=date]::-webkit-datetime-edit,.win-base-date input[type=date]::-webkit-datetime-edit{display:none}
.win-date-control input[type=date]::-webkit-calendar-picker-indicator,.win-base-date input[type=date]::-webkit-calendar-picker-indicator{opacity:1;width:19px;height:19px;cursor:pointer}
/* Paridade operacional Windows — férias, justificativas e banco de horas. */
.parity-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:16px;margin:12px 0 20px;align-items:start}
.parity-form{display:flex;flex-direction:column;gap:12px;padding:19px;background:var(--surface,#28352f);border-radius:10px;border:1px solid rgba(150,173,164,.25);min-width:0}
.parity-form label{display:flex;flex-direction:column;gap:6px;font-weight:500;color:inherit}
.parity-form label.win-checkbox-label{flex-direction:row;align-items:center;gap:8px}
.parity-form input:not([type=checkbox]),.parity-form select{width:100%;max-width:100%;box-sizing:border-box;background:var(--input-bg,#202e2a);color:inherit;border:1px solid #60786c;border-radius:6px;padding:10px 12px;min-height:39px}
.parity-form h2,.parity-form h3{margin:3px 0 5px}
.parity-form button{align-self:flex-start}
.win-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:11px;margin:16px 0}
.win-stats div{display:flex;flex-direction:column;gap:5px;border:1px solid #506e5c;padding:14px 18px;border-radius:8px}
.win-stats b{font-size:26px;color:#6fe6aa}
.win-stats small{color:inherit;opacity:.85}
.inline-form{display:inline-flex;align-items:center;gap:6px}
.punch-treat-form{display:flex;flex-wrap:wrap;align-items:center;gap:5px;min-width:600px}
.punch-treat-form input,.punch-treat-form select{max-width:175px;min-width:95px;background:#263731;color:inherit;border:1px solid #6c8878;border-radius:5px;padding:6px}
@media print {.sidebar,.topbar,.win-toolbar .win-button,.filterbar,.footnote{display:none!important}.main-shell{margin:0!important}.content{padding:0!important}.panel{border:none!important}}
