:root{
  --neon:#7AEDCC;--logic:#3DB28B;--grey:#B2B5BF;--slate:#333940;--onyx:#000;
  --bg:#F2F3F5;--panel:#fff;--panel-2:#F7F8F9;--line:#DCDEE3;--ink:#333940;--ink-2:#6B707A;--danger:#C2362F;--warn:#A86A00;--ok:#1F7A5E;
  --ui:"DM Sans",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;--num:"Space Grotesk","DM Sans",system-ui,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{background:var(--bg);color:var(--ink);font:14px/1.45 var(--ui);-webkit-font-smoothing:antialiased}
button,input,select{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--logic);outline-offset:2px}
.top{display:flex;align-items:center;gap:14px;padding:12px 20px;background:var(--slate);color:#fff;flex-wrap:wrap}
.top img{height:20px;display:block}
.top .prod{font:500 13px var(--num);color:var(--neon);padding-left:12px;border-left:1px solid #5a6069}
.top .sp{flex:1}
.top .who{color:#C9CCD3;font-size:13px}
.top a,.top button.lnk{color:#fff;text-decoration:none;border:1px solid #4a5059;border-radius:6px;padding:5px 10px;background:transparent;cursor:pointer;font-size:13px}
.top a:hover,.top button.lnk:hover{border-color:var(--grey)}
.langsw{display:flex;border:1px solid #4a5059;border-radius:6px;overflow:hidden}
.langsw button{background:transparent;border:0;color:#C9CCD3;padding:5px 9px;cursor:pointer;font:600 12px var(--num)}
.langsw button[aria-pressed="true"]{background:#fff;color:#000}
.page{max-width:1180px;margin:0 auto;padding:24px 20px 60px}
h1{font:600 22px/1.3 var(--ui);margin:0 0 4px}
.lead{color:var(--ink-2);margin:0 0 20px;max-width:70ch}
.btn{border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:7px 13px;border-radius:6px;cursor:pointer;font-weight:500;white-space:nowrap}
.btn:hover{border-color:var(--grey)}
.btn.primary{background:var(--neon);border-color:var(--neon);color:#000}
.btn.primary:hover{background:#9af3da}
.btn.small{padding:3px 9px;font-size:12.5px}
.btn.danger{color:var(--danger)}
.btn[disabled]{opacity:.5;cursor:default}
.in{width:100%;border:1px solid var(--line);background:var(--panel-2);border-radius:6px;padding:8px 10px}
.in:focus{border-color:var(--logic);outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--logic) 30%,transparent)}
label.f{display:block;margin:0 0 12px}
label.f>span{display:block;font-size:12.5px;color:var(--ink-2);margin-bottom:4px}
.msg{min-height:20px;font-size:13px;margin:6px 0}
.msg.err{color:var(--danger)}.msg.ok{color:var(--ok)}
/* login */
.login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}
.login .art{position:relative;overflow:hidden;color:#fff;display:flex;flex-direction:column;justify-content:space-between;padding:40px;
  background:radial-gradient(110% 150% at 100% 100%,var(--neon) 0%,var(--logic) 26%,rgba(61,178,139,0) 58%),linear-gradient(118deg,#000 0%,var(--slate) 40%,#34584f 75%,var(--logic) 100%)}
.login .art img{height:34px;align-self:flex-start}
.login .art h2{font:500 40px/1.1 var(--num);margin:0;max-width:12ch}
.login .art p{color:#d6f8ee;max-width:42ch}
.login .form{display:grid;place-items:center;padding:40px 24px;background:var(--panel)}
.login form{width:min(360px,100%)}
.login h1{margin-bottom:18px}
.login .langsw{border-color:var(--line);margin-bottom:24px;width:max-content}
.login .langsw button{color:var(--ink-2)}
.login .langsw button[aria-pressed="true"]{background:var(--slate);color:#fff}
@media (max-width:820px){.login{grid-template-columns:1fr}.login .art{min-height:220px;padding:24px}.login .art h2{font-size:28px}}
/* cards */
.apps{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.app{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px;text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:6px;transition:border-color .15s}
.app:hover{border-color:var(--logic)}
.app b{font-size:16px}.app span{color:var(--ink-2);font-size:13px}
.app i{font-style:normal;width:40px;height:40px;border-radius:10px;background:var(--slate);color:var(--neon);display:grid;place-items:center;font:600 18px var(--num);margin-bottom:6px}
/* table */
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 12px}
.tbl{overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:10px}
table{border-collapse:collapse;width:100%;font-size:13.5px}
th{background:var(--panel-2);text-align:left;font-weight:600;color:var(--ink-2);padding:9px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
tr:last-child td{border-bottom:0}
tr.off td{opacity:.5}
.tag{display:inline-block;font-size:11px;font-weight:600;padding:1px 8px;border-radius:999px;background:var(--panel-2);color:var(--ink-2);margin-right:4px}
.tag.admin{background:var(--slate);color:#fff}.tag.app{background:color-mix(in srgb,var(--logic) 16%,transparent);color:var(--ok)}
.tag.warn{background:color-mix(in srgb,var(--warn) 16%,transparent);color:var(--warn)}
.num{font-family:var(--num)}
.bar{display:inline-block;width:80px;height:6px;border-radius:3px;background:var(--panel-2);border:1px solid var(--line);overflow:hidden;vertical-align:middle;margin-right:6px}
.bar i{display:block;height:100%;background:var(--logic)}
.acts{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.sub td{background:var(--panel-2);font-size:12.5px}
.sub ul{margin:4px 0;padding-left:18px}
/* dialog */
dialog{border:0;border-radius:12px;padding:0;width:min(520px,94vw);box-shadow:0 30px 80px rgba(0,0,0,.35)}
dialog::backdrop{background:rgba(10,12,14,.55)}
dialog header{padding:14px 18px;border-bottom:1px solid var(--line);font:600 16px var(--ui)}
dialog .body{padding:16px 18px}
dialog footer{padding:12px 18px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.checks{display:flex;gap:14px;flex-wrap:wrap}
.checks label{display:flex;gap:6px;align-items:center}
.hint{font-size:12px;color:var(--ink-2)}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:var(--slate);color:#fff;padding:10px 16px;border-radius:8px;font-size:13.5px;z-index:99}
.toast[hidden]{display:none}
a.btn{text-decoration:none;display:inline-block}
td.num{white-space:nowrap}
.app.soon{opacity:.55;cursor:default}.app.soon:hover{border-color:var(--line)}
.app em{font-style:normal;font-size:11px;font-weight:600;color:var(--warn);text-transform:uppercase;letter-spacing:.04em}
.app.adm i{background:var(--neon);color:#000}
.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-top:28px}
.card h2{font:600 17px var(--ui);margin:0 0 2px}
.row3{display:grid;grid-template-columns:2fr 1fr 1.4fr 1.4fr;gap:10px}
.okline{font-size:13px;color:var(--ok)}
pre.out{background:#1d2126;color:#d6f8ee;border-radius:8px;padding:10px 12px;max-height:320px;overflow:auto;font-size:12px;margin:8px 0 0;white-space:pre-wrap}
textarea.in{font:12.5px ui-monospace,Menlo,monospace;min-height:64px}
@media (max-width:820px){.row3,.row2{grid-template-columns:1fr}}
tr.warnrow td{background:color-mix(in srgb,var(--warn) 8%,transparent)}
/* "view as": the whole top bar turns yellow so nobody forgets */
.top.viewas{background:#F2B705;color:#1d1d1d}
.top.viewas .who{color:#1d1d1d;font-weight:500}
.top.viewas a{color:#1d1d1d;border-color:#1d1d1d;font-weight:600}
/* access links */
.links .lrow{display:grid;grid-template-columns:minmax(150px,220px) 1fr auto;gap:10px;align-items:center;padding:7px 0;border-top:1px solid var(--line)}
.links .lrow:first-of-type{border-top:0}
.links code{font:12px ui-monospace,Menlo,monospace;overflow-wrap:anywhere;color:inherit;opacity:.85}
@media (max-width:640px){.links .lrow{grid-template-columns:1fr auto}.links .lname{grid-column:1/-1;font-weight:600}}
/* "view as" menu in the users table */
.vmenu{position:relative;display:inline-block}
.vmenu>summary{list-style:none}
.vmenu>summary::-webkit-details-marker{display:none}
.vmenu .menu{position:absolute;right:0;top:calc(100% + 4px);z-index:20;min-width:220px;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 30px rgba(0,0,0,.25);padding:6px;display:flex;flex-direction:column;gap:2px}
.vmenu .menu button{all:unset;cursor:pointer;padding:7px 10px;border-radius:6px;font-size:13px}
.vmenu .menu button:hover{background:rgba(122,237,204,.18)}
.vmenu .menu .hint{padding:4px 10px 6px;font-size:12px;max-width:240px}
.top.viewas .prod{color:#1d1d1d;border-left-color:#1d1d1d}
.top.viewas .langsw button{color:#1d1d1d}
.in.small{width:auto;padding:2px 6px;font-size:12px;margin-left:4px}
/* company brand */
.btn.primary{color:var(--on-neon,#000)}
.top img.blogo{height:30px;max-width:200px;object-fit:contain;background:transparent;padding:0}
.login .art img.blogo{height:48px;background:#fff;border-radius:8px;padding:6px 10px}
.orglogo{height:28px;max-width:90px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:4px;padding:2px}
.sw{display:inline-block;width:14px;height:14px;border-radius:3px;border:1px solid var(--line);vertical-align:middle;margin-right:3px}
.checks label.dis{opacity:.45}
.checks label.nb .nbt{color:var(--warn);font-style:normal}
.ufilt{flex-wrap:wrap;gap:8px}
input[type=color].in{height:38px;padding:3px;cursor:pointer}

/* Odoo customer search (company registration) */
.opres{position:absolute;z-index:30;left:0;right:0;top:100%;margin-top:2px;max-height:300px;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.18)}
.oprow{display:block;width:100%;text-align:left;padding:7px 10px;border:0;border-bottom:1px solid var(--line);background:none;color:var(--ink);font:inherit;cursor:pointer}
.oprow:hover:not(:disabled){background:var(--panel-2)}.oprow:disabled{opacity:.55;cursor:not-allowed}

/* v7.30 · Nexus look for states: no mustard yellow, straight tags with a colour bar (like the Cloud) */
:root{--warn:#C4581C}
.tag{border-radius:2px;border-left:3px solid var(--grey,#B2B5BF);padding:1px 7px 1px 6px}
.tag.app{background:var(--panel-2);color:var(--ink);border-left-color:var(--logic,#3DB28B)}
.tag.warn{background:var(--panel-2);color:var(--ink);border-left-color:var(--warn)}
.tag.admin{border-left-color:var(--neon,#7AEDCC)}
tr.warnrow td{background:color-mix(in srgb,var(--warn) 7%,transparent)}
