:root{--navy:#17263b;--blue:#2479f5;--ink:#152340;--muted:#677a98;--line:#e2eaf4;--green:#15b889}*{box-sizing:border-box}body{margin:0;background:#f4f7fc;color:var(--ink);font:14px 'Segoe UI',Arial,sans-serif}button,input,select,textarea{font:inherit}button,a{cursor:pointer}button{border:1px solid #d8e3f2;border-radius:6px;background:#fff;color:#425b7e;padding:8px 12px}button:hover{border-color:var(--blue)}a{color:var(--blue);text-decoration:none}input,select,textarea{border:1px solid #ccd9eb;border-radius:6px;padding:9px;background:#fff;width:100%;min-width:0}textarea{min-height:80px;resize:vertical}label{display:grid;gap:6px;font-size:12px;color:#516788}.primary{background:var(--blue);color:white;border-color:var(--blue)}aside{position:fixed;inset:0 auto 0 0;width:230px;background:var(--navy);color:#dbe6f7;padding:20px 14px;display:flex;flex-direction:column;z-index:50}.brand{display:flex;align-items:center;gap:10px;color:white;font-size:16px;font-weight:700}.brand-mark{font-size:42px;color:#00a9ff;font-weight:900}.brand small{display:block;font-size:10px;font-weight:400;color:#b2c4df}nav{display:grid;gap:5px;margin-top:20px}nav a{padding:11px 13px;color:#c9d8ee;font-size:13px;border-radius:6px}nav .active,nav a:hover{background:var(--blue);color:white}.side-foot{margin-top:auto;display:grid;gap:10px;font-size:12px}.side-foot button{background:#253b59;color:white;border-color:#395474}.shell{margin-left:230px}header{background:white;border-bottom:1px solid var(--line);padding:14px 22px;display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:12px}.header-actions{display:flex;gap:8px}#menu{display:none}main{padding:25px;max-width:1800px;margin:auto}h1{font-size:27px;margin:0}h2{font-size:16px;margin:0 0 14px}h3{font-size:14px}p{color:var(--muted);line-height:1.6;margin:6px 0 15px}.page-heading{display:flex;justify-content:space-between;margin-bottom:12px}.card{background:white;border:1px solid var(--line);border-radius:10px;padding:20px;min-width:0;margin-bottom:16px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid .card{margin:0}.kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:20px}.kpi{background:white;border:1px solid var(--line);border-radius:9px;padding:18px;text-align:left}.kpi span{display:block;font-size:11px;color:var(--muted);margin-bottom:7px}.kpi b{font-size:25px;color:var(--ink)}.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 14px}.toolbar input{flex:2;min-width:200px}.toolbar select{flex:1;min-width:130px}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;font-size:12px;text-align:left}th{background:#f0f5fc;color:#526b91;font-weight:600;white-space:nowrap;padding:10px}td{padding:10px;border-bottom:1px solid #edf2f8;vertical-align:top}tbody tr:hover{background:#f8fbff}.project-table{min-width:1150px}.project-table td:nth-child(2){max-width:280px;overflow-wrap:anywhere}.numeric{color:var(--blue);border:0;padding:0;background:none;font:inherit;text-align:left;text-decoration:underline}.status{display:inline-block;border-radius:20px;padding:4px 8px;font-size:10px;white-space:nowrap;background:#e8f2ff;color:#2479f5}.status.good{background:#def8ec;color:#068763}.status.bad{background:#ffe3e6;color:#d63851}.status.warn{background:#fff0d4;color:#bd7800}.pager{display:flex;justify-content:space-between;align-items:center;margin-top:15px;font-size:12px;color:var(--muted)}.pager div{display:flex;gap:10px;align-items:center}.chart{width:100%;display:block}.chart g[role=button]{cursor:pointer}.chart g[role=button]:hover{opacity:.8}.chart-controls{display:flex;gap:8px;margin-bottom:15px}.chart-controls button.selected{background:var(--blue);color:white}.notice{color:#ca3650;font-size:12px}#notice:not(:empty){padding:12px;border-radius:7px;background:#fff0d9;margin-bottom:15px}.success{color:#00946b}.muted{color:var(--muted)}.source-warning{background:#fff8e9;border-left:3px solid #edba48;padding:13px;font-size:12px;line-height:1.6}.detail-grid{display:grid;grid-template-columns:190px 1fr;font-size:13px}.detail-grid dt,.detail-grid dd{padding:11px;border-bottom:1px solid var(--line);margin:0;overflow-wrap:anywhere}.detail-grid dt{color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .wide{grid-column:1/-1}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.summary-row{display:flex;gap:12px;flex-wrap:wrap;margin:15px 0}.summary-row>span{background:#edf5ff;padding:9px 13px;border-radius:6px;font-size:12px}dialog{border:1px solid var(--line);border-radius:12px;width:min(1050px,95vw);max-height:90vh;padding:25px;color:var(--ink)}dialog::backdrop{background:#14213bbb}.dialog-head{display:flex;justify-content:space-between;align-items:start;gap:15px;margin-bottom:15px}.dialog-head h2{font-size:20px;overflow-wrap:anywhere}.dialog-head button{border:0}.auth{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#16263c,#294b72)}.auth-card{background:white;border-radius:14px;padding:35px;width:min(450px,92vw);box-shadow:0 20px 80px #08142755}.auth-card h1{font-size:23px}.auth-card label{margin-bottom:15px}.auth-card .primary{width:100%;margin:7px 0 15px}.auth-card small{display:block;color:var(--muted);font-size:11px}.auth-card .notice{margin-bottom:14px}.empty{text-align:center;padding:35px;color:var(--muted)}button:disabled{opacity:.45;cursor:default}.pill{display:inline-block;background:#edf4ff;border-radius:6px;padding:8px 12px;margin:4px;font-size:12px}.metric-link{display:inline;color:var(--blue);border:0;background:none;padding:0;font:inherit;text-decoration:underline}.trend-legend{display:flex;gap:12px;font-size:11px}.source-table{min-width:1800px}.source-table td{min-width:100px;max-width:280px;overflow-wrap:anywhere}.danger{background:#ffe9ed;color:#bb3346}body[data-role=viewer] #add-project{display:none}@media(max-width:1200px){.kpis{grid-template-columns:repeat(3,1fr)}.grid{grid-template-columns:1fr}.shell{margin-left:210px}aside{width:210px}main{padding:18px}}@media(max-width:720px){aside{transform:translateX(-100%);width:230px}aside.open{transform:translateX(0)}.shell{margin:0}header{padding:12px;gap:8px}#menu{display:block}.header-actions button{font-size:11px;padding:7px}.kpis{grid-template-columns:repeat(2,1fr)}.kpi{padding:13px}.kpi b{font-size:23px}.form-grid{grid-template-columns:1fr}.detail-grid{grid-template-columns:110px 1fr}main{padding:14px}h1{font-size:23px}.card{padding:14px}dialog{padding:16px}.toolbar input{min-width:150px}.pager{flex-wrap:wrap;gap:10px}.chart{min-height:190px}}
