*{box-sizing:border-box}.login-card{width:100%;max-width:420px;background:#fff;border-radius:22px;padding:36px 32px;text-align:center;box-shadow:0 12px 30px #0000001a;margin:0 auto}body.dark *{box-sizing:border-box}:root{--brand: #22B8CF;--brand-strong: #1EA5BB;--brand-glow: rgba(34, 184, 207, .35);--dark-bg: #1E293B;--dark-card: #0F172A}body{margin:0;font-family:Inter,system-ui,sans-serif;background:#f3f4f6;color:#0f172a}body.dark{background:var(--dark-bg);color:#e5e7eb}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center}body.dark .login-card{background:var(--dark-card);border:1px solid #334155}.subtitle{font-size:14px;color:#64748b;margin-bottom:28px}body.dark .subtitle{color:#94a3b8}.login-page input:not([type=checkbox]),.search-input,input.search{width:100%;padding:14px 16px;border-radius:14px;border:1px solid #e5e7eb;font-size:15px;background:#fff;color:#0f172a}.login-page input:not([type=checkbox]){margin-bottom:14px}input.search{margin-bottom:24px}body.dark .login-page input:not([type=checkbox]),body.dark .search-input,body.dark input.search{background:#1e293b;color:#fff;border-color:#334155}input[type=checkbox]{width:16px;height:16px;accent-color:var(--brand)}button.primary{width:100%;margin-top:12px;padding:14px;border-radius:16px;border:none;font-size:16px;font-weight:700;background:linear-gradient(135deg,var(--brand),var(--brand-strong));color:#fff;cursor:pointer}.app{min-height:100vh;display:flex;flex-direction:column}.header{height:20dvh;min-height:120px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:24px 40px;width:100%;overflow:hidden;background:#fff;border-bottom:1px solid #e5e7eb;flex-shrink:0}@media(max-width:600px){.header{height:auto;min-height:unset;padding:12px 16px;grid-template-columns:auto 1fr auto;gap:8px}.header-left{display:none}.header button{font-size:18px}.header button svg{width:28px;height:28px}.header-right{gap:10px}.header-right button{padding:8px 10px;font-size:14px}.header-right button svg{width:24px;height:24px}}.header>*:nth-child(2){display:flex;justify-content:center;flex-shrink:0}.header span{white-space:nowrap}.header-left{display:flex;justify-content:flex-start}.header-right{display:flex;align-items:center;justify-content:flex-end;gap:24px}.header-left button{border-radius:18px;font-size:62px;gap:10px}.header-right button{display:flex;align-items:center;gap:10px;padding:12px 18px;min-height:44px;border-radius:16px;background:transparent;border:none;font-weight:600;cursor:pointer;transition:all .15s ease;font-size:18px}.header-right button svg{width:42px;height:42px}.header button{background:none;border:none;padding:0;display:inline-flex;align-items:center;gap:8px;font-size:28px;font-weight:500;color:inherit}.header button svg{width:62px;height:62px}body.dark .header{background:var(--dark-bg);border-color:#334155}.nav{display:flex;gap:16px}.nav button{display:flex;align-items:center;gap:8px;padding:10px 18px;border-radius:999px;border:none;background:transparent;font-size:15px;font-weight:600;cursor:pointer;color:inherit;transition:all .15s ease}.nav button:hover,.header-right button:hover,.dark-toggle:hover,.tablet-actions button:hover{transform:translateY(-1px);background:transparent}.nav button:hover *,.header-right button:hover *,.dark-toggle:hover *{color:#22b8cf!important}.header button:hover{color:var(--brand);background:transparent!important;box-shadow:none!important}.header button:hover svg{color:var(--brand)}.dark-toggle{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 16px;border-radius:16px;cursor:pointer;transition:all .15s ease}.tablet-actions button{padding:10px 18px;border-radius:16px;background-color:var(--brand);color:#fff;font-size:20px;font-weight:500;border:none;cursor:pointer;transition:all .15s ease}.tablet-actions button:disabled{background-color:#cbd5e1;color:#64748b;cursor:not-allowed}.tablet-actions button:disabled:hover{background-color:#cbd5e1;color:#64748b}.main{flex:1;padding:16px;overflow-y:auto}.table-actions,.tablet-actions,.page-actions,.page-header,.actions,.button-group{display:flex;gap:12px;flex-wrap:wrap}.employee-header{display:flex;align-items:center;gap:14px}.employee-texts{display:flex;flex-direction:column}.employee-header .tablet-actions{margin-left:auto}.employee-photo{margin-right:10px}.clickable-name{cursor:pointer;font-weight:600;transition:color .15s ease,text-shadow .15s ease}.clickable-name:hover{color:var(--brand);text-shadow:0 0 8px var(--brand-glow)}.nav button,.header-right button,.tablet-actions button,.dark-toggle,.dashboard-card{transition:background-color .18s ease,box-shadow .18s ease,transform .08s ease,filter .12s ease}.nav button:active,.header-right button:active,.tablet-actions button:active,.dark-toggle:active,.dashboard-card:active{transform:translateY(1px) scale(.98);filter:brightness(.92);box-shadow:0 3px 10px #00000026!important}html,body,#root{height:100%}.app-container{width:100%;max-width:100%;margin:0;height:100dvh;display:flex;flex-direction:column;background:var(--bg);overflow:hidden}html,body,#root{width:100%;overflow-x:hidden}.page-content{flex:1;overflow-y:auto;padding:16px}.employee-line{flex-wrap:wrap;display:flex;align-items:center;width:100%}.employees-container{max-width:100%;margin:0 auto}.employees-grid{display:grid;gap:14px}.employee-card{display:flex;align-items:center;gap:16px;padding:20px 18px;border-radius:18px;background:var(--card-bg);border:1px solid var(--border-soft);box-shadow:0 6px 18px #0000000f;cursor:pointer;transition:all .12s ease}.employee-card:hover{transform:translateY(-2px);box-shadow:0 10px 28px #0000001f}.employee-avatar{width:56px;height:56px;border-radius:50%;overflow:hidden;background:#e5e7eb;display:flex;align-items:center;justify-content:center;font-weight:500;font-size:15px;flex-shrink:0}.employee-avatar img{width:100%;height:100%;object-fit:cover}.employee-main{flex:1;display:flex;flex-direction:column;justify-content:center}.employee-status{width:80px;opacity:0;pointer-events:none;font-size:12px;font-weight:500;margin-left:6px}.employee-status.active{background:#dcfce7;color:#166534}.employee-status.inactive{background:#fee2e2;color:#991b1b}.employee-name{flex:1;font-size:26px!important;font-weight:450!important;letter-spacing:-.3px!important;white-space:normal;overflow:hidden;text-overflow:ellipsis}.employee-dni{width:auto;max-width:100%;font-size:20px;opacity:.6;white-space:normal;word-break:break-word;margin-left:20px}.employee-check{padding:10px 16px;border-radius:12px;font-weight:700;font-size:14px;color:#fff;min-width:70px;text-align:center;flex-shrink:0}.employee-check.in{background:#16a34a}.employee-check.out{background:#dc2626}body>div{width:100%;max-width:100%}.turn-saved{background:#22c55e;color:#fff;border-radius:10px;padding:6px;font-size:13px;margin:2px;z-index:1}.turn-saved.deleted{background-color:#999;opacity:.6}.delete-preview{background-color:gray;opacity:.5}.turn-saved.edited{background-color:#fff3cd;border:1px solid #ffc107;color:#856404}.turn-saved.exception{background-color:#ff8c00;color:#fff}.deleted-exception{background-color:#ff8c0026;color:#000;position:relative}.deleted-exception:after{content:"TURNO BORRADO";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:12px;font-weight:700;color:#000;pointer-events:none}.restored{background:#22c55e59}.calendar-scale-wrapper{width:100%;overflow:auto}.employee-back{margin-left:auto}.employee-back button{background:linear-gradient(135deg,#22c1c3,#0ea5e9);color:#fff;border:none;border-radius:14px;padding:8px 14px;font-size:18px;font-weight:500;margin-left:auto;cursor:pointer;transition:all .2s ease}.employee-back button:hover{filter:brightness(.95);transform:translateY(-1px)}.employee-back button:active{transform:translateY(0);filter:brightness(.9)}#root,.app,.app-container,.main,.page-content{width:100%!important;max-width:100%!important;margin:0!important;align-items:stretch!important}@media print{.no-print{display:none!important}}.dashboard-tablet{min-height:calc(100vh - 80px);padding:1.5rem 1rem;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;overflow-x:hidden}.dashboard-title{font-size:24px;font-weight:700;margin-bottom:2rem;text-align:center}.dashboard-grid{width:100%;max-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:48px;padding:0}.dashboard-grid button{all:unset;display:flex;align-items:center;justify-content:center;gap:16px;font-size:28px;font-weight:500;cursor:pointer;transition:color .2s ease}.dashboard-grid button svg{width:32px;height:32px;transition:color .2s ease}.dashboard-grid button span{font-size:28px;font-weight:500}@media(hover:hover){.dashboard-grid button:hover{color:var(--brand)}.dashboard-grid button:hover svg{color:var(--brand)}}.dashboard-footer,.dashboard-tablet footer{margin-top:auto;padding-top:2rem;font-size:12px;opacity:.5}:root{--control-font-size: 1rem;--control-line-height: 1.2;--control-padding-y: .9em;--day-col-width: 130px;--hours-col-width: 90px}.container{width:90%;max-width:1000px;margin:0 auto}.card{background:#fff;border-radius:16px;border:1px solid #e5e7eb}.form-card{position:relative;width:100%;max-width:100%;margin:0 auto;background:#fff;border-radius:12px;box-shadow:0 20px 60px #00000040;z-index:1600}.form-card.vacation-mode .time-input,.form-card.vacation-mode .day-checkbox{opacity:.4;pointer-events:none;cursor:not-allowed}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:9999}.modal{background:#fff;color:#111;padding:20px;border-radius:12px;min-width:300px;max-width:400px;box-shadow:0 10px 30px #0003}.modal-buttons{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}.delete-block{background:#ef4444;color:#fff;border:none;padding:8px 12px;border-radius:6px;cursor:pointer}.delete-block:disabled{opacity:.6;cursor:not-allowed}.calendar-wrapper{margin-top:0;padding:10px;background:#c5e9e9;border-radius:20px;height:100%;width:fit-content;max-width:100%;margin-left:auto;margin-right:auto}.calendar-grid-wrapper{position:relative;background:#fff;border-radius:16px;border:1px solid #e5e7eb;overflow:hidden;width:fit-content;max-width:95%;margin-left:auto;margin-right:auto}.calendar-days-header{background:#fff;display:grid;grid-template-columns:var(--hours-col-width) repeat(7,var(--day-col-width));min-width:calc(var(--hours-col-width) + 7 * var(--day-col-width));height:40px;border-bottom:5px solid #e5e7eb;align-items:center;justify-content:center;font-weight:700;font-size:14px;color:#111827}.calendar-grid{background:#fff;display:grid;flex:1;grid-template-columns:repeat(7,var(--day-col-width));min-width:calc(7 * var(--day-col-width));font-size:14px}.layout-width{max-width:85%;margin-left:auto;margin-right:auto;padding-left:12px;padding-right:12px;box-sizing:border-box}.page-header{display:flex;align-items:center;justify-content:center;gap:14px;text-align:center;margin-bottom:12px}.employee-header{display:flex;align-items:center;gap:16px;margin-bottom:12px}.employee-photo{width:64px;height:64px;border-radius:50%;object-fit:cover;flex-shrink:0}.employee-texts{display:flex;flex-direction:column;justify-content:center;gap:2px}.company-name{font-size:18px;font-weight:700;justify-content:left}.employee-name{font-size:22px;font-weight:600;justify-content:left}.days-selector{display:flex;justify-content:center;gap:22px;margin-bottom:0;padding:14px 0;background:#9ae0db;border-radius:14px 14px 14px 0}.day-checkbox{font-size:20px;font-weight:700;display:flex;align-items:center;gap:6px}.controls-panel{background:#dbf4ef;border-radius:0 0 16px 16px;padding:20px;border:1px solid #e5e7eb;border-top:none;max-width:100%;margin:0 auto;display:flex;flex-direction:column;gap:18px}.controls-dates-panel{background:#f1f5f9;padding:16px;border-radius:12px;display:flex;flex-direction:column;gap:12px}.controls-times{display:grid;grid-template-columns:1fr 1fr;gap:20px}.controls-buttons{display:flex;flex-direction:column;gap:12px}.controls-panel .caption{margin-bottom:4px}.form-card{position:relative;width:720px;max-width:90vw;background:#fff;border-radius:12px;box-shadow:0 20px 60px #00000040;z-index:1600}.form-card:before{content:"";position:fixed;inset:0;background:#00000059;z-index:-1}.calendar-cell{border-left:1px solid #e5e7eb;border-right:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb}.calendar-scroll{margin-left:60px;height:650px;display:flex;align-items:flex-start;overflow-x:hidden;overflow-y:hidden}.calendar-scroll.focused{overflow-y:auto}.calendar-grid-panel{background:#fff;border-radius:16px;border:1px solid #e5e7eb;overflow:hidden}.calendar-grid-rows{display:grid;grid-template-rows:repeat(48,24px)}.calendar-header{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.calendar-header-x{overflow-x:hidden;overflow-y:hidden}.calendar-header-x.focused{overflow-x:auto}.calendar-body{display:flex}.calendar-hours-y{position:absolute;left:0;top:40px;width:60px;height:650px;background:#fff;z-index:2;pointer-events:none;overflow:hidden}.calendar-button{padding:4px 10px;border-radius:8px;border:1px solid #e5e7eb;background:#fff;cursor:pointer}.calendar-select{padding:4px 8px;border-radius:8px;border:1px solid #e5e7eb;background:#fff}.calendar-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px;margin-left:5%}.hour-label{height:48px;text-align:right;padding-right:6px;color:#6b7280;font-size:14px;font-weight:600;background:#fff}.calendar-week-text{font-weight:500;margin-left:5%}.calendar-day{text-align:center;font-weight:700;line-height:40px}.calendar-grid{position:relative}.form-buttons-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;width:100%;margin:16px 0 24px}.form-buttons-row button{width:100%;height:48px;border-radius:14px;font-size:18px;font-weight:500;border:none;cursor:pointer}.add-vacation{background:#f97316;color:#fff}.form-buttons-row button:not(.add-vacation){background:var(--brand);color:#fff}.vacation-block{background-color:#ff8c00;color:#fff;align-items:center;justify-content:center;position:relative;margin:2px;border-radius:6px}.vacation-label{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#ff8c00;color:#fff;font-weight:600;pointer-events:none}.vacation.saved{opacity:1;background:#ff8c00;color:#fff;font-weight:600}.calendar-legend{display:flex;gap:16px;margin-top:12px;padding:8px 4px;font-size:14px;color:#444}.legend-item{display:flex;align-items:center;gap:6px}.legend-color{width:16px;height:16px;border-radius:4px}.legend-color.normal{background-color:#22c55e;margin-left:50px}.legend-color.exception{background-color:#ff8c00}@media print{@page{size:A4 portrait;margin:12mm}.no-print{display:none!important}body{background:#fff!important;font-size:12px}button,select,input,nav,aside,.reports-controls,.reports-toolbar,.report-filters,.report-navigation{display:none!important}.report-main-header{gap:8px}.report-main-header img{height:14px}.report-main-title{font-size:13px}.text-report-grid{display:grid;grid-template-rows:1fr 1fr;gap:6px;height:calc(100vh - 120px)}.report-week{height:calc((100vh - 300px)/2);width:99%;margin:0;box-sizing:border-box}.report-week:nth-of-type(2n){page-break-after:always}.report-week-header{font-size:11px;padding:6px 12px;margin:-1px -1px 6px}.report-day{font-size:12px;padding:3px 0!important}.report-day-title{font-size:13px}.report-row{font-size:12px}.report-cell{min-height:28px!important}.report-badge-in,.report-badge-out{font-size:9px!important;padding:2px 6px!important;min-width:30px!important}.report-time{font-size:11px}.report-legend{position:fixed;bottom:12mm;left:12mm;right:12mm;border-top:1px solid #ddd;padding-top:4px;font-size:8px}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.report-text-container{display:flex;flex-direction:column;gap:10px}.report-week{border:1px solid #dcdcdc;border-radius:10px;background:#fff;padding:16px;break-inside:avoid;page-break-inside:avoid}.report-week-header{background:#12c3c3;color:#fff;font-weight:600;padding:8px 12px;border-radius:6px;margin-bottom:14px;font-size:14px;display:flex;justify-content:space-between;align-items:center}.report-day{padding:10px 0;border-bottom:1px solid #eee}.report-day:last-child{border-bottom:none}.report-day-title{font-weight:600;font-size:14px;margin-bottom:6px}.report-section-title{font-size:12px;font-weight:600;color:#444;margin-bottom:4px}.report-empty{font-size:12px;color:#888}.report-records{margin-top:4px}.report-record{margin-top:3px;display:grid;grid-template-columns:42px 55px auto;align-items:center;column-gap:6px;gap:3px}.report-time{font-size:15px;font-weight:500}.report-badge-in{background:#16a34a;color:#fff;padding:3px 9px;border-radius:6px;font-size:14px;font-weight:600;margin-left:6px;display:inline-flex;align-items:center;justify-content:center;min-width:36px}.report-badge-out{background:#dc2626;color:#fff;padding:3px 9px;border-radius:6px;font-size:14px;font-weight:600;margin-left:6px;display:inline-flex;align-items:center;justify-content:center;min-width:36px}.report-shifts{margin-top:6px;font-size:13px}.report-incidents{margin-top:6px}.report-incident{display:flex;align-items:center;gap:6px;font-size:13px;margin-top:2px}.incident-dot{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#000;margin-left:0}.incident-yellow{background:#ede616}.incident-orange{background:#f97316}.incident-red{background:#dc2626}.report-row{display:grid;grid-template-columns:170px repeat(6,120px);align-items:center;gap:10px;border-bottom:1px solid #f0f0f0;break-inside:avoid}.report-cell{min-height:32px;width:120px;display:flex;align-items:center;justify-content:center}.report-warning{grid-column:2 / span 6;font-size:14px;color:#ee7427}.report-print-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.week-totals{font-size:13px;font-weight:500}.report-main-header{display:flex;align-items:center;gap:6px;margin-top:8px;margin-bottom:2px}.report-main-header-right{display:flex;flex-direction:column}.report-main-title{margin-left:auto;font-size:20px;font-weight:700;line-height:1.2}.report-main-employee{font-size:18px;font-weight:700}.report-main-company{font-size:14px;color:#555}.report-legend{margin-top:14px;font-size:11px;page-break-inside:avoid}.report-badge-percent{color:#fff;padding:3px 9px;border-radius:6px;font-size:15px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;min-width:42px}.report-badge-percent-green{background:#16a34a}.report-badge-percent-yellow{background:#ede616;color:#000}.report-badge-percent-orange{background:#f97316}.report-badge-percent-red{background:#dc2626}.report-print-button{background:none;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:4px}.report-print-button span{font-size:50px;color:#444}.report-print-button:hover span{color:#000}.report-month-navigation{display:flex;align-items:center;gap:10px}.report-month-navigation button{background:#f3f4f6;border:1px solid #ddd;border-radius:6px;padding:6px 10px;cursor:pointer;font-size:14px}.report-month-navigation button:hover{background:#e5e7eb}.report-month-navigation input{border:1px solid #ddd;border-radius:6px;padding:5px 8px;font-size:14px}.report-toolbar{display:flex;align-items:center;justify-content:space-between;margin-top:2px;margin-bottom:6px}.report-nav-button{background:#f5f5f5;border:1px solid #ddd;border-radius:6px;padding:6px 12px;font-size:14px;cursor:pointer}.report-nav-button:hover{background:#e9e9e9}.report-month-picker{border:1px solid #ddd;border-radius:6px;padding:6px 10px;font-size:14px}@media(max-width:600px){.header{height:64px!important;min-height:unset!important;padding:6px 10px!important;grid-template-columns:auto 1fr auto!important;align-items:center}.header img{height:28px!important;max-width:110px!important;object-fit:contain}.header button svg{width:20px!important;height:20px!important}.header-right button{padding:4px 6px!important;font-size:13px!important;min-height:unset!important}.header-left button{font-size:18px!important}.dashboard-grid{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:22px!important;padding:24px 16px!important}.dashboard-grid button{all:unset;display:flex!important;align-items:center;justify-content:center;gap:12px;font-size:20px;padding:12px 8px;cursor:pointer}.dashboard-grid button svg{width:24px;height:24px}.dashboard-grid button:hover{color:#22b8cf}.employee-dni{display:none!important}.employee-name{min-width:0;font-size:60%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-grid-wrapper{transform-origin:top left;width:200%}.container{width:100%}.calendar-scale-wrapper{transform:scale(.6);transform-origin:top left;width:calc(100% / .6)}.calendar-wrapper{width:100%;padding:0 8px;overflow:hidden;max-height:520px}}
