*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--green:#139B62;--green-dark:#0F7D50;--green-dim:#DCFCE7;--green-text:#0F7D50;--bg:#F3F4F6;--surface:#FFFFFF;--border:#E5E7EB;--border-hi:#D1D5DB;--text:#111827;--text-2:#374151;--muted:#6B7280;--muted-2:#9CA3AF;--radius:10px;--radius-sm:6px;--font:"Inter",ui-sans-serif,system-ui,sans-serif;--mono:"Fira Code",monospace}html{scroll-behavior:smooth;height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:13px;min-height:100%;overflow-x:hidden;overflow-y:auto;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#D1D5DB;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#9CA3AF}.kpi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}.kpi-card{background:#fff;border:1px solid #e5e5e5;border-radius:14px;padding:16px 20px;position:relative;overflow:hidden;transition:border-color .2s,box-shadow .2s,transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.06);min-height:82px}.kpi-card:hover{border-color:var(--accent-color,var(--green));box-shadow:0 4px 12px rgba(0,0,0,.08);transform:translateX(2px)}.kpi-card:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:4px;height:60%;background:var(--accent-color,var(--green));border-radius:0 4px 4px 0}.kpi-icon{display:none}.kpi-value{font-size:26px;font-weight:800;line-height:1.1;letter-spacing:-.5px;color:var(--text);margin-bottom:4px}.kpi-label{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}.kpi-sub{font-size:11px;color:var(--muted-2);margin-top:3px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}@media (max-width:900px){.grid-2{grid-template-columns:1fr}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;flex:1 1;min-height:0;overflow:hidden}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.card-title{font-size:13px;font-weight:700;color:var(--text)}.chart-wrap{position:relative;height:200px}canvas{width:100%!important}.bar-list{flex-direction:column}.bar-list,.bar-row{display:flex;gap:8px}.bar-row{align-items:center;font-size:12px}.bar-row-label{width:140px;min-width:140px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--text-2);font-weight:500}.bar-track{flex:1 1;height:5px;background:#F1F5F9;border-radius:3px;overflow:hidden}.bar-fill{height:100%;border-radius:3px;background:var(--green);transition:width .5s ease}.bar-value{width:64px;text-align:right;font-weight:600;font-size:12px;color:var(--text-2);white-space:nowrap}.search-input{background:#F9FAFB;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font:400 13px var(--font);padding:5px 10px;outline:none;height:32px;transition:border-color .15s,box-shadow .15s;width:220px}.search-input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(34,197,94,.15);background:#fff}.btn{padding:5px 14px;height:32px;border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff;color:var(--text-2);font:500 13px var(--font);cursor:pointer;transition:background .15s,border-color .15s;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.btn:hover{background:#F8FAFC}.btn.primary{background:var(--green);border-color:var(--green);color:#fff}.btn.primary:hover{background:var(--green-dark)}.btn.secondary{background:#F9FAFB;color:var(--muted);border-color:var(--border)}.btn.secondary:hover{background:#F1F5F9;color:var(--text-2)}.table-wrap{overflow-x:auto;overflow-y:auto;flex:1 1;min-height:0;border:1px solid var(--border);border-radius:var(--radius);position:relative}table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}thead th{position:sticky;top:0;z-index:10;background:#FAFAFA;padding:9px 12px;text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;-webkit-user-select:none;user-select:none}th:hover{cursor:pointer}td,th:hover{color:var(--text-2)}td{padding:9px 12px;border-bottom:1px solid #f1f5f9;white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis}tr:last-child td{border-bottom:none}tbody tr{transition:background .1s}tbody tr:hover{background:#F0F7F0;cursor:default}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:99px;font-size:11px;font-weight:600;white-space:nowrap}.badge-green{background:#DCFCE7;color:#0F7D50}.badge-blue{background:#DBEAFE;color:#2563EB}.badge-amber{background:#FEF3C7;color:#D97706}.badge-slate{background:#F1F5F9;color:#64748B}.pagination{display:flex;align-items:center;justify-content:space-between;padding:10px 0 2px;font-size:12px;color:var(--muted)}.page-btns{display:flex;gap:4px}.page-btn{width:28px;height:28px;border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff;color:var(--muted);font:12px var(--font);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .12s}.page-btn:hover{background:#F1F5F9;color:var(--text-2)}.page-btn.active{background:var(--green);color:#fff;border-color:var(--green)}.loading{display:flex;align-items:center;justify-content:center;height:100px;color:var(--muted);font-size:13px;gap:8px}.spinner{width:16px;height:16px;border:2px solid #e5e7eb;border-top-color:#5a8c66;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.tooltip{position:absolute;z-index:200;background:#1E293B;color:#F1F5F9;border-radius:var(--radius-sm);padding:6px 10px;font-size:12px;pointer-events:none;box-shadow:0 4px 16px rgba(0,0,0,.2);white-space:nowrap}.th-inner{display:inline-flex;align-items:center;gap:4px;position:relative;white-space:nowrap}.th-tip-icon{font-size:10px;font-style:normal;color:var(--muted-2);opacity:0;cursor:help;transition:opacity .15s;font-weight:400;text-transform:none;letter-spacing:0;line-height:1}th:hover .th-tip-icon{opacity:1}.th-tip-box{display:none;position:absolute;top:calc(100% + 6px);left:0;z-index:500;background:#1E293B;color:#F1F5F9;font-size:12px;font-weight:400;line-height:1.5;text-transform:none;letter-spacing:0;padding:8px 12px;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.25);min-width:200px;max-width:280px;white-space:normal;pointer-events:none}th:hover .th-tip-box{display:block}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.board-header{margin-bottom:20px}.board-title{font-size:22px;font-weight:800;letter-spacing:-.03em;color:var(--text);margin-bottom:4px}.board-sub{font-size:13px;color:var(--muted);max-width:720px;line-height:1.45}.toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:16px}.toolbar-field{display:flex;flex-direction:column;gap:4px}.toolbar-field label{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.month-input{background:#f9fafb;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font:500 13px var(--font);padding:5px 10px;height:32px;min-width:140px}.month-input:focus{border-color:var(--green);outline:none;box-shadow:0 0 0 3px rgba(34,197,94,.15);background:#fff}.presets{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.kpi-grid.board{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}@media (min-width:1100px){.kpi-grid.board{grid-template-columns:repeat(3,1fr)}}.error-banner{background:#fef2f2;border:1px solid #fecaca;color:#991b1b;border-radius:var(--radius);padding:10px 14px;font-size:13px;margin-bottom:14px}.num-muted{color:var(--muted-2);font-size:12px;font-weight:500}:root{--z-kpi-tooltip:2147483646}.kpi-grid.board .kpi-card{overflow:visible}.kpi-grid.board .kpi-card:has(.kpi-help:focus-within),.kpi-grid.board .kpi-card:has(.kpi-help:hover){position:relative;z-index:calc(var(--z-kpi-tooltip) - 1)}.toolbar-field:has(.kpi-help:focus-within),.toolbar-field:has(.kpi-help:hover){position:relative;z-index:calc(var(--z-kpi-tooltip) - 1)}table thead th.th-with-tip:has(.kpi-help:focus-within),table thead th.th-with-tip:has(.kpi-help:hover){z-index:calc(var(--z-kpi-tooltip) - 1)!important}.card:has(.kpi-help:focus-within),.card:has(.kpi-help:hover){overflow:visible;position:relative;z-index:calc(var(--z-kpi-tooltip) - 2)}.kpi-label-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;width:100%}.kpi-label-row .kpi-label{flex:1 1;min-width:0}.kpi-help{position:relative;display:inline-flex;flex-shrink:0;margin-top:1px}.kpi-help-trigger{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:none;border-radius:999px;background:#f1f5f9;color:var(--muted);font-size:11px;font-weight:700;line-height:1;cursor:help;transition:background .15s,color .15s}.kpi-help-trigger:hover,.kpi-help:focus-within .kpi-help-trigger,.kpi-help:hover .kpi-help-trigger{background:var(--green-dim);color:var(--green-text)}.kpi-help-panel{display:none;position:absolute;top:calc(100% + 6px);right:0;z-index:var(--z-kpi-tooltip);width:min(340px,85vw);padding:10px 12px;background:#1e293b;color:#f1f5f9;border-radius:8px;font-size:12px;font-weight:400;line-height:1.45;text-align:left;text-transform:none;letter-spacing:normal;box-shadow:0 8px 24px rgba(0,0,0,.25);pointer-events:none}.kpi-help:focus-within .kpi-help-panel,.kpi-help:hover .kpi-help-panel{display:block;pointer-events:auto}.kpi-help-body .kpi-help-p{margin:0 0 8px}.kpi-help-body .kpi-help-p:last-child{margin-bottom:0}.kpi-help-body strong{color:#fff;font-weight:600}.kpi-help-code{font-family:var(--mono);font-size:11px;background:rgba(255,255,255,.08);padding:1px 5px;border-radius:4px;white-space:nowrap}th.th-with-tip{white-space:normal;vertical-align:bottom}.th-with-tip-inner{display:inline-flex;align-items:flex-start;gap:6px;max-width:100%}.th-with-tip-inner .kpi-help{margin-top:0}.th-with-tip-inner .kpi-help-panel{top:100%;right:auto;left:0}.toolbar .kpi-help-panel{right:auto;left:0;top:calc(100% + 4px)}.toolbar-checkbox-row{display:flex;align-items:flex-start;gap:8px}.toolbar-checkbox-label{flex:1 1;font-size:13px;font-weight:500;color:var(--text-2);line-height:1.35}th.th-with-tip .kpi-help-panel{top:auto;bottom:calc(100% + 6px);left:0;right:auto}.kpi-help-trigger:focus-visible{outline:2px solid var(--green);outline-offset:2px}