:root{color-scheme:light;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;--bg-gradient: radial-gradient(circle at 20% -10%, rgba(80, 146, 255, .25), transparent 55%), radial-gradient(circle at 85% 0%, rgba(255, 214, 153, .35), transparent 60%), #f4f7fc;--surface: rgba(255, 255, 255, .9);--surface-strong: rgba(255, 255, 255, .96);--surface-soft: rgba(148, 163, 184, .12);--border: rgba(148, 163, 184, .45);--glow: rgba(37, 99, 235, .2);--accent: #2563eb;--accent-strong: #1d4ed8;--accent-muted: rgba(37, 99, 235, .14);--success: #15803d;--danger: #dc2626;--warning: #d97706;--text-primary: #1f2937;--text-secondary: #4b5563;--timeline-cell-width: 16px}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg-gradient);color:var(--text-primary)}body:before{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(135deg,rgba(255,255,255,.6),transparent 65%);opacity:.45;z-index:-1}.app-shell{min-height:100vh;width:100%;padding:48px clamp(24px,4vw,72px) 64px;display:flex;flex-direction:column;gap:32px}.app-header{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}.brand{display:flex;flex-direction:column;gap:6px}.brand-title{font-size:clamp(28px,4vw,36px);font-weight:600;letter-spacing:1px}.brand-subtitle{font-size:13px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:2px}.header-actions{display:flex;gap:12px;align-items:center;position:relative}.export-panel-wrapper{position:relative}.export-checklist{position:absolute;right:0;top:calc(100% + 10px);width:280px;background:var(--surface);border:1px solid rgba(148,163,184,.35);border-radius:20px;padding:16px;box-shadow:0 20px 48px #0f172a40;display:flex;flex-direction:column;gap:12px;z-index:20}.export-checklist-header{display:flex;align-items:center;justify-content:space-between;font-size:13px;letter-spacing:.5px;color:var(--text-secondary)}.export-checklist-close{border:none;background:transparent;font-size:18px;line-height:1;cursor:pointer;color:var(--text-secondary)}.export-checklist-body{display:flex;flex-direction:column;gap:8px;max-height:220px;overflow-y:auto;padding-right:4px}.export-checklist-item{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--text-primary)}.export-checklist-item input{width:16px;height:16px}.export-checklist-actions{display:flex;justify-content:space-between;gap:8px}.export-checklist-empty{color:var(--text-secondary);font-size:13px;margin:0}.button{border:none;border-radius:14px;padding:12px 22px;font-weight:600;font-size:14px;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-strong) 100%);color:#fff;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,filter .2s ease;box-shadow:0 12px 28px #2563eb40}.button.secondary{background:#fff;border:1px solid var(--accent);color:var(--accent);box-shadow:0 6px 18px #94a3b840}.button.secondary:not(:disabled):hover{box-shadow:0 10px 22px #94a3b859;background:#ffffffe6}.button:disabled{cursor:not-allowed;filter:saturate(.4);box-shadow:none}.button:not(:disabled):hover{transform:translateY(-3px);box-shadow:0 16px 34px #2563eb4d}.card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:22px;padding:24px;box-shadow:0 18px 42px #94a3b840;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.card:after{content:"";position:absolute;inset:0;border-radius:inherit;border:1px solid rgba(148,163,184,.18);pointer-events:none}.card-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.card-title{font-size:14px;letter-spacing:1px;text-transform:uppercase;color:var(--text-secondary)}.card-value{font-size:clamp(26px,3vw,34px);font-weight:600;letter-spacing:.4px}.card-value.success{color:var(--success)}.card-value.danger{color:var(--danger)}.card-value.warning{color:var(--warning)}.timeline-card{padding:0;overflow:hidden}.timeline-card .card-header{padding:24px 24px 16px;margin:0}.timeline-container{overflow-x:auto}.timeline-table{width:max-content;border-collapse:separate;border-spacing:0;font-size:11px;color:var(--text-secondary);background:var(--surface-strong);box-shadow:0 12px 28px #94a3b833}.timeline-table thead th{font-weight:600;padding:10px 0;background:#e2e8f0d9;text-transform:uppercase;letter-spacing:.8px;color:var(--text-primary)}.timeline-table thead tr:nth-child(2) th,.timeline-table thead tr:nth-child(3) th{padding:6px 0}.timeline-table thead th.weekend{background:#dbeafebf;color:var(--accent-strong)}.timeline-table thead th.holiday{background:#fee2b2cc;color:#b45309}.timeline-table thead th.weekend.holiday{background:linear-gradient(135deg,#fee2b2d9,#dbeafebf);color:#1d4ed8}.timeline-table thead th.today{background:linear-gradient(180deg,#2563eb33,#1d4ed84d);color:var(--accent-strong);box-shadow:inset 0 -2px #2563eb40}.timeline-table thead th.weekend.today{background:linear-gradient(180deg,#dbeafebf,#1d4ed84d)}.timeline-table thead th.holiday.today{background:linear-gradient(180deg,#fee2b2cc,#1d4ed84d)}.timeline-weekday{font-size:10px;letter-spacing:1.2px}.timeline-table th:not(.timeline-worker),.timeline-table td:not(.timeline-worker){border:1px solid rgba(148,163,184,.35);text-align:center;min-width:var(--timeline-cell-width);width:var(--timeline-cell-width);max-width:var(--timeline-cell-width)}.timeline-table th.timeline-worker,.timeline-table td.timeline-worker{border:1px solid rgba(148,163,184,.35)}.timeline-table tr:first-child th:not(.timeline-worker){padding-top:12px;padding-bottom:12px}.timeline-table th.holiday,.timeline-table td.holiday{background:#fee2b28c;color:#92400e}.timeline-table th.today,.timeline-table td.today{color:var(--accent-strong)}.timeline-table th.today{position:relative}.timeline-table tbody td{height:22px}.timeline-worker{position:sticky;left:0;z-index:2;padding:0 12px;background:#fffffff2;color:var(--text-primary);font-weight:600;text-align:left;min-width:160px}.shift-cell{position:relative;overflow:hidden;background:#94a3b814}.shift-cell.empty{background:#94a3b80a}.shift-cell.weekend-column:before{content:"";position:absolute;inset:0;background:#c7d2fe66;mix-blend-mode:multiply;pointer-events:none}.shift-cell.holiday-column:before{content:"";position:absolute;inset:0;background:#fee2b280;mix-blend-mode:multiply;pointer-events:none}.shift-cell.today-column:before{content:"";position:absolute;inset:0;background:#bfdbfe99;mix-blend-mode:multiply;pointer-events:none}.shift-cell.subida{background:linear-gradient(140deg,#22c55e1f,#22c55e47)}.shift-cell.bajada{background:linear-gradient(140deg,#ef44441f,#ef444447)}.shift-cell.subida:not(.future){background:linear-gradient(140deg,#16a34a33,#16a34a66)}.shift-cell.bajada:not(.future){background:linear-gradient(140deg,#dc262633,#dc26266b)}.shift-cell.subida.weekend-column:before{background:#c7d2fe73}.shift-cell.bajada.weekend-column:before{background:#c7d2fe6b}.shift-cell.subida.holiday-column:before{background:#fee2b28c}.shift-cell.bajada.holiday-column:before{background:#fed7aa80}.shift-cell.subida.today-column:before,.shift-cell.bajada.today-column:before,.shift-cell.empty.today-column:before{background:#bfdbfea6}.shift-cell.future{opacity:.8}.floating-editor{position:fixed;z-index:30;background:var(--surface-strong);border:1px solid rgba(148,163,184,.4);border-radius:16px;padding:12px;min-width:220px;box-shadow:0 14px 36px #0f172a26}.floating-editor-form{display:flex;flex-direction:column;gap:8px}.floating-editor-label{font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:var(--text-secondary);display:flex;flex-direction:column;gap:4px}.floating-editor-input{border-radius:10px;border:1px solid rgba(148,163,184,.4);padding:8px 10px;font-size:13px;background:#fffffff2}.floating-editor-actions{display:flex;justify-content:flex-end;gap:6px}.floating-button{padding:6px 14px;font-size:12px}.layout-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1.1fr);gap:24px;align-items:start}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;margin-top:12px}.input-group{display:flex;flex-direction:column;gap:8px}.label{font-size:12px;text-transform:uppercase;letter-spacing:1.2px;color:var(--text-secondary)}.input,.select{border-radius:14px;border:1px solid rgba(148,163,184,.4);padding:12px 14px;background:#ffffffe6;color:var(--text-primary);font-size:14px;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.input::placeholder,.select::placeholder{color:#9ca3af}.input:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2563eb2e;background:#fff}.divider{height:1px;width:100%;background:linear-gradient(90deg,transparent,rgba(148,163,184,.4),transparent);margin:26px 0}.form-actions{display:flex;justify-content:flex-end;gap:12px}.table-scroll{max-height:420px;overflow:auto;border-radius:16px;border:1px solid rgba(148,163,184,.35);background:#ffffffeb}.worker-table{width:100%;border-collapse:collapse;font-size:13px}.worker-table thead{background:#e2e8f099}.worker-table th,.worker-table td{padding:14px 16px;text-align:left;border-bottom:1px solid rgba(148,163,184,.35)}.worker-table th{font-size:12px;letter-spacing:1.4px;text-transform:uppercase;color:var(--text-secondary)}.worker-table tbody tr:hover{background:#e2e8f0a6}.badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 12px;border-radius:999px;font-size:12px;font-weight:600;text-transform:capitalize;background:#e2e8f0cc;color:var(--text-secondary)}.badge.subida{background:#22c55e2e;color:var(--success)}.badge.bajada{background:#ef44442e;color:var(--danger)}.worker-accordion{display:flex;flex-direction:column;gap:14px}.worker-panel{border-radius:18px;border:1px solid rgba(148,163,184,.35);background:#ffffffeb;transition:border-color .2s ease,background .2s ease,box-shadow .2s ease;overflow:hidden}.worker-panel.open{border-color:#2563eb59;background:#fff;box-shadow:0 16px 36px #94a3b847}.worker-panel-header{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 22px;background:transparent;border:none;color:inherit;cursor:pointer;text-align:left;font:inherit}.worker-panel-header:hover{background:#e2e8f0a6}.worker-panel-header:focus-visible{outline:2px solid rgba(90,139,255,.6);outline-offset:2px}.worker-header-info{display:flex;flex-direction:column;gap:12px}.worker-name{font-size:16px;font-weight:600;letter-spacing:.4px}.worker-summary{display:flex;flex-wrap:wrap;gap:12px}.summary-block{display:grid;gap:4px;min-width:130px;padding:8px 12px;border-radius:12px;background:#e2e8f0a6}.summary-block .summary-title{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--text-secondary)}.summary-block .summary-count{font-size:18px;font-weight:600;line-height:1;color:var(--text-primary)}.summary-block.subida .summary-count{color:var(--success)}.summary-block.bajada .summary-count{color:var(--danger)}.summary-block.neutral{background:#e2e8f073}.summary-block.neutral .summary-count{color:var(--text-secondary)}.summary-block .summary-average{font-size:12px;color:var(--text-secondary)}.worker-next{font-size:12px;color:var(--text-secondary);display:flex;flex-wrap:wrap;gap:6px;align-items:center}.next-type{padding:2px 8px;border-radius:999px;font-size:11px;text-transform:capitalize;font-weight:600;background:#e2e8f0b3;color:var(--text-secondary)}.next-type.subida{background:#22c55e2e;color:var(--success)}.next-type.bajada{background:#ef44442e;color:var(--danger)}.next-date{font-weight:500;color:var(--text-primary)}.panel-chevron{display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:#e2e8f0cc;color:var(--accent-strong);font-size:18px;font-weight:600}.worker-panel-body{padding:0 22px 20px;display:flex;flex-direction:column;gap:12px;border-top:1px solid rgba(148,163,184,.25)}.shift-entry{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;padding:12px 0;border-bottom:1px solid rgba(148,163,184,.25)}.shift-entry:last-child{border-bottom:none}.shift-entry.editing{border-color:#2563eb59;background:#bfdbfe59;border-radius:12px;padding:12px;margin:0 -12px}.shift-entry.future:not(.editing){opacity:.75}.shift-entry.future:not(.editing):hover,.shift-entry.future:not(.editing):focus-within{opacity:1}.shift-actions{display:flex;gap:10px;justify-content:flex-end;opacity:0;pointer-events:none;transform:translateY(-6px);transition:opacity .2s ease,transform .2s ease}.shift-entry:hover .shift-actions,.shift-entry:focus-within .shift-actions,.shift-entry.editing .shift-actions{opacity:1;pointer-events:auto;transform:translateY(0)}.action-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:10px;border:1px solid rgba(148,163,184,.35);background:#e2e8f0b3;color:var(--text-secondary);cursor:pointer;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .2s ease}.action-button svg{width:16px;height:16px}.action-button:hover:enabled{background:#2563eb26;border-color:#2563eb59;color:var(--accent-strong);transform:translateY(-1px)}.action-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.action-button.danger{color:var(--danger);border-color:#ef444466}.action-button.danger:hover:enabled{background:#ef444426;color:var(--danger)}.action-button.active{color:var(--accent-strong);border-color:#2563eb66;background:#bfdbfe99}.shift-dates{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text-secondary)}.shift-date-range{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;color:var(--text-primary);font-weight:500}.shift-duration{font-size:12px;letter-spacing:.6px;text-transform:uppercase;color:var(--accent);font-weight:600;margin-right:6px}.badge.future{opacity:.7}.empty-worker-shifts{padding:16px 0;text-align:center;font-size:13px;color:var(--text-secondary)}.empty-state{color:var(--text-secondary);font-size:14px;text-align:center;padding:20px 0}.table-scroll::-webkit-scrollbar,.timeline-container::-webkit-scrollbar{height:8px;width:8px}.table-scroll::-webkit-scrollbar-thumb,.timeline-container::-webkit-scrollbar-thumb{background:#94a3b873;border-radius:6px}.table-scroll::-webkit-scrollbar-track,.timeline-container::-webkit-scrollbar-track{background:#e2e8f066}@media (max-width: 1024px){.app-shell{padding:40px clamp(18px,5vw,52px) 56px}.layout-grid{grid-template-columns:1fr}}@media (max-width: 720px){.app-shell{padding:32px 16px 44px;gap:28px}.app-header{flex-direction:column;align-items:flex-start}.header-actions{width:100%}.header-actions .button{flex:1;justify-content:center}.card{padding:20px}.timeline-card .card-header{padding:20px 20px 12px}}
