/* Nevatronix SSO + Portal Hub — light, elegant, gold + ink. */
:root {
  --bg:#f4f2ec; --bg2:#efece4; --card:#fffefb; --card-soft:#fbfaf6;
  --ink:#1f2330; --ink-soft:#3a4050; --ink-muted:#6b7080;
  --border:#e5e3dd; --border-soft:#efede7; --border-strong:#d5d2c8;
  --accent:#826C34; --accent-soft:#f0e8d2; --accent-deep:#5f4e25; --accent-line:#cbb988;
  --done:#5a7d6c; --warn:#a77a3e; --danger:#9b5c4e;
  --font:-apple-system,BlinkMacSystemFont,"Inter","Segoe UI","Helvetica Neue",sans-serif;
  --mono:"SF Mono","Menlo","Courier New",monospace;
  --radius:10px; --radius-lg:14px;
  --shadow-sm:0 1px 2px rgba(31,35,48,.04); --shadow-md:0 6px 22px rgba(31,35,48,.07);
  --shadow-lg:0 14px 40px rgba(31,35,48,.10);
}
* { box-sizing:border-box; }
body { margin:0; color:var(--ink); font-family:var(--font); line-height:1.5;
  -webkit-font-smoothing:antialiased;
  background:
    radial-gradient(1100px 460px at 78% -8%, rgba(130,108,52,.07), transparent 60%),
    linear-gradient(180deg, var(--bg) 0%, var(--bg2) 100%);
  background-attachment:fixed; min-height:100vh; }
a { color:var(--accent-deep); text-decoration:none; }
a:hover { text-decoration:underline; }
.logo { height:30px; width:auto; display:block; }

/* ── Centered auth card (login / no-access) ── */
.auth-wrap { min-height:100vh; display:flex; align-items:center; justify-content:center; padding:24px; }
.auth-card { width:100%; max-width:390px; background:var(--card); border:1px solid var(--border);
  border-radius:var(--radius-lg); box-shadow:var(--shadow-lg); padding:40px 34px;
  position:relative; overflow:hidden; }
.auth-card::before { content:""; position:absolute; top:0; left:0; right:0; height:3px;
  background:linear-gradient(90deg, var(--accent), var(--accent-line)); }
.auth-card .logo { margin:0 auto 22px; height:36px; }
.auth-card h1 { font-size:19px; font-weight:650; text-align:center; margin:0 0 4px; letter-spacing:-.01em; }
.auth-card .sub { text-align:center; color:var(--ink-muted); font-size:13px; margin:0 0 26px; }
label { display:block; font-size:11.5px; font-weight:650; color:var(--ink-soft);
  text-transform:uppercase; letter-spacing:.06em; margin-bottom:6px; }
input[type=text], input[type=email], input[type=password], select, input:not([type]) {
  width:100%; padding:11px 13px; border:1px solid var(--border-strong); border-radius:var(--radius);
  font-size:14px; font-family:var(--font); background:#fff; color:var(--ink); margin-bottom:16px;
  transition:border-color .15s, box-shadow .15s; }
input:focus, select:focus { outline:none; border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); }
button, .btn { display:inline-block; background:var(--accent); color:#fff; border:none;
  padding:11px 20px; border-radius:var(--radius); font-size:14px; font-weight:650; cursor:pointer;
  font-family:var(--font); transition:background .15s, transform .05s; letter-spacing:.01em; }
button:hover, .btn:hover { background:var(--accent-deep); text-decoration:none; }
button:active { transform:translateY(1px); }
button.block { width:100%; }
.btn-sm { padding:6px 12px; font-size:12px; }
.btn-ghost { background:transparent; color:var(--ink-soft); border:1px solid var(--border-strong); }
.btn-ghost:hover { background:var(--card-soft); color:var(--ink); }
.btn-danger { background:var(--danger); }
.err { background:#fbecea; border:1px solid #e6c9c2; color:var(--danger); padding:10px 12px;
  border-radius:var(--radius); font-size:13px; margin-bottom:16px; }

/* ── App shell (hub / admin) ── */
.topbar { background:rgba(255,254,251,.82); backdrop-filter:saturate(1.4) blur(10px);
  border-bottom:1px solid var(--border); padding:0 30px; height:66px; display:flex;
  align-items:center; justify-content:space-between; position:sticky; top:0; z-index:5; }
.topbar .left { display:flex; align-items:center; gap:13px; }
.topbar .brandmark { display:flex; flex-direction:column; line-height:1.15; border-left:1px solid var(--border-strong); padding-left:13px; }
.topbar .brandmark b { font-weight:650; font-size:14.5px; letter-spacing:-.01em; }
.topbar .brandmark span { font-size:11px; color:var(--ink-muted); letter-spacing:.03em; }
.topbar .right { display:flex; align-items:center; gap:16px; font-size:13px; color:var(--ink-muted); }
.topbar .who { display:flex; align-items:center; gap:8px; }
.topbar .avatar { width:30px; height:30px; border-radius:50%; background:var(--accent-soft);
  color:var(--accent-deep); font-weight:700; font-size:13px; display:flex; align-items:center;
  justify-content:center; border:1px solid var(--accent-line); }
.container { max-width:1120px; margin:0 auto; padding:34px 30px 70px; }

.hero { margin:6px 0 8px; }
.hero h1 { font-size:24px; font-weight:680; letter-spacing:-.02em; margin:0 0 3px; }
.hero p { margin:0; color:var(--ink-muted); font-size:14px; }

.flash { padding:11px 14px; border-radius:var(--radius); font-size:13px; margin-bottom:14px; }
.flash.ok { background:#eaf2ee; border:1px solid #cfe1d7; color:var(--done); }
.flash.error { background:#fbecea; border:1px solid #e6c9c2; color:var(--danger); }
.flash.secret { background:var(--accent-soft); border:1px solid #ddcfa6; color:var(--accent-deep);
  font-family:var(--mono); font-size:12px; word-break:break-all; }

/* ── Hub tiles ── */
.section-label { display:flex; align-items:center; gap:9px; font-size:11.5px; font-weight:750;
  text-transform:uppercase; letter-spacing:.10em; color:var(--ink-muted); margin:30px 0 15px; }
.section-label::before { content:""; width:7px; height:7px; border-radius:2px;
  background:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); }
.tiles { display:grid; grid-template-columns:repeat(auto-fill,minmax(255px,1fr)); gap:17px; }
.tile { position:relative; background:var(--card); border:1px solid var(--border); border-radius:var(--radius-lg);
  padding:20px 20px 18px; box-shadow:var(--shadow-sm); transition:box-shadow .18s, border-color .18s, transform .18s;
  display:flex; flex-direction:column; gap:4px; overflow:hidden; }
.tile::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:linear-gradient(180deg, var(--accent), var(--accent-line)); opacity:0; transition:opacity .18s; }
.tile:hover { box-shadow:var(--shadow-md); border-color:var(--border-strong); transform:translateY(-2px); text-decoration:none; }
.tile:hover::before { opacity:1; }
.tile .ico { width:46px; height:46px; border-radius:11px; background:var(--accent-soft);
  border:1px solid var(--accent-line); display:flex; align-items:center; justify-content:center;
  font-size:23px; margin-bottom:10px; }
.tile .name { font-weight:650; font-size:15.5px; color:var(--ink); letter-spacing:-.01em; }
.tile .desc { font-size:12.5px; color:var(--ink-muted); line-height:1.45; }
.tile .role { margin-top:11px; display:inline-flex; align-self:flex-start; font-size:10.5px;
  color:var(--accent-deep); background:var(--accent-soft); border:1px solid var(--accent-line);
  padding:2px 9px; border-radius:20px; text-transform:uppercase; letter-spacing:.05em; font-weight:700; }
.empty { color:var(--ink-muted); font-size:14px; padding:48px 0; text-align:center; }

/* ── Admin tables ── */
.card { background:var(--card); border:1px solid var(--border); border-radius:var(--radius-lg);
  padding:22px 24px; margin-bottom:22px; box-shadow:var(--shadow-sm); }
.card h2 { font-size:15px; margin:0 0 14px; font-weight:650; }
table { width:100%; border-collapse:collapse; font-size:13px; }
th { text-align:left; font-size:11px; text-transform:uppercase; letter-spacing:.04em;
  color:var(--ink-muted); padding:8px 10px; border-bottom:1px solid var(--border); }
td { padding:8px 10px; border-bottom:1px solid var(--border-soft); vertical-align:middle; }
tr:last-child td { border-bottom:none; }
.inline-form { display:inline; }
.grid2 { display:grid; grid-template-columns:1fr 1fr; gap:0 18px; }
.muted { color:var(--ink-muted); }
.pill { display:inline-block; padding:2px 8px; border-radius:20px; font-size:11px; font-weight:600; }
.pill.on { background:#eaf2ee; color:var(--done); }
.pill.off { background:#f1eeea; color:var(--ink-muted); }
code { font-family:var(--mono); font-size:12px; background:var(--card-soft);
  padding:1px 5px; border-radius:4px; border:1px solid var(--border-soft); }
