*,*:before,*:after{box-sizing:border-box}:root{--bg: #f8f9fb;--surface: #ffffff;--surface-hover: #f1f3f6;--border: #e2e5eb;--text-primary: #111827;--text-secondary: #4b5563;--text-muted: #9ca3af;--accent: #4f46e5;--accent-subtle: rgba(79, 70, 229, .08);--success: #059669;--success-subtle: rgba(5, 150, 105, .1);--warning: #d97706;--warning-subtle: rgba(217, 119, 6, .1);--time-off-rgb: 217, 119, 6;--info: #2563eb;--info-subtle: rgba(37, 99, 235, .1);--planned: #7c3aed;--planned-subtle: rgba(124, 58, 237, .1);--inactive: #94a3b8;--inactive-subtle: rgba(148, 163, 184, .2);--muted-subtle: rgba(156, 163, 175, .15);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 12px rgba(0, 0, 0, .06);--radius: 10px;color-scheme:light;font-family:Inter,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.5;color:var(--text-primary);background:var(--bg);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}:root[data-theme=dark]{color-scheme:dark;--bg: #0f1117;--surface: #1a1d27;--surface-hover: #252836;--border: #2e3340;--text-primary: #f3f4f6;--text-secondary: #d1d5db;--text-muted: #6b7280;--accent: #818cf8;--accent-subtle: rgba(129, 140, 248, .12);--success: #34d399;--success-subtle: rgba(52, 211, 153, .12);--warning: #fbbf24;--warning-subtle: rgba(251, 191, 36, .12);--time-off-rgb: 251, 191, 36;--info: #60a5fa;--info-subtle: rgba(96, 165, 250, .15);--planned: #a78bfa;--planned-subtle: rgba(167, 139, 250, .15);--inactive: #64748b;--inactive-subtle: rgba(100, 116, 139, .25);--muted-subtle: rgba(107, 114, 128, .2);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4)}body{margin:0}#root{min-height:100vh}h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.02em}button{font-family:inherit;cursor:pointer}input{font-family:inherit}.page-loading,.page-error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:40vh;gap:1rem;color:var(--text-secondary)}.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.leave-status{display:inline-block;margin-left:.4rem;padding:.05rem .45rem;border-radius:999px;font-size:.6875rem;font-weight:600;vertical-align:middle}.leave-status--pendiente{background:var(--warning-subtle);color:var(--warning)}.leave-status--aprobada{background:var(--success-subtle);color:var(--success)}.leave-status--rechazada{background:#dc26261a;color:#dc2626}.leave-status--cancelada{background:var(--muted-subtle);color:var(--text-muted)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:#0f111773;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{width:100%;max-width:520px;max-height:calc(100vh - 3rem);overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md)}.modal__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border)}.modal__header h2{font-size:1.0625rem;color:var(--text-primary)}.modal__close{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:none;border-radius:6px;background:transparent;color:var(--text-muted);font-size:1.375rem;line-height:1;transition:background .15s,color .15s}.modal__close:hover{background:var(--surface-hover);color:var(--text-primary)}.modal__form{padding:1.25rem 1.5rem 1.5rem}.modal__field{margin-bottom:1rem}.modal__field label,.modal__fieldset legend{display:block;margin-bottom:.375rem;font-size:.75rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.modal__field input,.modal__field select{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:8px;background:var(--bg);font-size:.875rem;color:var(--text-primary);outline:none;transition:border-color .15s}.modal__field select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .65rem center;background-size:1rem}.modal__field input:focus,.modal__field select:focus{border-color:var(--accent)}.modal__field input[type=number]{-moz-appearance:textfield}.modal__field input[type=number]::-webkit-outer-spin-button,.modal__field input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.modal__row{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}.modal__fieldset{margin:0 0 1rem;padding:0;border:none}.modal__roles{display:grid;grid-template-columns:repeat(2,1fr);gap:.375rem .75rem}.modal__role-check{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:var(--text-secondary);cursor:pointer}.modal__role-check input{accent-color:var(--accent)}.modal__error{margin:0 0 1rem;font-size:.8125rem;color:#dc2626}.modal__footer{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding-top:.25rem}.modal__footer-left{flex:1;min-width:0}.modal__footer-right{display:flex;gap:.5rem;margin-left:auto}.modal__confirm-delete{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;font-size:.8125rem;color:var(--text-secondary)}.modal__confirm-delete-actions{display:flex;align-items:center;gap:.5rem}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;border:1px solid transparent;border-radius:8px;font-size:.875rem;font-weight:500;white-space:nowrap;transition:background .15s,color .15s,border-color .15s}.btn--primary{background:var(--accent);color:#fff}.btn--primary:hover{filter:brightness(1.05)}.btn--ghost{background:transparent;border-color:var(--border);color:var(--text-secondary)}.btn--ghost:hover{background:var(--surface-hover);color:var(--text-primary)}.btn--danger{background:#dc2626;color:#fff}.btn--danger:hover{filter:brightness(1.05)}.btn--danger-ghost{background:transparent;color:#dc2626;border-color:transparent;padding-inline:.75rem;margin-inline-start:-.75rem}.btn--danger-ghost:hover{background:#dc262614}.modal__tabs{display:flex;gap:.25rem;padding:0 1.5rem;border-bottom:1px solid var(--border)}.modal__tab{display:inline-flex;align-items:center;gap:.375rem;margin-bottom:-1px;padding:.625rem .75rem;border:none;border-bottom:2px solid transparent;background:transparent;font-size:.8125rem;font-weight:600;color:var(--text-secondary);cursor:pointer}.modal__tab:hover{color:var(--text-primary)}.modal__tab--active{color:var(--accent);border-bottom-color:var(--accent)}.modal__tab-count{min-width:1.25rem;padding:.0625rem .375rem;border-radius:999px;background:var(--warning-subtle);color:var(--warning);font-size:.6875rem;text-align:center}.modal__active-check{margin-bottom:1rem}.time-off__empty{margin:0 0 .75rem;font-size:.8125rem;color:var(--text-muted)}.time-off__list{list-style:none;margin:0 0 .75rem;padding:0;display:flex;flex-direction:column;gap:.375rem}.time-off__item{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .625rem;padding:.375rem .5rem .375rem .75rem;border:1px solid var(--border);border-radius:8px;font-size:.8125rem;color:var(--text-secondary)}.time-off__item--past{opacity:.6}.time-off__item--current{border-color:var(--warning);background:var(--warning-subtle)}.time-off__item--editing{border-color:var(--accent);background:var(--accent-subtle)}.time-off__type{font-weight:600;color:var(--text-primary)}.time-off__dates{font-variant-numeric:tabular-nums}.time-off__hours,.time-off__note{color:var(--text-muted)}.time-off__actions{display:flex;gap:.25rem;margin-left:auto}.time-off__actions .btn--danger-ghost{margin-inline-start:0}.time-off__form{display:grid;grid-template-columns:repeat(2,1fr);gap:0 .75rem}.time-off__form .modal__field{margin-bottom:.625rem}.time-off__form-footer{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem}.time-off__note-input{flex:1;min-width:140px;padding:.375rem .625rem;border:1px solid var(--border);border-radius:8px;background:var(--bg);font-size:.8125rem;color:var(--text-primary);outline:none}.time-off__note-input:focus{border-color:var(--accent)}@media(max-width:520px){.modal__row,.modal__roles,.time-off__form{grid-template-columns:1fr}.modal__footer{flex-direction:column;align-items:stretch}.modal__footer-right{margin-left:0;justify-content:flex-end}}.modal__hint{margin:.3rem 0 0;font-size:.75rem;color:var(--text-muted)}.modal--wide{max-width:720px}.modal__row--3{grid-template-columns:repeat(3,1fr)}.modal__field--end-date{margin-bottom:1rem}.modal__end-date-row{display:flex;align-items:center;gap:1rem}.modal__end-date-row input[type=date]{flex:1;min-width:0;padding-right:.75rem}.modal__checkbox-inline{display:flex;align-items:center;gap:.5rem;flex-shrink:0;font-size:.875rem;color:var(--text-secondary);cursor:pointer;text-transform:none;letter-spacing:normal;font-weight:500;white-space:nowrap}.modal__checkbox-inline input{width:auto;accent-color:var(--accent)}.modal__tab-count.project-form__tab-count{background:var(--accent-subtle);color:var(--accent)}.project-form__team,.project-form__notes{margin-bottom:1.25rem}.project-form__hint{margin:0;font-size:.8125rem;color:var(--text-muted)}.project-form__section{margin-bottom:1.25rem;padding-top:1rem;border-top:1px solid var(--border)}.project-form__section-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.project-form__section-header h3{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary)}.project-form__empty{margin:0;font-size:.8125rem;color:var(--text-muted)}.project-form__list{display:flex;flex-direction:column;gap:.5rem}.project-form__row{display:grid;grid-template-columns:1fr 4rem 2rem;gap:.5rem;align-items:center}.project-form__row--assignment{grid-template-columns:1fr 1fr 5.5rem 2rem}.project-form__row select,.project-form__row input[type=number]{width:100%;padding:.45rem .65rem;border:1px solid var(--border);border-radius:8px;background:var(--bg);font-size:.8125rem;color:var(--text-primary);outline:none;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.project-form__row input[type=number]::-webkit-outer-spin-button,.project-form__row input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.project-form__row select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:1.75rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;background-size:.875rem}.project-form__row select:focus,.project-form__row input[type=number]:focus{border-color:var(--accent)}.project-form__hours{display:flex;align-items:center;gap:.25rem;white-space:nowrap}.project-form__hours span{font-size:.8125rem;color:var(--text-muted)}.project-form__remove{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:1px solid var(--border);border-radius:6px;background:transparent;color:var(--text-muted);font-size:1.125rem;line-height:1;transition:background .15s,color .15s,border-color .15s}.project-form__remove:hover{background:#dc262614;border-color:#dc2626;color:#dc2626}.project-form__list--assignments{gap:.75rem}.project-form__assignment{display:flex;flex-direction:column;gap:.5rem;padding:.75rem;border:1px solid var(--border);border-radius:8px}.project-form__assignment--past{opacity:.6;transition:opacity .15s}.project-form__assignment--past:hover,.project-form__assignment--past:focus-within{opacity:1}.project-form__assignment--new-person{margin-top:.75rem}.project-form__row .project-form__hours--over input[type=number]{border-color:#dc2626;color:#dc2626}.project-form__overload{margin-top:.4rem;font-size:.75rem;font-weight:500;color:#dc2626}.project-form__dates,.project-form__split{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .875rem}.project-form__dates label,.project-form__split label{display:flex;align-items:center;gap:.4rem;font-size:.75rem;font-weight:600;color:var(--text-secondary)}.project-form__dates input[type=date],.project-form__split input[type=date]{padding:.35rem .5rem;border:1px solid var(--border);border-radius:8px;background:var(--bg);font-size:.8125rem;color:var(--text-primary);outline:none}.project-form__dates input[type=date]:focus,.project-form__split input[type=date]:focus{border-color:var(--accent)}.project-form__dates input[type=date]:disabled{opacity:.5}.project-form__tag{padding:.05rem .45rem;border-radius:999px;font-size:.6875rem;font-weight:600}.project-form__tag--past{background:var(--muted-subtle);color:var(--text-secondary)}.project-form__tag--current{background:var(--success-subtle);color:var(--success)}.project-form__tag--upcoming{background:var(--info-subtle);color:var(--info)}.project-form__link{margin-left:auto;padding:0;border:none;background:none;font-size:.8125rem;font-weight:500;color:var(--accent)}.project-form__link:hover:not(:disabled){text-decoration:underline}.project-form__link:disabled{color:var(--text-muted)}.project-form__split{padding:.5rem .625rem;border-radius:6px;background:var(--accent-subtle)}.btn--sm{padding:.35rem .75rem;font-size:.8125rem}@media(max-width:640px){.modal__row--3,.project-form__row,.project-form__row--assignment{grid-template-columns:1fr}}.project-color{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.project-color__swatch{width:1.5rem;height:1.5rem;padding:0;border:2px solid transparent;border-radius:6px;box-shadow:inset 0 0 0 2px var(--surface);cursor:pointer}.project-color__swatch[aria-pressed=true]{border-color:var(--text-primary)}.project-color__auto{height:1.5rem;padding:0 .5rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);font-size:.75rem;color:var(--text-secondary);cursor:pointer}.project-color__auto[aria-pressed=true]{border-color:var(--accent);color:var(--accent);font-weight:600}.modal__field .project-color__custom,.project-color__custom{width:1.75rem;height:1.5rem;padding:0;border:1px solid var(--border);border-radius:6px;background:none;cursor:pointer}.rich-text-loading{font-size:.8125rem;color:var(--text-muted)}.project-client{display:flex;gap:.5rem}.project-client>select,.project-client>input{flex:1;min-width:0}.dashboard-page{max-width:1100px}.dashboard-page--wide{max-width:1280px}.page-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.75rem}.page-header__actions{flex-shrink:0}.page-header h1{font-size:1.625rem;color:var(--text-primary)}.page-subtitle{margin-top:.375rem;color:var(--text-secondary);font-size:.9375rem}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1.75rem}.stats-grid--3{grid-template-columns:repeat(3,1fr)}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.125rem 1.25rem;box-shadow:var(--shadow-sm)}.stats-grid--compact{gap:.75rem;margin-bottom:1rem}.stats-grid--compact .stat-card{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;padding:.5rem 1rem}.stats-grid--compact .stat-card__label{margin-bottom:0}.stats-grid--compact .stat-card__value{font-size:1.25rem}.stat-card--wide{grid-column:1 / -1}.stat-card__label{display:block;font-size:.75rem;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.375rem}.stat-card__value{font-size:1.75rem;font-weight:700;color:var(--text-primary);letter-spacing:-.03em}.filters{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin-bottom:1.25rem}.filters__search{flex:1;min-width:220px;display:flex;align-items:center;gap:.5rem;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:.5rem .75rem;color:var(--text-muted)}.filters__search-label{font-size:.75rem;font-weight:600;color:var(--text-secondary);white-space:nowrap}.filters__break{flex-basis:100%;height:0}.filters__search input{flex:1;border:none;outline:none;background:transparent;font-size:.875rem;color:var(--text-primary)}.filters__search input::placeholder{color:var(--text-muted)}.filters__tabs{display:flex;gap:.25rem;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:.25rem;overflow-x:auto;max-width:100%}.filter-tab{border:none;background:transparent;padding:.375rem .75rem;border-radius:6px;font-size:.8125rem;font-weight:500;color:var(--text-secondary);transition:background .15s,color .15s;white-space:nowrap;flex-shrink:0}.filters__tabs-label{align-self:center;padding:0 .25rem 0 .375rem;font-size:.75rem;color:var(--text-muted)}.filter-tab:hover{color:var(--text-primary)}.filter-tab--active{background:var(--accent-subtle);color:var(--accent)}.projects-list{display:flex;flex-direction:column;gap:.875rem}.projects-list--compact{gap:.5rem}.empty-state{text-align:center;padding:3rem;color:var(--text-muted);background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius)}@media(max-width:900px){.stats-grid,.stats-grid--3{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.stats-grid,.stats-grid--3{grid-template-columns:1fr}}.people-roster{margin-bottom:0}.people-roster__table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow-x:auto}.people-table{width:100%;min-width:1000px;border-collapse:collapse;font-size:.8125rem}.people-table th{text-align:left;padding:.625rem 1.25rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--surface-hover);white-space:nowrap}.people-table td{padding:.75rem 1.25rem;border-top:1px solid var(--border);vertical-align:middle;color:var(--text-secondary)}.people-table th:nth-child(4),.people-table td:nth-child(4),.people-table th:nth-child(5),.people-table td:nth-child(5),.people-table th:nth-child(9),.people-table td:nth-child(9){min-width:6.75rem;white-space:nowrap}.people-table__actions{width:1%;white-space:nowrap}.people-table__edit{padding:.3rem .625rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);font-size:.75rem;font-weight:500;color:var(--text-secondary);transition:background .15s,color .15s,border-color .15s}.people-table__edit:hover{background:var(--surface-hover);color:var(--accent);border-color:var(--accent)}.people-table__empty{color:var(--text-muted)}.member-cell__avatar{width:32px;height:32px;border-radius:8px;background:var(--accent-subtle);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:.6875rem;font-weight:700;flex-shrink:0}.member-cell__email{display:block;font-size:.6875rem;color:var(--text-muted)}.roles-list{display:flex;flex-wrap:wrap;gap:.3rem}.role-tag{padding:.15rem .45rem;border-radius:4px;font-size:.6875rem;white-space:nowrap}.role-tag--primary{background:var(--accent-subtle);color:var(--accent);font-weight:500}.people-relacion{font-size:.75rem;font-weight:500;color:var(--text-secondary)}.people-relacion--contractor{color:var(--warning, #b45309)}.people-relacion--externo{color:var(--planned)}.people-hours{font-size:.8125rem;font-weight:600;color:var(--text-primary);font-variant-numeric:tabular-nums}.people-allocation{display:flex;align-items:center;gap:.5rem;min-width:90px}.people-allocation__bar{flex:1;height:5px;background:var(--surface-hover);border-radius:999px;overflow:hidden;max-width:56px}.people-allocation__fill{height:100%;background:var(--accent);border-radius:999px}.people-allocation__fill--over{background:var(--warning)}.people-allocation__value{font-size:.75rem;font-weight:600;color:var(--text-primary);white-space:nowrap}.people-allocation__value--over{color:var(--warning)}.people-projects{font-size:.8125rem;font-weight:600;color:var(--text-primary);font-variant-numeric:tabular-nums}.people-table .seniority-badge{white-space:nowrap}.people-status{display:inline-flex;padding:.2rem .5rem;border-radius:999px;font-size:.6875rem;font-weight:600;white-space:nowrap}.people-status--assigned{background:var(--success-subtle);color:var(--success)}.people-status--free{background:var(--muted-subtle);color:var(--text-muted)}.people-status-cell{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem}.people-status--inactive{background:var(--inactive-subtle);color:var(--inactive)}.people-status--leave{background:var(--warning-subtle);color:var(--warning)}.people-table__row{cursor:pointer}.people-table__row:hover td{background:var(--surface-hover)}.people-table__row--readonly{cursor:default}.clients-add{display:flex;gap:.5rem}.clients-add input,.clients-inline input,.clients-inline select{padding:.45rem .625rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);font:inherit;font-size:.8125rem;color:var(--text-primary)}.clients-add input{min-width:14rem}.clients-error{margin:-.5rem 0 1rem}.clients-table{min-width:720px}.clients-table__name{font-weight:500;color:var(--text-primary)}.clients-table__buttons,.clients-inline{display:flex;align-items:center;gap:.4rem}.clients-inline__label{font-size:.75rem;color:var(--text-secondary);white-space:nowrap}.clients-table__delete:hover{color:#dc2626;border-color:#dc2626}.leave-year{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:var(--text-secondary)}.leave-input,.leave-year select{padding:.45rem .625rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);font:inherit;font-size:.8125rem;color:var(--text-primary);min-width:0}.leave-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:.75rem;margin-bottom:1.5rem}.leave-card{padding:.875rem 1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.leave-card__label{display:block;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.leave-card__value{display:block;margin-top:.25rem;font-size:1.375rem;font-weight:650;color:var(--text-primary)}.leave-card__value--negative{color:#dc2626}.leave-card__unit{font-size:.75rem;font-weight:500;color:var(--text-muted)}.leave-card__detail{display:block;margin-top:.2rem;font-size:.75rem;color:var(--text-secondary)}.leave-section{margin-bottom:1.75rem}.leave-section h2{margin:0 0 .75rem;font-size:.9375rem;font-weight:600;color:var(--text-primary)}.leave-form{display:grid;grid-template-columns:10rem 10rem 10rem 1fr;align-items:end;gap:.75rem;padding:1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.leave-form label,.leave-form__label{display:block;margin-bottom:.3rem;font-size:.75rem;font-weight:500;color:var(--text-secondary)}.leave-form .leave-input{width:100%}.leave-form__note{grid-column:1 / -2}.leave-form__submit{display:flex;flex-direction:column;align-items:flex-end;gap:.3rem}.leave-form__count{grid-column:1 / -1;margin:0;font-size:.8125rem;color:var(--text-secondary)}.leave-form__count--over{color:#dc2626}.leave-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.leave-table{width:100%;border-collapse:collapse;font-size:.8125rem}.leave-table th{text-align:left;padding:.625rem 1rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);white-space:nowrap}.leave-table td{padding:.625rem 1rem;border-top:1px solid var(--border);vertical-align:middle;color:var(--text-secondary)}.leave-table td.leave-table__num,.leave-table th.leave-table__num{text-align:right;white-space:nowrap}.leave-table__name{font-weight:500;color:var(--text-primary)}.leave-table__muted td{opacity:.6}.leave-table__negative{color:#dc2626;font-weight:600}.leave-table__actions{display:flex;align-items:center;justify-content:flex-end;gap:.4rem;white-space:nowrap}.leave-table__sub{display:block;margin-top:.15rem;font-size:.75rem;color:var(--text-muted)}.leave-days-input{width:4.5rem;text-align:right}.leave-empty{margin:0;padding:1.25rem;font-size:.8125rem;color:var(--text-muted)}.leave-notice{margin:0 0 1rem;font-size:.8125rem;color:var(--success)}.leave-inline{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;justify-content:flex-end}@media(max-width:900px){.leave-form{grid-template-columns:1fr 1fr}.leave-form__note{grid-column:1 / -1}}.leave-inline--start{justify-content:flex-start;margin-bottom:.75rem}.leave-tabs{display:flex;gap:.25rem;margin:-.5rem 0 1.25rem;border-bottom:1px solid var(--border)}.leave-tabs__tab{padding:.5rem .875rem;border-bottom:2px solid transparent;margin-bottom:-1px;font-size:.8125rem;font-weight:500;color:var(--text-secondary);text-decoration:none}.leave-tabs__tab:hover{color:var(--text-primary)}.leave-tabs__tab--active{border-bottom-color:var(--accent);color:var(--accent)}.leave-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:1rem}.leave-toolbar .page-subtitle{margin:0}.leave-table__toggle{display:inline-flex;align-items:center;gap:.35rem;padding:0;border:none;background:none;font:inherit;font-weight:inherit;color:inherit;cursor:pointer;text-align:left}.leave-table__toggle span{width:.75rem;color:var(--text-muted)}.leave-table__row--open>td{background:var(--surface-hover)}.leave-table__detail-row>td{padding:.25rem 1rem 1rem 2rem;background:var(--surface-hover)}.leave-table--nested{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.leave-balance-input{width:4.5rem;text-align:right;font-weight:600;border-color:transparent;background:transparent}.leave-balance-input:hover,.leave-balance-input:focus{border-color:var(--border);background:var(--surface)}.leave-sort{padding:0;border:none;background:none;font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer}.leave-sort:hover{color:var(--text-primary)}.leave-table td.leave-table__total{font-weight:800;color:var(--text-primary);background:var(--accent-subtle)}.filter-toggle{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:var(--surface);border:1px solid var(--border);border-radius:8px;font-size:.8125rem;font-weight:500;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.filter-toggle input{position:absolute;opacity:0;pointer-events:none}.filter-toggle__switch{position:relative;width:1.75rem;height:1rem;border-radius:999px;background:var(--inactive-subtle);transition:background .15s}.filter-toggle__switch:after{content:"";position:absolute;top:2px;left:2px;width:.75rem;height:.75rem;border-radius:50%;background:var(--surface);box-shadow:var(--shadow-sm);transition:transform .15s}.filter-toggle--on{color:var(--text-primary)}.filter-toggle--on .filter-toggle__switch{background:var(--accent)}.filter-toggle--on .filter-toggle__switch:after{transform:translate(.75rem)}.filter-toggle input:focus-visible+.filter-toggle__switch{outline:2px solid var(--accent);outline-offset:2px}.team-cal__toolbar{flex-wrap:wrap}.team-cal__nav{display:flex;align-items:center;gap:.4rem}.team-cal__title{min-width:10rem;margin:0;text-align:center;font-size:1rem;font-weight:600;color:var(--text-primary)}.team-cal__legend{display:flex;flex-wrap:wrap;gap:.4rem 1rem;margin:0 0 .75rem;padding:0;list-style:none;font-size:.75rem;color:var(--text-secondary)}.team-cal__legend li{display:flex;align-items:center;gap:.35rem}.team-cal__swatch{display:inline-block;width:.75rem;height:.75rem;border-radius:3px;padding:0}.team-cal__swatch--pending{border:1px dashed var(--text-muted)}.team-cal__swatch--holiday{background:var(--muted-subtle);border:1px dashed var(--inactive)}.team-cal{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}.team-cal--loading{opacity:.6}.team-cal__row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) repeat(2,minmax(0,.45fr))}.team-cal__weekday{padding:.5rem .625rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.team-cal__day{min-height:6.5rem;padding:.375rem .5rem .5rem;border-top:1px solid var(--border);border-left:1px solid var(--border);min-width:0}.team-cal__day:first-child{border-left:none}.team-cal__day--weekend{background:var(--surface-hover)}.team-cal__day--holiday{background:var(--muted-subtle)}.team-cal__day--outside .team-cal__date,.team-cal__day--outside .team-cal__list{opacity:.45}.team-cal__date{display:flex;align-items:center;justify-content:space-between;margin-bottom:.25rem;font-size:.75rem;font-weight:600;color:var(--text-secondary)}.team-cal__day--today .team-cal__date span:first-child{display:inline-flex;align-items:center;justify-content:center;min-width:1.5rem;height:1.5rem;border-radius:999px;background:var(--accent);color:#fff}.team-cal__count{font-size:.6875rem;font-weight:500;color:var(--text-muted)}.team-cal__holiday{font-size:.6875rem;font-weight:600;color:var(--text-secondary)}.team-cal__list{display:flex;flex-direction:column;gap:2px;margin:0;padding:0;list-style:none}.team-cal__chip{overflow:hidden;padding:1px 6px;border-radius:4px;font-size:.6875rem;font-weight:500;line-height:1.5;white-space:nowrap;text-overflow:ellipsis;border:1px solid transparent}.team-cal__chip--vacaciones{background:rgba(var(--time-off-rgb),.18);color:var(--text-primary);border-color:rgba(var(--time-off-rgb),.5)}.team-cal__chip--beneficio,.team-cal__chip--contractor{background:var(--success-subtle);color:var(--text-primary);border-color:var(--success)}.team-cal__chip--malestar{background:var(--warning-subtle);color:var(--text-primary);border-color:var(--warning)}.team-cal__chip--cumpleanos{background:var(--accent-subtle);color:var(--text-primary);border-color:var(--accent)}.team-cal__chip--estudio{background:#7c3aed1a;color:var(--text-primary);border-color:#7c3aed80}.team-cal__chip--licencia{background:var(--info-subtle);color:var(--text-primary);border-color:var(--info)}.team-cal__chip--enfermedad{background:#dc26261a;color:var(--text-primary);border-color:#dc262680}.team-cal__chip--ausencia{background:var(--muted-subtle);color:var(--text-primary);border-color:var(--inactive)}.team-cal__chip--otro{background:var(--planned-subtle);color:var(--text-primary);border-color:var(--planned)}.team-cal__chip--pending{border-style:dashed;background:transparent}.team-cal__partial{color:var(--text-muted)}.team-cal__more{margin-top:2px;padding:0;border:none;background:none;font:inherit;font-size:.6875rem;font-weight:600;color:var(--accent);cursor:pointer}@media(max-width:900px){.team-cal__row{grid-template-columns:repeat(5,minmax(0,1fr)) repeat(2,minmax(0,.3fr))}.team-cal__chip{font-size:.625rem}}.main:has(.dashboard-page--timeline){overflow:hidden;display:flex;flex-direction:column}.dashboard-page--timeline{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.dashboard-page--timeline .page-header{margin-bottom:1.25rem}.dashboard-page--timeline .filters{margin-bottom:1rem}.timeline{--person-col: 190px;--track-pad: .75rem;--scrollbar-size: 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0}.timeline__axis{display:flex;flex-shrink:0;background:var(--surface-hover);border-bottom:1px solid var(--border)}.timeline__axis-label{width:var(--person-col);flex-shrink:0;border-right:1px solid var(--border);background:var(--surface-hover)}.timeline__axis-track-clip{flex:1;min-width:0;overflow:hidden}.timeline__axis-track{position:relative;height:2.25rem;margin:0 var(--track-pad)}.timeline__axis-v-spacer{width:var(--scrollbar-size);flex-shrink:0;border-left:1px solid var(--border);background:var(--surface-hover)}.timeline__body{display:flex;flex:1;min-height:0}.timeline__scroll-y{flex:1;min-width:0;min-height:0;overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.timeline__scroll-y::-webkit-scrollbar{display:none}.timeline__scroll-x{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.timeline__scroll-x::-webkit-scrollbar{display:none}.timeline__inner{min-width:900px}.timeline__tick{position:absolute;top:0;bottom:0;display:flex;align-items:center;transform:translate(-50%);white-space:nowrap}.timeline__tick span{font-size:.6875rem;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.timeline__tick--year span{color:var(--text-secondary);font-weight:700}.timeline__today{position:absolute;top:0;bottom:0;transform:translate(-50%);display:flex;align-items:flex-end}.timeline__today span{font-size:.625rem;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.04em;background:var(--surface-hover);padding:0 .2rem}.timeline__rows{display:flex;flex-direction:column}.timeline__row{display:flex;align-items:stretch;border-bottom:1px solid var(--border)}.timeline__row:last-child{border-bottom:none}.timeline__person{width:var(--person-col);flex-shrink:0;padding:.75rem 1rem;border-right:1px solid var(--border);display:flex;flex-direction:column;gap:.15rem;justify-content:flex-start;position:sticky;left:0;z-index:5;background:var(--surface)}.timeline__person-name{font-size:.8125rem;font-weight:600;color:var(--text-primary)}.timeline__person-role{font-size:.6875rem;color:var(--text-muted)}.timeline__track{position:relative;flex:1;min-height:3rem;margin:0 var(--track-pad);display:flex;flex-direction:column;gap:.25rem;padding:.5rem 0;justify-content:center}.timeline__gridline{position:absolute;top:0;bottom:0;width:1px;background:var(--border);opacity:.5;transform:translate(-50%);pointer-events:none}.timeline__gridline--year{opacity:1}.timeline__today-line{position:absolute;top:0;bottom:0;z-index:4;width:3px;background:var(--accent);transform:translate(-50%);pointer-events:none}.timeline__time-off{position:absolute;top:2px;bottom:2px;z-index:2;min-width:6px;display:flex;align-items:flex-start;justify-content:center;overflow:hidden;border:2px solid rgb(var(--time-off-rgb));border-radius:4px;background:repeating-linear-gradient(-45deg,rgba(var(--time-off-rgb),.85) 0,rgba(var(--time-off-rgb),.85) 5px,rgba(var(--time-off-rgb),.35) 5px,rgba(var(--time-off-rgb),.35) 10px);box-shadow:0 0 0 1px var(--surface),var(--shadow-md)}.timeline__time-off--pending{border-style:dashed;background:rgba(var(--time-off-rgb),.12);box-shadow:none}.timeline__time-off--pending .timeline__time-off-label{background:transparent;color:rgb(var(--time-off-rgb))}.timeline__holiday{position:absolute;top:0;bottom:0;z-index:3;min-width:3px;background:color-mix(in srgb,var(--inactive) 62%,transparent);border-left:1px dashed var(--inactive)}.timeline__time-off--partial{top:45%}.timeline__time-off-label{margin-top:2px;padding:0 3px;border-radius:3px;background:rgb(var(--time-off-rgb));color:#1c1917;font-size:.625rem;font-weight:700;letter-spacing:.02em;white-space:nowrap}.timeline__person-free{font-size:.6875rem;font-weight:600;color:var(--success)}.timeline__person-leave{align-self:flex-start;margin-top:.15rem;padding:.05rem .4rem;border-radius:6px;background:var(--warning-subtle);color:var(--warning);font-size:.6875rem;font-weight:600}.timeline__add{align-self:flex-start;margin-top:.25rem;padding:.1rem .45rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);font-size:.6875rem;font-weight:500;color:var(--text-secondary);transition:background .15s,color .15s,border-color .15s}.timeline__add:hover{background:var(--surface-hover);color:var(--accent);border-color:var(--accent)}.timeline__row--inactive .timeline__person-name{color:var(--text-muted)}.timeline__person-inactive{font-weight:400}.timeline__capacity{position:relative}.timeline__bar{position:absolute;margin-top:1px;border-radius:4px;display:flex;align-items:flex-start;padding:2px .5rem 0;border:none;font:inherit;text-align:left;color:#fff;overflow:clip;box-shadow:var(--shadow-sm);cursor:pointer}.timeline__bar:hover{filter:brightness(1.08)}.timeline__bar:focus-visible{outline:2px solid var(--text-primary);outline-offset:1px}.timeline__bar--ongoing:focus-visible{-webkit-mask-image:none;mask-image:none}.timeline__overload{position:absolute;top:-1px;z-index:2;box-sizing:border-box;border:4px solid #dc2626;border-radius:4px;pointer-events:none}.timeline__bar--joins-previous{border-top-left-radius:0;border-bottom-left-radius:0}.timeline__bar--joins-next{border-top-right-radius:0;border-bottom-right-radius:0}.timeline__bar--ongoing{border-top-right-radius:0;border-bottom-right-radius:0;-webkit-mask-image:linear-gradient(to right,#000 88%,transparent 100%);mask-image:linear-gradient(to right,#000 88%,transparent 100%)}.timeline__bar-label{position:sticky;left:calc(var(--person-col, 190px) + .5rem);display:flex;align-items:baseline;gap:.4rem;font-size:.75rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline__bar-meta{font-size:.6875rem;font-weight:500;opacity:.85}.timeline__empty{font-size:.75rem;color:var(--text-muted);font-style:italic}.timeline__scrollbar{position:relative;background:var(--surface-hover);touch-action:none;flex-shrink:0}.timeline__scrollbar--horizontal{display:flex;height:var(--scrollbar-size);border-top:1px solid var(--border)}.timeline__scrollbar-corner{width:var(--scrollbar-size);flex-shrink:0;border-right:1px solid var(--border);background:var(--surface-hover)}.timeline__scrollbar-track{position:relative;flex:1;min-width:0;cursor:pointer}.timeline__scrollbar--vertical{width:var(--scrollbar-size);border-left:1px solid var(--border);cursor:pointer}.timeline__scrollbar-thumb{position:absolute;border-radius:4px;background:var(--text-muted);cursor:grab;touch-action:none;transition:background .15s}.timeline__scrollbar--horizontal .timeline__scrollbar-thumb{top:3px;height:8px}.timeline__scrollbar--vertical .timeline__scrollbar-thumb{left:3px;width:8px}.timeline__scrollbar-thumb:hover{background:var(--text-secondary)}.timeline__scrollbar-thumb:active{cursor:grabbing;background:var(--text-secondary)}.timeline__popup{position:fixed;z-index:50;width:264px;padding:.625rem .75rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);box-shadow:var(--shadow-md);font-size:.75rem;color:var(--text-secondary);pointer-events:none}.timeline__popup-title{display:flex;align-items:center;gap:.4rem;margin-bottom:.3rem;font-size:.8125rem;font-weight:600;color:var(--text-primary)}.timeline__popup-dot{width:.625rem;height:.625rem;flex-shrink:0;border-radius:3px}.timeline__popup-dot--holiday{background:var(--muted-subtle);border:1px dashed var(--inactive)}.timeline__popup-dot--time-off{border:1px solid rgb(var(--time-off-rgb));background:repeating-linear-gradient(-45deg,rgba(var(--time-off-rgb),.85) 0,rgba(var(--time-off-rgb),.85) 2px,rgba(var(--time-off-rgb),.35) 2px,rgba(var(--time-off-rgb),.35) 4px)}.timeline__popup-tag{margin-left:auto;padding:.05rem .4rem;border-radius:999px;font-size:.625rem;font-weight:600}.timeline__popup-tag--past{background:var(--muted-subtle);color:var(--text-muted)}.timeline__popup-tag--current{background:var(--success-subtle);color:var(--success)}.timeline__popup-tag--upcoming{background:var(--info-subtle);color:var(--info)}.timeline__popup-row{line-height:1.5}.timeline__popup-row strong{color:var(--text-primary)}.timeline__popup-hint{margin-top:.3rem;font-size:.6875rem;color:var(--text-muted)}.timeline__bar--dimmed{opacity:.25}.filters--paired .filter-toggle{min-width:18rem}.filters--paired .filters__aside{display:flex;align-items:center;gap:.75rem;justify-content:flex-start;min-width:18rem}.timeline__person-head{display:flex;align-items:center;justify-content:space-between;gap:.4rem}.timeline__toggle{align-self:auto;margin-top:0;flex-shrink:0;padding:0 .4rem;line-height:1.25}.timeline__row .timeline__person{padding:.3rem .75rem}.timeline__row .timeline__track{min-height:0;padding:2px 0}.timeline__row .timeline__bar{padding-top:0;align-items:center}.timeline__row .timeline__bar-label{font-size:.6875rem}.filters--paired{row-gap:.4rem}.timeline__bar--draggable{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.timeline__bar-handle{position:absolute;top:0;bottom:0;z-index:1;width:8px;display:flex;align-items:center;justify-content:center;cursor:ew-resize}.timeline__bar-handle--start{left:0}.timeline__bar-handle--end{right:0}.timeline__bar-grip{display:flex;flex-direction:column;gap:2px;opacity:.4;transition:opacity .15s}.timeline__bar:hover .timeline__bar-grip{opacity:.8}.timeline__bar-grip>span{width:2px;height:2px;border-radius:50%;background:currentColor}.timeline__drag-error{margin:0 0 .75rem}.own-timeline{--person-col: 0px;flex:none;margin-bottom:1.5rem}.own-timeline__scroll{overflow-x:auto}.own-timeline__track{border-top:1px solid var(--border)}.own-timeline__bar{cursor:default}.hover-popup{position:fixed;z-index:50;width:280px;padding:.625rem .75rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);box-shadow:var(--shadow-md);font-size:.75rem;color:var(--text-secondary);pointer-events:none}.hover-popup__title{display:flex;align-items:center;gap:.4rem;margin-bottom:.3rem;font-size:.8125rem;font-weight:600;color:var(--text-primary)}.hover-popup__tag{margin-left:auto;padding:.05rem .4rem;border-radius:999px;background:var(--muted-subtle);color:var(--text-muted);font-size:.625rem;font-weight:600}.hover-popup__row{line-height:1.5}.hover-popup__list{margin:.35rem 0 0;padding-left:1rem;line-height:1.5}.hover-popup__hint{margin-top:.3rem;font-size:.6875rem;color:var(--text-muted)}.users-roles{display:flex;flex-wrap:wrap;gap:.35rem}.users-role{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .55rem;border:1px solid var(--border);border-radius:999px;font-size:.75rem;color:var(--text-secondary);cursor:pointer}.users-role--on{border-color:var(--accent);background:var(--accent-subtle);color:var(--accent)}.users-role input{margin:0}.person-access{display:flex;flex-direction:column;align-items:flex-start;gap:.75rem;margin-bottom:1rem}.person-access .modal__field{width:100%}.person-access__line{margin:0;font-size:.875rem;color:var(--text-primary)}.person-access__note,.person-access__label{margin:0;font-size:.75rem;color:var(--text-muted)}.person-access__pending{color:var(--warning)}.person-access__ok{margin:0;font-size:.8125rem;color:var(--success)}.seniority-badge{display:inline-flex;padding:.15rem .45rem;border-radius:4px;font-size:.6875rem;font-weight:600}.seniority-badge--junior{background:#e0f2fe;color:#0369a1}.seniority-badge--semi-senior{background:#ede9fe;color:#6d28d9}.seniority-badge--senior{background:#fef3c7;color:#b45309}.seniority-badge--lead{background:#fce7f3;color:#be185d}:root[data-theme=dark] .seniority-badge--junior{background:#0369a133;color:#7dd3fc}:root[data-theme=dark] .seniority-badge--semi-senior{background:#6d28d933;color:#c4b5fd}:root[data-theme=dark] .seniority-badge--senior{background:#b4530933;color:#fcd34d}:root[data-theme=dark] .seniority-badge--lead{background:#be185d33;color:#f9a8d4}.relacion-dist__empty{font-size:.8125rem;color:var(--text-muted)}.relacion-dist__legend{display:flex;align-items:center;gap:1rem;margin-top:.25rem;margin-bottom:.625rem;flex-wrap:wrap}.relacion-dist__legend-item{display:flex;align-items:center;gap:.375rem;font-size:.6875rem;color:var(--text-secondary)}.relacion-dist__legend-count{font-weight:600;color:var(--text-primary);font-variant-numeric:tabular-nums}.relacion-dist__legend-dot{width:8px;height:8px;border-radius:999px;flex-shrink:0}.relacion-dist__legend-dot--empleado{background:var(--accent)}.relacion-dist__legend-dot--contractor{background:var(--warning, #b45309)}.relacion-dist__legend-dot--externo{background:var(--planned)}.relacion-dist__ratio-bar{display:flex;height:10px;border-radius:999px;overflow:hidden;background:var(--surface-hover)}.relacion-dist__ratio-segment{height:100%;min-width:4px;transition:width .3s ease}.relacion-dist__ratio-segment--empleado{background:var(--accent)}.relacion-dist__ratio-segment--contractor{background:var(--warning, #b45309)}.relacion-dist__ratio-segment--externo{background:var(--planned)}.role-dist__empty{font-size:.8125rem;color:var(--text-muted)}.role-dist__legend{display:flex;align-items:center;gap:1rem;margin-top:.25rem;margin-bottom:.625rem;flex-wrap:wrap}.role-dist__legend-item{display:flex;align-items:center;gap:.375rem;font-size:.6875rem;color:var(--text-secondary)}.role-dist__legend-dot{width:8px;height:8px;border-radius:999px;flex-shrink:0}.role-dist__legend-dot--active{background:var(--accent)}.role-dist__legend-dot--inactive{background:var(--inactive)}.role-dist__legend-hint{margin-left:auto;font-size:.625rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.role-dist__bars{display:flex;flex-direction:column;gap:.5rem}.role-dist__row{display:grid;grid-template-columns:120px 1fr 2.75rem;align-items:center;gap:.625rem}.role-dist__label{font-size:.75rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.role-dist__track{height:6px;background:var(--surface-hover);border-radius:999px;overflow:hidden}.role-dist__stack{display:flex;height:100%;min-width:4px;border-radius:999px;overflow:hidden}.role-dist__fill{height:100%;min-width:2px;transition:width .3s ease}.role-dist__fill--active{background:var(--accent)}.role-dist__fill--inactive{background:var(--inactive)}.role-dist__count{font-size:.75rem;font-weight:600;color:var(--text-primary);text-align:right;font-variant-numeric:tabular-nums}@media(max-width:480px){.role-dist__row{grid-template-columns:90px 1fr 2.5rem}.role-dist__legend-hint{margin-left:0;width:100%}}.assignment-modal{max-width:460px}.assignment-modal__person{margin:.125rem 0 0;font-size:.8125rem;color:var(--text-muted)}.modal__row.assignment-modal__row{grid-template-columns:repeat(2,1fr)}.assignment-modal .modal__field input[readonly]{background:var(--surface-hover);color:var(--text-secondary)}.assignment-modal__hint,.assignment-modal__clear-end{display:block;margin-top:.3rem;font-size:.75rem}.assignment-modal__hint{color:var(--text-muted)}.assignment-modal__clear-end{padding:0;border:none;background:none;color:var(--accent)}.assignment-modal__clear-end:hover{text-decoration:underline}@media(max-width:520px){.modal__row.assignment-modal__row{grid-template-columns:1fr}}.person-project{max-width:640px}.person-project:focus{outline:none}.person-project__body{display:flex;flex-direction:column;align-items:flex-start;gap:.875rem;padding:1.25rem 1.5rem 1.5rem}.person-project__empty{margin:0;font-size:.8125rem;color:var(--text-muted)}.person-project__list{align-self:stretch;display:grid;grid-template-columns:minmax(0,1fr) repeat(4,auto);gap:.375rem .75rem;margin:0;padding:0;list-style:none}.person-project__item{display:grid;grid-column:1 / -1;grid-template-columns:subgrid;align-items:center;padding:.375rem .5rem .375rem .75rem;border:1px solid var(--border);border-radius:8px;font-size:.8125rem;color:var(--text-secondary)}.person-project__item--past{opacity:.6}.person-project__item--current{border-color:var(--accent);background:var(--accent-subtle)}.person-project__role{overflow:hidden;font-weight:600;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap}.person-project__hours,.person-project__dates{font-variant-numeric:tabular-nums;white-space:nowrap}.person-project__hours{color:var(--text-muted)}.person-project__tag{justify-self:start;padding:.05rem .45rem;border-radius:999px;font-size:.6875rem;font-weight:600;white-space:nowrap}.person-project__tag--past{background:var(--muted-subtle);color:var(--text-secondary)}.person-project__tag--current{background:var(--success-subtle);color:var(--success)}.person-project__tag--upcoming{background:var(--info-subtle);color:var(--info)}@media(max-width:560px){.person-project__list{display:flex;flex-direction:column}.person-project__item{display:flex;flex-wrap:wrap;gap:.25rem .625rem}.person-project__edit{margin-left:auto}}.billing-badge{display:inline-flex;align-items:center;padding:.2rem .5rem;border-radius:999px;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.billing-badge--fixed{background:#4f46e51a;color:var(--accent)}.billing-badge--tm{background:#0e74901a;color:#0e7490}:root[data-theme=dark] .billing-badge--tm{background:#22d3ee1f;color:#67e8f9}.status-badge{display:inline-flex;align-items:center;padding:.2rem .5rem;border-radius:999px;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.status-badge--activo{background:var(--success-subtle);color:var(--success)}.status-badge--por_iniciar{background:var(--info-subtle);color:var(--info)}.status-badge--proyectado{background:var(--planned-subtle);color:var(--planned)}.status-badge--finalizado{background:var(--muted-subtle);color:var(--text-muted)}.project-card{background:var(--surface);border:1px solid var(--border);border-left-width:4px;border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.project-card__header{display:flex;align-items:center;gap:1.5rem;width:100%;padding:.7rem 1.25rem;border:none;background:transparent;text-align:left;cursor:pointer;transition:background .15s}.project-card__header:hover{background:var(--surface-hover)}.project-card__info{flex:1;min-width:0}.project-card__title-row{display:flex;align-items:center;gap:.625rem;flex-wrap:wrap}.project-card__title-row h2{font-size:1rem;color:var(--text-primary)}.project-card__client{margin-top:.2rem;font-size:.8125rem;color:var(--text-muted)}.project-card__meta{display:flex;gap:1.5rem;flex-shrink:0}.project-card__stat{display:flex;flex-direction:column;align-items:flex-end;min-width:72px;flex-shrink:0}.project-card__stat-value{font-size:.9375rem;font-weight:600;color:var(--text-primary)}.project-card__stat-label{font-size:.6875rem;color:var(--text-muted);white-space:nowrap}.project-card__chevron{color:var(--text-muted);font-size:.875rem;transition:transform .2s;flex-shrink:0}.project-card__edit{flex-shrink:0;padding:.3rem .625rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);font-size:.75rem;font-weight:500;color:var(--text-secondary);transition:background .15s,color .15s,border-color .15s}.project-card__edit:hover{background:var(--surface-hover);color:var(--accent);border-color:var(--accent)}.project-card__chevron--open{transform:rotate(180deg)}.project-card__body{border-top:1px solid var(--border);overflow-x:auto}.roles-section{padding:.6rem 1.25rem;border-bottom:1px solid var(--border);background:var(--surface-hover)}.roles-section__title{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin-bottom:.4rem}.project-notes{padding:.6rem 1.25rem;border-bottom:1px solid var(--border)}.roles-grid{display:flex;flex-wrap:wrap;gap:.5rem}.role-slot{display:flex;align-items:center;gap:.5rem;padding:.25rem .55rem;border-radius:6px;border:1px solid var(--border);background:var(--surface);font-size:.8125rem}.role-slot--complete{border-color:var(--success);background:var(--success-subtle)}.role-slot--partial{border-color:var(--warning);background:var(--warning-subtle)}.role-slot--missing{border-color:var(--border);opacity:.7}.role-slot__name{color:var(--text-secondary)}.role-slot__count{font-weight:700;color:var(--text-primary);font-variant-numeric:tabular-nums}.team-table{width:100%;min-width:1000px;border-collapse:collapse;font-size:.8125rem}.team-table th{text-align:left;padding:.45rem 1.25rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--surface-hover);white-space:nowrap}.team-table td{padding:.4rem 1.25rem;border-top:1px solid var(--border);vertical-align:middle;color:var(--text-secondary)}.team-table__row{cursor:pointer}.team-table__row:hover td{background:var(--surface-hover)}.team-table__row--inactive{opacity:.45}.team-table__row--past{opacity:.75}.team-table__row--deactivated{opacity:.45;filter:grayscale(1)}.team-table__row--deactivated .member-cell__name{text-decoration:line-through;text-decoration-color:var(--text-muted)}.team-table__empty{padding:1rem;font-size:.8125rem;color:var(--text-muted);text-align:center}.member-cell__tag{display:inline-block;margin-left:.4rem;padding:.05rem .4rem;border-radius:999px;background:var(--inactive-subtle);color:var(--inactive);font-size:.625rem;font-weight:600;vertical-align:middle}.member-cell__tag--past{background:var(--muted-subtle);color:var(--text-muted)}.member-cell__tag--upcoming{background:var(--info-subtle);color:var(--info)}.allocation-cell__over{padding:.05rem .4rem;border-radius:999px;background:#dc262614;color:#dc2626;font-size:.6875rem;font-weight:600;white-space:nowrap}.allocation-cell__period{display:block;margin-top:.2rem;font-size:.6875rem;color:var(--text-muted);white-space:nowrap}.member-cell{display:flex;align-items:center;gap:.625rem}.member-cell__avatar{width:26px;height:26px;border-radius:8px;background:var(--accent-subtle);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:.6875rem;font-weight:700;flex-shrink:0}.member-cell__name{display:block;font-weight:500;color:var(--text-primary)}.member-cell__open{padding:0;border:none;background:none;font:inherit;color:inherit;text-align:left;text-decoration:inherit}.member-cell__open:hover{color:var(--accent)}.member-cell__open:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.member-role-cell__current{font-weight:500;color:var(--text-primary)}.member-role-cell__others{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.25rem}.role-tag{padding:.1rem .35rem;border-radius:4px;font-size:.625rem;background:var(--surface-hover);color:var(--text-muted);white-space:nowrap}.allocation-cell{display:flex;align-items:center;gap:.5rem;min-width:100px}.allocation-cell__bar{flex:1;height:5px;background:var(--surface-hover);border-radius:999px;overflow:hidden;max-width:60px}.allocation-cell__fill{height:100%;background:var(--accent);border-radius:999px}.skills-list{display:flex;flex-wrap:wrap;gap:.3rem}.skill-tag{padding:.15rem .45rem;border-radius:4px;font-size:.6875rem;background:var(--surface-hover);color:var(--text-secondary);white-space:nowrap}@media(max-width:768px){.project-card__header{flex-wrap:wrap}.project-card__meta{width:100%;justify-content:flex-start}.project-card__stat{align-items:flex-start}.project-card__chevron{position:absolute;right:1.25rem}.project-card__header{position:relative;padding-right:2.5rem}}.project-card__toggle{min-width:1.75rem;padding:.15rem .45rem;font-size:.875rem;line-height:1.2}.roles-inline{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.35rem}.roles-inline__item{padding:.05rem .4rem;border:1px solid var(--border);border-radius:4px;font-size:.6875rem;color:var(--text-muted);white-space:nowrap}.roles-inline__item strong{color:var(--text-primary);font-variant-numeric:tabular-nums}.roles-inline__item--complete{border-color:var(--success);background:var(--success-subtle)}.roles-inline__item--partial{border-color:var(--warning);background:var(--warning-subtle)}.project-card--compact .project-card__header{padding:.3rem 1rem}.project-card--compact .project-card__title-row{line-height:1.25}.project-card--compact .project-card__title-row h2{font-size:.9375rem}.project-card--compact .project-card__client{margin-top:0;font-size:.75rem;line-height:1.3}.project-card--compact .roles-inline{margin-top:.15rem}.project-card--compact .project-card__stat-value{font-size:.875rem}.project-card--compact .project-card__stat-label{font-size:.625rem}.project-card__stat--hidden{visibility:hidden}@media(min-width:769px){.project-card__stat:nth-child(1),.project-card__stat:nth-child(2){width:8.75rem}.project-card__stat:nth-child(3),.project-card__stat:nth-child(4){width:7.25rem}}.users-add{display:grid;grid-template-columns:1fr 1fr 1.2fr 1fr auto;gap:.5rem;margin-bottom:1rem}.users-add input,.users-add select,.users-person{padding:.45rem .625rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);font:inherit;font-size:.8125rem;color:var(--text-primary);min-width:0}.users-add__rule{grid-column:1 / -1;margin:0;font-size:.75rem;color:var(--text-muted)}.users-add__rule--bad{color:#dc2626}.users-notice{margin:-.25rem 0 1rem;font-size:.8125rem;color:var(--success)}.users-you{margin-left:.4rem;padding:.05rem .4rem;border-radius:999px;background:var(--accent-subtle);color:var(--accent);font-size:.6875rem;font-weight:600}@media(max-width:900px){.users-add{grid-template-columns:1fr}}.users-add .users-roles{grid-column:1 / -1}.users-person{max-width:13rem}.users-pending{margin-left:.4rem;padding:.05rem .4rem;border-radius:999px;background:#f59e0b26;color:#b45309;font-size:.6875rem;font-weight:600}.users-hint{margin:0 0 1rem;font-size:.8125rem;color:var(--text-muted)}.users-filter{display:inline-flex;align-items:center;gap:.4rem;margin-bottom:.75rem;font-size:.8125rem;color:var(--text-secondary, var(--text-muted))}.layout{display:flex;height:100vh;min-height:100vh}.sidebar{width:260px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);padding:1.5rem 1rem;display:flex;flex-direction:column;gap:2rem;min-height:100vh}.sidebar__nav{flex:1;display:flex;flex-direction:column;gap:.25rem}.sidebar__brand{display:flex;align-items:center;gap:.75rem;padding:0 .5rem}.sidebar__brand strong{display:block;font-size:1rem;color:var(--text-primary);letter-spacing:-.02em}.sidebar__brand span{display:block;font-size:.75rem;color:var(--text-muted)}.sidebar__logo{display:block;flex-shrink:0;width:28px;height:24px}.sidebar__user{display:flex;flex-direction:column;gap:.1rem;margin-top:auto;margin-bottom:.75rem;padding:0 .25rem;min-width:0}.sidebar__user-name{font-size:.8125rem;font-weight:600;color:var(--text-primary)}.sidebar__user-meta{font-size:.6875rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__user-link{align-self:flex-start;padding:0;border:none;background:none;font:inherit;font-size:.75rem;color:var(--accent)}.sidebar__user-link:hover{text-decoration:underline}.sidebar__user+.sidebar__footer{margin-top:0}.sidebar__footer{display:flex;align-items:stretch;gap:.5rem;margin-top:auto}.theme-switch{display:flex;gap:.125rem;padding:.2rem;border:1px solid var(--border);border-radius:8px}.theme-switch__option{display:flex;align-items:center;justify-content:center;width:1.75rem;border:none;border-radius:6px;background:transparent;color:var(--text-muted)}.theme-switch__option:hover{color:var(--text-primary)}.theme-switch__option--active{background:var(--accent-subtle);color:var(--accent)}.sidebar__logout{flex:1;min-width:0;padding:.625rem .75rem;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--text-secondary);font:inherit;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s}.sidebar__logout:hover{background:var(--surface-hover);color:var(--text-primary)}.sidebar__link{display:flex;align-items:center;gap:.625rem;padding:.625rem .75rem;border-radius:8px;font-size:.875rem;font-weight:500;color:var(--text-secondary);text-decoration:none;transition:background .15s,color .15s}.sidebar__link:hover:not(.sidebar__link--disabled){background:var(--surface-hover);color:var(--text-primary)}.sidebar__link--active{background:var(--accent-subtle);color:var(--accent)}.sidebar__link--disabled{opacity:.55;cursor:not-allowed}.sidebar__icon{display:flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;flex-shrink:0}.sidebar__badge{margin-left:auto;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:.125rem .375rem;border-radius:4px;background:var(--surface-hover);color:var(--text-muted)}.main{flex:1;overflow-y:auto;padding:2rem 2.5rem;background:var(--bg)}@media(max-width:768px){.layout{flex-direction:column}.sidebar{width:100%;border-right:none;border-bottom:1px solid var(--border);padding:1rem}.sidebar__nav{flex-direction:row;overflow-x:auto}.main{padding:1.25rem}}.auth-loading{display:grid;place-items:center;min-height:100vh;color:var(--text-secondary)}.login-page{display:grid;place-items:center;min-height:100vh;padding:24px;background:radial-gradient(circle at top,rgba(79,70,229,.08),transparent 45%),var(--bg)}.login-card{width:min(100%,400px);display:flex;flex-direction:column;gap:20px;padding:32px;background:var(--surface);border:1px solid var(--border);border-radius:calc(var(--radius) + 4px);box-shadow:var(--shadow-md)}.login-card__brand{display:flex;align-items:center;gap:14px}.login-card__logo{display:block;flex-shrink:0;width:44px;height:44px;object-fit:contain}.login-card__brand h1{margin:0;font-size:22px}.login-card__brand p{margin:4px 0 0;color:var(--text-secondary)}.login-card__field{display:flex;flex-direction:column;gap:8px;font-weight:500}.login-card__field input{padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);font:inherit;color:var(--text-primary);caret-color:var(--text-primary);background:var(--surface)}.login-card__field input:-webkit-autofill,.login-card__field input:-webkit-autofill:hover,.login-card__field input:-webkit-autofill:focus{-webkit-text-fill-color:var(--text-primary);box-shadow:0 0 0 1000px var(--surface) inset}.login-card__field input:focus{outline:2px solid var(--accent-subtle);border-color:var(--accent)}.login-card__error{margin:0;color:#dc2626;font-size:13px}.login-card__submit{padding:10px 14px;border:none;border-radius:var(--radius);background:var(--accent);color:#fff;font:inherit;font-weight:600;cursor:pointer}.login-card__submit:disabled{opacity:.7;cursor:not-allowed}.login-card__submit:hover:not(:disabled){filter:brightness(.95)}.login-card__google{display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text-primary);font-weight:600;text-decoration:none}.login-card__google:hover{background:var(--bg)}.login-card__divider{display:flex;align-items:center;gap:10px;color:var(--text-muted);font-size:.75rem}.login-card__divider:before,.login-card__divider:after{content:"";flex:1;border-top:1px solid var(--border)}
