body{color:#1e293b;-webkit-font-smoothing:antialiased;background:#f1f5f9;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}#root{min-height:100vh}:root{--brand-orange:#f05a28;--brand-blue:#1b2b5e;--brand-orange-light:#fef0eb;--brand-blue-light:#eef1f8}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{color:#1e293b;background:#f1f5f9;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button{cursor:pointer;font:inherit}input,select{font:inherit}.app{flex-direction:column;min-height:100vh;display:flex}.app-header{background:var(--brand-blue);color:#fff;flex-wrap:wrap;align-items:center;gap:16px;min-height:60px;padding:0 24px;display:flex;box-shadow:0 2px 8px #1b2b5e4d}.app-title{white-space:nowrap;align-items:center;gap:12px;font-size:16px;font-weight:600;display:flex}.app-logo-img{object-fit:contain;background:#fff;border-radius:6px;width:auto;height:40px;padding:4px 8px;display:block}.app-title-sep{background:#ffffff40;width:1px;height:28px;display:block}.header-alert{font-size:16px;animation:1.5s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.app-nav{gap:4px;margin-left:auto;display:flex}.nav-tab{color:#94a3b8;background:0 0;border:none;border-radius:6px;padding:8px 14px;font-size:14px;transition:background .15s,color .15s}.nav-tab:hover{color:#fff;background:#ffffff1f}.nav-tab.active{background:var(--brand-orange);color:#fff}.app-main{flex:1;padding:24px}.alert-banner{color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;align-items:center;gap:8px;margin-bottom:16px;padding:10px 16px;font-size:14px;animation:2s infinite pulse;display:flex}.panel{background:#fff;border-radius:12px;padding:24px;box-shadow:0 1px 4px #00000014}.panel-header{flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:20px;display:flex}.panel-header h2{font-size:20px;font-weight:700}.btn{color:#374151;white-space:nowrap;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:7px;padding:7px 14px;font-size:14px;transition:background .15s}.btn:hover{background:#e2e8f0}.btn-primary{background:var(--brand-orange);border-color:var(--brand-orange);color:#fff}.btn-primary:hover{background:#d44e20}.btn-icon{opacity:.7;background:0 0;border:none;border-radius:5px;padding:4px 6px;font-size:16px;transition:opacity .15s,background .15s}.btn-icon:hover{opacity:1;background:#f1f5f9}.card-list{flex-direction:column;gap:8px;display:flex}.card{background:#fafafa;border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:12px;padding:12px 16px;transition:border-color .2s;display:flex}.card-critical{background:#fff5f5;border-color:#fecaca;animation:2s infinite pulse-border}@keyframes pulse-border{0%,to{border-color:#fecaca}50%{border-color:#ef4444}}.card-color{border-radius:4px;flex-shrink:0;width:14px;height:36px}.card-body{flex:1;min-width:0}.card-name{align-items:center;gap:6px;font-size:15px;font-weight:600;display:flex}.critical-icon{font-size:14px}.card-meta{flex-wrap:wrap;align-items:center;gap:8px;margin-top:3px;display:flex}.card-sub{color:#64748b;font-size:13px}.card-actions{gap:4px;display:flex}.consultant-flag{margin-right:4px}.card-contact{color:var(--brand-blue);align-items:center;gap:3px;font-size:12px;text-decoration:none;display:inline-flex}.card-contact:hover{text-decoration:underline}.location-radio{flex-wrap:wrap;gap:8px;display:flex}.location-option{cursor:pointer;border:2px solid #e2e8f0;border-radius:7px;align-items:center;gap:6px;padding:7px 14px;font-size:13px;transition:all .15s;display:flex}.location-option input{display:none}.location-option:hover{border-color:#94a3b8}.location-option.selected{border-color:var(--brand-orange);background:var(--brand-orange-light);font-weight:600}.location-flag{font-size:18px}.phone-preview{margin-top:6px}.phone-preview a{color:#25d366;font-size:13px;font-weight:600;text-decoration:none}.phone-preview a:hover{text-decoration:underline}.type-tag{border:1px solid;border-radius:20px;align-items:center;padding:2px 7px;font-size:11px;font-weight:600;display:inline-flex}.card-done{opacity:.85;background:#f5f3ff;border-color:#c7d2fe}.card-dates{color:#64748b;font-size:12px}.slip-badge{border-radius:20px;padding:2px 7px;font-size:11px;font-weight:600}.slip-late{color:#991b1b;background:#fee2e2}.slip-early{color:#166534;background:#dcfce7}.slip-ok{color:#065f46;background:#d1fae5}.slip-preview{text-align:center;border-radius:7px;margin-bottom:14px;padding:8px 12px;font-size:13px;font-weight:600}.slip-preview.slip-late{color:#991b1b;background:#fef2f2;border:1px solid #fecaca}.slip-preview.slip-early{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0}.slip-preview.slip-ok{color:#065f46;background:#f0fdf4;border:1px solid #bbf7d0}.form-section-title{text-transform:uppercase;letter-spacing:.05em;color:#64748b;border-bottom:1px solid #e2e8f0;margin:14px 0 8px;padding-bottom:4px;font-size:12px;font-weight:700}.form-date-pair{grid-template-columns:1fr 1fr;gap:12px;display:grid}.ts-no-alloc{opacity:.4}.ts-no-projects{color:#94a3b8;padding:8px 12px;font-size:13px}.type-badge{border:1px solid;border-radius:20px;padding:2px 8px;font-family:monospace;font-size:11px}.status-selector{flex-shrink:0;gap:4px;display:flex}.status-dot{white-space:nowrap;border:none;border-radius:20px;padding:3px 8px;font-size:11px;font-weight:600;transition:all .15s}.status-dot:not(.active){opacity:.5}.status-dot:hover{opacity:1}.status-radio{flex-wrap:wrap;gap:8px;display:flex}.status-option{cursor:pointer;border:2px solid #e2e8f0;border-radius:7px;align-items:center;gap:5px;padding:6px 12px;font-size:13px;transition:all .15s;display:flex}.status-option input{display:none}.status-option:hover{border-color:#94a3b8}.status-option.selected{font-weight:600}.criticality-radio{flex-wrap:wrap;gap:8px;display:flex}.criticality-option{cursor:pointer;border:2px solid #e2e8f0;border-radius:7px;align-items:center;gap:5px;padding:6px 12px;font-size:13px;transition:all .15s;display:flex}.criticality-option input{display:none}.criticality-option:hover{border-color:#94a3b8}.criticality-option.selected{font-weight:600}.empty{color:#94a3b8;padding:20px 0;font-size:14px}.modal-overlay{z-index:1000;background:#0006;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:#fff;border-radius:12px;width:460px;max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);margin:auto;padding:24px;overflow-y:auto;box-shadow:0 20px 60px #0003}.modal-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.modal-header h2{font-size:18px;font-weight:700}.modal-footer{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.form-row-2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.hour-range-preview{color:var(--brand-orange);background:var(--brand-orange-light);text-align:center;border:1px solid #f05a284d;border-radius:6px;margin-bottom:14px;padding:6px 12px;font-size:13px;font-weight:600}.form-field{margin-bottom:14px}.form-field label{color:#374151;margin-bottom:5px;font-size:13px;font-weight:600;display:block}.form-field input,.form-field select{background:#fff;border:1px solid #d1d5db;border-radius:7px;width:100%;padding:8px 10px;font-size:14px}.form-field input:focus,.form-field select:focus{border-color:var(--brand-orange);outline:none;box-shadow:0 0 0 3px #f05a2826}.form-error{color:#ef4444;margin-bottom:12px;font-size:13px}.pw-rules{margin:0;padding:6px 0 0;list-style:none}.pw-rule{padding:2px 0;font-size:12px}.pw-rule-neutral{color:#9ca3af}.pw-rule-ok{color:#10b981}.pw-rule-fail{color:#ef4444}.color-picker{flex-wrap:wrap;gap:8px;display:flex}.color-swatch{border:3px solid #0000;border-radius:50%;width:28px;height:28px;transition:transform .1s,border-color .1s}.color-swatch:hover{transform:scale(1.15)}.color-swatch.selected{border-color:#1e293b;transform:scale(1.15)}.filters{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.filters select{background:#fff;border:1px solid #d1d5db;border-radius:7px;min-width:160px;padding:7px 10px;font-size:13px}.workload-row{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;flex-direction:column;gap:6px;margin-bottom:16px;padding:12px 16px;display:flex}.workload-item{align-items:center;gap:10px;display:flex}.workload-label{color:#374151;white-space:nowrap;text-overflow:ellipsis;width:64px;font-size:12px;font-weight:600;overflow:hidden}.workload-bar-bg{background:#e2e8f0;border-radius:4px;flex:1;height:8px;overflow:hidden}.workload-bar-fill{border-radius:4px;height:100%;transition:width .3s}.workload-pct{color:#64748b;text-align:right;width:28px;font-size:11px}.occupation-bar-wrap{margin-bottom:16px}.occupation-bar-label{color:#64748b;margin-bottom:4px;font-size:13px}.occupation-bar-bg{background:#e2e8f0;border-radius:5px;height:10px;overflow:hidden}.occupation-bar-fill{border-radius:5px;height:100%;transition:width .3s}.project-breakdown{flex-wrap:wrap;gap:6px;margin-bottom:16px;display:flex}.breakdown-chip{border:1px solid;border-radius:20px;padding:3px 10px;font-size:12px;font-weight:500}.weekly-panel{overflow:hidden}.week-nav{flex-wrap:wrap;align-items:center;gap:8px;margin-left:auto;display:flex}.week-label{color:#374151;text-align:center;min-width:160px;font-size:14px;font-weight:600}.weekly-grid-wrapper{overflow-x:auto}.weekly-grid{border-collapse:collapse;width:100%;min-width:700px;font-size:13px}.weekly-grid th{text-align:center;color:#374151;background:#f8fafc;border:1px solid #e2e8f0;padding:8px 6px;font-weight:600}.th-hour{color:#94a3b8;width:56px}.th-today{background:var(--brand-orange-light);color:var(--brand-orange)}.th-weekend{color:#64748b;background:#f1f5f9}.th-date{color:#64748b;font-size:11px;font-weight:400}.td-hour{text-align:right;color:#94a3b8;white-space:nowrap;background:#fafafa;border:1px solid #e2e8f0;padding:6px 8px;font-size:12px}.td-cell{vertical-align:top;cursor:pointer;border:1px solid #e2e8f0;min-height:36px;padding:4px;transition:background .1s;position:relative}.td-cell:hover{background:var(--brand-orange-light)}.td-cell-readonly{cursor:default}.td-cell-readonly:hover{background:inherit}.td-weekend{background:#f8fafc}.td-weekend:hover{background:#eef1f8}.td-offhours{background:#fafafa}.td-offhours:hover{background:var(--brand-orange-light)}.alloc-chip{cursor:default;border-radius:4px;align-items:center;gap:3px;margin-bottom:2px;padding:3px 6px;font-size:11px;line-height:1.3;display:flex;position:relative}.chip-critical{outline-offset:1px;outline:2px solid #ef4444;animation:1.5s infinite pulse-outline}.chip-warning{outline-offset:1px;outline:2px solid #f59e0b}@keyframes pulse-outline{0%,to{outline-color:#ef4444}50%{outline-color:#fca5a5}}.alloc-icon{font-size:10px}.alloc-name{font-weight:600}.alloc-project{opacity:.85}.alloc-note{opacity:.8;font-style:italic}.alloc-remove{color:#ffffffb3;cursor:pointer;background:0 0;border:none;margin-left:auto;padding:0 2px;font-size:14px;line-height:1}.alloc-remove:hover{color:#fff}.btn-sm{padding:4px 10px;font-size:12px}.absence-section-title{text-transform:uppercase;letter-spacing:.05em;color:#64748b;margin:16px 0 8px;font-size:12px;font-weight:700}.absence-section-past{color:#94a3b8}.past-absences{opacity:.6}.absence-card{align-items:flex-start}.absence-active{background:#eff6ff;border-color:#bfdbfe}.absence-type-icon{border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;display:flex}.absence-consultant{font-size:10px}.absence-now-badge{background:var(--brand-orange);color:#fff;vertical-align:middle;border-radius:20px;margin-left:6px;padding:1px 6px;font-size:10px;font-weight:700}.absence-type-radio{flex-wrap:wrap;gap:8px;display:flex}.absence-type-option{cursor:pointer;border:2px solid #e2e8f0;border-radius:7px;align-items:center;gap:5px;padding:6px 12px;font-size:13px;transition:all .15s;display:flex}.absence-type-option input{display:none}.absence-type-option:hover{border-color:#94a3b8}.absence-type-option.selected{font-weight:600}.td-has-absence{background:#fafafa}.absence-day-banner{white-space:nowrap;text-overflow:ellipsis;pointer-events:none;border:1px solid;border-radius:3px;margin-bottom:2px;padding:2px 5px;font-size:10px;font-weight:600;overflow:hidden}.week-summary{border:1px solid #e2e8f0;border-radius:10px;margin-top:24px;overflow:hidden}.week-summary-header{cursor:pointer;-webkit-user-select:none;user-select:none;background:#f8fafc;border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.week-summary-header:hover{background:#f1f5f9}.week-summary-title{color:#1e293b;font-size:14px;font-weight:700}.week-summary-toggle{color:#64748b;font-size:12px}.week-summary-grid{background:#fff;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;padding:16px;display:grid}.week-summary-card{background:#fafafa;border:1px solid #e2e8f0;border-radius:8px;padding:12px;transition:box-shadow .15s}.week-summary-card:hover{box-shadow:0 2px 8px #00000014}.wsc-critical{background:#fff5f5;border-color:#fecaca;animation:2s infinite pulse-border}.wsc-top{align-items:flex-start;gap:10px;margin-bottom:10px;display:flex}.wsc-color{border-radius:3px;flex-shrink:0;width:12px;height:40px;margin-top:2px}.wsc-info{flex:1;min-width:0}.wsc-name{color:#1e293b;margin-bottom:4px;font-size:14px;font-weight:700}.wsc-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.wsc-type,.wsc-status{font-size:11px;font-weight:600}.wsc-hours{color:var(--brand-orange);white-space:nowrap;font-size:22px;font-weight:800;line-height:1}.wsc-consultants{flex-wrap:wrap;gap:5px;display:flex}.wsc-consultant-chip{border:1px solid;border-radius:20px;padding:2px 8px;font-size:11px;font-weight:600}.ts-hint{color:#64748b;margin-bottom:16px;font-size:13px}.ts-consultant-block{margin-bottom:28px}.ts-consultant-header{background:#f8fafc;border-left:4px solid;border-radius:0 8px 8px 0;align-items:center;gap:10px;margin-bottom:8px;padding:8px 12px;display:flex}.ts-consultant-name{font-size:15px;font-weight:700}.ts-consultant-role{color:#64748b;font-size:13px}.ts-total{color:var(--brand-orange);margin-left:auto;font-size:13px;font-weight:600}.ts-grid-wrapper{overflow-x:auto}.ts-grid{border-collapse:collapse;width:100%;min-width:600px;font-size:13px}.ts-grid th{text-align:center;color:#374151;background:#f8fafc;border:1px solid #e2e8f0;padding:7px 8px;font-size:12px;font-weight:600}.ts-th-project{text-align:left;min-width:160px}.ts-th-total{width:56px}.ts-th-today{background:var(--brand-orange-light);color:var(--brand-orange)}.ts-td-project{background:#fafafa;border:1px solid #e2e8f0;align-items:center;gap:8px;padding:6px 10px;display:flex}.ts-project-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.ts-type-tag{opacity:.8;font-size:11px;font-weight:600}.ts-td-cell{text-align:center;vertical-align:middle;border:1px solid #e2e8f0;padding:4px}.ts-has-value{background:#f0fdf4}.ts-today{background:var(--brand-orange-light)!important}.ts-input{text-align:center;background:0 0;border:1px solid #0000;border-radius:5px;width:56px;padding:4px 6px;font-size:13px;transition:border-color .15s,background .15s}.ts-input:hover{background:#fff;border-color:#d1d5db}.ts-input:focus{border-color:var(--brand-orange);background:#fff;outline:none;box-shadow:0 0 0 2px #f05a2826}.ts-input::placeholder{color:#cbd5e1}.ts-saving{opacity:.5}.ts-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ts-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ts-input[type=number]{-moz-appearance:textfield}.ts-td-total{text-align:right;color:#374151;background:#f8fafc;border:1px solid #e2e8f0;padding:6px 10px;font-size:12px;font-weight:600}.comp-kpis{flex-wrap:wrap;gap:16px;margin-bottom:24px;display:flex}.comp-kpi{text-align:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;flex:1;min-width:100px;padding:14px 18px}.comp-kpi-val{font-size:26px;font-weight:700;display:block}.comp-kpi-label{color:#64748b;font-size:12px}.comp-consultant-block{border:1px solid #e2e8f0;border-radius:10px;margin-bottom:20px;overflow:hidden}.comp-consultant-header{background:#f8fafc;border-left:4px solid;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 16px;display:flex}.comp-consultant-name{font-size:15px;font-weight:700}.comp-consultant-summary{color:#64748b;align-items:center;gap:8px;margin-left:auto;font-size:13px;display:flex}.comp-bar-wrap{background:#fff;border-bottom:1px solid #e2e8f0;padding:10px 16px}.comp-bar-row{align-items:center;gap:8px;margin-bottom:4px;display:flex}.comp-bar-label{color:#64748b;width:56px;font-size:11px}.comp-bar-bg{background:#e2e8f0;border-radius:4px;flex:1;height:8px;overflow:hidden}.comp-bar-fill{border-radius:4px;height:100%;transition:width .3s}.comp-bar-planned{background:var(--brand-blue)}.comp-bar-val{color:#374151;text-align:right;width:36px;font-size:12px;font-weight:600}.comp-table{border-collapse:collapse;width:100%;font-size:13px}.comp-table th{text-align:left;color:#374151;background:#f8fafc;border-top:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0;padding:7px 12px;font-weight:600}.comp-th-num{text-align:right;width:80px}.comp-th-bar{width:120px}.comp-table td{border-bottom:1px solid #f1f5f9;padding:8px 12px}.comp-td-num{text-align:right;font-variant-numeric:tabular-nums}.comp-project-dot{vertical-align:middle;border-radius:50%;width:9px;height:9px;margin-right:7px;display:inline-block}.comp-row-zero td{color:#94a3b8}.comp-mini-bar-bg{background:#e2e8f0;border-radius:3px;height:6px;position:relative;overflow:hidden}.comp-mini-bar{border-radius:3px;height:100%;position:absolute;top:0;left:0}.comp-mini-bar.planned{background:#bfdbfe}.diff-ok{color:#10b981;font-weight:600}.diff-over{color:#ef4444;font-weight:600}.diff-under{color:#f59e0b;font-weight:600}.diff-zero{color:#94a3b8}.chip-tooltip{z-index:2000;color:#f1f5f9;pointer-events:none;background:#1e293b;border-radius:8px;min-width:200px;max-width:280px;padding:10px 14px;font-size:13px;position:fixed;box-shadow:0 8px 24px #0000004d}.tooltip-row{margin-bottom:4px}.tooltip-row:last-child{margin-bottom:0}.tooltip-note{color:#94a3b8;font-style:italic}.consultant-select{border:1px solid #d1d5db;border-radius:7px;min-width:200px;padding:7px 10px;font-size:14px}.consultant-stats{flex-wrap:wrap;gap:16px;margin-bottom:16px;display:flex}.stat{background:#f8fafc;border-left:4px solid;border-radius:0 8px 8px 0;min-width:90px;padding:8px 16px}.stat-alert{background:#fff5f5;border-color:#ef4444!important}.stat-value{font-size:24px;font-weight:700;display:block}.stat-label{color:#64748b;font-size:12px}.stat-sub{color:#94a3b8;margin-top:2px;font-size:11px;display:block}.tr-lunch td{cursor:default;background:#fafaf5!important}.td-lunch{text-align:center!important;vertical-align:middle!important}.lunch-label{color:#94a3b8;font-size:11px;font-style:italic}.td-free{background:#fff5f5}.td-absent{cursor:default;background:#f1f5f9}.free-label{color:#cbd5e1;text-align:center;padding:4px 0;font-size:10px;display:block}.th-absent{color:#94a3b8!important;background:#f1f5f9!important}.th-absent-label{color:#94a3b8;font-size:10px;font-weight:400}.login-page{background:linear-gradient(135deg, var(--brand-blue) 0%, #2d4a8a 100%);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:#fff;border-radius:16px;width:100%;max-width:380px;padding:40px 36px;box-shadow:0 20px 60px #00000040}.login-logo{flex-direction:column;align-items:center;gap:12px;margin-bottom:32px;display:flex}.login-logo-img{object-fit:contain;width:auto;height:56px}.login-app-name{color:#64748b;text-align:center;font-size:16px;font-weight:600}.login-form{flex-direction:column;gap:16px;display:flex}.login-btn{width:100%;margin-top:4px;padding:12px;font-size:16px}.login-locked{background:#fef2f2;border:1px solid #fca5a5;border-radius:6px;padding:8px 12px;font-weight:500}.app-loading{color:#64748b;justify-content:center;align-items:center;min-height:100vh;font-size:18px;display:flex}.app-user-bar{white-space:nowrap;align-items:center;gap:10px;margin-left:16px;display:flex}.app-user-name{color:#93c5fd;font-size:13px}.role-radio{flex-direction:column;gap:6px;display:flex}.role-option{cursor:pointer;border:1.5px solid #e2e8f0;border-radius:8px;align-items:flex-start;gap:10px;padding:10px 12px;transition:border-color .15s,background .15s;display:flex}.role-option input{flex-shrink:0;margin-top:2px}.role-option strong{color:#1e293b;font-size:13px;display:block}.role-option span{color:#64748b;font-size:12px;display:block}.role-option.selected{border-color:var(--brand-blue);background:var(--brand-blue-light)}.badge-inactive{color:#ef4444;background:#fef2f2;border:1px solid #fecaca;border-radius:4px;margin-left:6px;padding:1px 6px;font-size:11px}.card-inactive{opacity:.6}.plan-status-badge{white-space:nowrap;border:1px solid #0000;border-radius:12px;padding:3px 10px;font-size:12px;font-weight:600}.approval-summary{gap:12px;margin-bottom:20px;display:flex}.approval-kpi{text-align:center;border:2px solid;border-radius:10px;min-width:90px;padding:12px 20px}.approval-kpi-val{font-size:28px;font-weight:700;display:block}.approval-kpi-label{color:#64748b;margin-top:2px;font-size:12px;display:block}.approval-table{border-collapse:collapse;width:100%;font-size:14px}.approval-table th{text-align:left;color:#64748b;text-transform:uppercase;letter-spacing:.05em;background:#f8fafc;border-bottom:2px solid #e2e8f0;padding:10px 12px;font-size:12px;font-weight:600}.approval-table td{border-bottom:1px solid #f1f5f9;padding:10px 12px}.approval-table tr:hover td{background:#f8fafc}.myplan-status-bar{border:1.5px solid;border-radius:10px;align-items:center;gap:12px;margin-bottom:16px;padding:14px 16px;display:flex}.myplan-notice{color:#92400e;background:#fff7ed;border:1px solid #fde68a;border-radius:8px;margin-bottom:12px;padding:10px 14px;font-size:13px}.myplan-grid{border:1px solid #e2e8f0;border-radius:10px;font-size:13px;overflow:hidden}.myplan-grid-header{background:#f8fafc;border-bottom:2px solid #e2e8f0;grid-template-columns:56px repeat(5,1fr);display:grid}.myplan-th-hour{padding:8px 6px}.myplan-th-day{text-align:center;color:#1b2b5e;padding:8px 6px;font-weight:600}.myplan-th-today{background:#eef1f8}.myplan-grid-row{border-bottom:1px solid #f1f5f9;grid-template-columns:56px repeat(5,1fr);display:grid}.myplan-td-hour{color:#94a3b8;justify-content:flex-end;align-items:center;padding:6px 8px 6px 6px;font-size:11px;display:flex}.myplan-td-cell{align-items:center;min-height:36px;padding:4px;display:flex}.myplan-td-free{background:#fafafa}.myplan-td-today{background:#eef1f8}.myplan-td-allocated{background:#f0fdf4}.myplan-chip{border-radius:5px;flex-direction:column;gap:1px;width:100%;padding:3px 6px;display:flex}.myplan-chip-project{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:600;overflow:hidden}.myplan-chip-wt{color:#ffffffd9;white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}.myplan-free-label{color:#cbd5e1;margin:auto;font-size:10px}.form-section-divider{color:#94a3b8;text-transform:uppercase;letter-spacing:.08em;border-top:1px solid #f1f5f9;margin-top:8px;padding:10px 0 6px;font-size:12px;font-weight:700}.client-tag,.user-access-badge{border:1px solid;border-radius:10px;align-items:center;gap:4px;padding:2px 8px;font-size:12px;display:inline-flex}.exec-kpi-bar{flex-wrap:wrap;gap:16px;margin-bottom:20px;display:flex}.exec-kpi{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;flex:1;min-width:140px;padding:14px 20px}.exec-kpi-num{color:#1b2b5e;font-size:22px;font-weight:700;display:block}.exec-kpi-label{color:#64748b;text-transform:uppercase;letter-spacing:.06em;font-size:11px}.exec-table-wrap{overflow-x:auto}.exec-table{border-collapse:collapse;width:100%;font-size:14px}.exec-table th{text-align:left;color:#64748b;text-transform:uppercase;letter-spacing:.05em;background:#f8fafc;border-bottom:2px solid #e2e8f0;padding:10px 12px;font-size:12px;font-weight:600}.exec-table td{vertical-align:middle;border-bottom:1px solid #f1f5f9;padding:10px 12px}.exec-row:hover td{background:#f8fafc}.exec-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;margin-right:6px;display:inline-block}.exec-project-name{font-weight:600}.exec-na{color:#94a3b8;font-size:13px}.exec-bar-wrap{align-items:center;gap:8px;display:flex}.exec-bar-bg{background:#e2e8f0;border-radius:4px;flex:1;min-width:80px;height:8px;overflow:hidden}.exec-bar-fill{border-radius:4px;height:100%;transition:width .3s}.exec-pct{text-align:right;flex-shrink:0;width:48px;font-size:13px;font-weight:700}.exec-status-label{white-space:nowrap;font-size:11px}.exec-detail-kpi{background:#f8fafc;border-radius:10px;gap:16px;margin-bottom:4px;padding:14px 16px;display:flex}.exec-detail-kpi>div{text-align:center;flex:1;font-size:18px}.audit-filters{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;display:flex}.audit-filters select,.audit-filters input{border:1px solid #d1d5db;border-radius:7px;padding:6px 10px;font-size:13px}.audit-table{font-size:13px}.audit-table th{white-space:nowrap}.audit-ts{white-space:nowrap;color:#64748b;font-size:12px}.audit-user{font-weight:600}.audit-detail{color:#475569;word-break:break-word;max-width:280px;font-size:12px}.audit-row-fail td{background:#fef2f2!important}.audit-action-badge{white-space:nowrap;border:1px solid;border-radius:10px;padding:2px 8px;font-size:11px;font-weight:600}.audit-role-badge{border-radius:10px;padding:2px 8px;font-size:11px;font-weight:600}.audit-pagination{color:#64748b;justify-content:center;align-items:center;gap:8px;margin-top:16px;font-size:13px;display:flex}.nav-sep{background:#ffffff40;align-self:stretch;width:1px;margin:6px 4px;display:inline-block}.nav-tab-admin{opacity:.85}.nav-tab-admin.active{opacity:1}.past-week-banner{color:#92400e;background:#fef3c7;border:1px solid #f59e0b;border-radius:8px;margin-bottom:12px;padding:10px 16px;font-size:13px;font-weight:500}.td-readonly{cursor:default!important}.admin-roles-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;margin-top:4px;display:grid}.admin-role-card{background:#fff;border:1px solid #e2e8f0;border-left:4px solid;border-radius:10px;padding:16px}.admin-role-header{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.admin-role-badge{border-radius:20px;padding:2px 10px;font-size:13px;font-weight:700}.admin-role-count{color:#94a3b8;font-size:12px}.admin-role-desc{color:#475569;margin-bottom:6px;font-size:13px}.admin-role-access{color:#94a3b8;margin-bottom:8px;font-size:12px}.admin-role-users{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.admin-user-chip{color:#475569;background:#f1f5f9;border-radius:6px;padding:2px 8px;font-size:12px}.admin-user-chip.chip-inactive{opacity:.5;text-decoration:line-through}.admin-role-perms{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}.perm-chip{color:#475569;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:10px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;display:inline-flex}.perm-chip-actions{color:#3b82f6;background:#3b82f622;border-radius:6px;padding:1px 5px;font-size:10px;font-weight:700}.perm-all{color:#92400e;background:#fef3c7;border-color:#f59e0b55;font-weight:600}.perm-na{color:#cbd5e1;font-size:13px}.perm-crud-table{border:1px solid #e2e8f0;border-radius:10px;margin-top:4px;overflow:hidden}.perm-crud-header{background:#f8fafc;border-bottom:1px solid #e2e8f0;grid-template-columns:1fr repeat(4,60px);padding:6px 12px;display:grid}.perm-crud-header .perm-crud-action{color:#64748b;text-align:center;text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.perm-crud-row{border-bottom:1px solid #f1f5f9;grid-template-columns:1fr repeat(4,60px);align-items:center;padding:8px 12px;transition:background .12s;display:grid}.perm-crud-row:last-child{border-bottom:none}.perm-crud-row:hover{background:#f8fafc}.perm-crud-row-on{background:#eff6ff}.perm-crud-row-on:hover{background:#dbeafe}.perm-crud-module{flex-direction:column;gap:1px;display:flex}.perm-crud-action{justify-content:center;align-items:center;display:flex}.perm-crud-action input[type=checkbox]{cursor:pointer;accent-color:#3b82f6;width:15px;height:15px}.perm-crud-action input[type=checkbox]:disabled{cursor:default;opacity:.35}.perm-row-label{color:#1e293b;font-size:13px;font-weight:500}.perm-row-desc{color:#94a3b8;font-size:11px}.period-tabs{border:1px solid #d1d5db;border-radius:8px;gap:0;margin-right:4px;display:flex;overflow:hidden}.period-tab{color:#475569;cursor:pointer;background:#fff;border:none;border-right:1px solid #d1d5db;padding:5px 14px;font-size:13px;font-weight:500;transition:background .15s,color .15s}.period-tab:last-child{border-right:none}.period-tab:hover{background:#f1f5f9}.period-tab.active{background:var(--brand-blue);color:#fff}.ts-month-total-bar{color:#475569;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;margin-bottom:16px;padding:10px 16px;font-size:14px}.ts-month-projects{padding:8px 16px 16px}.ts-month-project-row{border-bottom:1px solid #f1f5f9;grid-template-columns:12px 1fr 52px 1fr 44px;align-items:center;gap:10px;padding:6px 0;display:grid}.ts-month-project-row:last-child{border-bottom:none}.ts-month-project-name{color:#1e293b;font-size:13px}.ts-month-project-hours{color:#1e293b;text-align:right;font-size:13px;font-weight:600}.ts-month-bar-bg{background:#e2e8f0;border-radius:4px;height:6px;overflow:hidden}.ts-month-bar-fill{border-radius:4px;height:100%;transition:width .3s}.ts-month-pct{color:#94a3b8;text-align:right;font-size:11px}.cv-month-summary{margin:0 0 20px}.dash-score-badge{border-radius:10px;align-items:center;gap:6px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.gantt-panel{flex-direction:column;gap:0;height:calc(100vh - 112px);min-height:400px;display:flex}.gantt-view-toggle{border:1px solid #d1d5db;border-radius:8px;display:flex;overflow:hidden}.gantt-view-toggle .btn{border:none;border-right:1px solid #d1d5db;border-radius:0}.gantt-view-toggle .btn:last-child{border-right:none}.gantt-project-select{border:1px solid #d1d5db;border-radius:7px;padding:6px 10px;font-size:13px}.gantt-scale-bar{background:#f8fafc;border-bottom:1px solid #e2e8f0;align-items:center;gap:10px;padding:6px 16px;display:flex}.gantt-scale-label{color:#64748b;font-size:12px;font-weight:500}.gantt-legend{color:#64748b;border-bottom:1px solid #e2e8f0;gap:18px;padding:8px 16px 10px;font-size:12px;display:flex}.gantt-legend-item{align-items:center;gap:6px;display:flex}.gantt-legend-swatch{border-radius:3px;width:28px;height:10px;display:inline-block}.gantt-legend-planned{background:0 0;border:2px dashed #64748b88}.gantt-legend-actual{background:#64748b}.gantt-legend-today-marker{background:#ef4444;border-radius:1px;width:2px;height:16px;display:inline-block}.gantt-scroll-wrap{flex:1;min-height:0;overflow:auto}.gantt-header-sticky{z-index:5;background:#f8fafc;position:sticky;top:0}.gantt-inner{flex-direction:column;display:flex}.gantt-row{border-bottom:1px solid #f1f5f9;flex-direction:row;align-items:stretch;display:flex}.gantt-header-row{background:#f8fafc;border-bottom:2px solid #e2e8f0}.gantt-proj-row{background:#fff}.gantt-ph-row{background:#fafbfc}.gantt-proj-row:hover{background:#f8fafc}.gantt-ph-row:hover{background:#f4f6f9}.gantt-label{z-index:4;background:inherit;border-right:1px solid #e2e8f0;flex-shrink:0;align-items:center;gap:6px;padding:0 10px 0 8px;display:flex;position:sticky;left:0;overflow:hidden}.gantt-header-label{background:#f8fafc}.gantt-proj-row .gantt-label{background:#fff}.gantt-ph-row .gantt-label{background:#fafbfc}.gantt-expand-btn{color:#64748b;cursor:pointer;background:0 0;border:none;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;padding:0;font-size:12px;display:flex}.gantt-expand-btn:hover{color:#1e293b;background:#e2e8f0}.gantt-expand-spacer{flex-shrink:0;width:18px;display:inline-block}.gantt-color-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.gantt-phase-indent{flex-shrink:0;width:30px;display:inline-block}.gantt-phase-status-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.gantt-label-name{color:#1e293b;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13px;font-weight:500;overflow:hidden}.gantt-phase-name{color:#475569;font-size:12px;font-weight:400}.gantt-label-name[style*=pointer]{color:var(--brand-blue)}.gantt-label-name[style*=pointer]:hover{text-decoration:underline}.gantt-client-sub{color:#94a3b8;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;max-width:70px;font-size:11px;overflow:hidden}.gantt-chart-cell{flex-shrink:0;position:relative;overflow:visible}.gantt-month-label{color:#64748b;white-space:nowrap;pointer-events:none;padding-left:4px;font-size:11px;font-weight:600;position:absolute;top:50%;transform:translateY(-50%)}.gantt-vline{pointer-events:none;z-index:0;background:#e2e8f0;width:1px;height:10000px;position:absolute;top:0}.gantt-today-row-line{opacity:.55;pointer-events:none;z-index:3;background:#ef4444;border-radius:1px;width:2px;position:absolute;top:0}.gantt-footer-info{background:#f8fafc;border-top:1px solid #e2e8f0;align-items:center;gap:8px;padding:10px 16px;font-size:13px;display:flex}.gantt-footer-sep{color:#cbd5e1}.consultant-inactive-badge{letter-spacing:.05em;text-transform:uppercase;color:#b91c1c;background:#fee2e2;border:1px solid #fecaca;border-radius:4px;flex-shrink:0;margin-left:8px;padding:1px 6px;font-size:10px;font-weight:700}.consultant-active-toggle{cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.consultant-active-toggle input[type=checkbox]{cursor:pointer;width:16px;height:16px}.modal.modal-wide{resize:both;box-sizing:border-box;flex-direction:column;width:97vw;min-width:680px;max-width:1160px;height:85vh;min-height:480px;max-height:none;padding:0;display:flex;overflow:hidden}.modal.modal-wide .modal-header{border-bottom:1px solid #e2e8f0;flex-shrink:0;margin-bottom:0;padding:18px 24px 14px}.modal.modal-wide>:not(.modal-header){flex:1;padding:16px 24px 20px;overflow-y:auto}.jira-modal-body{flex-direction:column;gap:14px;min-height:400px;padding:0 2px 4px;display:flex}.jira-loading,.jira-not-configured{text-align:center;color:#64748b;padding:32px;font-size:14px}.jira-tabs{border-bottom:2px solid #e2e8f0;align-items:center;gap:4px;padding-bottom:0;display:flex}.jira-tab{color:#64748b;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:6px 6px 0 0;margin-bottom:-2px;padding:8px 16px;font-size:13px;font-weight:500}.jira-tab:hover{color:#1e293b;background:#f8fafc}.jira-tab-active{color:var(--brand-blue);border-bottom-color:var(--brand-blue);font-weight:600}.jira-tabs-note{color:#94a3b8;margin-left:auto;font-size:11px}.jira-section-title{color:#64748b;text-transform:uppercase;letter-spacing:.06em;margin-top:4px;margin-bottom:4px;font-size:12px;font-weight:600}.jira-top-stats{grid-template-columns:repeat(5,1fr);gap:10px;display:grid}.jira-stat-box{text-align:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:12px 14px}.jira-stat-value{font-size:24px;font-weight:700;line-height:1}.jira-stat-label{color:#64748b;text-transform:uppercase;letter-spacing:.04em;margin-top:4px;font-size:10px;font-weight:500}.jira-year-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.jira-year-stat{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:12px 14px}.jira-year-stat-label{color:#64748b;text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px;font-size:11px;font-weight:600}.jira-year-stat-row{align-items:center;gap:8px;display:flex}.jira-year-col{text-align:center;flex:1}.jira-year-val{color:#1e293b;font-size:20px;font-weight:700}.jira-year-val-prev{color:#94a3b8;font-size:16px}.jira-year-sub{color:#94a3b8;margin-top:2px;font-size:10px}.jira-year-sep{color:#cbd5e1;font-size:11px}.jira-year-delta{text-align:right;min-width:52px;font-size:12px;font-weight:700}.jira-delta-up{color:#ef4444}.jira-delta-down{color:#10b981}.jira-filters{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.jira-filter-tabs{gap:6px;display:flex}.jira-search{border:1px solid #e2e8f0;border-radius:7px;flex:1;min-width:160px;padding:6px 10px;font-size:13px}.jira-table-wrap{border:1px solid #e2e8f0;border-radius:8px;max-height:420px;overflow:auto}.jira-table{border-collapse:collapse;width:100%;font-size:12.5px}.jira-table thead th{text-align:left;color:#475569;white-space:nowrap;z-index:1;background:#f1f5f9;border-bottom:1px solid #e2e8f0;padding:8px 10px;font-weight:600;position:sticky;top:0}.jira-table tbody tr{border-bottom:1px solid #f1f5f9}.jira-table tbody tr:last-child{border-bottom:none}.jira-table tbody td{vertical-align:middle;color:#1e293b;padding:7px 10px}.jira-table tbody tr:hover{background:#f8fafc}.jira-row-done{opacity:.6}.jira-key-link{color:var(--brand-blue);white-space:nowrap;font-family:monospace;font-weight:600;text-decoration:none}.jira-key-link:hover{text-decoration:underline}.jira-summary{text-overflow:ellipsis;white-space:nowrap;max-width:260px;overflow:hidden}.jira-type-text{color:#64748b;font-size:11px}.jira-status-badge{white-space:nowrap;border:1px solid;border-radius:10px;padding:2px 7px;font-size:11px;font-weight:500;display:inline-block}.jira-date{white-space:nowrap;color:#64748b;font-size:12px}.jira-duration{white-space:nowrap;color:#6366f1;font-weight:600}.jira-empty{text-align:center;color:#94a3b8;padding:24px}.jira-stats-content,.jira-team-content,.jira-tickets-content,.jira-projects-content{flex-direction:column;gap:12px;display:flex}.jira-project-card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:14px 16px 10px}.jira-project-card.jira-project-orphans{background:#fafafa;border-style:dashed}.jira-project-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;display:flex}.jira-project-title{flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.jira-project-name{color:#1e293b;font-size:13px;font-weight:600}.jira-project-meta{color:#64748b;flex-shrink:0;gap:12px;font-size:12px;display:flex}.jira-project-badge{border-radius:10px;padding:2px 7px;font-size:11px;font-weight:600}.jira-project-badge-active{color:#b45309;background:#fef3c7}.jira-project-badge-done{color:#059669;background:#d1fae5}.jira-progress-bar{background:#e2e8f0;border-radius:3px;height:6px;margin-bottom:4px;overflow:hidden}.jira-progress-fill{background:#10b981;border-radius:3px;height:100%;transition:width .3s}.jira-table-compact td,.jira-table-compact th{padding:5px 8px;font-size:12px}@media (prefers-color-scheme:dark){.jira-project-card{background:#1e293b;border-color:#334155}.jira-project-card.jira-project-orphans{background:#1a2332}.jira-project-name{color:#f1f5f9}.jira-project-meta{color:#94a3b8}.jira-progress-bar{background:#334155}.jira-project-badge-active{color:#fcd34d;background:#451a03}.jira-project-badge-done{color:#34d399;background:#052e16}}.apikey-modal-body{flex-direction:column;gap:14px;padding:0 20px 20px;display:flex}.apikey-intro{color:#475569;font-size:13px;line-height:1.5}.apikey-intro code{background:#f1f5f9;border-radius:4px;padding:1px 5px;font-size:12px}.apikey-doc-link{color:var(--brand-blue);font-size:12px}.apikey-reveal{background:#fffbeb;border:1px solid #fde68a;border-radius:8px;flex-direction:column;gap:10px;padding:14px 16px;display:flex}.apikey-reveal-warn{color:#92400e;font-size:13px;font-weight:600}.apikey-reveal-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.apikey-reveal-code{color:#a3e635;word-break:break-all;background:#1e293b;border-radius:6px;flex:1;min-width:0;padding:8px 12px;font-size:12px}.btn-success{color:#fff;background:#10b981;border-color:#0000}.apikey-table{border-collapse:collapse;width:100%;font-size:13px}.apikey-table th{text-align:left;color:#64748b;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid #e2e8f0;padding:6px 10px;font-size:11px;font-weight:600}.apikey-table td{vertical-align:middle;border-bottom:1px solid #f1f5f9;padding:8px 10px}.apikey-table tr:last-child td{border-bottom:none}.apikey-preview{background:#f1f5f9;border-radius:4px;padding:2px 6px;font-size:12px}.apikey-date{color:#64748b;white-space:nowrap;font-size:12px}.apikey-create-row{border-top:1px solid #e2e8f0;align-items:center;gap:10px;padding-top:4px;display:flex}.apikey-create-row .form-input{flex:1}.apikey-docs{border:1px solid #e2e8f0;border-radius:8px;padding:0;font-size:13px}.apikey-docs summary{cursor:pointer;color:#475569;-webkit-user-select:none;user-select:none;padding:10px 14px;font-weight:600}.apikey-docs-body{flex-direction:column;gap:8px;padding:0 14px 14px;display:flex}.apikey-docs-body p{color:#475569;margin-bottom:4px;font-size:12px}.apikey-code-block{color:#e2e8f0;white-space:pre;background:#1e293b;border-radius:6px;padding:10px 12px;font-size:11px;line-height:1.6;overflow-x:auto}
