:root{
  --surface-0:#ffffff; --surface-1:#f6f8fb; --surface-2:#edf1f7; --surface-3:#e1e7f0; --line:#dbe2ec; --line-soft:#e9edf3;
  --ink-1:#101828; --ink-2:#4b5768; --ink-3:#8b96a8;
  --accent:#2563eb; --accent-2:#3b82f6; --accent-glow:rgba(37,99,235,.25);
  --good:#16a34a; --warning:#d97706; --serious:#ea580c; --critical:#dc2626;
  --radius:12px; --radius-sm:8px;
  --shadow-1:0 1px 2px rgba(16,24,40,.06), 0 8px 24px -8px rgba(16,24,40,.10);
  --shadow-2:0 4px 12px rgba(16,24,40,.08), 0 24px 48px -16px rgba(16,24,40,.16);
  color-scheme:light;
}
*{box-sizing:border-box}
body{margin:0;background:var(--surface-0);color:var(--ink-1);
     font:14px/1.5 "Segoe UI",ui-sans-serif,system-ui,Roboto,sans-serif;
     background-image:radial-gradient(1200px 600px at 100% -10%, rgba(37,99,235,.06), transparent 60%);
     background-attachment:fixed;}
a{color:var(--accent-2)}
::selection{background:var(--accent-glow)}

button{font:inherit;cursor:pointer;border-radius:var(--radius-sm);border:1px solid var(--line);
       background:var(--surface-2);color:var(--ink-1);padding:7px 13px;
       transition:transform .12s ease, background-color .15s ease, border-color .15s ease, box-shadow .15s ease;}
button:hover{border-color:var(--ink-3);background:var(--surface-3)}
button:active{transform:scale(.97)}
button.primary{background:linear-gradient(180deg, var(--accent-2), var(--accent));border-color:var(--accent);color:#fff;font-weight:600;
       box-shadow:0 2px 10px -2px var(--accent-glow);}
button.primary:hover{filter:brightness(1.08);box-shadow:0 4px 16px -2px var(--accent-glow)}
button.sm{padding:4px 9px;font-size:12.5px}
button.danger{border-color:rgba(220,38,38,.4);color:var(--critical)}
button.danger:hover{background:rgba(220,38,38,.08);border-color:var(--critical)}
button:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}

input,select,textarea{font:inherit;background:var(--surface-0);color:var(--ink-1);
      border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px;width:100%;
      transition:border-color .15s ease, box-shadow .15s ease;}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}
label{display:block;font-size:12.5px;color:var(--ink-2);margin:12px 0 4px}
h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.01em}
code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px}

/* ---------- animations ---------- */
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes riseIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@keyframes popIn{from{opacity:0;transform:scale(.96) translateY(4px)}to{opacity:1;transform:scale(1) translateY(0)}}
@keyframes shimmer{0%{background-position:-400px 0}100%{background-position:400px 0}}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- login ---------- */
#login{min-height:100dvh;display:grid;place-items:center;padding:24px;position:relative;overflow:hidden}
.login-orb{position:absolute;border-radius:50%;filter:blur(60px);opacity:.35;pointer-events:none}
.login-orb-1{width:420px;height:420px;background:var(--accent);top:-120px;left:-120px}
.login-orb-2{width:380px;height:380px;background:#1e3a8a;bottom:-140px;right:-100px}
#login .card.login-card{width:100%;max-width:380px;background:var(--surface-1);
      border:1px solid var(--line);border-radius:16px;padding:32px;
      box-shadow:var(--shadow-2);animation:riseIn .45s ease both;position:relative;z-index:1;}
.brand{font-size:20px;font-weight:700;letter-spacing:-.01em;display:flex;align-items:center;gap:10px}
.brand span{color:var(--accent-2)}
.brand-lg{font-size:24px}
.brand-mark{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:9px;
      background:linear-gradient(160deg, var(--accent-2), var(--accent));color:#fff;font-weight:800;
      box-shadow:0 4px 14px -2px var(--accent-glow);}
#totpFields{animation:riseIn .3s ease both}
#totpFields input{letter-spacing:.3em;text-align:center;font-size:18px;font-weight:600}

/* ---------- app shell (sidebar layout) ---------- */
#app{display:none;min-height:100dvh}
#app.show{display:flex}
#sidebar{width:220px;flex:none;background:var(--surface-1);border-right:1px solid var(--line);
      display:flex;flex-direction:column;padding:18px 0;position:sticky;top:0;height:100dvh;}
#sidebar .brand{padding:0 20px 18px}
#nav{display:flex;flex-direction:column;gap:2px;padding:0 10px;flex:1}
#nav button{background:transparent;border:0;border-radius:var(--radius-sm);color:var(--ink-2);
      padding:10px 12px;text-align:left;display:flex;align-items:center;gap:10px;font-weight:500;}
#nav button:hover{background:var(--surface-2);color:var(--ink-1)}
#nav button[aria-current="true"]{color:var(--accent);background:linear-gradient(90deg, rgba(37,99,235,.14), rgba(37,99,235,.03));
      box-shadow:inset 2px 0 0 var(--accent);font-weight:650;}
#nav button .nav-ico{width:18px;height:18px;flex:none;display:inline-grid;place-items:center;opacity:.9}
#sidebarFooter{padding:14px 16px 0;border-top:1px solid var(--line-soft);margin-top:10px}
#whoName{font-weight:600;font-size:13px}
#sidebarFooter .muted{margin:2px 0 10px}
#sidebarFooter button{width:100%}

#mainCol{flex:1;min-width:0;display:flex;flex-direction:column}
main{padding:30px 36px 60px;width:100%;flex:1}
section[hidden]{display:none}
section{animation:fadeIn .25s ease both}
.head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:20px;
      padding-bottom:16px;border-bottom:1px solid var(--line-soft);}
.head h2{font-size:21px}
.muted{color:var(--ink-3);font-size:12.5px}

/* seletor de empresa do superadmin */
#scopeBar{display:flex;align-items:center;gap:10px;padding:16px 36px;background:var(--surface-1);
      border-bottom:1px solid var(--line);}
#scopeBar label{margin:0;white-space:nowrap}
#scopeBar select{width:auto;min-width:260px;padding:6px 10px}

/* ---------- stat tiles ---------- */
.tiles{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:30px}
.tile{position:relative;overflow:hidden;background:linear-gradient(160deg, var(--surface-2), var(--surface-1));
      border:1px solid var(--line);border-radius:var(--radius);padding:20px 20px 18px;box-shadow:var(--shadow-1);
      animation:riseIn .3s ease both;transition:transform .18s ease, border-color .18s ease, box-shadow .18s ease;}
.tile::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;
      background:var(--tile-color, var(--accent));opacity:.9}
.tile:hover{transform:translateY(-3px);border-color:var(--ink-3);box-shadow:var(--shadow-2)}
.tile .ico{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;margin-bottom:12px;
      background:color-mix(in srgb, var(--tile-color, var(--accent)) 18%, transparent);
      color:var(--tile-color, var(--accent));}
.tile .n{font-size:30px;font-weight:700;letter-spacing:-.02em;line-height:1.15;font-variant-numeric:tabular-nums}
.tile .k{font-size:12.5px;color:var(--ink-2);margin-top:4px}
.dot{width:8px;height:8px;border-radius:50%;flex:none;background:currentColor;box-shadow:0 0 0 3px currentColor;opacity:.9}

/* ---------- tables ---------- */
.wrap{background:var(--surface-1);border:1px solid var(--line);border-radius:var(--radius);overflow:auto;
      box-shadow:var(--shadow-1);animation:riseIn .3s ease both;}
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--line-soft);white-space:nowrap}
th{color:var(--ink-2);font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;
   background:var(--surface-1);position:sticky;top:0;}
tbody tr:last-child td{border-bottom:0}
tbody tr{transition:background-color .12s ease}
tbody tr:hover{background:var(--surface-2)}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;
      padding:3px 10px;border-radius:20px;border:1px solid var(--line);background:var(--surface-2)}
.actions{display:flex;gap:6px;flex-wrap:wrap}

.grid2{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start}
.card{background:linear-gradient(160deg, var(--surface-2), var(--surface-1));border:1px solid var(--line);
      border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-1);animation:riseIn .3s ease both;}
.msg{padding:10px 12px;border-radius:var(--radius-sm);font-size:13px;margin:12px 0;border:1px solid var(--line);
     background:var(--surface-2);display:flex;gap:8px;align-items:flex-start;animation:riseIn .2s ease both;}
.msg.err{border-color:var(--critical);background:rgba(220,38,38,.08)}
.msg.ok{border-color:var(--good);background:rgba(22,163,74,.08)}
.out{background:var(--surface-0);border:1px solid var(--line);border-radius:var(--radius-sm);
     padding:12px;margin-top:12px;font-family:ui-monospace,Menlo,monospace;font-size:12.5px;
     word-break:break-all;white-space:pre-wrap}
.empty{padding:40px 16px;text-align:center;color:var(--ink-3);font-size:13px}
.row{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}
.row>*{flex:1 1 160px}
.row>button{flex:0 0 auto}

/* ---------- skeleton loaders ---------- */
.skel{background:linear-gradient(90deg, var(--surface-2) 25%, var(--surface-3) 37%, var(--surface-2) 63%);
      background-size:800px 100%;animation:shimmer 1.4s linear infinite;border-radius:6px;}
.skel-row td{padding:14px}
.skel-line{height:12px;border-radius:6px}

/* ---------- spinner ---------- */
.spinner{width:16px;height:16px;border-radius:50%;border:2px solid color-mix(in srgb, currentColor 25%, transparent);
      border-top-color:currentColor;display:inline-block;animation:spin .7s linear infinite;vertical-align:-3px;}

/* ---------- toasts ---------- */
#toasts{position:fixed;top:18px;right:18px;display:flex;flex-direction:column;gap:10px;z-index:1000;
      max-width:360px;}
.toast{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);
      padding:12px 14px;box-shadow:var(--shadow-2);display:flex;gap:10px;align-items:flex-start;
      animation:riseIn .25s ease both;font-size:13px;}
.toast.ok{border-color:var(--good)}
.toast.err{border-color:var(--critical)}
.toast .ico{flex:none;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;
      font-size:11px;font-weight:700;color:#fff;}
.toast.ok .ico{background:var(--good)}
.toast.err .ico{background:var(--critical)}
.toast.info .ico{background:var(--accent)}

/* ---------- modal ---------- */
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(2px);
      display:grid;place-items:center;z-index:900;animation:fadeIn .18s ease both;padding:20px;}
.modal-panel{background:var(--surface-1);border:1px solid var(--line);border-radius:16px;
      width:100%;max-width:440px;padding:24px;box-shadow:var(--shadow-2);animation:popIn .2s ease both;}
.modal-panel h3{font-size:16px;margin-bottom:4px}
.modal-panel .modal-actions{display:flex;gap:10px;margin-top:20px}
.modal-panel .modal-actions button{flex:1}

/* ---------- remote viewer ---------- */
.viewer-panel{max-width:920px;width:100%;padding:0;overflow:hidden}
.viewer-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;
      border-bottom:1px solid var(--line);background:var(--surface-2);}
.viewer-status{font-size:12.5px;color:var(--ink-2);display:flex;align-items:center;gap:8px}
.viewer-stage{background:#000;aspect-ratio:16/9;display:grid;place-items:center;position:relative;
      cursor:crosshair;}
.viewer-stage img{max-width:100%;max-height:100%;display:block;user-select:none;-webkit-user-drag:none}
.viewer-stage .empty{color:#555}
.viewer-footer{padding:10px 18px;font-size:11.5px;color:var(--ink-3);border-top:1px solid var(--line)}
