:root{--bg: #f2f4f7;--card: #ffffff;--ink: #1f2937;--muted: #6b7280;--line: #e3e7ec;--blue: #2f7fe0;--blue-dark: #2568bb;--green: #1e9e5a;--amber: #b3760c;--red: #d93b30;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Roboto,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}button,input{font:inherit;color:inherit}.muted{color:var(--muted)}.login{min-height:100dvh;display:grid;place-items:center;padding:24px}.login-card{width:100%;max-width:360px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:28px 24px;box-shadow:0 12px 32px #14233c14;display:flex;flex-direction:column;gap:14px}.login-card h1{margin:0;font-size:20px}.login-card>p{margin:-8px 0 4px;font-size:13px}.login-card label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}.login-card input{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fbfcfd;outline:none}.login-card input:focus{border-color:var(--blue);background:#fff}.form-error{margin:0;color:var(--red);font-size:13px}.primary{border:none;border-radius:10px;background:var(--blue);color:#fff;padding:11px 16px;font-weight:600;cursor:pointer}.primary:hover{background:var(--blue-dark)}.primary:disabled{opacity:.6;cursor:default}.admin{max-width:1080px;margin:0 auto;padding-bottom:64px}.topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;background:#f2f4f7e6;backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;font-weight:600}.dot{width:10px;height:10px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 4px #2f7fe026}.topbar-right{display:flex;align-items:center;gap:8px;font-size:13px}.ghost{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 12px;cursor:pointer;color:var(--ink)}.ghost:hover{border-color:#c9d2dd;background:#f7f9fc}.ghost.small{padding:4px 9px;font-size:12px;border-radius:7px}.ghost.danger{color:var(--red)}main{padding:20px;display:flex;flex-direction:column;gap:18px}.banner{margin:12px 20px 0;padding:10px 14px;border-radius:10px;font-size:13px;cursor:pointer}.banner-error{background:#fdecea;color:#a5271d;border:1px solid #f6cfcb}.banner-ok{background:#e8f7ee;color:#14713f;border:1px solid #c7e9d5}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.stat{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:4px}.stat-accent{background:linear-gradient(160deg,#2f7fe0,#1f5fb4);border-color:transparent;color:#fff}.stat-value{font-size:26px;font-weight:700;line-height:1.1}.stat-label{font-size:12px;color:var(--muted)}.stat-accent .stat-label{color:#fffc}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px}.card h2{margin:0 0 14px;font-size:15px}.card-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:14px}.card-head h2{margin:0}.grid-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;align-items:end}.grid-form label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)}.grid-form input{border:1px solid var(--line);border-radius:9px;padding:9px 11px;background:#fbfcfd;outline:none}.grid-form input:focus{border-color:var(--blue);background:#fff}.grid-form .wide{grid-column:span 2}.grid-form button{height:38px}.fresh{margin-top:16px;padding:14px;border-radius:12px;background:#f4f9ff;border:1px dashed #bcd7f5}.fresh-head{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:600;margin-bottom:10px}.fresh-codes{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}.code{font-family:SFMono-Regular,ui-monospace,Menlo,Consolas,monospace;font-size:13px;letter-spacing:.06em;border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 10px;cursor:pointer}.code:hover{border-color:var(--blue);color:var(--blue)}.filters{display:flex;gap:6px;flex-wrap:wrap}.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 12px;font-size:12px;cursor:pointer;color:var(--muted)}.chip.active{background:var(--ink);border-color:var(--ink);color:#fff}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;font-weight:600;font-size:12px;color:var(--muted);padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:9px 10px;border-bottom:1px solid #f0f3f6;vertical-align:middle}tr:last-child td{border-bottom:none}td.note{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actions{display:flex;gap:6px;justify-content:flex-end;white-space:nowrap}.status{display:inline-block;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600}.status-available{background:#e8f7ee;color:var(--green)}.status-used{background:#f1f3f6;color:var(--muted)}.status-expired{background:#fdf3e2;color:var(--amber)}.status-disabled{background:#fdecea;color:var(--red)}.users{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.users li{display:flex;gap:10px;align-items:baseline;padding:8px 0;border-bottom:1px solid #f0f3f6;font-size:13px}.users li:last-child{border-bottom:none}.users li .muted:last-child{margin-left:auto;font-size:12px}
