:root{
  --primary:#244F73;--primary-dark:#173A58;--accent:#4F7FA3;--accent-light:#E9F4FB;
  --success:#3E9B72;--muted:#879BAC;--bg:#F3F7FA;--card:#FFFFFF;--text:#1E2B36;
  --subtext:#647482;--border:#D7E2EA;--danger:#C65353;--warning:#D08B2E;--row-alt:#F7FAFC;
  --shadow:0 8px 28px rgba(23,58,88,.08);--radius:12px;--sidebar:245px;--topbar:82px;
}
*{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%;font-family:"Segoe UI",Arial,sans-serif;color:var(--text);background:var(--bg);font-size:14px}body{overflow-x:hidden}a{text-decoration:none;color:inherit}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.46}.ervi-inline-form{display:inline-flex;margin:0}.ervi-app{min-height:100vh;background:var(--bg)}
.ervi-topbar{position:fixed;z-index:50;top:0;left:0;right:0;height:var(--topbar);background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 28px 0 22px;box-shadow:0 2px 9px rgba(23,58,88,.04)}
.ervi-brand{display:flex;align-items:center;gap:13px}.ervi-brand img{width:55px;height:55px;object-fit:contain}.ervi-brand strong{display:block;font-size:21px;line-height:1.1;color:var(--primary-dark);font-weight:700}.ervi-brand span{display:block;margin-top:5px;color:var(--subtext);font-size:12.5px}.ervi-top-actions{display:flex;align-items:center;gap:20px}.ervi-live-clock{font-size:13px;color:var(--subtext);white-space:nowrap}.ervi-user-badge{display:flex;align-items:center;gap:9px;background:var(--row-alt);border:1px solid var(--border);border-radius:10px;padding:8px 12px;min-width:128px}.ervi-user-dot{width:29px;height:29px;border-radius:50%;background:var(--accent-light);border:2px solid var(--accent);position:relative}.ervi-user-dot:before{content:"";position:absolute;width:8px;height:8px;border-radius:50%;background:var(--primary);top:5px;left:8px}.ervi-user-dot:after{content:"";position:absolute;width:15px;height:7px;border-radius:9px 9px 4px 4px;background:var(--primary);bottom:4px;left:4px}.ervi-user-badge b{display:block;font-size:12.5px}.ervi-user-badge small{display:block;color:var(--subtext);font-size:10.5px;margin-top:2px}
.ervi-sidebar{position:fixed;z-index:45;left:0;top:var(--topbar);bottom:0;width:var(--sidebar);background:var(--primary-dark);color:#fff;display:flex;flex-direction:column;padding:24px 14px 17px}.ervi-menu-title{font-size:10px;font-weight:700;letter-spacing:1.35px;color:#9EB7CA;padding:0 13px 10px}.ervi-sidebar nav{display:flex;flex-direction:column;gap:3px}.ervi-nav{height:42px;display:flex;align-items:center;gap:12px;padding:0 13px;border-radius:7px;color:#D8E6F0;font-size:13.5px;transition:.15s}.ervi-nav:hover{background:rgba(255,255,255,.07);color:#fff}.ervi-nav.active{background:#fff;color:var(--primary-dark);font-weight:650;box-shadow:0 3px 10px rgba(0,0,0,.1)}.ervi-nav-icon{width:19px;text-align:center;font-size:15px}.ervi-sidebar-bottom{margin-top:auto}.ervi-version{text-align:center;color:#B1C5D5;font-size:10.5px;line-height:1.5;margin:10px 0 12px}.ervi-version span{color:#7899B1}.ervi-logout{width:100%;height:38px;border:none;border-radius:7px;background:var(--danger);color:#fff;font-weight:650;font-size:12.5px}.ervi-logout:hover{filter:brightness(.95)}
.ervi-main{padding-top:var(--topbar);padding-left:var(--sidebar);min-height:100vh}.ervi-page{padding:28px 30px 44px;max-width:1650px;margin:0 auto}.ervi-page-head{margin:0 0 21px}.ervi-page-head h1{margin:0;color:var(--primary-dark);font-size:25px;font-weight:700}.ervi-page-head p{margin:6px 0 0;color:var(--subtext);font-size:13px}.ervi-notice{padding:12px 15px;border-radius:8px;margin:0 0 16px;border:1px solid}.ervi-notice.is-ok{background:#EDF8F3;border-color:#BEE5D3;color:#2F7658}.ervi-notice.is-error{background:#FFF1F1;border-color:#E8B7B7;color:#9B3E3E}.ervi-birthday{background:#FFF8E9;border:1px solid #ECD8A4;color:#6F561D;padding:11px 14px;border-radius:9px;margin-bottom:16px}
.ervi-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 2px 10px rgba(23,58,88,.035);padding:18px;margin-bottom:17px}.ervi-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.ervi-card-head h2{font-size:14.5px;margin:0;color:var(--primary-dark);font-weight:700}.ervi-card-head p{font-size:11.5px;color:var(--subtext);margin:4px 0 0}.ervi-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:17px}.ervi-stat-card{background:#fff;border:1px solid var(--border);border-radius:10px;padding:19px 17px;display:flex;align-items:center;gap:16px;min-height:90px}.ervi-stat-value{width:50px;height:50px;border-radius:11px;background:var(--accent-light);color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:750}.ervi-stat-card strong{display:block;font-size:14px}.ervi-stat-card span{display:block;color:var(--subtext);font-size:11.5px;margin-top:5px}.ervi-dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.ervi-dashboard-grid>.ervi-card{min-width:0}
.ervi-btn{border:1px solid transparent;border-radius:7px;min-height:36px;padding:8px 14px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:12.5px;font-weight:650;line-height:1.1;white-space:nowrap;transition:.14s}.ervi-btn:hover:not(:disabled){transform:translateY(-1px);filter:brightness(.98)}.ervi-btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.ervi-btn-secondary{background:#fff;color:var(--primary);border-color:#AFC3D2}.ervi-btn-success{background:var(--success);color:#fff;border-color:var(--success)}.ervi-btn-danger{background:var(--danger);color:#fff;border-color:var(--danger)}.ervi-btn-warning{background:var(--warning);color:#fff;border-color:var(--warning)}.ervi-btn-muted{background:#F2F5F7;color:#526777;border-color:#D3DEE5}.ervi-btn-lg{padding:11px 20px;min-height:42px;font-size:13.5px}.ervi-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 15px}.ervi-selection-badge{margin-right:auto;border:1px solid var(--border);background:#fff;color:var(--subtext);border-radius:7px;padding:8px 11px;font-size:11.5px}.ervi-count{margin-left:auto;color:var(--subtext);font-size:11.5px;background:var(--row-alt);border:1px solid var(--border);padding:8px 10px;border-radius:7px}
.ervi-search-row,.ervi-filter-row,.ervi-report-controls{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.ervi-search-row>input{flex:1;min-width:240px}.ervi-filter-row>input{flex:1;min-width:210px}.ervi-filter-grid{display:grid;grid-template-columns:1.3fr 1fr .8fr 1.1fr auto;gap:12px;align-items:end}.ervi-filter-grid label,.ervi-form-grid label{display:flex;flex-direction:column;gap:6px;color:#415362;font-size:11.5px;font-weight:650}.ervi-date-filter>span{display:flex;align-items:center;gap:6px;min-height:17px}.ervi-filter-buttons{display:flex;gap:7px}.ervi-check{display:flex!important;flex-direction:row!important;align-items:center!important;gap:6px!important;font-weight:500!important;color:var(--subtext)!important;white-space:nowrap}.ervi-check input{width:auto!important}.ervi-search-results{margin-top:11px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.ervi-search-results a{border:1px solid var(--border);background:var(--row-alt);border-radius:7px;padding:9px 11px}.ervi-search-results a:hover{border-color:var(--accent)}.ervi-search-results b,.ervi-search-results span{display:block}.ervi-search-results b{font-size:12px}.ervi-search-results span{font-size:10.5px;color:var(--subtext);margin-top:3px}
input,select,textarea{width:100%;border:1px solid #C9D7E1;background:#fff;color:var(--text);border-radius:6px;padding:8px 10px;min-height:36px;outline:none;transition:.12s}textarea{resize:vertical;line-height:1.4}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(79,127,163,.12)}input[readonly]{background:#F5F7F9;color:#586C7B}.ervi-form-grid{display:grid;gap:12px 15px}.ervi-form-grid.two{grid-template-columns:1fr 1fr}.ervi-form-grid.three{grid-template-columns:repeat(3,1fr)}.ervi-form-grid.one{grid-template-columns:1fr}.ervi-form-grid .span-2{grid-column:1/-1}.ervi-form-grid small{font-weight:400;color:var(--subtext)}.ervi-form-section{margin:20px 0 12px;padding-bottom:7px;border-bottom:1px solid var(--border);font-size:12px;letter-spacing:.25px;color:var(--primary-dark)}.ervi-form-section.centered{text-align:center}.ervi-info-line{margin-top:14px;padding:10px 12px;background:var(--accent-light);border:1px solid #CFE4F2;border-radius:7px;color:var(--primary)}
.ervi-table-wrap{width:100%;overflow:auto;border:1px solid #E2E9EE;border-radius:8px}.ervi-table-wrap.compact{max-height:300px}.ervi-table-wrap table{width:100%;border-collapse:collapse;min-width:700px;background:#fff}.ervi-table-wrap thead{position:sticky;top:0;z-index:1}.ervi-table-wrap th{background:#EDF3F7;color:#3B5365;font-size:10.7px;font-weight:700;text-align:left;padding:10px 11px;border-bottom:1px solid #CDDCE6;white-space:nowrap}.ervi-table-wrap td{font-size:11.5px;padding:9px 11px;border-bottom:1px solid #E8EEF2;vertical-align:middle}.ervi-table-wrap tbody tr:nth-child(even){background:var(--row-alt)}.ervi-table-wrap tbody tr:hover{background:#EDF6FB}.ervi-selectable tbody tr{cursor:pointer}.ervi-selectable tbody tr.selected{background:#DCEFFB!important;box-shadow:inset 3px 0 var(--primary)}.ervi-empty{text-align:center!important;color:var(--muted);padding:30px!important}.ervi-pill{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:700}.ervi-pill.green{background:#E6F5EE;color:#2F7B5A}.ervi-pill.blue{background:#E8F1F8;color:#315F81}.ervi-pill.gray{background:#EEF1F3;color:#65757F}.ervi-text-green{color:var(--success)!important}
.ervi-access-grid{display:grid;grid-template-columns:285px 1fr;gap:17px}.ervi-photo-box{height:292px;border:1px dashed #BCD0DE;border-radius:9px;background:#F8FBFD;display:flex;align-items:center;justify-content:center;overflow:hidden}.ervi-photo-box img{width:100%;height:100%;object-fit:cover}.ervi-no-photo{color:var(--muted);font-size:12px}.ervi-selection-empty{min-height:225px;display:flex;align-items:center;justify-content:center;color:var(--muted)}.ervi-employee-summary{display:grid;grid-template-columns:1fr 1fr;gap:8px 17px}.ervi-employee-summary>div,.ervi-detail-grid>div{border-bottom:1px solid #EDF1F4;padding:8px 0}.ervi-employee-summary span,.ervi-detail-grid span{display:block;font-size:10.5px;color:var(--subtext);margin-bottom:3px}.ervi-employee-summary b,.ervi-detail-grid b{font-size:12.5px;font-weight:650}.ervi-action-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:17px}.ervi-network-warning{margin-top:14px;background:#FFF4E8;border:1px solid #EDCEA9;color:#855C2C;padding:9px 11px;border-radius:7px;font-size:11.5px}
.ervi-modal{position:fixed;z-index:200;inset:0;background:rgba(15,36,51,.48);display:none;align-items:flex-start;justify-content:center;padding:5vh 20px;overflow:auto}.ervi-modal.is-open{display:flex}.ervi-modal-dialog{width:min(96vw,720px);background:#fff;border-radius:12px;border:1px solid #C9D8E2;box-shadow:0 24px 70px rgba(10,35,54,.25);padding:20px}.ervi-modal-dialog.small{max-width:500px}.ervi-modal-dialog.medium{max-width:720px}.ervi-modal-dialog.large{max-width:880px}.ervi-modal-dialog.payroll-dialog{max-width:920px;padding:0 20px 20px;overflow:hidden}.ervi-modal-head{display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid var(--border);padding-bottom:12px;margin-bottom:16px}.ervi-modal-head h2{margin:0;font-size:18px;color:var(--primary-dark)}.ervi-modal-head p{margin:4px 0 0;font-size:11.5px;color:var(--subtext)}.ervi-modal-x{font-size:26px;color:#718594;line-height:1}.ervi-modal-actions{display:flex;justify-content:flex-end;align-items:center;gap:9px;margin-top:19px;padding-top:14px;border-top:1px solid var(--border)}.ervi-modal-actions.left{justify-content:flex-start}.ervi-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:3px 20px}.ervi-password-display{padding:22px;background:var(--row-alt);border:1px solid var(--border);border-radius:8px;text-align:center}.ervi-password-display span{display:block;color:var(--subtext);font-size:11px}.ervi-password-display strong{font-size:22px;letter-spacing:1px;display:block;margin-top:7px;color:var(--primary-dark)}
.ervi-corp-preview{display:flex;align-items:center;gap:12px;margin-top:12px;border:1px solid var(--border);border-radius:8px;padding:10px;background:#FAFCFD}.ervi-corp-preview img{width:92px;height:43px;object-fit:contain}.ervi-corp-preview span{font-size:11px;color:var(--subtext)}.ervi-payroll-launch{display:flex;align-items:center;gap:13px}.ervi-payroll-launch .ervi-selection-badge{margin-right:0;min-width:220px}.ervi-corp-mini{display:flex;align-items:center;gap:8px;flex:1;color:var(--subtext);font-size:11px}.ervi-corp-mini img{height:32px;width:75px;object-fit:contain}.ervi-payroll-top{margin:0 -20px 0;padding:10px 20px;background:var(--primary-dark);color:#fff;font-size:12px;font-weight:750;letter-spacing:.6px;display:flex;justify-content:space-between;align-items:center}.ervi-payroll-top span{display:flex;align-items:center;gap:6px;font-weight:500;font-size:10px}.ervi-payroll-top input{width:50px;min-height:27px;padding:3px 6px;border:0;border-radius:4px;text-align:center}.ervi-modal-head.payroll-head{padding-top:16px}.ervi-payroll-brand{display:flex;align-items:center;gap:16px}.ervi-payroll-brand img{width:100px;height:55px;object-fit:contain}.ervi-att-summary{display:grid;grid-template-columns:repeat(6,1fr);gap:7px}.ervi-att-summary>div{border:1px solid var(--border);background:var(--row-alt);border-radius:7px;padding:10px;text-align:center}.ervi-att-summary span{display:block;color:var(--subtext);font-size:9.5px;min-height:25px}.ervi-att-summary b{display:block;color:var(--primary-dark);font-size:16px;margin-top:4px}.ervi-payroll-table{margin-top:17px;border:1px solid var(--border);border-radius:8px;overflow:hidden}.ervi-payroll-table .head,.ervi-payroll-table label,.ervi-payroll-table .total{display:grid;grid-template-columns:1fr 220px;align-items:center}.ervi-payroll-table .head{background:var(--primary);color:#fff;font-size:11px;font-weight:700}.ervi-payroll-table .head span{padding:9px 12px}.ervi-payroll-table label{border-top:1px solid var(--border);font-weight:600}.ervi-payroll-table label span{padding:8px 12px}.ervi-payroll-table label input{border:0;border-left:1px solid var(--border);border-radius:0;text-align:right}.ervi-payroll-table .total{background:#EAF2F8;border-top:1px solid #BCD0DF;font-weight:750}.ervi-payroll-table .total>*{padding:11px 12px}.ervi-payroll-table .total b{text-align:right;color:var(--primary-dark);font-size:16px}.ervi-signature{text-align:center;margin:37px auto 5px;font-size:10.5px;color:#536675;line-height:1.7}
.ervi-tabs{display:flex;gap:3px;margin-bottom:14px;border-bottom:1px solid var(--border)}.ervi-tabs a{padding:10px 20px;color:var(--subtext);font-weight:650;font-size:12.5px;border-bottom:3px solid transparent}.ervi-tabs a.active{color:var(--primary);border-bottom-color:var(--primary)}.ervi-report-controls{margin-bottom:13px}.ervi-report-controls form{display:flex;align-items:center;gap:7px}.ervi-report-controls input{width:auto;min-width:145px}.ervi-export-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.ervi-export-card{margin:0}.ervi-export-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.ervi-export-actions input{width:auto;min-width:150px}.ervi-mini-form{display:flex;gap:7px;width:100%;margin-bottom:3px}.ervi-mini-form input{flex:1}.ervi-about{display:grid;grid-template-columns:210px 1fr;gap:28px;align-items:start;padding:8px}.ervi-about>img{width:190px;max-height:120px;object-fit:contain;margin:auto}.ervi-about h2{margin:0 0 4px;color:var(--primary-dark)}.ervi-about p{color:var(--subtext);line-height:1.55}.ervi-about ul{padding-left:18px;color:#485B69;line-height:1.8}.ervi-about-buttons{display:flex;gap:8px;flex-wrap:wrap;margin:13px 0}.ervi-tech{font-size:11px!important}.ervi-network-status{display:flex;align-items:center;gap:12px;background:var(--row-alt);border:1px solid var(--border);padding:13px;border-radius:8px;margin-bottom:15px}.ervi-network-status span{color:var(--subtext);font-size:11px}.ervi-network-status strong{font-family:Consolas,monospace;color:var(--primary-dark)}.ervi-network-status em{margin-left:auto;font-style:normal;font-size:10.5px;font-weight:700;padding:5px 8px;border-radius:999px}.ervi-network-status em.ok{background:#E6F5EE;color:#2F7B5A}.ervi-network-status em.bad{background:#FCECEC;color:#9F4141}
/* Login: conserva la composición de la ventana Tkinter original */
.ervi-login-page{min-height:100vh;background:linear-gradient(135deg,#F0F6FA 0%,#E4EEF5 100%);display:flex;align-items:center;justify-content:center;padding:25px}.ervi-login-card{width:min(92vw,430px);background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:0 20px 60px rgba(23,58,88,.14);padding:38px 44px 27px;text-align:center}.ervi-login-logo{width:145px;height:90px;object-fit:contain;margin-bottom:8px}.ervi-login-card h1{font-size:23px;color:var(--primary-dark);margin:4px 0 4px}.ervi-login-sub{font-size:12px;color:var(--subtext);margin:0 0 25px}.ervi-login-form{text-align:left}.ervi-login-form>label:not(.ervi-check){display:block;margin:11px 0 6px;font-size:11.5px;font-weight:650;color:#415362}.ervi-password-wrap{position:relative}.ervi-password-wrap input{padding-right:44px}.ervi-eye{position:absolute;right:4px;top:4px;width:34px;height:28px;background:transparent;border:0;color:var(--muted)}.ervi-login-form .ervi-check{margin:10px 0 16px}.ervi-btn-login{width:100%;min-height:42px;font-size:13.5px}.ervi-login-version{font-size:10px;color:#9AAAB6;margin-top:20px}
@media(max-width:1100px){:root{--sidebar:210px}.ervi-stat-grid{grid-template-columns:1fr 1fr}.ervi-filter-grid{grid-template-columns:1fr 1fr}.ervi-filter-buttons{grid-column:1/-1}.ervi-att-summary{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){:root{--topbar:68px}.ervi-topbar{padding:0 12px}.ervi-brand img{width:42px;height:42px}.ervi-brand strong{font-size:16px}.ervi-brand span,.ervi-live-clock{display:none}.ervi-user-badge{min-width:auto;padding:6px 8px}.ervi-user-badge small{display:none}.ervi-sidebar{width:100%;height:58px;left:0;right:0;top:auto;bottom:0;padding:6px;background:var(--primary-dark);overflow-x:auto;display:block}.ervi-sidebar .ervi-menu-title,.ervi-sidebar-bottom{display:none}.ervi-sidebar nav{flex-direction:row;gap:5px}.ervi-nav{min-width:max-content;height:44px;padding:0 10px}.ervi-nav span:last-child{font-size:10px}.ervi-main{padding-left:0;padding-bottom:58px}.ervi-page{padding:18px 12px 28px}.ervi-page-head h1{font-size:21px}.ervi-stat-grid,.ervi-dashboard-grid,.ervi-access-grid,.ervi-export-grid,.ervi-about{grid-template-columns:1fr}.ervi-filter-grid,.ervi-form-grid.two,.ervi-form-grid.three,.ervi-detail-grid{grid-template-columns:1fr}.ervi-search-results{grid-template-columns:1fr}.ervi-count{margin-left:0}.ervi-att-summary{grid-template-columns:repeat(2,1fr)}.ervi-payroll-table .head,.ervi-payroll-table label,.ervi-payroll-table .total{grid-template-columns:1fr 140px}.ervi-modal{padding:15px 8px}.ervi-modal-dialog{width:100%;padding:15px}.ervi-payroll-top{margin:0 -15px;padding:8px 12px;flex-wrap:wrap;gap:7px}.ervi-about>img{width:150px}.ervi-toolbar{align-items:stretch}.ervi-toolbar>.ervi-btn,.ervi-toolbar>.ervi-inline-form .ervi-btn{flex:1}.ervi-selection-badge{width:100%;margin-right:0}.ervi-login-card{padding:30px 24px 24px}}
/* Afinación visual para reproducir la interfaz Tkinter V1.0.0 */
:root{--bg:#EEF4F8;--border:#C9D8E3;--primary-dark:#1D4664;--primary:#2B5E84;--accent:#4F7FA3}
.ervi-card,.ervi-stat-card,.ervi-user-badge,.ervi-btn,input,select,textarea,.ervi-table-wrap,.ervi-notice,.ervi-selection-badge,.ervi-info-line,.ervi-network-warning{border-radius:0;box-shadow:none}
.ervi-sidebar{background:#1D4664;padding:19px 10px 14px}.ervi-menu-title{padding-left:10px;color:#BDD0DE;font-size:9px}.ervi-sidebar nav{gap:5px}.ervi-nav{height:43px;border:1px solid #C2D4E1;border-radius:0;padding:0 14px;color:#fff;font-weight:650}.ervi-nav:hover{background:#255474}.ervi-nav.active{background:#2E6086;color:#fff;border-color:#E8F1F7;box-shadow:none}.ervi-nav-icon{display:none}.ervi-logout{border-radius:0;height:35px;background:#C85454}.ervi-version{text-align:left;padding-left:10px;border-top:1px solid rgba(255,255,255,.26);padding-top:17px;margin-top:14px}
.ervi-topbar{box-shadow:none;height:80px;padding-left:22px}.ervi-brand img{width:52px;height:52px}.ervi-brand strong{font-size:20px}.ervi-user-badge{background:#E5F2FA;border:0;min-width:138px;justify-content:center}.ervi-user-dot{display:none}.ervi-main{padding-top:80px}.ervi-page{padding:24px 24px 40px}.ervi-page-head h1{font-size:25px;color:#245477}.ervi-page-head p{font-size:12px}
.ervi-stat-card{position:relative;min-height:108px;padding:16px 16px 14px 34px;align-items:flex-start;gap:0;display:block}.ervi-stat-card:before{content:"";position:absolute;left:17px;top:14px;bottom:14px;width:5px;background:#2B5E84}.ervi-stat-card:nth-child(2):before{background:#3E9B72}.ervi-stat-card:nth-child(3):before{background:#4F7FA3}.ervi-stat-card:nth-child(4):before{background:#879BAC}.ervi-stat-value{width:auto;height:auto;border-radius:0;background:none;justify-content:flex-start;font-size:27px;line-height:1.1;margin:14px 0 8px;color:#173A58}.ervi-stat-card strong{text-transform:uppercase;color:#5D7180;font-size:10.5px;position:absolute;top:18px;left:34px}.ervi-stat-card span{font-size:10.5px;margin:0}.ervi-card{padding:16px}.ervi-card-head h2{color:#245477;font-size:14px}.ervi-table-wrap th{background:#315C7D;color:#fff;border-bottom:0;padding:9px 10px}.ervi-table-wrap td{padding:9px 10px}.ervi-table-wrap tbody tr:nth-child(even){background:#fff}.ervi-table-wrap tbody tr:hover{background:#EAF4FA}.ervi-toolbar{background:#fff;border:1px solid var(--border);padding:9px 10px;margin-bottom:12px}.ervi-btn{border-radius:0;min-height:34px;padding:7px 14px;font-size:11.5px}.ervi-btn-secondary{background:#2D5F84;color:#fff;border-color:#2D5F84}.ervi-btn-muted{background:#8096A6;color:#fff;border-color:#8096A6}.ervi-btn-warning{background:#D08B2E;color:#fff}.ervi-btn-success{background:#3E9B72}.ervi-btn-danger{background:#C65353}.ervi-filter-row,.ervi-search-row{min-height:38px}.ervi-tabs a{background:#fff;border:1px solid var(--border);border-bottom:0;padding:7px 13px;margin-right:2px}.ervi-tabs a.active{background:#E7F1F7;color:#245477;border-bottom:2px solid #245477}.ervi-tabs{gap:0}.ervi-modal-dialog{border-radius:0}.ervi-pill{border-radius:0}
.ervi-login-page{background:#EEF4F8}.ervi-login-card{width:398px;min-height:500px;border-radius:0;box-shadow:none;border:1px solid #C9D8E3;padding:22px 42px 20px}.ervi-login-logo{width:150px;height:120px;margin-bottom:4px}.ervi-login-card h1{font-size:24px;margin-top:0}.ervi-login-sub{font-size:12px;margin-bottom:23px}.ervi-login-form>label:not(.ervi-check){font-size:11.5px}.ervi-login-form input{height:36px;background:#F8FAFB}.ervi-login-form .ervi-check{font-size:10.5px;border:1px solid #D4DEE5;width:max-content;padding:2px 5px;margin-top:6px}.ervi-btn-login{width:238px;margin:13px auto 0;display:flex;height:40px}.ervi-login-version{margin-top:17px}
:root{--sidebar:238px}.ervi-user-badge b{font-size:10px;color:#244F73;white-space:nowrap}.ervi-user-badge{min-width:137px;padding:7px 10px}.ervi-live-clock{font-size:10px}.ervi-top-actions{gap:12px}


/* ==========================================================
   ERVI 5.1 — ajuste visual 1:1 solicitado contra Python/Tkinter
   ========================================================== */

/* Menú lateral como la aplicación de escritorio: sin cajas/bordes. */
.ervi-sidebar{padding-left:10px;padding-right:10px}
.ervi-sidebar nav{gap:0}
.ervi-nav{
  position:relative;height:48px;border:0!important;background:transparent!important;
  padding:0 18px;color:#fff!important;font-size:13px;font-weight:700;box-shadow:none!important;
}
.ervi-nav:hover{background:#255474!important}
.ervi-nav.active{background:#2E6086!important;color:#fff!important}
.ervi-nav.active:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#67A2C9}
.ervi-menu-title{padding:0 10px 8px;font-size:9px;letter-spacing:1px}
.ervi-sidebar-bottom{border-top:1px solid rgba(255,255,255,.18);padding-top:10px;margin-top:10px}
.ervi-version{border-top:0;margin:0 0 10px;padding:0 8px;color:#BFD2E1}
.ervi-logout{height:35px;margin:0 2px;background:#C85454;border:0}

/* Modales que replican las ventanas Tkinter. */
.ervi-modal{align-items:center;justify-content:center;padding:18px;background:rgba(24,50,68,.42)}
.ervi-python-dialog{
  width:min(96vw,760px);background:#EEF4F8;border:1px solid #AEBAC3;box-shadow:0 20px 55px rgba(8,30,45,.24);
  display:flex;flex-direction:column;overflow:hidden;color:#111;border-radius:0;
}
.ervi-python-dialog form.ervi-inline-form{display:flex;flex:1;min-height:0;flex-direction:column;width:100%}
.ervi-python-visitor{width:min(96vw,760px);height:min(94vh,604px);min-height:545px}
.ervi-python-employee{width:min(97vw,945px);height:min(96vh,820px);min-height:650px}
.ervi-python-user{width:min(96vw,670px);height:min(94vh,600px);min-height:540px}

.ervi-python-modal-head{
  flex:0 0 112px;display:flex;align-items:center;gap:18px;background:#fff;border-bottom:0;padding:20px 26px;position:relative;
}
.ervi-python-modal-head img{width:44px;height:55px;object-fit:contain;flex:0 0 auto}
.ervi-python-modal-head h2{margin:0;color:#194A70;font-size:22px;line-height:1.15;font-weight:750}
.ervi-python-modal-head p{margin:8px 0 0;color:#5F7382;font-size:12px}
.ervi-python-modal-x{position:absolute;right:18px;top:14px;color:#687C8A;font-size:24px;line-height:1;font-weight:400}

.ervi-python-modal-body{flex:1;min-height:0;overflow:auto;padding:20px 15px;background:#EEF4F8}
.ervi-python-modal-body.employee-body{padding:20px}
.ervi-python-modal-body.user-body{padding:20px 15px}
.ervi-python-section{background:#fff;border:1px solid #6F7B83;padding:17px 19px 14px;margin:0 0 14px}
.ervi-python-section h3{margin:0;color:#194A70;font-size:15px;font-weight:750}
.ervi-python-section>p{margin:8px 0 16px;color:#607483;font-size:12px}

.ervi-python-field-grid{display:grid;align-items:center;row-gap:16px;column-gap:18px}
.ervi-python-field-grid label{font-size:12px;font-weight:700;color:#101418;line-height:1.15}
.ervi-python-field-grid input,.ervi-python-field-grid select{
  min-height:33px;height:33px;padding:5px 8px;border:1px solid #AFC9DA;background:#F8FBFD;color:#0F1519;border-radius:0;box-shadow:none;
}
.ervi-python-field-grid input:focus,.ervi-python-field-grid select:focus{border-color:#2B5E84;box-shadow:none}
.ervi-python-field-grid.visitor-grid{grid-template-columns:150px minmax(160px,1fr) 102px minmax(160px,1fr)}
.ervi-python-field-grid.employee-grid{grid-template-columns:115px minmax(220px,1fr) 105px minmax(220px,1fr)}
.ervi-python-field-grid.user-grid{grid-template-columns:125px minmax(260px,1fr);row-gap:9px}
.ervi-python-field-grid.user-grid input,.ervi-python-field-grid.user-grid select{height:31px;min-height:31px}

.ervi-python-timebar{
  margin-top:18px;background:#E4F2FB;color:#1F5B83;text-align:center;padding:11px 12px;font-size:12px;font-weight:500;
}
.ervi-python-timebar b{font-weight:750}

.ervi-python-corp-row{display:grid;grid-template-columns:155px minmax(260px,1fr) 170px;gap:14px;align-items:center;margin-top:20px}
.ervi-python-corp-row>label{font-size:12px;font-weight:700;color:#111}
.ervi-python-corp-row>select{height:32px;min-height:32px;border:1px solid #AFC9DA;border-radius:0;background:#E5E3DE;padding:4px 7px}
.ervi-python-corp-preview{height:106px;border:1px solid #C5D4DF;background:#fff;display:flex;align-items:center;justify-content:center;margin-left:auto;width:150px}
.ervi-python-corp-preview img{width:125px;height:80px;object-fit:contain}

.ervi-python-digital{padding-bottom:16px}
.ervi-python-file-row{display:grid;grid-template-columns:64px minmax(250px,1fr) 108px;gap:10px;align-items:center;margin-top:8px}
.ervi-python-file-row>label:first-child{font-size:12px;font-weight:700}
.ervi-real-file{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}
.ervi-file-name{height:33px!important;min-height:33px!important;background:#F8FBFD!important;border:1px solid #C4D6E2!important;border-radius:0!important}
.ervi-file-button{height:35px;display:flex;align-items:center;justify-content:center;background:#2B5E84;color:#fff;font-size:12px;font-weight:700;cursor:pointer;padding:0 12px}
.ervi-file-button:hover{background:#214B6B}

.ervi-python-check{display:flex!important;align-items:center!important;gap:8px!important;font-size:12px!important;color:#111!important;font-weight:400!important}
.ervi-python-check input{width:14px!important;height:14px!important;min-height:0!important;margin:0!important}

.ervi-python-modal-footer{
  flex:0 0 58px;background:#fff;border-top:1px solid #C5D4DF;display:flex;align-items:center;justify-content:space-between;padding:9px 16px 9px 25px;
}
.ervi-python-modal-footer>span{font-size:10px;color:#5F7382}
.ervi-python-modal-footer>div{display:flex;gap:8px;align-items:center}
.ervi-python-modal-footer .ervi-btn{min-width:140px;height:35px;min-height:35px;border:0;font-size:12px;font-weight:700;padding:7px 16px}
.ervi-python-visitor .ervi-python-modal-footer .ervi-btn{min-width:136px}
.ervi-python-user .ervi-python-modal-footer .ervi-btn{min-width:140px}

/* Acerca de como el original de Python. */
.ervi-about-python{text-align:center;min-height:590px;padding:26px 40px 24px;background:#fff}
.ervi-about-python-logo{width:165px;height:105px;object-fit:contain;margin:0 auto 10px;display:block}
.ervi-about-python h2{margin:0;color:#173F5D;font-size:22px;font-weight:750}
.ervi-about-version{display:inline-block;margin:8px 0 18px;padding:5px 10px;background:#E8F3FA;color:#2B5E84;font-size:11px;font-weight:700}
.ervi-about-manual{display:flex;width:160px;margin:0 auto 18px}
.ervi-about-description{max-width:820px;margin:0 auto 20px;color:#111!important;font-size:12px;line-height:1.45;text-align:center}
.ervi-about-functions{display:inline-block;text-align:left;margin:0 auto;color:#111;font-size:12px;line-height:1.7}
.ervi-about-functions>div{margin:3px 0}
.ervi-about-tech-python{margin:23px 0 4px!important;color:#5E7383!important;font-size:11px!important}
.ervi-about-copyright{margin:0!important;color:#5E7383!important;font-size:10px!important}

@media(max-width:900px){
  .ervi-python-employee{height:min(96vh,820px)}
  .ervi-python-field-grid.employee-grid{grid-template-columns:130px 1fr}
  .ervi-python-field-grid.employee-grid>span{display:none}
  .ervi-python-corp-row{grid-template-columns:155px 1fr}.ervi-python-corp-preview{grid-column:1/-1;margin:4px auto 0}
}
@media(max-width:700px){
  .ervi-python-dialog{height:96vh!important;min-height:0!important;width:98vw!important}
  .ervi-python-modal-head{flex-basis:88px;padding:13px 16px;gap:12px}.ervi-python-modal-head img{width:36px;height:46px}.ervi-python-modal-head h2{font-size:18px}
  .ervi-python-field-grid.visitor-grid,.ervi-python-field-grid.employee-grid,.ervi-python-field-grid.user-grid{grid-template-columns:1fr;row-gap:6px}
  .ervi-python-field-grid.visitor-grid label,.ervi-python-field-grid.employee-grid label,.ervi-python-field-grid.user-grid label{margin-top:6px}
  .ervi-python-field-grid.employee-grid>span,.ervi-python-field-grid.user-grid>span{display:none}
  .ervi-python-corp-row{grid-template-columns:1fr}.ervi-python-corp-preview{grid-column:auto}
  .ervi-python-file-row{grid-template-columns:1fr 100px}.ervi-python-file-row>label:first-child{grid-column:1/-1}
  .ervi-python-modal-footer{padding:8px 10px}.ervi-python-modal-footer>span{display:none}.ervi-python-modal-footer>div{width:100%}.ervi-python-modal-footer .ervi-btn{flex:1;min-width:0}
  .ervi-about-python{padding:24px 16px}.ervi-about-description{font-size:11.5px}.ervi-about-functions{font-size:11.5px}
}


/* ==========================================================
   ERVI-SISTEMA-WEB-V2.0.0
   Ajustes solicitados 14-08-2026
   ========================================================== */

.ervi-sidebar{overflow-y:auto;overflow-x:hidden}
.ervi-sidebar-bottom{
  position:sticky;bottom:0;z-index:5;margin-top:18px!important;padding:12px 2px 2px!important;
  background:#1D4664;border-top:1px solid rgba(255,255,255,.22)!important
}
.ervi-sidebar-bottom .ervi-version{display:none}
.ervi-logout{display:block!important;width:100%;min-height:35px}

.ervi-employee-summary b{min-height:18px;display:block}
.ervi-action-row .ervi-btn:disabled{opacity:.48;cursor:not-allowed;transform:none!important}

.ervi-record-filter-python{
  display:grid;
  grid-template-columns:minmax(300px,1.2fr) minmax(320px,1.35fr) minmax(145px,.55fr);
  grid-template-areas:"employee department type" "date date count";
  column-gap:18px;row-gap:12px;align-items:end
}
.ervi-record-field{display:flex;align-items:center;gap:10px}
.ervi-record-field.employee{grid-area:employee}
.ervi-record-field.department{grid-area:department}
.ervi-record-field.type{grid-area:type}
.ervi-record-field label{font-size:12px;font-weight:700;color:#101418;white-space:nowrap}
.ervi-record-field input,.ervi-record-field select{height:31px;min-height:31px;border:1px solid #AFC9DA;border-radius:0;background:#F8FBFD;box-shadow:none}
.ervi-record-field input{flex:1;min-width:0}
.ervi-record-field select{flex:1;min-width:0;background:#E5E3DE}
.ervi-record-date-row{grid-area:date;display:flex;align-items:center;gap:10px}
.ervi-record-date-check{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700;color:#111;white-space:nowrap}
.ervi-record-date-check input{width:14px!important;height:14px!important;min-height:0!important;margin:0}
.ervi-record-date-row>input[type="date"]{width:120px;height:31px;min-height:31px;border:1px solid #AFC9DA;border-radius:0;background:#F8FBFD;padding:4px 7px}
.ervi-record-count{grid-area:count;text-align:right;font-size:11px;color:#5F7382;padding:0 2px 7px}

.ervi-about-desktop{min-height:520px;background:#fff;padding:22px 24px 18px;border-radius:0;font-family:Arial,Helvetica,sans-serif}
.ervi-about-desktop-top{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:8px}
.ervi-about-desktop-top h1{margin:0;color:#173F5D;font-size:31px;font-weight:700;letter-spacing:-.4px}
.ervi-about-desktop-actions{display:flex;align-items:center;gap:14px}
.ervi-about-manual-desktop{min-width:158px;height:35px;font-size:12px;font-weight:700}
.ervi-about-version-desktop{min-width:116px;height:35px;display:flex;align-items:center;justify-content:center;background:#E6F1F7;color:#2B5E84;font-size:12px;font-weight:700}
.ervi-about-desktop-content{display:grid;grid-template-columns:390px 1fr;gap:24px;align-items:start}
.ervi-about-desktop-logo{display:flex;align-items:flex-start;justify-content:center;padding-top:18px}
.ervi-about-desktop-logo img{width:330px;height:255px;object-fit:contain}
.ervi-about-desktop-right{padding:8px 20px 0 0;color:#111}
.ervi-about-desktop-description{font-size:11.5px;line-height:1.45;margin:0 0 18px;max-width:600px}
.ervi-about-desktop-functions{font-size:12px;line-height:1.55;margin-left:10px}
.ervi-about-desktop-functions>div{margin:6px 0}
.ervi-about-meta{font-size:9px!important;color:#5E7383!important;margin:20px 0 0!important;line-height:1.4}
.ervi-about-meta+.ervi-about-meta{margin-top:4px!important}
.ervi-about-copyright-desktop{font-size:9px!important;color:#5E7383!important;margin:5px 0 0 0!important}

@media(max-width:1050px){
  .ervi-record-filter-python{grid-template-columns:1fr 1fr;grid-template-areas:"employee department" "type date" "count count"}
  .ervi-about-desktop-content{grid-template-columns:300px 1fr}
  .ervi-about-desktop-logo img{width:270px;height:220px}
  .ervi-about-desktop-top h1{font-size:26px}
}
@media(max-width:760px){
  .ervi-record-filter-python{grid-template-columns:1fr;grid-template-areas:"employee" "department" "type" "date" "count"}
  .ervi-record-field{display:grid;grid-template-columns:120px 1fr}
  .ervi-record-date-row{flex-wrap:wrap}
  .ervi-record-count{text-align:left}
  .ervi-about-desktop-top{align-items:flex-start;flex-direction:column}
  .ervi-about-desktop-actions{width:100%;flex-wrap:wrap}
  .ervi-about-desktop-content{grid-template-columns:1fr}
  .ervi-about-desktop-logo img{width:230px;height:170px}
  .ervi-about-desktop-right{padding-right:0}
  .ervi-about-desktop-top h1{font-size:24px}
}

/* ==========================================================
   ERVI-SISTEMA-WEB-V2.0.0 — refinamiento visual solicitado
   14-08-2026: Registros, Visitantes, Empleados dentro, Acerca de
   ========================================================== */

/* Historial de registros: una sola línea, tipografía web y tonos grises. */
.ervi-record-filter-webline{
  display:grid;
  grid-template-columns:minmax(210px,1.35fr) minmax(190px,1fr) minmax(125px,.68fr) minmax(245px,1.08fr) auto;
  gap:14px;
  align-items:end;
  width:100%;
}
.ervi-record-web-field{min-width:0;display:flex;flex-direction:column;gap:6px}
.ervi-record-web-field>label,
.ervi-record-web-date-label{
  color:var(--subtext);
  font-family:"Segoe UI",Arial,sans-serif;
  font-size:11.5px;
  font-weight:600;
  line-height:1.25;
}
.ervi-record-web-field input,
.ervi-record-web-field select{
  width:100%;height:36px;min-height:36px;padding:7px 10px;
  border:1px solid var(--border);background:#fff;color:#334A5B;
  font-family:"Segoe UI",Arial,sans-serif;font-size:12px;font-weight:400;
}
.ervi-record-web-field select{background:#fff}
.ervi-record-web-field.date{display:grid;grid-template-columns:auto minmax(128px,1fr);grid-template-rows:auto 36px;column-gap:9px;align-items:end}
.ervi-record-web-date-label{grid-column:1/-1;display:flex;align-items:center;gap:7px;white-space:nowrap}
.ervi-record-web-date-label input{width:14px!important;height:14px!important;min-height:0!important;margin:0;padding:0}
.ervi-record-web-field.date>input[type="date"]{grid-column:1/-1}
.ervi-record-web-count{
  align-self:end;padding:0 0 9px 2px;color:var(--subtext);font-size:11px;font-weight:400;white-space:nowrap
}

/* Visitantes: composición horizontal del Python con acabado tipográfico web. */
.ervi-visitor-search-python{
  display:grid;
  grid-template-columns:minmax(320px,1fr) 100px auto 110px auto;
  gap:10px;align-items:center;width:100%;
}
.ervi-visitor-search-input,
.ervi-visitor-state{
  height:36px;min-height:36px;border:1px solid var(--border);background:#fff;
  color:#334A5B;font-family:"Segoe UI",Arial,sans-serif;font-size:12px;font-weight:400;padding:7px 10px
}
.ervi-visitor-state{min-width:100px}
.ervi-visitor-today{
  display:flex;align-items:center;gap:7px;white-space:nowrap;color:var(--subtext);
  font-family:"Segoe UI",Arial,sans-serif;font-size:11.5px;font-weight:500
}
.ervi-visitor-today input{width:14px!important;height:14px!important;min-height:0!important;margin:0}
.ervi-visitor-search-btn{height:36px;min-height:36px;min-width:105px}
.ervi-visitor-count{color:var(--subtext);font-size:11px;font-weight:400;white-space:nowrap;padding-left:4px}

/* Acerca de: más limpio, moderno y coherente con la tipografía web. */
.ervi-about-web{display:flex;flex-direction:column;gap:16px;color:var(--text);font-family:"Segoe UI",Arial,sans-serif}
.ervi-about-web-hero{
  display:flex;align-items:center;justify-content:space-between;gap:28px;background:#fff;border:1px solid var(--border);
  padding:24px 26px
}
.ervi-about-web-brand{display:flex;align-items:center;gap:22px;min-width:0}
.ervi-about-logo-shell{
  width:128px;height:102px;flex:0 0 128px;display:flex;align-items:center;justify-content:center;
  background:#F7FAFC;border:1px solid #E1EAF0
}
.ervi-about-logo-shell img{width:108px;height:84px;object-fit:contain}
.ervi-about-kicker{display:block;color:#7A8D9B;font-size:9.5px;font-weight:700;letter-spacing:1.4px;margin-bottom:6px}
.ervi-about-web-brand h1{margin:0;color:var(--primary-dark);font-size:27px;line-height:1.15;font-weight:700;letter-spacing:-.25px}
.ervi-about-web-brand p{margin:8px 0 0;color:var(--subtext);font-size:12px;line-height:1.5}
.ervi-about-web-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}
.ervi-about-web-version{height:34px;display:inline-flex;align-items:center;padding:0 13px;background:#EAF3F8;border:1px solid #D7E5EE;color:#46677D;font-size:11px;font-weight:650;white-space:nowrap}
.ervi-about-web-grid{display:grid;grid-template-columns:minmax(260px,.72fr) minmax(520px,1.55fr);gap:16px}
.ervi-about-web-card{background:#fff;border:1px solid var(--border);padding:22px 24px;min-width:0}
.ervi-about-web-card h2{margin:0 0 12px;color:#315C7D;font-size:14.5px;font-weight:700}
.ervi-about-summary>p{margin:0;color:var(--subtext);font-size:12px;line-height:1.7}
.ervi-about-note{margin-top:22px;padding:13px 14px;background:#F5F9FC;border-left:3px solid #5F8EAE;display:flex;flex-direction:column;gap:4px}
.ervi-about-note strong{color:#315C7D;font-size:11.5px;font-weight:700}.ervi-about-note span{color:var(--subtext);font-size:10.5px}
.ervi-about-feature-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px 18px}
.ervi-about-feature{display:grid;grid-template-columns:22px 1fr;gap:8px;align-items:start;min-width:0;padding:5px 0}
.ervi-about-feature>span{width:19px;height:19px;display:flex;align-items:center;justify-content:center;background:#EAF4FA;color:#2B5E84;font-size:10px;font-weight:800;margin-top:1px}
.ervi-about-feature p{margin:0;color:#526877;font-size:11.5px;line-height:1.45}
.ervi-about-web-footer{background:#fff;border:1px solid var(--border);padding:15px 20px;display:grid;grid-template-columns:1.1fr 1fr auto;gap:22px;align-items:center}
.ervi-about-web-footer div{display:flex;flex-direction:column;gap:4px;min-width:0}
.ervi-about-web-footer span{color:#8A9AA6;font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:.55px}
.ervi-about-web-footer strong{color:#647785;font-size:10.5px;font-weight:500;line-height:1.4}
.ervi-about-web-footer p{margin:0;color:#8A9AA6;font-size:10px;white-space:nowrap}.ervi-about-web-footer em{color:#647785}

@media(max-width:1180px){
  .ervi-record-filter-webline{grid-template-columns:1.25fr 1fr .65fr 1fr;}.ervi-record-web-count{grid-column:1/-1;text-align:right;padding:0}
  .ervi-visitor-search-python{grid-template-columns:minmax(250px,1fr) 100px auto 100px}.ervi-visitor-count{grid-column:1/-1;text-align:right}
  .ervi-about-web-grid{grid-template-columns:1fr}.ervi-about-web-footer{grid-template-columns:1fr 1fr}.ervi-about-web-footer p{grid-column:1/-1}
}
@media(max-width:820px){
  .ervi-record-filter-webline{grid-template-columns:1fr 1fr}.ervi-record-web-count{grid-column:1/-1;text-align:left}
  .ervi-visitor-search-python{grid-template-columns:1fr 105px}.ervi-visitor-today{grid-column:1/-1}.ervi-visitor-search-btn{grid-column:1}.ervi-visitor-count{grid-column:2;text-align:right}
  .ervi-about-web-hero{align-items:flex-start;flex-direction:column}.ervi-about-web-actions{justify-content:flex-start}.ervi-about-feature-grid{grid-template-columns:1fr}
}
@media(max-width:560px){
  .ervi-record-filter-webline{grid-template-columns:1fr}.ervi-record-web-count{grid-column:auto}
  .ervi-visitor-search-python{grid-template-columns:1fr}.ervi-visitor-today,.ervi-visitor-search-btn,.ervi-visitor-count{grid-column:auto}.ervi-visitor-count{text-align:left}
  .ervi-about-web-brand{align-items:flex-start;flex-direction:column}.ervi-about-logo-shell{width:110px;height:88px;flex-basis:88px}.ervi-about-logo-shell img{width:92px;height:70px}
  .ervi-about-web-brand h1{font-size:23px}.ervi-about-web-footer{grid-template-columns:1fr}
}

/* Mantener los filtros en una sola línea en escritorio, incluso en anchos intermedios. */
@media (min-width:761px) and (max-width:1180px){
  .ervi-record-filter-webline{
    grid-template-columns:minmax(185px,1.35fr) minmax(165px,1fr) minmax(110px,.68fr) minmax(215px,1.08fr) auto;
  }
  .ervi-record-web-count{grid-column:auto;text-align:left;padding:0 0 9px 2px}
  .ervi-visitor-search-python{grid-template-columns:minmax(280px,1fr) 100px auto 105px auto}
  .ervi-visitor-count{grid-column:auto;text-align:left}
}

/* ==========================================================
   ERVI-SISTEMA-WEB-V2.0.0 — ajuste exacto solicitado
   Historial / Visitantes / Empleados dentro / Acerca de
   ========================================================== */

/* HISTORIAL: estructura del Python, pero toda en UNA sola línea y con tipografía web gris. */
.ervi-record-filter-exact{
  width:100%;display:flex;align-items:center;gap:8px;flex-wrap:nowrap;
  min-width:0;padding:2px 0 0;font-family:"Segoe UI",Arial,sans-serif;
}
.ervi-record-filter-exact-label{
  flex:0 0 auto;color:var(--subtext);font-size:11.5px;font-weight:500;
  line-height:34px;white-space:nowrap;margin:0;
}
.ervi-record-filter-exact-input,
.ervi-record-filter-exact-select{
  height:34px!important;min-height:34px!important;border:1px solid #C9D7E1!important;
  border-radius:0!important;background:#fff!important;color:#405463!important;
  box-shadow:none!important;padding:6px 9px!important;font-size:11.5px!important;font-weight:400!important;
}
.ervi-record-filter-exact-input.employee{flex:1 1 245px;min-width:145px}
.ervi-record-filter-exact-select.department{flex:1 1 250px;min-width:145px}
.ervi-record-filter-exact-select.type{flex:0 1 125px;min-width:95px}
.ervi-record-filter-exact-date{
  display:flex;align-items:center;gap:6px;flex:0 0 auto;white-space:nowrap;
  color:var(--subtext);font-size:11.5px;font-weight:500;margin-left:3px;
}
.ervi-record-filter-exact-date input{
  width:14px!important;height:14px!important;min-height:0!important;margin:0!important;padding:0!important;
  border-radius:0!important;box-shadow:none!important;
}
.ervi-record-filter-exact-input.date{flex:0 0 132px;width:132px!important}
.ervi-record-filter-exact-count{
  flex:0 0 auto;margin-left:auto;padding-left:8px;color:var(--subtext);
  font-size:11px;font-weight:400;white-space:nowrap;
}

/* VISITANTES: la misma composición horizontal del Python, sin cajas extras ni etiquetas añadidas. */
.ervi-visitor-search-exact{
  width:100%;display:flex;align-items:center;gap:8px;flex-wrap:nowrap;
  font-family:"Segoe UI",Arial,sans-serif;
}
.ervi-visitor-search-exact-input{
  flex:1 1 auto;min-width:260px;height:34px!important;min-height:34px!important;
  border:1px solid #C9D7E1!important;border-radius:0!important;background:#fff!important;
  color:#405463!important;padding:6px 9px!important;font-size:11.5px!important;box-shadow:none!important;
}
.ervi-visitor-search-exact-state{
  flex:0 0 100px;width:100px!important;height:34px!important;min-height:34px!important;
  border:1px solid #C9D7E1!important;border-radius:0!important;background:#fff!important;
  color:#405463!important;padding:5px 7px!important;font-size:11.5px!important;box-shadow:none!important;
}
.ervi-visitor-search-exact-today{
  display:flex;align-items:center;gap:6px;flex:0 0 auto;white-space:nowrap;
  color:var(--subtext);font-size:11.5px;font-weight:400;
}
.ervi-visitor-search-exact-today input{
  width:14px!important;height:14px!important;min-height:0!important;margin:0!important;padding:0!important;
  border-radius:0!important;box-shadow:none!important;
}
.ervi-visitor-search-exact-button{
  flex:0 0 100px;width:100px;height:34px!important;min-height:34px!important;
  border-radius:0!important;font-size:11.5px!important;font-weight:650!important;
}
.ervi-visitor-search-exact-count{
  flex:0 0 auto;min-width:62px;margin-left:4px;color:var(--subtext);
  font-size:11px;font-weight:400;white-space:nowrap;text-align:left;
}

/* EMPLEADOS DENTRO: conservar el orden solicitado. */
.ervi-toolbar .ervi-btn + .ervi-btn{margin-left:0}

/* ACERCA DE: una sola composición limpia, sin múltiples tarjetas ni bloques toscos. */
.ervi-about-clean{
  background:#fff;border:1px solid var(--border);min-height:520px;padding:34px 42px;
  font-family:"Segoe UI",Arial,sans-serif;color:var(--text);
}
.ervi-about-clean-main{
  display:grid;grid-template-columns:minmax(260px,34%) minmax(0,1fr);gap:46px;
  align-items:center;max-width:1200px;margin:0 auto;
}
.ervi-about-clean-logo{display:flex;align-items:center;justify-content:center;min-height:360px}
.ervi-about-clean-logo img{display:block;width:min(330px,92%);max-height:270px;object-fit:contain}
.ervi-about-clean-content{min-width:0;padding:6px 0}
.ervi-about-clean-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:22px;margin-bottom:16px}
.ervi-about-clean-title-row h1{margin:0;color:var(--primary-dark);font-size:28px;font-weight:700;letter-spacing:-.35px;line-height:1.15}
.ervi-about-clean-subtitle{margin:6px 0 0!important;color:var(--subtext)!important;font-size:11.5px!important;line-height:1.4}
.ervi-about-clean-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.ervi-about-clean-actions .ervi-btn{height:34px;min-height:34px;border-radius:0;padding:7px 15px;font-size:11.5px}
.ervi-about-clean-version{
  height:34px;display:flex;align-items:center;justify-content:center;padding:0 13px;
  background:#E8F3FA;color:#4F7188;font-size:11px;font-weight:650;white-space:nowrap;
}
.ervi-about-clean-description{
  margin:0 0 20px;color:var(--subtext);font-size:11.5px;line-height:1.6;max-width:720px;
}
.ervi-about-clean-features{display:grid;grid-template-columns:1fr 1fr;gap:7px 24px;margin:0 0 22px}
.ervi-about-clean-feature{display:grid;grid-template-columns:12px 1fr;gap:5px;align-items:start;min-width:0}
.ervi-about-clean-feature>span{color:#4F7188;font-size:13px;line-height:1.45}
.ervi-about-clean-feature>p{margin:0;color:#455B6B;font-size:11.5px;line-height:1.45}
.ervi-about-clean-meta{border-top:1px solid #E2E9EE;padding-top:14px;margin-top:4px}
.ervi-about-clean-meta p{margin:3px 0;color:#7A8B97;font-size:9.5px;line-height:1.45;font-weight:400}
.ervi-about-clean-copy{margin-top:7px!important;font-size:9px!important}.ervi-about-clean-copy em{color:#607482}

/* Solo cuando realmente no cabe: responder sin deformar escritorio. */
@media(max-width:1050px){
  .ervi-record-filter-exact{flex-wrap:wrap}.ervi-record-filter-exact-count{margin-left:0}
  .ervi-visitor-search-exact{flex-wrap:wrap}.ervi-visitor-search-exact-count{margin-left:0}
  .ervi-about-clean-main{grid-template-columns:240px minmax(0,1fr);gap:28px}
  .ervi-about-clean-logo img{width:220px}.ervi-about-clean-features{grid-template-columns:1fr}
  .ervi-about-clean-title-row{flex-direction:column}.ervi-about-clean-actions{align-self:flex-start}
}
@media(max-width:700px){
  .ervi-record-filter-exact{display:grid;grid-template-columns:1fr}.ervi-record-filter-exact-label{line-height:1.2;margin-top:6px}
  .ervi-record-filter-exact-input.employee,.ervi-record-filter-exact-select.department,.ervi-record-filter-exact-select.type,.ervi-record-filter-exact-input.date{width:100%!important;min-width:0;flex:auto}
  .ervi-visitor-search-exact{display:grid;grid-template-columns:1fr}.ervi-visitor-search-exact-input,.ervi-visitor-search-exact-state,.ervi-visitor-search-exact-button{width:100%!important;min-width:0;flex:auto}
  .ervi-about-clean{padding:26px 20px}.ervi-about-clean-main{grid-template-columns:1fr}.ervi-about-clean-logo{min-height:0}.ervi-about-clean-logo img{width:190px;max-height:150px}.ervi-about-clean-features{grid-template-columns:1fr}
}

/* Nómina multicorporativa: identidad y composición sincronizadas con Python */
.ervi-corp-mini>div{display:flex;flex-direction:column;gap:2px}.ervi-corp-mini small{display:block;color:#7A8B97;font-size:9px;font-weight:650}.ervi-corp-mini span{display:block;color:#415B6D;font-size:11px;font-weight:700}
.ervi-modal-dialog.payroll-dialog{--pay-primary:#0A4787;--pay-secondary:#6BB8E9;--pay-light:#EAF5FC;--pay-total:#CFEAFB;--pay-border:#9ED4F2;--pay-text:#0A4787;border-color:var(--pay-border)}
.payroll-dialog .ervi-payroll-top{background:var(--pay-primary)}
.payroll-dialog .ervi-modal-head{border-bottom-color:var(--pay-border)}
.payroll-dialog .ervi-payroll-brand h2{color:var(--pay-primary);font-size:22px}
.payroll-dialog .ervi-payroll-brand p{color:var(--pay-secondary)}
.payroll-dialog .ervi-form-grid label,.payroll-dialog .ervi-form-section{color:var(--pay-primary)}
.payroll-dialog .ervi-form-grid input{background:var(--pay-light);border-color:var(--pay-border);color:var(--pay-text)}
.payroll-dialog .ervi-att-summary{gap:2px}
.payroll-dialog .ervi-att-summary>div{border-color:var(--pay-border);background:#FCFCFD;border-radius:0;padding:8px 6px}
.payroll-dialog .ervi-att-summary>div:nth-child(even){background:var(--pay-light)}
.payroll-dialog .ervi-att-summary span{color:var(--pay-primary);font-weight:700}
.payroll-dialog .ervi-att-summary b{color:var(--pay-text);font-size:13px}
.payroll-dialog .ervi-payroll-table{border-color:var(--pay-border);border-radius:0}
.payroll-dialog .ervi-payroll-table .head{background:var(--pay-primary)}
.payroll-dialog .ervi-payroll-table label{border-top-color:var(--pay-border);color:var(--pay-text)}
.payroll-dialog .ervi-payroll-table label input{background:var(--pay-light);border-left-color:var(--pay-border);color:var(--pay-text)}
.payroll-dialog .ervi-payroll-table .total{background:var(--pay-total);border-top-color:var(--pay-primary);color:var(--pay-primary)}
.payroll-dialog .ervi-payroll-table .total b{color:var(--pay-primary)}
.payroll-dialog .ervi-signature{color:var(--pay-text)}
.payroll-dialog .ervi-btn-primary{background:var(--pay-primary);border-color:var(--pay-primary)}
.payroll-dialog .ervi-btn-secondary{background:#fff;color:var(--pay-primary);border-color:var(--pay-primary)}
