:root{color-scheme:dark;--bg:#07141c;--surface:#0c1d27;--surface2:#102630;--line:#25404b;--text:#f3f7f8;--muted:#88a5b2;--teal:#21c7bb;--teal2:#159b94;--red:#ff6b71;--amber:#f0b34f;--green:#3ed6a2;font-family:"Microsoft JhengHei UI","Segoe UI",sans-serif}
*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:radial-gradient(circle at 70% -10%,#12353c 0,transparent 35%),var(--bg);color:var(--text);min-height:100vh}.shell{max-width:1440px;margin:auto;min-height:100vh;border-left:1px solid #172f39;border-right:1px solid #172f39}header{height:72px;padding:0 32px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #17313c;background:rgba(5,17,24,.86);backdrop-filter:blur(12px);position:sticky;top:0;z-index:5}.brand{display:flex;gap:13px;align-items:center}.brand .mark{display:grid;place-items:center;width:39px;height:39px;border-radius:50%;background:var(--teal);font-weight:800;color:#052129}.brand strong{font-size:18px}.brand small{display:block;color:var(--muted);margin-top:2px}.server-state{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:8px}.server-state i{width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:0 0 12px currentColor}.server-state.online{color:var(--green)}main{padding:38px 42px 60px}.hero{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:28px}.eyebrow{font-size:11px;letter-spacing:.18em;color:var(--teal);margin:0 0 8px}.hero h1{font-size:36px;margin:0 0 9px}.hero p:last-child,.panel p{color:var(--muted);margin:0}.panel{background:linear-gradient(145deg,rgba(15,37,47,.96),rgba(9,26,35,.97));border:1px solid var(--line);box-shadow:0 18px 45px rgba(0,0,0,.13)}.login-panel{padding:28px;display:flex;justify-content:space-between;align-items:center;gap:32px}.login-panel h2,.panel h2{margin:0 0 6px;font-size:20px}.login-form{display:flex;gap:10px;min-width:460px}input{width:100%;background:#071821;border:1px solid #294852;color:var(--text);padding:12px 13px;font:inherit;outline:none}input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(33,199,187,.1)}.button{border:1px solid transparent;padding:11px 20px;font:600 14px inherit;cursor:pointer;color:var(--text);transition:.18s}.button:hover{transform:translateY(-1px)}.button.primary{background:var(--teal);color:#042027}.button.primary:hover{background:#32d8cc}.button.ghost{background:transparent;border-color:#31515c}.button.ghost:hover{border-color:var(--teal);color:var(--teal)}.button.small{padding:8px 12px;font-size:12px}.button.wide{width:100%;margin-top:4px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}.stats article{padding:18px 20px;border:1px solid var(--line);background:rgba(12,31,41,.86)}.stats span{color:var(--muted);font-size:13px}.stats strong{display:block;font-size:27px;margin-top:6px}.grid{display:grid;grid-template-columns:minmax(310px,420px) 1fr;gap:16px;margin-bottom:16px}.generator,.generated,.licenses{padding:24px}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.generator form{display:grid;grid-template-columns:1fr 1fr;gap:15px}.generator label{display:block;font-size:13px;color:#bdd0d6}.generator label:nth-child(4),.generator .wide{grid-column:1/-1}.generator input{display:block;margin-top:7px}.generator small{display:block;color:var(--muted);margin-top:5px}.warning{border-left:3px solid var(--amber);background:rgba(240,179,79,.08);padding:10px 12px!important;color:#e7c98e!important;font-size:13px}.key-list{margin-top:14px;max-height:226px;overflow:auto}.key-item{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #213b45;padding:11px 5px;font-family:Consolas,monospace}.key-item button{background:none;border:0;color:var(--teal);cursor:pointer}.licenses{min-height:270px}.search{max-width:300px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left}th{padding:10px 12px;color:var(--muted);font-size:12px;font-weight:500;border-bottom:1px solid var(--line)}td{padding:14px 12px;border-bottom:1px solid #1c3540;font-size:13px;vertical-align:top}.preview{font-family:Consolas,monospace;white-space:nowrap}.badge{display:inline-flex;padding:4px 8px;border-radius:20px;font-size:11px;background:#19323b;color:#adc2c9}.badge.active{background:rgba(62,214,162,.13);color:var(--green)}.badge.unused{background:rgba(33,199,187,.12);color:var(--teal)}.badge.suspended,.badge.expired{background:rgba(240,179,79,.12);color:var(--amber)}.badge.revoked{background:rgba(255,107,113,.12);color:var(--red)}.actions{display:flex;flex-wrap:wrap;gap:5px;min-width:190px}.actions button{background:#102832;border:1px solid #294852;color:#b8ccd3;padding:5px 8px;cursor:pointer;font:12px inherit}.actions button:hover{border-color:var(--teal);color:var(--teal)}.actions button.danger:hover{border-color:var(--red);color:var(--red)}.device{display:flex;align-items:center;gap:7px;margin:0 0 5px}.device code{color:#9ec0ca;font-size:11px}.device button{border:0;background:none;color:var(--teal);padding:0;cursor:pointer;font-size:11px}.empty{text-align:center;color:var(--muted);padding:45px 0}.toast{position:fixed;right:24px;bottom:24px;padding:13px 18px;background:#17323c;border:1px solid #31535f;box-shadow:0 12px 30px #0008;opacity:0;transform:translateY(10px);pointer-events:none;transition:.2s;max-width:420px}.toast.show{opacity:1;transform:none}.toast.error{border-color:var(--red);color:#ffc3c5}@media(max-width:900px){main{padding:28px 20px}.login-panel{align-items:stretch;flex-direction:column}.login-form{min-width:0}.stats{grid-template-columns:1fr 1fr}.grid{grid-template-columns:1fr}.hero h1{font-size:29px}}@media(max-width:560px){header{padding:0 18px}.hero{align-items:flex-start;gap:18px}.login-form{flex-direction:column}.stats{grid-template-columns:1fr 1fr}.generator form{grid-template-columns:1fr}.generator label,.generator label:nth-child(4),.generator .wide{grid-column:1}.panel-title{align-items:flex-start;flex-direction:column}.search{max-width:none}}
button.copy-inline{border:0;background:none;color:var(--teal);padding:3px 0;cursor:pointer;font:11px inherit}button.copy-inline:hover{color:var(--green)}
