:root{color:#182235;font-synthesis:none;background:#f5f7fb;font-family:Inter,PingFang SC,Microsoft YaHei,sans-serif;font-size:16px}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input{font:inherit;font-size:1rem}button,.button{color:#fff;cursor:pointer;background:#2463eb;border:0;border-radius:8px;padding:.65rem 1rem;line-height:1.35;text-decoration:none}button:hover,.button:hover{background:#1649bf}button:disabled{opacity:.65;cursor:wait}button.secondary,.button.secondary{color:#1d3973;background:#e7edf9}button.secondary:hover,.button.secondary:hover{background:#d7e2f8}a{color:#245ec4}h1,h2,p{margin-top:0}h1{margin-bottom:.5rem;font-size:clamp(1.7rem,4vw,2.5rem)}h2{margin:1.75rem 0 .75rem;font-size:1.25rem}header{background:#fff;border-bottom:1px solid #e4e8f1;justify-content:space-between;align-items:center;gap:1rem;min-height:64px;padding:0 4vw;display:flex}header nav{align-items:center;gap:1rem;display:flex}header nav a{text-decoration:none}.brand{color:#17284a;font-size:1.15rem;font-weight:750;text-decoration:none}.brand span{color:#63718b;margin-left:.4rem;font-size:.875rem;font-weight:500}.link-button{color:#245ec4;background:0 0;padding:0}.link-button:hover{color:#123b89;background:0 0}main{max-width:1180px;margin:0 auto;padding:2rem 4vw 3rem}.hero{text-align:center;place-items:center;max-width:850px;min-height:calc(100vh - 64px);display:grid}.hero h1{font-size:clamp(2.25rem,6vw,4rem);line-height:1.15}.hero p{color:#52617a;font-size:1.125rem}.eyebrow{font-weight:700;color:#2463eb!important}.actions{justify-content:center;gap:.75rem;margin-top:1.5rem;display:flex}.auth-page{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.auth-card{background:#fff;border:1px solid #e4e8f1;border-radius:14px;width:min(100%,440px);padding:2rem;box-shadow:0 16px 48px #25345c12}.auth-card p{color:#52617a}form{gap:.9rem;display:grid}label{gap:.35rem;font-weight:600;display:grid}input{color:#182235;background:#fff;border:1px solid #b8c3d7;border-radius:8px;width:100%;padding:.65rem .75rem}input:focus{border-color:#2463eb;outline:3px solid #bcd2ff}.muted{color:#65738a;font-size:.875rem}.error{color:#b42318;font-weight:600}.page-heading{justify-content:space-between;align-items:flex-end;gap:1rem;display:flex}.page-heading p{color:#586780;margin-bottom:0}.cards{grid-template-columns:repeat(3,1fr);gap:1rem;margin:1.5rem 0;display:grid}.cards article{background:#fff;border:1px solid #e1e7f2;border-radius:12px;padding:1.25rem}.cards span{color:#65738a;margin-bottom:.5rem;display:block}.cards strong{font-size:2rem}.create-form{grid-template-columns:minmax(180px,360px) auto;align-items:center;margin:1.25rem 0}.table-wrap{background:#fff;border:1px solid #e1e7f2;border-radius:12px;overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:720px}th,td{text-align:left;vertical-align:middle;border-bottom:1px solid #e9edf5;padding:.85rem 1rem}th{color:#53617a;background:#fafbfe;font-weight:650}tr:last-child td{border-bottom:0}.status{color:#42516d;background:#e8edf6;border-radius:999px;padding:.22rem .5rem;font-size:.875rem;display:inline-block}.status.running,.status.online{color:#12633a;background:#d9f7e7}.status.error,.status.offline{color:#a12c23;background:#fde4e2}.status.deleting,.status.releasing{color:#6c757d;background:#e2e3e5}.status.qr_pending,.status.logging_in,.status.pending{color:#805b00;background:#fff1cf}.inline-actions{flex-wrap:wrap;gap:.4rem;display:flex}.inline-actions button{padding:.4rem .65rem;font-size:.875rem}button.btn-danger,.button.btn-danger{color:#fff;background:#dc3545;padding:.4rem .65rem;font-size:.875rem}button.btn-danger:hover:not(:disabled),.button.btn-danger:hover{background:#a71d2a}button.btn-danger:disabled{opacity:.65;cursor:wait}.empty{color:#65738a;text-align:center;padding:2rem}.modal-backdrop{z-index:10;background:#10213a88;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal{text-align:center;background:#fff;border-radius:14px;width:min(100%,480px);padding:2rem;position:relative;box-shadow:0 16px 50px #0d1d3588}.close{color:#41506c;background:0 0;width:36px;height:36px;padding:0;font-size:1.5rem;position:absolute;top:.75rem;right:.75rem}.close:hover{background:#eff3fa}.qr{image-rendering:auto;width:min(100%,280px);height:auto;margin:1rem auto;display:block}.events{background:#fff;border:1px solid #e1e7f2;border-radius:12px;margin:0;padding:0;list-style:none}.events li{border-bottom:1px solid #e9edf5;grid-template-columns:170px 80px 1fr;gap:.75rem;padding:.8rem 1rem;display:grid}.events li:last-child{border-bottom:0}.events time{color:#65738a}.events span{font-weight:650}@media (width<=700px){header{flex-direction:column;align-items:flex-start;padding:.75rem 1rem}header nav{flex-wrap:wrap;gap:.75rem}.cards,.create-form{grid-template-columns:1fr}.events li{grid-template-columns:1fr;gap:.25rem}}:root{--qb-canvas:#f6f8fc;--qb-surface:#fff;--qb-surface-hover:#f0f3f9;--qb-border:#dde3ef;--qb-border-strong:#c3cce0;--qb-muted:#9aa5b8;--qb-muted-dark:#697a94;--qb-text:#182437;--qb-text-secondary:#4b5e78;--qb-ink:#0f1d33;--qb-ink-light:#1c2e4d;--qb-ink-hover:#263c63;--qb-accent:#0c8599;--qb-accent-hover:#0a7080;--qb-accent-light:#e6f7f9;--qb-accent-muted:#bceef3;--qb-ok:#1a7f37;--qb-ok-bg:#e6f9ed;--qb-warn:#9a6700;--qb-warn-bg:#fff8e1;--qb-danger:#c62828;--qb-danger-bg:#fde8e8;--qb-info:#1565c0;--qb-info-bg:#e3f0fb;--qb-font:"Inter", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--qb-font-mono:"JetBrains Mono", "Cascadia Code", "Consolas", monospace;--qb-text-base:15px;--qb-text-sm:14px;--qb-text-xs:13px;--qb-line:1.55;--qb-weight-normal:400;--qb-weight-medium:550;--qb-weight-bold:700;--qb-sp-1:4px;--qb-sp-2:8px;--qb-sp-3:12px;--qb-sp-4:16px;--qb-sp-5:20px;--qb-sp-6:24px;--qb-sp-8:32px;--qb-sp-10:40px;--qb-sp-12:48px;--qb-sp-16:64px;--qb-r-sm:4px;--qb-r-md:8px;--qb-r-lg:12px;--qb-r-full:999px;--qb-shadow-sm:0 1px 3px #0f1d330f;--qb-shadow-md:0 4px 12px #0f1d3314;--qb-shadow-lg:0 8px 28px #0f1d331a;--qb-sidebar-w:248px;--qb-topbar-h:56px;--qb-content-max:1200px;--qb-ease:cubic-bezier(.25, .1, .25, 1);--qb-duration:.14s}.qb-app{font-family:var(--qb-font);font-size:var(--qb-text-base);line-height:var(--qb-line);color:var(--qb-text);background:var(--qb-canvas);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh}.qb-app *,.qb-app :before,.qb-app :after{box-sizing:border-box}.qb-app h1,.qb-app h2,.qb-app h3,.qb-app h4,.qb-app h5,.qb-app h6,.qb-app p,.qb-app ul,.qb-app ol,.qb-app dl{margin:0}.qb-shell{grid-template-columns:var(--qb-sidebar-w) 1fr;grid-template-rows:var(--qb-topbar-h) 1fr;grid-template-areas:"sidebar topbar""sidebar main";min-height:100vh;display:grid}.qb-shell__mobile-bar{display:none}.qb-shell__sidebar-header{min-height:var(--qb-topbar-h);padding:0 var(--qb-sp-4);border-bottom:1px solid #ffffff14;align-items:center;display:flex}.qb-shell__sidebar-header .qb-shell__brand{color:#fff;font-size:16px;font-weight:var(--qb-weight-bold);flex:1;text-decoration:none}.qb-shell__brand-tag{color:#9eabc2;font-size:var(--qb-text-sm);white-space:nowrap}.qb-shell__close-drawer{display:none}.qb-shell__nav{gap:var(--qb-sp-1);padding:var(--qb-sp-3);flex-direction:column;flex:1;display:flex}.qb-shell__nav-item{align-items:center;gap:var(--qb-sp-3);padding:var(--qb-sp-3) var(--qb-sp-4);border-radius:var(--qb-r-md);color:#b0bcd0;font-size:var(--qb-text-base);font-weight:var(--qb-weight-medium);text-decoration:none;display:flex}.qb-shell__nav-item:hover{color:#fff;background:#ffffff0f}.qb-shell__nav-item--active{color:#fff;background:#0c859933}.qb-shell__footer{padding:var(--qb-sp-4);border-top:1px solid #ffffff14;margin-top:auto}.qb-shell__user{align-items:center;gap:var(--qb-sp-3);min-width:0;margin-bottom:var(--qb-sp-3);display:flex}.qb-shell__avatar{background:var(--qb-accent);color:#fff;width:32px;height:32px;font-size:var(--qb-text-sm);font-weight:var(--qb-weight-bold);border-radius:50%;flex:none;place-items:center;display:grid}.qb-shell__user-info{flex-direction:column;min-width:0;display:flex}.qb-shell__username{text-overflow:ellipsis;white-space:nowrap;color:#fff;font-size:var(--qb-text-sm);overflow:hidden}.qb-shell__user-role{color:#9eabc2;font-size:var(--qb-text-sm)}.qb-shell__logout{align-items:center;gap:var(--qb-sp-2);padding:var(--qb-sp-2);color:#b0bcd0;font-size:var(--qb-text-sm);cursor:pointer;background:0 0;border:0;display:inline-flex}.qb-shell__logout:hover{color:#fff}.qb-shell__main{width:min(100%, var(--qb-content-max));padding:var(--qb-sp-8);grid-area:main}.qb-sidebar{background:var(--qb-ink);color:#d0d8e8;z-index:20;border-right:1px solid #ffffff0a;flex-direction:column;grid-area:sidebar;height:100vh;display:flex;position:sticky;top:0;overflow:hidden auto}.qb-brand{align-items:center;gap:var(--qb-sp-3);padding:var(--qb-sp-4) var(--qb-sp-5);height:var(--qb-topbar-h);font-weight:var(--qb-weight-bold);color:#fff;transition:color var(--qb-duration) var(--qb-ease);border-bottom:1px solid #ffffff0f;flex-shrink:0;font-size:16px;text-decoration:none;display:flex}.qb-brand:hover{color:var(--qb-accent-muted)}.qb-nav{padding:var(--qb-sp-3) var(--qb-sp-3);gap:var(--qb-sp-1);flex-direction:column;flex:1;list-style:none;display:flex}.qb-nav-item{align-items:center;gap:var(--qb-sp-3);padding:var(--qb-sp-3) var(--qb-sp-4);border-radius:var(--qb-r-md);color:#b0bcd0;font-size:var(--qb-text-base);font-weight:var(--qb-weight-medium);cursor:pointer;text-align:left;width:100%;transition:background var(--qb-duration) var(--qb-ease), color var(--qb-duration) var(--qb-ease);background:0 0;border:none;text-decoration:none;display:flex}.qb-nav-item:hover{color:#e2e8f4;background:#ffffff0f}.qb-nav-item[aria-current=page],.qb-nav-item.active{color:#fff;background:#0c85992e}.qb-nav-item:focus-visible{outline:2px solid var(--qb-accent);outline-offset:2px}.qb-user-menu{padding:var(--qb-sp-4) var(--qb-sp-4);align-items:center;gap:var(--qb-sp-3);font-size:var(--qb-text-sm);color:#b0bcd0;border-top:1px solid #ffffff0f;flex-shrink:0;margin-top:auto;display:flex}.qb-topbar{height:var(--qb-topbar-h);padding:0 var(--qb-sp-6);background:var(--qb-surface);border-bottom:1px solid var(--qb-border);z-index:15;grid-area:topbar;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.qb-main{padding:var(--qb-sp-6) var(--qb-sp-8);max-width:var(--qb-content-max);grid-area:main;width:100%}.qb-mobile-backdrop{z-index:19;opacity:0;transition:opacity var(--qb-duration) var(--qb-ease);pointer-events:none;background:#0f1d3373;display:none;position:fixed;inset:0}.qb-mobile-backdrop.visible{opacity:1;pointer-events:auto}.qb-page-header{justify-content:space-between;align-items:flex-start;gap:var(--qb-sp-4);margin-bottom:var(--qb-sp-6);flex-wrap:wrap;display:flex}.qb-page-header h1,.qb-page-header h2{font-size:22px;font-weight:var(--qb-weight-bold);color:var(--qb-text);line-height:1.3}.qb-eyebrow{font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);color:var(--qb-accent);text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--qb-sp-1);display:block}.qb-heading-actions{align-items:center;gap:var(--qb-sp-2);flex-wrap:wrap;flex-shrink:0;display:flex}.qb-button{justify-content:center;align-items:center;gap:var(--qb-sp-2);padding:var(--qb-sp-2) var(--qb-sp-4);min-height:36px;font-family:var(--qb-font);font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);border-radius:var(--qb-r-md);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background var(--qb-duration) var(--qb-ease), border-color var(--qb-duration) var(--qb-ease), box-shadow var(--qb-duration) var(--qb-ease), opacity var(--qb-duration) var(--qb-ease);border:1px solid #0000;line-height:1.35;text-decoration:none;display:inline-flex}.qb-button:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.qb-button:focus-visible{outline:2px solid var(--qb-accent);outline-offset:2px}.qb-button.primary{background:var(--qb-accent);color:#fff;border-color:var(--qb-accent)}.qb-button.primary:hover{background:var(--qb-accent-hover);border-color:var(--qb-accent-hover)}.qb-button.secondary{background:var(--qb-surface);color:var(--qb-text);border-color:var(--qb-border-strong)}.qb-button.secondary:hover{background:var(--qb-surface-hover);border-color:var(--qb-muted)}.qb-button.danger{background:var(--qb-danger);color:#fff;border-color:var(--qb-danger)}.qb-button.danger:hover{background:#b71c1c;border-color:#b71c1c}.qb-button.ghost{color:var(--qb-text-secondary);background:0 0;border-color:#0000}.qb-button.ghost:hover{background:var(--qb-surface-hover);color:var(--qb-text)}.qb-button.icon{padding:var(--qb-sp-2);min-width:36px;min-height:36px}.qb-card{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm);transition:box-shadow var(--qb-duration) var(--qb-ease)}.qb-card:hover{box-shadow:var(--qb-shadow-md)}.qb-card-grid{gap:var(--qb-sp-4);margin:var(--qb-sp-5) 0;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.qb-metric-card{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-5);gap:var(--qb-sp-2);box-shadow:var(--qb-shadow-sm);flex-direction:column;display:flex}.qb-metric-card .qb-metric-label{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);font-weight:var(--qb-weight-medium)}.qb-metric-value{font-size:28px;font-weight:var(--qb-weight-bold);color:var(--qb-text);line-height:1.2}.qb-capacity-meter{align-items:center;gap:var(--qb-sp-3);font-size:var(--qb-text-sm);color:var(--qb-muted-dark);display:flex}.qb-capacity-meter .qb-meter-track{background:var(--qb-canvas);border-radius:var(--qb-r-full);border:1px solid var(--qb-border);flex:1;height:8px;overflow:hidden}.qb-capacity-meter .qb-meter-fill{background:var(--qb-accent);border-radius:var(--qb-r-full);height:100%;transition:width .3s var(--qb-ease)}.qb-capacity-meter.warn .qb-meter-fill{background:var(--qb-warn)}.qb-capacity-meter.danger .qb-meter-fill{background:var(--qb-danger)}.qb-progress{border-radius:var(--qb-r-full);background:var(--qb-canvas);border:1px solid var(--qb-border);appearance:none;width:100%;height:6px;display:block;overflow:hidden}.qb-progress::-webkit-progress-bar{background:0 0}.qb-progress::-webkit-progress-value{background:var(--qb-accent);border-radius:var(--qb-r-full);transition:width .3s var(--qb-ease)}.qb-progress::-moz-progress-bar{background:var(--qb-accent);border-radius:var(--qb-r-full)}.qb-table-wrap{-webkit-overflow-scrolling:touch;background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);box-shadow:var(--qb-shadow-sm);overflow-x:auto}.qb-table{border-collapse:collapse;width:100%;min-width:640px;font-size:var(--qb-text-sm)}.qb-table th,.qb-table td{padding:var(--qb-sp-3) var(--qb-sp-4);text-align:left;vertical-align:middle;border-bottom:1px solid var(--qb-border)}.qb-table th{font-weight:var(--qb-weight-medium);color:var(--qb-muted-dark);background:var(--qb-canvas);z-index:1;white-space:nowrap;position:sticky;top:0}.qb-table tbody tr{transition:background var(--qb-duration) var(--qb-ease)}.qb-table tbody tr:hover{background:var(--qb-surface-hover)}.qb-table tbody tr:last-child td{border-bottom:none}.qb-status{align-items:center;gap:var(--qb-sp-1);border-radius:var(--qb-r-full);font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);white-space:nowrap;background:var(--qb-canvas);color:var(--qb-muted-dark);padding:2px 10px;display:inline-flex}.qb-status.running,.qb-status.online,.qb-status.active,.qb-status.ok{background:var(--qb-ok-bg);color:var(--qb-ok)}.qb-status.error,.qb-status.offline,.qb-status.failed{background:var(--qb-danger-bg);color:var(--qb-danger)}.qb-status.pending,.qb-status.logging_in,.qb-status.qr_pending{background:var(--qb-warn-bg);color:var(--qb-warn)}.qb-status.deleting,.qb-status.releasing,.qb-status.disabled{background:var(--qb-canvas);color:var(--qb-muted)}.qb-empty-state{justify-content:center;align-items:center;gap:var(--qb-sp-3);padding:var(--qb-sp-12) var(--qb-sp-6);text-align:center;color:var(--qb-muted-dark);font-size:var(--qb-text-base);flex-direction:column;display:flex}.qb-empty-state .qb-empty-icon{opacity:.45;font-size:36px;line-height:1}.qb-notice{align-items:flex-start;gap:var(--qb-sp-3);padding:var(--qb-sp-4);border-radius:var(--qb-r-md);font-size:var(--qb-text-sm);background:var(--qb-info-bg);color:var(--qb-info);border:1px solid #a8d0f2;line-height:1.5;display:flex}.qb-notice.warn{background:var(--qb-warn-bg);color:var(--qb-warn);border-color:#e8d48a}.qb-notice.danger,.qb-notice.error{background:var(--qb-danger-bg);color:var(--qb-danger);border-color:#f0b4b4}.qb-notice.success,.qb-notice.ok{background:var(--qb-ok-bg);color:var(--qb-ok);border-color:#a8e0b8}.qb-loading{justify-content:center;align-items:center;gap:var(--qb-sp-3);padding:var(--qb-sp-10) var(--qb-sp-4);color:var(--qb-muted-dark);font-size:var(--qb-text-sm);display:flex}.qb-loading:before{content:"";border:2px solid var(--qb-border-strong);border-top-color:var(--qb-accent);border-radius:50%;width:20px;height:20px;animation:.7s linear infinite qb-spin;display:block}@keyframes qb-spin{to{transform:rotate(360deg)}}.qb-auth-layout{background:var(--qb-canvas);min-height:100vh;display:flex}.qb-auth-aside{display:none}.qb-auth-panel{padding:var(--qb-sp-6);flex:1;justify-content:center;align-items:center;display:flex}.qb-auth-card{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);width:100%;max-width:420px;padding:var(--qb-sp-8);box-shadow:var(--qb-shadow-md)}.qb-auth-card h1,.qb-auth-card h2{font-size:20px;font-weight:var(--qb-weight-bold);margin-bottom:var(--qb-sp-2);color:var(--qb-text)}.qb-auth-card p{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);margin-bottom:var(--qb-sp-5)}.qb-auth-form{gap:var(--qb-sp-4);flex-direction:column;display:flex}.qb-auth-form label{gap:var(--qb-sp-1);font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);color:var(--qb-text);flex-direction:column;display:flex}.qb-auth-form input{padding:var(--qb-sp-2) var(--qb-sp-3);font-size:var(--qb-text-base);border:1px solid var(--qb-border-strong);border-radius:var(--qb-r-md);background:var(--qb-surface);color:var(--qb-text);min-height:40px;transition:border-color var(--qb-duration) var(--qb-ease)}.qb-auth-form input:focus{border-color:var(--qb-accent);box-shadow:0 0 0 3px var(--qb-accent-light);outline:none}.qb-auth-form input::placeholder{color:var(--qb-muted)}.qb-qr-backdrop{padding:var(--qb-sp-4);z-index:100;opacity:0;pointer-events:none;transition:opacity var(--qb-duration) var(--qb-ease);background:#0f1d3380;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.qb-qr-backdrop.open{opacity:1;pointer-events:auto}.qb-qr-dialog{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);width:100%;max-width:400px;padding:var(--qb-sp-8) var(--qb-sp-6);box-shadow:var(--qb-shadow-lg);text-align:center;transition:transform var(--qb-duration) var(--qb-ease);position:relative;transform:translateY(8px)}.qb-qr-backdrop.open .qb-qr-dialog{transform:translateY(0)}.qb-qr-dialog h2{font-size:18px;font-weight:var(--qb-weight-bold);margin-bottom:var(--qb-sp-2);color:var(--qb-text)}.qb-qr-dialog p{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);margin-bottom:var(--qb-sp-4)}.qb-qr-dialog img,.qb-qr-dialog canvas{width:100%;max-width:260px;margin:0 auto var(--qb-sp-4);border:1px solid var(--qb-border);border-radius:var(--qb-r-md);display:block}.qb-instance-toolbar{align-items:center;gap:var(--qb-sp-3);margin-bottom:var(--qb-sp-4);flex-wrap:wrap;display:flex}.qb-instance-card{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm);gap:var(--qb-sp-3);transition:box-shadow var(--qb-duration) var(--qb-ease);flex-direction:column;display:flex}.qb-instance-card:hover{box-shadow:var(--qb-shadow-md)}.qb-instance-card .qb-instance-name{font-size:16px;font-weight:var(--qb-weight-bold);color:var(--qb-text)}.qb-instance-card .qb-instance-meta{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);gap:var(--qb-sp-3);flex-wrap:wrap;display:flex}.qb-instance-card .qb-instance-actions{gap:var(--qb-sp-2);padding-top:var(--qb-sp-3);border-top:1px solid var(--qb-border);flex-wrap:wrap;margin-top:auto;display:flex}.qb-event-list{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);box-shadow:var(--qb-shadow-sm);margin:0;padding:0;list-style:none;overflow:hidden}.qb-event-list li{gap:var(--qb-sp-3);padding:var(--qb-sp-3) var(--qb-sp-4);font-size:var(--qb-text-sm);border-bottom:1px solid var(--qb-border);grid-template-columns:180px 90px 1fr;align-items:center;display:grid}.qb-event-list li:last-child{border-bottom:none}.qb-event-list time{color:var(--qb-muted-dark);font-family:var(--qb-font-mono);font-size:var(--qb-text-xs)}.qb-event-list .qb-event-type{font-weight:var(--qb-weight-medium)}.qb-detail-grid{gap:var(--qb-sp-4);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.qb-detail-grid .qb-detail-item{gap:var(--qb-sp-1);padding:var(--qb-sp-4);background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-md);flex-direction:column;display:flex}.qb-detail-grid .qb-detail-label{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);font-weight:var(--qb-weight-medium)}.qb-detail-grid .qb-detail-value{font-size:var(--qb-text-base);color:var(--qb-text);font-weight:var(--qb-weight-bold);word-break:break-all}.qb-detail-hero{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-6);margin-bottom:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm);align-items:center;gap:var(--qb-sp-5);flex-wrap:wrap;display:flex}.qb-detail-hero .qb-hero-icon{border-radius:var(--qb-r-lg);background:var(--qb-accent-light);flex-shrink:0;justify-content:center;align-items:center;width:56px;height:56px;font-size:24px;display:flex}.qb-detail-hero .qb-hero-info{flex:1;min-width:200px}.qb-detail-hero h2{font-size:20px;font-weight:var(--qb-weight-bold);color:var(--qb-text);margin-bottom:var(--qb-sp-1)}.qb-detail-hero .qb-hero-sub{font-size:var(--qb-text-sm);color:var(--qb-muted-dark)}.qb-confirm-dialog{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);width:100%;max-width:440px;padding:var(--qb-sp-6);box-shadow:var(--qb-shadow-lg);position:relative}.qb-confirm-dialog h2{font-size:18px;font-weight:var(--qb-weight-bold);color:var(--qb-text);margin-bottom:var(--qb-sp-2)}.qb-confirm-dialog p{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);margin-bottom:var(--qb-sp-5);line-height:1.55}.qb-confirm-dialog .qb-confirm-actions{justify-content:flex-end;gap:var(--qb-sp-2);display:flex}.qb-app :focus:not(:focus-visible){outline:none}.qb-app :focus-visible{outline:2px solid var(--qb-accent);outline-offset:2px}.qb-skip-link{top:-100px;left:var(--qb-sp-4);padding:var(--qb-sp-2) var(--qb-sp-4);background:var(--qb-accent);color:#fff;border-radius:var(--qb-r-md);font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);z-index:999;transition:top var(--qb-duration) var(--qb-ease);text-decoration:none;position:absolute}.qb-skip-link:focus{top:var(--qb-sp-4)}.qb-input,.qb-select,.qb-textarea{padding:var(--qb-sp-2) var(--qb-sp-3);font-family:var(--qb-font);font-size:var(--qb-text-base);color:var(--qb-text);background:var(--qb-surface);border:1px solid var(--qb-border-strong);border-radius:var(--qb-r-md);width:100%;min-height:40px;transition:border-color var(--qb-duration) var(--qb-ease)}.qb-textarea{resize:vertical;min-height:80px}.qb-input:focus,.qb-select:focus,.qb-textarea:focus{border-color:var(--qb-accent);box-shadow:0 0 0 3px var(--qb-accent-light);outline:none}.qb-input::placeholder,.qb-textarea::placeholder{color:var(--qb-muted)}.qb-input:disabled,.qb-select:disabled,.qb-textarea:disabled{background:var(--qb-canvas);color:var(--qb-muted);cursor:not-allowed}.qb-field{gap:var(--qb-sp-1);flex-direction:column;display:flex}.qb-field-label{font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);color:var(--qb-text)}.qb-field-hint{font-size:var(--qb-text-xs);color:var(--qb-muted-dark)}.qb-field-error{font-size:var(--qb-text-sm);color:var(--qb-danger);font-weight:var(--qb-weight-medium)}.qb-flex{display:flex}.qb-flex-col{flex-direction:column;display:flex}.qb-flex-wrap{flex-wrap:wrap}.qb-items-center{align-items:center}.qb-justify-between{justify-content:space-between}.qb-justify-center{justify-content:center}.qb-gap-1{gap:var(--qb-sp-1)}.qb-gap-2{gap:var(--qb-sp-2)}.qb-gap-3{gap:var(--qb-sp-3)}.qb-gap-4{gap:var(--qb-sp-4)}.qb-gap-6{gap:var(--qb-sp-6)}.qb-mt-4{margin-top:var(--qb-sp-4)}.qb-mt-6{margin-top:var(--qb-sp-6)}.qb-mb-4{margin-bottom:var(--qb-sp-4)}.qb-mb-6{margin-bottom:var(--qb-sp-6)}.qb-text-muted{color:var(--qb-muted-dark)}.qb-text-sm{font-size:var(--qb-text-sm)}.qb-text-center{text-align:center}.qb-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.qb-sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.qb-home{background:var(--qb-canvas);flex-direction:column;min-height:100vh;display:flex}.qb-home-header{align-items:center;gap:var(--qb-sp-4);padding:var(--qb-sp-5) var(--qb-sp-6);background:var(--qb-surface);border-bottom:1px solid var(--qb-border);display:flex}.qb-home-brand{align-items:center;gap:var(--qb-sp-3);font-size:18px;font-weight:var(--qb-weight-bold);color:var(--qb-text);transition:color var(--qb-duration) var(--qb-ease);text-decoration:none;display:flex}.qb-home-brand:hover{color:var(--qb-accent)}.qb-home-main{max-width:var(--qb-content-max);padding:var(--qb-sp-8) var(--qb-sp-6);flex:1;width:100%;margin:0 auto}.qb-home-intro{max-width:560px;margin-bottom:var(--qb-sp-8)}.qb-home-intro h1{font-size:28px;font-weight:var(--qb-weight-bold);color:var(--qb-text);margin-bottom:var(--qb-sp-3);line-height:1.25}.qb-home-intro p{font-size:var(--qb-text-base);color:var(--qb-text-secondary);line-height:1.6}.qb-home-actions{gap:var(--qb-sp-3);margin-top:var(--qb-sp-5);flex-wrap:wrap;display:flex}.qb-home-flow{gap:var(--qb-sp-4);margin-top:var(--qb-sp-6);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.qb-auth-aside-copy{color:#a0aec0;font-size:var(--qb-text-sm);max-width:280px;margin-top:var(--qb-sp-4);line-height:1.55}.qb-auth-brand{align-items:center;gap:var(--qb-sp-3);margin-bottom:var(--qb-sp-5);display:flex}.qb-auth-brand-mark{border-radius:var(--qb-r-lg);background:var(--qb-accent);color:#fff;width:40px;height:40px;font-weight:var(--qb-weight-bold);flex-shrink:0;place-items:center;font-size:18px;display:grid}.qb-auth-back{align-items:center;gap:var(--qb-sp-2);font-size:var(--qb-text-sm);color:var(--qb-muted-dark);margin-bottom:var(--qb-sp-4);transition:color var(--qb-duration) var(--qb-ease);text-decoration:none;display:inline-flex}.qb-auth-back:hover{color:var(--qb-accent)}.qb-auth-description{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);margin-bottom:var(--qb-sp-5);line-height:1.55}.qb-auth-kicker{font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);color:var(--qb-accent);text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--qb-sp-1)}.qb-auth-points{margin:var(--qb-sp-4) 0 0;gap:var(--qb-sp-3);flex-direction:column;padding:0;list-style:none;display:flex}.qb-auth-points li{font-size:var(--qb-text-sm);color:#b0bcd0;align-items:flex-start;gap:var(--qb-sp-2);display:flex}.qb-auth-submit{width:100%;min-height:44px;margin-top:var(--qb-sp-3)}.qb-auth-switch{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);text-align:center;margin-top:var(--qb-sp-4)}.qb-auth-switch a{color:var(--qb-accent);font-weight:var(--qb-weight-medium);text-decoration:none}.qb-auth-switch a:hover{text-decoration:underline}.qb-auth-error{font-size:var(--qb-text-sm);color:var(--qb-danger);background:var(--qb-danger-bg);border-radius:var(--qb-r-md);padding:var(--qb-sp-3) var(--qb-sp-4);margin-bottom:var(--qb-sp-4);border:1px solid #f0b4b4;line-height:1.5}.qb-page-subtitle{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);margin-top:var(--qb-sp-1);line-height:1.5}.qb-status--running,.qb-status--online{background:var(--qb-ok-bg);color:var(--qb-ok)}.qb-status--pending,.qb-status--qr_pending,.qb-status--logging_in{background:var(--qb-warn-bg);color:var(--qb-warn)}.qb-status--error{background:var(--qb-danger-bg);color:var(--qb-danger)}.qb-status--deleting,.qb-status--releasing{background:var(--qb-canvas);color:var(--qb-muted)}.qb-status--offline{background:var(--qb-danger-bg);color:var(--qb-danger)}.qb-empty-state__icon{opacity:.45;font-size:36px;line-height:1}.qb-empty-state__title{font-size:var(--qb-text-base);font-weight:var(--qb-weight-medium);color:var(--qb-text)}.qb-empty-state__desc{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);max-width:360px;line-height:1.55}.qb-empty-state__action{margin-top:var(--qb-sp-3)}.qb-section-header{justify-content:space-between;align-items:center;gap:var(--qb-sp-3);margin-bottom:var(--qb-sp-4);padding-bottom:var(--qb-sp-3);border-bottom:1px solid var(--qb-border);display:flex}.qb-section-header__title{font-size:16px;font-weight:var(--qb-weight-bold);color:var(--qb-text)}.qb-section-header__desc{font-size:var(--qb-text-sm);color:var(--qb-muted-dark)}.qb-section-header__extra{align-items:center;gap:var(--qb-sp-2);flex-shrink:0;display:flex}.qb-metric-card__header{justify-content:space-between;align-items:center;gap:var(--qb-sp-2);display:flex}.qb-metric-card__label{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);font-weight:var(--qb-weight-medium)}.qb-metric-card__icon{border-radius:var(--qb-r-md);background:var(--qb-accent-light);width:32px;height:32px;color:var(--qb-accent);flex-shrink:0;place-items:center;font-size:16px;display:grid}.qb-metric-card__value{font-size:28px;font-weight:var(--qb-weight-bold);color:var(--qb-text);line-height:1.2}.qb-capacity-meter__header{justify-content:space-between;align-items:center;gap:var(--qb-sp-2);margin-bottom:var(--qb-sp-1);display:flex}.qb-capacity-meter__label{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);font-weight:var(--qb-weight-medium)}.qb-capacity-meter__count{font-size:var(--qb-text-sm);color:var(--qb-text);font-weight:var(--qb-weight-medium)}.qb-capacity-meter__track{background:var(--qb-canvas);border-radius:var(--qb-r-full);border:1px solid var(--qb-border);flex:1;height:8px;overflow:hidden}.qb-capacity-meter__fill{background:var(--qb-accent);border-radius:var(--qb-r-full);height:100%;transition:width .3s var(--qb-ease)}.qb-notice__icon{flex-shrink:0;font-size:16px;line-height:1.4}.qb-notice__message{flex:1;min-width:0}.qb-notice__close{width:24px;height:24px;color:inherit;cursor:pointer;border-radius:var(--qb-r-sm);opacity:.7;transition:opacity var(--qb-duration) var(--qb-ease);background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.qb-notice__close:hover{opacity:1}.qb-loading-state{justify-content:center;align-items:center;gap:var(--qb-sp-3);padding:var(--qb-sp-10) var(--qb-sp-4);color:var(--qb-muted-dark);flex-direction:column;display:flex}.qb-loading-state__spinner{border:2px solid var(--qb-border-strong);border-top-color:var(--qb-accent);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite qb-spin}.qb-loading-state__text{font-size:var(--qb-text-sm);color:var(--qb-muted-dark)}.qb-dialog-backdrop{padding:var(--qb-sp-4);z-index:100;opacity:0;pointer-events:none;transition:opacity var(--qb-duration) var(--qb-ease);background:#0f1d3380;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.qb-dialog-backdrop.open{opacity:1;pointer-events:auto}.qb-dialog{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);width:100%;max-width:440px;padding:var(--qb-sp-6);box-shadow:var(--qb-shadow-lg);transition:transform var(--qb-duration) var(--qb-ease);position:relative;transform:translateY(8px)}.qb-dialog-backdrop.open .qb-dialog{transform:translateY(0)}.qb-dialog__close{top:var(--qb-sp-3);right:var(--qb-sp-3);width:32px;height:32px;color:var(--qb-muted);cursor:pointer;border-radius:var(--qb-r-md);transition:color var(--qb-duration) var(--qb-ease), background var(--qb-duration) var(--qb-ease);background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute}.qb-dialog__close:hover{color:var(--qb-text);background:var(--qb-surface-hover)}.qb-dialog__title{font-size:18px;font-weight:var(--qb-weight-bold);color:var(--qb-text);margin-bottom:var(--qb-sp-2)}.qb-dialog__status{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);margin-bottom:var(--qb-sp-4)}.qb-dialog__qr{width:100%;max-width:260px;margin:0 auto var(--qb-sp-4);border:1px solid var(--qb-border);border-radius:var(--qb-r-md);display:block}.qb-dialog__hint{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);line-height:1.55}.qb-instance-controls{gap:var(--qb-sp-2);padding-top:var(--qb-sp-3);border-top:1px solid var(--qb-border);margin-top:var(--qb-sp-3);flex-wrap:wrap;display:flex}.qb-instance-controls__btn{justify-content:center;align-items:center;gap:var(--qb-sp-2);padding:var(--qb-sp-2) var(--qb-sp-4);min-height:34px;font-family:var(--qb-font);font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);border-radius:var(--qb-r-md);cursor:pointer;background:var(--qb-accent);color:#fff;transition:background var(--qb-duration) var(--qb-ease), border-color var(--qb-duration) var(--qb-ease);border:1px solid #0000;display:inline-flex}.qb-instance-controls__btn:hover{background:var(--qb-accent-hover)}.qb-instance-controls__btn--secondary{background:var(--qb-surface);color:var(--qb-text);border-color:var(--qb-border-strong)}.qb-instance-controls__btn--secondary:hover{background:var(--qb-surface-hover);border-color:var(--qb-muted)}.qb-instance-controls__btn--danger{background:var(--qb-danger);color:#fff;border-color:var(--qb-danger)}.qb-instance-controls__btn--danger:hover{background:#b71c1c;border-color:#b71c1c}.qb-btn__spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.7s linear infinite qb-spin;display:inline-block}.ws-hero{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-6);margin-bottom:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm)}.ws-hero h2{font-size:20px;font-weight:var(--qb-weight-bold);color:var(--qb-text);margin-bottom:var(--qb-sp-2)}.ws-hero p{font-size:var(--qb-text-sm);color:var(--qb-muted-dark)}.ws-metrics{gap:var(--qb-sp-4);margin-bottom:var(--qb-sp-5);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.ws-toolbar{align-items:center;gap:var(--qb-sp-3);margin-bottom:var(--qb-sp-4);flex-wrap:wrap;display:flex}.ws-view-toggle{border:1px solid var(--qb-border-strong);border-radius:var(--qb-r-md);display:inline-flex;overflow:hidden}.ws-view-toggle button{padding:var(--qb-sp-2) var(--qb-sp-3);background:var(--qb-surface);color:var(--qb-muted-dark);font-size:var(--qb-text-sm);font-family:var(--qb-font);cursor:pointer;transition:background var(--qb-duration) var(--qb-ease), color var(--qb-duration) var(--qb-ease);border:0}.ws-view-toggle button.active,.ws-view-toggle button[aria-pressed=true]{background:var(--qb-accent);color:#fff}.ws-primary-btn{align-items:center;gap:var(--qb-sp-2);padding:var(--qb-sp-2) var(--qb-sp-4);background:var(--qb-accent);color:#fff;border:1px solid var(--qb-accent);border-radius:var(--qb-r-md);min-height:36px;font-family:var(--qb-font);font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);cursor:pointer;transition:background var(--qb-duration) var(--qb-ease);display:inline-flex}.ws-primary-btn:hover{background:var(--qb-accent-hover)}.ws-create-form{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-5);margin-bottom:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm)}.ws-create-form h3{font-size:16px;font-weight:var(--qb-weight-bold);color:var(--qb-text);margin-bottom:var(--qb-sp-4)}.ws-cancel-btn{align-items:center;gap:var(--qb-sp-2);padding:var(--qb-sp-2) var(--qb-sp-4);background:var(--qb-surface);min-height:36px;color:var(--qb-text);border:1px solid var(--qb-border-strong);border-radius:var(--qb-r-md);font-family:var(--qb-font);font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);cursor:pointer;transition:background var(--qb-duration) var(--qb-ease);display:inline-flex}.ws-cancel-btn:hover{background:var(--qb-surface-hover)}.ws-card-grid{gap:var(--qb-sp-4);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.ws-instance-card{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm);gap:var(--qb-sp-4);transition:box-shadow var(--qb-duration) var(--qb-ease);flex-direction:column;display:flex}.ws-instance-card:hover{box-shadow:var(--qb-shadow-md)}.ws-card-header{justify-content:space-between;align-items:center;gap:var(--qb-sp-4);display:flex}.ws-card-identity,.ws-compact-identity{align-items:center;gap:var(--qb-sp-3);min-width:0;display:flex}.ws-avatar{width:44px;height:44px;color:var(--qb-accent);background:#e8f5f3;border:1px solid #b8ddd9;border-radius:50%;flex:0 0 44px;justify-content:center;align-items:center;display:inline-flex}.ws-avatar--compact{flex-basis:34px;width:34px;height:34px}.ws-avatar img{border-radius:inherit;object-fit:cover;width:100%;height:100%;display:block}.ws-card-name{font-size:16px;font-weight:var(--qb-weight-bold);color:var(--qb-text);display:block}.ws-card-account,.ws-compact-account{margin:var(--qb-sp-1) 0 0;color:var(--qb-muted-dark);font-size:var(--qb-text-sm);line-height:1.35}.ws-card-meta{gap:var(--qb-sp-4) var(--qb-sp-5);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.ws-card-meta div{min-width:0}.ws-card-meta dt{margin-bottom:var(--qb-sp-1);color:var(--qb-muted);font-size:var(--qb-text-xs);line-height:1.25}.ws-card-meta dd{color:var(--qb-text);font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);text-overflow:ellipsis;white-space:nowrap;margin:0;line-height:1.4;overflow:hidden}.ws-card-actions{padding-top:var(--qb-sp-4);border-top:1px solid var(--qb-border);margin-top:auto}.ws-card-actions .qb-instance-controls{gap:var(--qb-sp-2);border:0;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0;display:grid}.ws-card-actions .qb-instance-controls__btn{min-width:0;padding:var(--qb-sp-2) var(--qb-sp-3);white-space:nowrap}.ws-compact-list{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);box-shadow:var(--qb-shadow-sm);overflow:auto hidden}.ws-compact-row{gap:var(--qb-sp-3);min-width:1020px;padding:var(--qb-sp-3) var(--qb-sp-4);font-size:var(--qb-text-sm);border-bottom:1px solid var(--qb-border);transition:background var(--qb-duration) var(--qb-ease);grid-template-columns:minmax(180px,1.2fr) 72px 96px 72px 160px 88px minmax(420px,max-content);align-items:center;display:grid}.ws-compact-row:last-child{border-bottom:none}.ws-compact-row:hover{background:var(--qb-surface-hover)}.ws-compact-name{font-weight:var(--qb-weight-medium);color:var(--qb-text);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.ws-compact-qq{color:var(--qb-muted-dark);font-family:var(--qb-font-mono);font-size:var(--qb-text-xs)}.ws-compact-nickname{max-width:120px;color:var(--qb-text-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ws-compact-node{color:var(--qb-text-secondary)}.ws-compact-date{color:var(--qb-muted);font-size:var(--qb-text-xs)}.ws-compact-actions{justify-self:end}.ws-compact-actions .qb-instance-controls{gap:var(--qb-sp-2);border:0;flex-wrap:nowrap;margin:0;padding:0;display:flex}.ws-compact-actions .qb-instance-controls__btn{min-width:max-content;padding:var(--qb-sp-2) var(--qb-sp-3);white-space:nowrap}.ao-hero{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-6);margin-bottom:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm)}.ao-hero h2{font-size:20px;font-weight:var(--qb-weight-bold);color:var(--qb-text)}.ao-metrics{gap:var(--qb-sp-4);margin-bottom:var(--qb-sp-5);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.ao-link-btn{align-items:center;gap:var(--qb-sp-2);padding:var(--qb-sp-2) var(--qb-sp-4);background:var(--qb-surface);min-height:34px;color:var(--qb-accent);border:1px solid var(--qb-accent-muted);border-radius:var(--qb-r-md);font-family:var(--qb-font);font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);cursor:pointer;transition:background var(--qb-duration) var(--qb-ease);text-decoration:none;display:inline-flex}.ao-link-btn:hover{background:var(--qb-accent-light)}.ao-node-list{gap:var(--qb-sp-3);margin-bottom:var(--qb-sp-5);flex-direction:column;display:flex}.ao-node-card{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm)}.ao-node-header{justify-content:space-between;align-items:center;gap:var(--qb-sp-3);margin-bottom:var(--qb-sp-3);display:flex}.ao-node-name{font-size:16px;font-weight:var(--qb-weight-bold);color:var(--qb-text)}.ao-node-meta{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);gap:var(--qb-sp-3);flex-wrap:wrap;display:flex}.ao-node-metrics{gap:var(--qb-sp-3);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.ao-recent-grid{gap:var(--qb-sp-4);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.ao-recent-card{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-4);box-shadow:var(--qb-shadow-sm)}.ao-recent-header{justify-content:space-between;align-items:center;gap:var(--qb-sp-2);margin-bottom:var(--qb-sp-2);display:flex}.ao-recent-name{font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);color:var(--qb-text)}.ao-recent-meta{font-size:var(--qb-text-xs);color:var(--qb-muted)}.ip-toolbar{align-items:center;gap:var(--qb-sp-3);margin-bottom:var(--qb-sp-4);flex-wrap:wrap;display:flex}.ip-view-toggle{border:1px solid var(--qb-border-strong);border-radius:var(--qb-r-md);display:inline-flex;overflow:hidden}.ip-view-toggle button{padding:var(--qb-sp-2) var(--qb-sp-3);background:var(--qb-surface);color:var(--qb-muted-dark);font-size:var(--qb-text-sm);font-family:var(--qb-font);cursor:pointer;transition:background var(--qb-duration) var(--qb-ease), color var(--qb-duration) var(--qb-ease);border:0}.ip-view-toggle button.active,.ip-view-toggle button[aria-pressed=true]{background:var(--qb-accent);color:#fff}.ip-refresh-btn{justify-content:center;align-items:center;gap:var(--qb-sp-2);padding:var(--qb-sp-2);background:var(--qb-surface);border:1px solid var(--qb-border-strong);border-radius:var(--qb-r-md);min-width:36px;min-height:36px;color:var(--qb-muted-dark);cursor:pointer;transition:background var(--qb-duration) var(--qb-ease);display:inline-flex}.ip-refresh-btn:hover{background:var(--qb-surface-hover)}.ip-primary-btn{align-items:center;gap:var(--qb-sp-2);padding:var(--qb-sp-2) var(--qb-sp-4);background:var(--qb-accent);color:#fff;border:1px solid var(--qb-accent);border-radius:var(--qb-r-md);min-height:36px;font-family:var(--qb-font);font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);cursor:pointer;transition:background var(--qb-duration) var(--qb-ease);display:inline-flex}.ip-primary-btn:hover{background:var(--qb-accent-hover)}.ip-secondary-btn{align-items:center;gap:var(--qb-sp-2);padding:var(--qb-sp-2) var(--qb-sp-4);background:var(--qb-surface);min-height:36px;color:var(--qb-text);border:1px solid var(--qb-border-strong);border-radius:var(--qb-r-md);font-family:var(--qb-font);font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);cursor:pointer;transition:background var(--qb-duration) var(--qb-ease);display:inline-flex}.ip-secondary-btn:hover{background:var(--qb-surface-hover)}.ip-create-form{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-5);margin-bottom:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm)}.ip-create-form h3{font-size:16px;font-weight:var(--qb-weight-bold);color:var(--qb-text);margin-bottom:var(--qb-sp-4)}.ip-cancel-btn{align-items:center;gap:var(--qb-sp-2);padding:var(--qb-sp-2) var(--qb-sp-4);background:var(--qb-surface);min-height:36px;color:var(--qb-text-secondary);border:1px solid var(--qb-border-strong);border-radius:var(--qb-r-md);font-family:var(--qb-font);font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);cursor:pointer;transition:background var(--qb-duration) var(--qb-ease);display:inline-flex}.ip-cancel-btn:hover{background:var(--qb-surface-hover)}.ip-filters{align-items:center;gap:var(--qb-sp-3);margin-bottom:var(--qb-sp-4);flex-wrap:wrap;display:flex}.ip-search{flex:1;min-width:200px;max-width:320px;position:relative}.ip-search input{width:100%;padding:var(--qb-sp-2) var(--qb-sp-3);padding-right:var(--qb-sp-8);font-family:var(--qb-font);font-size:var(--qb-text-sm);border:1px solid var(--qb-border-strong);border-radius:var(--qb-r-md);background:var(--qb-surface);color:var(--qb-text);min-height:36px;transition:border-color var(--qb-duration) var(--qb-ease)}.ip-search input:focus{border-color:var(--qb-accent);box-shadow:0 0 0 3px var(--qb-accent-light);outline:none}.ip-search-clear{right:var(--qb-sp-2);width:24px;height:24px;color:var(--qb-muted);cursor:pointer;border-radius:var(--qb-r-sm);transition:color var(--qb-duration) var(--qb-ease);background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.ip-search-clear:hover{color:var(--qb-text)}.ip-status-filter{align-items:center;gap:var(--qb-sp-1);padding:var(--qb-sp-1) var(--qb-sp-3);font-size:var(--qb-text-sm);color:var(--qb-muted-dark);border:1px solid var(--qb-border-strong);border-radius:var(--qb-r-full);background:var(--qb-surface);cursor:pointer;transition:background var(--qb-duration) var(--qb-ease), border-color var(--qb-duration) var(--qb-ease);display:inline-flex}.ip-status-filter:hover{background:var(--qb-surface-hover)}.ip-status-filter.active{background:var(--qb-accent-light);border-color:var(--qb-accent-muted);color:var(--qb-accent)}.ip-filter-count{font-size:var(--qb-text-xs);color:var(--qb-muted);font-weight:var(--qb-weight-medium)}.ip-table-wrap{-webkit-overflow-scrolling:touch;background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);box-shadow:var(--qb-shadow-sm);overflow-x:auto}.ip-table{border-collapse:collapse;width:100%;min-width:1120px;font-size:var(--qb-text-sm)}.ip-table th,.ip-table td{padding:var(--qb-sp-3) var(--qb-sp-4);text-align:left;vertical-align:middle;border-bottom:1px solid var(--qb-border)}.ip-table th{font-weight:var(--qb-weight-medium);color:var(--qb-muted-dark);background:var(--qb-canvas);white-space:nowrap}.ip-table tbody tr{transition:background var(--qb-duration) var(--qb-ease)}.ip-table tbody tr:hover{background:var(--qb-surface-hover)}.ip-table tbody tr:last-child td{border-bottom:none}.ip-name-link{color:var(--qb-accent);font-weight:var(--qb-weight-medium);transition:color var(--qb-duration) var(--qb-ease);text-decoration:none;display:block}.ip-name-link:hover{color:var(--qb-accent-hover);text-decoration:underline}.ip-qq-cell{font-family:var(--qb-font-mono);font-size:var(--qb-text-xs);color:var(--qb-muted-dark)}.ip-date-cell{font-size:var(--qb-text-xs);color:var(--qb-muted);white-space:nowrap}.ip-table-identity,.ip-card-identity{align-items:center;gap:var(--qb-sp-3);min-width:0;display:flex}.ip-avatar{width:44px;height:44px;color:var(--qb-accent);background:#e8f5f3;border:1px solid #b8ddd9;border-radius:50%;flex:0 0 44px;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.ip-avatar--compact{flex-basis:34px;width:34px;height:34px}.ip-avatar img{object-fit:cover;width:100%;height:100%;display:block}.ip-table-account,.ip-card-account{margin-top:var(--qb-sp-1);color:var(--qb-muted-dark);font-size:var(--qb-text-xs);text-overflow:ellipsis;white-space:nowrap;line-height:1.3;display:block;overflow:hidden}.ip-table-actions .qb-instance-controls{gap:var(--qb-sp-2);border:0;flex-wrap:nowrap;margin:0;padding:0;display:flex}.ip-table-actions .qb-instance-controls__btn{min-width:max-content;padding:var(--qb-sp-2) var(--qb-sp-3);white-space:nowrap}.ip-card-grid{gap:var(--qb-sp-4);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.ip-instance-card{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm);gap:var(--qb-sp-4);transition:box-shadow var(--qb-duration) var(--qb-ease);flex-direction:column;display:flex}.ip-instance-card:hover{box-shadow:var(--qb-shadow-md)}.ip-card-header{justify-content:space-between;align-items:center;gap:var(--qb-sp-4);display:flex}.ip-card-name{font-size:16px;font-weight:var(--qb-weight-bold);color:var(--qb-text);display:block}.ip-card-meta{gap:var(--qb-sp-4) var(--qb-sp-5);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.ip-card-meta div{min-width:0}.ip-card-meta dt{margin-bottom:var(--qb-sp-1);color:var(--qb-muted);font-size:var(--qb-text-xs);line-height:1.25}.ip-card-meta dd{color:var(--qb-text);font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);text-overflow:ellipsis;white-space:nowrap;margin:0;line-height:1.4;overflow:hidden}.ip-card-actions{padding-top:var(--qb-sp-4);border-top:1px solid var(--qb-border);margin-top:auto}.ip-card-actions .qb-instance-controls{gap:var(--qb-sp-2);border:0;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0;display:grid}.ip-card-actions .qb-instance-controls__btn{min-width:0;padding:var(--qb-sp-2) var(--qb-sp-3);white-space:nowrap}.admin-users-page{gap:var(--qb-sp-5);display:grid}.au-primary-btn,.au-create-actions button,.au-actions button{justify-content:center;align-items:center;gap:var(--qb-sp-2);border:1px solid var(--qb-border-strong);border-radius:var(--qb-r-md);min-height:36px;padding:var(--qb-sp-2) var(--qb-sp-3);background:var(--qb-surface);color:var(--qb-text-secondary);font:inherit;font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);cursor:pointer;display:inline-flex}.au-primary-btn,.au-create-actions button[type=submit]{border-color:var(--qb-accent);background:var(--qb-accent);color:#fff}.au-primary-btn:hover,.au-create-actions button[type=submit]:hover{border-color:var(--qb-accent-hover);background:var(--qb-accent-hover)}.au-actions button:hover{background:var(--qb-surface-hover)}.au-actions .au-danger{color:var(--qb-danger);border-color:#f2c4c4}.au-actions .au-danger:hover{background:var(--qb-danger-bg)}.au-primary-btn:disabled,.au-create-actions button:disabled,.au-actions button:disabled{opacity:.55;cursor:not-allowed}.au-create-form{gap:var(--qb-sp-4);padding:var(--qb-sp-5);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);background:var(--qb-surface);box-shadow:var(--qb-shadow-sm);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.au-create-form label{gap:var(--qb-sp-2);color:var(--qb-text-secondary);font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);display:grid}.au-create-form input:not([type=checkbox]){border:1px solid var(--qb-border-strong);border-radius:var(--qb-r-md);min-width:0;min-height:40px;padding:0 var(--qb-sp-3);color:var(--qb-text);background:var(--qb-surface);font:inherit}.au-create-form input:focus{outline:2px solid var(--qb-accent-muted);outline-offset:1px;border-color:var(--qb-accent)}.au-create-form .au-admin-check{align-items:center;gap:var(--qb-sp-2);align-self:end;min-height:40px;display:flex}.au-create-actions{justify-content:flex-end;align-items:end;gap:var(--qb-sp-2);grid-column:1/-1;display:flex}.au-table-wrap{border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);background:var(--qb-surface);box-shadow:var(--qb-shadow-sm);overflow-x:auto}.au-table{border-collapse:collapse;width:100%;min-width:820px;font-size:var(--qb-text-sm)}.au-table th,.au-table td{padding:var(--qb-sp-3) var(--qb-sp-4);border-bottom:1px solid var(--qb-border);text-align:left;vertical-align:middle}.au-table th{color:var(--qb-muted-dark);font-weight:var(--qb-weight-medium);background:var(--qb-canvas);white-space:nowrap}.au-table tbody tr:hover{background:var(--qb-surface-hover)}.au-table tbody tr:last-child td{border-bottom:0}.au-identity{align-items:center;gap:var(--qb-sp-3);min-width:0;display:flex}.au-identity span{background:var(--qb-accent-light);width:34px;height:34px;color:var(--qb-accent);font-weight:var(--qb-weight-bold);border-radius:50%;flex:0 0 34px;place-items:center;display:inline-grid}.au-identity strong{text-overflow:ellipsis;white-space:nowrap;color:var(--qb-text);overflow:hidden}.au-role,.au-status{align-items:center;gap:var(--qb-sp-1);border-radius:var(--qb-r-full);padding:3px var(--qb-sp-2);font-size:var(--qb-text-xs);font-weight:var(--qb-weight-medium);background:var(--qb-surface-hover);color:var(--qb-muted-dark);white-space:nowrap;display:inline-flex}.au-role--admin{background:var(--qb-info-bg);color:var(--qb-info)}.au-status--active{background:var(--qb-ok-bg);color:var(--qb-ok)}.au-status--disabled{background:var(--qb-danger-bg);color:var(--qb-danger)}.au-actions{gap:var(--qb-sp-2);flex-wrap:nowrap;display:flex}.qb-node-grid{gap:var(--qb-sp-4);grid-template-columns:repeat(auto-fill,minmax(240px,1fr));display:grid}.qb-node-metrics{gap:var(--qb-sp-3);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}@media (width<=900px){.qb-shell{grid-template-columns:1fr;grid-template-rows:var(--qb-topbar-h) 1fr;grid-template-areas:"topbar""main"}.qb-shell__mobile-bar{z-index:15;align-items:center;gap:var(--qb-sp-3);padding:0 var(--qb-sp-4);background:var(--qb-surface);border-bottom:1px solid var(--qb-border);grid-area:topbar;display:flex;position:sticky;top:0}.qb-shell__hamburger{border-radius:var(--qb-r-md);width:36px;height:36px;color:var(--qb-text);background:0 0;border:0;place-items:center;padding:0;display:inline-grid}.qb-shell__mobile-bar .qb-shell__brand{color:var(--qb-text);font-size:var(--qb-text-base);font-weight:var(--qb-weight-bold);flex:1;text-decoration:none}.qb-shell__close-drawer{border-radius:var(--qb-r-md);color:#b0bcd0;background:0 0;border:0;place-items:center;width:32px;height:32px;padding:0;display:inline-grid}.qb-sidebar{width:var(--qb-sidebar-w);transition:transform var(--qb-duration) var(--qb-ease);z-index:20;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.qb-sidebar.open{transform:translate(0)}.qb-mobile-backdrop{display:block}.qb-main,.qb-shell__main{padding:var(--qb-sp-4)}.qb-auth-layout{flex-direction:column}.qb-auth-aside{display:none}.qb-page-header{flex-direction:column;align-items:flex-start}.qb-heading-actions{width:100%}.qb-card-grid,.qb-detail-grid,.au-create-form{grid-template-columns:1fr}.au-create-actions{grid-column:auto;justify-content:stretch}.au-create-actions button{flex:1}.qb-detail-hero{flex-direction:column;align-items:flex-start}.qb-event-list li{gap:var(--qb-sp-1);grid-template-columns:1fr}.qb-event-list time{font-size:var(--qb-text-sm)}.qb-home-header{flex-direction:column;align-items:flex-start}.qb-home-main{padding:var(--qb-sp-4) var(--qb-sp-4)}.qb-home-intro h1{font-size:22px}.qb-home-actions{flex-direction:column}.qb-home-flow{grid-template-columns:1fr}.qb-auth-brand{justify-content:center}.qb-auth-points{align-items:center}.qb-section-header{flex-direction:column;align-items:flex-start}.qb-section-header__extra{width:100%}.qb-instance-controls{flex-direction:column}.qb-instance-controls__btn{width:100%}.ws-metrics{grid-template-columns:1fr}.ws-toolbar{flex-direction:column;align-items:stretch}.ws-card-grid{grid-template-columns:1fr}.ws-compact-row{gap:var(--qb-sp-3);grid-template-columns:1fr auto;min-width:0}.ws-compact-identity{grid-row:span 2}.ws-compact-qq,.ws-compact-nickname,.ws-compact-node,.ws-compact-date{display:none}.ws-compact-actions{grid-column:1/-1}.ws-compact-actions .qb-instance-controls{padding-bottom:var(--qb-sp-1);overflow-x:auto}.ws-compact-qq,.ws-compact-node,.ws-compact-date{font-size:var(--qb-text-sm)}.ao-metrics,.ao-recent-grid{grid-template-columns:1fr}.ao-node-header{align-items:flex-start;gap:var(--qb-sp-2);flex-direction:column}.ao-node-metrics{grid-template-columns:1fr 1fr}.ip-toolbar,.ip-filters{flex-direction:column;align-items:stretch}.ip-search{max-width:none}.ip-card-grid{grid-template-columns:1fr}.ip-table-wrap{overflow-x:auto}.qb-node-grid{grid-template-columns:1fr}.qb-node-metrics{grid-template-columns:1fr 1fr}.qb-metric-card__value{font-size:22px}}@media (width<=1100px) and (width>=901px){.ws-compact-row{gap:var(--qb-sp-3);grid-template-columns:1fr auto;min-width:0}.ws-compact-identity{grid-row:span 2}.ws-compact-qq,.ws-compact-nickname,.ws-compact-node,.ws-compact-date{display:none}.ws-compact-actions{grid-column:1/-1}}@media (width>=1024px){.qb-auth-aside{background:var(--qb-ink);color:#d0d8e8;width:400px;padding:var(--qb-sp-8);text-align:center;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;display:flex}.qb-auth-aside h2{color:#fff;font-size:24px;font-weight:var(--qb-weight-bold);margin-bottom:var(--qb-sp-3)}.qb-auth-aside p{font-size:var(--qb-text-base);color:#a0aec0;max-width:300px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.qb-loading:before{border-top-color:var(--qb-accent);animation:none}}@media print{.qb-sidebar,.qb-topbar,.qb-mobile-backdrop,.qb-qr-backdrop{display:none!important}.qb-shell{grid-template-columns:1fr;grid-template-areas:"main"}.qb-main{padding:0}.qb-card,.qb-table-wrap{box-shadow:none;border:1px solid #ccc}}.ap-btn,.up-btn,.pg-btn,.ps-btn{justify-content:center;align-items:center;gap:var(--qb-sp-2);padding:var(--qb-sp-2) var(--qb-sp-4);min-height:34px;font-family:var(--qb-font);font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);border-radius:var(--qb-r-md);cursor:pointer;white-space:nowrap;transition:background var(--qb-duration) var(--qb-ease), border-color var(--qb-duration) var(--qb-ease);border:1px solid #0000;text-decoration:none;display:inline-flex}.ap-btn--primary,.up-btn--primary,.pg-btn--primary,.ps-btn--primary{background:var(--qb-accent);color:#fff;border-color:var(--qb-accent)}.ap-btn--primary:hover,.up-btn--primary:hover,.pg-btn--primary:hover,.ps-btn--primary:hover{background:var(--qb-accent-hover)}.ap-btn--secondary,.up-btn--secondary,.pg-btn--secondary,.ps-btn--secondary{background:var(--qb-surface);color:var(--qb-text);border-color:var(--qb-border-strong)}.ap-btn--secondary:hover,.up-btn--secondary:hover,.pg-btn--secondary:hover,.ps-btn--secondary:hover{background:var(--qb-surface-hover)}.ap-btn--danger,.up-btn--danger,.pg-btn--danger,.ps-btn--danger{background:var(--qb-danger);color:#fff;border-color:var(--qb-danger)}.ap-btn--danger:hover,.up-btn--danger:hover,.pg-btn--danger:hover,.ps-btn--danger:hover{background:#b71c1c}.ap-btn:disabled,.up-btn:disabled,.pg-btn:disabled,.ps-btn:disabled{opacity:.55;cursor:not-allowed}.ap-toolbar{align-items:center;gap:var(--qb-sp-2);flex-wrap:wrap;display:flex}.ap-form{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-5);margin-bottom:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm)}.ap-form h3{font-size:16px;font-weight:var(--qb-weight-bold);color:var(--qb-text);margin-bottom:var(--qb-sp-4)}.ap-form-grid{gap:var(--qb-sp-4);margin-bottom:var(--qb-sp-4);grid-template-columns:repeat(auto-fill,minmax(240px,1fr));display:grid}.ap-field{gap:var(--qb-sp-1);flex-direction:column;display:flex}.ap-field--full{grid-column:1/-1}.ap-field-label{font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);color:var(--qb-text)}.ap-input,.ap-select,.ap-textarea{padding:var(--qb-sp-2) var(--qb-sp-3);font-family:var(--qb-font);font-size:var(--qb-text-base);color:var(--qb-text);background:var(--qb-surface);border:1px solid var(--qb-border-strong);border-radius:var(--qb-r-md);min-height:38px;transition:border-color var(--qb-duration) var(--qb-ease)}.ap-textarea{resize:vertical;min-height:60px}.ap-input:focus,.ap-select:focus,.ap-textarea:focus{border-color:var(--qb-accent);box-shadow:0 0 0 3px var(--qb-accent-light);outline:none}.ap-form-actions{gap:var(--qb-sp-2);display:flex}.ap-plugin-grid{gap:var(--qb-sp-4);margin-bottom:var(--qb-sp-6);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.ap-plugin-card{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm);gap:var(--qb-sp-3);transition:box-shadow var(--qb-duration) var(--qb-ease);flex-direction:column;display:flex}.ap-plugin-card:hover{box-shadow:var(--qb-shadow-md)}.ap-plugin-card__header{align-items:center;gap:var(--qb-sp-3);display:flex}.ap-plugin-card__icon{border-radius:var(--qb-r-md);background:var(--qb-accent-light);width:40px;height:40px;color:var(--qb-accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.ap-plugin-card__info{flex:1;min-width:0}.ap-plugin-card__name{font-size:16px;font-weight:var(--qb-weight-bold);color:var(--qb-text);margin:0}.ap-plugin-card__version{font-size:var(--qb-text-xs);color:var(--qb-muted)}.ap-plugin-card__desc{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.5;display:-webkit-box;overflow:hidden}.ap-plugin-card__meta{gap:var(--qb-sp-3);font-size:var(--qb-text-xs);color:var(--qb-muted);padding-top:var(--qb-sp-3);border-top:1px solid var(--qb-border);margin-top:auto;display:flex}.ap-plugin-card__meta span{align-items:center;gap:var(--qb-sp-1);display:inline-flex}.ap-table-wrap{-webkit-overflow-scrolling:touch;background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);box-shadow:var(--qb-shadow-sm);overflow-x:auto}.ap-table{border-collapse:collapse;width:100%;min-width:560px;font-size:var(--qb-text-sm)}.ap-table th,.ap-table td{padding:var(--qb-sp-3) var(--qb-sp-4);text-align:left;vertical-align:middle;border-bottom:1px solid var(--qb-border)}.ap-table th{font-weight:var(--qb-weight-medium);color:var(--qb-muted-dark);background:var(--qb-canvas);z-index:1;white-space:nowrap;position:sticky;top:0}.ap-table tbody tr{transition:background var(--qb-duration) var(--qb-ease)}.ap-table tbody tr:hover{background:var(--qb-surface-hover)}.ap-table tbody tr:last-child td{border-bottom:none}.ap-audit-plugin{font-weight:var(--qb-weight-medium);color:var(--qb-text)}.ap-audit-action{border-radius:var(--qb-r-full);font-size:var(--qb-text-xs);font-weight:var(--qb-weight-medium);padding:1px 8px;display:inline-block}.ap-audit-action--install{background:var(--qb-ok-bg);color:var(--qb-ok)}.ap-audit-action--uninstall{background:var(--qb-danger-bg);color:var(--qb-danger)}.ap-audit-tenant code{font-family:var(--qb-font-mono);font-size:var(--qb-text-xs);color:var(--qb-muted-dark)}.ap-audit-time{color:var(--qb-muted-dark);font-size:var(--qb-text-xs);white-space:nowrap}.up-plugin-grid{gap:var(--qb-sp-4);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.up-plugin-card{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm);gap:var(--qb-sp-3);transition:box-shadow var(--qb-duration) var(--qb-ease);flex-direction:column;display:flex}.up-plugin-card:hover{box-shadow:var(--qb-shadow-md)}.up-plugin-card__header{align-items:center;gap:var(--qb-sp-3);flex-wrap:wrap;display:flex}.up-plugin-card__icon{border-radius:var(--qb-r-md);background:var(--qb-accent-light);width:40px;height:40px;color:var(--qb-accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.up-plugin-card__info{flex:1;min-width:0}.up-plugin-card__name{font-size:16px;font-weight:var(--qb-weight-bold);color:var(--qb-text);margin:0}.up-plugin-card__version{font-size:var(--qb-text-xs);color:var(--qb-muted)}.up-plugin-card__status{border-radius:var(--qb-r-full);font-size:var(--qb-text-xs);font-weight:var(--qb-weight-medium);white-space:nowrap;padding:2px 10px;display:inline-block}.up-plugin-card__status--enabled{background:var(--qb-ok-bg);color:var(--qb-ok)}.up-plugin-card__status--disabled{background:var(--qb-canvas);color:var(--qb-muted)}.up-plugin-card__desc{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);line-height:1.5}.up-plugin-card__meta{gap:var(--qb-sp-1);font-size:var(--qb-text-xs);color:var(--qb-muted);flex-direction:column;display:flex}.up-plugin-card__actions{gap:var(--qb-sp-2);padding-top:var(--qb-sp-3);border-top:1px solid var(--qb-border);flex-wrap:wrap;margin-top:auto;display:flex}.pg-back-link{align-items:center;gap:var(--qb-sp-2);font-size:var(--qb-text-sm);color:var(--qb-muted-dark);margin-bottom:var(--qb-sp-4);transition:color var(--qb-duration) var(--qb-ease);text-decoration:none;display:inline-flex}.pg-back-link:hover{color:var(--qb-accent)}.pg-batch-bar{align-items:center;gap:var(--qb-sp-2);flex-wrap:wrap;display:flex}.pg-batch-count{font-size:var(--qb-text-sm);color:var(--qb-accent);font-weight:var(--qb-weight-medium);margin-right:var(--qb-sp-2)}.pg-table-wrap{-webkit-overflow-scrolling:touch;background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);box-shadow:var(--qb-shadow-sm);overflow-x:auto}.pg-table{border-collapse:collapse;width:100%;min-width:760px;font-size:var(--qb-text-sm)}.pg-table th,.pg-table td{padding:var(--qb-sp-3) var(--qb-sp-4);text-align:left;vertical-align:middle;border-bottom:1px solid var(--qb-border)}.pg-table th{font-weight:var(--qb-weight-medium);color:var(--qb-muted-dark);background:var(--qb-canvas);z-index:1;white-space:nowrap;position:sticky;top:0}.pg-table tbody tr{transition:background var(--qb-duration) var(--qb-ease)}.pg-table tbody tr:hover{background:var(--qb-surface-hover)}.pg-table tbody tr:last-child td{border-bottom:none}.pg-row--selected{background:var(--qb-accent-light)!important}.pg-th-check,.pg-td-check{text-align:center;width:40px}.pg-check-btn{color:var(--qb-muted-dark);cursor:pointer;transition:color var(--qb-duration) var(--qb-ease);background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.pg-check-btn:hover{color:var(--qb-accent)}.pg-group-name-cell{align-items:center;gap:var(--qb-sp-2);display:flex}.pg-group-icon{color:var(--qb-muted);flex-shrink:0}.pg-group-name span{font-weight:var(--qb-weight-medium);color:var(--qb-text)}.pg-platform-id code{font-family:var(--qb-font-mono);font-size:var(--qb-text-xs);color:var(--qb-muted-dark)}.pg-member-count{font-family:var(--qb-font-mono);font-size:var(--qb-text-xs);color:var(--qb-text-secondary)}.pg-bot-role{color:var(--qb-muted-dark)}.pg-sync-time{font-size:var(--qb-text-xs);color:var(--qb-muted-dark);white-space:nowrap}.pg-toggle{align-items:center;gap:var(--qb-sp-2);cursor:pointer;font-family:var(--qb-font);transition:opacity var(--qb-duration) var(--qb-ease);background:0 0;border:0;padding:0;display:inline-flex}.pg-toggle:disabled{opacity:.5;cursor:not-allowed}.pg-toggle__track{background:var(--qb-border-strong);width:36px;height:20px;transition:background var(--qb-duration) var(--qb-ease);border-radius:10px;display:inline-block;position:relative}.pg-toggle--on .pg-toggle__track{background:var(--qb-accent)}.pg-toggle__thumb{width:16px;height:16px;transition:transform var(--qb-duration) var(--qb-ease);background:#fff;border-radius:50%;display:block;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000026}.pg-toggle--on .pg-toggle__thumb{transform:translate(16px)}.pg-toggle__label{font-size:var(--qb-text-xs);color:var(--qb-muted-dark);min-width:24px}.pg-sync-bar{align-items:center;gap:var(--qb-sp-3);margin-bottom:var(--qb-sp-4);padding:var(--qb-sp-3) var(--qb-sp-4);background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-md);flex-wrap:wrap;display:flex}.pg-sync-label{align-items:center;gap:var(--qb-sp-2);font-size:var(--qb-text-sm);color:var(--qb-text);display:inline-flex}.pg-sync-select{padding:var(--qb-sp-1) var(--qb-sp-2);border:1px solid var(--qb-border);border-radius:var(--qb-r-sm);background:var(--qb-surface);color:var(--qb-text);font-size:var(--qb-text-sm);font-family:var(--qb-font);min-width:180px}.pg-sync-result{font-size:var(--qb-text-sm);color:var(--qb-accent);line-height:1.4}.pg-sync-hint{font-size:var(--qb-text-sm);color:var(--qb-muted-dark)}@keyframes pg-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.pg-spin{animation:1s linear infinite pg-spin}.ps-back-link{align-items:center;gap:var(--qb-sp-2);font-size:var(--qb-text-sm);color:var(--qb-muted-dark);margin-bottom:var(--qb-sp-4);transition:color var(--qb-duration) var(--qb-ease);text-decoration:none;display:inline-flex}.ps-back-link:hover{color:var(--qb-accent)}.ps-info-card{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-5);margin-bottom:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm)}.ps-info-header{align-items:center;gap:var(--qb-sp-3);margin-bottom:var(--qb-sp-3);display:flex}.ps-info-icon{color:var(--qb-accent);flex-shrink:0}.ps-info-header h3{font-size:18px;font-weight:var(--qb-weight-bold);color:var(--qb-text);margin:0}.ps-info-version{font-size:var(--qb-text-sm);color:var(--qb-muted-dark)}.ps-info-desc{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);margin-bottom:var(--qb-sp-4);line-height:1.5}.ps-info-meta{gap:var(--qb-sp-6);flex-wrap:wrap;display:flex}.ps-info-meta-item{gap:var(--qb-sp-1);flex-direction:column;display:flex}.ps-info-meta-label{font-size:var(--qb-text-xs);color:var(--qb-muted)}.ps-info-meta-value{font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);color:var(--qb-text)}.ps-status{border-radius:var(--qb-r-full);font-size:var(--qb-text-xs);padding:1px 8px;display:inline-block}.ps-status--installed,.ps-status--active{background:var(--qb-ok-bg);color:var(--qb-ok)}.ps-status--disabled{background:var(--qb-canvas);color:var(--qb-muted)}.ps-status--error{background:var(--qb-danger-bg);color:var(--qb-danger)}.ps-config-section{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-5);margin-bottom:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm)}.ps-section-title{font-size:16px;font-weight:var(--qb-weight-bold);color:var(--qb-text);margin-bottom:var(--qb-sp-4)}.ps-section-desc{font-size:var(--qb-text-sm);color:var(--qb-muted-dark);margin-bottom:var(--qb-sp-4)}.ps-field{gap:var(--qb-sp-1);margin-bottom:var(--qb-sp-4);flex-direction:column;display:flex}.ps-field-label{font-size:var(--qb-text-sm);font-weight:var(--qb-weight-medium);color:var(--qb-text)}.ps-field-hint{font-size:var(--qb-text-xs);color:var(--qb-muted)}.ps-textarea{padding:var(--qb-sp-2) var(--qb-sp-3);font-family:var(--qb-font);font-size:var(--qb-text-base);color:var(--qb-text);background:var(--qb-surface);border:1px solid var(--qb-border-strong);border-radius:var(--qb-r-md);resize:vertical;min-height:60px;transition:border-color var(--qb-duration) var(--qb-ease)}.ps-textarea:focus{border-color:var(--qb-accent);box-shadow:0 0 0 3px var(--qb-accent-light);outline:none}.ps-commands-section{background:var(--qb-surface);border:1px solid var(--qb-border);border-radius:var(--qb-r-lg);padding:var(--qb-sp-5);box-shadow:var(--qb-shadow-sm)}.ps-table-wrap{-webkit-overflow-scrolling:touch;border:1px solid var(--qb-border);border-radius:var(--qb-r-md);overflow-x:auto}.ps-table{border-collapse:collapse;width:100%;min-width:480px;font-size:var(--qb-text-sm)}.ps-table th,.ps-table td{padding:var(--qb-sp-3) var(--qb-sp-4);text-align:left;vertical-align:middle;border-bottom:1px solid var(--qb-border)}.ps-table th{font-weight:var(--qb-weight-medium);color:var(--qb-muted-dark);background:var(--qb-canvas);z-index:1;white-space:nowrap;position:sticky;top:0}.ps-table tbody tr{transition:background var(--qb-duration) var(--qb-ease)}.ps-table tbody tr:hover{background:var(--qb-surface-hover)}.ps-table tbody tr:last-child td{border-bottom:none}.ps-cmd-name code{font-family:var(--qb-font-mono);font-size:var(--qb-text-sm);color:var(--qb-accent);font-weight:var(--qb-weight-medium)}.ps-cmd-desc{color:var(--qb-muted-dark)}.ps-role{border-radius:var(--qb-r-full);font-size:var(--qb-text-xs);font-weight:var(--qb-weight-medium);padding:1px 8px;display:inline-block}.ps-role--owner{background:var(--qb-danger-bg);color:var(--qb-danger)}.ps-role--admin{background:var(--qb-warn-bg);color:var(--qb-warn)}.ps-role--member{background:var(--qb-ok-bg);color:var(--qb-ok)}.ps-role--guest{background:var(--qb-canvas);color:var(--qb-muted)}@media (width<=768px){.ap-form-grid,.ap-plugin-grid,.up-plugin-grid{grid-template-columns:1fr}.ap-toolbar,.pg-batch-bar{width:100%}.ps-info-meta{gap:var(--qb-sp-3);flex-direction:column}}
