:root{--bg:#f3f6fb;--panel:#fff;--soft:#f7f9fc;--line:rgba(22,48,80,.09);--line2:rgba(22,48,80,.15);--text:#13253a;--muted:#6d7c90;--brand:#1e5eff;--brand2:#0f3f9b;--accent:#1fc6a6;--danger:#d94b62;--warning:#d5932b;--success:#179c72;--shadow:0 24px 80px rgba(15,33,58,.08);--shadow2:0 10px 30px rgba(15,33,58,.05)}*{box-sizing:border-box}html{min-height:100%;scroll-behavior:smooth}body{margin:0;min-height:100vh;color:var(--text);font:14px/1.6 "Microsoft YaHei","PingFang SC","Noto Sans SC",sans-serif;background:radial-gradient(circle at 0 0,rgba(30,94,255,.12),transparent 27%),radial-gradient(circle at 100% 0,rgba(31,198,166,.12),transparent 25%),linear-gradient(180deg,#f6f9fd,#edf2f9 65%,#eef3fa)}button,input{font:inherit}button{border:0}code{font-family:Consolas,"Courier New",monospace}.admin-shell{min-height:100vh;display:grid;grid-template-columns:286px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:20px;padding:25px 18px;color:#eaf2ff;background:radial-gradient(circle at 20% 0,rgba(255,255,255,.12),transparent 28%),linear-gradient(180deg,#0d2240,#132f54 52%,#112947);border-right:1px solid rgba(255,255,255,.07)}.brand{display:flex;align-items:center;gap:14px;padding:8px 10px 14px}.brand-mark{width:42px;height:42px;display:grid;place-items:center;flex:0 0 auto;border-radius:14px;color:#0f3f9b;background:linear-gradient(135deg,#7ecbff,#fff);box-shadow:0 0 0 8px rgba(255,255,255,.05);font-size:18px;font-weight:900}.brand strong,.brand small{display:block}.brand strong{font-size:17px}.brand small{margin-top:3px;color:rgba(234,242,255,.63);font-size:12px}.side-nav{display:grid;gap:8px}.nav-item{width:100%;min-height:50px;display:flex;align-items:center;gap:12px;padding:0 15px;border-radius:16px;color:rgba(234,242,255,.79);background:transparent;cursor:pointer;text-align:left;transition:.2s}.nav-item:hover{color:#fff;background:rgba(255,255,255,.08)}.nav-item.active{color:#fff;background:linear-gradient(135deg,rgba(30,94,255,.95),rgba(51,124,255,.88));box-shadow:0 15px 30px rgba(5,33,78,.28)}.nav-icon{width:30px;height:30px;display:grid;place-items:center;border-radius:11px;background:rgba(255,255,255,.1);font-size:13px;font-weight:900}.sidebar-status{display:flex;align-items:center;gap:11px;margin-top:auto;padding:14px;border:1px solid rgba(255,255,255,.08);border-radius:17px;background:rgba(255,255,255,.055)}.sidebar-status i,.online-dot,.status-pill i{width:8px;height:8px;flex:0 0 auto;border-radius:50%;background:#37d9a6;box-shadow:0 0 0 5px rgba(55,217,166,.1)}.sidebar-status strong,.sidebar-status small{display:block}.sidebar-status strong{font-size:12px}.sidebar-status small{margin-top:2px;color:rgba(234,242,255,.58);font-size:11px}.logout-form button{width:100%;min-height:44px;border:1px solid rgba(255,255,255,.1);border-radius:15px;color:rgba(234,242,255,.76);background:rgba(255,255,255,.05);cursor:pointer}.logout-form button:hover{color:#fff;background:rgba(217,75,98,.18)}.main-area{min-width:0}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 34px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.72);backdrop-filter:blur(20px);position:sticky;top:0;z-index:50}.topbar>div:first-child{display:flex;align-items:center;gap:9px;color:var(--muted)}.topbar>div:first-child strong:before{content:"/";margin-right:9px;color:#b5c0ce}.topbar>div:first-child strong{color:var(--text)}.admin-profile{display:flex;align-items:center;gap:10px}.admin-profile strong,.admin-profile small{display:block;text-align:right}.admin-profile small{color:var(--muted);font-size:11px}.avatar{width:38px;height:38px;display:grid;place-items:center;border-radius:13px;color:#fff;background:linear-gradient(135deg,var(--brand),#5a8fff);box-shadow:0 10px 24px rgba(30,94,255,.22);font-weight:800}.content{width:min(1500px,100%);padding:34px 38px 60px}.view{display:none}.view.active{display:block;animation:viewIn .25s ease}@keyframes viewIn{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:25px}.eyebrow{display:block;margin-bottom:7px;color:var(--brand);font-size:11px;font-weight:900;letter-spacing:.14em}.page-head h1{margin:0;font-size:30px;line-height:1.25;letter-spacing:-.04em}.page-head p{margin:8px 0 0;color:var(--muted)}.date-chip,.count-chip,.status-pill{display:inline-flex;align-items:center;gap:9px;min-height:38px;padding:0 14px;border:1px solid rgba(30,94,255,.1);border-radius:999px;color:var(--brand2);background:linear-gradient(135deg,rgba(30,94,255,.08),rgba(31,198,166,.07));font-size:12px;font-weight:800}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.stat-card{position:relative;overflow:hidden;min-height:152px;padding:22px;border:1px solid var(--line);border-radius:22px;background:rgba(255,255,255,.9);box-shadow:var(--shadow2)}.stat-card:after{content:"";position:absolute;width:120px;height:120px;right:-38px;top:-45px;border-radius:50%;background:var(--card-color);opacity:.12}.stat-card span,.stat-card small{display:block;color:var(--muted)}.stat-card strong{display:block;margin:9px 0 5px;font-size:36px;line-height:1;color:var(--card-color)}.stat-card.blue{--card-color:var(--brand)}.stat-card.green{--card-color:var(--success)}.stat-card.orange{--card-color:var(--warning)}.stat-card.red{--card-color:var(--danger)}.panel{margin-bottom:22px;padding:25px;border:1px solid var(--line);border-radius:24px;background:rgba(255,255,255,.91);box-shadow:var(--shadow2)}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:20px}.panel-head h2{margin:0;font-size:21px;letter-spacing:-.02em}.panel-head p{margin:5px 0 0;color:var(--muted);font-size:13px}.connection-panel{padding:28px}.info-row{display:grid;grid-template-columns:170px minmax(0,1fr);gap:18px;align-items:start;padding:17px 0;border-top:1px solid var(--line)}.info-row>span{padding-top:10px;color:var(--muted);font-weight:700}.copy-box{display:flex;align-items:stretch;overflow:hidden;border:1px solid var(--line2);border-radius:15px;background:var(--soft)}.copy-box code{flex:1;min-width:0;padding:11px 14px;color:var(--brand2);word-break:break-all}.copy-box button{min-width:70px;color:var(--brand);background:rgba(30,94,255,.06);border-left:1px solid var(--line);cursor:pointer;font-weight:800}.copy-box button:hover{color:#fff;background:var(--brand)}.copy-box.multiline code{max-height:96px;overflow:auto}.fingerprint-note{display:block;margin-top:8px;color:var(--muted);font-family:Consolas,monospace}.notice{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px;padding:14px 17px;border-radius:17px;border:1px solid}.notice.success{color:#0b7958;background:#ecfbf5;border-color:#b8ecd9}.notice.error{color:#b53049;background:#fff1f3;border-color:#f4c4cd}.notice strong{font-family:Consolas,monospace;word-break:break-all}.create-grid{display:grid;grid-template-columns:1.1fr 1.1fr 1fr 1.1fr auto;gap:14px;align-items:end}.field{display:grid;gap:7px;min-width:0}.field>span{color:#52657c;font-size:13px;font-weight:800}.field input,.edit-grid input{width:100%;min-width:0;height:44px;padding:0 13px;border:1px solid var(--line2);border-radius:14px;color:var(--text);background:#fff;outline:none;transition:.18s}.field input:focus,.edit-grid input:focus{border-color:rgba(30,94,255,.35);box-shadow:0 0 0 5px rgba(30,94,255,.08)}.btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 17px;border-radius:15px;color:#fff;cursor:pointer;font-weight:800;white-space:nowrap;transition:.18s}.btn:hover{transform:translateY(-1px);filter:saturate(1.08)}.btn-primary{background:linear-gradient(135deg,var(--brand),#5a8fff);box-shadow:0 11px 24px rgba(30,94,255,.19)}.btn-success{background:linear-gradient(135deg,var(--success),#27b884)}.btn-warning{background:linear-gradient(135deg,#bf7d1b,#e3aa48)}.btn-danger{background:linear-gradient(135deg,#c73e57,#e45c74)}.btn-light{color:var(--brand2);background:#fff;border:1px solid var(--line2)}.btn-small{min-height:34px;padding:0 12px;border-radius:11px;font-size:12px}.btn:disabled{color:#98a5b5;background:#edf1f6;border:1px solid var(--line);box-shadow:none;cursor:not-allowed;transform:none}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:20px;background:rgba(247,249,252,.75)}table{width:100%;border-collapse:separate;border-spacing:0;min-width:980px}th,td{padding:15px 14px;text-align:left;vertical-align:middle;border-bottom:1px solid var(--line)}th{color:#68798d;background:#f3f7fc;font-size:12px;white-space:nowrap}tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:rgba(255,255,255,.72)}td strong{display:block}.key-button{display:block;max-width:225px;margin-top:5px;padding:3px 6px;border-radius:7px;color:var(--brand);background:transparent;font:11px/1.5 Consolas,monospace;word-break:break-all;text-align:left;cursor:pointer}.key-button:hover{background:rgba(30,94,255,.08)}.edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;min-width:350px}.edit-grid input{height:36px;border-radius:10px;font-size:12px}.badge{display:inline-flex;align-items:center;gap:7px;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:800}.badge i{width:7px;height:7px;border-radius:50%;background:currentColor}.badge.active{color:#0b7958;background:#e7f9f2}.badge.revoked{color:#bd304a;background:#fff0f3}.badge.expired{color:#a76a13;background:#fff6e7}.cell-note{display:block;margin-top:6px;color:var(--muted);font-size:11px}.mono{font-family:Consolas,monospace}.muted{color:var(--muted)}.action-grid{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.action-grid form,td form{margin:0}.empty{padding:42px!important;color:var(--muted);text-align:center!important}.fingerprint-list{display:grid;gap:10px}.fingerprint-list article{display:grid;grid-template-columns:minmax(160px,.7fr) minmax(280px,1.8fr) auto;gap:16px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:17px;background:var(--soft)}.fingerprint-list strong,.fingerprint-list small{display:block}.fingerprint-list small{color:var(--muted)}.fingerprint-list code{color:#496078;font-size:11px;word-break:break-all}.security-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:22px}.security-grid article{min-height:175px;padding:24px;border:1px solid var(--line);border-radius:22px;background:rgba(255,255,255,.9);box-shadow:var(--shadow2)}.security-grid article>span{display:grid;place-items:center;width:38px;height:38px;border-radius:13px;color:#fff;background:linear-gradient(135deg,var(--brand),#5a8fff);font-size:12px;font-weight:900}.security-grid h3{margin:17px 0 7px;font-size:18px}.security-grid p,.security-note p{margin:0;color:var(--muted)}.security-note code{color:var(--brand2);font-weight:800}.auth-shell{min-height:100vh;display:grid;grid-template-columns:minmax(420px,.95fr) minmax(520px,1.05fr)}.auth-visual{position:relative;overflow:hidden;display:flex;flex-direction:column;padding:50px 64px;color:#eaf2ff;background:radial-gradient(circle at 12% 8%,rgba(126,203,255,.19),transparent 27%),radial-gradient(circle at 90% 80%,rgba(31,198,166,.16),transparent 28%),linear-gradient(155deg,#0b1d38,#12335e 55%,#0d2748)}.auth-visual:after{content:"";position:absolute;width:460px;height:460px;right:-240px;top:18%;border:1px solid rgba(255,255,255,.08);border-radius:50%;box-shadow:0 0 0 70px rgba(255,255,255,.025),0 0 0 140px rgba(255,255,255,.018)}.auth-brand{display:flex;align-items:center;gap:15px;position:relative;z-index:1}.auth-brand strong,.auth-brand small{display:block}.auth-brand strong{font-size:18px}.auth-brand small{color:rgba(234,242,255,.64)}.auth-copy{position:relative;z-index:1;margin:auto 0;max-width:520px}.auth-copy .eyebrow{color:#7ecbff}.auth-copy h1{margin:0;font-size:48px;line-height:1.2;letter-spacing:-.05em}.auth-copy p{max-width:480px;margin:23px 0 0;color:rgba(234,242,255,.67);font-size:15px;line-height:1.9}.auth-features{position:relative;z-index:1;display:flex;gap:10px;flex-wrap:wrap}.auth-features span{padding:8px 12px;border:1px solid rgba(255,255,255,.09);border-radius:999px;color:rgba(234,242,255,.75);background:rgba(255,255,255,.05);font-size:12px}.auth-form-side{display:grid;place-items:center;padding:40px}.auth-card{width:min(440px,100%);padding:38px;border:1px solid rgba(22,48,80,.09);border-radius:28px;background:rgba(255,255,255,.92);box-shadow:var(--shadow);backdrop-filter:blur(20px)}.auth-card header{margin:20px 0 25px}.auth-card h2{margin:0;font-size:28px;letter-spacing:-.04em}.auth-card header p{margin:7px 0 0;color:var(--muted)}.auth-status{display:inline-flex;align-items:center;gap:9px;padding:7px 11px;border-radius:999px;color:var(--brand2);background:rgba(30,94,255,.08);font-size:11px;font-weight:900}.auth-status i{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px rgba(31,198,166,.12)}.auth-card .field{margin-bottom:18px}.input-wrap{position:relative}.input-wrap input{height:50px;padding-left:44px;padding-right:58px}.field-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:21px;height:21px;border-radius:7px;color:var(--brand);background:rgba(30,94,255,.08);font-size:10px;font-weight:900}.password-toggle{position:absolute;right:9px;top:50%;transform:translateY(-50%);padding:6px 8px;border-radius:8px;color:var(--brand);background:transparent;cursor:pointer;font-size:12px;font-weight:800}.password-toggle:hover{background:rgba(30,94,255,.08)}.auth-submit{width:100%;height:50px;margin-top:3px}.auth-tip{margin:17px 0 0;color:var(--muted);font-size:11px;text-align:center}@media(max-width:1200px){.create-grid{grid-template-columns:1fr 1fr}.create-grid .btn{width:100%}.stats-grid{grid-template-columns:repeat(2,1fr)}.auth-shell{grid-template-columns:1fr}.auth-visual{display:none}}@media(max-width:900px){.admin-shell{grid-template-columns:78px minmax(0,1fr)}.sidebar{padding:20px 10px}.brand{justify-content:center;padding:5px}.brand>div,.nav-item>span:last-child,.sidebar-status>div{display:none}.brand-mark{width:38px;height:38px}.nav-item{justify-content:center;padding:0}.sidebar-status{justify-content:center}.content{padding:25px 18px 50px}.topbar{padding:0 18px}.fingerprint-list article{grid-template-columns:1fr}.security-grid{grid-template-columns:1fr}.info-row{grid-template-columns:1fr}.info-row>span{padding-top:0}}@media(max-width:620px){.admin-shell{display:block}.sidebar{position:static;width:100%;height:auto;display:block;padding:14px}.brand,.sidebar-status,.logout-form{display:none}.side-nav{grid-template-columns:repeat(4,1fr);gap:5px}.nav-item{min-height:44px}.nav-icon{display:none}.nav-item>span:last-child{display:block;font-size:11px}.topbar{height:64px}.topbar>div:first-child span,.admin-profile>div,.online-dot{display:none}.content{padding:20px 10px 40px}.page-head{display:block}.date-chip,.count-chip{margin-top:14px}.stats-grid{grid-template-columns:1fr 1fr;gap:10px}.stat-card{min-height:125px;padding:17px}.stat-card strong{font-size:29px}.panel{padding:18px;border-radius:19px}.create-grid{grid-template-columns:1fr}.auth-form-side{padding:18px}.auth-card{padding:27px 21px}.notice{align-items:flex-start;flex-direction:column}}
.brand{color:inherit;text-decoration:none}.nav-item{text-decoration:none}.nav-icon svg{width:18px;height:18px;display:block}.brand-logo-image{width:42px;height:42px;display:block;flex:0 0 auto;object-fit:contain;border-radius:14px;background:rgba(255,255,255,.12);box-shadow:0 0 0 8px rgba(255,255,255,.05)}.auth-brand .brand-logo-image{width:42px;height:42px}.badge.archived{color:#68798d;background:#edf1f6}
.field-icon-svg{position:absolute;left:14px;top:50%;width:20px;height:20px;transform:translateY(-50%);color:var(--brand);pointer-events:none}.password-toggle{width:38px;height:38px;display:grid;place-items:center;padding:0}.password-toggle svg{width:19px;height:19px}.password-toggle .eye-on{display:none}.password-toggle.is-visible .eye-off{display:none}.password-toggle.is-visible .eye-on{display:block}.password-toggle:disabled{opacity:.45;cursor:not-allowed}.auth-card .input-wrap input:disabled{color:#8b98a8;background:#f1f4f8;cursor:not-allowed}.auth-card .notice{font-size:13px}.btn-download{color:#fff;background:linear-gradient(135deg,#475569,#64748b);text-decoration:none}
.template-upload{display:grid;grid-template-columns:minmax(280px,1fr) auto;gap:14px;align-items:end}.template-upload input[type=file]{height:auto;min-height:44px;padding:9px 12px}.template-upload small{grid-column:1/-1;color:var(--muted)}@media(max-width:620px){.template-upload{grid-template-columns:1fr}.template-upload small{grid-column:auto}.template-upload .btn{width:100%}}
