:root{font-family:system-ui,-apple-system,sans-serif;line-height:1.5;color:#1a1a2e;background:#f4f6f9}*{box-sizing:border-box}body{margin:0}a{color:#2563eb;text-decoration:none}a:hover{text-decoration:underline}.global-spinner{width:36px;height:36px;border:3px solid #e2e8f0;border-top-color:#2563eb;border-radius:50%;animation:global-spin .7s linear infinite}@keyframes global-spin{to{transform:rotate(360deg)}}.layout{display:flex;min-height:100vh}.sidebar{width:220px;background:#1e293b;color:#e2e8f0;padding:1.5rem 1rem;display:flex;flex-direction:column}.sidebar h1{font-size:1rem;margin:0 0 1.5rem;color:#fff}.sidebar nav{flex:1}.sidebar nav a{display:block;color:#cbd5e1;padding:.5rem .75rem;border-radius:6px;margin-bottom:.25rem}.sidebar nav a.active,.sidebar nav a:hover{background:#334155;color:#fff;text-decoration:none}.main{flex:1;padding:2rem}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem}.card-grid--loading{opacity:.6;pointer-events:none}.loading-text{color:#94a3b8;font-size:1rem;font-weight:500;animation:pulse 1.2s ease-in-out infinite}.value--na{color:#94a3b8;font-size:1.4rem}.card-note{margin-left:4px;font-size:.75rem;color:#94a3b8;cursor:help;font-weight:400}.text-na{color:#94a3b8}.dashboard-page{display:flex;flex-direction:column;gap:1.25rem}.metrics-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;transition:opacity .2s}.metrics-grid.card-grid--loading{opacity:.6;pointer-events:none}@media(max-width:700px){.metrics-grid{grid-template-columns:repeat(2,1fr)}}.metric-card{background:#fff;border-radius:8px;padding:1.1rem 1.25rem;box-shadow:0 1px 3px #00000012;border:1px solid #e2e8f0}.metric-label{font-size:.8rem;color:#64748b;font-weight:500;margin-bottom:.35rem;display:flex;align-items:center;gap:2px}.metric-value{font-size:1.6rem;font-weight:700;color:#1e293b;line-height:1.2}.metric-value--primary{color:#0ea5e9}.charts-row{display:grid;grid-template-columns:1fr 380px;gap:1rem}@media(max-width:900px){.charts-row{grid-template-columns:1fr}}.chart-card{background:#fff;border-radius:8px;padding:1.1rem 1.25rem;box-shadow:0 1px 3px #00000012;border:1px solid #e2e8f0}.chart-card--full{width:100%}.chart-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.chart-card-header h3{margin:0;font-size:.95rem;font-weight:600;color:#1e293b}.chart-placeholder{height:200px;display:flex;align-items:center;justify-content:center;color:#94a3b8;font-size:.85rem}.chart-placeholder--empty{border:1px dashed #e2e8f0;border-radius:6px}.topn-selector{display:flex;gap:2px}.topn-btn{background:none;border:none;padding:.25rem .5rem;font-size:.78rem;cursor:pointer;color:#64748b;border-radius:4px;transition:background .15s,color .15s;font-weight:500;min-width:28px}.topn-btn:hover{background:#f1f5f9;color:#0f172a}.topn-btn.active{color:#0ea5e9;font-weight:700}.chart-card-controls{display:flex;align-items:center;gap:.5rem}.view-toggle{display:flex;border:1px solid #e2e8f0;border-radius:6px;overflow:hidden}.view-btn{background:none;border:none;padding:.3rem .7rem;font-size:.78rem;cursor:pointer;color:#64748b;transition:background .15s,color .15s}.view-btn.active{background:#0ea5e9;color:#fff}.mini-table-wrap{overflow-x:auto;max-height:200px;overflow-y:auto}.mini-table{width:100%;font-size:.82rem;border-collapse:collapse}.mini-table th,.mini-table td{padding:.3rem .5rem;text-align:left}.mini-table th{color:#64748b;font-weight:600;border-bottom:1px solid #e2e8f0}.model-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;flex-shrink:0}.chart-tooltip{background:#1e293b;color:#f8fafc;padding:.4rem .75rem;border-radius:6px;font-size:.82rem}.chart-tooltip-label{margin:0;color:#94a3b8;font-size:.75rem}.chart-tooltip-value{margin:0;font-weight:600;font-size:.9rem}.data-note{font-size:.78rem;color:#94a3b8;padding:.5rem .75rem;background:#f8fafc;border-radius:6px;border:1px solid #e2e8f0;margin:0}.data-note code{background:#e2e8f0;padding:0 4px;border-radius:3px;font-size:.75rem}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.card{background:#fff;border-radius:8px;padding:1.25rem;box-shadow:0 1px 3px #00000014}.card h3{margin:0 0 .5rem;font-size:.875rem;color:#64748b;font-weight:500}.card .value{font-size:1.5rem;font-weight:600}table{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #00000014}th,td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid #e2e8f0}th{background:#f8fafc;font-size:.875rem;color:#64748b}.btn{display:inline-block;padding:.5rem 1rem;border:none;border-radius:6px;background:#2563eb;color:#fff;cursor:pointer;font-size:.875rem}.btn:hover{background:#1d4ed8}.btn-danger{background:#dc2626}.btn-danger:hover{background:#b91c1c}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.25rem;font-size:.875rem;color:#475569}.form-group input,.form-group select{width:100%;padding:.5rem .75rem;border:1px solid #cbd5e1;border-radius:6px;font-size:.875rem}.badge{display:inline-block;padding:.125rem .5rem;border-radius:999px;font-size:.75rem;font-weight:500}.badge-pending{background:#fef3c7;color:#92400e}.badge-active{background:#d1fae5;color:#065f46}.master-detail{display:grid;grid-template-columns:320px 1fr;gap:1.5rem}.panel{background:#fff;border-radius:8px;padding:1rem;box-shadow:0 1px 3px #00000014}.panel-list-item{padding:.75rem;border-radius:6px;cursor:pointer;border-bottom:1px solid #f1f5f9}.panel-list-item.selected{background:#eff6ff}.error{color:#dc2626;font-size:.875rem}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.page-header h2{margin:0}.filters{display:flex;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap}.filters input,.filters select{padding:.5rem .75rem;border:1px solid #cbd5e1;border-radius:6px;font-size:.875rem}.page-subtitle{margin:0;color:#64748b;font-size:.875rem}.date-info{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-top:.25rem}.tz-badges{display:flex;gap:.35rem}.tz-badge{display:inline-flex;align-items:center;font-size:.7rem;font-weight:600;padding:2px 7px;border-radius:99px;cursor:help;letter-spacing:.01em}.tz-badge--local{background:#dbeafe;color:#1d4ed8;border:1px solid #bfdbfe}.tz-badge--system{background:#f1f5f9;color:#475569;border:1px solid #e2e8f0}.page-header-actions{display:flex;gap:.75rem;align-items:center}.btn-secondary{background:#fff;color:#334155;border:1px solid #cbd5e1}.btn-secondary:hover{background:#f8fafc}.btn-sm{padding:.375rem .75rem;font-size:.8125rem}.muted{color:#64748b;font-size:.875rem}.form-hint{margin:.5rem 0 0}.vk-master-detail{grid-template-columns:1fr 380px}.panel-section-header{margin-bottom:1rem}.panel-section-header h3{margin:0}.import-panel{margin-bottom:1.5rem}.import-table{margin-top:.75rem}.import-table th,.import-table td{font-size:.875rem}.import-checkbox-col{width:72px;text-align:center}.import-token-cell{display:inline-block;max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.import-budget{white-space:nowrap;font-variant-numeric:tabular-nums}.import-toolbar{display:flex;align-items:center;gap:.75rem;margin-top:.75rem;margin-bottom:.25rem}.import-search{flex:1;max-width:420px;padding:.375rem .75rem;border:1px solid #e2e8f0;border-radius:6px;font-size:.875rem;background:#fff;outline:none}.import-search:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.import-count{white-space:nowrap;font-size:.8125rem}.import-pagination{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-top:.75rem}.import-page-info{font-size:.875rem;color:#475569;min-width:100px;text-align:center}.import-key-option{display:flex;align-items:flex-start;gap:.5rem;margin-bottom:.75rem;cursor:pointer}.import-key-option span{display:flex;flex-direction:column;gap:.125rem}.vk-table td{vertical-align:middle}.vk-row-selected{background:#eff6ff}.vk-key-name{font-weight:600}.vk-key-masked{font-family:ui-monospace,monospace;font-size:.8125rem}.detail-key-masked{margin:0 0 1.25rem}.user-count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.75rem;height:1.75rem;padding:0 .5rem;border-radius:999px;background:#e2e8f0;font-size:.8125rem;font-weight:600}.budget-cell{display:flex;align-items:center;gap:.5rem;min-width:120px}.progress-bar{flex:1;height:8px;background:#e2e8f0;border-radius:999px;overflow:hidden}.progress-bar-fill{height:100%;border-radius:999px;transition:width .2s ease}.progress-low{background:#2563eb}.progress-mid{background:#f59e0b}.progress-high{background:#dc2626}.budget-pct{font-size:.8125rem;font-weight:600;min-width:2.5rem}.detail-panel h3{margin:0 0 .25rem}.detail-panel h4{margin:1.5rem 0 .75rem}.grant-access-row{display:flex;gap:.5rem;margin-bottom:1rem}.grant-access-row input{flex:1;padding:.5rem .75rem;border:1px solid #cbd5e1;border-radius:6px;font-size:.875rem}.user-access-list{display:flex;flex-direction:column;gap:.5rem}.user-access-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc}.user-avatar{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:999px;background:#dbeafe;color:#1d4ed8;font-size:.75rem;font-weight:700;flex-shrink:0}.user-access-info{flex:1;min-width:0}.user-access-name{font-weight:600;font-size:.875rem}.btn-icon{border:none;background:transparent;cursor:pointer;font-size:1.25rem;line-height:1;padding:.25rem .5rem;border-radius:4px}.btn-danger-icon{color:#94a3b8}.btn-danger-icon:hover{color:#dc2626;background:#fef2f2}.ss-container{position:relative;width:100%}.ss-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.4rem .75rem;border:1px solid #e2e8f0;border-radius:6px;background:#fff;font-size:.875rem;color:#1e293b;cursor:pointer;text-align:left;outline:none}.ss-trigger:hover:not(:disabled){border-color:#94a3b8}.ss-trigger-open{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.ss-trigger:disabled{background:#f8fafc;cursor:not-allowed;opacity:.6}.ss-placeholder{color:#94a3b8}.ss-selected-code{font-weight:600;color:#1e293b}.ss-chevron{font-size:.625rem;color:#94a3b8;flex-shrink:0}.ss-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:200;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 8px 24px #0000001f;overflow:hidden}.ss-search-wrap{padding:.5rem .5rem .25rem;border-bottom:1px solid #f1f5f9}.ss-search{width:100%;padding:.35rem .6rem;border:1px solid #e2e8f0;border-radius:5px;font-size:.8125rem;outline:none;box-sizing:border-box}.ss-search:focus{border-color:#3b82f6}.ss-list{list-style:none;margin:0;padding:.25rem 0;max-height:240px;overflow-y:auto}.ss-option{display:flex;align-items:baseline;gap:.4rem;padding:.4rem .75rem;font-size:.8125rem;cursor:pointer;color:#1e293b}.ss-option:hover,.ss-option-active{background:#eff6ff}.ss-option-code{font-weight:600;color:#1d4ed8;font-size:.75rem;white-space:nowrap;flex-shrink:0}.ss-option-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ss-empty{padding:.5rem .75rem;font-size:.8125rem;color:#94a3b8}.mss-container{position:relative;width:100%}.mss-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.48rem .75rem;border:1px solid #cbd5e1;border-radius:7px;background:#fff;color:#0f172a;cursor:pointer}.mss-trigger-open{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.mss-trigger-text{font-size:.82rem;font-weight:500}.mss-chevron{font-size:.62rem;color:#64748b}.mss-chips{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.4rem}.mss-chip{font-size:.72rem;border-radius:999px;padding:.12rem .5rem;background:#eff6ff;border:1px solid #bfdbfe;color:#1d4ed8}.mss-chip-muted{background:#f8fafc;border-color:#cbd5e1;color:#475569}.mss-dropdown{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:220;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 10px 24px #02061724;overflow:hidden}.mss-search-wrap{padding:.5rem .5rem .3rem;border-bottom:1px solid #f1f5f9}.mss-search{width:100%;padding:.38rem .6rem;border:1px solid #d1d5db;border-radius:6px;font-size:.82rem}.mss-search:focus{outline:none;border-color:#3b82f6}.mss-actions{display:flex;gap:.35rem;padding:.35rem .5rem;border-bottom:1px solid #f1f5f9}.mss-list{list-style:none;margin:0;padding:.25rem 0;max-height:240px;overflow-y:auto}.mss-option{padding:.3rem .65rem}.mss-option:hover,.mss-option-active{background:#eff6ff}.mss-option-label-wrap{display:flex;align-items:flex-start;gap:.45rem;cursor:pointer}.mss-option-main{display:inline-flex;gap:.4rem;align-items:baseline;min-width:0}.mss-option-code{font-size:.74rem;font-weight:600;color:#1d4ed8;white-space:nowrap}.mss-option-label{font-size:.8rem;color:#0f172a}.mss-empty{padding:.5rem .7rem;font-size:.8rem;color:#94a3b8}.cc-table-toolbar{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.cc-table-scroll{overflow-x:auto}.cc-table{min-width:1100px;width:100%}.cc-table th,.cc-table td{font-size:.8125rem;white-space:nowrap}.cc-form-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem 1.25rem;margin-bottom:1rem}@media(max-width:900px){.cc-form-grid{grid-template-columns:repeat(2,1fr)}}.cc-desc-cell{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8125rem}.cc-editing-row td{background:#f8fafc;padding-top:.5rem;padding-bottom:.5rem}.cc-inline-input{width:100%;padding:.3rem .5rem;border:1px solid #94a3b8;border-radius:5px;font-size:.875rem;background:#fff;outline:none;box-sizing:border-box}.cc-inline-input:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.cc-inline-desc{min-width:200px}.cc-action-row{display:flex;gap:.4rem;flex-wrap:nowrap}.cc-textarea{width:100%;padding:.375rem .75rem;border:1px solid #e2e8f0;border-radius:6px;font-size:.875rem;font-family:inherit;resize:vertical;background:#fff;outline:none;box-sizing:border-box}.cc-textarea:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.required-mark{color:#ef4444;margin-left:2px}.sidebar-version{font-size:.7rem;color:#64748b;margin-top:-.5rem;margin-bottom:1rem;letter-spacing:.03em}.sidebar-user{margin-top:auto;padding-top:1rem;border-top:1px solid #334155}.sidebar-user-info{display:flex;align-items:center;gap:.625rem;margin-bottom:.75rem}.sidebar-avatar{flex-shrink:0;width:2rem;height:2rem;border-radius:50%;background:#3b82f6;color:#fff;font-size:.6875rem;font-weight:700;display:flex;align-items:center;justify-content:center;letter-spacing:.02em}.sidebar-user-text{display:flex;flex-direction:column;min-width:0}.sidebar-user-name{font-size:.8125rem;font-weight:500;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user-role{font-size:.6875rem;color:#64748b;text-transform:capitalize}.sidebar-logout-btn{display:flex;align-items:center;justify-content:center;width:100%;padding:.4375rem .75rem;border:1px solid #334155;border-radius:6px;background:transparent;color:#94a3b8;font-size:.8125rem;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.sidebar-logout-btn:hover{background:#dc2626;border-color:#dc2626;color:#fff}.period-filter{display:flex;align-items:center;gap:.25rem;margin-bottom:1.25rem;background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:.25rem;width:fit-content}.period-btn{padding:.3125rem .875rem;border:none;border-radius:6px;background:transparent;color:#475569;font-size:.8125rem;font-weight:500;cursor:pointer;transition:background .12s,color .12s;white-space:nowrap}.period-btn:hover{background:#f1f5f9;color:#1e293b}.period-btn-active{background:#1e293b;color:#fff}.period-btn-active:hover{background:#334155;color:#fff}.dashboard-filter-panel{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:.75rem;margin-bottom:1rem}.dashboard-filter-panel-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.65rem}.dashboard-filter-panel-header h3{margin:0;font-size:.9rem;color:#0f172a}.dashboard-filter-collapsed-meta{font-size:.8rem;color:#475569;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:8px;padding:.45rem .6rem}.dashboard-filters{display:grid;grid-template-columns:1.2fr 1fr;gap:1rem}.dashboard-filter-group{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:.75rem}.dashboard-filter-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.dashboard-filter-label{display:block;font-size:.78rem;color:#475569;margin-bottom:.4rem;font-weight:600}.dashboard-filter-count{font-size:.74rem;color:#0f766e;background:#ecfeff;border:1px solid #a5f3fc;border-radius:999px;padding:.1rem .5rem}.btn-sm{padding:.22rem .55rem;font-size:.74rem}.dashboard-date-range{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.dashboard-date-range input[type=date]{border:1px solid #cbd5e1;border-radius:6px;padding:.35rem .5rem;font-size:.82rem}.dashboard-filter-note{font-size:.75rem;color:#64748b;margin-top:.4rem}@media(max-width:1024px){.dashboard-filters{grid-template-columns:1fr}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f4f6f9}.login-card{background:#fff;border-radius:12px;padding:2.5rem 2rem;box-shadow:0 4px 24px #00000014;text-align:center;min-width:280px}.confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:#0f172a73}.confirm-dialog{width:100%;max-width:440px;background:#fff;border-radius:10px;padding:1.5rem;box-shadow:0 16px 48px #0000002e;border:1px solid #e2e8f0}.confirm-dialog h3{margin:0 0 .75rem;font-size:1.125rem}.confirm-dialog-body{margin-bottom:1.25rem}.confirm-dialog-actions{display:flex;justify-content:flex-end;gap:.75rem}.confirm-details{margin:0;padding:.875rem 1rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px}.confirm-details-row{display:grid;grid-template-columns:7rem 1fr;gap:.5rem 1rem;padding:.35rem 0}.confirm-details-row:not(:last-child){border-bottom:1px solid #e2e8f0}.confirm-details-row dt{margin:0;font-size:.8125rem;font-weight:500;color:#64748b}.confirm-details-row dd{margin:0;font-size:.875rem;color:#1e293b;word-break:break-word}.diagnose-table{width:100%;border-collapse:collapse;font-size:.875rem}.diagnose-table th,.diagnose-table td{padding:.625rem .75rem;border-bottom:1px solid #e2e8f0;vertical-align:top;text-align:left}.diagnose-table th{font-size:.8125rem;color:#64748b;font-weight:600}.diagnose-detail-cell{max-width:520px}.diagnose-url{font-size:.75rem;word-break:break-all;margin-bottom:.35rem}.diagnose-pre{margin:0;padding:.5rem .625rem;background:#f1f5f9;border-radius:6px;font-size:.75rem;white-space:pre-wrap;word-break:break-word;max-height:120px;overflow:auto}.diagnose-pre--error{background:#fef2f2;color:#991b1b}
