*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#0f1117;color:#e1e1e1}.loading{display:flex;justify-content:center;align-items:center;padding:3rem;font-size:1.1rem;color:#888}.login-container{display:flex;justify-content:center;align-items:center;height:100vh}.login-form{background:#1a1d27;padding:2rem;border-radius:12px;display:flex;flex-direction:column;gap:1rem;width:340px}.login-form h2{text-align:center;color:#8884d8}.login-form input{padding:.75rem;border-radius:8px;border:1px solid #333;background:#0f1117;color:#e1e1e1;font-size:1rem}.login-form button{padding:.75rem;border-radius:8px;border:none;background:#8884d8;color:#fff;font-size:1rem;cursor:pointer}.login-form button:hover{background:#7370c4}.error{color:#ff6b6b;font-size:.9rem;text-align:center}.error-banner{background:#2a1a1a;color:#ff6b6b;padding:.75rem;border-radius:8px;margin-bottom:1rem}.notice-banner{background:#2a2a1a;color:#ffc658;padding:.75rem;border-radius:8px;margin-bottom:1rem;font-size:.9rem}.shell{display:flex;min-height:100vh}nav{width:220px;background:#1a1d27;padding:1rem .75rem;display:flex;flex-direction:column;gap:.25rem;position:fixed;height:100vh}nav .nav-brand{font-size:1.1rem;font-weight:700;color:#8884d8;padding:.75rem;margin-bottom:.5rem}nav button{text-align:left;padding:.6rem .75rem;border-radius:8px;border:none;background:transparent;color:#aaa;cursor:pointer;font-size:.9rem}nav button:hover{background:#252830;color:#e1e1e1}nav button.active{background:#8884d820;color:#8884d8}nav .nav-logout{margin-top:auto;color:#666;border-top:1px solid #252830;padding-top:.75rem}main{margin-left:220px;flex:1;padding:1.5rem;max-width:1000px}.cards{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.card{flex:1;min-width:180px;background:#1a1d27;padding:1.25rem;border-radius:12px;display:flex;flex-direction:column;gap:.3rem}.card-label{font-size:.8rem;color:#888}.card-value{font-size:1.8rem;font-weight:700;color:#82ca9d}.card-sub{font-size:.8rem;color:#888}.tabs{display:flex;gap:.5rem;margin-bottom:1.5rem}.tabs button{padding:.5rem 1rem;border-radius:8px;border:1px solid #333;background:transparent;color:#aaa;cursor:pointer}.tabs button.active{background:#8884d8;color:#fff;border-color:#8884d8}.tabs button:hover:not(.active){background:#252830}.filters{display:flex;gap:.75rem;align-items:center;margin-bottom:1.5rem;background:#1a1d27;padding:1rem;border-radius:12px;flex-wrap:wrap}.filters label{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:#888}.filters input,.filters select{padding:.5rem;border-radius:8px;border:1px solid #333;background:#0f1117;color:#e1e1e1;font-size:.9rem}.filters button{padding:.5rem 1.25rem;border-radius:8px;border:none;background:#8884d8;color:#fff;cursor:pointer}.filters button:disabled{opacity:.5;cursor:not-allowed}.filter-sep{color:#333;margin:0 .25rem}.preset-btn{background:transparent!important;border:1px solid #333!important;color:#aaa!important;padding:.4rem .75rem!important;font-size:.8rem!important}.preset-btn:hover{background:#252830!important;color:#e1e1e1!important}.charts{display:flex;flex-direction:column;gap:1.5rem}.chart-box{background:#1a1d27;padding:1.25rem;border-radius:12px}.chart-box h3{margin-bottom:1rem;font-size:1rem;color:#aaa;display:flex;justify-content:space-between;align-items:center}.chart-box h3 .hint{font-size:.75rem;color:#555}.close-btn{background:none;border:1px solid #444;color:#aaa;border-radius:6px;padding:.2rem .5rem;cursor:pointer}.detail-table{width:100%;border-collapse:collapse;font-size:.85rem}.detail-table th{text-align:left;padding:.5rem .75rem;border-bottom:1px solid #333;color:#888;font-weight:600}.detail-table td{padding:.5rem .75rem;border-bottom:1px solid #1f2230}.detail-table tr:hover{background:#1f2230}.clickable{color:#8884d8;text-decoration:underline;cursor:pointer}.detail-table .num{text-align:right;font-variant-numeric:tabular-nums}.detail-table th.num{text-align:right}.badge{padding:.15rem .5rem;border-radius:4px;font-size:.7rem;font-weight:600;text-transform:uppercase}.badge-high{background:#ff6b6b30;color:#ff6b6b}.badge-medium{background:#ffc65830;color:#ffc658}.badge-low{background:#82ca9d30;color:#82ca9d}.reco-list{display:flex;flex-direction:column;gap:.75rem}.reco-card{background:#1a1d27;padding:1rem;border-radius:10px;border-left:3px solid #333}.reco-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem;flex-wrap:wrap}.reco-cat{font-weight:600;color:#8884d8;font-size:.85rem}.reco-resource{color:#e1e1e1;font-size:.85rem}.reco-saving{margin-left:auto;color:#82ca9d;font-weight:600;font-size:.9rem}.reco-issue{color:#ccc;font-size:.85rem;margin-bottom:.4rem}.reco-action{color:#888;font-size:.8rem}.empty{text-align:center;padding:2rem;color:#82ca9d;font-size:1rem}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.page-header h2{font-size:1.2rem;color:#e1e1e1}.btn-primary{padding:.5rem 1rem;border-radius:8px;border:none;background:#8884d8;color:#fff;cursor:pointer;font-size:.9rem}.btn-primary:hover{background:#7370c4}.btn-danger{color:#ff6b6b!important}.success-banner{background:#1a2a1a;color:#82ca9d;padding:.75rem;border-radius:8px;margin-bottom:1rem}.action-btns{display:flex;gap:.4rem;flex-wrap:wrap}.action-btns button{padding:.25rem .5rem;border-radius:6px;border:1px solid #333;background:transparent;color:#aaa;cursor:pointer;font-size:.75rem}.action-btns button:hover{background:#252830;color:#e1e1e1}.status-ok{color:#82ca9d}.status-warn{color:#ffc658}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;justify-content:center;align-items:center;z-index:100}.modal{background:#1a1d27;padding:1.5rem;border-radius:12px;width:380px}.modal h3{margin-bottom:1rem;color:#e1e1e1}.modal label{display:flex;flex-direction:column;gap:.4rem;font-size:.85rem;color:#888;margin-bottom:1rem}.modal input{padding:.6rem;border-radius:8px;border:1px solid #333;background:#0f1117;color:#e1e1e1;font-size:.9rem}.modal-hint{font-size:.8rem;color:#666;margin-bottom:1rem}.modal-actions{display:flex;gap:.75rem;justify-content:flex-end}.modal-actions button{padding:.5rem 1rem;border-radius:8px;border:1px solid #333;background:transparent;color:#aaa;cursor:pointer}
