.sidebar{width:240px;background:#f5f5f5;padding:20px;min-height:100vh;border-right:1px solid #ddd;overflow-y:auto;flex-shrink:0}.sidebar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.sidebar h3{font-size:20px;margin:0;color:#333}.sidebar-close{display:none;border:1px solid #d1d5db;background:#fff;border-radius:8px;width:34px;height:34px;font-size:1rem;line-height:1;padding:0}.menu-category{margin-bottom:20px}.category-title{font-weight:700;margin-bottom:8px;font-size:14px;color:#555;text-transform:uppercase;padding:2px 4px;line-height:1.3;overflow-wrap:anywhere}.sidebar ul{list-style:none;padding-left:10px;margin:0}.sidebar li{margin:6px 0}.sidebar a{text-decoration:none;color:#333;font-size:14px;display:block;padding:6px 8px;border-radius:4px}.sidebar a:hover{background:#e0e0e0}@media(max-width:768px){.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:60;width:min(82vw,300px);transform:translate(-105%);transition:transform .2s ease;box-shadow:0 10px 30px #00000040;padding:14px}.sidebar.sidebar--open{transform:translate(0)}.sidebar-close{display:inline-flex;align-items:center;justify-content:center}}html,body,#root{height:100%;margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#1f2937;background-color:#f5f6fb;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh;display:block}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}:root{--app-bg: #f5f6fb;--card-bg: #fff;--text: #1f2937;--muted: #6b7280;--border: #e5e7eb;--primary: #2563eb;--primary-contrast: #fff;--danger: #dc2626;--danger-contrast: #fff;--radius: 10px;--shadow: 0 1px 2px rgba(0, 0, 0, .05)}html,body{background:var(--app-bg);color:var(--text)}.container{max-width:1100px;margin:0 auto;padding:24px 16px}.app-layout{display:flex;min-height:100vh}.app-main{flex:1;min-width:0;display:flex;flex-direction:column}.app-content{padding:24px}.navbar{min-height:60px;background:#f3f4f6;display:flex;align-items:center;justify-content:space-between;padding:0 20px;border-bottom:1px solid #ddd;gap:10px}.navbar__left{display:flex;align-items:center;gap:10px;min-width:0}.navbar__menu-toggle{display:none;border:1px solid #d1d5db;background:#fff;border-radius:8px;width:38px;height:38px;font-size:1.1rem;line-height:1;padding:0}.navbar__user{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.navbar__actions{display:flex;align-items:center;gap:10px}.notifications-menu{position:relative}.notifications-trigger{position:relative;border:1px solid #d1d5db;background:#fff;border-radius:10px;height:40px;width:40px;cursor:pointer}.notifications-trigger__icon{font-size:1.05rem}.notifications-badge{position:absolute;top:-6px;right:-6px;background:#dc2626;color:#fff;min-width:18px;height:18px;border-radius:999px;font-size:.72rem;line-height:18px;text-align:center;padding:0 4px}.notifications-dropdown{position:absolute;right:0;top:48px;width:360px;max-height:460px;overflow:auto;background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 12px 30px #0000001f;z-index:30}.notifications-dropdown__header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #e5e7eb}.notifications-empty{color:#6b7280;font-size:.9rem;padding:12px}.notifications-list{list-style:none;margin:0;padding:8px}.notifications-list li{margin-bottom:8px}.notifications-item{width:100%;text-align:left;border:1px solid #e5e7eb;border-radius:10px;background:#f9fafb;padding:10px;display:flex;flex-direction:column;gap:4px;cursor:pointer}.notifications-item:hover{background:#f3f4f6}.notifications-tag{display:inline-flex;align-items:center;width:fit-content;font-size:.72rem;padding:2px 8px;border-radius:999px;color:#1f2937;background:#e5e7eb}.notifications-tag--horas{background:#dbeafe;color:#1d4ed8}.notifications-tag--gastos{background:#dcfce7;color:#166534}.notifications-tag--sistema{background:#fee2e2;color:#991b1b}.page-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.page-title{margin:0;font-size:1.9rem;font-weight:700;letter-spacing:-.01em}.section-title{margin:0;font-size:1.35rem;font-weight:700;color:var(--text)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:.65rem 1.1rem;border-radius:var(--radius);border:1px solid transparent;font-weight:600;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,filter .15s ease;background:var(--card-bg);color:var(--text)}.btn:hover{filter:brightness(.95);box-shadow:var(--shadow)}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--primary);color:var(--primary-contrast)}.btn-secondary{background:#f3f4f6;color:var(--text)}.btn-danger{background:var(--danger);color:var(--danger-contrast)}.btn-outline-primary{background:transparent;border-color:var(--primary);color:var(--primary)}.btn-outline-primary:hover{background:#2563eb1a}.btn-outline-danger{background:transparent;border-color:var(--danger);color:var(--danger)}.btn-outline-danger:hover{background:#dc26261a}.btn-sm{padding:.4rem .7rem;font-size:.86rem;border-radius:6px}.table{width:100%;border-collapse:collapse;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.table th,.table td{padding:12px 14px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}.table th{background:#0f172a0d;font-weight:600}.table tbody tr:hover{background:#0f172a0a}.card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}.card+.card{margin-top:16px}.form-field{display:flex;flex-direction:column;gap:7px;margin-bottom:14px}.form-field label{font-weight:600;color:var(--muted)}.form-field input,.form-field select,.form-field textarea{padding:10px 12px;min-height:46px;border:1px solid var(--border);border-radius:6px;background:#fff;font-size:1rem}.form-field textarea{min-height:96px;resize:vertical}.form-control{width:100%;padding:10px 12px;min-height:46px;border:1px solid var(--border);border-radius:6px;background:#fff;font-size:1rem}textarea.form-control{min-height:120px;resize:vertical}.form-label{display:inline-block;margin-bottom:6px;font-weight:600;color:var(--muted)}.form-grid{display:grid;gap:12px}.form-grid--2{grid-template-columns:repeat(2,minmax(220px,1fr))}.form-field input:focus,.form-field select:focus,.form-field textarea:focus,.form-control:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb33}.alert{padding:12px 14px;border-radius:var(--radius);margin-bottom:16px;font-weight:600;border:1px solid transparent}.alert--success{background:#2563eb1f;color:var(--primary);border-color:#2563eb33}.alert--error{background:#dc26261f;color:var(--danger);border-color:#dc262633}.button-group{display:flex;flex-wrap:wrap;gap:10px}.report-output-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:#fbfcff}.report-output{margin:0;padding:18px;min-width:max-content;white-space:pre;line-height:1.5;color:var(--text);font-family:Consolas,Courier New,monospace;font-size:.95rem}.table td .button-group{gap:8px}.table td .button-group .btn{padding:.42rem .72rem;font-size:.86rem;border-radius:6px}.auth-page{min-height:100vh;display:flex;justify-content:center;align-items:center;background:var(--app-bg)}.auth-card{width:min(400px,90vw);padding:32px;border-radius:var(--radius);background:var(--card-bg);box-shadow:var(--shadow);text-align:center}.auth-card h1{margin-bottom:20px}.card--narrow{max-width:520px;margin:0 auto}.checkbox-row{display:block;margin-bottom:8px}.user-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.user-detail-kpi{border:1px solid var(--border);border-radius:8px;padding:12px;background:#fafbff}.user-detail-kpi__label{margin:0;color:var(--muted);font-weight:600;font-size:.9rem}.user-detail-kpi__value{margin:6px 0 0;color:var(--text);font-weight:700;word-break:break-word}.selection-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px 12px}.selection-item{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:8px;padding:8px 10px;background:#fff}.selection-item input{margin:0}.selection-item__label{font-weight:600;color:var(--text);overflow-wrap:anywhere}.checkbox-row--inline{display:flex;align-items:center;gap:10px}.card--padded{padding:12px}.timesheet-card{display:flex;flex-direction:column;gap:0}.timesheet-header{border:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;border-bottom:none;padding:20px;background:#fff}.timesheet-header-top{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:24px;align-items:end}.timesheet-field-inline{margin-bottom:0}.timesheet-week-info{display:flex;flex-direction:column;gap:6px;padding-top:6px}.timesheet-week-info div{font-size:.9rem;color:var(--muted)}.timesheet-week-info strong{color:var(--text);font-weight:600}.timesheet-days-selector{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:0}.day-button{padding:12px 8px;border:2px solid var(--border);border-radius:8px;background:#f9fafb;cursor:pointer;transition:all .2s;display:flex;flex-direction:column;align-items:center;gap:6px;position:relative}.day-button:hover{border-color:var(--primary);background:#f0f4ff}.day-button.active{border-color:var(--primary);background:var(--primary);color:var(--primary-contrast)}.day-name{font-size:.85rem;font-weight:600;text-transform:capitalize}.day-hours{font-size:1.1rem;font-weight:700}.day-bar{height:3px;background:var(--primary);border-radius:2px;width:0;transition:width .2s}.day-button.active .day-bar{background:var(--primary-contrast)}.day-button:hover .day-bar{background:var(--primary)}.timesheet-day-panel{border:1px solid var(--border);border-top:1px solid var(--border);border-bottom:none;border-radius:0;padding:20px;background:#fafbfc}.day-title{margin:0 0 16px;color:var(--text);font-size:1.1rem;font-weight:600;text-transform:capitalize}.day-subtotal{margin:-6px 0 14px;color:var(--muted);font-size:.92rem}.day-subtotal strong{color:var(--text)}.tasks-list{display:flex;flex-direction:column;gap:12px;margin-bottom:16px;min-height:40px}.empty-state{color:var(--muted);text-align:center;padding:20px 0;margin:0}.task-row{display:flex;gap:8px;align-items:flex-end}.task-input-group{display:grid;grid-template-columns:1fr auto auto;gap:8px;flex:1;align-items:center}.task-ticket{grid-column:1}.task-hours{grid-column:2;max-width:80px}.task-hours-label{grid-column:3;font-size:.85rem;color:var(--muted);white-space:nowrap}.btn-add-task{width:100%}.timesheet-actions{border:1px solid var(--border);border-top:1px solid var(--border);border-radius:0 0 var(--radius) var(--radius);padding:16px 20px;background:#fff;text-align:right}.timesheet-actions .btn{min-width:120px}@media(max-width:768px){.app-layout{display:block}.app-content{padding:12px}.container{padding:16px 8px}.navbar{padding:8px 10px}.navbar__menu-toggle{display:inline-flex;align-items:center;justify-content:center}.navbar__user{font-size:.95rem;max-width:150px}.navbar__actions{gap:6px}.notifications-dropdown{width:min(92vw,360px);right:-40px}.card{padding:16px}.form-grid--2{grid-template-columns:1fr}.timesheet-days-selector{grid-template-columns:repeat(7,1fr);gap:6px}.day-button{padding:10px 6px}.day-name{font-size:.75rem}.day-hours{font-size:.95rem}.timesheet-header-top,.task-input-group{grid-template-columns:1fr}.task-hours,.task-hours-label{grid-column:auto}.selection-grid{grid-template-columns:1fr}}.timesheet-panel{border:1px solid var(--border);border-radius:var(--radius);padding:16px;background:#fff;overflow:hidden}.timesheet-topbar{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr));gap:12px;align-items:end;margin-bottom:8px}.timesheet-field{margin-bottom:0}.timesheet-week-label{display:flex;flex-direction:column;gap:4px;color:var(--muted);grid-column:1 / -1;align-items:flex-end;text-align:right;padding-top:2px}.timesheet-table-wrap{overflow-x:auto;overflow-y:hidden}.timesheet-table th,.timesheet-table td{white-space:nowrap;padding:6px 8px}.timesheet-table td .form-control,.timesheet-table th .form-control{min-width:0}.timesheet-table th.col-tarea,.timesheet-table td.col-tarea{min-width:220px}@media(max-width:768px){.report-output{font-size:.87rem}}.timesheet-table th.col-day,.timesheet-table td.col-day{min-width:80px;width:80px;text-align:center}.timesheet-table th.col-total,.timesheet-table td.col-total{min-width:60px;text-align:center}.timesheet-table th.col-acciones,.timesheet-table td.col-acciones{min-width:48px;text-align:center}.page-header-separator{margin-top:32px}@media(max-width:900px){.timesheet-topbar{grid-template-columns:1fr}.timesheet-week-label{align-items:flex-start;text-align:left}}.project-builder{display:flex;flex-direction:column;gap:14px}.project-grid-3{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:12px;align-items:end}.project-grid-4{display:grid;grid-template-columns:minmax(220px,2fr) minmax(160px,1fr) minmax(130px,1fr) auto;gap:12px;align-items:end}.project-section{border-style:dashed}.project-section-header,.project-row{margin-bottom:10px}.project-row-actions{justify-content:flex-end}.project-kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-top:6px}.project-kpi{display:flex;flex-direction:column;gap:4px;padding:10px;border-radius:8px;border:1px solid rgba(37,99,235,.3);background:#2563eb14;color:#1e3a8a}.project-kpi--danger{border-color:#dc26264d;background:#dc262614;color:#991b1b}.project-list-header{margin-top:20px}@media(max-width:1100px){.project-grid-4{grid-template-columns:1fr}.project-row-actions{justify-content:flex-start}}@media(max-width:900px){.project-grid-3{grid-template-columns:1fr}}.sidebar-backdrop{display:none}@media(max-width:768px){.sidebar-backdrop{display:block;position:fixed;inset:0;background:#00000059;z-index:50}}
