:root{font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:#182230;background:#f3f6fa;font-synthesis:none}*{box-sizing:border-box}body{margin:0}.topbar{height:64px;background:#12243a;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1280px)/2))}.topbar div{display:flex;align-items:center;gap:16px}.topbar strong{font-size:18px}.topbar span{color:#bed0e3;font-size:14px}main{max-width:1280px;margin:28px auto;padding:0 20px}.panel{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:22px;margin-bottom:18px;box-shadow:0 2px 8px #23354b0a}.login-panel{max-width:520px;margin:70px auto}.login-panel p,.section-title p{color:#68778a;margin:5px 0 18px;font-size:14px}h1,h2{margin:0 0 6px}h1{font-size:22px}h2{font-size:18px}.login-panel form,.create-grid,.search{display:grid;gap:12px}.login-panel label,.create-grid label{display:grid;gap:6px;color:#49566a;font-size:13px}.login-panel input,.create-grid input,.create-grid select,.search input,.search select{height:40px;border:1px solid #ccd5e0;border-radius:7px;background:#fff;padding:0 11px;font:inherit;color:#182230}.login-panel input:focus,.create-grid input:focus,.create-grid select:focus,.search input:focus,.search select:focus{outline:2px solid #91b7f2;border-color:#4d82d5}button{height:38px;border:0;border-radius:7px;padding:0 15px;background:#2367c9;color:white;font:inherit;font-weight:600;cursor:pointer}button:hover{background:#1857ae}button:disabled{opacity:.55;cursor:wait}.secondary{background:#eaf1fb;color:#245ba6}.secondary:hover{background:#d9e7fa}.quiet{background:transparent;color:#fff;border:1px solid #60748c}.stats{display:grid;grid-template-columns:repeat(7,minmax(100px,1fr));gap:10px;margin-bottom:18px}.stat{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:14px}.stat span{display:block;color:#64748b;font-size:12px}.stat strong{display:block;font-size:23px;margin-top:7px}.section-title,.generated-head{display:flex;justify-content:space-between;align-items:center;gap:14px}.create-grid{grid-template-columns:1fr .55fr 1fr 1.3fr auto;align-items:end}.search{grid-template-columns:minmax(220px,1fr) 150px 150px auto;margin:18px 0}.generated{margin-top:18px;padding:14px;background:#f6f9fd;border-radius:8px}.generated-head{margin-bottom:10px}.generated-head div{display:flex;gap:8px}textarea{width:100%;border:1px solid #ccd5e0;border-radius:7px;padding:10px;font:13px ui-monospace,Consolas,monospace;resize:vertical}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:980px}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid #edf0f4;vertical-align:top;font-size:13px}th{color:#64748b;font-weight:600;white-space:nowrap}.cell-title{font-weight:650;white-space:nowrap}.sub{display:block;color:#718096;margin-top:5px;font-size:12px}.badge{display:inline-block;border-radius:12px;padding:3px 8px;background:#eaf1fb;color:#315d98;font-size:12px}.badge.active{background:#e4f6ea;color:#23723b}.badge.expired{background:#fff2d8;color:#966000}.badge.disabled{background:#edf0f4;color:#5b6574}.badge.revoked{background:#fde8e7;color:#a5332c}.actions{display:flex;flex-wrap:wrap;gap:6px;min-width:220px}.actions button{height:30px;padding:0 9px;font-size:12px}.actions .danger{background:#fff0ef;color:#a5332c}.actions .danger:hover{background:#fbd9d7}.muted{color:#758397;font-size:13px}.error{color:#b42318;min-height:20px}#toast{position:fixed;right:22px;bottom:22px;background:#152a43;color:#fff;padding:12px 16px;border-radius:8px;opacity:0;transform:translateY(8px);transition:.18s;pointer-events:none;max-width:min(520px,calc(100vw - 40px))}#toast.show{opacity:1;transform:translateY(0)}@media(max-width:950px){.stats{grid-template-columns:repeat(4,1fr)}.create-grid{grid-template-columns:repeat(2,1fr)}.search{grid-template-columns:1fr 1fr}.section-title{align-items:flex-start}}@media(max-width:560px){main{padding:0 12px;margin:14px auto}.panel{padding:16px}.stats{grid-template-columns:repeat(2,1fr)}.create-grid,.search{grid-template-columns:1fr}.generated-head{align-items:flex-start;flex-direction:column}}
