.info-tooltip{position:relative;display:inline-flex;margin-left:.4rem;vertical-align:middle}.info-tooltip-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:#cfd8ff;color:#3949ab;font-size:.7rem;font-weight:700;font-style:italic;cursor:default}.info-tooltip-bubble{visibility:hidden;opacity:0;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);width:260px;background:#333;color:#fff;font-size:.8rem;font-weight:400;line-height:1.4;padding:.6rem .75rem;border-radius:6px;box-shadow:0 4px 12px #0003;transition:opacity .15s ease;z-index:10;white-space:pre-line}.info-tooltip-bubble:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:#333}.info-tooltip:hover .info-tooltip-bubble,.info-tooltip:focus .info-tooltip-bubble,.info-tooltip:focus-within .info-tooltip-bubble{visibility:visible;opacity:1}.performance-config{padding:2rem;max-width:1400px;margin:0 auto}.performance-config .header{margin-bottom:2rem}.performance-config h1{font-size:2rem;margin:0 0 .5rem;color:#333}.performance-config .header p{color:#666;font-size:1.05rem}.weight-summary{background:#f5f5f5;border:1px solid #ddd;border-radius:8px;padding:1rem 1.5rem;margin-bottom:2rem;font-size:1.1rem}.weight-summary p{margin:.5rem 0}.weight-summary .warning{color:#d9534f;font-weight:600}.categories-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:2rem;margin-bottom:2rem}.category-card{border:1px solid #ddd;border-radius:8px;padding:1.5rem;background:#fff;box-shadow:0 1px 3px #0000000d;transition:box-shadow .2s}.category-card:hover{box-shadow:0 4px 12px #0000001a}.category-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;gap:1rem}.category-card h2{margin:0;font-size:1.4rem;color:#333}.weight-display{min-width:100px;text-align:right}.weight-value{font-size:1.3rem;font-weight:700;color:#06c}.weight-editor{display:flex;align-items:center;gap:.5rem}.weight-editor input{width:70px;padding:.5rem;font-size:1rem;border:1px solid #ccc;border-radius:4px}.weight-editor span{font-weight:700;color:#06c}.description{color:#666;font-size:.95rem;margin:.5rem 0 1rem;line-height:1.4}.metrics-list{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #eee}.metrics-list h3{margin:0 0 .75rem;font-size:1rem;color:#333}.metrics-container{display:flex;flex-direction:column;gap:.75rem}.metric-item{background:#f9f9f9;padding:.75rem;border-radius:4px;border-left:3px solid #667eea}.metric-display{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.metric-info{display:flex;flex-direction:column;gap:.25rem;flex:1;font-size:.9rem}.metric-name{font-weight:600;color:#333}.metric-type{font-size:.85rem;color:#999;text-transform:capitalize}.metric-target{font-size:.85rem;color:#666}.metric-actions{display:flex;gap:.5rem}.metric-edit-form{display:flex;flex-direction:column;gap:.5rem}.metric-edit-form input,.metric-edit-form textarea{padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem;font-family:inherit;resize:vertical}.metric-form-actions{display:flex;gap:.5rem}.btn-small{padding:.4rem .8rem;border:none;border-radius:4px;cursor:pointer;font-size:.85rem;transition:background-color .2s}.btn-small.btn-primary{background-color:#06c;color:#fff}.btn-small.btn-primary:hover{background-color:#0052a3}.btn-small.btn-secondary{background-color:#f0f0f0;color:#333;border:1px solid #ccc}.btn-small.btn-secondary:hover{background-color:#e0e0e0}.btn-small.btn-danger{background-color:#dc3545;color:#fff}.btn-small.btn-danger:hover{background-color:#c82333}.no-metrics{color:#999;font-style:italic;margin:0}.actions{display:flex;gap:.75rem}.btn{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-size:.95rem;transition:background-color .2s}.info-panel{background:#e3f2fd;border:1px solid #bbdefb;border-radius:8px;padding:1.5rem}.info-panel h3{margin-top:0;color:#1565c0}.info-panel ul{margin:0;padding-left:1.5rem}.info-panel li{margin:.5rem 0;color:#424242;line-height:1.5}.weight-editor-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.weight-editor-panel{background:#fff;border-radius:8px;padding:2rem;max-width:500px;width:100%;box-shadow:0 10px 40px #0003}.weight-editor-panel h2{margin:0 0 .5rem;color:#333;font-size:1.5rem}.weight-editor-panel p{color:#666;margin:0}.weight-sliders{margin:1.5rem 0;display:flex;flex-direction:column;gap:1.5rem}.weight-slider-item{display:flex;flex-direction:column;gap:.5rem}.slider-header{display:flex;justify-content:space-between;align-items:center}.slider-header label{font-weight:600;color:#333;margin:0}.weight-value{font-size:1.1rem;font-weight:700;color:#06c}.weight-slider{width:100%;height:6px;border-radius:3px;background:#ddd;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.weight-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:#06c;cursor:pointer;transition:background-color .2s}.weight-slider::-webkit-slider-thumb:hover{background:#0052a3}.weight-slider::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:#06c;cursor:pointer;border:none;transition:background-color .2s}.weight-slider::-moz-range-thumb:hover{background:#0052a3}.weight-total-display{background:#f5f5f5;border-radius:6px;padding:1rem;text-align:center;margin:1rem 0}.weight-total-display p{margin:.5rem 0}.modal-actions{display:flex;gap:1rem;margin-top:1.5rem}.modal-actions button{flex:1;padding:.75rem;border:none;border-radius:4px;font-size:.95rem;font-weight:600;cursor:pointer;transition:background-color .2s}.modal-actions .btn-primary{background-color:#06c;color:#fff}.modal-actions .btn-primary:hover:not(:disabled){background-color:#0052a3}.modal-actions .btn-primary:disabled{background-color:#ccc;color:#999;cursor:not-allowed}.modal-actions .btn-secondary{background-color:#f0f0f0;color:#333;border:1px solid #ccc}.modal-actions .btn-secondary:hover{background-color:#e0e0e0}.metrics-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.metric-add-form{background:#f9f9f9;padding:1rem;border-radius:4px;border:1px solid #eee;margin-bottom:1rem;display:flex;flex-direction:column;gap:.75rem}.metric-add-form input,.metric-add-form select,.metric-add-form textarea{padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem;font-family:inherit;resize:vertical}.reviews-list{padding:2rem;max-width:1200px;margin:0 auto}.reviews-list .header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;gap:1rem}.reviews-list h1{margin:0;font-size:2rem;color:#333}.form-panel{background:#f9f9f9;border:1px solid #ddd;border-radius:8px;padding:1.5rem;margin-bottom:2rem}.form-panel h2{margin-top:0;color:#333;font-size:1.3rem}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-weight:600;color:#333;font-size:.95rem}.form-group input,.form-group select{padding:.75rem;border:1px solid #ccc;border-radius:4px;font-size:.95rem}.form-group input:focus,.form-group select:focus{outline:none;border-color:#06c;box-shadow:0 0 0 3px #0066cc1a}.form-actions{display:flex;gap:.75rem;margin-top:1.5rem}.btn{padding:.75rem 1.5rem;border:none;border-radius:4px;cursor:pointer;font-size:1rem;transition:background-color .2s}.btn-primary{background-color:#06c;color:#fff}.btn-primary:hover{background-color:#0052a3}.reviews-table{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden}.reviews-table table{width:100%;border-collapse:collapse}.reviews-table th{background-color:#f5f5f5;padding:1rem;text-align:left;font-weight:600;color:#333;border-bottom:2px solid #ddd;font-size:.95rem}.reviews-table td{padding:1rem;border-bottom:1px solid #eee;color:#333}.reviews-table tbody tr:hover{background-color:#f9f9f9}.period-label{font-weight:600;font-size:1.05rem}.actions{text-align:center}.no-reviews{padding:3rem;text-align:center;color:#999}.no-reviews p{margin:0;font-size:1.1rem}.review-detail{padding:2rem;max-width:1400px;margin:0 auto}.review-detail .header{display:flex;align-items:flex-start;gap:1.5rem;margin-bottom:2rem;flex-wrap:wrap}.btn-back{background:none;border:none;color:#06c;cursor:pointer;font-size:1rem;padding:0;text-decoration:none;align-self:center}.btn-back:hover{text-decoration:underline}.title-section{flex:1}.review-detail h1{margin:0 0 .5rem;font-size:2rem;color:#333}.review-period{color:#666;font-size:.95rem;margin:0}.status-section{display:flex;align-items:center}.badge{display:inline-block;padding:.4rem .8rem;border-radius:20px;font-size:.85rem;font-weight:600;text-transform:capitalize}.status-draft{background-color:#e3f2fd;color:#1565c0}.status-submitted{background-color:#f3e5f5;color:#6a1b9a}.status-finalized{background-color:#e8f5e9;color:#2e7d32}.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;margin-bottom:2rem}.summary-card{background:#fff;border:1px solid #ddd;border-radius:8px;padding:1.5rem;text-align:center;box-shadow:0 1px 3px #0000000d}.stat-value{font-size:2.5rem;font-weight:700;color:#06c;margin-bottom:.5rem}.stat-label{color:#666;font-size:.95rem;font-weight:600}.progress-bar{background-color:#e0e0e0;height:6px;border-radius:3px;overflow:hidden;margin-top:.75rem}.progress-fill{background-color:#667eea;height:100%;transition:width .3s}.distribution-section{background:#fff;border:1px solid #ddd;border-radius:8px;padding:1.5rem;margin-bottom:2rem}.distribution-section h2{margin-top:0;font-size:1.3rem;color:#333}.distribution-chart{display:grid;gap:1rem}.distribution-row{display:grid;grid-template-columns:50px 1fr 50px;align-items:center;gap:1rem}.rating-label{text-align:right;font-weight:600;color:#333}.bar-container{background-color:#f0f0f0;height:30px;border-radius:4px;overflow:hidden}.bar{height:100%;display:flex;align-items:center;justify-content:flex-end;padding-right:.5rem;color:#fff;font-size:.8rem;font-weight:600}.count{text-align:center;font-weight:600;color:#666}.performers-section{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem}.performers-column{background:#fff;border:1px solid #ddd;border-radius:8px;padding:1.5rem}.performers-column h3{margin-top:0;font-size:1.1rem;color:#333}.performers-list{display:grid;gap:1rem}.performer-item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:#f9f9f9;border-radius:4px;border-left:3px solid #667eea}.performer-name{font-weight:600;color:#333}.performer-rating{font-size:1.3rem;font-weight:700}.employees-section{background:#fff;border:1px solid #ddd;border-radius:8px;padding:1.5rem;margin-bottom:2rem}.employees-section h2{margin-top:0;font-size:1.3rem;color:#333}.section-note{color:#666;font-size:.95rem;margin:.5rem 0 1rem}.employees-table{width:100%;border-collapse:collapse;margin-top:1rem}.employees-table th{background-color:#f5f5f5;padding:1rem;text-align:left;font-weight:600;color:#333;border-bottom:2px solid #ddd;font-size:.95rem}.employees-table td{padding:1rem;border-bottom:1px solid #eee;color:#333}.employees-table tbody tr:hover{background-color:#f9f9f9}.emp-name{font-weight:600}.btn-link{background:none;border:none;color:#06c;cursor:pointer;text-decoration:none;font-size:.95rem;padding:0}.btn-link:hover{text-decoration:underline}.employees-placeholder{padding:2rem;text-align:center;color:#999;background:#f9f9f9;border-radius:4px}.employees-placeholder p{margin:.5rem 0}.actions{display:flex;justify-content:center;gap:.75rem;padding:1rem 0}.btn-secondary:hover{background-color:#e0e0e0}.btn-danger{background-color:#dc3545;color:#fff;border:none}.btn-danger:hover:not(:disabled){background-color:#c82333}.review-tabs{display:flex;gap:.5rem;border-bottom:2px solid #eee;margin-bottom:1.5rem}.review-tab{background:none;border:none;padding:.75rem 1.25rem;font-size:.95rem;font-weight:600;color:#666;cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s}.review-tab:hover{color:#333}.review-tab.active{color:#667eea;border-bottom-color:#667eea}.score-grid-section{margin-bottom:2rem}.score-grid-table-wrap{overflow-x:auto;border:1px solid #ddd;border-radius:8px}.score-grid-table{width:100%;border-collapse:collapse;font-size:.85rem;white-space:nowrap}.score-grid-table th,.score-grid-table td{padding:.6rem .9rem;border-bottom:1px solid #eee;text-align:center}.score-grid-category-header{background:#e3f2fd;color:#1565c0;border-left:2px solid #fff;font-size:.85rem}.score-grid-weight{font-weight:400;opacity:.8}.score-grid-metric-header{background:#f5f5f5;color:#333;font-weight:600;border-left:1px solid #eee;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-grid-overall-header{background:#ede7f6;color:#4527a0}.score-grid-sticky-col{position:sticky;left:0;background:#fff;text-align:left;z-index:1;border-right:1px solid #ddd}thead .score-grid-sticky-col{background:#f5f5f5;z-index:2}.score-grid-department{color:#999;font-weight:400;font-size:.8rem}.score-grid-cell{color:#444}.score-grid-overall-cell{font-weight:700;font-size:.95rem}.performance-review{padding:2rem;max-width:1200px;margin:0 auto}.performance-review .header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:2rem;gap:2rem}.performance-review h1{margin:0;font-size:2rem;color:#333;flex:1}.rating-display{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1.5rem;border-radius:8px;text-align:center;min-width:180px;box-shadow:0 4px 12px #00000026}.rating-value{font-size:3rem;font-weight:700;line-height:1;margin-bottom:.5rem}.rating-label{font-size:.95rem;font-weight:600;margin-bottom:.25rem}.rating-scale{font-size:.8rem;opacity:.9}.rating-placeholder{font-size:1rem;font-style:italic;opacity:.9}.review-container{background:#fff;border:1px solid #ddd;border-radius:8px;padding:2rem;margin-bottom:2rem}.category-section{margin-bottom:2.5rem}.category-section:last-of-type{margin-bottom:0}.category-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:2px solid #f0f0f0}.category-section h2{margin:0;font-size:1.3rem;color:#333}.weight-badge{background:#e3f2fd;color:#1565c0;padding:.5rem 1rem;border-radius:20px;font-size:.9rem;font-weight:600}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin-bottom:2rem}.metric-input{display:flex;flex-direction:column;gap:.5rem}.metric-input label{font-weight:600;color:#333;font-size:.95rem}.metric-details{display:flex;gap:.75rem;font-size:.85rem;margin:0 0 .5rem}.metric-type{background:#f5f5f5;padding:.25rem .75rem;border-radius:4px;color:#666;text-transform:capitalize}.metric-target{color:#999;font-style:italic}.metric-suggested-badge{background:#e8f5e9;color:#2e7d32;padding:.2rem .6rem;border-radius:4px;font-weight:600}.metric-input input{padding:.75rem;border:1px solid #ccc;border-radius:4px;font-size:1rem;transition:border-color .2s}.metric-input input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.notes-section{margin-bottom:2rem;padding:1.5rem;background:#f9f9f9;border-radius:4px}.notes-section label{display:block;font-weight:600;color:#333;margin-bottom:.75rem}.notes-section textarea{width:100%;padding:.75rem;border:1px solid #ccc;border-radius:4px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:.95rem;resize:vertical;transition:border-color .2s}.notes-section textarea:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.actions{display:flex;gap:.75rem;padding-top:1rem;border-top:1px solid #ddd}.btn{padding:.75rem 1.5rem;border:none;border-radius:4px;cursor:pointer;font-size:1rem;transition:background-color .2s;font-weight:600}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background-color:#667eea;color:#fff}.btn-primary:hover:not(:disabled){background-color:#5568d3}.btn-secondary{background-color:#f0f0f0;color:#333;border:1px solid #ccc}.btn-secondary:hover:not(:disabled){background-color:#e0e0e0}.error-message{background:#f8d7da;border:1px solid #f5c6cb;border-radius:4px;padding:1rem;color:#721c24;margin-bottom:1rem}.error{color:#d9534f;text-align:center;padding:2rem}:root{--bg-app: #f4f6f9;--bg-sidebar: #ffffff;--bg-card: #ffffff;--bg-topbar: #ffffff;--bg-input: #f8fafc;--bg-hover: #f1f5f9;--bg-active-nav:#e8f5ec;--border: #e8ecf0;--border-light: #f1f5f9;--text-primary: #0f172a;--text-secondary: #64748b;--text-muted: #94a3b8;--nav-active: #16a34a;--nav-active-bg: rgba(22,163,74,.08);--accent: #3b82f6;--accent-hover: #2563eb;--accent-glow: rgba(59,130,246,.12);--sq-purple: #7c3aed;--sq-red: #e11d48;--sq-orange: #ea580c;--sq-amber: #d97706;--sq-teal: #0d9488;--sq-blue: #1d4ed8;--sq-green: #16a34a;--green: #16a34a;--green-bg: #dcfce7;--red: #dc2626;--red-bg: #fee2e2;--amber: #d97706;--amber-bg: #fef3c7;--blue: #2563eb;--blue-bg: #dbeafe;--slate-bg: #f1f5f9;--slate: #475569;--purple: #7c3aed;--purple-bg: #ede9fe;--pink: #db2777;--pink-bg: #fce7f3;--indigo: #4f46e5;--indigo-bg: #e0e7ff;--orange: #ea580c;--orange-bg: #ffedd5;--sidebar-w: 230px;--topbar-h: 64px;--radius: 12px;--radius-sm: 8px;--radius-lg: 16px;--shadow-card: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 12px rgba(0,0,0,.08)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased;background:var(--bg-app);color:var(--text-primary);line-height:1.5;font-size:14px}.app-container{display:flex;height:100vh;overflow:hidden;background:var(--bg-app)}.app-body{display:flex;flex-direction:column;flex:1;overflow:hidden}.main-content{flex:1;overflow-y:auto;background:var(--bg-app)}.sidebar{width:var(--sidebar-w);background:var(--bg-sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto}.sidebar-logo{display:flex;align-items:center;gap:10px;padding:20px 20px 18px;border-bottom:1px solid var(--border);margin-bottom:8px}.sidebar-logo span{font-size:17px;font-weight:800;color:var(--text-primary);letter-spacing:-.4px}.sidebar-section-label{font-size:10.5px;font-weight:700;letter-spacing:1.2px;color:var(--text-muted);padding:12px 20px 6px;text-transform:uppercase}.sidebar nav ul{list-style:none;padding:0 10px}.nav-link{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:var(--radius-sm);color:var(--text-secondary);text-decoration:none;font-size:13.5px;font-weight:500;transition:all .15s;position:relative;margin-bottom:2px}.nav-link:hover{background:var(--bg-hover);color:var(--text-primary)}.nav-link.active{background:var(--nav-active-bg);color:var(--nav-active);font-weight:600}.nav-link.active .nav-icon{color:var(--nav-active)}.nav-icon{display:flex;align-items:center;flex-shrink:0}.nav-indicator{position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:20px;background:var(--nav-active);border-radius:0 3px 3px 0}.topbar{height:var(--topbar-h);background:var(--bg-topbar);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 28px;flex-shrink:0}.topbar-greeting{display:flex;flex-direction:column}.topbar-greeting-main{font-size:15px;font-weight:700;color:var(--text-primary)}.topbar-greeting-sub{font-size:12px;color:var(--text-muted);margin-top:1px}.topbar-right{display:flex;align-items:center;gap:8px}.topbar-icon-btn{width:36px;height:36px;background:var(--bg-app);border:1px solid var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);cursor:pointer;transition:all .15s}.topbar-icon-btn:hover{background:var(--border);box-shadow:none;transform:none;color:var(--text-primary)}.user-avatar{width:36px;height:36px;background:linear-gradient(135deg,var(--sq-purple),var(--accent));border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff;flex-shrink:0;cursor:pointer}.btn-ghost{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s;font-family:inherit}.btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary);box-shadow:none;transform:none}.page-main{padding:28px 32px;max-width:1440px}.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px}.page-header-left h1{font-size:22px;font-weight:800;color:var(--text-primary);letter-spacing:-.4px}.page-header-left p{font-size:13px;color:var(--text-secondary);margin-top:3px}.page-title{font-size:22px;font-weight:800;color:var(--text-primary);letter-spacing:-.4px;margin-bottom:4px}.page-subtitle{font-size:13px;color:var(--text-secondary)}.section-header{display:flex;align-items:center;justify-content:space-between;margin:28px 0 16px}.section-title{font-size:16px;font-weight:700;color:var(--text-primary)}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:8px}.kpi-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;display:flex;align-items:center;gap:16px;box-shadow:var(--shadow-card);position:relative;transition:box-shadow .2s,transform .15s}.kpi-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.kpi-period{position:absolute;top:14px;right:16px;font-size:11px;color:var(--text-muted);display:flex;align-items:center;gap:3px;cursor:pointer}.kpi-square{width:64px;height:64px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:800;color:#fff;flex-shrink:0;letter-spacing:-1px}.kpi-square.purple{background:linear-gradient(135deg,#6d28d9,#7c3aed)}.kpi-square.red{background:linear-gradient(135deg,#be123c,#e11d48)}.kpi-square.orange{background:linear-gradient(135deg,#c2410c,#ea580c)}.kpi-square.amber{background:linear-gradient(135deg,#b45309,#d97706)}.kpi-square.teal{background:linear-gradient(135deg,#0f766e,#0d9488)}.kpi-square.blue{background:linear-gradient(135deg,#1e40af,#2563eb)}.kpi-square.green{background:linear-gradient(135deg,#15803d,#16a34a)}.kpi-body{flex:1;min-width:0;padding-top:20px}.kpi-label{font-size:12.5px;color:var(--text-secondary);font-weight:500;line-height:1.3;margin-bottom:6px}.kpi-value{font-size:22px;font-weight:800;color:var(--text-primary);letter-spacing:-.5px;line-height:1}.kpi-trend{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;margin-top:8px}.kpi-trend.up{background:var(--green-bg);color:var(--green)}.kpi-trend.down{background:var(--red-bg);color:var(--red)}.kpi-trend.flat{background:var(--slate-bg);color:var(--slate)}.charts-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.chart-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-card)}.chart-card--full{grid-column:1 / -1}.chart-container{display:flex;flex-direction:column;width:100%}.chart-container h3{font-size:14px;font-weight:700;color:var(--text-primary);margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border)}.data-table-wrap{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-card);overflow:hidden}.data-table-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.data-table-header h2{font-size:15px;font-weight:700;color:var(--text-primary)}.data-table-header .count{font-size:11.5px;color:var(--text-muted);background:var(--bg-app);padding:2px 9px;border-radius:20px;margin-left:8px;border:1px solid var(--border);font-weight:600}table{width:100%;border-collapse:collapse}thead{background:#fafbfc;border-bottom:1px solid var(--border)}th{padding:10px 16px;text-align:left;font-size:11px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.7px;white-space:nowrap}td{padding:13px 16px;font-size:13.5px;color:var(--text-primary);border-bottom:1px solid var(--border-light)}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:#fafbfc}.badge,.status-badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:11.5px;font-weight:600;text-transform:capitalize;white-space:nowrap}.status-badge.active,.badge-green{background:var(--green-bg);color:var(--green)}.status-badge.cancelled,.badge-red{background:var(--red-bg);color:var(--red)}.status-badge.on_hold,.status-badge.on-hold,.badge-amber{background:var(--amber-bg);color:var(--amber)}.status-badge.planned,.status-badge.billable,.badge-blue{background:var(--blue-bg);color:var(--blue)}.status-badge.completed,.badge-slate{background:var(--slate-bg);color:var(--slate)}.status-badge.non_billable,.status-badge.bench{background:var(--amber-bg);color:var(--amber)}.status-badge.full_time{background:var(--green-bg);color:var(--green)}.status-badge.part_time{background:var(--blue-bg);color:var(--blue)}.status-badge.contractor{background:var(--amber-bg);color:var(--amber)}.badge-success{background:var(--green-bg);color:var(--green)}.badge-primary{background:var(--blue-bg);color:var(--blue)}.badge-warning{background:var(--amber-bg);color:var(--amber)}.badge-danger{background:var(--red-bg);color:var(--red)}button{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 18px;background:var(--accent);color:#fff;border:none;border-radius:var(--radius-sm);font-size:13.5px;font-weight:600;cursor:pointer;transition:background .15s,box-shadow .15s,transform .1s;white-space:nowrap;font-family:inherit}button:hover{background:var(--accent-hover);box-shadow:0 4px 12px #3b82f64d;transform:translateY(-1px)}button:active{transform:translateY(0)}button.primary{background:var(--accent)}button.secondary{background:#fff;color:var(--text-secondary);border:1px solid var(--border)}button.secondary:hover{background:var(--bg-app);box-shadow:none;color:var(--text-primary)}button.danger{background:var(--red)}button.danger:hover{background:#b91c1c;box-shadow:0 4px 12px #dc26264d}.button-group{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}.form-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:24px;margin-bottom:20px;box-shadow:var(--shadow-card)}.form-card-title{font-size:15px;font-weight:700;color:var(--text-primary);margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--border)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.form-group{display:flex;flex-direction:column;gap:6px}label{font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}input,select,textarea{width:100%;padding:9px 12px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13.5px;color:var(--text-primary);font-family:inherit;transition:border-color .15s,box-shadow .15s}input::placeholder{color:var(--text-muted)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}textarea{min-height:90px;resize:vertical}.filter-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:18px;box-shadow:var(--shadow-card)}.filter-panel h3{font-size:13.5px;font-weight:700;color:var(--text-primary);margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--border)}.filter-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:14px}.filter-group{display:flex;flex-direction:column;gap:5px;margin-bottom:0}.filter-group label{font-size:11px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.6px}.filter-actions{display:flex;gap:10px;margin-top:16px;padding-top:16px;border-top:1px solid var(--border)}.state-loading{display:flex;align-items:center;justify-content:center;gap:12px;padding:80px 20px;color:var(--text-secondary);font-size:14px}.spinner{width:20px;height:20px;border:2.5px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.state-error{margin:20px;padding:14px 18px;background:var(--red-bg);color:var(--red);border-radius:var(--radius-sm);font-size:13.5px;border-left:3px solid var(--red)}.state-empty{display:flex;align-items:center;justify-content:center;padding:48px 20px;color:var(--text-muted);font-size:14px}.loading{padding:60px;text-align:center;color:var(--text-muted)}.error-message{padding:14px 18px;background:var(--red-bg);color:var(--red);border-radius:var(--radius-sm);margin-bottom:16px;font-size:13.5px;border-left:3px solid var(--red)}.empty-state{padding:48px 20px;text-align:center;color:var(--text-muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}.empty-icon{font-size:48px;margin-bottom:8px}.empty-title{font-size:16px;font-weight:600;color:var(--text-primary)}.empty-desc{font-size:14px;color:var(--text-secondary)}.section{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:18px;box-shadow:var(--shadow-card)}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-app)}.login-card{background:var(--bg-card);border-radius:var(--radius-lg);padding:40px;width:100%;max-width:420px;box-shadow:var(--shadow-md);border:1px solid var(--border);text-align:center}.login-header h1{font-size:26px;font-weight:800;color:var(--text-primary);letter-spacing:-.5px}.login-header p{color:var(--text-secondary);margin-top:6px;font-size:13.5px}.login-content{margin:28px 0}.login-button{width:100%;padding:12px;font-size:14px;border-radius:var(--radius-sm);margin-top:16px}.login-footer p{font-size:12px;color:var(--text-muted)}.demo-notice{background:var(--green-bg);color:var(--green);padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;margin-bottom:12px;border-left:3px solid var(--green);text-align:left}@media (max-width: 900px){.sidebar{display:none}.kpi-grid{grid-template-columns:repeat(2,1fr)}.charts-grid{grid-template-columns:1fr}.chart-card--full{grid-column:1}}@media (max-width: 600px){.page-main{padding:16px}.kpi-grid{grid-template-columns:1fr 1fr}.filter-row,.form-grid{grid-template-columns:1fr}}.row-actions{display:flex;gap:6px;justify-content:center;align-items:center}.action-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--radius-sm);border:none;background:#f3f4f6;cursor:pointer;transition:all .15s ease;color:#6b7280;padding:0;flex-shrink:0}.action-btn svg{width:16px;height:16px;stroke-width:2}.action-btn:hover{transform:scale(1.12)}.action-btn.edit{color:#3b82f6}.action-btn.edit:hover{background:#dbeafe;color:#1d4ed8}.action-btn.delete{color:#dc2626}.action-btn.delete:hover{background:#fee2e2;color:#991b1b}.inline-edit-input,.inline-edit-select{width:100%;padding:5px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;color:var(--text-primary);background:var(--bg-card);outline:none;box-sizing:border-box}.inline-edit-input:focus,.inline-edit-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #16a34a1f}.btn-save-inline{padding:4px 12px;font-size:12px;font-weight:600;background:var(--green);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:opacity .15s}.btn-save-inline:hover{opacity:.85}.btn-cancel-inline{padding:4px 10px;font-size:12px;font-weight:500;background:transparent;color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s}.btn-cancel-inline:hover{background:var(--bg-hover);color:var(--text-primary)}.btn-delete-confirm{padding:4px 12px;font-size:12px;font-weight:600;background:var(--red);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:opacity .15s}.btn-delete-confirm:hover{opacity:.85}.form-error{padding:10px 14px;background:var(--red-bg);color:var(--red);border-radius:var(--radius-sm);font-size:13px;border-left:3px solid var(--red);margin-bottom:14px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-popup{background:#fff;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;max-width:400px;width:90%;animation:slideUp .3s ease-out}.modal-popup--wide{max-width:640px}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-header{padding:16px 20px;border-bottom:1px solid #e5e7eb}.modal-header h3{margin:0;font-size:16px;font-weight:600}.modal-body{padding:20px;color:#374151;font-size:14px;line-height:1.6}.modal-footer{padding:12px 20px;border-top:1px solid #e5e7eb;text-align:right}.tab-bar{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:20px}.tab-btn{background:transparent;color:var(--text-secondary);border:none;border-radius:0;box-shadow:none;padding:10px 4px;margin-right:24px;font-size:13.5px;font-weight:600;cursor:pointer;border-bottom:2px solid transparent;transform:none}.tab-btn:hover{background:transparent;box-shadow:none;transform:none;color:var(--text-primary)}.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-btn .tab-alert{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:6px;background:var(--red);color:#fff;border-radius:20px;font-size:10.5px;font-weight:700}.file-drop-zone{border:2px dashed var(--border);border-radius:var(--radius);padding:40px 20px;text-align:center;cursor:pointer;background:var(--bg-input);transition:border-color .15s,background .15s;display:block}.file-drop-zone:hover{border-color:var(--accent);background:var(--accent-glow)}.file-drop-zone.has-file{border-color:var(--green);background:var(--green-bg)}.file-drop-icon{color:var(--text-muted);margin-bottom:10px;display:flex;justify-content:center}.file-drop-zone.has-file .file-drop-icon{color:var(--green)}.file-drop-title{font-weight:600;font-size:13.5px;color:var(--text-primary);margin-bottom:4px}.file-drop-sub{font-size:12px;color:var(--text-secondary)}.file-drop-hint{font-size:11.5px;color:var(--text-muted);margin-top:16px;line-height:1.7;background:var(--bg-app);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px}.upload-success-banner{display:flex;align-items:center;gap:10px;background:var(--green-bg);color:var(--green);padding:12px 16px;border-radius:var(--radius-sm);border-left:3px solid var(--green);font-size:13.5px;font-weight:600;margin-bottom:18px}.attendance-actions-row{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap;align-items:center}.attendance-grid-wrap{overflow-x:auto}.attendance-table{width:100%;border-collapse:collapse}.attendance-table thead th{background:#fafbfc;white-space:nowrap}.attendance-table th.sl-col,.attendance-table td.sl-col{position:sticky;left:0;z-index:2;background:var(--bg-card);width:44px;min-width:44px;border-right:1px solid var(--border)}.attendance-table thead th.sl-col{background:#fafbfc;z-index:3}.attendance-table tbody tr:hover td.sl-col{background:#fafbfc}.attendance-table th.emp-col,.attendance-table td.emp-col{position:sticky;left:44px;z-index:2;background:var(--bg-card);text-align:left;min-width:210px;border-right:1px solid var(--border)}.attendance-table thead th.emp-col{background:#fafbfc;z-index:3}.attendance-table tbody tr:hover td.emp-col{background:#fafbfc}.attendance-table th.day-col{min-width:42px;text-align:center;font-size:10.5px}.attendance-table td.day-col{text-align:center;padding:6px 4px}.attendance-emp-name{font-weight:600;font-size:13px;color:var(--text-primary)}.attendance-emp-raw{font-size:11px;color:var(--text-muted);margin-top:2px}.attendance-emp-warning{font-size:11px;color:var(--red);font-weight:600;margin-top:3px;display:flex;align-items:center;gap:4px}.status-pill{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:26px;padding:0 6px;border-radius:6px;font-size:11px;font-weight:700;cursor:pointer;border:none;font-family:inherit;transition:transform .1s,box-shadow .15s}.status-pill:hover{transform:scale(1.1);box-shadow:0 2px 6px #0000002e}.status-P{background:var(--green-bg);color:var(--green)}.status-H{background:var(--amber-bg);color:var(--amber)}.status-A{background:var(--red-bg);color:var(--red)}.status-WFH{background:var(--blue-bg);color:var(--blue)}.status-SL{background:var(--purple-bg);color:var(--purple)}.status-FH{background:var(--pink-bg);color:var(--pink)}.status-PH{background:var(--indigo-bg);color:var(--indigo)}.status-SH{background:var(--orange-bg);color:var(--orange)}.status-L{background:var(--slate-bg);color:var(--slate)}.status-modal-target{font-size:13px;color:var(--text-secondary);margin-bottom:18px}.status-modal-target strong{color:var(--text-primary)}.status-options-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:18px}.status-option-btn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;border-radius:var(--radius-sm);border:2px solid transparent;cursor:pointer;font-family:inherit;text-align:left;transition:border-color .15s,transform .1s}.status-option-btn:hover{transform:translateY(-1px);box-shadow:none}.status-option-btn.active{border-color:currentColor}.status-option-btn .code{font-size:14px;font-weight:800}.status-option-btn .label{font-size:10.5px;font-weight:500;opacity:.85}.activity-log-list{display:flex;flex-direction:column;gap:8px;max-height:380px;overflow-y:auto}.activity-log-item{padding:10px 12px;background:var(--bg-app);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12.5px}.activity-log-emp{font-weight:600;color:var(--text-primary);margin-bottom:3px}.activity-log-change{color:var(--text-secondary);margin-bottom:3px}.activity-log-meta{font-size:11px;color:var(--text-muted)}.attendance-legend{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:18px}.attendance-legend-item{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--text-secondary)}
