/* Neutral shell. The accent is injected per customer from /api/branding,
   so this stylesheet is identical for every tenant. */
:root{
  --accent:#2F6FED;            /* replaced at runtime per tenant */
  --accent-ink:#FFFFFF;
  --accent-soft:rgba(47,111,237,0.10);

  --bg:#F4F6FA;
  --surface:#FFFFFF;
  --surface-2:#F8FAFC;
  --border:#DDE3ED;
  --text:#101828;
  --muted:#5A6779;

  --ok:#17794A;
  --warn:#8A5D00;
  --crit:#B4382F;

  --sans:'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --mono:'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace;

  --radius:12px;
  --shadow:0 1px 2px rgba(16,24,40,.05), 0 6px 20px rgba(16,24,40,.06);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0F1218;
    --surface:#171B23;
    --surface-2:#1D2230;
    --border:#2A3242;
    --text:#E8ECF3;
    --muted:#98A5B8;
    --ok:#3CB37A;
    --warn:#D3A029;
    --crit:#E36B60;
    --shadow:0 1px 2px rgba(0,0,0,.3), 0 6px 20px rgba(0,0,0,.35);
  }
}
:root[data-theme="dark"]{
  --bg:#0F1218; --surface:#171B23; --surface-2:#1D2230; --border:#2A3242;
  --text:#E8ECF3; --muted:#98A5B8;
  --ok:#3CB37A; --warn:#D3A029; --crit:#E36B60;
  --shadow:0 1px 2px rgba(0,0,0,.3), 0 6px 20px rgba(0,0,0,.35);
}

*{box-sizing:border-box;}
/* A class like .boot{display:flex} outbeats the UA's [hidden] rule, so state
   it explicitly — otherwise el.hidden = true silently does nothing. */
[hidden]{display:none!important;}
html,body{height:100%;}
body{
  margin:0;background:var(--bg);color:var(--text);
  font-family:var(--sans);font-size:15px;line-height:1.55;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
.num{font-variant-numeric:tabular-nums;}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px;}
@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important;}}

/* ---------- boot ---------- */
.boot{
  min-height:70vh;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:14px;color:var(--muted);
}
.boot-spinner{
  width:26px;height:26px;border-radius:50%;
  border:2.5px solid var(--border);border-top-color:var(--accent);
  animation:spin .8s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg);}}

/* ---------- shell ---------- */
.wrap{max-width:940px;margin:0 auto;padding-inline:16px;padding-block:24px 64px;}

.topbar{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding-block:14px;margin-bottom:22px;border-bottom:1px solid var(--border);
}
.logo{
  width:34px;height:34px;border-radius:9px;flex-shrink:0;object-fit:contain;
  background:var(--accent);color:var(--accent-ink);
  display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:14px;letter-spacing:.02em;
}
.brandname{font-weight:600;font-size:15px;letter-spacing:-.01em;}
.brandsub{font-family:var(--mono);font-size:11px;color:var(--muted);}
.grow{flex:1 1 auto;}

.whoami{font-size:12.5px;color:var(--muted);text-align:right;line-height:1.35;}
.whoami b{color:var(--text);font-weight:600;display:block;}

h1{font-size:23px;margin:0 0 6px;font-weight:700;letter-spacing:-.02em;text-wrap:balance;}
.lede{color:var(--muted);font-size:14px;margin:0 0 22px;max-width:62ch;}

/* ---------- buttons ---------- */
button{font-family:inherit;font-size:14px;cursor:pointer;border-radius:9px;transition:.15s;}
.btn{
  background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent);
  padding:9px 16px;font-weight:600;
}
.btn:hover:not(:disabled){filter:brightness(1.07);}
.btn:disabled{opacity:.55;cursor:not-allowed;}
.btn-ghost{
  background:var(--surface);color:var(--text);border:1px solid var(--border);
  padding:8px 14px;font-weight:500;
}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent);}
.btn-sm{padding:5px 11px;font-size:12.5px;}

/* ---------- card ---------- */
.card{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:20px;margin-bottom:18px;box-shadow:var(--shadow);
}
.card h2{font-size:15px;margin:0 0 3px;font-weight:600;letter-spacing:-.01em;}
.card .desc{color:var(--muted);font-size:13px;margin:0 0 16px;}

/* ---------- login ---------- */
.login-shell{min-height:82vh;display:flex;align-items:center;justify-content:center;padding:16px;}
.login{width:100%;max-width:390px;}
.login .card{padding:26px;}
.login-head{text-align:center;margin-bottom:22px;}
.login-head .logo{width:46px;height:46px;border-radius:12px;font-size:18px;margin:0 auto 12px;}
.login-head h1{font-size:20px;margin-bottom:3px;}
.login-head p{color:var(--muted);font-size:13px;margin:0;}

label{display:block;font-size:12.5px;font-weight:500;color:var(--muted);margin-bottom:6px;}
input[type=email],input[type=password],input[type=text],select{
  width:100%;padding:10px 12px;font-family:inherit;font-size:14.5px;
  background:var(--surface-2);color:var(--text);
  border:1px solid var(--border);border-radius:9px;outline:none;
}
input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);}
.field{margin-bottom:15px;}

.alert{
  border-radius:9px;padding:10px 13px;font-size:13.5px;margin-bottom:15px;
  border:1px solid;display:flex;gap:9px;align-items:flex-start;
}
.alert-err{background:color-mix(in srgb,var(--crit) 10%,transparent);border-color:color-mix(in srgb,var(--crit) 35%,transparent);color:var(--crit);}
.alert-ok{background:color-mix(in srgb,var(--ok) 10%,transparent);border-color:color-mix(in srgb,var(--ok) 35%,transparent);color:var(--ok);}
.alert-warn{background:color-mix(in srgb,var(--warn) 10%,transparent);border-color:color-mix(in srgb,var(--warn) 35%,transparent);color:var(--warn);}

/* ---------- rules ---------- */
.rule{
  display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;
  padding:13px 0;border-bottom:1px solid var(--border);
}
.rule:last-child{border-bottom:none;}
.rule-when{font-weight:600;font-size:14px;}
.rule-to{font-family:var(--mono);font-size:12.5px;color:var(--muted);margin-top:2px;}
.badge{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;
  padding:3px 8px;border-radius:5px;font-weight:600;white-space:nowrap;
  background:var(--accent-soft);color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);
}
.badge.off{background:transparent;color:var(--muted);border-color:var(--border);}

.empty{color:var(--muted);font-size:13.5px;padding:20px 0;text-align:center;}

/* ---------- history ---------- */
.hist{width:100%;border-collapse:collapse;font-size:13px;}
.hist th{
  text-align:left;font-family:var(--mono);font-size:10.5px;text-transform:uppercase;
  letter-spacing:.05em;color:var(--muted);font-weight:500;
  padding:7px 8px;border-bottom:1px solid var(--border);white-space:nowrap;
}
.hist td{padding:9px 8px;border-bottom:1px solid var(--border);vertical-align:top;}
.hist tr:last-child td{border-bottom:none;}
.hist .r-ok{color:var(--ok);font-weight:600;}
.hist .r-error{color:var(--crit);font-weight:600;}
.hist .r-denied{color:var(--warn);font-weight:600;}
.hist-scroll{overflow-x:auto;}

.support{
  margin-top:26px;padding-top:18px;border-top:1px solid var(--border);
  font-size:13px;color:var(--muted);text-align:center;
}
.support a{color:var(--accent);text-decoration:none;}
.support a:hover{text-decoration:underline;}

@media (max-width:520px){
  .rule{grid-template-columns:1fr;gap:8px;}
  .whoami{text-align:left;}
}


/* ---------- support view banner ----------
   An operator viewing as a customer must never be able to forget it, and a
   customer looking over their shoulder should see it too. Fixed to the top,
   in a colour that belongs to no tenant's brand. */
.supportbar{
  position:fixed;top:0;left:0;right:0;z-index:60;
  background:#8A2B22;color:#FFF3F1;
  padding:8px 16px;
  padding-top:calc(8px + env(safe-area-inset-top, 0px));
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  font-size:13px;font-weight:500;
  box-shadow:0 2px 12px rgba(0,0,0,.28);
}
.supportbar .dot{
  width:8px;height:8px;border-radius:50%;background:#FF8A7A;flex-shrink:0;
  animation:sb 2s infinite;
}
@keyframes sb{50%{opacity:.35;}}
.supportbar b{font-weight:700;}
.supportbar .grow{flex:1 1 auto;}
.supportbar .left{font-family:var(--mono);font-size:12px;opacity:.9;}
.supportbar button{
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.4);
  color:#FFF3F1;border-radius:7px;padding:5px 12px;font-size:12.5px;font-weight:600;
  font-family:inherit;cursor:pointer;
}
.supportbar button:hover{background:rgba(255,255,255,.24);}
body.supporting{padding-top:52px;}
@media (max-width:520px){ body.supporting{padding-top:76px;} }
