*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,system-ui,sans-serif;font-size:14px;color:#4d4d4d;background:#f7f8fa;min-height:100vh}.app-layout{display:flex;height:100vh;width:100%;overflow:hidden}.app-sidebar{width:248px;flex:none;background:#fff;border-right:1px solid #E6E6E6;display:flex;flex-direction:column;padding:20px 16px}.sidebar-brand{display:flex;align-items:center;gap:11px;padding:4px 8px 0}.sidebar-brand-icon{width:38px;height:38px;border-radius:9px;background:#0770f1;box-shadow:inset 0 0 0 1px #cbe6fc80,0 4px 10px #0770f147;display:flex;align-items:center;justify-content:center;flex:none}.sidebar-brand-text{line-height:1.15}.sidebar-brand-text .name{font-size:15px;font-weight:700;color:#1a1a1a}.sidebar-brand-text .sub{font-size:11px;color:gray}.sidebar-divider{height:1px;background:#e6e6e6;margin:18px 4px}.sidebar-nav{display:flex;flex-direction:column;gap:4px;flex:1}.sidebar-section-label{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#a0a0a0;padding:0 12px;margin:16px 0 6px}.sidebar-link{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;font-size:14px;font-weight:500;color:#4d4d4d;text-decoration:none;transition:background .12s,color .12s;cursor:pointer}.sidebar-link:hover{background:#f5f8fe;color:#1a1a1a}.sidebar-link.active{background:#ebf3ff;color:#0770f1}.sidebar-user{border-top:1px solid #E6E6E6;margin-top:12px;display:flex;align-items:center;gap:11px;padding:12px 8px 4px}.sidebar-avatar{width:36px;height:36px;border-radius:50%;background:#0770f1;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex:none}.sidebar-user-info{min-width:0;line-height:1.25}.sidebar-user-name{font-size:14px;font-weight:600;color:#1a1a1a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user-email{font-size:12px;color:gray;word-break:break-all;line-height:1.3}.app-main{flex:1;overflow:auto;min-width:0;background:#f7f8fa}.page{max-width:1220px;margin:0 auto;padding:32px 40px 56px;display:flex;flex-direction:column;gap:24px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.page-hero{display:flex;flex-direction:column;gap:6px}.page-section-label{font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#0770f1}.page-title{font-size:30px;line-height:36px;font-weight:700;color:#1a1a1a;margin:0}.page-subtitle{font-size:15px;color:gray;max-width:64ch}.btn{display:inline-flex;align-items:center;gap:6px;border-radius:8px;font-size:14px;font-weight:600;padding:8px 16px;cursor:pointer;transition:background .12s,border-color .12s,box-shadow .12s;border:none;line-height:1.4;font-family:inherit}.btn-primary{background:#0770f1;color:#fff}.btn-primary:hover{background:#0562d4;box-shadow:0 4px 10px #0770f147}.btn-secondary{background:#fff;color:#1a1a1a;border:1px solid #D9D9D9}.btn-secondary:hover{border-color:#0770f1;color:#0770f1}.btn-danger{background:#fff;color:#c22;border:1px solid #EAACAC}.btn-danger:hover{background:#fdf4f4}.btn-sm{font-size:12px;padding:5px 10px}.card{background:#fff;border:1px solid #E6E6E6;border-radius:12px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.stat-card{background:#fff;border:1px solid #E6E6E6;border-radius:12px;padding:15px 16px;display:flex;flex-direction:column;gap:6px}.stat-card .label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:gray}.stat-card .value{font-size:28px;font-weight:700;color:#1a1a1a;font-variant-numeric:tabular-nums;line-height:1.1}.stat-card .value.accent{color:#0770f1}.stat-card .sub{font-size:12px;color:gray}.dash-chart-card{border-radius:14px;padding:22px 24px 16px}.dash-chart-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px}.dash-chart-title{font-size:16px;font-weight:700;color:#1a1a1a}.dash-chart-sub{font-size:13px;color:gray;margin-top:3px}.dash-section-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:gray;margin:0 0 14px}.starred-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.starred-card{background:#fff;border:1px solid #E6E6E6;border-radius:14px;padding:18px 20px;display:flex;flex-direction:column;gap:14px;cursor:pointer;transition:box-shadow .15s}.starred-card:hover{box-shadow:0 4px 16px #0f172a12}.starred-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.starred-card-name-row{display:flex;align-items:flex-start;gap:8px;min-width:0}.starred-card-name{font-size:16px;font-weight:700;color:#1a1a1a}.starred-card-meta{font-size:12px;color:gray;margin-top:3px}.starred-card-bottom{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.starred-cost-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:gray;font-weight:600}.starred-cost-value{font-size:24px;font-weight:700;color:#1a1a1a;margin-top:3px;font-variant-numeric:tabular-nums}.starred-metrics{display:flex;flex-direction:column;gap:5px;align-items:flex-end}.init-filter{display:flex;flex-wrap:wrap;gap:8px;padding:16px 20px}.init-filter-chip{display:flex;align-items:center;gap:6px;padding:4px 10px;background:#f4f5f7;border:1px solid #e2e5ea;border-radius:20px;font-size:12px;font-weight:500;color:#374151;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .12s,border-color .12s}.init-filter-chip input[type=checkbox]{width:13px;height:13px}.init-filter-chip.selected{background:#eef3ff;border-color:#b5caff;color:#0770f1}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th{text-align:left;padding:8px 16px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:gray;background:#fafbfc;border-bottom:1px solid #E6E6E6}.data-table td{padding:11px 16px;border-bottom:1px solid #F2F2F2;vertical-align:middle;color:#4d4d4d}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover td{background:#f5f8fe}.row-actions{display:flex;gap:6px;justify-content:flex-end}.badge{display:inline-block;padding:3px 9px;border-radius:99px;font-size:11px;font-weight:600;letter-spacing:.03em}.badge-open{background:#e5f4f2;color:#157f73}.badge-frozen{background:#ebf3ff;color:#0770f1}.badge-admin,.badge-operator{background:#f0edfb;color:#5b2dc8}.badge-viewer{background:#f2f2f2;color:gray}.badge-pending{background:#fff6e0;color:#7a5c00}.badge-active{background:#e5f4f2;color:#157f73}.badge-disabled{background:#f2f2f2;color:gray}.month-group{background:#fff;border:1px solid #E6E6E6;border-radius:12px;overflow:hidden}.month-group-header{padding:13px 20px;background:#fafbfc;border-bottom:1px solid #E6E6E6}.month-group-header h2{font-size:15px;font-weight:600;color:#1a1a1a;margin:0}.admin-error{background:#fee2e2;border:1px solid #fca5a5;border-radius:7px;padding:10px 14px;color:#991b1b;font-size:13px;margin:0}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fade .15s ease}.modal-card{background:#fff;border-radius:14px;padding:28px 28px 24px;width:440px;max-width:calc(100vw - 32px);box-shadow:0 20px 60px #0f172a2e;display:flex;flex-direction:column;gap:18px;max-height:calc(100vh - 64px);overflow-y:auto;animation:pop .15s ease}.modal-title{font-size:19px;font-weight:700;color:#1a1a1a;margin:0}.modal-form{display:flex;flex-direction:column;gap:14px}.form-field{display:flex;flex-direction:column;gap:5px}.form-field label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:gray}.form-field input,.form-field select,.form-field textarea{border:1px solid #D9D9D9;border-radius:8px;padding:8px 10px;font-size:14px;color:#1a1a1a;outline:none;font-family:inherit;transition:border-color .12s,box-shadow .12s;background:#fff}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:#4d9dff;box-shadow:0 0 0 3px #4d9dff38}.modal-footer{display:flex;gap:8px;justify-content:flex-end}.modal-fieldset{border:1px solid #e5e7eb;border-radius:7px;padding:12px 14px}.modal-fieldset legend{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;padding:0 4px}.checkbox-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}.checkbox-list label{display:flex;align-items:center;gap:8px;font-size:13px;color:#374151;cursor:pointer}.confirm-text{font-size:14px;color:#374151;margin:0}.empty-state{text-align:center;padding:40px 20px;color:#9ca3af;font-size:14px}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f4f5f7}.login-card{background:#fff;border:1px solid #E6E6E6;border-radius:16px;padding:48px 40px;display:flex;flex-direction:column;align-items:center;gap:12px;box-shadow:0 8px 32px #0f172a1a;min-width:340px}.login-title{font-size:24px;font-weight:700;color:#1a1a2e}.login-sub{font-size:13px;color:#6b7280;margin-bottom:8px}.login-google-btn{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid #d1d5db;border-radius:8px;padding:10px 20px;font-size:14px;font-weight:500;color:#374151;text-decoration:none;cursor:pointer;transition:border-color .15s,box-shadow .15s;margin-top:8px}.login-google-btn:hover{border-color:#0770f1;box-shadow:0 0 0 3px #0770f11a}.month-editor{max-width:1200px;margin:0 auto;padding:24px 20px;display:flex;flex-direction:column;gap:20px}.editor-header{background:#fff;border-radius:10px;padding:16px 20px;display:flex;align-items:center;gap:24px;box-shadow:0 1px 3px #00000014}.editor-header h2{font-size:18px;font-weight:600;color:#1a1a2e;white-space:nowrap}.editor-body{display:grid;grid-template-columns:1fr 280px;gap:16px;align-items:start}.editor-main{background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 3px #00000014}.editor-tabs{display:flex;border-bottom:1px solid #e8eaed;padding:0 20px;gap:2px}.editor-tabs .tab{padding:12px 18px;font-size:13px;font-weight:500;color:#6b7280;background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s,border-color .15s;margin-bottom:-1px}.editor-tabs .tab:hover{color:#1a1a2e}.editor-tabs .tab.active{color:#0770f1;border-bottom-color:#0770f1}.metric-selector{flex:1}.metric-tabs{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.metric-tab{display:flex;align-items:center;gap:2px;background:#f4f5f7;border-radius:6px;padding:2px 2px 2px 8px;border:1px solid #e2e5ea;transition:background .12s,border-color .12s}.metric-tab.active{background:#eef3ff;border-color:#b5caff}.metric-tab-name{background:none;border:none;font-size:13px;font-weight:500;cursor:pointer;padding:2px 4px;color:#374151}.metric-tab.active .metric-tab-name{color:#0770f1}.metric-tab input{border:none;background:none;font-size:13px;width:120px;outline:none}.metric-rename-btn,.metric-delete-btn{background:none;border:none;cursor:pointer;font-size:11px;padding:3px 5px;color:#9ca3af;border-radius:4px;line-height:1}.metric-rename-btn:hover{color:#374151;background:#e5e7eb}.metric-delete-btn:hover{color:#ef4444;background:#fee2e2}.metric-add-btn{background:none;border:1px dashed #d1d5db;border-radius:6px;padding:4px 10px;font-size:13px;color:#6b7280;cursor:pointer;transition:border-color .12s,color .12s}.metric-add-btn:hover{border-color:#0770f1;color:#0770f1}.metric-create-form{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.metric-create-form input{border:1px solid #d1d5db;border-radius:6px;padding:4px 8px;font-size:13px;outline:none}.metric-create-form input:focus{border-color:#0770f1}.metric-create-form button{padding:4px 10px;border-radius:6px;font-size:13px;cursor:pointer}.metric-create-form button:first-of-type{background:#0770f1;color:#fff;border:none}.metric-create-form button:last-of-type{background:none;border:1px solid #d1d5db;color:#374151}.metric-error{margin-top:6px;font-size:12px;color:#ef4444}.allocation-tab,.cost-items-tab{padding:20px;display:flex;flex-direction:column;gap:24px}.category-section h3{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px}.team-block{margin-bottom:12px}.team-row,.item-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid #f1f3f5}.team-row{font-weight:600}.person-row{display:flex;align-items:center;gap:8px;padding:5px 0 5px 20px;border-bottom:1px solid #f7f8fa}.person-row:last-child{border-bottom:none}.team-name,.item-name{flex:1}.person-name{flex:1;font-size:13px}.person-sub{font-size:12px;color:#9ca3af}.weight-input-wrap{display:flex;align-items:center;gap:4px}.weight-input{width:72px;padding:4px 6px;border:1px solid #d1d5db;border-radius:6px;font-size:13px;text-align:right;outline:none;transition:border-color .12s}.weight-input:focus{border-color:#0770f1}.weight-input.invalid{border-color:#f59e0b;background:#fffbeb}.inherit-hint{font-size:11px;color:#9ca3af}.invalid-hint{font-size:11px;color:#f59e0b}.save-error{color:#ef4444;font-size:13px;margin-top:8px}.cost-items-table{width:100%;border-collapse:collapse;font-size:13px}.cost-items-table th{text-align:left;padding:6px 10px;font-weight:600;color:#6b7280;background:#f9fafb;border-bottom:1px solid #e5e7eb;font-size:12px}.cost-items-table td{padding:7px 10px;border-bottom:1px solid #f1f3f5;vertical-align:middle}.cost-items-table tbody tr:last-child td{border-bottom:none}.cost-items-table tbody tr:hover>td{background:#f9fafb}.sub{color:#9ca3af;font-size:12px}.gross{font-variant-numeric:tabular-nums;font-weight:500}.cost-items-table td input,.cost-items-table td select{border:1px solid #d1d5db;border-radius:5px;padding:4px 6px;font-size:13px;outline:none;width:100%}.cost-items-table td input:focus,.cost-items-table td select:focus{border-color:#0770f1}.cost-items-table .add-row td,.cost-items-table .edit-row td{background:#f0f4ff}.cost-items-table button{background:none;border:1px solid #e2e5ea;border-radius:5px;padding:3px 8px;font-size:12px;cursor:pointer;color:#374151;margin-right:4px}.cost-items-table button:hover{border-color:#0770f1;color:#0770f1}.add-item-btn{display:inline-block;margin-top:8px;background:none;border:1px dashed #d1d5db;border-radius:6px;padding:4px 12px;font-size:13px;color:#6b7280;cursor:pointer}.add-item-btn:hover{border-color:#0770f1;color:#0770f1}.result-rail{background:#fff;border-radius:10px;padding:20px;display:flex;flex-direction:column;gap:20px;box-shadow:0 1px 3px #00000014;position:sticky;top:20px}.result-rail.loading{color:#9ca3af;font-size:13px;justify-content:center;align-items:center;min-height:140px}.result-total,.result-cpu{display:flex;flex-direction:column;gap:2px}.result-total .label,.result-cpu .label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#9ca3af}.result-total .value{font-size:22px;font-weight:700;color:#1a1a2e;font-variant-numeric:tabular-nums}.result-cpu .value{font-size:18px;font-weight:700;color:#0770f1;font-variant-numeric:tabular-nums}.result-cpu .value.big.pending{color:#9ca3af}.result-breakdown{display:flex;flex-direction:column;gap:4px}.result-breakdown h4{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#9ca3af;margin-bottom:6px}.breakdown-row{display:grid;grid-template-columns:12px 1fr auto auto;align-items:center;gap:8px;font-size:13px}.category-dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex-shrink:0}.category-name{color:#374151}.category-amount{font-variant-numeric:tabular-nums;color:#1a1a2e;font-weight:500}.category-pct{font-size:11px;color:#9ca3af;min-width:34px;text-align:right}.invalid-rate-warning{background:#fffbeb;border:1px solid #fcd34d;border-radius:6px;padding:8px 10px;font-size:12px;color:#92400e}@media (max-width: 780px){.editor-body{grid-template-columns:1fr}.result-rail{position:static}}.modal-field-label{font-size:12px;font-weight:600;color:#4d4d4d;display:block;margin-bottom:6px}.modal-input,.modal-select{width:100%;height:40px;border:1px solid #D9D9D9;border-radius:8px;padding:0 12px;font-size:14px;color:#1a1a1a;font-family:inherit;background:#fff;outline:none;transition:border-color .12s,box-shadow .12s}.modal-textarea{width:100%;min-height:64px;border:1px solid #D9D9D9;border-radius:8px;padding:10px 12px;font-size:14px;color:#1a1a1a;font-family:inherit;background:#fff;outline:none;resize:vertical;transition:border-color .12s,box-shadow .12s}.modal-input:focus,.modal-select:focus,.modal-textarea:focus{border-color:#4d9dff;box-shadow:0 0 0 3px #4d9dff38}.modal-input.mono,.mono{font-variant-numeric:tabular-nums}
