*{box-sizing:border-box}:root{color-scheme:light;--bg:#eef3f2;--surface:#fff;--surface-soft:#f6faf9;--surface-strong:#e4edeb;--text:#17211f;--muted:#61706d;--muted-strong:#3f504c;--line:#dbe4e2;--primary:#117a65;--primary-dark:#0d5d4d;--primary-soft:#dff3ee;--primary-ring:#117a653d;--accent:#246b9c;--warning:#ad6f00;--danger:#b83c3c;--success:#247a3d;--pending:#8a5c10;--radius:8px;--shadow:0 18px 42px #17211f14;--shadow-soft:0 6px 18px #17211f0e;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body{background:linear-gradient(180deg, #f8fbfa 0, var(--bg) 420px), var(--bg);color:var(--text);font-size:16px;line-height:1.5}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.65}a{color:inherit}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.brand-lockup{align-items:center;gap:12px;display:flex}.brand-logo{object-fit:contain;width:min(360px,72vw);height:auto;display:block}.brand-icon{object-fit:contain;border-radius:8px;flex:none;width:42px;height:42px;display:block}.eyebrow{color:var(--primary-dark);letter-spacing:.06em;text-transform:uppercase;margin:0 0 4px;font-size:.75rem;font-weight:700}.muted-line{color:var(--muted);font-size:.84rem;font-weight:500;display:block}.demo-badge{min-height:28px;color:var(--muted-strong);background:#f5fbf9;border:1px solid #d7e6e2;border-radius:999px;align-items:center;padding:4px 11px;font-size:.8rem;font-weight:600;display:inline-flex}.button{border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:10px 14px;font-weight:650;text-decoration:none;transition:background .16s,border-color .16s,color .16s,box-shadow .16s,transform .16s;display:inline-flex}.button:hover{transform:translateY(-1px)}.button:active{transform:translateY(0)}.button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--primary-ring);outline-offset:2px}.button-primary{background:var(--primary);color:#fff;box-shadow:0 10px 22px #117a6538}.button-primary:hover{background:var(--primary-dark)}.button-secondary{background:var(--surface);color:var(--text);border-color:#cfdcda}.button-secondary:hover{box-shadow:var(--shadow-soft);background:#f8fbfa;border-color:#b9c9c6}.button-ghost{border-color:var(--line);color:var(--muted);background:0 0}.button-ghost:hover{background:var(--surface-soft);color:var(--text)}.button-danger{color:var(--danger);background:#fff4f4;border-color:#f1c4c4}.button-danger:hover{background:#ffe8e8;border-color:#e6a4a4}.button-tertiary{color:var(--muted);box-shadow:none;background:0 0;border-color:#0000}.button-tertiary:hover{background:var(--surface-soft);border-color:var(--line);color:var(--text)}.button-small{min-height:34px;padding:7px 10px;font-size:.85rem}.reset-demo-button{color:#778682}.login-page{grid-template-columns:minmax(0,1fr) minmax(340px,430px);align-items:center;gap:36px;min-height:100vh;padding:56px;display:grid}.login-brand,.login-panel{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:8px}.login-brand{background:linear-gradient(#ffffffdb,#fffffff5),linear-gradient(135deg,#dff3ee,#f5f7f8 55%,#e7eef3);align-content:center;gap:24px;min-height:520px;padding:48px;display:grid}.login-brand h1,.form-heading h2,.section-title h1,.section-title h2{letter-spacing:0;margin:0}.login-brand h1{font-size:clamp(2.4rem,5vw,4.8rem);line-height:1}.login-subtitle{max-width:680px;color:var(--muted);margin:0;font-size:1.35rem}.demo-warning{max-width:760px;color:var(--pending);background:#fffaf0;border:1px solid #ead59b;border-radius:8px;padding:12px 14px;font-weight:700}.login-snapshot{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:760px;display:grid}.login-snapshot div,.metric-card,.panel,.stat-row,.day-detail,.empty-state{background:var(--surface);border:1px solid var(--line);border-radius:8px}.login-snapshot div{padding:14px}.demo-try{border:1px solid var(--line);background:#ffffffd1;border-radius:8px;max-width:760px;padding:18px}.demo-try h2{margin:0 0 10px;font-size:1.05rem}.demo-feature-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.demo-feature-card{background:linear-gradient(#fff,#f8fbfa),#fff;border:1px solid #dce7e4;border-radius:8px;align-items:flex-start;gap:12px;min-width:0;padding:14px;display:flex;box-shadow:0 10px 26px #0f1f1c0f}.demo-feature-icon{width:34px;height:34px;color:var(--primary-dark);background:#e8f6f1;border-radius:8px;flex:0 0 34px;justify-content:center;align-items:center;font-size:1rem;font-weight:700;display:inline-flex}.demo-feature-card strong{color:var(--text);font-size:.96rem;font-weight:700;line-height:1.25;display:block}.demo-feature-card p{color:var(--muted);margin:4px 0 0;font-size:.88rem;line-height:1.4}.login-snapshot span,.field-label,.meta-label{color:var(--muted);font-size:.8rem;font-weight:600;display:block}.login-panel{gap:18px;padding:28px;display:grid}.login-form,.form-grid,.stack{gap:14px;display:grid}.login-form label,.field{color:var(--muted);gap:6px;font-size:.9rem;font-weight:600;display:grid}.login-form input,.field input,.field select,.field textarea{border:1px solid var(--line);width:100%;color:var(--text);background:#fff;border-radius:8px;padding:11px 12px}.field textarea{resize:vertical;min-height:86px}.form-error{color:var(--danger);margin:0;font-weight:700}.quick-login,.profile-login,.profile-grid{gap:10px;display:grid}.profile-grid{grid-template-columns:1fr}.profile-card{border:1px solid var(--line);width:100%;min-height:76px;color:var(--text);text-align:left;background:#fff;border-radius:8px;gap:4px;padding:14px;transition:background .16s,border-color .16s,box-shadow .16s,transform .16s;display:grid}.profile-card:hover{box-shadow:var(--shadow-soft);background:#f8fbfa;border-color:#b9c9c6;transform:translateY(-1px)}.profile-card span{color:var(--primary-dark);font-size:.78rem;font-weight:650}.profile-card strong{font-size:1rem;font-weight:720}.manual-login{border:1px solid var(--line);background:#fff;border-radius:8px;padding:12px}.manual-login summary{cursor:pointer;color:var(--muted-strong);font-weight:650}.manual-login .login-form{margin-top:14px}.trial-users,.feedback-box{border:1px solid var(--line);background:var(--surface-soft);border-radius:8px;gap:12px;padding:16px;display:grid}.trial-users h2,.feedback-box h2{margin:0;font-size:1rem}.trial-user-list{gap:8px;display:grid}.trial-user-list div{border:1px solid var(--line);background:#fff;border-radius:8px;gap:2px;padding:10px;display:grid}.trial-user-list span{color:var(--muted);text-transform:uppercase;font-size:.78rem;font-weight:600}.trial-user-list strong{overflow-wrap:anywhere;font-size:.9rem}.feedback-box{background:#fff}.feedback-box p{color:var(--muted);margin:0;font-size:.92rem}.feedback-box .button{width:100%}.demo-notice,.helper-text{color:var(--muted);margin:0;font-size:.92rem}.app-shell{grid-template-rows:auto minmax(0,1fr);grid-template-columns:248px minmax(0,1fr);min-height:100vh;display:grid}.app-header{z-index:20;border-bottom:1px solid var(--line);backdrop-filter:blur(14px);background:#fffffff0;grid-column:1/-1;justify-content:space-between;align-items:center;gap:16px;min-height:64px;padding:10px 22px;display:flex;position:sticky;top:0;box-shadow:0 1px #ffffffb3}.header-left,.header-actions,.user-chip,.tab-actions,.table-actions{align-items:center;gap:10px;display:flex}.company-chip,.user-chip{border:1px solid var(--line);background:#fff;border-radius:8px;padding:7px 10px}.company-chip strong,.user-chip strong{line-height:1.15;display:block}.company-chip span,.user-chip span{color:var(--muted);font-size:.78rem;font-weight:500;display:block}.sidebar{border-right:1px solid var(--line);background:linear-gradient(#fff 0,#f8fbfa 100%);height:calc(100vh - 64px);padding:16px 14px;position:sticky;top:64px;overflow-y:auto}.sidebar-nav,.mobile-nav{gap:8px;display:grid}.nav-button{width:100%;color:var(--muted);text-align:left;box-shadow:none;background:0 0;border:1px solid #0000;justify-content:flex-start;padding:9px 10px}.nav-button:hover,.nav-button[aria-current=page]{color:var(--primary-dark);box-shadow:none;background:#f0fbf7;border-color:#c4e4dc}.nav-button span:last-child{gap:1px;min-width:0;display:grid}.nav-button strong{color:inherit;font-size:.92rem;font-weight:650}.nav-button small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.76rem;font-weight:500;overflow:hidden}.nav-button[aria-current=page] small{color:var(--primary-dark)}.nav-dot{background:#b9c9c6;border-radius:999px;flex:none;width:7px;height:7px}.nav-button[aria-current=page] .nav-dot{background:var(--primary);box-shadow:0 0 0 4px #117a651f}.nav-context{border:1px solid var(--line);background:#f8fbfa;border-radius:8px;gap:2px;margin-bottom:14px;padding:11px;display:grid}.nav-context span,.nav-context small{color:var(--muted);font-size:.78rem;font-weight:500}.nav-context strong{font-size:1.05rem;font-weight:700}.nav-group{gap:6px;margin-bottom:14px;display:grid}.nav-group:last-child{margin-bottom:0}.nav-group-label{color:var(--muted);text-transform:uppercase;padding:0 10px;font-size:.7rem;font-weight:700}.mobile-nav{display:none}.app-main{min-width:0;padding:24px}.section-title{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:18px;display:flex}.section-title p{color:var(--muted);margin:4px 0 0}.section-title h1{font-size:clamp(1.6rem,3vw,2.15rem);font-weight:760;line-height:1.12}.demo-banner{max-width:380px;box-shadow:none;background:#f8fbfa;border:1px solid #d7e6e2;border-radius:8px;gap:2px;padding:9px 11px;display:grid}.demo-banner strong{color:var(--muted-strong);font-size:.82rem;font-weight:700}.demo-banner span{color:var(--muted);font-size:.8rem}.grid{gap:16px;display:grid}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.top-gap{margin-top:16px}.top-gap-small{margin-top:8px}.metric-card{box-shadow:var(--shadow-soft);padding:16px}.metric-card span{color:var(--muted);font-size:.82rem;font-weight:500;display:block}.metric-card strong{margin-top:5px;font-size:1.65rem;font-weight:760;line-height:1.1;display:block}.metric-card small{color:var(--muted);margin-top:4px;font-size:.8rem;font-weight:500;display:block}.panel{box-shadow:var(--shadow-soft);padding:18px}.panel h2,.panel h3{margin:0 0 12px;font-size:1.05rem;font-weight:720}.summary-list{gap:10px;display:grid}.summary-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:10px 0;display:flex}.summary-row:last-child{border-bottom:0}.summary-row span{color:var(--muted);font-weight:500}.summary-row strong{text-align:right;overflow-wrap:anywhere;font-weight:650}.stat-row{justify-content:space-between;align-items:center;gap:14px;margin-bottom:10px;padding:12px;display:flex}.stat-row:last-child{margin-bottom:0}.stat-row span{color:var(--muted);font-size:.88rem;display:block}.status-pill{background:var(--surface-strong);min-height:26px;color:var(--muted);text-transform:none;border-radius:999px;align-items:center;padding:4px 9px;font-size:.76rem;font-weight:650;display:inline-flex}.status-correcto,.status-aprobada,.status-revisada,.status-trabajando,.status-activo{color:var(--success);background:#e2f4e7}.status-incidencia,.status-denegada{color:var(--danger);background:#fff1f1}.status-pendiente,.status-pausa,.status-pending{color:var(--pending);background:#fff6dc}.status-festivo,.status-vacaciones{color:var(--accent);background:#e6f0f8}.status-sin-fichaje,.status-fin-de-semana,.status-inactivo{color:var(--muted);background:#eef2f2}.status-approved{color:var(--accent);background:#e6f0f8}.status-mixed{color:var(--primary-dark);background:#dff3ee}.status-free{color:var(--muted);background:#eef2f2}.quick-punch-card{background:linear-gradient(135deg,#fff,#f1fbf7),#fff;border-color:#c4e4dc;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.quick-punch-card strong{font-size:1.45rem;line-height:1.15;display:block}.quick-punch-card .button{min-width:210px}.punch-layout{grid-template-columns:minmax(0,1.18fr) minmax(300px,.82fr);align-items:start}.punch-panel{background:linear-gradient(145deg,#dff3eec7,#fffffffa 52%,#f6faf9),#fff;border-color:#c4e4dc;gap:14px;display:grid}.punch-status-row{grid-template-columns:minmax(180px,.36fr) minmax(0,1fr);align-items:stretch;gap:12px;display:grid}.punch-status-row strong{font-size:1.65rem;font-weight:760;line-height:1.1;display:block}.punch-state-card{background:#ffffffe0;border:1px solid #c4e4dc;border-radius:8px;align-content:center;min-width:0;padding:16px;display:grid}.clock-card{text-align:left;background:linear-gradient(135deg,#fff,#eef8f5),#fff;border:1px solid #c4e4dc;border-radius:8px;flex:auto;min-width:0;padding:16px 18px;display:grid}.clock-card span{color:var(--muted);text-transform:uppercase;font-size:.76rem;font-weight:600}.clock-card strong{letter-spacing:0;font-variant-numeric:tabular-nums;margin-top:4px;font-size:3.8rem;font-weight:780;line-height:.95}.punch-button{text-align:center;border-radius:8px;align-content:center;gap:6px;width:100%;min-height:124px;font-size:1.5rem;display:grid}.punch-actions{grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);align-items:stretch;gap:12px;display:grid}.checkout-action{align-content:start;gap:8px;display:grid}.punch-actions .punch-button{height:100%}.punch-actions .punch-button:disabled{color:var(--muted);box-shadow:none;background:#eef3f2;border-color:#d4dfdc;transform:none}.punch-button span{font-weight:760}.punch-button-secondary{color:var(--text);box-shadow:var(--shadow-soft);background:#fff;border-color:#b8cbc7}.punch-button-secondary:disabled{background:#f3f7f6;border-style:dashed}.punch-button-secondary:hover{background:#f8fbfa;border-color:#9eb8b2}.checkout-help{color:var(--pending);background:#fffaf0;border:1px solid #ead59b;border-radius:8px;margin:0;padding:9px 10px;font-size:.86rem;font-weight:650}.punch-button small{color:#ffffffd1;font-size:.88rem;font-weight:600}.punch-button-secondary small{color:var(--muted)}.punch-kpis{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.punch-kpis div,.day-detail-grid div{border:1px solid var(--line);background:#ffffffe6;border-radius:8px;padding:12px}.punch-kpis div{min-width:0;min-height:76px}.punch-kpis span,.day-detail-grid span{color:var(--muted);text-transform:none;font-size:.75rem;font-weight:600;display:block}.punch-kpis strong,.day-detail-grid strong{font-variant-numeric:tabular-nums;margin-top:3px;font-size:1.08rem;line-height:1.2;display:block}.punch-kpis small{color:var(--danger);background:#fff4f4;border-radius:999px;margin-top:8px;padding:4px 8px;font-size:.74rem;font-weight:700;display:inline-flex}.punch-kpi-alert{background:#fff7f7!important;border-color:#f1c4c4!important}.punch-kpi-alert strong{color:var(--danger)}.quick-actions-panel{align-content:start;gap:12px;display:grid}.quick-actions-panel .tab-actions,.quick-admin-actions,.row-actions{flex-wrap:wrap;gap:10px;display:flex}.quick-actions-panel .tab-actions .button{flex:132px}.adjust-hours-button{color:var(--muted-strong);background:#fff;border-style:dashed;flex-basis:100%!important}.quick-admin-actions .button{flex:170px}.row-actions .button{width:auto}.break-summary{gap:10px;margin-top:6px;display:grid}.break-list{gap:8px;display:grid}.break-item{border:1px solid var(--line);border-left:4px solid var(--primary);background:#fff;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;padding:10px;display:grid}.break-item span,.break-item small{color:var(--muted);font-size:.78rem;font-weight:500}.break-item strong{text-align:right;font-variant-numeric:tabular-nums}.break-item small{grid-column:1/-1}.break-quick{border-left-color:var(--accent)}.break-meal{border-left-color:var(--pending)}.big-action{width:100%;min-height:86px;font-size:1.18rem}.manual-box{border-top:1px solid var(--line);margin-top:14px;padding-top:14px}.manual-editor{border:1px solid var(--line);background:#fff;border-radius:8px;gap:14px;padding:14px;display:grid;overflow:hidden}.manual-editor-head,.manual-actions{justify-content:space-between;align-items:center;gap:12px;display:flex}.manual-editor-head strong{margin-top:2px;font-size:1.05rem;display:block}.manual-editor-grid,.manual-break-field{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.manual-editor .field,.manual-break-field{min-width:0}.manual-editor input,.manual-editor textarea{min-height:44px}.manual-editor textarea{min-height:78px}.manual-check{color:var(--muted-strong);align-items:center;gap:8px;font-size:.9rem;font-weight:600;display:inline-flex}.manual-breaks{gap:12px;display:grid}.manual-break-field{background:#f8fbfa;border:1px solid #dce7e4;border-radius:8px;min-width:0;margin:0;padding:12px}.manual-break-field legend{color:var(--primary-dark);padding:0 6px;font-size:.84rem;font-weight:700}.manual-empty,.manual-message{border:1px solid var(--line);background:var(--surface-soft);color:var(--muted-strong);border-radius:8px;padding:10px 12px;font-size:.9rem}.manual-message{color:var(--pending);background:#fffaf0;border-color:#ead59b;font-weight:650}.compact-form{grid-template-columns:minmax(180px,260px) auto;align-items:end}.admin-filters{grid-template-columns:repeat(4,minmax(160px,1fr));align-items:end}.admin-filters .table-actions{grid-column:1/-1}.record-detail{border:1px solid var(--line);background:#fff;border-radius:8px;margin-bottom:10px;overflow:hidden;box-shadow:0 4px 14px #17211f0a}.record-detail summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-weight:650;display:flex}.record-detail summary span{gap:2px;display:grid}.record-detail summary small{color:var(--muted);font-size:.82rem;font-weight:700}.record-detail .day-detail{border-bottom:0;border-left:0;border-right:0;border-radius:0}.vacation-select{border:1px solid var(--line);text-align:left;background:#fff;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;width:100%;margin-bottom:10px;padding:12px;display:flex}.vacation-select:hover,.vacation-select.is-active{border-color:var(--primary);background:var(--primary-soft)}.vacation-select span span,.vacation-select>span{color:var(--muted);font-size:.9rem;display:grid}.vacation-select strong{color:var(--text)}.vacation-balance{background:linear-gradient(135deg,#fff,#f4fbf8),#fff;border-color:#c4e4dc;gap:16px;display:grid}.vacation-balance>div:first-child strong{font-size:1.65rem;line-height:1.15;display:block}.vacation-bar{background:#e9f0ee;border-radius:999px;height:12px;display:flex;position:relative;overflow:hidden}.vacation-bar span{height:100%;display:block}.bar-used{background:var(--accent)}.bar-pending{background:var(--pending)}.vacation-balance-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.vacation-filter-card{border:1px solid var(--line);min-width:0;color:var(--text);text-align:left;background:#ffffffeb;border-left-width:5px;border-radius:8px;gap:6px;padding:13px;transition:background .16s,border-color .16s,box-shadow .16s,transform .16s;display:grid}.vacation-filter-card:hover,.vacation-filter-card.is-active{border-color:var(--primary);box-shadow:var(--shadow-soft);background:#f0fbf7;transform:translateY(-1px)}.vacation-filter-card span{color:var(--muted);font-size:.78rem;font-weight:600}.vacation-filter-card strong{font-size:1.08rem;line-height:1.2}.employee-vacation-layout{align-items:start}.vacation-request-panel,.vacation-requests-panel{align-content:start;gap:14px;display:grid}.section-head-inline{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.section-head-inline h2{margin:0}.vacation-list{gap:10px;display:grid}.vacation-card{border:1px solid var(--line);background:#fff;border-left-width:5px;border-radius:8px;justify-content:space-between;align-items:center;gap:14px;margin-bottom:10px;padding:13px;display:flex;box-shadow:0 4px 14px #17211f0a}.vacation-card-main{gap:3px;display:grid}.vacation-card-main>span:last-child{color:var(--muted);font-size:.88rem}.vacation-preview{background:var(--surface-soft);border:1px solid #d6e5e1;border-radius:8px;padding:14px}.vacation-preview h3{margin:0;font-size:1rem}.employee-vacation-preview-wrap{grid-column:1/-1}.employee-vacation-preview{gap:12px;padding:16px;display:grid}.vacation-week-nav{border:1px solid var(--line);background:#fff;border-radius:8px;grid-template-columns:auto minmax(150px,1fr) auto;align-items:center;gap:10px;padding:10px;display:grid}.vacation-week-nav strong{color:var(--ink);text-align:center;font-size:1rem;font-weight:700}.vacation-week-nav .button:disabled{opacity:.45;cursor:not-allowed}.employee-vacation-preview .vacation-matrix-wrap{box-shadow:none;border:1px solid #ccd9d6;border-radius:8px;overflow-x:visible}.employee-vacation-preview .vacation-matrix{table-layout:fixed;width:100%;min-width:0}.employee-vacation-preview .vacation-matrix th,.employee-vacation-preview .vacation-matrix td{white-space:normal;min-width:0;padding:9px 7px}.employee-vacation-preview .vacation-matrix thead th span{color:var(--muted);text-transform:capitalize;margin-top:2px;font-size:.72rem;font-weight:500;display:block}.employee-vacation-preview .vacation-matrix .sticky-col{width:24%;min-width:150px;max-width:190px}.employee-comparison-cell{font-size:.78rem;font-weight:650}.employee-vacation-preview .vacation-matrix th.is-weekend,.employee-vacation-preview .comparison-cell.is-weekend.cell-free{background:#f3f5f4}.vacation-week-cards{display:none}.vacation-day-card{border:1px solid var(--line);background:#fff;border-radius:8px;overflow:hidden}.vacation-day-card.is-weekend{background:#fafafa}.vacation-day-card-head{border-bottom:1px solid var(--line);background:#f7faf9;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}.vacation-day-card-head strong{font-size:1rem}.vacation-day-card-head span{color:var(--muted);text-transform:capitalize;font-size:.82rem;font-weight:600}.vacation-day-card-list{display:grid}.vacation-day-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;display:grid}.vacation-day-row:last-child{border-bottom:0}.vacation-day-row>span{min-width:0;color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;overflow:hidden}.employee-day-state{white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;min-height:24px;padding:4px 9px;font-size:.76rem;font-weight:650;display:inline-flex}.overlap-list{gap:8px;margin-top:10px;display:grid}.overlap-list div{border:1px solid var(--line);background:#fff;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:10px;display:flex}.overlap-list span{color:var(--muted);font-size:.86rem}.status-border-aprobada{border-left-color:var(--success)}.status-border-pendiente{border-left-color:var(--pending)}.status-border-denegada{border-left-color:var(--danger)}.vacation-admin-summary{grid-template-columns:minmax(0,1.3fr) repeat(2,minmax(150px,.85fr));gap:12px;display:grid}.vacation-admin-summary>div,.conflict-meter{border:1px solid var(--line);background:#fff;border-radius:8px;padding:13px}.vacation-admin-summary p{color:var(--muted);margin:3px 0 8px}.conflict-meter strong{font-size:2rem;line-height:1;display:block}.conflict-meter span{color:var(--muted);margin-top:5px;font-size:.82rem;font-weight:600;display:block}.conflict-meter.has-conflict{color:var(--danger);background:#fff7f7;border-color:#f0c1c1}.conflict-meter.has-warning{color:var(--pending);background:#fffaf0;border-color:#ead59b}.muted-cell{color:var(--muted);font-weight:600}.demo-try-panel{background:linear-gradient(135deg,#fff,#f5fbfa),#fff;border-color:#c4e4dc;gap:16px;margin-bottom:16px;display:grid}.demo-try-panel h2{margin:2px 0 4px}.demo-try-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.demo-try-grid div{border:1px solid var(--line);background:#fff;border-radius:8px;padding:12px}.demo-try-grid strong,.demo-try-grid span{display:block}.demo-try-grid span{color:var(--muted);margin-top:4px;font-size:.88rem}.comparison-legend{flex-wrap:wrap;gap:8px;display:flex}.comparison-legend span{border:1px solid var(--line);color:var(--muted-strong);background:#fff;border-radius:999px;align-items:center;gap:7px;padding:6px 10px;font-size:.82rem;font-weight:650;display:inline-flex}.comparison-legend i{border-radius:4px;width:14px;height:14px;display:inline-block}.vacation-matrix-wrap{-webkit-overflow-scrolling:touch;border-color:#ccd9d6;max-width:100%;overflow-x:auto;box-shadow:inset -16px 0 18px -20px #17211f80}.vacation-matrix{border-collapse:separate;border-spacing:0;min-width:max-content}.vacation-matrix th,.vacation-matrix td{text-align:center;white-space:nowrap;border-right:1px solid var(--line);min-width:96px;padding:10px}.vacation-matrix thead th{z-index:2;position:sticky;top:0}.vacation-matrix .sticky-col{z-index:3;text-align:left;white-space:normal;min-width:210px;max-width:240px;box-shadow:1px 0 0 var(--line);background:#f7faf9;position:sticky;left:0}.vacation-matrix .sticky-col span{color:var(--muted);font-size:.78rem;font-weight:500;display:block}.comparison-cell{border-radius:0;font-size:.82rem;font-weight:650}.vacation-matrix tbody tr:hover th,.vacation-matrix tbody tr:hover td{filter:brightness(.985)}.cell-actual{color:var(--primary-dark);background:#dff3ee}.cell-approved{color:var(--accent);background:#e1f1ff}.cell-pending{color:var(--pending);background:#fff3cf}.cell-free{color:var(--muted);background:#f6f8f8}.team-legend-approved{background:#e1f1ff}.team-legend-pending{background:#fff3cf}.team-legend-mixed{background:#dff3ee}.team-legend-free{background:#f6f8f8}.team-calendar-controls{grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) auto;align-items:end}.team-calendar-panel{gap:14px;display:grid}.team-calendar-meta{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.team-calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;display:grid}.team-calendar-day{border:1px solid var(--line);text-align:left;background:#fff;border-left:4px solid #c7d1cf;border-radius:8px;align-content:start;gap:8px;min-height:118px;padding:9px;display:grid;box-shadow:0 3px 10px #17211f08}.team-calendar-day:hover,.team-calendar-day.is-selected{border-color:var(--primary);box-shadow:0 0 0 3px #117a651f}.team-calendar-day.is-muted{opacity:.38}.team-calendar-day>strong{font-size:.92rem}.team-day-approved{border-left-color:var(--accent);background:#f3f8fc}.team-day-pending{border-left-color:var(--pending);background:#fffaf0}.team-day-mixed{border-left-color:var(--primary);background:#f0fbf7}.team-day-names{gap:4px;min-width:0;display:grid}.team-day-names span{color:var(--muted-strong);text-overflow:ellipsis;white-space:nowrap;background:#ffffffc7;border-radius:6px;padding:3px 5px;font-size:.72rem;font-weight:700;overflow:hidden}.team-day-names .more-count{color:var(--primary-dark)}.team-day-detail{border:1px solid var(--line);background:linear-gradient(#fff,#f8fbfa),#fff;border-radius:8px;padding:14px}.team-day-detail h4{margin:0 0 8px;font-size:.95rem}.team-vacation-list{gap:8px;display:grid}.team-vacation-list div{border:1px solid var(--line);background:#fff;border-radius:8px;gap:2px;padding:10px;display:grid}.team-vacation-list span{color:var(--muted);font-size:.84rem}.team-planning-wrap{margin-top:14px}.team-planning-table th:not(.sticky-col){text-align:center;min-width:76px;padding:8px}.team-planning-table th small{color:var(--muted);text-transform:capitalize;margin-top:2px;font-size:.68rem;font-weight:650;display:block}.planning-cell{text-align:center;min-width:76px;height:42px;padding:8px;font-size:.78rem;font-weight:650}.team-planning-table .is-weekend{background:#f1f5f4}.planning-approved{color:var(--accent);background:#e1f1ff}.planning-pending{color:var(--pending);background:#fff3cf}.planning-mixed{color:var(--primary-dark);background:#dff3ee}.planning-free{color:var(--muted)}.history-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px;display:grid}.calendar-summary{margin:0 0 14px}.report-overview{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px;display:grid}.panel-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px;display:flex}.reports-grid{gap:14px;display:grid}.report-card{border:1px solid var(--line);background:#fff;border-radius:8px;padding:16px;box-shadow:0 4px 14px #17211f0a}.report-card-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.report-card h3{margin:0;font-size:1rem}.report-card p{color:var(--muted);margin:3px 0 0;font-size:.88rem}.report-table-wrap table,.report-table{min-width:640px}.report-table th,.report-table td{padding:10px 12px;font-size:.88rem}.report-schedule-form{grid-template-columns:repeat(3,minmax(180px,1fr));align-items:end}.report-schedule-form .button{min-height:45px}.export-help{background:var(--surface-soft);border:1px solid #d6e5e1;border-radius:8px;margin-bottom:16px;padding:11px 12px}.table-wrap{border:1px solid var(--line);background:#fff;border-radius:8px;overflow-x:auto;box-shadow:0 3px 12px #17211f09}table{border-collapse:collapse;width:100%;min-width:680px}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:11px 13px;font-size:.92rem;line-height:1.35}th{color:var(--muted);text-transform:none;background:#f7faf9;font-size:.76rem;font-weight:650}tbody tr:hover td{background:#fbfdfc}tr:last-child td{border-bottom:0}.calendar-toolbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.calendar-toolbar h2{text-align:center;text-transform:capitalize;margin:0}.calendar-panel{background:#fff}.status-legend{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.status-legend span{border:1px solid var(--line);color:var(--muted-strong);background:#fff;border-radius:999px;align-items:center;gap:6px;padding:5px 9px;font-size:.78rem;font-weight:600;display:inline-flex}.legend-dot{border-radius:999px;width:9px;height:9px}.legend-dot.status-correcto,.legend-dot.status-aprobada,.legend-dot.status-revisada,.legend-dot.status-trabajando{background:var(--success)}.legend-dot.status-incidencia,.legend-dot.status-denegada{background:var(--danger)}.legend-dot.status-pendiente,.legend-dot.status-pausa{background:var(--pending)}.legend-dot.status-festivo,.legend-dot.status-vacaciones{background:var(--accent)}.legend-dot.status-sin-fichaje,.legend-dot.status-fin-de-semana{background:#9caaa7}.calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;display:grid}.calendar-head,.calendar-day{border-radius:8px;min-height:42px;padding:8px}.calendar-head{color:var(--muted);text-transform:uppercase;place-items:center;font-size:.8rem;font-weight:650;display:grid}.calendar-day{border:1px solid var(--line);cursor:pointer;text-align:left;background:#fff;align-content:space-between;min-width:0;display:grid;box-shadow:0 3px 10px #17211f08}.calendar-day:hover,.calendar-day.is-selected{border-color:var(--primary);box-shadow:0 0 0 3px #117a651f}.calendar-day.is-muted{opacity:.35}.calendar-day strong{font-size:.9rem}.calendar-day span{text-overflow:ellipsis;white-space:nowrap;font-size:.68rem;font-weight:600;overflow:hidden}.calendar-day.status-correcto{border-left:4px solid var(--success)}.calendar-day.status-incidencia{border-left:4px solid var(--danger);background:#fff8f8}.calendar-day.status-pendiente{border-left:4px solid var(--pending);background:#fffaf0}.calendar-day.status-festivo,.calendar-day.status-vacaciones{border-left:4px solid var(--accent);background:#f3f8fc}.calendar-day.status-sin-fichaje,.calendar-day.status-fin-de-semana{border-left:4px solid #c7d1cf}.day-detail,.empty-state{padding:14px}.empty-state{color:var(--muted);gap:2px;display:grid}.empty-state strong{color:var(--text)}.day-detail{border:1px solid var(--line);background:linear-gradient(#fff,#f8fbfa),#fff;border-radius:8px}.day-detail-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.day-detail h3{margin:2px 0 0;font-size:1.25rem}.day-detail-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.day-detail-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;display:flex}.day-detail-actions .button{min-height:42px}.calendar-day-note{color:var(--muted-strong);background:#f8fbfa;border:1px solid #dce7e4;border-radius:8px;flex:100%;margin:0;padding:9px 10px;font-size:.88rem}.calendar-manual-editor{background:#fbfdfc;margin-top:12px}.day-detail .empty-state{background:#fff;border:1px dashed #cddbd7;border-radius:8px}.day-detail-grid strong{overflow-wrap:anywhere}.toast{z-index:40;max-width:min(420px,100vw - 36px);color:var(--primary-dark);box-shadow:var(--shadow);background:#f0fbf7;border:1px solid #b8d9cf;border-radius:8px;padding:12px 14px;font-weight:650;position:fixed;bottom:18px;right:18px}.hidden{display:none!important}@media (width<=980px){.login-page{grid-template-columns:1fr;padding:24px}.login-brand{min-height:auto;padding:30px}.login-snapshot,.grid-3,.grid-4,.demo-try-grid,.report-overview{grid-template-columns:1fr}.app-shell{padding-bottom:74px;display:block}.app-header{flex-wrap:nowrap;min-height:58px;padding:8px 14px;position:sticky}.header-left,.header-actions{justify-content:space-between}.company-chip,.sidebar{display:none}.app-main{padding:18px}.mobile-nav{z-index:30;border-top:1px solid var(--line);backdrop-filter:blur(14px);background:#fffffff5;gap:8px;padding:8px 10px;display:flex;position:fixed;bottom:0;left:0;right:0;overflow-x:auto}.mobile-nav .nav-button{border-color:var(--line);text-align:center;background:#fff;justify-content:center;width:auto;min-width:112px;padding:8px 10px}.mobile-nav .nav-button[aria-current=page]{background:var(--primary);border-color:var(--primary);color:#fff}.grid-2{grid-template-columns:1fr}.section-title{display:grid}.demo-banner{max-width:none}.tab-actions{flex-wrap:wrap}.compact-form,.admin-filters,.team-calendar-controls,.punch-layout,.vacation-admin-summary{grid-template-columns:1fr}.quick-punch-card{flex-direction:column;align-items:stretch}.quick-punch-card .button{min-width:0}.punch-kpis,.day-detail-grid,.vacation-balance-grid,.history-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.report-schedule-form,.team-calendar-meta{grid-template-columns:1fr}.vacation-matrix .sticky-col{min-width:176px}}@media (width<=768px){body{font-size:15px}.app-main{padding:14px}.section-title{margin-bottom:14px}.section-title h1{font-size:1.55rem}.section-title .demo-banner{display:none}.panel,.metric-card{padding:14px}table{min-width:620px}.report-table-wrap table,.report-table{min-width:640px}.status-pill{min-height:24px;font-size:.74rem}}@media (width<=620px){.login-page{padding:14px}.login-panel,.login-brand{padding:20px}.login-brand{gap:16px}.login-brand h1{font-size:2.45rem}.brand-logo{width:min(280px,78vw)}.brand-icon{width:36px;height:36px}.app-header{flex-wrap:wrap;gap:8px}.demo-warning,.demo-try{padding:12px}.demo-feature-grid{grid-template-columns:1fr}.demo-feature-card{padding:12px}.punch-actions{grid-template-columns:1fr;gap:10px}.quick-actions-panel .tab-actions .button{flex:calc(50% - 8px);min-height:42px}.quick-actions-panel .tab-actions .adjust-hours-button{flex-basis:100%!important}.manual-editor-head,.manual-actions{flex-direction:column;align-items:stretch}.manual-editor-grid,.manual-break-field{grid-template-columns:1fr}.manual-actions .button{width:100%}.header-actions,.header-left{gap:8px;width:100%;display:flex}.demo-badge{display:none}.header-actions .user-chip{flex:auto;min-width:0}.reset-demo-button{display:none}.button{width:100%}.header-actions .button{width:auto;min-width:max-content}.brand-lockup,.brand-lockup>div{min-width:0}.brand-lockup strong,.muted-line{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.muted-line{font-size:.72rem}.section-title{margin-bottom:12px}.section-title p{font-size:.9rem}.section-title .demo-banner{display:none}.summary-row,.stat-row,.vacation-select,.section-head-inline,.vacation-card,.day-detail-head{flex-direction:column;align-items:flex-start}.vacation-filter-card{padding:12px}.summary-row strong{text-align:left}.calendar-grid,.team-calendar-grid{gap:4px}.calendar-head,.calendar-day,.team-calendar-day{min-height:44px;padding:6px 5px}.team-calendar-day{gap:4px;min-height:78px}.calendar-day span{max-width:100%;font-size:.62rem;line-height:1.1}.team-day-names span{padding:2px 4px;font-size:.58rem}.calendar-toolbar{grid-template-columns:1fr 1fr;display:grid}.calendar-toolbar h2{grid-area:1/1/auto/-1}.calendar-toolbar .button{width:100%}.day-detail-actions{flex-direction:column;align-items:stretch}.day-detail-actions .button{width:100%;min-height:46px}.punch-button{min-height:118px;font-size:1.32rem}.punch-status-row{grid-template-columns:1fr;align-items:stretch}.clock-card{text-align:left;min-width:0;padding:14px}.day-detail-grid,.vacation-balance-grid,.history-summary{grid-template-columns:1fr}.clock-card strong{font-size:3rem}.punch-state-card{min-width:0;padding:14px}.punch-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.punch-kpis div{min-height:70px;padding:10px}.report-card{padding:12px}.vacation-matrix th,.vacation-matrix td,.planning-cell,.team-planning-table th:not(.sticky-col){min-width:82px;padding:8px;font-size:.78rem}.vacation-matrix .sticky-col{min-width:150px}.employee-vacation-preview{padding:12px}.vacation-week-nav{grid-template-columns:1fr}.vacation-week-nav strong{order:-1}.vacation-week-nav .button{width:100%}.employee-vacation-preview .vacation-week-table{display:none}.vacation-week-cards{gap:10px;display:grid}.employee-vacation-preview .comparison-legend span{flex:150px}.report-overview{gap:10px}.report-card-head{display:grid}.mobile-nav{padding:8px}.mobile-nav .nav-button{min-width:104px;min-height:40px;padding:8px 10px;font-size:.86rem}}@media (width<=480px){.login-page{padding:10px}.login-panel,.login-brand{padding:16px}.app-header{padding:7px 10px}.brand-icon{width:32px;height:32px}.user-chip{padding:6px 8px}.user-chip span{font-size:.7rem}.user-chip strong{font-size:.86rem}.app-main,.panel,.metric-card{padding:12px}.clock-card{padding:10px}.clock-card strong{font-size:2.45rem}.punch-button{min-height:104px;font-size:1.18rem}.punch-button small{font-size:.78rem}.punch-kpis strong{font-size:.98rem}.punch-kpis span{font-size:.7rem}.quick-actions-panel .tab-actions{gap:8px}.calendar-grid{gap:3px}.calendar-head,.calendar-day{border-radius:6px;min-height:46px;padding:5px 3px}.calendar-head{font-size:.68rem}.calendar-day strong{font-size:.82rem}.calendar-day span{font-size:.55rem}.day-detail{padding:12px}.employee-vacation-preview{gap:10px}.overlap-list div{flex-direction:column;align-items:flex-start;gap:4px}.vacation-day-row{padding:9px 10px}.employee-day-state{padding:4px 7px;font-size:.72rem}.mobile-nav .nav-button{min-width:96px;font-size:.82rem}}html,body{width:100%;min-height:100%;margin:0}
