/* Gate — stylesheet. CLU dark theme variables (house rule 6), light override via [data-theme="light"]. */
:root {
  --bg-primary:#0f1117; --bg-secondary:#1a1d27; --bg-card:#1e2130; --bg-hover:#252838; --border:#2a2d3a;
  --text-primary:#e4e4e7; --text-secondary:#9ca3af; --text-muted:#6b7280;
  --accent-blue:#3b82f6; --accent-green:#22c55e; --accent-orange:#f59e0b; --accent-red:#ef4444; --accent-purple:#a855f7; --accent-cyan:#06b6d4;
  --radius:8px; --shadow:0 1px 3px rgba(0,0,0,.3);
}
[data-theme="light"] {
  --bg-primary:#f5f5f7; --bg-secondary:#e8e8ed; --bg-card:#ffffff; --bg-hover:#f0f0f5; --border:#d1d5db;
  --text-primary:#1f2937; --text-secondary:#4b5563; --text-muted:#9ca3af; --shadow:0 1px 3px rgba(0,0,0,.08);
}
* { box-sizing:border-box; }
html, body { margin:0; background:var(--bg-primary); color:var(--text-primary); font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif; }
a { color:var(--accent-blue); text-decoration:none; } a:hover { text-decoration:underline; }
.topbar { display:flex; align-items:center; gap:18px; padding:10px 20px; background:var(--bg-secondary); border-bottom:1px solid var(--border); }
.topbar .brand { color:var(--text-primary); font-weight:700; font-size:18px; display:flex; flex-direction:column; line-height:1.15; }
.topbar .brand small { color:var(--text-muted); font-weight:400; font-size:12px; }
.topbar nav { margin-left:auto; display:flex; align-items:center; gap:14px; }
.topbar nav a { color:var(--text-secondary); padding:4px 8px; border-radius:6px; }
.topbar nav a.active, .topbar nav a:hover { background:var(--bg-hover); color:var(--text-primary); text-decoration:none; }
.topbar .who { color:var(--text-secondary); font-size:13px; } .topbar .who b { color:var(--text-primary); }
.theme-toggle { background:none; border:1px solid var(--border); color:var(--text-secondary); border-radius:6px; padding:3px 8px; cursor:pointer; font-size:14px; }
.container { max-width:1180px; margin:0 auto; padding:24px 20px 60px; }
.narrow { max-width:420px; margin:40px auto; }
.card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow); padding:20px 22px; margin-bottom:20px; }
.card h2 { margin:0 0 12px; font-size:18px; } .card h3 { margin:18px 0 8px; font-size:15px; color:var(--text-secondary); text-transform:uppercase; letter-spacing:.04em; }
h1 { font-size:24px; margin:0 0 18px; }
p.muted, .muted { color:var(--text-muted); } small { color:var(--text-muted); }
label { display:block; font-size:13px; color:var(--text-secondary); margin:12px 0 4px; }
input[type=text], input[type=password], input[type=email], select { width:100%; padding:9px 11px; background:var(--bg-primary); color:var(--text-primary); border:1px solid var(--border); border-radius:6px; font-size:15px; }
input:focus, select:focus { outline:none; border-color:var(--accent-blue); }
.btn { display:inline-block; padding:8px 16px; border-radius:6px; border:1px solid var(--border); background:var(--bg-hover); color:var(--text-primary); cursor:pointer; font-size:14px; }
.btn:hover { border-color:var(--accent-blue); text-decoration:none; }
.btn-primary { background:var(--accent-blue); border-color:var(--accent-blue); color:#fff; }
.btn-danger { background:transparent; border-color:var(--accent-red); color:var(--accent-red); }
.btn-sm { padding:3px 9px; font-size:12px; }
.btn-block { width:100%; margin-top:18px; }
.flash { padding:10px 14px; border-radius:6px; margin-bottom:16px; border:1px solid var(--border); background:var(--bg-card); }
.flash-ok { border-color:var(--accent-green); } .flash-err { border-color:var(--accent-red); } .flash-warn { border-color:var(--accent-orange); }
.error { color:var(--accent-red); font-size:14px; margin-top:10px; }
table { width:100%; border-collapse:collapse; font-size:14px; }
th, td { text-align:left; padding:7px 9px; border-bottom:1px solid var(--border); vertical-align:top; }
th { color:var(--text-secondary); font-weight:600; font-size:12px; text-transform:uppercase; letter-spacing:.04em; }
tr:hover td { background:var(--bg-hover); }
.pill { display:inline-block; padding:1px 8px; border-radius:999px; font-size:12px; border:1px solid var(--border); color:var(--text-secondary); margin-right:3px; }
.pill-owner { border-color:var(--accent-purple); color:var(--accent-purple); }
.pill-family { border-color:var(--accent-green); color:var(--accent-green); }
.pill-business { border-color:var(--accent-cyan); color:var(--accent-cyan); }
.pill-guest { border-color:var(--accent-orange); color:var(--accent-orange); }
.pill-off { border-color:var(--accent-red); color:var(--accent-red); }
.grid-wrap { overflow-x:auto; }
.grid td.cb { text-align:center; } .grid th.cb { text-align:center; }
.grid input[type=checkbox] { width:16px; height:16px; accent-color:var(--accent-green); }
.grid input[type=checkbox]:disabled { accent-color:var(--accent-purple); }
.grid td.sys { white-space:nowrap; } .grid td.sys small { display:block; color:var(--text-muted); }
code, .mono { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:13px; }
.linkbox { background:var(--bg-primary); border:1px dashed var(--border); border-radius:6px; padding:8px 10px; word-break:break-all; }
.two { display:grid; grid-template-columns:1fr 1fr; gap:20px; } @media (max-width:860px) { .two { grid-template-columns:1fr; } }
.tabs { display:flex; gap:6px; margin-bottom:16px; flex-wrap:wrap; }
.tabs a { padding:6px 12px; border:1px solid var(--border); border-radius:6px; color:var(--text-secondary); }
.tabs a.active { background:var(--bg-card); color:var(--text-primary); border-color:var(--accent-blue); }
.foot { text-align:center; color:var(--text-muted); font-size:12px; padding:20px; border-top:1px solid var(--border); }
.denied-big { font-size:48px; line-height:1; margin-bottom:10px; color:var(--accent-orange); }
.inline { display:inline-block; white-space:nowrap; }
.row-actions form { display:inline; }
