:root{
    --bg:#0c0e15; --surface:#161922; --surface2:#1c2030; --line:#262b39; --line2:#363c4d;
    --txt:#eceff5; --dim:#7e8597; --dim2:#535a6b;
    --rein:#16d6a4; --rein-d:#0c7a5e; --user:#3b6fed; --amber:#f5b13d; --red:#fb6470; --purple:#a98bff; --blue:#60a5fa; --pink:#f472b6; --orange:#ff6a3d; --green:#3ddc84;
    --man:'Manrope',sans-serif; --mono:'Geist Mono',monospace; --serif:'Fraunces',serif; --body:'Spectral',serif;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  body{font-family:var(--man);color:var(--txt);height:100vh;overflow:hidden;
    background:radial-gradient(circle at 20% 15%,rgba(22,214,164,.1),transparent 40%),radial-gradient(circle at 85% 80%,rgba(123,108,246,.1),transparent 42%),#0c0e15}
  ::selection{background:var(--rein);color:#04140f}
  ::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-thumb{background:#2a2f3d;border-radius:4px}
  .dots{position:fixed;inset:0;z-index:0;pointer-events:none;background-image:radial-gradient(circle at 1px 1px,rgba(130,150,200,.07) 1px,transparent 0);background-size:32px 32px}

  .top{position:fixed;top:0;left:0;right:0;height:46px;display:flex;align-items:center;gap:12px;padding:0 16px;z-index:200;
    background:rgba(12,14,21,.7);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
  .brand{font-weight:800;font-size:15px;letter-spacing:-.4px}.brand span{color:var(--rein)}
  .top .hint{font-family:var(--mono);font-size:10px;color:var(--dim2)}
  .top .right{margin-left:auto;display:flex;align-items:center;gap:8px}
  .tp{font-family:var(--mono);font-size:11px;padding:5px 10px;border:1px solid var(--line);border-radius:20px;color:var(--dim)}
  .tp b{color:var(--txt)}
  .tbtn{font-family:var(--mono);font-size:11px;padding:6px 11px;border-radius:8px;border:1px solid var(--line2);background:var(--surface);color:var(--txt);cursor:pointer}
  .tbtn:hover{border-color:var(--rein);color:var(--rein)}

  /* anchored chat */
  .chatdock{position:fixed;top:46px;left:0;bottom:0;width:360px;border-right:1px solid var(--line);background:rgba(14,16,23,.6);backdrop-filter:blur(10px);z-index:120;display:flex;flex-direction:column}
  .cdh{padding:12px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}
  .avatar{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,var(--rein),var(--rein-d));display:grid;place-items:center;font-weight:700;color:#04140f;font-size:13px}
  .cdh .nm{font-weight:700;font-size:13px}.cdh .nm small{display:block;font-size:10px;color:var(--rein)}
  .cdh .pin{margin-left:auto;font-family:var(--mono);font-size:9px;color:var(--dim2)}
  .chat{flex:1;overflow-y:auto;padding:16px}.thread{display:flex;flex-direction:column;gap:12px}
  .msg{display:flex;gap:9px;opacity:0;transform:translateY(10px);animation:in .4s ease forwards}
  @keyframes in{to{opacity:1;transform:none}}
  .msg .av{width:25px;height:25px;border-radius:7px;flex-shrink:0;display:grid;place-items:center;font-size:11px;font-weight:700}
  .msg.u{flex-direction:row-reverse}.msg.u .av{background:linear-gradient(135deg,var(--user),#2952c4);color:#fff}
  .msg.r .av{background:linear-gradient(135deg,var(--rein),var(--rein-d));color:#04140f}
  .bubble{max-width:84%;padding:9px 13px;border-radius:13px;font-size:13px;line-height:1.5}
  .msg.u .bubble{background:var(--user);color:#fff;border-bottom-right-radius:4px}
  .msg.r .bubble{background:var(--surface);border:1px solid var(--line);border-bottom-left-radius:4px}
  .ntfy-note{font-family:var(--mono);font-size:9px;color:var(--rein);margin-top:4px;opacity:.8}
  .spawn-note{font-family:var(--mono);font-size:9px;color:var(--blue);margin-top:3px}
  .approval{background:linear-gradient(160deg,rgba(245,177,61,.08),var(--surface));border:1px solid rgba(245,177,61,.35);border-radius:11px;padding:11px;margin-top:5px}
  .approval .cmd{font-family:var(--mono);font-size:11px;background:#0d0e12;border:1px solid var(--line);border-radius:6px;padding:6px 9px;margin:6px 0;color:var(--amber)}
  .approval .ntfy{font-family:var(--mono);font-size:9px;color:var(--amber);margin-bottom:6px}
  .qbtns{display:flex;gap:5px;margin-top:7px;flex-wrap:wrap}
  .qb{font-family:var(--mono);font-size:10px;padding:5px 9px;border-radius:6px;border:1px solid var(--line2);background:var(--surface2);color:var(--txt);cursor:pointer}
  .qb:hover{border-color:var(--rein);color:var(--rein)}.qb.danger:hover{border-color:var(--red);color:var(--red)}
  .typing{display:flex;gap:4px;padding:10px 13px;background:var(--surface);border:1px solid var(--line);border-radius:12px;width:fit-content}
  .typing span{width:6px;height:6px;border-radius:50%;background:var(--dim);animation:tp 1.2s infinite}
  .typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}
  @keyframes tp{0%,60%,100%{opacity:.3}30%{opacity:1}}
  .composer{padding:11px 14px;border-top:1px solid var(--line)}
  .suggest{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap}
  .sg2{font-size:10px;padding:5px 10px;border-radius:14px;border:1px solid var(--line);background:var(--surface);color:var(--dim);cursor:pointer;white-space:nowrap}
  .sg2:hover{border-color:var(--rein);color:var(--rein)}
  .inbox{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:5px 5px 5px 13px}
  .inbox:focus-within{border-color:var(--rein)}
  .inbox input{flex:1;background:none;border:none;outline:none;color:var(--txt);font-family:var(--man);font-size:13px;padding:7px 0}
  .send{width:32px;height:32px;border-radius:8px;border:none;background:var(--rein);color:#04140f;font-size:14px;cursor:pointer}

  /* canvas */
  .canvas{position:fixed;top:46px;left:360px;right:0;bottom:0;overflow:hidden;z-index:10}
  .canvas .empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:var(--dim2);font-family:var(--mono);font-size:13px;line-height:1.8}
  .empty .big{font-size:40px;margin-bottom:10px;opacity:.5}
  .win{position:absolute;background:rgba(22,25,34,.96);backdrop-filter:blur(14px);border:1px solid var(--line2);border-radius:13px;box-shadow:0 24px 60px rgba(0,0,0,.5);overflow:hidden;display:flex;flex-direction:column;opacity:0;transform:scale(.92) translateY(16px);animation:winin .45s cubic-bezier(.2,.9,.3,1.2) forwards}
  @keyframes winin{to{opacity:1;transform:none}}
  .wh{display:flex;align-items:center;gap:8px;padding:9px 13px;background:rgba(28,32,48,.8);border-bottom:1px solid var(--line);cursor:grab;flex-shrink:0;user-select:none}
  .wh .wi{font-size:13px}.wh .wt{font-size:12px;font-weight:600;color:var(--dim)}.wh .wt b{color:var(--txt)}
  .wh .wx{margin-left:auto;cursor:pointer;color:var(--dim2);font-size:14px}.wh .wx:hover{color:var(--red)}
  .wb{padding:14px;overflow-y:auto;flex:1}

  /* ===== window content ===== */
  .sgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .scard{background:var(--surface2);border:1px solid var(--line);border-radius:10px;padding:12px}
  .scard .l{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--dim)}
  .scard .v{font-size:24px;font-weight:800;letter-spacing:-1px;margin-top:3px}
  .scard .ring{height:4px;border-radius:2px;background:#23262f;margin-top:8px;overflow:hidden}
  .scard .ring i{display:block;height:100%;border-radius:2px;width:0;transition:width 1.1s ease}
  .crow{display:flex;align-items:center;gap:9px;padding:7px 0;font-size:12px;border-bottom:1px solid rgba(255,255,255,.04)}
  .crow:last-child{border:none}
  .cst{width:8px;height:8px;border-radius:50%;display:inline-block}.up{background:var(--rein);box-shadow:0 0 6px var(--rein)}.down{background:var(--red);box-shadow:0 0 4px var(--red)}
  .crow .cn{flex:1;font-family:var(--mono);font-size:11px}.crow .ct{font-family:var(--mono);font-size:10px;color:var(--dim)}
  .acts{display:flex;gap:4px}.act{font-size:9px;padding:3px 7px;border-radius:5px;border:1px solid var(--line2);background:var(--surface2);color:var(--txt);cursor:pointer}
  .act:hover{border-color:var(--rein);color:var(--rein)}.act.danger:hover{border-color:var(--red);color:var(--red)}
  .frow{display:flex;align-items:center;gap:9px;padding:6px 0;font-size:12px;border-bottom:1px solid rgba(255,255,255,.04);cursor:pointer}
  .frow:hover{color:var(--rein)}.frow .fi{width:16px}.frow .fn{flex:1;font-family:var(--mono);font-size:11px}.frow .fm{font-size:9px;color:var(--dim)}
  .frow .nw{font-family:var(--mono);font-size:8px;color:var(--rein);border:1px solid var(--rein-d);border-radius:4px;padding:1px 4px}
  .rule{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:12px;border-bottom:1px solid rgba(255,255,255,.04)}
  .rule .rd{flex:1}.rule .rd b{color:var(--red)}
  .toggle{width:32px;height:18px;border-radius:9px;background:#23262f;border:1px solid var(--line2);position:relative;cursor:pointer}
  .toggle.on{background:rgba(22,214,164,.2);border-color:var(--rein)}.toggle i{position:absolute;top:2px;width:12px;height:12px;border-radius:50%;background:#555;transition:.25s}.toggle.on i{left:16px;background:var(--rein)}.toggle.off i{left:2px}

  /* ===== report render (HIDUP) ===== */
  .repwin .wb{padding:24px 26px}
  .dkick{font-family:var(--mono);font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--rein)}
  .dtitle{font-family:var(--serif);font-weight:900;font-size:26px;line-height:1.05;letter-spacing:-1px;margin:7px 0 6px}
  .dmeta{font-family:var(--mono);font-size:10px;color:var(--dim);display:flex;gap:12px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:18px}
  .dlead{font-family:var(--body);font-size:15px;line-height:1.65;color:#c8cdda;margin:14px 0}
  .dlead .dropcap::first-letter{font-family:var(--serif);font-weight:900;font-size:2.8em;float:left;line-height:.78;padding:4px 9px 0 0;color:var(--rein)}
  .sectt{font-family:var(--serif);font-size:18px;font-weight:600;margin:24px 0 12px;letter-spacing:-.3px}
  .rv{opacity:0;transform:translateY(16px);transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .6s cubic-bezier(.2,.7,.2,1)}
  .rv.in{opacity:1;transform:none}
  .statstrip{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0}
  .ssc{background:var(--surface2);border:1px solid var(--line);border-radius:11px;padding:13px}
  .ssc .sl{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--dim)}
  .ssc .sv{font-family:var(--serif);font-weight:900;font-size:28px;letter-spacing:-1px;margin-top:3px;line-height:1}
  .ssc .sv small{font-size:13px;color:var(--dim)}
  .barchart{display:flex;flex-direction:column;gap:11px;margin:6px 0}
  .barrow{display:flex;align-items:center;gap:12px}
  .barrow .bn{width:26px;font-family:var(--mono);font-size:13px;font-weight:700;color:var(--rein)}
  .barrow .bl{width:120px;font-weight:700;font-size:13px;flex-shrink:0}
  .barrow .btrack{flex:1;height:24px;background:var(--surface2);border-radius:7px;overflow:hidden}
  .barrow .bfill{height:100%;border-radius:7px;width:0;transition:width 1.1s cubic-bezier(.3,1,.4,1);display:flex;align-items:center;justify-content:flex-end;padding-right:9px;font-family:var(--mono);font-size:11px;font-weight:600;color:#04140f}
  .donutwrap{display:flex;align-items:center;gap:24px;margin:10px 0;flex-wrap:wrap}
  .donut{width:140px;height:140px;flex-shrink:0;transform:rotate(-90deg)}
  .donut circle{fill:none;stroke-width:20;stroke-linecap:round}
  .donut .track{stroke:var(--surface2)}.donut .seg{transition:stroke-dashoffset 1.3s cubic-bezier(.3,1,.4,1)}
  .legend{display:flex;flex-direction:column;gap:8px}
  .lgrow{display:flex;align-items:center;gap:10px;font-size:13px}.lgrow .dt{width:11px;height:11px;border-radius:4px}.lgrow .ln{flex:1;font-weight:600}.lgrow .lp{font-family:var(--mono);color:var(--dim)}
  .sevbar{display:flex;gap:8px;margin:6px 0;flex-wrap:wrap}
  .sevpill{display:flex;align-items:center;gap:7px;padding:8px 13px;border-radius:30px;font-family:var(--mono);font-size:11px;font-weight:600;border:1px solid}
  .sevpill .c{width:8px;height:8px;border-radius:50%}
  .sevpill.crit{border-color:var(--red);color:var(--red);background:rgba(251,100,112,.08)}.sevpill.crit .c{background:var(--red);box-shadow:0 0 9px var(--red);animation:pulse 1.4s infinite}
  .sevpill.high{border-color:var(--orange);color:var(--orange);background:rgba(255,106,61,.08)}.sevpill.high .c{background:var(--orange)}
  .sevpill.med{border-color:var(--amber);color:var(--amber);background:rgba(245,177,61,.08)}.sevpill.med .c{background:var(--amber)}
  @keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(251,100,112,.5)}50%{box-shadow:0 0 0 6px rgba(251,100,112,0)}}
  .cvss{display:flex;align-items:center;gap:20px;margin:14px 0;flex-wrap:wrap}
  .gauge{width:130px;height:78px;flex-shrink:0}.gauge .arc{fill:none;stroke-width:12;stroke-linecap:round}.gauge .gtrack{stroke:var(--surface2)}.gauge .gfill{transition:stroke-dashoffset 1.4s cubic-bezier(.3,1,.4,1)}
  .gscore{font-family:var(--serif);font-weight:900;font-size:28px;letter-spacing:-1px}.gscore small{font-family:var(--mono);font-size:12px;color:var(--dim);font-weight:400}
  .finding{border:1px solid var(--line);border-radius:11px;margin:9px 0;overflow:hidden;background:var(--surface2)}
  .finding .fhd{padding:12px 15px;display:flex;align-items:center;gap:10px;cursor:pointer}
  .finding .fhd:hover{background:rgba(255,255,255,.02)}
  .sevtag{font-family:var(--mono);font-size:8px;font-weight:700;padding:3px 7px;border-radius:5px;text-transform:uppercase}
  .sevtag.crit{background:rgba(251,100,112,.16);color:var(--red)}.sevtag.high{background:rgba(255,106,61,.16);color:var(--orange)}.sevtag.med{background:rgba(245,177,61,.16);color:var(--amber)}
  .finding .ftitle{flex:1;font-weight:700;font-size:13px}.finding .fchev{color:var(--dim);transition:transform .3s}.finding.open .fchev{transform:rotate(90deg)}
  .finding .fbody{max-height:0;overflow:hidden;transition:max-height .4s ease}.finding.open .fbody{max-height:280px}
  .finding .inner{padding:0 15px 14px;font-family:var(--body);font-size:13px;line-height:1.6;color:#c8cdda}
  .finding .code{font-family:var(--mono);font-size:11px;background:#0d0e14;border:1px solid var(--line);border-radius:7px;padding:9px 11px;margin:9px 0;color:var(--amber);white-space:pre-wrap}
  .tline{position:relative;padding-left:26px;margin:10px 0}
  .tline::before{content:'';position:absolute;left:6px;top:6px;bottom:6px;width:2px;background:var(--line)}
  .tstep{position:relative;padding:8px 0;font-size:13px}
  .tstep::before{content:'';position:absolute;left:-23px;top:12px;width:10px;height:10px;border-radius:50%;background:var(--rein-d);border:2px solid var(--bg)}
  .tstep.done::before{background:var(--rein);box-shadow:0 0 7px var(--rein)}
  .tstep b{font-weight:700}.tstep .ts{font-family:var(--mono);font-size:10px;color:var(--dim);margin-left:7px}
  .rdl{margin-top:18px;display:flex;gap:8px}
  .rdl .abtn{font-family:var(--mono);font-size:10px;padding:8px 13px;border:1px solid var(--line2);border-radius:7px;color:var(--txt);cursor:pointer;background:none}
  .rdl .abtn.md{border-color:var(--amber);color:var(--amber)}.rdl .abtn:hover{border-color:var(--rein);color:var(--rein)}

  /* palette + kiosk + tag */
  .ov{position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);z-index:300;display:none;align-items:flex-start;justify-content:center;padding-top:14vh}
  .ov.on{display:flex}
  .pal{width:min(560px,92vw);background:var(--surface);border:1px solid var(--line2);border-radius:14px;box-shadow:0 30px 80px rgba(0,0,0,.6);overflow:hidden}
  .pin2{display:flex;align-items:center;gap:12px;padding:15px 18px;border-bottom:1px solid var(--line)}.pin2 .pf{color:var(--rein);font-family:var(--mono);font-weight:700}.pin2 input{flex:1;background:none;border:none;outline:none;color:var(--txt);font-family:var(--mono);font-size:15px}
  .prow{display:flex;align-items:center;gap:12px;padding:10px 18px;cursor:pointer;font-size:14px;border-left:2px solid transparent}.prow .ic{width:22px;height:22px;border-radius:6px;display:grid;place-items:center;font-size:12px;background:var(--surface2)}.prow .meta{flex:1}.prow.sel,.prow:hover{background:rgba(22,214,164,.08);border-left-color:var(--rein)}
  .kiosk{position:fixed;inset:0;z-index:320;background:radial-gradient(circle at 72% 28%,rgba(255,106,61,.16),transparent 50%),#060608;display:none;flex-direction:column;justify-content:center;padding:0 7vw;cursor:pointer}
  .kiosk.on{display:flex;animation:in .4s ease}.kiosk .kk{font-family:var(--mono);font-size:13px;letter-spacing:4px;text-transform:uppercase;color:#ff6a3d;margin-bottom:16px}
  .kiosk h1{font-weight:800;font-size:clamp(40px,8vw,100px);line-height:.9;letter-spacing:-3px;color:#f5f5f7}
  .kiosk .kn{display:flex;margin-top:30px;flex-wrap:wrap}.kiosk .kb{padding-right:5vw;margin-right:5vw;border-right:1px solid #222228}.kiosk .kb:last-child{border:none}
  .kiosk .kb .v{font-weight:900;font-size:clamp(34px,5vw,64px);letter-spacing:-2px}.kiosk .kb .l{font-family:var(--mono);font-size:12px;color:#7c7c88;text-transform:uppercase;letter-spacing:2px;margin-top:6px}
  .kiosk .kexit{position:absolute;top:30px;right:7vw;font-family:var(--mono);font-size:12px;color:#7c7c88}
  .tag{position:fixed;bottom:22px;left:calc(360px + 50%);transform:translateX(-50%) translateY(10px);background:var(--surface);border:1px solid var(--line2);border-radius:10px;padding:10px 16px;font-family:var(--mono);font-size:12px;z-index:330;opacity:0;transition:.3s}.tag.on{opacity:1;transform:translateX(-50%) translateY(0)}.tag b{color:var(--rein)}

  /* ===== PAGE MODE (⌘K fullscreen takeover) ===== */
  .page{position:fixed;inset:0;z-index:260;background:#0c0e15;display:none;flex-direction:column;
    background-image:radial-gradient(circle at 20% 8%,rgba(22,214,164,.07),transparent 42%)}
  .page.on{display:flex;animation:pgin .4s cubic-bezier(.2,.9,.3,1.1)}
  @keyframes pgin{from{opacity:0;transform:scale(1.02)}to{opacity:1;transform:none}}
  .pgtop{height:52px;display:flex;align-items:center;gap:14px;padding:0 22px;border-bottom:1px solid var(--line);background:rgba(12,14,21,.8);backdrop-filter:blur(12px);flex-shrink:0}
  .pgback{font-family:var(--mono);font-size:12px;color:var(--rein);cursor:pointer;display:flex;align-items:center;gap:7px;padding:7px 13px;border:1px solid var(--line2);border-radius:8px}
  .pgback:hover{border-color:var(--rein);background:rgba(22,214,164,.06)}
  .pgttl{font-weight:800;font-size:16px;letter-spacing:-.4px;display:flex;align-items:center;gap:9px}
  .pgttl .pi{font-size:18px}
  .pgtop .pgr{margin-left:auto;display:flex;gap:8px}
  .pgchat{font-family:var(--mono);font-size:11px;padding:7px 12px;border-radius:8px;border:1px solid var(--line2);background:var(--surface);color:var(--txt);cursor:pointer}
  .pgchat:hover{border-color:var(--rein);color:var(--rein)}
  .pgbody{flex:1;overflow:hidden;display:flex}

  /* playground page: file panel + render */
  .pgfiles{width:300px;border-right:1px solid var(--line);background:rgba(14,16,23,.5);overflow-y:auto;flex-shrink:0}
  .pgfh{padding:14px 18px;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:var(--dim);border-bottom:1px solid var(--line)}
  .pgfnode{padding:8px 18px;font-size:13px;cursor:pointer;display:flex;align-items:center;gap:9px;font-family:var(--mono)}
  .pgfnode.dir{color:var(--txt);font-weight:600}
  .pgfnode.file{color:var(--dim);padding-left:34px;font-size:12px}
  .pgfnode.file:hover{color:var(--rein);background:rgba(255,255,255,.03)}
  .pgfnode.file.active{color:var(--rein);background:rgba(22,214,164,.08);border-right:2px solid var(--rein)}
  .pgfnode .nw{font-family:var(--mono);font-size:8px;color:var(--rein);border:1px solid var(--rein-d);border-radius:4px;padding:1px 4px;margin-left:auto}
  .pgrender{flex:1;overflow-y:auto;position:relative}
  .pgrender .rempty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--dim2);font-family:var(--mono);font-size:13px;gap:10px;text-align:center;line-height:1.8}
  .pgrender .rempty .big{font-size:42px;opacity:.4}
  .pgdoc{max-width:760px;margin:0 auto;padding:36px 44px 70px;display:none}
  .pgdoc.on{display:block}

  /* generic page body (docker/system/settings) */
  .pgwide{flex:1;overflow-y:auto;padding:34px 48px 70px}
  .pgwide .wt2{font-family:var(--serif);font-size:24px;font-weight:600;letter-spacing:-.5px;margin-bottom:4px}
  .pgwide .ws2{color:var(--dim);font-size:12px;margin-bottom:24px}
  .bigstat{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;max-width:820px;margin-bottom:30px}
  .bigstat .bs{background:linear-gradient(160deg,var(--surface),var(--surface2));border:1px solid var(--line);border-radius:15px;padding:20px;position:relative;overflow:hidden}
  .bigstat .bs .l{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:1.5px;color:var(--dim)}
  .bigstat .bs .v{font-family:var(--serif);font-weight:900;font-size:46px;letter-spacing:-2px;margin-top:6px;line-height:1}
  .bigstat .bs .v small{font-size:16px;color:var(--dim)}
  .bigstat .bs .ring{height:6px;border-radius:3px;background:#23262f;margin-top:12px;overflow:hidden}
  .bigstat .bs .ring i{display:block;height:100%;border-radius:3px;width:0;transition:width 1.1s cubic-bezier(.2,.8,.2,1)}
  .ptbl{max-width:880px;border:1px solid var(--line);border-radius:14px;overflow:hidden}
  .ptrow{display:flex;align-items:center;gap:14px;padding:14px 20px;border-bottom:1px solid var(--line);font-size:14px}
  .ptrow:last-child{border:none}.ptrow.head{background:var(--surface2);color:var(--dim);font-size:10px;text-transform:uppercase;letter-spacing:1px}
  .ptrow:hover:not(.head){background:rgba(255,255,255,.02)}
  .ptrow .pcn{flex:1;font-family:var(--mono);font-size:13px}.ptrow .pcc{width:70px;color:var(--blue);font-family:var(--mono);font-size:12px}.ptrow .pcu{width:90px;color:var(--dim);font-family:var(--mono);font-size:11px}
  /* file manager page (v0.7) */
  .fmbar{display:flex;align-items:center;gap:14px;max-width:880px;margin-bottom:16px}
  .fmcrumb{font-family:var(--mono);font-size:13px;color:var(--txt);display:flex;align-items:center;gap:6px}
  .fmcrumb b{color:var(--rein)}
  .fmacts{margin-left:auto;display:flex;gap:8px}
  .fmbtn{font-family:var(--mono);font-size:11px;padding:7px 12px;border:1px solid var(--line2);border-radius:8px;background:var(--surface);color:var(--txt);cursor:pointer}
  .fmbtn:hover{border-color:var(--rein);color:var(--rein)}
  .fmnote{font-family:var(--mono);font-size:10px;color:var(--dim2);max-width:880px;margin-top:12px}
  .setblock{max-width:680px;background:var(--surface);border:1px solid var(--line);border-radius:15px;padding:22px;margin-bottom:18px}
  .setblock h3{font-size:16px;font-weight:700;margin-bottom:4px;display:flex;align-items:center;gap:9px}
  .setblock .sd{font-size:12px;color:var(--dim);margin-bottom:16px}
  .setrow{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid var(--line)}
  .setrow:last-child{border:none}.setrow .srl{flex:1;font-size:14px}.setrow .srl b{color:var(--red)}.setrow .srl .sm{font-size:11px;color:var(--dim);font-family:var(--mono)}
  .setfield{font-family:var(--mono);font-size:12px;background:#0d0e14;border:1px solid var(--line2);border-radius:8px;padding:9px 13px;color:var(--rein)}

  /* ===== v0.7 — pan/zoom canvas (Figma-style) ===== */
  .canvas{cursor:grab}
  .canvas.panning{cursor:grabbing}
  .canvasworld{position:absolute;top:0;left:0;width:100%;height:100%;transform-origin:0 0;will-change:transform;transition:transform .04s linear}
  .canvasworld.snap{transition:transform .35s cubic-bezier(.2,.8,.2,1)}
  .zoomctl{position:absolute;right:18px;bottom:18px;z-index:60;display:flex;flex-direction:column;gap:6px;background:rgba(18,21,30,.82);backdrop-filter:blur(10px);border:1px solid var(--line2);border-radius:12px;padding:7px}
  .zoomctl button{width:34px;height:34px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--txt);cursor:pointer;font-size:15px;font-family:var(--mono);display:grid;place-items:center;line-height:1}
  .zoomctl button:hover{border-color:var(--rein);color:var(--rein)}
  .zoomctl .zlvl{font-family:var(--mono);font-size:9px;color:var(--dim);text-align:center;padding:1px 0}
  .canvas .empty{z-index:1}
  .pantip{position:absolute;left:18px;bottom:18px;z-index:55;font-family:var(--mono);font-size:9px;color:var(--dim2);background:rgba(18,21,30,.7);border:1px solid var(--line);border-radius:8px;padding:6px 10px;line-height:1.6;pointer-events:none}

  /* ===== v0.7 — login + mode picker ===== */
  .login{position:fixed;inset:0;z-index:500;display:flex;align-items:center;justify-content:center;
    background:radial-gradient(circle at 25% 20%,rgba(22,214,164,.14),transparent 45%),radial-gradient(circle at 80% 78%,rgba(123,108,246,.13),transparent 45%),#0a0c12}
  .login.gone{display:none}
  .lcard{width:min(420px,92vw);background:rgba(18,21,30,.78);backdrop-filter:blur(16px);border:1px solid var(--line2);border-radius:22px;padding:34px 32px;box-shadow:0 40px 100px rgba(0,0,0,.6)}
  .lbrand{font-weight:800;font-size:26px;letter-spacing:-.6px;text-align:center}.lbrand span{color:var(--rein)}
  .ltag{text-align:center;font-family:var(--mono);font-size:11px;color:var(--dim);margin:7px 0 26px}
  .lfield{margin-bottom:13px}
  .lfield label{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--dim);display:block;margin-bottom:6px}
  .lfield input{width:100%;background:#0d0e14;border:1px solid var(--line2);border-radius:11px;padding:12px 14px;color:var(--txt);font-family:var(--man);font-size:14px;outline:none}
  .lfield input:focus{border-color:var(--rein)}
  .lmode{margin:22px 0 8px}
  .lmode .lml{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--dim);margin-bottom:9px}
  .lmodes{display:grid;grid-template-columns:1fr 1fr;gap:11px}
  .lmodebtn{background:#0d0e14;border:1.5px solid var(--line2);border-radius:14px;padding:16px 12px;cursor:pointer;text-align:center;transition:.15s}
  .lmodebtn:hover{border-color:var(--dim)}
  .lmodebtn.sel{border-color:var(--rein);background:rgba(22,214,164,.08)}
  .lmodebtn .lmi{font-size:26px;margin-bottom:7px}
  .lmodebtn .lmt{font-weight:700;font-size:14px}
  .lmodebtn .lms{font-family:var(--mono);font-size:9px;color:var(--dim);margin-top:3px;line-height:1.4}
  .lgo{width:100%;margin-top:20px;padding:13px;border:none;border-radius:12px;background:var(--rein);color:#04140f;font-weight:800;font-size:14px;cursor:pointer;font-family:var(--man)}
  .lgo:hover{background:#13c194}
  .lerr{color:var(--red);font-family:var(--mono);font-size:11px;text-align:center;margin-top:12px;min-height:14px}
  .lhint{font-family:var(--mono);font-size:9px;color:var(--dim2);text-align:center;margin-top:14px}

  /* ===== v0.7 — smartphone mode ===== */
  body.mobile .chatdock{width:100%;left:0;right:0;z-index:120}
  body.mobile .canvas,body.mobile .zoomctl,body.mobile .pantip{display:none!important}
  body.mobile .top .hint{display:none}
  body.mobile .top .right .tp{display:none}
  body.mobile .top .tbtn.deskonly{display:none}
  body:not(.mobile) .mobnav{display:none}
  .mobnav{position:fixed;bottom:0;left:0;right:0;height:60px;z-index:130;display:flex;background:rgba(12,14,21,.92);backdrop-filter:blur(14px);border-top:1px solid var(--line)}
  .mobnav button{flex:1;background:none;border:none;color:var(--dim);font-family:var(--mono);font-size:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer}
  .mobnav button .mni{font-size:18px}
  .mobnav button.act{color:var(--rein)}
  body.mobile .chatdock{bottom:60px}
  body.mobile .page{z-index:140;bottom:60px}
  body.mobile .mobnav{z-index:200}
  body.mobile .pgfiles{width:160px}
  body.mobile .pgbody{flex-direction:column}
  body.mobile .pgback{padding:6px 10px}

  /* ===== v0.8 — Reminder / Task ===== */
  .rmwrap{flex:1;overflow-y:auto;padding:30px 44px 70px;width:100%}
  .rmhead{display:flex;align-items:center;gap:14px;width:100%;margin-bottom:20px}
  .rmhead .wt2{font-family:var(--serif);font-size:26px;font-weight:600;letter-spacing:-.5px}
  .rmnew{margin-left:auto;font-family:var(--man);font-size:13px;font-weight:700;padding:9px 16px;border:none;border-radius:10px;background:var(--rein);color:#04140f;cursor:pointer}
  .rmnew:hover{background:#13c194}
  .rmstats{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:10px;width:100%;margin-bottom:22px}
  .rmstat{background:linear-gradient(160deg,var(--surface),var(--surface2));border:1px solid var(--line);border-radius:13px;padding:14px 16px}
  .rmstat .n{font-family:var(--serif);font-weight:900;font-size:30px;letter-spacing:-1px;line-height:1}
  .rmstat .l{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--dim);margin-top:6px}
  .rmcols{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));gap:18px;width:100%}
  .rmcol h4{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:1.5px;color:var(--dim);margin-bottom:11px;display:flex;align-items:center;gap:7px}
  .rmcol h4 .c{background:var(--surface2);border-radius:20px;padding:1px 8px;font-size:9px}
  .rmcard{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--dim2);border-radius:12px;padding:13px 15px;margin-bottom:10px;cursor:pointer;transition:.15s}
  .rmcard:hover{border-color:var(--line2);transform:translateX(2px)}
  .rmcard.done{opacity:.5}
  .rmcard.overdue{border-left-color:var(--red)}
  .rmcard.today{border-left-color:var(--amber)}
  .rmcard.upcoming{border-left-color:var(--blue)}
  .rmtop{display:flex;align-items:flex-start;gap:10px}
  .rmchk{width:19px;height:19px;border-radius:6px;border:1.5px solid var(--line2);flex-shrink:0;margin-top:1px;cursor:pointer;display:grid;place-items:center;font-size:11px;color:transparent}
  .rmchk.on{background:var(--rein);border-color:var(--rein);color:#04140f}
  .rmttl{flex:1;font-weight:700;font-size:14px}
  .rmcard.done .rmttl{text-decoration:line-through}
  .rmpr{font-family:var(--mono);font-size:8px;font-weight:700;padding:2px 6px;border-radius:5px;text-transform:uppercase;flex-shrink:0}
  .rmpr.high{background:rgba(251,100,112,.16);color:var(--red)}.rmpr.med{background:rgba(245,177,61,.16);color:var(--amber)}.rmpr.low{background:rgba(96,165,250,.14);color:var(--blue)}
  .rmdesc{font-size:12px;color:var(--dim);margin:6px 0 9px;line-height:1.5;padding-left:29px}
  .rmmeta{display:flex;gap:14px;flex-wrap:wrap;padding-left:29px;font-family:var(--mono);font-size:10px;color:var(--dim2)}
  .rmmeta .mi{display:flex;align-items:center;gap:4px}
  .rmmeta .fire{color:var(--rein)}
  .rmempty{color:var(--dim2);font-family:var(--mono);font-size:12px;padding:18px;text-align:center;border:1px dashed var(--line2);border-radius:11px}

  /* reminder form modal */
  .rmov{position:fixed;inset:0;z-index:340;background:rgba(0,0,0,.62);backdrop-filter:blur(5px);display:none;align-items:flex-start;justify-content:center;padding-top:8vh}
  .rmov.on{display:flex}
  .rmform{width:min(520px,94vw);max-height:84vh;overflow-y:auto;background:var(--surface);border:1px solid var(--line2);border-radius:18px;box-shadow:0 36px 90px rgba(0,0,0,.6)}
  .rmfh{padding:18px 22px;border-bottom:1px solid var(--line);font-weight:800;font-size:16px;display:flex;align-items:center;gap:9px}
  .rmfh .x{margin-left:auto;cursor:pointer;color:var(--dim);font-size:18px}.rmfh .x:hover{color:var(--red)}
  .rmfb{padding:20px 22px}
  .rmfield{margin-bottom:15px}
  .rmfield label{display:block;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--dim);margin-bottom:6px}
  .rmfield label .req{color:var(--rein)}
  .rmfield input,.rmfield textarea,.rmfield select{width:100%;background:#0d0e14;border:1px solid var(--line2);border-radius:10px;padding:11px 13px;color:var(--txt);font-family:var(--man);font-size:13px;outline:none}
  .rmfield textarea{resize:vertical;min-height:62px;font-family:var(--body)}
  .rmfield input:focus,.rmfield textarea:focus,.rmfield select:focus{border-color:var(--rein)}
  .rmrow{display:flex;gap:12px}.rmrow .rmfield{flex:1}
  .rmprset{display:flex;gap:8px}
  .rmprset .pp{flex:1;text-align:center;font-family:var(--mono);font-size:11px;padding:9px;border:1.5px solid var(--line2);border-radius:9px;cursor:pointer;color:var(--dim)}
  .rmprset .pp.sel{border-color:var(--rein);color:var(--rein);background:rgba(22,214,164,.07)}
  .rmplan{background:#0d0e14;border:1px solid var(--line);border-radius:11px;padding:12px 14px;margin-top:6px}
  .rmplan .pl{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--dim);margin-bottom:7px}
  .rmplan .pi{font-family:var(--mono);font-size:11px;color:var(--rein);display:flex;align-items:flex-start;gap:7px;margin-bottom:4px;line-height:1.5}
  .rmplan .pi.none{color:var(--dim2)}
  .rmsave{width:100%;margin-top:8px;padding:13px;border:none;border-radius:11px;background:var(--rein);color:#04140f;font-weight:800;font-size:14px;cursor:pointer}
  .rmsave:hover{background:#13c194}
  .rmerr{color:var(--red);font-family:var(--mono);font-size:11px;text-align:center;margin-top:9px;min-height:13px}

  /* ===== v0.8 — Log (Live Stream) ===== */
  .logwrap{flex:1;display:flex;flex-direction:column;overflow:hidden}
  .logbar{display:flex;align-items:center;gap:12px;padding:16px 30px;border-bottom:1px solid var(--line);flex-shrink:0}
  .loglive{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;color:var(--rein)}
  .loglive .dot{width:8px;height:8px;border-radius:50%;background:var(--rein);animation:lpulse 1.4s infinite}
  @keyframes lpulse{0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(22,214,164,.5)}50%{opacity:.6;box-shadow:0 0 0 6px rgba(22,214,164,0)}}
  .logfilters{display:flex;gap:7px;margin-left:auto;flex-wrap:wrap}
  .logf{font-family:var(--mono);font-size:10px;padding:5px 11px;border:1px solid var(--line2);border-radius:18px;background:var(--surface);color:var(--dim);cursor:pointer}
  .logf.on{border-color:var(--rein);color:var(--rein);background:rgba(22,214,164,.07)}
  .logfeed{flex:1;overflow-y:auto;padding:14px 30px 40px;font-family:var(--mono);font-size:12px}
  .logrow{display:flex;gap:14px;padding:9px 0;border-bottom:1px solid rgba(38,43,57,.5);align-items:baseline;opacity:0;transform:translateX(-8px);animation:login .35s ease forwards}
  @keyframes login{to{opacity:1;transform:none}}
  .logrow .lt{color:var(--dim2);flex-shrink:0;width:74px}
  .logrow .lsrc{flex-shrink:0;width:88px;font-size:10px;padding:1px 0}
  .logrow .lmsg{flex:1;color:var(--txt);line-height:1.5}
  .logrow .lbadge{font-size:8px;font-weight:700;padding:1px 6px;border-radius:4px;text-transform:uppercase;flex-shrink:0}
  .lvl-info .lbadge,.b-info{color:var(--blue)}
  .b-info{background:rgba(96,165,250,.14)}.b-warn{background:rgba(245,177,61,.16);color:var(--amber)}.b-err{background:rgba(251,100,112,.16);color:var(--red)}.b-ok{background:rgba(22,214,164,.14);color:var(--rein)}.b-ntfy{background:rgba(169,139,255,.16);color:var(--purple)}
  .logrow.warn .lmsg{color:#f7c97a}.logrow.err .lmsg{color:#fb8d96}

  /* ===== v0.8 — expanded page content ===== */
  .pgsec{max-width:880px;margin-bottom:26px}
  .pgsec h3{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:var(--dim);margin-bottom:13px;display:flex;align-items:center;gap:8px}
  .pgsec h3 .tag2{margin-left:auto;font-size:9px;color:var(--dim2);text-transform:none;letter-spacing:0}
  /* history sparkline */
  .spark{display:flex;align-items:flex-end;gap:3px;height:90px;padding:12px;background:var(--surface);border:1px solid var(--line);border-radius:13px}
  .spark .bar{flex:1;background:linear-gradient(180deg,var(--blue),rgba(96,165,250,.25));border-radius:3px 3px 0 0;min-height:3px;transition:height .8s cubic-bezier(.2,.8,.2,1)}
  .spark.mem .bar{background:linear-gradient(180deg,var(--purple),rgba(169,139,255,.25))}
  .sparklabels{display:flex;justify-content:space-between;font-family:var(--mono);font-size:9px;color:var(--dim2);max-width:880px;margin-top:5px}
  /* process / list rows */
  .proc{max-width:880px;border:1px solid var(--line);border-radius:13px;overflow:hidden}
  .procrow{display:flex;align-items:center;gap:14px;padding:11px 18px;border-bottom:1px solid var(--line);font-size:13px}
  .procrow:last-child{border:none}.procrow.head{background:var(--surface2);font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--dim)}
  .procrow .pp1{flex:1;font-family:var(--mono);font-size:12px}.procrow .pp2{width:60px;font-family:var(--mono);font-size:12px;color:var(--blue)}.procrow .pp3{width:60px;font-family:var(--mono);font-size:12px;color:var(--purple)}.procrow .pp4{width:80px;font-family:var(--mono);font-size:11px;color:var(--dim)}
  /* net breakdown */
  .netgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:880px}
  .netcard{background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:16px 18px}
  .netcard .nv{font-family:var(--serif);font-weight:900;font-size:28px;letter-spacing:-1px}
  .netcard .nl{font-family:var(--mono);font-size:10px;color:var(--dim);text-transform:uppercase;letter-spacing:1px;margin-top:4px}
  .netbar{height:5px;border-radius:3px;background:#23262f;margin-top:11px;overflow:hidden}.netbar i{display:block;height:100%;border-radius:3px;width:0;transition:width 1s}
  /* docker detail */
  .dkgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;max-width:880px;margin-bottom:24px}
  .dkstat{background:linear-gradient(160deg,var(--surface),var(--surface2));border:1px solid var(--line);border-radius:13px;padding:15px}
  .dkstat .dv{font-family:var(--serif);font-weight:900;font-size:26px;letter-spacing:-1px}
  .dkstat .dl{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--dim);margin-top:5px}
  .imgrow{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:12px}
  .imgrow:last-child{border:none}.imgrow .in{flex:1;color:var(--txt)}.imgrow .iz{color:var(--dim);font-size:11px}
  /* settings appearance swatches */
  .swatch{display:flex;gap:9px;flex-wrap:wrap}
  .sw{width:32px;height:32px;border-radius:9px;cursor:pointer;border:2px solid transparent}
  .sw.sel{border-color:var(--txt)}
  .seg{display:flex;background:#0d0e14;border:1px solid var(--line2);border-radius:9px;overflow:hidden}
  .seg button{flex:1;padding:8px 14px;background:none;border:none;color:var(--dim);font-family:var(--mono);font-size:11px;cursor:pointer}
  .seg button.on{background:var(--rein);color:#04140f;font-weight:700}

  /* ===== v0.9 — dense full-screen operational pages ===== */
  .pgwide.dense{padding:22px 28px 46px;max-width:none;width:100%}
  .dense .pghead{display:flex;align-items:flex-end;gap:16px;margin-bottom:18px}
  .dense .pghead .hcopy{flex:1}.dense .pghead .wt2{font-size:28px}.dense .pghead .ws2{margin-bottom:0}
  .dense .toolstrip{display:flex;gap:8px;flex-wrap:wrap}.dense .toolstrip .fmbtn{padding:8px 12px}
  .fullgrid{display:grid;grid-template-columns:1.15fr .85fr;gap:16px;width:100%;min-height:calc(100vh - 154px)}
  .panelx{background:rgba(22,25,34,.72);border:1px solid var(--line);border-radius:15px;overflow:hidden;min-width:0}
  .panelx .ph{height:42px;padding:0 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:1.2px;color:var(--dim)}
  .panelx .ph .righty{margin-left:auto;color:var(--dim2);font-size:9px;text-transform:none;letter-spacing:0}
  .panelx .pc{padding:14px}
  .densemetrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
  .densemetrics .dm{background:linear-gradient(160deg,var(--surface),var(--surface2));border:1px solid var(--line);border-radius:12px;padding:14px;min-width:0}
  .densemetrics .dm .v{font-family:var(--serif);font-weight:900;font-size:34px;letter-spacing:-1.5px;line-height:1}.densemetrics .dm .v small{font-size:13px;color:var(--dim);margin-left:6px;letter-spacing:0;font-weight:600}
  .densemetrics .dm .l{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--dim);margin-top:6px}
  .bigchart{height:250px;display:flex;align-items:flex-end;gap:4px;padding:16px;background:#0d0e14;border:1px solid var(--line);border-radius:13px;margin-bottom:14px}
  .bigchart .bar{flex:1;min-width:3px;border-radius:4px 4px 0 0;background:linear-gradient(180deg,var(--rein),rgba(22,214,164,.18));height:10%;transition:height .9s cubic-bezier(.2,.8,.2,1)}
  .split2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.split3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
  .minirow{display:flex;align-items:center;gap:12px;padding:10px 12px;border-bottom:1px solid var(--line);font-size:13px}.minirow:last-child{border:none}
  .minirow .a{flex:1;font-family:var(--mono);font-size:12px}.minirow .b{font-family:var(--mono);font-size:11px;color:var(--dim)}.minirow .c{font-family:var(--mono);font-size:11px;color:var(--rein)}
  .opsgrid{display:grid;grid-template-columns:minmax(620px,1fr) 360px;gap:16px;min-height:calc(100vh - 154px)}
  .opstable{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:12px;table-layout:auto}.opstable th{font-size:10px;color:var(--dim);font-weight:500;text-transform:uppercase;letter-spacing:1px;text-align:left;background:var(--surface2)}
  .opstable th,.opstable td{padding:10px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.opstable tr:hover td{background:rgba(255,255,255,.025)}
  .opstable .name{color:var(--txt);font-weight:600}.opstable .muted{color:var(--dim)}.opstable .cpu{color:var(--blue)}.opstable .mem{color:var(--purple)}
  .opstable td:first-child{width:28px;text-align:center;padding-left:8px;padding-right:4px}
  .opstable th:first-child{width:28px;text-align:center;padding-left:8px;padding-right:4px}
  .opstable td.name{max-width:220px;overflow:hidden;text-overflow:ellipsis}
  .opstable td.muted{max-width:180px;overflow:hidden;text-overflow:ellipsis}
  .dockinspect{display:flex;flex-direction:column;gap:12px}.logmini{background:#090a0f;border:1px solid var(--line);border-radius:12px;padding:12px;font-family:var(--mono);font-size:11px;color:var(--dim);line-height:1.8;min-height:210px}.logmini b{color:var(--rein);font-weight:500}
  .file3{display:grid;grid-template-columns:240px minmax(520px,1fr) 360px;gap:16px;min-height:calc(100vh - 154px)}
  .treeitem{padding:8px 12px;border-radius:8px;font-family:var(--mono);font-size:12px;color:var(--dim);cursor:pointer;display:flex;gap:8px;align-items:center}.treeitem.on,.treeitem:hover{background:rgba(22,214,164,.08);color:var(--rein)}
  .filepreview{height:100%;display:flex;flex-direction:column}.previewhero{border-radius:13px;border:1px solid var(--line);background:linear-gradient(160deg,#0d0e14,var(--surface));padding:20px;margin-bottom:12px}.previewhero .pvtitle{font-weight:800;font-size:18px}.previewhero .pvmeta{font-family:var(--mono);font-size:10px;color:var(--dim);margin-top:6px}
  .previewactions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.previewbody{flex:1;overflow:auto;background:#0d0e14;border:1px solid var(--line);border-radius:13px;padding:14px;font-family:var(--mono);font-size:11px;color:var(--dim);line-height:1.7}
