:root{--bg: #f6f6f4;--surface: #ffffff;--border: #e2e1dc;--text: #21201c;--muted: #6b6a64;--accent: #3c3489;--accent-soft: #eeedfe;--danger: #a32d2d;--danger-soft: #fcebeb;--success: #0f6e56;--success-soft: #e1f5ee;--radius: 8px;color-scheme:light dark}@media (prefers-color-scheme: dark){:root{--bg: #17171a;--surface: #201f23;--border: #34333a;--text: #ececef;--muted: #a2a1ab;--accent: #afa9ec;--accent-soft: #26215c;--danger: #f09595;--danger-soft: #501313;--success: #5dcaa5;--success-soft: #04342c}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:400 15px/1.6 ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}h1,h2,h3{font-weight:500;margin:0}h1{font-size:22px}h2{font-size:17px}a{color:var(--accent)}.splash{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}.splash-mark{font-weight:500;letter-spacing:.04em}.splash-text{color:var(--muted);font-size:14px}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:28px}.auth-card h1{margin-bottom:4px}.auth-sub{color:var(--muted);font-size:14px;margin:0 0 20px}.shell{display:flex;min-height:100vh}.sidebar{width:210px;flex:0 0 210px;background:var(--surface);border-right:1px solid var(--border);padding:20px 14px;display:flex;flex-direction:column;gap:16px}.brand{font-weight:500;letter-spacing:.04em;padding:0 8px}.nav{display:flex;flex-direction:column;gap:2px}.nav a{display:block;padding:7px 10px;border-radius:var(--radius);color:var(--text);text-decoration:none;font-size:14px}.nav a:hover{background:var(--bg)}.nav a.active{background:var(--accent-soft);color:var(--accent)}.sidebar-foot{margin-top:auto;font-size:13px;color:var(--muted);padding:0 8px}.sidebar-foot strong{display:block;color:var(--text);font-weight:500}.main{flex:1;min-width:0;padding:24px 28px 48px}.main-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:18px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border)}.card-body{padding:18px}.field{display:block;margin-bottom:14px}.field-label{display:block;font-size:13px;color:var(--muted);margin-bottom:5px}.field-hint{display:block;font-size:12px;color:var(--muted);margin-top:5px}input,select{width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);font:inherit;font-size:14px}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}.btn{padding:9px 15px;border-radius:var(--radius);border:1px solid transparent;font:inherit;font-size:14px;cursor:pointer}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--accent);color:#fff}.btn-ghost{background:transparent;border-color:var(--border);color:var(--text)}.btn-danger{background:transparent;border-color:var(--border);color:var(--danger)}.btn-block{width:100%}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}.row .field{flex:1 1 180px;margin-bottom:0}.banner{margin:0 0 14px;padding:9px 12px;border-radius:var(--radius);font-size:14px}.banner-error{background:var(--danger-soft);color:var(--danger)}.banner-success{background:var(--success-soft);color:var(--success)}.banner-info{background:var(--accent-soft);color:var(--accent)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:12px}.empty{color:var(--muted);font-size:14px;margin:0}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:400;font-size:13px}tbody tr:last-child td{border-bottom:none}@media (max-width: 720px){.shell{flex-direction:column}.sidebar{width:auto;flex:none;border-right:none;border-bottom:1px solid var(--border)}.nav{flex-direction:row;flex-wrap:wrap}.main{padding:18px}}
