th.sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:relative}.sort-indicator{display:inline-flex;align-items:center;justify-content:center;width:1em;height:1em;vertical-align:middle;font-size:.95em;color:#888}th.sorted-asc .sort-indicator:after,th.sorted-desc .sort-indicator:after{display:inline-block;vertical-align:middle;line-height:1;margin-left:2px}th.sorted-asc .sort-indicator:after{content:"▲";color:#fff}th.sorted-desc .sort-indicator:after{content:"▼";color:#fff}.inline-confirm .confirm-yes:hover{background:#34745f;border-color:#2d6a55}.inline-confirm .confirm-no:hover{background:#484f58;border-color:#30363d}body,html{margin:0;padding:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Arial,sans-serif}body{background:#141a20;color:#dde3ea}a{color:#4fa3ff}#toastHost{width:100%;max-width:560px;pointer-events:none}.dash-toast{background:#232c36;color:#e2e8ee;border:1px solid #32404c;padding:12px 18px;border-radius:10px;font-size:.75rem;font-weight:500;letter-spacing:.02em;box-shadow:0 10px 32px rgba(0,0,0,.28),0 2px 12px rgba(20,30,40,.18);opacity:0;transform:translateY(-6px) scale(.98);transition:opacity .18s ease,transform .18s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dash-toast.enter{opacity:1;transform:translateY(0) scale(1)}.dash-toast.leave{opacity:0;transform:translateY(-10px) scale(.96)}.dash-toast-success{border-color:#276f50;background:#253936;color:#e2f7eb}.dash-toast-error{border-color:#b4564f;background:#2b1e1e;color:#f8e7e5}.dash-toast-info{border-color:#32404c}:root{--btn-v:6px;--btn-h:10px;--btn-mini-v:2px;--btn-mini-h:4px;--btn-bg:#2d6a55;--spinner-bg-green:#2d6a558e;--spinner-bg-green-lighter:#4d8070;--btn-danger-bg:#b4564f;--spinner-bg-red:#b4564f8e;--spinner-bg-red-lighter:#c26a63}header{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;background:#1c242d;border-bottom:1px solid #2d3741}h1{font-size:1.2rem;margin:0;font-weight:600;color:#e2e8ee}main{max-width:1400px;margin:0 auto}.panel,main{padding:16px}.panel{background:#1f2731;margin-bottom:24px;border:1px solid #2d3741;border-radius:8px;box-shadow:0 1px 2px rgba(0,0,0,.25)}table{width:100%;border-collapse:collapse;font-size:.84rem}td,th{padding:6px 8px;border-bottom:1px solid #2a333c;vertical-align:middle}th{text-align:left;background:#27313b;position:-webkit-sticky;position:sticky;top:0;font-weight:500}.panel table thead th.sortable,th{vertical-align:top}.col-internal{display:none}tr:hover td{background:#242f38}input,select{background:#182029;color:#e2e8ee;border:1px solid #32404c;padding:4px 6px;border-radius:4px;font-size:.75rem;line-height:1.25}button{background:var(--btn-bg);color:#fff;border:1px solid var(--btn-border,#34745f);padding:var(--btn-v) var(--btn-h);border-radius:4px;font-size:.75rem;line-height:1.2;cursor:pointer;transition:background .15s,border-color .15s}select{height:auto}input:focus,select:focus{outline:1px solid #466278}button:hover{background:#34745f}button.danger{background:#b4564f;border-color:#c26a63}button.danger:hover{background:#c26a63}button.mini{font-size:.55rem;padding:var(--btn-mini-v) var(--btn-mini-h);background:#30363d;border-color:#484f58;margin-left:4px}button.mini:hover{background:#484f58}.revoked-btn{background:#382927;border-color:#52403f;color:#7b5e5e;padding:var(--btn-v) var(--btn-h);min-width:84px;border-radius:6px}.revoked-btn:disabled,.revoked-btn[disabled]{opacity:1;cursor:default}.revoked-btn[disabled]:hover{background:#382927;border-color:#52403f;color:#7b5e5e}.status-badge{font-size:.88rem;font-weight:600;margin-left:6px}.status-badge.active{color:#2ea043}.status-badge.revoked{color:#b4564f}.cards{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:16px}.card{background:#27313b;padding:10px 12px;border:1px solid #32404c;border-radius:8px;min-width:120px}.card h3{margin:0 0 4px;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#97a6b3}.card .value{font-size:.95rem;font-weight:600}.auth-box{display:flex;gap:8px;align-items:center}.product-actions{display:flex;gap:8px;margin-bottom:8px}.filters{margin:8px 0 16px}.create-license,.filters{display:flex;flex-wrap:wrap;gap:8px}.create-license{background:#27313b;padding:8px 10px 10px;border:1px solid #32404c;border-radius:8px;margin-bottom:16px;align-items:flex-start}.subheading{margin:8px 0 6px;font-size:.78rem;font-weight:600;color:#97a6b3}.create-license button,.create-license input,.create-license select{padding:4px 6px}#generatedKeyContainer{flex:1 1 100%;margin-top:4px}.generated-key-container .new-key-box{margin-top:6px}.new-key-box strong{font-weight:600}#createProductResult.inline-msg,.inline-msg{font-size:.65rem;min-width:70px}.inline-msg.dynamic{color:#e2e8ee;background:#232c36;border:1px solid #32404c;padding:10px 18px;border-radius:10px;box-shadow:0 10px 32px 0 rgba(0,0,0,.22),0 2px 12px 0 rgba(30,40,60,.13);max-width:380px;font-size:.92rem;font-weight:500;letter-spacing:.01em;z-index:1300}.inline-msg.dynamic.info{color:#e2e8ee;background:#232c36;border-color:#32404c}.inline-msg.dynamic.success{border-color:#2ea043;background:#1a2d1f;color:#dff6e9}.inline-msg.dynamic.error{border-color:#b4564f;background:#2b1e1e;color:#ffd7d3}.inline-msg.dynamic+.inline-msg.dynamic{margin-top:.5rem}.inline-confirm{font-size:.9rem;padding:14px 18px;background:#232c36;color:#e2e8ee;border:1.5px solid #3a4652;border-radius:10px;display:inline-flex;align-items:center;gap:.6rem;box-shadow:0 16px 48px 0 rgba(0,0,0,.18),0 2px 12px 0 rgba(30,40,60,.1)}td.actions-col{text-align:right!important}.inline-confirm .confirm-text{font-size:.88rem;margin-right:6px}.inline-confirm button{padding:var(--btn-v) var(--btn-h);min-width:72px;border-radius:6px;font-size:.85rem;cursor:pointer}.inline-confirm .confirm-yes{background:#2d6a55;border:1px solid #34745f;color:#fff}.inline-confirm .confirm-no{background:#30363d;border:1px solid #484f58;color:#e2e8ee}.modal{position:fixed;inset:0;background:rgba(8,12,15,.7);display:flex;justify-content:center;align-items:flex-start;padding-top:5vh}.modal.hidden{display:none}.modal-content{background:#1f2731;border:1px solid #2d3741;border-radius:10px;padding:20px 22px 28px;min-width:380px;max-width:640px;max-height:80vh;overflow:auto;box-shadow:0 4px 18px rgba(0,0,0,.35)}pre{background:#182029;padding:10px 12px;border:1px solid #2d3741;border-radius:6px;font-size:.68rem;line-height:1.3;overflow:auto}.close{background:#32404c;border:none;padding:4px 8px;float:right}.close:hover{background:#3d4d5a}#createLicenseResult{font-size:.72rem;align-self:center}.actions{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0 10px}.update{margin-top:14px;padding-top:10px;border-top:1px solid #2a333c}.result{margin-top:12px;font-size:.75rem}.new-key-box{margin-top:10px;background:#27313b;border:1px solid #32404c;padding:8px 10px;border-radius:6px;font-size:.78rem;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.new-key-box.large-key code{font-size:.9rem;letter-spacing:.5px}.new-key-box code{font-size:.8rem}span.muted{color:#97a6b3;font-size:.7rem}.table-explainer{font-size:.63rem;color:#97a6b3;margin:4px 0 6px}span.warn-badge{background:#b85e33;color:#fff;font-size:.55rem;line-height:1;padding:2px 4px;border-radius:4px}.revoked-indicator,span.warn-badge{display:inline-block;vertical-align:middle}.revoked-indicator{width:8px;height:8px;background:#b4564f;border-radius:50%;margin-left:4px;box-shadow:0 0 0 1px #32404c}.pepper-info{font-size:.6rem;font-weight:500;margin-left:8px;color:#97a6b3}.updated-meta{margin-top:4px;font-size:.6rem;color:#73808b;letter-spacing:.03em}.updated-meta .updated-time{font-style:italic}.updated-meta .ts-line{display:inline-block;margin-right:4px}.updated-meta .ts-sep{opacity:.4;margin:0 3px}.hidden,canvas.hidden{display:none!important}tr.revoked-license td{opacity:.55;background:#2a2526}tr.revoked-license:hover td{opacity:.75;background:#302a2b}#overview{padding-bottom:12px}#overview canvas{margin-top:4px}.global-loader{position:fixed;inset:0;background:rgba(20,26,32,.85);display:flex;flex-direction:column;gap:14px;align-items:center;justify-content:center;z-index:999}.global-loader.hidden{display:none}@keyframes spin{to{transform:rotate(1turn)}}.gl-text{font-size:.75rem;letter-spacing:.05em;color:#97a6b3}.spinner{width:46px;height:46px;border:4px solid var(--spinner-bg-green);border-top:4px solid #60bd9d;border-radius:50%;animation:spin .9s linear infinite}.inline-spinner{width:12px;height:12px;border:1.5px solid var(--spinner-bg-green-lighter);border-top:1.5px solid #beefc8;border-radius:50%;animation:spin .8s linear infinite;display:inline-block;vertical-align:middle;margin-right:4px}.inline-spinner.red{border:1.5px solid var(--spinner-bg-red-lighter);border-top:1.5px solid #f6bdbd;background:transparent}.skeleton{background:linear-gradient(90deg,#26323c 25%,#2f3b46 37%,#26323c 63%);background-size:400% 100%;animation:skeleton 1.2s ease-in-out infinite;border-radius:4px}@keyframes skeleton{0%{background-position:100% 50%}to{background-position:0 50%}}.skeleton.line{height:10px;margin:4px 0}.skeleton.block{height:42px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#182029}::-webkit-scrollbar-thumb{background:#2d3741;border-radius:5px}::-webkit-scrollbar-thumb:hover{background:#384651}.meta-line{display:flex;flex-wrap:wrap;gap:12px;align-items:center;font-size:.72rem;margin:4px 0 10px}.meta-line .sep{flex:0 0 12px}.json-box{margin-top:4px}.expiry-row{gap:8px;margin-top:6px}.expiry-row,.manage-header{display:flex;align-items:center}.manage-header{justify-content:space-between;gap:12px;margin-bottom:12px}.manage-header h3{margin:0;font-size:1.05rem}.manage-header .id-row{display:flex;gap:8px;align-items:center;font-size:.9rem;color:#cfd8df}.modal-table{display:grid;grid-template-columns:140px 1fr auto;grid-gap:8px 12px;gap:8px 12px;align-items:center;border-top:1px solid #2a333c;padding-top:12px}.modal-table .row{display:contents}.modal-table .label{color:#97a6b3;font-size:.78rem;padding:6px 0}.modal-table .value{font-size:.9rem;color:#e6eef6;padding:6px 0}.modal-table .status-cell{font-weight:600}.modal-table .control{text-align:right}.modal-table .control button{margin-left:8px;padding:6px 10px;font-size:.82rem;border-radius:6px;background:var(--btn-bg);color:#fff;border:1px solid var(--btn-border,#34745f)}.modal-table .control button:hover{background:#34745f}.modal-table .control button.danger{padding:6px 10px;background:var(--btn-danger-bg);border-color:#c26a63}.modal-table .control button.danger:hover{background:#c26a63}.modal-content{padding:18px 22px 22px}.manage-header .mini{font-size:.65rem;padding:3px 6px}.status-cell{color:#97a6b3}.status-cell.active:before,.status-cell.deactivated:before,.status-cell.revoked:before,.status-cell.unrevoked:before,.status-cell:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px;vertical-align:middle}.status-cell.active:before{background:#2ea043}.status-cell.deactivated:before{background:#8b949e}.status-cell.revoked:before{background:#b4564f}.status-cell.unrevoked:before{background:#97a6b3;opacity:.7}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.modal-actions button{padding:6px 10px;font-size:.9rem;background:var(--btn-bg);color:#fff;border:1px solid var(--btn-border,#34745f)}.modal-actions button:hover{background:#34745f}.modal-actions button.danger{background:var(--btn-danger-bg);border-color:#c26a63}.modal-actions button.danger:hover{background:#c26a63}.panel h2{margin-top:0;font-weight:600;margin-bottom:12px;color:#cdd5de}