:root{--bg: #0d1117;--panel: #161b22;--border: #30363d;--text: #e6edf3;--muted: #8b949e;--primary: #2f81f7;--primary-h: #4493f8;--success: #3fb950;--warning: #d29922;--danger: #f85149;--radius: 8px;--shadow: 0 2px 8px rgba(0, 0, 0, .3)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-h)}button{background:var(--primary);color:#fff;border:0;padding:8px 16px;border-radius:var(--radius);cursor:pointer;font-size:14px;font-weight:500}button:hover{background:var(--primary-h)}button:disabled{background:var(--border);cursor:not-allowed}button.secondary{background:transparent;border:1px solid var(--border);color:var(--text)}button.secondary:hover{border-color:var(--primary);color:var(--primary)}input,select,textarea{background:var(--bg);color:var(--text);border:1px solid var(--border);padding:8px 12px;border-radius:var(--radius);font-size:14px;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary)}.app-shell{display:flex;height:100vh}.sidebar{width:220px;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column}.sidebar-header{padding:18px 16px;font-weight:600;font-size:16px;border-bottom:1px solid var(--border)}.sidebar nav{flex:1;padding:8px 0}.sidebar nav a{display:block;padding:10px 16px;color:var(--muted);font-weight:500;border-left:3px solid transparent}.sidebar nav a.active,.sidebar nav a:hover{color:var(--text);background:#2f81f714;border-left-color:var(--primary)}.sidebar-footer{padding:12px 16px;border-top:1px solid var(--border);font-size:12px;color:var(--muted)}.main{flex:1;overflow:auto;padding:24px 32px}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.page-header h1{font-size:22px;margin:0}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:32px;width:100%;max-width:360px;box-shadow:var(--shadow)}.login-card h1{margin:0 0 6px;font-size:22px}.login-card p.muted{margin:0 0 20px;color:var(--muted);font-size:13px}.login-card label{display:block;font-size:12px;color:var(--muted);margin:12px 0 4px}.login-card button{width:100%;margin-top:18px;padding:10px}.login-card a.sso-button{display:block;text-align:center;background:var(--primary);color:#fff;padding:10px;border-radius:var(--radius);font-weight:500;margin-top:8px}.login-card a.sso-button:hover{background:var(--primary-h);color:#fff}.login-card a.sso-button.disabled{background:var(--border);pointer-events:none}.login-divider{display:flex;align-items:center;gap:10px;margin:20px 0 4px;color:var(--muted);font-size:12px}.login-divider:before,.login-divider:after{content:"";flex:1;border-top:1px solid var(--border)}.login-card button.link-button{background:transparent;color:var(--muted);font-size:12px;font-weight:400;padding:4px;margin-top:16px}.login-card button.link-button:hover{color:var(--primary)}.login-card .demo-hint{margin-top:16px;font-size:12px;color:var(--muted);text-align:center}.error{background:#f851491a;border:1px solid var(--danger);color:var(--danger);padding:8px 12px;border-radius:var(--radius);margin-top:12px;font-size:13px}table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}th,td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--border)}th{background:#ffffff05;font-weight:600;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}tr:last-child td{border-bottom:0}tr:hover td{background:#2f81f70a}.empty{background:var(--panel);border:1px dashed var(--border);border-radius:var(--radius);padding:40px;text-align:center;color:var(--muted)}.empty h3{margin:0 0 8px;color:var(--text)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:grid;place-items:center;z-index:50;padding:24px}.modal-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:28px;width:100%;max-width:460px;box-shadow:var(--shadow)}.modal-card h2{font-size:18px;margin-bottom:14px}.modal-card label{display:block;font-size:12px;color:var(--muted);margin:12px 0 4px}.modal-card input[type=file]{padding:6px}
