:root{
      color-scheme: dark;
      --bg:#0a0e16; --panel:#111826; --panel2:#0e1521; --line:#1e293b;
      --txt:#e6edf3; --muted:#8b98ab; --accent:#2563eb; --accent2:#3b82f6; --cyan:#7dd3fc;
      --ok:#22c55e; --warn:#f59e0b; --bad:#ef4444;
      --mono: ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
      --sans: system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
    }
    *{box-sizing:border-box}
    body{margin:0;min-height:100vh;background:
      radial-gradient(1200px 600px at 80% -10%, #14233f 0%, transparent 60%),
      radial-gradient(900px 500px at -10% 110%, #1a1340 0%, transparent 55%),
      var(--bg);color:var(--txt);font-family:var(--sans);display:flex}
    a{color:inherit;text-decoration:none}
    .side{width:248px;min-height:100vh;border-right:1px solid var(--line);
      background:linear-gradient(180deg,#0d1320,#0a0e16);padding:22px 16px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}
    .brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:18px}
    .brand .logo{width:34px;height:28px;display:grid;place-items:center}
    .brand .logo svg{width:100%;height:auto;filter:drop-shadow(0 2px 5px rgba(37,99,235,.4))}
    .brand small{display:block;color:var(--muted);font-weight:500;font-size:11px;font-family:var(--mono)}
    .langs{display:flex;gap:6px;margin-top:16px}
    .langs button{flex:1;background:#0e1726;border:1px solid var(--line);color:var(--muted);border-radius:8px;padding:6px 0;font-size:12px;font-weight:700;cursor:pointer}
    .langs button.active{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border-color:transparent}
    .navgroup{margin-top:18px;color:var(--muted);font-size:10px;letter-spacing:.08em;padding:0 12px 6px}
    .nav{display:flex;flex-direction:column;gap:3px}
    .nav a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:9px;color:var(--muted);font-size:14px;cursor:pointer}
    .nav a:hover{background:#142036;color:var(--txt)}
    .nav a.active{background:linear-gradient(90deg,#16294d,#141d33);color:#fff;border:1px solid #1f3a66}
    .ico{flex:0 0 18px;height:18px;display:inline-grid;place-items:center;opacity:.9}
    .ico svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
    .nav a.active .ico{opacity:1}
    .foot .support{display:flex;align-items:center;gap:8px}
    .foot .footmark{display:flex;align-items:center;gap:7px;margin:12px 0 10px;opacity:.65}
    .foot .footmark svg{width:18px;height:auto}
    .foot .footmark span{font-size:11px;font-weight:800;letter-spacing:.02em;color:var(--txt)}
    .foot .footmark b{color:var(--cyan)}
    /* protocol preset chips + enable toggle */
    .pchip{background:#0e1726;border:1px solid var(--line);color:var(--muted);border-radius:7px;padding:4px 10px;font-size:12px;font-weight:600;cursor:pointer;font-family:var(--mono)}
    .pchip:hover{color:var(--txt);border-color:var(--accent)}
    .pchip.on{background:rgba(37,99,235,.18);border-color:var(--accent);color:#fff}
    .switch{position:relative;display:inline-block;width:32px;height:18px;vertical-align:middle;margin-right:9px;cursor:pointer}
    .switch input{opacity:0;width:0;height:0;position:absolute}
    .switch .sl{position:absolute;inset:0;background:#2a3550;border-radius:999px;transition:.2s}
    .switch .sl:before{content:"";position:absolute;width:14px;height:14px;left:2px;top:2px;background:#8b98ab;border-radius:50%;transition:.2s}
    .switch input:checked + .sl{background:linear-gradient(90deg,var(--accent),var(--accent2))}
    .switch input:checked + .sl:before{transform:translateX(14px);background:#fff}
    /* login background scene */
    #login .lbg{position:absolute;inset:0;overflow:hidden;z-index:0;pointer-events:none}
    #login .lau{position:absolute;border-radius:50%;filter:blur(70px);mix-blend-mode:screen}
    #login .lau1{width:60vw;height:60vw;left:-12vw;top:-18vw;background:radial-gradient(circle,#2563eb,transparent 60%);opacity:.5;animation:lgd1 16s ease-in-out infinite}
    #login .lau2{width:52vw;height:52vw;right:-12vw;top:-6vw;background:radial-gradient(circle,#7dd3fc,transparent 60%);opacity:.32;animation:lgd2 20s ease-in-out infinite}
    @keyframes lgd1{50%{transform:translate(6vw,4vw) scale(1.12)}}
    @keyframes lgd2{50%{transform:translate(-5vw,5vw) scale(1.15)}}
    #login .lstars{position:absolute;inset:0;background-image:radial-gradient(1.4px 1.4px at 12% 22%,rgba(255,255,255,.7),transparent),radial-gradient(1.2px 1.2px at 78% 14%,rgba(255,255,255,.55),transparent),radial-gradient(1.5px 1.5px at 46% 9%,rgba(255,255,255,.5),transparent),radial-gradient(1.2px 1.2px at 88% 30%,rgba(255,255,255,.45),transparent),radial-gradient(1.3px 1.3px at 28% 38%,rgba(255,255,255,.4),transparent);animation:ltw 6s ease-in-out infinite}
    @keyframes ltw{50%{opacity:.6}}
    #login .lrange{position:absolute;left:0;right:0;bottom:0;width:100%;height:min(42vh,340px)}
    #login .lridge{stroke-dasharray:40 380;animation:ldash 4s linear infinite}
    @keyframes ldash{to{stroke-dashoffset:-420}}
    #login form{position:relative;z-index:1}
    @media (prefers-reduced-motion:reduce){#login *{animation:none!important}}
    .side .foot{margin-top:auto;padding-top:18px;color:var(--muted);font-size:11px;font-family:var(--mono)}
    .side .support{display:block;color:#9fb3d1;font-family:var(--sans);font-size:13px;margin-bottom:12px}
    .side .support:hover{color:#fff}
    .main{flex:1;padding:26px 38px 60px;max-width:1060px}
    .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;gap:12px;flex-wrap:wrap}
    .top h1{margin:0;font-size:22px}
    .top .crumb{color:var(--muted);font-size:12px;font-family:var(--mono)}
    .pill{font-family:var(--mono);font-size:12px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:#0e1726;color:var(--muted)}
    .view{display:none}
    .view.active{display:block;animation:fade .18s ease}
    @keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
    .viewdesc{color:var(--muted);font-size:13px;margin:-6px 0 18px}
    .grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px}
    .stat{background:linear-gradient(180deg,var(--panel),var(--panel2));border:1px solid var(--line);border-radius:14px;padding:16px}
    .stat .k{color:var(--muted);font-size:12px}
    .stat .v{font-size:20px;font-weight:700;margin-top:6px}
    .stat .v.sm{font-size:15px;font-family:var(--mono)}
    .bar{height:6px;border-radius:6px;background:#1b2536;margin-top:10px;overflow:hidden}
    .bar > i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2))}
    .dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:7px;vertical-align:middle}
    .dot.ok{background:var(--ok);box-shadow:0 0 0 3px #22c55e22}
    .dot.warn{background:var(--warn);box-shadow:0 0 0 3px #f59e0b22}
    .dot.bad{background:var(--bad);box-shadow:0 0 0 3px #ef444422}
    .card{background:linear-gradient(180deg,var(--panel),var(--panel2));border:1px solid var(--line);border-radius:16px;padding:22px;margin-bottom:18px}
    .card h2{margin:0 0 4px;font-size:17px;display:flex;align-items:center;gap:9px}
    .card .desc{color:var(--muted);font-size:13px;margin-bottom:18px}
    .rd{display:grid;grid-template-columns:1.1fr .9fr;gap:24px}
    .diag{width:100%;max-width:430px;height:auto;display:block;margin:2px auto 18px;opacity:.9}
    .menubtn{display:none;position:fixed;top:12px;left:12px;z-index:40;background:#111826;border:1px solid var(--line);color:var(--txt);border-radius:9px;width:42px;height:42px;font-size:18px;cursor:pointer}
    .backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:37}
    @media(max-width:860px){
      .rd{grid-template-columns:1fr}.grid{grid-template-columns:repeat(2,1fr)}
      .menubtn{display:block}.main{padding-top:64px}
      .side{position:fixed;left:0;top:0;z-index:38;transform:translateX(-100%);transition:transform .2s ease}
      .side.open{transform:none;box-shadow:0 0 50px rgba(0,0,0,.6)}
      .backdrop.open{display:block}
    }
    .steps{counter-reset:s;display:flex;flex-direction:column;gap:14px}
    .step{display:flex;gap:13px;align-items:flex-start}
    .step::before{counter-increment:s;content:counter(s);flex:0 0 26px;height:26px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent2));display:grid;place-items:center;font-size:13px;font-weight:700}
    .step b{display:block;margin-bottom:2px}.step span{color:var(--muted);font-size:13px}
    .btn{display:inline-flex;align-items:center;gap:9px;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;font-weight:700;padding:13px 18px;border-radius:11px;font-size:14px;border:0;cursor:pointer;width:100%;justify-content:center}
    .btn:hover{filter:brightness(1.08)}
    .kv{border:1px solid var(--line);border-radius:11px;overflow:hidden}
    .kv .row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 13px;border-bottom:1px solid var(--line)}
    .kv .row:last-child{border-bottom:0}
    .kv .lbl{color:var(--muted);font-size:12px}
    .kv .val{font-family:var(--mono);font-size:12.5px;display:flex;align-items:center;gap:8px;max-width:62%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .copy{cursor:pointer;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:2px 7px;font-size:11px;background:#0e1726}
    .copy:hover{color:#fff;border-color:#2b4a7a}.copy.done{color:var(--ok);border-color:var(--ok)}
    .connect{display:flex;gap:9px;margin-top:14px}
    .connect input{flex:1;background:#0b1320;border:1px solid var(--line);border-radius:10px;color:var(--txt);padding:12px 13px;font-family:var(--mono);font-size:14px;outline:none}
    .connect input:focus{border-color:var(--accent)}.connect button{white-space:nowrap;width:auto;padding:12px 16px}
    .svc{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
    .svc .item{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:10px;padding:11px 13px;font-size:13px}
    .svc .item .s{font-family:var(--mono);font-size:11px;color:var(--muted)}
    .foot2{color:var(--muted);font-size:12px;font-family:var(--mono)}
    .cmd{background:#0b1320;border:1px solid var(--line);border-radius:9px;padding:11px 12px;font-family:var(--mono);font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-all;max-height:210px;overflow:auto;color:#cdd8e6;margin:8px 0}
    .tstep{display:flex;gap:9px;align-items:flex-start;margin:8px 0;font-size:13px}
    .tstep b{flex:none;width:20px;height:20px;border-radius:50%;background:#16213a;border:1px solid #24385f;color:#9fb3d1;display:flex;align-items:center;justify-content:center;font-size:11px;font-family:var(--mono)}
    .badgever{display:inline-block;background:#16213a;border:1px solid #24385f;border-radius:999px;padding:3px 10px;font-family:var(--mono);font-size:11px;color:#9fb3d1}
    .qmark{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;border:1px solid var(--line);background:#0e1726;color:var(--muted);font-size:11px;line-height:1;cursor:pointer;margin-left:6px;vertical-align:middle;padding:0}
    .qmark:hover{color:#fff;border-color:#2b4a7a}
    #popover{position:fixed;z-index:50;max-width:300px;background:#0e1726;border:1px solid #2b4a7a;border-radius:10px;padding:12px 14px;box-shadow:0 12px 40px rgba(0,0,0,.55);display:none}
    #popover h5{margin:0 0 5px;font-size:13px}#popover p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.5}
    #toasts{position:fixed;right:18px;bottom:18px;z-index:60;display:flex;flex-direction:column;gap:8px}
    .toast{background:#111826;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:9px;padding:10px 14px;font-size:13px;box-shadow:0 8px 30px rgba(0,0,0,.5);min-width:200px;animation:fade .18s}
    .toast.ok{border-left-color:var(--ok)}.toast.bad{border-left-color:var(--bad)}
    .onb{background:linear-gradient(180deg,#16213a,#101a2e);border:1px solid #24385f;border-radius:14px;padding:16px 18px;margin-bottom:18px}
    .onb h3{margin:0 0 8px;font-size:15px;display:flex;justify-content:space-between;align-items:center}
    .onb h3 a{color:var(--muted);font-size:12px;font-weight:400;cursor:pointer}
    .onb .oi{display:flex;align-items:center;gap:10px;padding:5px 0;font-size:14px;color:var(--muted)}
    .onb .oi.done{color:var(--txt)}
    .onb .ck{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--line);display:inline-grid;place-items:center;font-size:11px;flex:0 0 18px}
    .onb .oi.done .ck{background:var(--ok);border-color:var(--ok);color:#06210f}
    .onb .oi a.go{margin-left:auto;color:var(--accent);font-size:14px}
    .logt{width:100%;border-collapse:collapse;font-size:12.5px}
    .logt th,.logt td{border-bottom:1px solid var(--line);padding:7px 8px;text-align:left}
    .logt th{color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.03em}
    .logt td{font-family:var(--mono);color:#cdd8e6}
    .logt td.path{max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .logwrap{overflow-x:auto}
    /* ── Zero-Trust access (JIT) — product view ── */
    .acc-intro{display:flex;gap:15px;align-items:flex-start;margin-bottom:18px}
    .acc-intro .ai-ic{flex:0 0 46px;height:46px;border-radius:13px;background:linear-gradient(135deg,#16294d,#0e1521);border:1px solid #1f3a66;display:grid;place-items:center}
    .acc-intro .ai-ic svg{width:23px;height:23px;stroke:var(--cyan);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
    .acc-intro h2{margin:0 0 3px;font-size:20px}
    .acc-intro .viewdesc{margin:0;max-width:640px}
    .acc-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}
    .acc-stats .stat .v{font-size:26px}
    .acc-stats .stat .v.ok{color:var(--ok)} .acc-stats .stat .v.warn{color:var(--warn)}
    .reqbar{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;background:#0d1526;border:1px solid var(--line);border-radius:13px;padding:14px}
    .reqbar .fld{display:flex;flex-direction:column;gap:5px;flex:1;min-width:140px}
    .reqbar .fld label{font-size:11px;color:var(--muted);font-family:var(--mono);letter-spacing:.03em;padding-left:2px}
    .reqbar select,.reqbar input{background:#0b1320;border:1px solid var(--line);border-radius:9px;color:var(--txt);padding:11px 12px;font-size:14px;width:100%;font-family:var(--sans)}
    .reqbar select:focus,.reqbar input:focus{border-color:var(--accent);outline:none}
    .reqbar .btn{width:auto;flex:0 0 auto}
    .acc-group{display:flex;align-items:center;gap:9px;margin:18px 0 11px;color:var(--muted);font-size:11px;letter-spacing:.06em;text-transform:uppercase}
    .acc-group::after{content:"";flex:1;height:1px;background:var(--line)}
    .acc-group .n{background:#16213a;border:1px solid #24385f;border-radius:999px;padding:1px 8px;font-size:11px;color:#9fb3d1}
    .gr{background:linear-gradient(180deg,#111b2e,#0e1521);border:1px solid var(--line);border-radius:13px;padding:14px 16px;margin-bottom:10px;transition:border-color .2s}
    .gr.on{border-color:#1f5133}.gr.pend{border-color:#5a4a1e}.gr.done{opacity:.6}
    .gr-top{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
    .gr-svc{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700}
    .gr-dom{color:var(--muted);font-weight:400;font-family:var(--mono);font-size:13px}
    .gr-arrow{color:var(--muted)}
    .gr-who{font-family:var(--mono);font-size:13px;color:var(--cyan)}
    .spill{margin-left:auto;font-size:11px;font-weight:700;padding:3px 10px;border-radius:999px;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
    .spill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
    .spill.ok{color:#4ade80;background:rgba(34,197,94,.13)}
    .spill.warn{color:#fbbf24;background:rgba(245,158,11,.13)}
    .spill.bad{color:#f87171;background:rgba(239,68,68,.13)}
    .spill.mut{color:#94a3b8;background:rgba(148,163,184,.13)}
    .gr-cd{display:flex;align-items:center;gap:12px;margin-top:12px}
    .cdbar{flex:1;height:7px;border-radius:6px;background:#1b2536;overflow:hidden;min-width:80px}
    .cdbar>i{display:block;height:100%;width:100%;border-radius:6px;background:linear-gradient(90deg,var(--ok),#4ade80);transition:width 1s linear,background .5s}
    .cdbar.mid>i{background:linear-gradient(90deg,var(--warn),#fbbf24)}
    .cdbar.low>i{background:linear-gradient(90deg,var(--bad),#f87171)}
    .cdlabel{font-family:var(--mono);font-size:13px;font-weight:700;min-width:54px;text-align:right}
    .gr-hint{flex:1;color:var(--muted);font-size:12.5px;display:flex;align-items:center;gap:7px}
    .gr-hint svg{flex:none}
    .gr-act{color:var(--accent);font-size:13px;cursor:pointer;white-space:nowrap}
    .gr-act:hover{text-decoration:underline}.gr-act.bad{color:var(--bad)}
    .site{background:linear-gradient(180deg,var(--panel),var(--panel2));border:1px solid var(--line);border-radius:13px;padding:14px 16px;margin-bottom:10px}
    .site-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
    .site-name{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px}
    .site-name svg{width:17px;height:17px;stroke:var(--cyan);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
    .keybadge{font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;display:inline-flex;align-items:center;gap:6px}
    .keybadge.on{color:#4ade80;background:rgba(34,197,94,.13)}.keybadge.off{color:#fbbf24;background:rgba(245,158,11,.13)}
    .site-meta{color:var(--muted);font-size:12px;margin-left:auto;font-family:var(--mono)}
    .site-tuns{display:flex;gap:6px;flex-wrap:wrap;margin:11px 0 2px;min-height:4px}
    .tchip{background:#0e1726;border:1px solid var(--line);border-radius:7px;padding:3px 9px;font-family:var(--mono);font-size:11.5px;color:#9fb3d1;display:inline-flex;align-items:center;gap:5px}
    .tchip .dot{margin:0}
    .site-acts{display:flex;gap:16px;margin-top:11px;flex-wrap:wrap}
    .acc-empty{text-align:center;color:var(--muted);padding:24px 12px;font-size:13px;border:1px dashed var(--line);border-radius:12px}
    @media(max-width:860px){.acc-stats{grid-template-columns:repeat(2,1fr)}}
    /* ── Remote Help (rdadmin.js): client book ── */
    .rh-wrap{display:grid;grid-template-columns:280px 1fr;gap:16px;align-items:start}
    .rh-wrap .card{margin-bottom:0;padding:16px}
    .rh-search{width:100%;background:#0b1320;border:1px solid var(--line);border-radius:10px;color:var(--txt);padding:11px 13px;font-size:14px;outline:none}
    .rh-search:focus{border-color:var(--accent)}
    .rh-co{display:flex;align-items:center;gap:8px;padding:9px 11px;border-radius:9px;cursor:pointer;border:1px solid transparent;margin-top:4px}
    .rh-co:hover{background:#142036}.rh-co.on{background:linear-gradient(90deg,#16294d,#141d33);border-color:#1f3a66}
    .rh-co b{flex:1;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .rh-co .s{font-family:var(--mono);font-size:11px;color:var(--muted);white-space:nowrap}
    .rh-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px}
    .rh-head h2{margin:0;font-size:18px}
    .rh-meta{color:var(--muted);font-size:12px;font-family:var(--mono);margin-bottom:12px}
    .rh-dev{display:grid;grid-template-columns:18px minmax(0,1.3fr) minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid var(--line);border-radius:11px;padding:10px 12px;margin-top:8px}
    .rh-dev.pend{border-color:#5a4a1e}.rh-dev.ret{opacity:.5}.rh-dev.ret .rh-name{text-decoration:line-through}
    .rh-name{font-weight:700;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .rh-sub{font-family:var(--mono);font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .rh-acts{display:flex;gap:12px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
    .rh-btn{width:auto;padding:7px 13px;font-size:12.5px;border-radius:9px}
    .rh-btn.sec{background:#16213a;border:1px solid #24385f}
    .rh-btn.bad{background:#3a1620;border:1px solid #6b2433}
    .dot.off{background:#64748b;box-shadow:0 0 0 3px #64748b22}
    /* partners / team / banners (partners.js, team.js, rdadmin banners) */
    .banner{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border-radius:12px;padding:11px 15px;margin-bottom:14px;font-size:13.5px;border:1px solid}
    .banner b{font-weight:700}.banner .sp{margin-left:auto;display:flex;gap:8px}
    .banner.info{background:rgba(37,99,235,.12);border-color:#24385f;color:#cfe0ff}
    .banner.warn{background:rgba(245,158,11,.1);border-color:rgba(245,158,11,.4);color:#fde68a}
    .banner.bad{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.45);color:#fecaca}
    .pt-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
    .pt-row{display:grid;grid-template-columns:10px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 11px;border-radius:11px;border:1px solid transparent;cursor:pointer;margin-bottom:4px}
    .pt-row:hover{background:#111b2e}.pt-row.on{background:#13213d;border-color:#24385f}
    .pt-row b{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-row .s{font-size:11.5px;color:var(--muted);font-family:var(--mono)}
    .pt-mini{width:64px}.pt-mini .bar{margin-top:4px;height:5px}
    .bar > i.warn{background:linear-gradient(90deg,#f59e0b,#fbbf24)}.bar > i.bad{background:linear-gradient(90deg,#ef4444,#f87171)}
    .rings{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:14px 0}
    .ringc{background:linear-gradient(180deg,var(--panel),var(--panel2));border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;align-items:center;gap:10px}
    @media(max-width:1100px){.rings{grid-template-columns:repeat(2,minmax(0,1fr))}}
    .ring{width:46px;height:46px;flex:0 0 46px}.ring circle{fill:none;stroke-width:7}.ring .bg{stroke:#1b2536}
    .ring .fg{stroke:url(#rgrad);stroke-linecap:round;transform:rotate(-90deg);transform-origin:50% 50%;transition:stroke-dashoffset 1.1s cubic-bezier(.2,.8,.2,1)}
    .ring .fg.warn{stroke:#f59e0b}.ring .fg.bad{stroke:#ef4444}
    .ringc>div{min-width:0}.ringc .k{color:var(--muted);font-size:12px;line-height:1.25;hyphens:auto}.ringc .v{font-size:19px;font-weight:800;margin-top:2px}.ringc .v small{font-size:12px;color:var(--muted);font-weight:600}
    .pt-sec{margin-top:18px}.pt-acts{display:flex;gap:8px;flex-wrap:wrap}
    .pt-plan{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:8px;margin:6px 0 4px}
    .pt-plan label{border:1px solid var(--line);border-radius:11px;padding:10px;cursor:pointer;background:#0b1320;display:block}
    .pt-plan input{display:none}.pt-plan label:has(input:checked){border-color:var(--accent);background:rgba(37,99,235,.14)}
    .pt-plan b{display:block}.pt-plan .s{font-size:11.5px;color:var(--muted);font-family:var(--mono)}
    .wiz-steps{display:flex;gap:6px;margin-bottom:14px}.wiz-steps i{flex:1;height:4px;border-radius:4px;background:#1b2536}.wiz-steps i.on{background:linear-gradient(90deg,var(--accent),var(--accent2))}
    .linkbox{display:flex;gap:8px;align-items:center;background:#0b1320;border:1px solid var(--line);border-radius:10px;padding:9px 11px;font-family:var(--mono);font-size:12px;word-break:break-all}
    .tl{border-left:2px solid var(--line);margin-left:6px;padding-left:14px}.tl div{position:relative;padding:5px 0;font-size:12.5px;color:#cdd8e6}
    .tl div::before{content:"";position:absolute;left:-20px;top:11px;width:9px;height:9px;border-radius:50%;background:var(--accent)}
    .tl .s{color:var(--muted);font-family:var(--mono);font-size:11px;margin-right:8px}
    .countup{font-variant-numeric:tabular-nums}
    .rh-modal{position:fixed;inset:0;z-index:55;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;padding:16px}
    .rh-box{background:#0f1729;border:1px solid #1f3a66;border-radius:14px;padding:22px;width:460px;max-width:100%;max-height:92vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.6)}
    .rh-box h3{margin:0 0 12px;font-size:17px}
    .rh-f{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}
    .rh-f label{font-size:11px;color:var(--muted);font-family:var(--mono);letter-spacing:.03em}
    .rh-f input,.rh-f select{background:#0b1320;border:1px solid var(--line);border-radius:9px;color:var(--txt);padding:10px 12px;font-size:14px;width:100%;font-family:var(--sans)}
    .rh-f input:focus,.rh-f select:focus{border-color:var(--accent);outline:none}
    .rh-mbtns{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}
    .rh-qr{display:flex;justify-content:center;margin:12px 0}.rh-qr svg{border-radius:8px}
    /* ── App access (access.js): per-application roles ── */
    .ax-legend{color:var(--muted);font-size:12.5px;line-height:1.55;margin:4px 0 14px;padding:10px 12px;border:1px dashed var(--line);border-radius:10px}
    .ax-sel{background:#0b1320;border:1px solid var(--line);border-radius:7px;color:var(--txt);padding:5px 8px;font-size:12px;font-family:var(--sans)}
    .ax-sel:focus{border-color:var(--accent);outline:none}
    .logt td.ax-u{font-family:var(--sans);min-width:180px}
    .ax-u b{display:block;font-size:13px;color:var(--txt)}
    .ax-u .s{font-family:var(--mono);font-size:11.5px;color:var(--muted)}
    .ax-u .spill{margin-left:6px;font-size:10px;padding:2px 8px}
    .logt tr.ax-dirty td{background:rgba(37,99,235,.07)}
    .ax-save{width:auto;padding:5px 12px;font-size:12px}
    .ax-save:disabled{opacity:.35;cursor:default}
    @media(max-width:860px){.rh-wrap{grid-template-columns:1fr}.rh-dev{grid-template-columns:18px minmax(0,1fr)}.rh-dev .rh-acts,.rh-dev .rh-col2{grid-column:2}.rh-acts{justify-content:flex-start}}
