:root{--adm-side-w:236px;--adm-radius:12px}body{font-size:14px}.adm{min-height:100vh;display:flex}.adm-side{width:var(--adm-side-w);background:var(--card);border-right:1px solid var(--border-soft);z-index:20;flex-direction:column;display:flex;position:fixed;inset:0 auto 0 0}.adm-brand{align-items:center;gap:11px;padding:18px 18px 14px;display:flex}.adm-logo{color:#fff;background:linear-gradient(135deg, var(--primary), var(--secondary));border-radius:10px;flex:none;place-items:center;width:36px;height:36px;display:grid;box-shadow:0 4px 10px #4f46e540}.adm-brand b{color:var(--text);font-family:Poppins,Segoe UI,system-ui,sans-serif;font-size:15px;line-height:1.15;display:block}.adm-brand small{color:var(--muted);font-size:12px}.adm-nav{flex:1;padding:4px 12px 12px;overflow-y:auto}.adm-nav-group{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:14px 10px 6px;font-size:11px;font-weight:700}.adm-link{color:var(--text-body);transition:background var(--dur) var(--ease), color var(--dur) var(--ease);border-radius:8px;align-items:center;gap:10px;padding:8px 10px;font-size:13.5px;font-weight:500;text-decoration:none;display:flex}.adm-link svg{color:var(--muted);flex:none}.adm-link:hover{background:var(--bg);color:var(--text)}.adm-link.router-link-exact-active{background:var(--primary-soft);color:var(--primary);font-weight:600}.adm-link.router-link-exact-active svg{color:var(--primary)}.adm-link .count{background:var(--red);color:#fff;text-align:center;border-radius:999px;min-width:20px;margin-left:auto;padding:0 6px;font-size:11px;font-weight:700;line-height:18px}.adm-side-foot{border-top:1px solid var(--border-soft);align-items:center;gap:10px;padding:12px 14px;display:flex}.adm-avatar{background:var(--primary-soft);width:32px;height:32px;color:var(--primary);border-radius:50%;flex:none;place-items:center;font-size:13px;font-weight:700;display:grid}.adm-side-foot .who{flex:1;min-width:0}.adm-side-foot .who b{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;display:block;overflow:hidden}.adm-side-foot .who span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;display:block;overflow:hidden}.adm-iconbtn{width:32px;height:32px;color:var(--muted);cursor:pointer;transition:background var(--dur) var(--ease), color var(--dur) var(--ease);background:0 0;border:1px solid #0000;border-radius:8px;flex:none;place-items:center;display:grid}.adm-iconbtn:hover{background:var(--bg);color:var(--text)}.adm-main{min-width:0;margin-left:var(--adm-side-w);flex:1}.adm-page{max-width:1240px;padding:28px 32px 56px}.adm-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px;display:flex}.adm-head h1{margin-bottom:3px;font-size:1.45rem}.adm-head p{color:var(--muted);max-width:760px;font-size:13.5px;line-height:1.5}.adm-head-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.adm-card{background:var(--card);border:1px solid var(--border-soft);border-radius:var(--adm-radius);box-shadow:var(--shadow-sm);margin-bottom:18px}.adm-card-head{border-bottom:1px solid var(--border-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:13px 18px;display:flex}.adm-card-head h2{align-items:center;gap:8px;margin:0;font-size:15px;font-weight:600;display:inline-flex}.adm-card-head h2 svg{color:var(--primary)}.adm-card-head .sub{color:var(--muted);font-size:12.5px}.adm-card-body{padding:18px}.adm-card-body+.adm-card-body{border-top:1px solid var(--border-soft)}.adm-card-body.tint{background:var(--surface-tint)}.adm-note{color:var(--muted);margin-bottom:14px;font-size:13px;line-height:1.55}.adm-note b{color:var(--text)}.adm-stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:18px;display:grid}.adm-stat{background:var(--card);border:1px solid var(--border-soft);border-radius:var(--adm-radius);box-shadow:var(--shadow-sm);padding:16px 18px;position:relative}.adm-stat .lbl{color:var(--muted);letter-spacing:.02em;font-size:12px;font-weight:600}.adm-stat .val{color:var(--text);font-variant-numeric:tabular-nums;margin-top:6px;font-family:Poppins,Segoe UI,system-ui,sans-serif;font-size:26px;font-weight:700;line-height:1.2}.adm-stat .sub{color:var(--muted);margin-top:4px;font-size:12px}.adm-stat .ico{background:var(--primary-soft);width:34px;height:34px;color:var(--primary);border-radius:9px;place-items:center;display:grid;position:absolute;top:14px;right:14px}.adm-stat .ico.green{background:var(--green-soft);color:var(--green)}.adm-stat .ico.amber{background:var(--amber-soft);color:var(--amber)}.adm-table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.adm-table{border-collapse:collapse;width:100%;font-size:13.5px}.adm-table th{text-align:left;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--surface-tint);border-bottom:1px solid var(--border-soft);white-space:nowrap;padding:10px 14px;font-size:11px;font-weight:700}.adm-table td{border-bottom:1px solid var(--border-soft);vertical-align:middle;color:var(--text-body);padding:9px 14px}.adm-table tbody tr:last-child td{border-bottom:0}.adm-table tbody tr:hover td{background:var(--surface-tint)}.adm-table td.num,.adm-table th.num{text-align:right;font-variant-numeric:tabular-nums}.adm-table td.actions,.adm-table th.actions{text-align:right;white-space:nowrap}.adm-table td.actions .row{justify-content:flex-end;gap:6px;display:inline-flex}.adm-table td.strong,.adm-table .strong{color:var(--text);font-weight:600}.adm-table td.muted{color:var(--muted)}.adm-table td.mono,.adm-table .mono{font-family:ui-monospace,Consolas,SFMono-Regular,monospace;font-size:12.5px}.adm-table tr.dim td{opacity:.5}.adm-table tr.dim td.actions,.adm-table tr.dim td .badge{opacity:1}.adm-table .cell-sub{color:var(--muted);font-size:12px;display:block}.adm-table td.clip{text-overflow:ellipsis;white-space:nowrap;max-width:360px;overflow:hidden}.adm-table .badge+.badge{margin-left:4px}.adm-scroll{max-height:460px;overflow-y:auto}.adm-scroll .adm-table th{z-index:1;position:sticky;top:0}.adm-empty{text-align:center;color:var(--muted);padding:36px 18px;font-size:13.5px}.adm-empty svg{opacity:.6;margin:0 auto 8px;display:block}.adm input,.adm select,.adm textarea{border-radius:8px;min-height:38px;margin-bottom:0;padding:8px 11px;font-size:13.5px}.adm textarea{resize:vertical;min-height:0;line-height:1.5}.adm input[type=checkbox]{width:16px;height:16px;min-height:0;accent-color:var(--primary);margin:0;padding:0}.adm label{margin-bottom:0;font-size:12.5px;font-weight:600}.adm .btn{min-height:38px;box-shadow:none;white-space:nowrap;border-radius:8px;padding:8px 14px;font-size:13.5px}.adm .btn.small{border-radius:7px;gap:6px;min-height:32px;padding:5px 11px;font-size:12.5px}.adm .btn.ghost{color:var(--text-body);border:1px solid var(--border);background:0 0}.adm .btn.ghost:hover{background:var(--bg);color:var(--text)}.adm .btn.icon{width:32px;padding:0}.adm .btn.danger.soft{background:var(--red-soft);color:var(--red)}.adm .btn.danger.soft:hover{background:var(--red);color:#fff}.adm code{background:var(--bg);color:var(--text);border-radius:5px;padding:1px 6px;font-family:ui-monospace,Consolas,SFMono-Regular,monospace;font-size:12.5px}.adm textarea.code{tab-size:2;font-family:ui-monospace,Consolas,SFMono-Regular,monospace;font-size:12.5px;line-height:1.55}.adm-form{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;display:grid}.adm-form.narrow{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.adm-field{flex-direction:column;gap:5px;min-width:0;display:flex}.adm-field.full{grid-column:1/-1}.adm-field .hint{color:var(--muted);font-size:12px}.adm-form-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;display:flex}.adm-form-actions .spacer{flex:1}.adm-check{cursor:pointer;align-items:center;gap:7px;color:var(--text-body)!important;font-weight:500!important;display:inline-flex!important}.adm-check-row{align-items:center;gap:16px;min-height:38px;display:flex}.adm-toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.adm-toolbar .grow{flex:1;min-width:180px}.adm-toolbar .meta{color:var(--muted);white-space:nowrap;font-size:12.5px}.adm-search{position:relative}.adm-search svg{color:var(--muted);pointer-events:none;position:absolute;top:50%;left:11px;transform:translateY(-50%)}.adm-search input{padding-left:34px}.adm-seg{background:var(--bg);border:1px solid var(--border-soft);border-radius:9px;gap:2px;max-width:100%;padding:3px;display:inline-flex;overflow-x:auto}.adm-seg button{font:inherit;color:var(--muted);cursor:pointer;transition:background var(--dur) var(--ease), color var(--dur) var(--ease);background:0 0;border:0;border-radius:7px;flex:none;padding:5px 12px;font-size:13px;font-weight:600}.adm-seg button:hover{color:var(--text)}.adm-seg button.on{background:var(--card);color:var(--primary);box-shadow:var(--shadow-sm)}.adm select.auto,.adm input.auto{width:auto}.adm-menu-list{background:var(--card);border:1px solid var(--border-soft);min-width:210px;box-shadow:var(--shadow-lg);z-index:60;border-radius:10px;padding:6px;position:fixed}.adm-menu-list button{width:100%;font:inherit;color:var(--text-body);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:9px;padding:8px 10px;font-size:13px;display:flex}.adm-menu-list button svg{color:var(--muted);flex:none}.adm-menu-list button:hover{background:var(--bg);color:var(--text)}.adm-menu-list button.danger,.adm-menu-list button.danger svg{color:var(--red)}.adm-menu-list button.danger:hover{background:var(--red-soft)}.adm-menu-sep{background:var(--border-soft);height:1px;margin:4px 2px}.adm-menu-title{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:4px 10px 6px;font-size:11px;font-weight:700}.adm-toasts{z-index:100;flex-direction:column;gap:8px;max-width:min(420px,100vw - 40px);display:flex;position:fixed;bottom:20px;right:20px}.adm-toast{color:#fff;box-shadow:var(--shadow-lg);animation:adm-toast-in .2s var(--ease);background:#1e1b4b;border-radius:10px;align-items:flex-start;gap:10px;padding:11px 14px;font-size:13.5px;line-height:1.45;display:flex}.adm-toast svg{color:#86efac;flex:none;margin-top:1px}.adm-toast.error{background:var(--red)}.adm-toast.error svg{color:#fff}:root[data-theme=dark] .adm-toast{color:#1e1b4b;background:#e0e7ff}:root[data-theme=dark] .adm-toast svg{color:#15803d}:root[data-theme=dark] .adm-toast.error{color:#450a0a;background:#f87171}:root[data-theme=dark] .adm-toast.error svg{color:#450a0a}@keyframes adm-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.adm-login{background:radial-gradient(60% 50% at 20% 0%, var(--primary-soft) 0%, transparent 60%), var(--bg);place-items:center;min-height:100vh;padding:24px;display:grid}.adm-login-card{background:var(--card);border:1px solid var(--border-soft);width:100%;max-width:380px;box-shadow:var(--shadow-lg);border-radius:16px;padding:28px}.adm-login-card .adm-brand{padding:0 0 20px}.adm-login-card .adm-field+.adm-field{margin-top:14px}.adm-login-card .btn{width:100%;min-height:42px;margin-top:18px}.adm-login-err{background:var(--red-soft);color:var(--red);border-radius:8px;margin-top:12px;padding:9px 12px;font-size:13px}.adm-msg{border-bottom:1px solid var(--border-soft);padding:14px 18px}.adm-msg:last-child{border-bottom:0}.adm-msg-head{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;display:flex}.adm-msg-head b{color:var(--text)}.adm-msg-head .when{color:var(--muted);white-space:nowrap;margin-left:auto;font-size:12px}.adm-msg-body{white-space:pre-wrap;margin-bottom:10px;line-height:1.55}.adm-msg .contact{color:var(--muted);word-break:break-all;font-size:12.5px}@media (width<=900px){.adm{flex-direction:column}.adm-side{top:0;border-right:0;border-bottom:1px solid var(--border-soft);flex-direction:row;align-items:center;width:100%;position:sticky;inset:auto}.adm-brand{padding:8px 10px}.adm-brand>span:last-child{display:none}.adm-nav{flex:1;gap:2px;padding:6px 8px;display:flex;overflow-x:auto}.adm-nav-group{display:none}.adm-link{white-space:nowrap;padding:6px 9px;font-size:13px}.adm-side-foot{border-top:0;gap:6px;padding:6px 10px}.adm-side-foot .who{display:none}.adm-main{margin-left:0}.adm-page{padding:18px 16px 40px}.adm-head h1{font-size:1.25rem}}
