*{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;--shadow:0 18px 50px #17211f17;--shadow-soft:0 8px 24px #17211f12;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:600;display:block}.demo-badge{min-height:30px;color:var(--primary-dark);text-transform:uppercase;background:#ecfaf6;border:1px solid #bfded6;border-radius:999px;align-items:center;padding:4px 10px;font-size:.78rem;font-weight:750;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:700;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{border-color:var(--line);color:var(--text);background:#fff}.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-small{min-height:34px;padding:7px 10px;font-size:.85rem}.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-try ul{color:var(--muted-strong);gap:8px;margin:0;padding-left:18px;display:grid}.demo-try li{padding-left:2px}.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{grid-template-columns:1fr;gap:10px;display:grid}.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:700}.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:280px 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:20px;min-height:72px;padding:14px 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:8px 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:600;display:block}.sidebar{border-right:1px solid var(--line);background:linear-gradient(#fff 0,#f8fbfa 100%);height:calc(100vh - 72px);padding:18px 16px;position:sticky;top:72px;overflow-y:auto}.sidebar-nav,.mobile-nav{gap:8px;display:grid}.nav-button{width:100%;color:var(--muted);text-align:left;background:0 0;border:1px solid #0000;justify-content:flex-start;padding:11px 12px}.nav-button:hover,.nav-button[aria-current=page]{background:var(--primary-soft);color:var(--primary-dark);box-shadow:none;border-color:#c4e4dc}.nav-button span:last-child{gap:1px;min-width:0;display:grid}.nav-button strong{color:inherit;font-size:.95rem}.nav-button small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.76rem;font-weight:700;overflow:hidden}.nav-button[aria-current=page] small{color:var(--primary-dark)}.nav-dot{background:#b9c9c6;border-radius:999px;flex:none;width:9px;height:9px}.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:#fff;border-radius:8px;gap:2px;margin-bottom:12px;padding:13px;display:grid}.nav-context span,.nav-context small{color:var(--muted);font-size:.78rem;font-weight:800}.nav-context strong{font-size:1.05rem}.mobile-nav{display:none}.app-main{min-width:0;padding:28px}.section-title{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:20px;display:flex}.section-title p{color:var(--muted);margin:4px 0 0}.section-title h1{font-size:clamp(1.6rem,3vw,2.15rem);line-height:1.12}.demo-banner{max-width:320px;box-shadow:var(--shadow-soft);background:#fffaf0;border:1px solid #ead59b;border-radius:8px;gap:2px;padding:11px 12px;display:grid}.demo-banner strong{color:var(--pending);font-size:.88rem}.demo-banner span{color:var(--muted);font-size:.82rem}.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:650;display:block}.metric-card strong{margin-top:5px;font-size:1.8rem;line-height:1.1;display:block}.metric-card small{color:var(--muted);margin-top:4px;font-size:.8rem;font-weight:700;display:block}.panel{box-shadow:var(--shadow-soft);padding:18px}.panel h2,.panel h3{margin:0 0 12px;font-size:1.05rem}.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:600}.summary-row strong{text-align:right}.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:28px;color:var(--muted);text-transform:uppercase;border-radius:999px;align-items:center;padding:4px 10px;font-size:.78rem;font-weight:750;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{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.25fr) minmax(320px,.75fr);align-items:start}.punch-panel{background:linear-gradient(135deg,#dff3eeb8,#fffffff5),#fff;border-color:#c4e4dc;gap:18px;display:grid}.punch-status-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.punch-status-row strong{font-size:1.65rem;line-height:1.1;display:block}.clock-card{text-align:right;background:#ffffffd1;border:1px solid #c4e4dc;border-radius:8px;min-width:176px;padding:12px;display:grid}.clock-card span{color:var(--muted);text-transform:uppercase;font-size:.76rem;font-weight:700}.clock-card strong{font-variant-numeric:tabular-nums}.punch-button{border-radius:8px;align-content:center;gap:6px;width:100%;min-height:148px;font-size:1.75rem;display:grid}.checkout-button{min-height:48px;font-size:1rem}.punch-button small{color:#ffffffd1;font-size:.88rem;font-weight:800}.punch-kpis{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;display:grid}.punch-kpis div,.day-detail-grid div{border:1px solid var(--line);background:#ffffffd1;border-radius:8px;padding:12px}.punch-kpis span,.day-detail-grid span{color:var(--muted);text-transform:uppercase;font-size:.75rem;font-weight:900;display:block}.punch-kpis strong,.day-detail-grid strong{margin-top:3px;font-size:1rem;display:block}.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-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:700}.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}.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:800;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-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}.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:800;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:800}.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}.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:720px}.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}table{border-collapse:collapse;width:100%;min-width:720px}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:12px 14px;line-height:1.35}th{color:var(--muted);text-transform:uppercase;background:#f7faf9;font-size:.78rem;font-weight:700}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:800;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:900;display:grid}.calendar-day{border:1px solid var(--line);text-align:left;background:#fff;align-content:space-between;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:800;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{background:linear-gradient(#fff,#f8fbfa),#fff}.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}.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:800;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:78px;display:block}.app-header{flex-wrap:wrap;padding:12px;position:static}.header-left,.header-actions{justify-content:space-between;width:100%}.company-chip,.sidebar{display:none}.app-main{padding:16px}.mobile-nav{z-index:30;border-top:1px solid var(--line);backdrop-filter:blur(14px);background:#fffffff5;gap:8px;padding:10px;display:flex;position:fixed;bottom:0;left:0;right:0;overflow-x:auto}.mobile-nav .nav-button{justify-content:center;width:auto;min-width:118px}.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<=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}.demo-warning,.demo-try{padding:12px}.header-actions{grid-template-columns:1fr 1fr;display:grid}.header-left{gap:10px;display:grid}.demo-badge{width:max-content}.header-actions .user-chip{grid-column:1/-1}.button{width:100%}.section-title{margin-bottom:12px}.section-title p{font-size:.9rem}.section-title .demo-banner{display:none}.summary-row,.stat-row,.vacation-select,.vacation-card,.day-detail-head{flex-direction:column;align-items:flex-start}.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}.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}.punch-button{min-height:132px;font-size:1.45rem}.punch-status-row{flex-direction:column;align-items:stretch}.clock-card{text-align:left;min-width:0}.punch-kpis,.day-detail-grid,.vacation-balance-grid,.history-summary{grid-template-columns:1fr}.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}.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}}html,body{width:100%;min-height:100%;margin:0}
