/* 550C 量子计算与开发：共享样式 */
.q-win{
  position:fixed;left:72px;top:46px;width:min(1020px,95vw);height:min(680px,92vh);
  background:var(--win-bg,#0B0F0E);border:1px solid #6f8fa0;
  box-shadow:0 18px 60px rgba(0,0,0,.88),0 0 26px rgba(140,253,255,.10);
  z-index:2100;display:none;flex-direction:column;overflow:hidden;
  min-width:640px;min-height:420px;text-transform:none;letter-spacing:normal;
  color:var(--win-txt,#CFE3DA);font-family:Consolas,Menlo,monospace;
}
/* 与 SYS-MGMT 等原生窗口共用 .maximized / .collapsed 行为 */
.q-win.maximized{position:fixed!important;inset:0!important;width:auto!important;height:auto!important;transform:none!important;}
.q-win.maximized .rsz{display:none;}
.q-win.collapsed{height:auto!important;}
.q-win.collapsed .q-body{display:none;}
.q-win.collapsed .rsz{display:none;}
/* 八向缩放手柄（initWinChrome 注入 .rsz-*） */
.q-win .rsz{position:absolute;z-index:9;}
.q-win .rsz-n{top:-3px;left:12px;right:12px;height:3px;cursor:n-resize;}
.q-win .rsz-s{bottom:-3px;left:12px;right:12px;height:3px;cursor:s-resize;}
.q-win .rsz-e{top:12px;bottom:12px;right:-3px;width:3px;cursor:e-resize;}
.q-win .rsz-w{top:12px;bottom:12px;left:-3px;width:3px;cursor:w-resize;}
.q-win .rsz-ne{top:-3px;right:-3px;width:8px;height:8px;cursor:ne-resize;}
.q-win .rsz-nw{top:-3px;left:-3px;width:8px;height:8px;cursor:nw-resize;}
.q-win .rsz-se{bottom:-3px;right:-3px;width:8px;height:8px;cursor:se-resize;}
.q-win .rsz-sw{bottom:-3px;left:-3px;width:8px;height:8px;cursor:sw-resize;}
.q-head-right{margin-left:auto;display:flex;align-items:center;gap:8px;}
.q-head-right .winbtns{margin-left:0;padding-left:0;}
.q-tag{font-size:9.5px;color:#829d94;letter-spacing:.1em;}
.q-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:#070b0a;}

/* ---------- 通用控件 ---------- */
.q-toolbar{flex:none;display:flex;align-items:center;flex-wrap:wrap;gap:7px;padding:7px 10px;
  border-bottom:1px solid rgba(122,139,122,.22);background:#0E1211;}
.q-toolbar .q-sp{flex:1;}
.q-btn{background:#0E1211;border:1px solid rgba(122,139,122,.36);color:#A9C4A9;
  font:11.5px Consolas,monospace;padding:4px 10px;cursor:pointer;white-space:nowrap;}
.q-btn:hover{background:rgba(122,139,122,.22);color:#E8F5EE;border-color:#8CFDFF;}
.q-btn:active{transform:translateY(1px);}
.q-btn.primary{background:#1d3a38;border-color:#3f8f8a;color:#D6FFFA;}
.q-btn.primary:hover{background:#26504c;border-color:#8CFDFF;}
.q-btn.warn{border-color:#7a4a3a;color:#E8A020;}
.q-btn.warn:hover{border-color:#E8A020;color:#ffd27a;}
.q-btn:disabled{opacity:.42;cursor:not-allowed;}
.q-sel,.q-input{background:#080c0b;border:1px solid rgba(122,139,122,.36);color:#A9C4A9;
  font:11.5px Consolas,monospace;padding:3px 6px;outline:none;}
.q-sel:focus,.q-input:focus{border-color:#8CFDFF;}
.q-input{width:86px;}
.q-label{font-size:10.5px;color:#7d9a8f;letter-spacing:.08em;}
.q-hint{font-size:10px;color:#5d7a70;line-height:1.55;}
.q-sep{width:1px;height:18px;background:rgba(122,139,122,.28);}
.q-chip{display:inline-block;border:1px solid rgba(122,139,122,.3);padding:1px 6px;font-size:10px;
  color:#9DB8AE;background:#0a0f0e;}
.q-chip.violet{color:#B08CFF;border-color:rgba(176,140,255,.4);}
.q-chip.amber{color:#E8A020;border-color:rgba(232,160,32,.4);}
.q-chip.ok{color:#A9C4A9;border-color:rgba(169,196,169,.45);}
.q-chip.bad{color:#ff6b6b;border-color:rgba(255,107,107,.45);}

.q-cols{flex:1;min-height:0;display:flex;}
.q-col{min-width:0;min-height:0;display:flex;flex-direction:column;overflow:auto;}
.q-col.side{flex:none;width:236px;border-right:1px solid rgba(122,139,122,.22);background:#0a0e0d;}
.q-col.side.right{border-right:0;border-left:1px solid rgba(122,139,122,.22);width:268px;}
.q-col.main{flex:1;background:#050807;}
.q-pad{padding:10px 12px;}
.q-sect{font-size:10px;color:#7d9a8f;letter-spacing:.14em;padding:8px 12px 4px;
  border-bottom:1px solid rgba(122,139,122,.14);}
.q-sect:first-child{padding-top:10px;}
.q-panel{border:1px solid rgba(122,139,122,.22);background:#080c0b;margin:8px 10px;padding:8px 10px;}
.q-panel h4{margin:0 0 6px;font-size:10px;font-weight:normal;color:#8fa9a0;letter-spacing:.12em;}
.q-kv{display:flex;justify-content:space-between;gap:8px;font-size:11px;padding:2px 0;color:#9DB8AE;}
.q-kv b{font-weight:normal;color:#CFE3DA;}
.q-kv .ok{color:#A9C4A9;}
.q-kv .bad{color:#ff6b6b;}
.q-kv .amber{color:#E8A020;}
.q-metric{display:flex;align-items:baseline;gap:6px;padding:3px 0;font-size:11px;color:#7d9a8f;}
.q-metric b{font-size:15px;font-weight:normal;color:#8CFDFF;}
.q-metric span{font-size:10px;}

.q-code{flex:1;min-height:0;margin:0;padding:8px 10px;overflow:auto;background:#040706;
  color:#9fc0b5;font:11px/1.6 Consolas,Menlo,monospace;white-space:pre;}
.q-code .k{color:#6FD3FF;}
.q-code .c{color:#54726A;}
.q-code .g{color:#B08CFF;}
.q-code .a{color:#E8C06A;}

.q-table{width:100%;border-collapse:collapse;font-size:11px;}
.q-table th{font-weight:normal;text-align:left;color:#6f8a80;font-size:9.5px;letter-spacing:.1em;
  border-bottom:1px solid rgba(122,139,122,.24);padding:3px 6px;}
.q-table td{padding:2px 6px;color:#B8D8C8;border-bottom:1px solid rgba(122,139,122,.08);}
.q-table tr:hover td{background:rgba(140,253,255,.05);}
.q-table .am{color:#E8C06A;}
.q-table .pr{color:#8CFDFF;}
.q-table .ph{color:#B08CFF;}

.q-canvas{display:block;width:100%;background:#050807;border:1px solid rgba(122,139,122,.2);}
.q-scroll{overflow:auto;}

/* ---------- 套件首页 ---------- */
.q-suite-head{padding:18px 22px 8px;}
.q-suite-title{font-size:17px;letter-spacing:.18em;color:#E8F5EE;}
.q-suite-sub{font-size:11px;color:#6f8a80;margin-top:6px;line-height:1.6;}
.q-suite-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:10px 22px 4px;}
.q-card{display:flex;align-items:center;gap:12px;border:1px solid rgba(122,139,122,.26);
  background:linear-gradient(135deg,#0b1211,#080c0b);padding:12px 14px;cursor:pointer;position:relative;}
.q-card:hover{border-color:#8CFDFF;background:rgba(140,253,255,.055);}
.q-card:active{transform:translateY(1px);}
.q-card-ico{width:38px;height:38px;flex:none;display:flex;align-items:center;justify-content:center;
  border:1px solid rgba(176,140,255,.4);color:#B08CFF;font-size:11px;letter-spacing:.08em;
  background:rgba(176,140,255,.06);}
.q-card-tx{min-width:0;flex:1;}
.q-card-name{font-size:12.5px;color:#E8F5EE;letter-spacing:.08em;}
.q-card-desc{font-size:10.5px;color:#7d9a8f;margin-top:3px;line-height:1.5;}
.q-card-go{font-size:10px;color:#8CFDFF;flex:none;}
.q-suite-foot{padding:12px 22px 16px;font-size:10px;color:#5d7a70;}

/* ---------- Qubit Array Studio ---------- */
.qs-wrap{flex:1;min-height:0;display:flex;}
.qs-palette{flex:none;width:150px;border-right:1px solid rgba(122,139,122,.22);background:#0a0e0d;
  padding:8px;overflow:auto;}
.qs-pal-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px;}
.qs-gate{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  border:1px solid rgba(122,139,122,.35);background:#0c1211;padding:5px 2px;cursor:grab;
  color:#B8D8C8;font-size:12px;user-select:none;touch-action:none;}
.qs-gate:hover{border-color:#8CFDFF;color:#E8F5EE;background:rgba(140,253,255,.07);}
.qs-gate small{font-size:8px;color:#6f8a80;letter-spacing:.06em;}
.qs-gate.multi{grid-column:span 2;flex-direction:row;gap:6px;justify-content:space-between;padding:4px 8px;}
.qs-stage{flex:1;min-width:0;display:flex;flex-direction:column;background:#050807;overflow:auto;}
.qs-canvas-wrap{padding:10px;overflow-x:auto;}
#qsCanvas{cursor:pointer;image-rendering:auto;}
.qs-res{flex:1;min-height:196px;border-top:1px solid rgba(122,139,122,.22);display:flex;
  background:#070b0a;min-height:0;}
.qs-res-col{min-width:0;min-height:0;display:flex;flex-direction:column;}
.qs-res-col.left{flex:1.05;border-right:1px solid rgba(122,139,122,.18);}
.qs-res-col.right{width:320px;flex:none;}
#qsProb{flex:1;min-height:118px;}
#qsDeco{flex:1;min-height:118px;}
.qs-info{font-size:10px;color:#6f8a80;padding:4px 10px;}
.qs-state{flex:1;min-height:0;overflow:auto;}
.qs-badge{font-size:9.5px;letter-spacing:.1em;padding:1px 5px;border:1px solid rgba(176,140,255,.4);
  color:#B08CFF;margin-left:6px;}

/* ---------- Surface Code Compiler ---------- */
.qf-wrap{flex:1;min-height:0;display:flex;}
.qf-left{flex:none;width:300px;border-right:1px solid rgba(122,139,122,.22);background:#0a0e0d;
  display:flex;flex-direction:column;overflow:auto;}
.qf-left .q-code{flex:none;height:190px;min-height:160px;max-height:240px;}
.qf-left .q-hint{padding:4px 10px 8px;}
.qf-right{flex:1;min-width:0;display:flex;flex-direction:column;}
.qf-patch-wrap{flex:1;min-height:240px;padding:10px;background:#050807;}
#qfPatch{height:100%;min-height:220px;}
.qf-instr{flex:1;min-height:110px;}
.qf-metrics{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:8px 10px;}
.qf-metric{border:1px solid rgba(122,139,122,.22);padding:6px 8px;background:#080c0b;}
.qf-metric .v{font-size:16px;color:#8CFDFF;}
.qf-metric .l{font-size:9px;color:#6f8a80;letter-spacing:.08em;}
.qf-bar{height:4px;background:rgba(122,139,122,.18);margin-top:5px;}
.qf-bar i{display:block;height:100%;background:#8CFDFF;}
.qf-cycle{font-size:10px;color:#8fa9a0;padding:2px 10px;}
.qf-syndrome{display:flex;gap:4px;flex-wrap:wrap;padding:4px 10px 8px;}
.qf-dot{width:7px;height:7px;border:1px solid rgba(122,139,122,.5);}
.qf-dot.x{background:#E8A020;border-color:#E8A020;}
.qf-dot.z{background:#6FD3FF;border-color:#6FD3FF;}

/* ---------- Quantum Debugger ---------- */
.qb-wrap{flex:1;min-height:0;display:flex;}
.qb-steps{flex:none;width:270px;border-right:1px solid rgba(122,139,122,.22);background:#0a0e0d;
  display:flex;flex-direction:column;}
.qb-list{flex:1;overflow:auto;padding:4px 0;}
.qb-step{display:flex;align-items:center;gap:7px;padding:4px 10px;font-size:11px;color:#9DB8AE;cursor:pointer;}
.qb-step:hover{background:rgba(122,139,122,.12);}
.qb-step.on{background:rgba(140,253,255,.1);color:#E8F5EE;border-left:2px solid #8CFDFF;padding-left:8px;}
.qb-step .idx{color:#5d7a70;width:22px;flex:none;text-align:right;}
.qb-step .brk{width:8px;height:8px;border-radius:50%;border:1px solid #6f8a80;flex:none;}
.qb-step .brk.on{background:#ff6b6b;border-color:#ff6b6b;box-shadow:0 0 5px rgba(255,107,107,.7);}
.qb-step .nm{flex:1;color:#B8D8C8;}
.qb-step .qs{font-size:9px;color:#6f8a80;}
.qb-main{flex:1;min-width:0;display:flex;flex-direction:column;background:#050807;}
.qb-top{flex:none;display:flex;gap:8px;padding:8px 10px;border-bottom:1px solid rgba(122,139,122,.18);}
.qb-state{flex:1;min-height:0;display:flex;}
.qb-amps{flex:1.2;min-width:0;overflow:auto;border-right:1px solid rgba(122,139,122,.18);}
.qb-prob{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden;}
#qbBars{flex:1;min-height:120px;display:block;}
.qb-side{flex:none;width:250px;border-left:1px solid rgba(122,139,122,.22);background:#0a0e0d;
  overflow:auto;padding:6px 0;}
.qb-qcard{border:1px solid rgba(122,139,122,.2);margin:5px 8px;padding:5px 8px;background:#080c0b;}
.qb-qcard .hd{display:flex;align-items:center;gap:6px;font-size:11px;color:#CFE3DA;}
.qb-qcard .hd i{width:6px;height:6px;background:#B08CFF;flex:none;}
.qb-qcard .bloch{font-size:9.5px;color:#6f8a80;margin-top:3px;}
.qb-qcard .ent{font-size:9.5px;color:#8fa9a0;}
.qb-timeline{flex:none;display:flex;align-items:center;gap:8px;padding:6px 10px;
  border-top:1px solid rgba(122,139,122,.18);background:#0e1211;}
.qb-timeline input[type=range]{flex:1;accent-color:#8CFDFF;}

/* ---------- Shor Engine ---------- */
.qsh-wrap{flex:1;min-height:0;display:flex;}
.qsh-left{flex:none;width:300px;border-right:1px solid rgba(122,139,122,.22);background:#0a0e0d;
  display:flex;flex-direction:column;overflow:auto;}
.qsh-main{flex:1;min-width:0;display:flex;flex-direction:column;}
.qsh-phase{flex:none;height:192px;padding:8px 10px;background:#050807;border-bottom:1px solid rgba(122,139,122,.18);}
#qshBars{height:144px;display:block;}
.qsh-log{flex:1;min-height:0;}
.qsh-result{border:1px solid rgba(169,196,169,.35);background:rgba(169,196,169,.05);margin:8px 10px;
  padding:8px 10px;}
.qsh-result .big{font-size:18px;color:#8CFDFF;letter-spacing:.06em;}
.qsh-result .sub{font-size:10px;color:#8fa9a0;margin-top:3px;}
.qsh-steps{counter-reset:s;padding:2px 10px 8px;}
.qsh-steps div{font-size:10px;color:#7d9a8f;padding:2px 0;line-height:1.5;}
.qsh-steps div b{color:#B08CFF;font-weight:normal;}

@media (max-width:900px){
  .q-win{left:0;top:0;width:100vw;height:100vh;min-width:0;resize:none;}
  .q-col.side,.q-col.side.right,.qs-palette,.qf-left,.qb-steps,.qb-side,.qsh-left{width:180px;}
  .qs-res{height:170px;}
  .qb-side{display:none;}
}

/* ================= 套件分类 / 统计卡片 ================= */
.q-suite-body{flex:1;min-height:0;overflow:auto;padding:0 22px 8px;}
.q-suite-cat{margin-top:16px;}
.q-suite-cat-hd{display:flex;align-items:center;gap:8px;font-size:11px;color:#8fa9a0;
  letter-spacing:.14em;border-bottom:1px solid rgba(122,139,122,.18);padding-bottom:5px;}
.q-suite-cat-dot{width:5px;height:5px;background:#8CFDFF;flex:none;}
.q-suite-cat-n{margin-left:auto;color:#5d7a70;font-size:9.5px;}
.q-suite-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:9px 0 0;}
.q-stats{flex:none;display:flex;gap:8px;padding:8px 10px;flex-wrap:wrap;
  border-bottom:1px solid rgba(122,139,122,.16);background:#070b0a;}
.q-stat{flex:1;min-width:118px;border:1px solid rgba(122,139,122,.22);background:#080c0b;padding:6px 9px;}
.q-stat-v{font-size:15px;color:#8CFDFF;line-height:1.3;}
.q-stat-l{font-size:9px;color:#6f8a80;letter-spacing:.08em;margin-top:2px;}
.q-stat-s{font-size:9px;color:#54726A;}

/* ================= 安全模式横幅 ================= */
.q-safe-banner{position:fixed;left:50%;top:6px;transform:translateX(-50%);z-index:95000;
  display:flex;align-items:center;gap:10px;padding:7px 14px;background:#2a0b0b;
  border:1px solid #ff6b6b;color:#ffd6d6;font:11px Consolas,Menlo,monospace;
  box-shadow:0 8px 30px rgba(0,0,0,.8);white-space:nowrap;}
.q-safe-banner .dot{width:6px;height:6px;background:#ff6b6b;border-radius:50%;
  animation:qSafePulse 1s infinite;flex:none;}
.q-safe-banner b{color:#fff;font-weight:normal;letter-spacing:.1em;}
.q-safe-banner .why{color:#ff9b9b;font-size:10px;}
.q-safe-exit{background:transparent;border:1px solid #ff6b6b;color:#ffd6d6;
  font:10px Consolas,monospace;padding:2px 8px;cursor:pointer;margin-left:4px;}
.q-safe-exit:hover{background:#ff6b6b;color:#1a0b0b;}
@keyframes qSafePulse{50%{opacity:.25}}

/* ================= 行星发动机 ================= */
.qe-wrap{flex:1;min-height:0;display:flex;}
.qe-left{flex:1;min-width:0;display:flex;flex-direction:column;padding:8px 10px;}
.qe-right{flex:none;width:300px;border-left:1px solid rgba(122,139,122,.22);
  background:#0a0e0d;overflow:auto;}
.qe-grid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(12,1fr);
  grid-auto-rows:34px;gap:3px;padding:4px 0;overflow:auto;align-content:start;}
.qe-bank{position:relative;border:1px solid rgba(122,139,122,.2);background:#080c0b;
  cursor:pointer;min-height:30px;overflow:hidden;}
.qe-bank .id{position:absolute;left:2px;top:1px;font-size:7px;color:#5d7a70;}
.qe-bank .t{position:absolute;right:2px;top:1px;font-size:7px;color:#47625a;}
.qe-bank .fill{position:absolute;left:0;bottom:0;width:100%;height:0;background:#8CFDFF;opacity:.32;}
.qe-bank.on{outline:1px solid #8CFDFF;outline-offset:-1px;}
.qe-bank:hover{border-color:#8CFDFF;}
.qe-sel-title{font-size:13px;color:#E8F5EE;margin-bottom:3px;}
.qe-range{width:100%;accent-color:#8CFDFF;margin:4px 0 2px;}
.qe-btns{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap;}
.qe-tele{font-size:11px;padding:0 10px;}
.qe-preview{flex:none;border-top:1px solid rgba(122,139,122,.3);background:#0b0808;padding:4px 10px 8px;}
.qe-pv-body{padding:2px 0;}
.qe-progress{height:10px;border:1px solid rgba(122,139,122,.3);background:#050807;margin:4px 0 6px;}
.qe-progress i{display:block;height:100%;background:linear-gradient(90deg,#1d7a58,#3ad29a);
  width:0;transition:width .1s linear;}
.qe-rootrow{display:flex;align-items:center;gap:8px;margin:6px 0;flex-wrap:wrap;}

/* ================= 根服务器（嵌在 #srvWin） ================= */
.qroot{display:flex;flex-direction:column;gap:8px;padding:2px 0;}
.qroot-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.qroot-title{font-size:13px;color:#E8F5EE;letter-spacing:.08em;}
.qroot-sub{font-size:9px;color:#5d7a70;}
.qroot-srv{border:1px solid rgba(122,139,122,.28);background:#080c0b;padding:7px 9px;}
.qroot-srv-top{display:flex;align-items:center;gap:7px;font-size:11px;color:#CFE3DA;}
.qroot-srv-top b{font-weight:normal;color:#E8F5EE;min-width:110px;}
.qroot-ip{font-size:9.5px;color:#6f8a80;}
.qroot-srv-top .q-chip{margin-left:auto;}
.qroot-track{height:6px;background:#050807;border:1px solid rgba(122,139,122,.2);margin:5px 0;}
.qroot-track i{display:block;height:100%;width:0;transition:width .1s linear;}
.qroot-info{display:flex;justify-content:space-between;font-size:9.5px;color:#6f8a80;gap:8px;}
.qroot-btns{display:flex;gap:6px;margin-top:5px;}
.qroot-keyrow{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.qroot-input{flex:1;min-width:160px;}
.qroot-log{max-height:76px;overflow:auto;border:1px solid rgba(122,139,122,.2);
  background:#050807;padding:4px 6px;}
.qroot-log-line{font-size:9.5px;line-height:1.5;}
.qroot .q-chip{font-size:9px;}

/* ================= 全球时钟 ================= */
.qclk-main{flex:1;min-height:0;display:flex;}
.qclk-left{flex:1;min-width:0;display:flex;flex-direction:column;padding:8px 10px;}
.qclk-right{flex:none;width:340px;border-left:1px solid rgba(122,139,122,.22);
  background:#0a0e0d;overflow:auto;}
.qclk-big{font-size:30px;color:#8CFDFF;letter-spacing:.08em;
  text-shadow:0 0 18px rgba(140,253,255,.25);margin:2px 0;}
.qclk-sub{font-size:9px;color:#5d7a70;margin-bottom:6px;}
.qclk-list{padding:2px 0;}
.qclk-row{display:flex;align-items:center;gap:7px;padding:3px 10px;font-size:10px;}
.qclk-code{width:22px;color:#B08CFF;flex:none;}
.qclk-name{width:72px;color:#9DB8AE;flex:none;}
.qclk-bar{flex:1;height:4px;background:rgba(122,139,122,.15);}
.qclk-bar i{display:block;height:100%;width:0;}
.qclk-val{width:66px;text-align:right;font-weight:normal;flex:none;}
.qclk-countdown{flex:none;display:flex;align-items:center;gap:12px;padding:8px 12px;
  border-top:1px solid rgba(122,139,122,.22);background:#0b0808;}
.qclk-cd{font-size:22px;color:#E8A020;letter-spacing:.08em;}
.qclk-cd.fire{color:#A9C4A9;text-shadow:0 0 16px rgba(169,196,169,.4);}

/* ================= 互联网恢复 ================= */
.qnet-wrap{flex:1;min-height:0;display:flex;}
.qnet-left{flex:1;min-width:0;display:flex;flex-direction:column;padding:8px 10px;}
.qnet-left canvas{flex:1;min-height:280px;}
.qnet-right{flex:none;width:360px;border-left:1px solid rgba(122,139,122,.22);
  display:flex;flex-direction:column;min-height:0;background:#0a0e0d;}
.qnet-panel{padding:4px 10px;overflow:auto;max-height:46%;}
.qnet-panel-hd{font-size:11px;color:#CFE3DA;padding:6px 10px 2px;}
.qnet-table{max-height:250px;overflow:auto;margin-top:4px;}
.qnet-nrow{display:flex;align-items:center;gap:6px;padding:2px 0;font-size:10px;
  border-bottom:1px solid rgba(122,139,122,.07);}
.qnet-id{width:24px;color:#5d7a70;flex:none;}
.qnet-name{flex:1;color:#9DB8AE;}
.qnet-log{flex:1;min-height:80px;overflow:auto;padding:4px 10px;background:#050807;
  border-top:1px solid rgba(122,139,122,.18);}
.qnet-log-line{font-size:9.5px;line-height:1.5;word-break:break-word;}
.qnet-prow{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:10px;}
.qnet-pname{width:86px;color:#9DB8AE;flex:none;}
.qnet-prow .qe-progress{flex:1;margin:0;}

/* ================= 量子防火墙 ================= */
.qfw-wrap{flex:1;min-height:0;display:flex;}
.qfw-left{flex:1;min-width:0;display:flex;flex-direction:column;padding:6px 10px;}
.qfw-table{flex:1;min-height:0;overflow:auto;}
.qfw-keyrow{flex:none;display:flex;align-items:center;gap:8px;padding-top:6px;}
.qfw-key{font-size:11px;color:#8fa9a0;word-break:break-all;
  border:1px solid rgba(122,139,122,.25);padding:4px 8px;background:#050807;flex:1;}
.qfw-key.ok{color:#8CFDFF;}
.qfw-key.bad{color:#ff6b6b;}
.qfw-right{flex:none;width:340px;border-left:1px solid rgba(122,139,122,.22);
  display:flex;flex-direction:column;min-height:0;background:#0a0e0d;}

/* ================= 退相干监控 ================= */
.qdec-wrap{flex:1;min-height:0;display:flex;}
.qdec-grid{flex:1;min-width:0;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;
  padding:8px 10px;overflow:auto;align-content:start;}
.qdec-card{border:1px solid rgba(122,139,122,.25);background:#080c0b;padding:6px 8px;min-height:92px;}
.qdec-card.alert{border-color:#ff6b6b;background:rgba(255,107,107,.05);}
.qdec-hd{display:flex;align-items:center;gap:6px;font-size:11px;}
.qdec-hd b{font-weight:normal;color:#E8F5EE;}
.qdec-coh{margin-left:auto;color:#8CFDFF;font-size:13px;}
.qdec-kv{display:flex;gap:8px;font-size:9px;color:#6f8a80;margin-top:3px;}
.qdec-bar{height:3px;background:rgba(122,139,122,.18);margin:5px 0;}
.qdec-bar i{display:block;height:100%;width:0;}
.qdec-err{font-size:9px;color:#7d9a8f;}
.qdec-right{flex:none;width:320px;border-left:1px solid rgba(122,139,122,.22);
  padding:4px 8px;background:#0a0e0d;}

/* ================= 权限数据库 ================= */
.qac-wrap{flex:1;min-height:0;display:flex;}
.qac-left{flex:1.2;min-width:0;display:flex;flex-direction:column;}
.qac-right{flex:none;width:390px;border-left:1px solid rgba(122,139,122,.22);
  display:flex;flex-direction:column;min-height:0;background:#0a0e0d;}
.qac-table{flex:1;overflow:auto;}
.qac-row{display:flex;align-items:center;gap:8px;padding:5px 10px;font-size:10.5px;
  border-bottom:1px solid rgba(122,139,122,.08);cursor:pointer;}
.qac-row:hover{background:rgba(122,139,122,.08);}
.qac-row.on{background:rgba(140,253,255,.08);border-left:2px solid #8CFDFF;}
.qac-id{width:30px;color:#5d7a70;flex:none;}
.qac-name{width:54px;color:#CFE3DA;flex:none;}
.qac-role{flex:1;color:#7d9a8f;}
.qac-detail{padding:6px 10px;overflow:auto;max-height:52%;}
.qac-name2{font-size:14px;color:#E8F5EE;margin-bottom:4px;}
.qac-perms{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0 8px;}
.qac-right .qnet-log{max-height:40%;}

/* ================= 紧急终止 ================= */
.qhalt-banner{display:flex;gap:12px;padding:14px;background:rgba(255,60,60,.06);
  border-bottom:1px solid rgba(255,107,107,.3);}
.qhalt-ico{width:36px;height:36px;border:1px solid #ff6b6b;color:#ff6b6b;flex:none;
  display:flex;align-items:center;justify-content:center;font-size:20px;}
.qhalt-title{font-size:14px;color:#ff9b9b;letter-spacing:.12em;}
.qhalt-sub{font-size:10px;color:#8fa9a0;margin-top:3px;line-height:1.6;}
.qhalt-list{flex:1;overflow:auto;padding:6px 12px;}
.qhalt-row{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:11px;
  border-bottom:1px solid rgba(122,139,122,.08);}
.qhalt-name{flex:1;color:#CFE3DA;}
.qhalt-actions{display:flex;gap:10px;padding:10px 12px;
  border-top:1px solid rgba(122,139,122,.2);}
.qhalt-btn{background:#5a1414;border:1px solid #ff6b6b;color:#ffd6d6;
  font:13px Consolas,Menlo,monospace;padding:10px 26px;cursor:pointer;letter-spacing:.14em;}
.qhalt-btn:hover{background:#7a1a1a;box-shadow:0 0 18px rgba(255,107,107,.3);}
.qhalt-btn.small{padding:6px 18px;font-size:11px;}
.qhalt-btn:disabled{opacity:.4;cursor:not-allowed;}
.qhalt-foot{padding:6px 12px 10px;}
.qhalt-mask{position:fixed;inset:0;z-index:96000;background:rgba(0,0,0,.68);
  display:flex;align-items:center;justify-content:center;}
.qhalt-box{width:min(430px,86vw);background:#120b0b;border:1px solid #ff6b6b;
  box-shadow:0 0 40px rgba(255,60,60,.25);padding:20px 22px;}
.qhalt-box-title{font-size:13px;color:#ff9b9b;letter-spacing:.16em;}
.qhalt-box-text{font-size:15px;color:#fff;margin:14px 0 6px;}
.qhalt-box-sub{font-size:10px;color:#8fa9a0;line-height:1.6;}
.qhalt-box-btns{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;}

/* ================= 日志查看器 ================= */
.qlv-wrap{flex:1;min-height:0;display:flex;}
.qlv-main{flex:1;min-width:0;display:flex;flex-direction:column;}
.qlv-head{display:flex;align-items:center;gap:8px;padding:5px 10px;
  border-bottom:1px solid rgba(122,139,122,.18);}
.qlv-list{flex:1;overflow:auto;font:10.5px/1.55 Consolas,Menlo,monospace;background:#050807;}
.qlv-row{display:flex;gap:8px;padding:1px 8px;border-bottom:1px solid rgba(122,139,122,.05);}
.qlv-row:hover{background:rgba(140,253,255,.04);}
.qlv-t{width:56px;color:#5d7a70;flex:none;}
.qlv-lv{width:32px;flex:none;color:#7d9a8f;}
.qlv-row.lv-error .qlv-lv{color:#ff6b6b;}
.qlv-row.lv-warn .qlv-lv{color:#E8A020;}
.qlv-row.lv-access .qlv-lv{color:#B08CFF;}
.qlv-row.lv-audit .qlv-lv{color:#8CFDFF;}
.qlv-row.lv-net .qlv-lv{color:#6FD3FF;}
.qlv-src{width:72px;flex:none;color:#6f8a80;}
.qlv-msg{flex:1;color:#B8D8C8;word-break:break-word;}
.qlv-side{flex:none;width:280px;border-left:1px solid rgba(122,139,122,.22);
  display:flex;flex-direction:column;background:#0a0e0d;}
.qlv-recs{overflow:auto;padding:4px 8px;flex:1;}
.qlv-rec{border:1px solid rgba(122,139,122,.2);padding:5px 7px;margin:4px 0;
  cursor:pointer;background:#080c0b;}
.qlv-rec:hover{border-color:#8CFDFF;}
.qlv-rec-name{font-size:10px;color:#CFE3DA;}
.qlv-rec-sub{font-size:9px;color:#5d7a70;}
.qlv-chip.on{color:#8CFDFF;border-color:#8CFDFF;}

/* ================= 文件系统浏览器 ================= */
.qfs-wrap{flex:1;min-height:0;display:flex;}
.qfs-left{flex:1.15;min-width:0;display:flex;flex-direction:column;}
.qfs-right{flex:none;width:420px;border-left:1px solid rgba(122,139,122,.22);
  display:flex;flex-direction:column;min-height:0;background:#0a0e0d;}
.qfs-crumb{display:flex;align-items:center;gap:4px;flex-wrap:wrap;font-size:10px;}
.qfs-crumb-item{color:#8CFDFF;cursor:pointer;}
.qfs-crumb-item:hover{text-decoration:underline;}
.qfs-crumb-sep{color:#5d7a70;}
.qfs-list{flex:1;overflow:auto;}
.qfs-row{display:flex;align-items:center;gap:8px;padding:3px 10px;font-size:10.5px;
  border-bottom:1px solid rgba(122,139,122,.07);cursor:pointer;}
.qfs-row:hover{background:rgba(122,139,122,.08);}
.qfs-row.dir .qfs-name{color:#8CFDFF;}
.qfs-row.on{background:rgba(140,253,255,.08);}
.qfs-type{width:34px;color:#5d7a70;font-size:9px;flex:none;}
.qfs-name{flex:1;color:#CFE3DA;}
.qfs-size{width:64px;text-align:right;color:#6f8a80;flex:none;}
.qfs-path{color:#5d7a70;font-size:9px;}
.qfs-preview{flex:1;min-height:0;margin:0 10px 8px;overflow:auto;}

/* ================= 屏幕录制器浮窗 ================= */
.q-rec{position:fixed;right:18px;bottom:18px;width:300px;z-index:8200;
  background:#0d0b0b;border:1px solid rgba(255,107,107,.45);
  box-shadow:0 10px 30px rgba(0,0,0,.8);}
.q-rec-head{display:flex;align-items:center;gap:6px;padding:5px 8px;background:#1a0f0f;
  border-bottom:1px solid rgba(255,107,107,.25);cursor:move;user-select:none;}
.q-rec-dot{width:7px;height:7px;border-radius:50%;background:#5d2a2a;flex:none;}
.q-rec-dot.on{background:#ff4b4b;box-shadow:0 0 8px rgba(255,75,75,.8);
  animation:qRecPulse 1.2s infinite;}
.q-rec-title{font-size:10px;color:#ffb0b0;}
.q-rec-timer{margin-left:auto;font-size:10px;color:#E8A020;}
.q-rec-btn{background:transparent;border:1px solid rgba(255,107,107,.35);color:#ffb0b0;
  font:9px Consolas,monospace;padding:1px 5px;cursor:pointer;}
.q-rec-btn:hover{background:rgba(255,107,107,.15);}
.q-rec-btn:disabled{opacity:.35;cursor:not-allowed;}
.q-rec-body{padding:6px 8px;}
.q-rec-status{font-size:10px;color:#ff9b9b;}
.q-rec-count{font-size:9px;color:#8fa9a0;}
.q-rec-note{font-size:8.5px;color:#5d7a70;line-height:1.5;margin-top:3px;}
@keyframes qRecPulse{50%{opacity:.35}}

@media (max-width:900px){
  .q-suite-grid{grid-template-columns:1fr;}
  .qdec-grid{grid-template-columns:repeat(2,1fr);}
  .qe-right,.qclk-right,.qnet-right,.qfw-right,.qdec-right,.qac-right,.qfs-right,.qlv-side{width:220px;}
}
