  :root{
    --bg:#0f1117; --bg-elev:#141824; --panel:#1a1e2a; --panel-2:#20263480;
    --line:#2a3042; --line-soft:#232838;
    --tx:#e4e8f1; --dim:#8b93a7; --faint:#616b82;
    --ok:#3fd07f; --bad:#ff5d5d; --warn:#f5b83d; --acc:#5aa2ff; --pink:#ff7ab8; --violet:#9d7bff; --temp:#ff6a4d;
    --ok-bg:#153025; --bad-bg:#301820; --warn-bg:#302713; --acc-bg:#152238;
    --r:10px; --r-sm:6px; --r-pill:999px;
    --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
    --sh:0 2px 6px rgba(0,0,0,.32),0 8px 26px rgba(0,0,0,.28);
  }
  *{box-sizing:border-box;margin:0;padding:0}
  body{background:var(--bg);color:var(--tx);font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;-webkit-font-smoothing:antialiased}

  header{display:flex;flex-wrap:wrap;gap:18px;align-items:center;padding:12px 20px;background:var(--bg-elev);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
  .brand{display:flex;align-items:baseline;gap:9px}
  header h1{font-size:16px;font-weight:650;letter-spacing:.2px}
  .hubstats{display:flex;flex-wrap:wrap;gap:16px;align-items:center}
  .connpanel{margin:12px 16px 0;background:#12151d;border:1px solid #222836;border-radius:10px;padding:10px 14px}
  .connpanel .cp-head{font-size:11px;color:#8b93a7;text-transform:uppercase;letter-spacing:.6px;font-weight:700;margin-bottom:8px}
  .connpanel .cp-rows{display:flex;flex-direction:column;gap:6px}
  .cp-row{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:baseline;font-size:13px}
  .cp-row .cp-proj{font-weight:700;color:#e4e8f1;min-width:120px}
  .cp-row .cp-dev{color:#8b93a7}
  .cp-row .cp-guest{color:#8b93a7}
  .cp-row .cp-users{color:#6ee7a0;font-weight:600}
  .cp-row .cp-users.na{color:#8b93a7;font-weight:400}
  .cp-row .cp-who{color:#9db2ff;font-size:12px;flex-basis:100%}
  .stat{display:flex;flex-direction:column;line-height:1.25}
  .stat .k{font-size:10.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.6px}
  .stat .v{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}
  .stat .v small{color:var(--dim);font-weight:500}
  #conn{margin-left:auto;display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--dim);padding:5px 11px;border-radius:var(--r-pill);background:var(--panel);border:1px solid var(--line)}
  .dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto;display:inline-block}
  .dot.on{background:var(--ok);box-shadow:0 0 0 3px rgba(63,208,127,.16)}
  .dot.off{background:var(--bad);box-shadow:0 0 0 3px rgba(255,93,93,.14)}
  .dot.recon{background:var(--warn);box-shadow:0 0 0 3px rgba(245,184,61,.16);animation:pulse 1s ease-in-out infinite}
  @keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
  .reconnote{color:var(--warn);font-size:11px;font-style:italic}
  .stale{margin:8px 0 2px;padding:8px 11px;border-radius:var(--r-sm);background:var(--warn-bg);border:1px solid #4a3a15;color:var(--warn);font-size:12px}

  main{padding:18px 20px;max-width:1240px;margin:0 auto}
  .toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:16px}
  input,select,button,textarea{background:var(--panel);color:var(--tx);border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 11px;font:inherit;transition:border-color .12s,background .12s,box-shadow .12s}
  input::placeholder{color:var(--faint)}
  input:focus,select:focus,textarea:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px rgba(90,162,255,.15)}
  .search{flex:1;min-width:200px}
  button{cursor:pointer;font-weight:500}
  button:hover{border-color:var(--acc);background:var(--bg-elev)}
  button:active{transform:translateY(.5px)}
  button.danger{border-color:#5a2530;color:var(--bad)}
  button.danger:hover{background:var(--bad-bg);border-color:var(--bad)}
  .check{display:inline-flex;align-items:center;gap:7px;color:var(--dim);padding:8px 11px;cursor:pointer;font-size:13px;user-select:none}
  .check input{accent-color:var(--acc);width:15px;height:15px}
  .grow{margin-left:auto}

  .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
  .tile{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:13px 14px 12px;cursor:pointer;display:flex;flex-direction:column;gap:10px;transition:border-color .12s,transform .1s,box-shadow .12s}
  .tile:hover{border-color:#39415a;box-shadow:var(--sh);transform:translateY(-1px)}
  .tile.off{opacity:.62}
  .tile.alert{border-color:#5a2530}
  .thead{display:flex;align-items:center;gap:9px}
  .tname{font-weight:650;font-size:14.5px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ctype{font-size:10.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;padding:2px 7px;border-radius:var(--r-pill);border:1px solid var(--line-soft)}
  .ctype.server{color:var(--acc);background:var(--acc-bg)}
  .ctype.td{color:var(--pink);background:#2a1622}
  .ctype.rpi{color:var(--warn);background:var(--warn-bg)}
  .tsub{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:-3px}
  .cproj{color:var(--dim);font-size:12px}
  .ipchip{font-family:var(--mono);font-size:11px;color:var(--dim);background:var(--bg);border:1px solid var(--line-soft);border-radius:var(--r-sm);padding:0 6px}
  .ver{font-family:var(--mono);font-size:10.5px;color:var(--faint);background:var(--bg);border:1px solid var(--line-soft);border-radius:var(--r-sm);padding:0 6px}
  .dhstate.ok{color:var(--ok)} .dhstate.warn{color:var(--warn)} .dhstate.alarm{color:var(--bad)}
  .dhmeta{font-size:11.5px;color:var(--dim);font-family:var(--mono);display:flex;gap:14px;flex-wrap:wrap;margin-top:4px}
  .ctag{background:var(--panel-2);border:1px solid var(--line-soft);border-radius:var(--r-sm);padding:0 6px;font-size:11px;color:var(--dim)}
  .badge{background:var(--warn);color:#1a1200;border-radius:var(--r-sm);padding:1px 6px;font-size:10.5px;font-weight:700}
  .tsince{font-family:var(--mono);font-size:10.5px;color:var(--faint);white-space:nowrap;font-variant-numeric:tabular-nums}
  .tsince.db{color:var(--dim);background:var(--bg);border:1px solid var(--line-soft);border-radius:var(--r-pill);padding:1px 8px}
  /* Строки карточки: подпись — бар — значение (раскладка как в iOS-приложении) */
  .mrows{display:flex;flex-direction:column;gap:7px}
  .mrows.gpus{padding-top:9px;margin-top:2px;border-top:1px solid var(--line-soft)}
  .mrow{display:grid;grid-template-columns:46px 1fr auto;align-items:center;gap:10px}
  .mrow.gpurow{grid-template-columns:46px 1fr auto auto}   /* не .gpu — он занят блоком в модалке, см. ниже */
  .mrow .k{font-size:11.5px;color:var(--dim);white-space:nowrap}
  .mrow .v{font-family:var(--mono);font-size:12.5px;color:var(--tx);font-weight:600;font-variant-numeric:tabular-nums;text-align:right;min-width:38px}
  .mrow .v small{font-size:10px;color:var(--dim);font-weight:500}
  .mrow .temp{font-size:12.5px;min-width:34px;text-align:right}
  .tfoot{display:flex;align-items:center;gap:10px;padding-top:9px;margin-top:2px;border-top:1px solid var(--line-soft);
         font-family:var(--mono);font-size:11.5px;color:var(--dim)}
  .tfoot .r{margin-left:auto;text-align:right}
  .tfoot b{color:var(--tx);font-weight:600}
  .netdown{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:12px}
  .netmore{margin-top:8px}
  .netmore summary{cursor:pointer;color:var(--dim);font-size:12px;user-select:none}
  .netmore summary:hover{color:var(--tx)}
  .check.sm{padding:3px 8px;font-size:12px;gap:5px}
  .legend .mm2.env{color:var(--dim)}   /* размах из огибающей, а не из средних */
  .mm{display:grid;grid-template-columns:1fr 1fr;gap:9px 14px}
  .metric{display:flex;flex-direction:column;gap:4px}
  .metric.wide{grid-column:1/-1}
  .metric .top{display:flex;justify-content:space-between;align-items:baseline;font-size:11.5px;color:var(--dim)}
  .metric .top b{font-family:var(--mono);font-size:12.5px;color:var(--tx);font-weight:600;font-variant-numeric:tabular-nums}
  .bar{height:5px;border-radius:3px;background:var(--bg);overflow:hidden}
  .bar>i{display:block;height:100%;border-radius:3px}
  .bar>i.cpu{background:var(--acc)} .bar>i.ram{background:var(--ok)} .bar>i.gpu{background:var(--warn)} .bar>i.ssd{background:var(--violet)}
  .bar>i.hot{background:var(--bad)} .bar>i.warm{background:var(--warn)}
  .bar>i.net{background:var(--acc)} .bar>i.none{background:transparent}
  .temp{font-family:var(--mono);font-weight:600}
  .temp.ok{color:var(--ok)} .temp.warm{color:var(--warn)} .temp.hot{color:var(--bad)}
  .fpsbig{font-family:var(--mono);font-size:26px;font-weight:650;letter-spacing:-.5px}
  .fpsbig small{font-size:12px;color:var(--dim);font-weight:500;font-family:inherit}
  .fpsbig.ok{color:var(--ok)} .fpsbig.warn{color:var(--warn)} .fpsbig.bad{color:var(--bad)}
  .stateline{font-family:var(--mono);font-size:12px;color:var(--dim);display:flex;gap:6px;align-items:center;flex-wrap:wrap}
  .tdgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:11px 16px;background:var(--bg);border:1px solid var(--line-soft);border-radius:var(--r-sm);padding:12px}
  .tdgrid>div{display:flex;flex-direction:column;gap:3px}
  .tdgrid .tdwide{grid-column:1/-1}
  .tdk{font-size:10.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.5px}
  .tdv{font-size:13px;font-weight:600;font-family:var(--mono)}
  .tdgrid .tdwide b{font-family:var(--mono)} .tdgrid .bar{margin-top:5px}
  .offnote{color:var(--faint);font-size:12.5px;font-style:italic}
  .quick{display:flex;gap:7px;margin-top:1px}
  .quick button{padding:5px 10px;font-size:12px;border-radius:var(--r-sm)}
  .need{font-size:10px;color:var(--warn);border:1px solid #4a3a15;background:var(--warn-bg);border-radius:var(--r-sm);padding:0 5px;font-weight:600;white-space:nowrap}

  #ov{position:fixed;inset:0;background:rgba(6,8,12,.66);backdrop-filter:blur(3px);display:none;align-items:flex-start;justify-content:center;z-index:60;padding:34px 16px;overflow:auto}
  #ov.show{display:flex}
  .modal{background:var(--panel);border:1px solid var(--line);border-radius:14px;width:100%;max-width:800px;box-shadow:var(--sh);animation:pop .16s ease}
  @keyframes pop{from{transform:translateY(8px) scale(.99);opacity:.4}to{transform:none;opacity:1}}
  .mhead{display:flex;align-items:center;gap:11px;padding:16px 18px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel);border-radius:14px 14px 0 0;z-index:2}
  .mhead .tname{font-size:16px;flex:1}
  .mclose{border:1px solid var(--line);background:var(--bg);border-radius:var(--r-sm);width:32px;height:32px;padding:0;font-size:16px;color:var(--dim);line-height:1}
  .mclose:hover{border-color:var(--bad);color:var(--bad);background:var(--bad-bg)}
  .mbody{padding:6px 18px 18px}
  .mip{font-family:var(--mono);font-size:11.5px;color:var(--dim);margin-top:6px}
  .sec{font-size:11px;color:var(--faint);margin:18px 0 10px;text-transform:uppercase;letter-spacing:.7px;font-weight:600;display:flex;align-items:center;gap:9px}
  .sec::after{content:"";flex:1;height:1px;background:var(--line-soft)}
  .cmds{display:flex;flex-wrap:wrap;gap:8px}
  .cmds button{padding:6px 12px;border-radius:var(--r-sm);font-size:13px}
  .argform{margin:10px 0;padding:12px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm)}
  .argform label{display:block;margin:6px 0 2px;font-size:12.5px;color:var(--dim)}
  .argform input,.argform select{width:100%}
  .pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:3px 10px;border-radius:var(--r-pill);border:1px solid transparent}
  .pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
  .pill.ok{color:var(--ok);background:var(--ok-bg);border-color:#1e4a34}
  .pill.err{color:var(--bad);background:var(--bad-bg);border-color:#4a2028}
  .pill.prog{color:var(--warn);background:var(--warn-bg);border-color:#4a3a15}
  .cmdstatus{margin-top:10px;font-size:12.5px;color:var(--dim);display:flex;align-items:center;gap:9px;flex-wrap:wrap}
  .cmdstatus .ok{color:var(--ok)} .cmdstatus .err{color:var(--bad)} .cmdstatus .prog{color:var(--warn)}
  img.snap{max-width:100%;border-radius:var(--r-sm);margin-top:10px;border:1px solid var(--line);display:block}

  /* строка ресурсов (чипы) + аккордеон-детали */
  .chips{display:flex;flex-wrap:wrap;gap:8px}
  .chip.res{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--r-sm);background:var(--bg);border:1px solid var(--line-soft);color:var(--tx);font-size:12.5px;font-weight:600;cursor:pointer;transition:border-color .12s,background .12s}
  .chip.res:hover{border-color:var(--acc)}
  .chip.res.active{border-color:var(--acc);background:var(--acc-bg)}
  .chip.res .sub{color:var(--dim);font-family:var(--mono);font-weight:500;font-size:12px}
  .chip.res .cx{font-size:10px;color:var(--faint)}
  .resdetail{margin-top:11px}
  /* .gpucard, а не .gpu: класс gpu носит ещё и заливка бара (<i class="gpu">),
     и рамка с паддингом отсюда прилипали к ней — при 0% бар рисовал огрызок
     шириной с паддинг. Имя блока сделано уникальным. */
  .gpucard{background:var(--bg);border:1px solid var(--line-soft);border-radius:var(--r-sm);padding:11px 12px;display:flex;flex-direction:column;gap:10px}
  .gpucard .gname{font-size:12.5px;font-weight:600;display:flex;justify-content:space-between;align-items:baseline;gap:8px}
  .gpucard .grow2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .gauge .top{display:flex;justify-content:space-between;font-size:11px;color:var(--dim);margin-bottom:4px}
  .gauge .top b{font-family:var(--mono);color:var(--tx);font-size:12px}
  .tempnow{font-family:var(--mono);font-size:15px;font-weight:650}
  .gchart-wrap{display:flex;flex-direction:column;gap:7px}
  .gchart-ctl{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
  .seg{display:inline-flex;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;flex-wrap:wrap}
  .seg button{border:none;background:none;border-radius:0;padding:5px 11px;font-size:12px;color:var(--dim);border-right:1px solid var(--line)}
  .seg button:last-child{border-right:none}
  .seg button:hover{background:var(--bg-elev);color:var(--tx)}
  .seg button.active{background:var(--acc-bg);color:var(--acc);font-weight:600}
  .seg.sm button{padding:3px 9px;font-size:11px}
  canvas.gchart{width:100%;height:120px;display:block;background:var(--bg);border:1px solid var(--line-soft);border-radius:var(--r-sm)}
  .disk{background:var(--bg);border:1px solid var(--line-soft);border-radius:var(--r-sm);padding:11px 12px}
  .disk .top{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;color:var(--dim);margin-bottom:7px}
  .disk .top .mount{font-family:var(--mono);color:var(--tx);font-weight:600}
  .disk .top b{font-family:var(--mono);color:var(--tx)}
  .disk .bar{height:9px}
  .proclist{display:flex;flex-direction:column;gap:3px;max-height:260px;overflow:auto}
  .procrow{display:flex;align-items:center;gap:9px;font-size:12.5px;padding:6px 10px;background:var(--bg);border:1px solid var(--line-soft);border-radius:var(--r-sm)}
  .procrow .pname{flex:1;font-family:var(--mono);color:var(--tx)}
  .procrow .pstat{font-size:11.5px;font-family:var(--mono)}
  .procrow .pstat.ok{color:var(--ok)} .procrow .pstat.bad{color:var(--bad)} .procrow .pstat.warn{color:var(--warn)} .procrow .pstat.dim{color:var(--dim)}

  .chart-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:9px}
  canvas.chart{width:100%;height:190px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);display:block}
  .legend{margin-top:9px;display:flex;gap:16px;flex-wrap:wrap}
  .legend span{display:inline-flex;align-items:baseline;gap:6px;font-size:12.5px;color:var(--dim)}
  .legend i{width:8px;height:8px;border-radius:2px;display:inline-block;position:relative;top:1px}
  .legend b{font-family:var(--mono);color:var(--tx);font-weight:600}
  .legend .mm2{color:var(--faint);font-size:11px;font-family:var(--mono)}

  .events{list-style:none;display:flex;flex-direction:column;gap:1px}
  .ev{display:flex;gap:10px;align-items:baseline;padding:7px 10px;border-radius:var(--r-sm);font-size:12.5px;background:var(--bg);border:1px solid var(--line-soft)}
  .ev .etype{font-weight:600;color:var(--tx);min-width:120px}
  .ev .etype.crit{color:var(--bad)} .ev .etype.warn{color:var(--warn)}
  .ev .ets{color:var(--faint);font-family:var(--mono);font-size:11.5px;white-space:nowrap}
  .ev .edata{color:var(--dim);font-family:var(--mono);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ev-more{margin-top:8px;background:none;border:none;color:var(--acc);padding:4px 2px;font-size:12.5px;cursor:pointer}
  .ev-more:hover{text-decoration:underline;background:none}
  .events.collapsed .ev.extra{display:none}
  pre{white-space:pre-wrap;word-break:break-all;font-size:11.5px;color:var(--dim);font-family:var(--mono);background:var(--bg);border:1px solid var(--line-soft);border-radius:var(--r-sm);padding:10px;max-height:200px;overflow:auto}

  .danger-zone{margin-top:20px;border:1px solid #3a2028;border-radius:var(--r-sm);padding:12px 14px;background:#1c1418}
  .danger-zone .dz-head{font-size:11px;color:var(--bad);text-transform:uppercase;letter-spacing:.6px;font-weight:700;margin-bottom:4px}
  .danger-zone .dz-note{font-size:12px;color:var(--dim);margin-bottom:10px}
  .danger-zone .dz-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
  .mgsel{background:#141824;color:#e4e8f1;border:1px solid #2a3042;border-radius:6px;padding:4px 8px;font-size:12px;max-width:100%}
  .confirm{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--warn);flex-wrap:wrap}

  #serial{margin:22px 0 10px;padding:15px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r)}
  #serial .sec{margin-top:0}
  .serial-row{display:flex;flex-wrap:wrap;gap:8px}
  #serialres{margin-top:12px;display:flex;flex-direction:column;gap:5px;font-size:12.5px}

  #login{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:80}
  #login .box{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:28px;width:320px;box-shadow:var(--sh)}
  #login h2{font-size:16px;margin-bottom:14px}
  #login input{width:100%;margin-bottom:10px}
  #login button{width:100%}
  #loginerr{color:var(--bad);font-size:12.5px;margin-top:8px;min-height:16px}
  .hidden{display:none!important}
  @media(max-width:520px){.gpucard .grow2{grid-template-columns:1fr}}
  /* ===== расширенный вьювер графика ===== */
  .expand{background:#141824;border:1px solid #2a3042;color:#c3c9d6;border-radius:6px;padding:3px 8px;font-size:12px;cursor:pointer;margin-left:auto}
  .expand:hover{background:#1d2740;border-color:#3a5bd0;color:#fff}
  .chart-head,.gchart-ctl{align-items:center}
  .cv-ov{position:fixed;inset:0;background:rgba(6,8,12,.86);z-index:60;display:none}
  .cv-ov.show{display:flex}
  .cv-wrap{margin:auto;width:min(1280px,96vw);height:min(88vh,860px);background:#0d1017;border:1px solid #222836;border-radius:14px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.5)}
  .cv-head{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;padding:12px 16px;border-bottom:1px solid #1c2230}
  .cv-title{font-weight:700;color:#e4e8f1;font-size:15px}
  .cv-tabs,.cv-cards,.cv-presets{display:flex;gap:6px;flex-wrap:wrap}
  .cv-presets{margin-left:auto}
  .cv-tabs button,.cv-cards button,.cv-presets button{background:#141824;border:1px solid #2a3042;color:#c3c9d6;border-radius:7px;padding:5px 10px;font-size:12px;cursor:pointer}
  .cv-tabs button.active,.cv-cards button.active,.cv-presets button.active{background:#1d2740;border-color:#3a5bd0;color:#fff}
  .cv-cards button{border-style:dashed}
  .cv-close{background:#161b26;border:1px solid #2a3042;color:#e4e8f1;border-radius:8px;width:30px;height:30px;cursor:pointer;font-size:15px}
  .cv-body{flex:1;display:flex;min-height:0}
  .cv-dates{width:130px;flex-shrink:0;border-right:1px solid #1c2230;overflow-y:auto;padding:8px}
  .cv-dates .cv-dh{font-size:10px;color:#6b7385;text-transform:uppercase;letter-spacing:.5px;margin:2px 4px 8px}
  .cv-daterow{display:flex;align-items:center;gap:3px;margin-bottom:2px}
  .cv-date{flex:1;min-width:0;text-align:left;background:transparent;border:1px solid transparent;color:#9aa2b4;border-radius:6px;padding:5px 8px;font-size:12px;cursor:pointer}
  .cv-del{flex-shrink:0;background:transparent;border:1px solid transparent;color:#6b7385;border-radius:6px;padding:4px 6px;font-size:12px;cursor:pointer;opacity:.55}
  .cv-daterow:hover .cv-del{opacity:1}
  .cv-del:hover{background:#2a1620;border-color:#5a2530;color:#ff6a6a}
  .cv-date:hover{background:#141824}
  .cv-date.inview{color:#e4e8f1;border-color:#2c344a;background:#151b28}
  .cv-date.active{background:#1d2740;border-color:#3a5bd0;color:#fff}
  .cv-main{flex:1;position:relative;min-width:0;padding:10px 14px 8px}
  .cv-canvas{width:100%;height:100%;display:block;cursor:crosshair}
  .cv-canvas.panning{cursor:grabbing}
  .cv-hint{font-size:11px;color:#5b6478;white-space:nowrap;margin-right:2px}
  @media(max-width:820px){.cv-hint{display:none}}
  .cv-loading{position:absolute;inset:0;display:none;align-items:center;justify-content:center;flex-direction:column;gap:14px;background:rgba(13,16,23,.55)}
  .cv-loading.show{display:flex}
  .cv-spinner{width:40px;height:40px;border-radius:50%;border:3px solid #222a3a;border-top-color:#5aa2ff;border-right-color:#9d7bff;animation:cvspin .8s linear infinite}
  .cv-loading .cv-ltext{font-size:12px;color:#8b93a7;letter-spacing:.3px}
  .cv-spark{display:flex;gap:4px;align-items:flex-end;height:20px}
  .cv-spark i{width:4px;height:20px;background:#3a5bd0;border-radius:2px;animation:cvpulse 1s ease-in-out infinite}
  .cv-spark i:nth-child(2){animation-delay:.12s}.cv-spark i:nth-child(3){animation-delay:.24s}
  .cv-spark i:nth-child(4){animation-delay:.36s}.cv-spark i:nth-child(5){animation-delay:.48s}
  @keyframes cvspin{to{transform:rotate(360deg)}}
  @keyframes cvpulse{0%,100%{transform:scaleY(.35);opacity:.5}50%{transform:scaleY(1);opacity:1}}
  @media(max-width:640px){.cv-dates{display:none}}

  /* ===== переключение видов + страница Transfer ===== */
  .views{display:flex;gap:4px;padding:3px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-pill)}
  .viewbtn{background:none;border:none;border-radius:var(--r-pill);padding:5px 14px;font-size:12.5px;color:var(--dim)}
  .viewbtn:hover{background:var(--bg-elev);border-color:transparent;color:var(--tx)}
  .viewbtn.active{background:var(--acc-bg);color:var(--acc);font-weight:600}

  .t-usage{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin-bottom:14px;padding:10px 14px;background:#12151d;border:1px solid #222836;border-radius:var(--r);font-size:12.5px;color:var(--dim)}
  .t-usage b{color:var(--tx);font-variant-numeric:tabular-nums}
  .t-usage .near{color:var(--warn)}
  .t-usage .epoch{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--faint)}

  .t-table{display:flex;flex-direction:column;gap:6px}
  .t-row{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:10px 13px}
  .t-row:hover{border-color:#39415a}
  .t-head{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:baseline}
  .t-key{font-family:var(--mono);font-size:13px;font-weight:600;color:var(--tx);flex:1;min-width:180px;word-break:break-all}
  .t-meta{color:var(--faint);font-size:11.5px;font-variant-numeric:tabular-nums}
  .t-meta b{color:var(--dim);font-weight:600}
  .t-acts{display:flex;gap:6px}
  .t-acts button{padding:4px 10px;font-size:12px}
  .t-preview{margin-top:7px;font-family:var(--mono);font-size:11.5px;color:var(--dim);white-space:pre-wrap;word-break:break-all}
  .t-full{margin-top:8px;padding:10px;background:var(--bg);border:1px solid var(--line-soft);border-radius:var(--r-sm);font-family:var(--mono);font-size:11.5px;white-space:pre-wrap;word-break:break-all;max-height:340px;overflow:auto}
  .t-empty{padding:24px;text-align:center;color:var(--faint)}

  .t-form{background:var(--panel);border:1px solid var(--acc);border-radius:var(--r);padding:13px 14px;margin-bottom:14px;display:flex;flex-direction:column;gap:9px}
  .t-form .sec{font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.6px;font-weight:700}
  .t-form textarea{font-family:var(--mono);font-size:12px;min-height:150px;resize:vertical}
  .t-form .row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
  .t-warn{padding:8px 11px;border-radius:var(--r-sm);background:var(--warn-bg);border:1px solid #4a3a15;color:var(--warn);font-size:12px}
  .t-err{color:var(--bad);font-size:12px;min-height:16px}
