:root{--blue:#0052d4;--sky:#65c7f7;--cyan:#0ae4ff;--ink:#212529;--muted:#6c757d;--disabled:#adb5bd;--surface:#f8f9fa;--white:#fff;--border:#dfe5ed;--danger:#d93025;--shadow:0 12px 35px rgba(18,50,89,.1);--sidebar:260px}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,"Microsoft YaHei",sans-serif;color:var(--ink);background:#fff}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:var(--blue)}h1,h2,h3,p{margin-top:0}h1,.brand-text{font-family:Orbitron,"Microsoft YaHei",sans-serif}svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}.eyebrow{color:var(--blue);font:600 11px/1.4 Orbitron,sans-serif;letter-spacing:.17em;margin-bottom:8px}.muted{color:var(--muted)}
button,.primary-button,.secondary-button,.danger-button{border-radius:2px;box-shadow:0 .5px 2px rgba(0,0,0,.16);transition:filter .2s,transform .2s,box-shadow .2s}.primary-button,.secondary-button,.danger-button{border:0;padding:10px 17px;font-weight:600}.primary-button{color:#fff;background:linear-gradient(120deg,var(--blue),var(--sky))}.secondary-button{color:var(--blue);border:1px solid #bdd2f2;background:#fff}.danger-button{color:#fff;background:linear-gradient(120deg,#b42318,#ef5b51)}button:hover:not(:disabled){filter:brightness(.92);box-shadow:0 5px 16px rgba(0,82,212,.16)}button:active:not(:disabled){transform:translateY(1px)}input,textarea,select{width:100%;border:1px solid var(--border);border-radius:2px;background:#fff;color:var(--ink);padding:11px 12px;outline:0;transition:border-color .2s,box-shadow .2s}input:focus,textarea:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,82,212,.1)}label{display:block;font-weight:600;font-size:13px;margin-bottom:8px}label em{color:var(--danger);font-style:normal}textarea{resize:vertical}
.login-page{min-height:100vh;background:linear-gradient(135deg,#f4f9ff 0,#fff 47%,#eefbff 100%);display:grid;place-items:center;overflow:hidden}.login-page:before,.login-page:after{content:"";position:fixed;border-radius:50%;filter:blur(2px);pointer-events:none}.login-page:before{width:440px;height:440px;left:-170px;top:-180px;background:radial-gradient(circle,rgba(0,82,212,.12),transparent 68%)}.login-page:after{width:520px;height:520px;right:-190px;bottom:-260px;background:radial-gradient(circle,rgba(101,199,247,.18),transparent 68%)}.login-shell{width:min(980px,calc(100% - 36px));display:grid;grid-template-columns:1.05fr .95fr;background:rgba(255,255,255,.87);border:1px solid rgba(0,82,212,.12);box-shadow:0 30px 90px rgba(0,82,212,.13);position:relative;z-index:1}.login-brand{padding:72px 64px;background:linear-gradient(145deg,rgba(0,82,212,.96),rgba(54,155,236,.92));color:#fff;position:relative;overflow:hidden}.login-brand .eyebrow{color:#bff5ff}.login-brand h1{font-size:38px;line-height:1.25;margin:80px 0 18px}.login-brand>p:not(.eyebrow){line-height:1.8;color:#e9f6ff}.status-line{position:absolute;bottom:42px;font-size:12px;color:#d7f8ff;display:flex;gap:8px;align-items:center}.status-line span{width:8px;height:8px;background:#48f2b6;border-radius:50%;box-shadow:0 0 14px #48f2b6}.brand-orbit{position:absolute;right:-30px;top:-70px;width:290px;height:290px;border:1px solid rgba(255,255,255,.18);border-radius:50%}.brand-orbit span{position:absolute;inset:40px;border:1px solid rgba(255,255,255,.16);border-radius:50%}.brand-orbit span:nth-child(2){inset:84px}.brand-orbit span:nth-child(3){inset:127px;background:rgba(255,255,255,.5);box-shadow:0 0 30px #bff5ff}.login-card{padding:58px 54px}.card-heading h2{font-family:Orbitron,sans-serif;font-size:27px;margin-bottom:9px}.card-heading>p:last-child{color:var(--muted);font-size:13px;margin-bottom:30px}.input-wrap{position:relative;margin-bottom:17px}.input-wrap input{padding-left:42px}.field-icon{position:absolute;left:14px;top:11px;color:var(--blue);z-index:1}.captcha-row{display:grid;grid-template-columns:1fr 150px;gap:10px}.captcha-button{padding:0;height:44px;border:1px solid var(--border);background:#f8f9fa;overflow:hidden}.captcha-button img{width:100%;height:100%;object-fit:cover}.check-label{display:flex;align-items:center;gap:9px;color:var(--muted);font-weight:400;margin:4px 0 23px}.check-label input{width:16px;height:16px;margin:0}.login-submit{width:100%;display:flex;justify-content:space-between;padding:13px 18px}.security-note{text-align:center;color:var(--disabled);font-size:11px;margin:20px 0 0}
.install-shell{width:min(1080px,calc(100% - 36px));grid-template-columns:.92fr 1.08fr}.install-card{padding:42px 48px}.install-card .card-heading>p:last-child{margin-bottom:20px}.install-password-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.install-password-grid .input-wrap input{padding-left:12px}.install-steps{display:grid;gap:14px;margin-top:42px;color:#e9f6ff;font-size:13px}.install-steps span{display:flex;align-items:center;gap:12px}.install-steps b{width:32px;height:32px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.45);font:700 11px Orbitron}.setup-warning{border-left:3px solid #e99b16;background:#fff8e8;padding:12px 14px;margin-bottom:18px;display:grid;gap:4px}.setup-warning strong{font-size:13px;color:#9a5b00}.setup-warning span,.password-hint{font-size:12px;color:var(--muted);line-height:1.55}.password-hint{margin:-6px 0 17px}
.admin-page{min-height:100vh;background:#f4f7fb}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);background:#fff;border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:20;transition:width .25s}.sidebar-brand{height:84px;padding:16px 20px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--border);overflow:hidden}.brand-mark{flex:0 0 42px;width:42px;height:42px;display:grid;place-items:center;background:linear-gradient(135deg,var(--blue),var(--sky));color:#fff;font:700 22px Orbitron;border-radius:2px;box-shadow:0 5px 18px rgba(0,82,212,.2)}.brand-text{font-size:12px;line-height:1.5;white-space:nowrap}.side-nav{padding:22px 12px;display:grid;gap:8px}.nav-item{position:relative;border:0;background:transparent;color:var(--muted);display:flex;gap:13px;align-items:center;text-align:left;padding:13px 14px;white-space:nowrap;overflow:hidden}.nav-item svg,.sidebar-toggle svg{width:20px;height:20px;flex:0 0 20px}.nav-item:hover{color:var(--blue);background:linear-gradient(90deg,rgba(10,228,255,.18),rgba(10,228,255,.04));transition:.3s}.nav-item.active{color:var(--blue);background:linear-gradient(90deg,rgba(0,82,212,.1),transparent);font-weight:600}.nav-item.active:before{content:"";position:absolute;left:0;top:7px;bottom:7px;width:3px;background:linear-gradient(var(--blue),var(--cyan));box-shadow:0 0 10px var(--cyan)}.sidebar-toggle{margin:auto 12px 20px;border:1px solid var(--border);background:#fff;color:var(--muted);padding:11px 14px;display:flex;align-items:center;gap:13px;white-space:nowrap;overflow:hidden}.sidebar.collapsed{width:72px}.sidebar.collapsed .brand-text,.sidebar.collapsed .nav-item span,.sidebar.collapsed .sidebar-toggle span{display:none}.sidebar.collapsed .sidebar-brand{padding-left:15px}.sidebar.collapsed .nav-item,.sidebar.collapsed .sidebar-toggle{padding-left:14px}.workspace{margin-left:var(--sidebar);min-height:100vh;transition:margin-left .25s}.sidebar.collapsed~.workspace{margin-left:72px}.topbar{height:84px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 30px}.topbar h1{font-size:18px;margin:0}.topbar .eyebrow{margin-bottom:3px}.user-area,.user-chip{display:flex;align-items:center;gap:12px}.user-chip{font-size:13px}.avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--blue),var(--sky));color:#fff;display:grid;place-items:center;font-weight:700}.icon-button{width:38px;height:38px;border:1px solid var(--border);background:#fff;color:var(--blue);display:grid;place-items:center}.icon-button svg{width:19px}.tabbar{min-height:45px;padding:8px 24px 0;background:#fff;border-bottom:1px solid var(--border);display:flex;gap:5px}.tab-button{border:1px solid var(--border);border-bottom:0;background:#f8f9fa;color:var(--muted);padding:9px 14px;display:flex;gap:12px;align-items:center}.tab-button.active{background:#fff;color:var(--blue);position:relative}.tab-button.active:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:#fff}.tab-close{font-size:17px;line-height:1}.tab-content{padding:24px}.panel{background:#fff;border:1px solid var(--border);box-shadow:0 8px 30px rgba(33,37,41,.05)}.panel-head{padding:20px 22px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.panel-head h2{font-family:Orbitron,"Microsoft YaHei",sans-serif;font-size:17px;margin:0}.toolbar{padding:16px 22px;background:var(--surface);display:flex;gap:10px;align-items:flex-end;border-bottom:1px solid var(--border)}.search-field{min-width:280px}.search-field label{margin-bottom:5px}.button-icon{width:16px;height:16px;vertical-align:-3px;margin-right:5px}.table-wrap{overflow:auto}.table-wrap table{width:100%;border-collapse:collapse;white-space:nowrap}.table-wrap th,.table-wrap td{padding:13px 15px;border-bottom:1px solid #e9edf2;text-align:left;font-size:13px}.table-wrap th{background:#fbfcfd;color:var(--muted);font-weight:600}.table-wrap tbody tr:hover{background:#f8fbff}.table-wrap td.code-name{color:var(--blue);font-weight:600}.action-group{display:flex;gap:6px}.mini-button{border:1px solid var(--border);background:#fff;color:var(--blue);padding:6px 9px}.mini-button.danger{color:var(--danger)}.empty-state{text-align:center!important;color:var(--muted);padding:55px!important}.pagination{padding:15px 20px;display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:13px}.page-controls{display:flex;gap:6px;align-items:center}.page-controls button{border:1px solid var(--border);background:#fff;padding:7px 11px}.page-controls select{width:auto;padding:7px 29px 7px 9px}.badge{display:inline-block;padding:4px 8px;border-radius:20px;font-size:11px;background:#e8f7f2;color:#087a55}.badge.off{background:#f0f1f2;color:var(--muted)}.badge.revoked{background:#fdeceb;color:var(--danger)}
 .modal{width:min(560px,calc(100% - 28px));border:0;padding:0;background:#fff;box-shadow:0 22px 80px rgba(14,40,73,.25)}.modal::backdrop{background:rgba(15,32,52,.48);backdrop-filter:blur(3px)}.modal form,.modal>div:not(.confirm-symbol),.modal>p,.modal>h2{margin-left:0}.modal form,.modal.large-modal{padding:0}.modal.large-modal{width:min(980px,calc(100% - 28px))}.modal.large-modal>form,.modal.large-modal>.modal-head,.modal.large-modal>p,.modal.large-modal>.table-wrap{margin-left:28px;margin-right:28px}.modal.large-modal>form{margin:0;padding:0 28px 24px}.modal-head{padding:24px 0 18px;border-bottom:1px solid var(--border);margin-bottom:20px;display:flex;justify-content:space-between;align-items:flex-start}.modal-head h2{font-family:Orbitron,"Microsoft YaHei",sans-serif;font-size:19px;margin:0}.modal-close{border:0;background:transparent;font-size:26px;color:var(--muted);box-shadow:none}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.runtime-options-grid{grid-template-columns:repeat(3,1fr);margin-bottom:15px}.modal label{margin-top:15px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.confirm-modal{padding:30px;text-align:center}.confirm-symbol{width:50px;height:50px;border-radius:50%;background:#fff0ef;color:var(--danger);display:grid;place-items:center;font:700 25px Orbitron;margin:0 auto 15px}.confirm-modal h2{font-family:Orbitron,"Microsoft YaHei",sans-serif;font-size:20px}.confirm-modal .modal-actions{justify-content:center}.secret-box{display:flex;align-items:center;gap:8px;background:#f4f7fb;border:1px dashed #a9c3e7;padding:12px;text-align:left}.secret-box code{flex:1;overflow-wrap:anywhere;color:var(--blue)}
.code-editor{height:360px;position:relative;background:#111827;border:1px solid #253249;overflow:hidden;font:13px/1.65 Consolas,"Courier New",monospace}.code-editor pre,.code-editor textarea{position:absolute;inset:0;margin:0;padding:14px 16px;overflow:auto;white-space:pre;tab-size:4;font:inherit}.code-editor pre{color:#dbe7ff;pointer-events:none}.code-editor textarea{background:transparent;color:transparent;caret-color:#fff;resize:none;border:0;box-shadow:none;-webkit-text-fill-color:transparent}.code-editor textarea::selection{background:rgba(101,199,247,.3)}.tok-comment{color:#6f8f7b}.tok-string{color:#a7e3a1}.tok-keyword{color:#75b8ff;font-weight:600}.tok-number{color:#f4c27a}.tok-builtin{color:#d9a7ff}
.api-layout{display:grid;grid-template-columns:1fr 1fr;gap:20px}.doc-card{padding:22px}.doc-card h3{font:700 15px Orbitron,"Microsoft YaHei";margin-bottom:14px}.endpoint{display:flex;gap:10px;align-items:center;background:#111827;color:#dbe7ff;padding:12px;margin:10px 0 18px;overflow:auto}.method{color:#57f0ba;font-weight:700}.code-block{background:#111827;color:#dbe7ff;padding:15px;overflow:auto;white-space:pre-wrap;font:12px/1.6 Consolas,monospace}.key-create{display:flex;gap:8px;margin-bottom:16px}.key-create input{flex:1}.test-grid{display:grid;gap:12px}.test-result{min-height:150px}.toast-region{position:fixed;right:22px;top:22px;z-index:100;display:grid;gap:9px}.toast{width:min(360px,calc(100vw - 44px));background:#fff;border-left:4px solid var(--blue);box-shadow:var(--shadow);padding:14px 16px;animation:toast-in .25s ease}.toast.error{border-color:var(--danger)}.toast.success{border-color:#18a572}.toast strong{display:block;font-size:13px;margin-bottom:3px}.toast span{font-size:12px;color:var(--muted)}@keyframes toast-in{from{opacity:0;transform:translateX(20px)}}
@media(max-width:760px){.login-shell{grid-template-columns:1fr;margin:18px}.login-brand{display:none}.login-card{padding:40px 25px}.install-page{overflow:auto}.install-card{padding:30px 22px}.install-password-grid{grid-template-columns:1fr;gap:0}.sidebar{width:72px}.sidebar .brand-text,.sidebar .nav-item span,.sidebar .sidebar-toggle span{display:none}.sidebar .sidebar-brand{padding-left:15px}.sidebar .nav-item,.sidebar .sidebar-toggle{padding-left:14px}.workspace,.sidebar.collapsed~.workspace{margin-left:72px}.topbar{padding:0 14px}.topbar>div:first-child .eyebrow,.user-chip span:last-child{display:none}.tab-content{padding:12px}.toolbar{align-items:stretch;flex-direction:column}.search-field{min-width:0}.pagination{gap:12px;align-items:flex-start;flex-direction:column}.form-grid,.api-layout,.runtime-options-grid{grid-template-columns:1fr}.code-editor{height:300px}.user-area{gap:5px}.user-area .secondary-button{padding:8px}.panel-head{align-items:flex-start;gap:10px}}
