*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,system-ui,sans-serif;background:#f4f6f8;color:#1a2733;font-size:14px}.layout{display:flex;min-height:100vh}.sidebar{width:220px;background:#14283c;color:#cfd8e3;padding:16px 0;flex-shrink:0}.sidebar h1{font-size:16px;color:#fff;padding:0 16px 12px;border-bottom:1px solid #2a4258}.sidebar a{display:block;padding:10px 16px;color:#cfd8e3;text-decoration:none}.sidebar a:hover{background:#1d3852;color:#fff}.sidebar a.active{background:#0f6cbd;color:#fff}.content{flex:1;padding:20px 28px;overflow-x:auto}.sidebar-user{margin-top:24px;padding:12px 16px;border-top:1px solid #2a4258;font-size:12px}.sidebar-user .who{color:#fff;font-weight:600}.sidebar-user .who-sub{color:#9fb3c8;margin:2px 0 8px;word-break:break-all}.sidebar-user button{width:100%;padding:6px;background:#1d3852;color:#cfd8e3;border:1px solid #2a4258;border-radius:4px;cursor:pointer}.sidebar-user button:hover{background:#24455f;color:#fff}h2{margin:0 0 16px;font-size:20px}h3{margin:20px 0 8px;font-size:15px}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}input,select,button{padding:7px 10px;border:1px solid #c5cdd6;border-radius:4px;font-size:13px;background:#fff}button{cursor:pointer;background:#0f6cbd;color:#fff;border-color:#0f6cbd}button:hover{background:#0c5aa0}button.secondary{background:#fff;color:#1a2733;border-color:#c5cdd6}button.danger{background:#c62828;border-color:#c62828}button:disabled{opacity:.5;cursor:not-allowed}.table-wrap{max-height:calc(100vh - 230px);overflow:auto;background:#fff;box-shadow:0 1px 3px #00000014;border-radius:4px}.table-wrap table.grid{box-shadow:none}table.grid{width:100%;border-collapse:collapse;background:#fff;box-shadow:0 1px 3px #00000014}table.grid th{background:#e8edf2;text-align:left;padding:8px 10px;font-size:12px;text-transform:uppercase;letter-spacing:.03em;cursor:pointer;white-space:nowrap;position:sticky;top:0;z-index:2}table.grid td{padding:7px 10px;border-top:1px solid #eef1f4;white-space:nowrap}table.grid tr:hover td{background:#f4f9ff}table.grid td.num,table.grid th.num{text-align:right;font-variant-numeric:tabular-nums}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:20px}.card{background:#fff;border-radius:6px;padding:14px 16px;box-shadow:0 1px 3px #00000014}.card .label{font-size:12px;color:#5a6b7c;text-transform:uppercase;letter-spacing:.04em}.card .value{font-size:24px;font-weight:600;margin-top:4px}.card.warn .value{color:#c62828}.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;background:#e8edf2}.badge.ok{background:#d9efe0;color:#1b6e3c}.badge.warn{background:#fdecd3;color:#9a6200}.badge.err{background:#fadbd8;color:#a02015}.badge.info{background:#dbe9fa;color:#0f4c8c}.panel{background:#fff;border-radius:6px;padding:16px;box-shadow:0 1px 3px #00000014;margin-bottom:16px}.tabs{display:flex;gap:4px;margin-bottom:14px;border-bottom:2px solid #dde3ea}.tabs button{background:none;border:none;color:#4a5a6a;padding:8px 14px;border-bottom:2px solid transparent;margin-bottom:-2px}.tabs button.active{color:#0f6cbd;border-bottom-color:#0f6cbd;font-weight:600}.bar-row{display:flex;align-items:center;gap:8px;margin:3px 0}.bar-row .bar-label{width:170px;font-size:12px;text-align:right;color:#4a5a6a;overflow:hidden;text-overflow:ellipsis}.bar-row .bar{height:16px;background:#0f6cbd;border-radius:2px;min-width:2px}.bar-row .bar.prior{background:#9db8d1}.bar-row .bar-value{font-size:12px;color:#4a5a6a}.pager{display:flex;gap:8px;align-items:center;margin-top:10px}.muted{color:#7a8a9a}.error-box{background:#fadbd8;color:#a02015;padding:10px 14px;border-radius:4px;margin-bottom:12px}.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(230px,1fr);gap:12px;overflow-x:auto}.kanban .col{background:#eef1f4;border-radius:6px;padding:10px}.kanban .col h4{margin:0 0 8px;font-size:13px}.kanban .task{background:#fff;border-radius:4px;padding:8px 10px;margin-bottom:8px;box-shadow:0 1px 2px #0000001a;font-size:13px}
