/* SolarMDM Distribution - admin UI.
 * Design tokens + primitives ported from solarmdm/src/theme ("Polaris structure,
 * glass skin"). Dark glass by default; light glass under prefers-color-scheme.
 */

:root {
  /* spacing (4px base) */
  --sm-space-1: 4px;  --sm-space-2: 8px;  --sm-space-3: 12px;  --sm-space-4: 16px;
  --sm-space-5: 20px; --sm-space-6: 24px; --sm-space-8: 32px;  --sm-space-12: 48px;

  /* radius */
  --sm-radius-1: 6px; --sm-radius-2: 10px; --sm-radius-3: 14px; --sm-radius-full: 999px;

  /* type */
  --sm-font-sans: "Inter", -apple-system, "Segoe UI Variable", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --sm-font-mono: "SFMono-Regular", ui-monospace, "Cascadia Mono", "JetBrains Mono", Menlo, Consolas, monospace;
  --sm-text-xs: 11px; --sm-text-sm: 12.5px; --sm-text-md: 14px; --sm-text-lg: 16px;
  --sm-text-xl: 20px; --sm-text-2xl: 26px;
  --sm-weight-regular: 420; --sm-weight-medium: 540; --sm-weight-semibold: 640;

  --sm-ease: cubic-bezier(0.2, 0.7, 0.2, 1);
  --sm-dur-fast: 120ms; --sm-dur-med: 220ms;

  /* brand accent + status */
  --sm-accent-h: 232;
  --sm-accent: hsl(var(--sm-accent-h) 90% 62%);
  --sm-accent-strong: hsl(var(--sm-accent-h) 90% 56%);
  --sm-accent-soft: hsl(var(--sm-accent-h) 90% 62% / 0.14);
  --sm-success: hsl(150 62% 45%);  --sm-success-soft: hsl(150 62% 45% / 0.16);
  --sm-warning: hsl(38 92% 56%);   --sm-warning-soft: hsl(38 92% 56% / 0.16);
  --sm-critical: hsl(2 78% 60%);   --sm-critical-soft: hsl(2 78% 60% / 0.16);
  --sm-info: hsl(210 90% 62%);     --sm-info-soft: hsl(210 90% 62% / 0.16);

  /* dark glass (default) */
  color-scheme: dark;
  --sm-bg: #0a0e1a;
  --sm-bg-gradient:
    radial-gradient(1200px 700px at 12% -10%, hsl(232 80% 30% / 0.55), transparent 60%),
    radial-gradient(1000px 600px at 100% 0%, hsl(280 70% 32% / 0.4), transparent 55%),
    radial-gradient(900px 700px at 50% 120%, hsl(190 70% 28% / 0.35), transparent 60%),
    #0a0e1a;
  --sm-surface: hsl(225 30% 14% / 0.55);
  --sm-surface-strong: hsl(225 30% 16% / 0.82);
  --sm-surface-hover: hsl(225 30% 24% / 0.5);
  --sm-glass-blur: 18px;
  --sm-border: hsl(225 30% 70% / 0.14);
  --sm-border-strong: hsl(225 30% 80% / 0.24);
  --sm-ring: hsl(var(--sm-accent-h) 90% 65% / 0.55);
  --sm-text: hsl(220 30% 96%);
  --sm-text-secondary: hsl(220 16% 74%);
  --sm-text-disabled: hsl(220 14% 52%);
  --sm-shadow-sm: 0 1px 2px hsl(230 50% 3% / 0.4);
  --sm-shadow-md: 0 8px 24px hsl(230 50% 3% / 0.45);
  --sm-shadow-lg: 0 24px 60px hsl(230 50% 2% / 0.6);
}

/* Light glass - opt in with <html data-theme="light"> (dark is the default, as in the
   SolarMDM console). */
[data-theme="light"] {
  color-scheme: light;
  --sm-bg: #eef1f8;
  --sm-bg-gradient:
    radial-gradient(1200px 700px at 12% -10%, hsl(232 90% 80% / 0.6), transparent 60%),
    radial-gradient(1000px 600px at 100% 0%, hsl(280 80% 84% / 0.5), transparent 55%),
    radial-gradient(900px 700px at 50% 120%, hsl(190 80% 82% / 0.45), transparent 60%),
    #eef1f8;
  --sm-surface: hsl(0 0% 100% / 0.62);
  --sm-surface-strong: hsl(0 0% 100% / 0.85);
  --sm-surface-hover: hsl(225 40% 96% / 0.85);
  --sm-glass-blur: 16px;
  --sm-border: hsl(225 30% 30% / 0.12);
  --sm-border-strong: hsl(225 30% 20% / 0.2);
  --sm-text: hsl(225 35% 16%);
  --sm-text-secondary: hsl(225 16% 38%);
  --sm-text-disabled: hsl(225 12% 60%);
  --sm-shadow-sm: 0 1px 2px hsl(230 40% 40% / 0.12);
  --sm-shadow-md: 0 10px 30px hsl(230 40% 40% / 0.16);
  --sm-shadow-lg: 0 24px 60px hsl(230 40% 40% / 0.2);
}

* { box-sizing: border-box; }

body {
  margin: 0;
  min-height: 100vh;
  font: var(--sm-weight-regular) var(--sm-text-md)/1.5 var(--sm-font-sans);
  color: var(--sm-text);
  background: var(--sm-bg);
  background-image: var(--sm-bg-gradient);
  background-attachment: fixed;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3 { margin: 0; font-weight: var(--sm-weight-semibold); line-height: 1.25; letter-spacing: -0.01em; }
h1 { font-size: var(--sm-text-2xl); }
h2 { font-size: var(--sm-text-lg); margin: var(--sm-space-8) 0 var(--sm-space-3); }
h3 { font-size: var(--sm-text-md); margin: 0 0 var(--sm-space-3); }
p { margin: var(--sm-space-2) 0; }
a { color: var(--sm-accent); text-decoration: none; }
a:hover { text-decoration: underline; }
code { font-family: var(--sm-font-mono); font-size: 0.92em; }
.muted { color: var(--sm-text-secondary); }

/* thin themed scrollbars */
* { scrollbar-width: thin; scrollbar-color: var(--sm-border-strong) transparent; }
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-thumb { background: var(--sm-border-strong); border-radius: var(--sm-radius-full); border: 2px solid transparent; background-clip: content-box; }

/* ---- glass surface (the core of the look) ---- */
.card, .stat, table:not(.kv), .secret, pre {
  background: var(--sm-surface);
  backdrop-filter: blur(var(--sm-glass-blur)) saturate(160%);
  -webkit-backdrop-filter: blur(var(--sm-glass-blur)) saturate(160%);
  border: 1px solid var(--sm-border);
  border-radius: var(--sm-radius-3);
  box-shadow: var(--sm-shadow-md);
}

/* ---- topbar (floating glass bar, aligned to the content column) ---- */
.topbar {
  position: sticky;
  top: var(--sm-space-3);
  z-index: 20;
  display: flex;
  align-items: center;
  gap: var(--sm-space-4);
  max-width: 1000px;
  margin: var(--sm-space-4) auto 0;
  padding: var(--sm-space-2) var(--sm-space-4);
  height: 56px;
  background: var(--sm-surface-strong);
  backdrop-filter: blur(var(--sm-glass-blur)) saturate(160%);
  -webkit-backdrop-filter: blur(var(--sm-glass-blur)) saturate(160%);
  border: 1px solid var(--sm-border);
  border-radius: var(--sm-radius-3);
  box-shadow: var(--sm-shadow-md);
}
.brand {
  display: flex; align-items: center; gap: var(--sm-space-3);
  color: var(--sm-text); font-size: var(--sm-text-lg); font-weight: var(--sm-weight-semibold);
  letter-spacing: -0.02em; flex-shrink: 0;
}
.brand:hover { text-decoration: none; }
.brand img { width: 26px; height: 26px; filter: drop-shadow(0 2px 8px hsl(var(--sm-accent-h) 90% 50% / 0.4)); }
.brand span { color: var(--sm-text-secondary); font-weight: var(--sm-weight-medium); }

.topbar nav { display: flex; gap: 2px; flex: 1; overflow-x: auto; }
.topbar nav a {
  padding: var(--sm-space-2) var(--sm-space-3);
  border-radius: var(--sm-radius-2);
  color: var(--sm-text-secondary);
  font-weight: var(--sm-weight-medium);
  white-space: nowrap;
  transition: background var(--sm-dur-fast), color var(--sm-dur-fast);
}
.topbar nav a:hover { background: var(--sm-surface-hover); color: var(--sm-text); text-decoration: none; }
.topbar nav a.on { background: var(--sm-accent-soft); color: var(--sm-accent); }
.logout { margin: 0; flex-shrink: 0; }

/* ---- layout ---- */
.wrap { max-width: 1000px; margin: var(--sm-space-6) auto var(--sm-space-12); padding: 0 var(--sm-space-4); }

.card { padding: var(--sm-space-5); margin: var(--sm-space-4) 0; }
.card.narrow { max-width: 460px; }
.card.reveal { border-color: hsl(var(--sm-accent-h) 90% 62% / 0.4); background: var(--sm-accent-soft); }

/* ---- stat tiles ---- */
.stats { display: flex; gap: var(--sm-space-3); flex-wrap: wrap; margin-bottom: var(--sm-space-2); }
.stat { padding: var(--sm-space-4) var(--sm-space-5); min-width: 140px; }
.stat b { display: block; font-size: var(--sm-text-2xl); font-weight: var(--sm-weight-semibold); font-variant-numeric: tabular-nums; }
.stat span { color: var(--sm-text-secondary); font-size: var(--sm-text-sm); }

.row-between { display: flex; align-items: center; justify-content: space-between; gap: var(--sm-space-3); flex-wrap: wrap; }

/* ---- tables ---- */
table { width: 100%; border-collapse: collapse; margin: var(--sm-space-3) 0; overflow: hidden; }
th, td { text-align: left; padding: var(--sm-space-3) var(--sm-space-4); vertical-align: middle; }
thead th {
  font-size: var(--sm-text-sm); font-weight: var(--sm-weight-semibold);
  color: var(--sm-text-secondary); background: var(--sm-surface-strong);
  border-bottom: 1px solid var(--sm-border-strong); white-space: nowrap;
}
tbody td { border-bottom: 1px solid var(--sm-border); color: var(--sm-text); }
tbody tr:last-child td { border-bottom: none; }
tbody tr { transition: background var(--sm-dur-fast); }
tbody tr:hover { background: var(--sm-surface-hover); }
table.compact th, table.compact td { padding: var(--sm-space-2) var(--sm-space-3); font-size: var(--sm-text-sm); }

/* key/value layout table - not a data surface, so no glass */
table.kv { margin: 0; box-shadow: none; }
table.kv th, table.kv td { padding: var(--sm-space-2) 0; border-bottom: 1px solid var(--sm-border); background: none; }
table.kv tr:last-child th, table.kv tr:last-child td { border-bottom: none; }
table.kv th { width: 150px; color: var(--sm-text-secondary); font-weight: var(--sm-weight-medium); text-transform: none; letter-spacing: 0; font-size: var(--sm-text-md); }
table.kv tr:hover { background: none; }
td.path, .path { font-family: var(--sm-font-mono); font-size: 12px; word-break: break-all; }
td.ua { max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---- badges (pill tones) ---- */
.badge {
  display: inline-flex; align-items: center; height: 22px; padding: 0 var(--sm-space-2);
  border-radius: var(--sm-radius-full); font-size: var(--sm-text-xs); font-weight: var(--sm-weight-medium);
  border: 1px solid transparent;
}
.badge.active  { background: var(--sm-success-soft);  color: var(--sm-success); }
.badge.revoked,
.badge.expired { background: var(--sm-warning-soft);  color: var(--sm-warning); }

/* ---- forms ---- */
label { display: block; margin: var(--sm-space-4) 0 var(--sm-space-1); font-size: var(--sm-text-sm); font-weight: var(--sm-weight-medium); color: var(--sm-text-secondary); }
label .muted { font-weight: var(--sm-weight-regular); }
input, textarea, select {
  width: 100%; height: 40px; margin-top: var(--sm-space-1);
  padding: 0 var(--sm-space-3);
  background: var(--sm-surface-strong);
  border: 1px solid var(--sm-border-strong);
  border-radius: var(--sm-radius-2);
  color: var(--sm-text);
  font: inherit;
  transition: border-color var(--sm-dur-fast) var(--sm-ease), box-shadow var(--sm-dur-fast) var(--sm-ease);
}
textarea { height: auto; padding: var(--sm-space-2) var(--sm-space-3); }
input:focus, textarea:focus, select:focus {
  outline: none; border-color: var(--sm-accent); box-shadow: 0 0 0 3px var(--sm-ring);
}
input::placeholder, textarea::placeholder { color: var(--sm-text-disabled); }
input[type="file"] { padding: var(--sm-space-2); height: auto; }
input[type="file"]::file-selector-button {
  margin-right: var(--sm-space-3); padding: var(--sm-space-1) var(--sm-space-3);
  border: 1px solid var(--sm-border-strong); border-radius: var(--sm-radius-1);
  background: var(--sm-surface-hover); color: var(--sm-text); font: inherit; cursor: pointer;
}

/* ---- buttons ---- */
button, .btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--sm-space-2);
  height: 38px; padding: 0 var(--sm-space-4); margin-top: var(--sm-space-3);
  border: 1px solid var(--sm-border-strong);
  border-radius: var(--sm-radius-2);
  background: var(--sm-surface-strong);
  color: var(--sm-text);
  font: inherit; font-weight: var(--sm-weight-medium);
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--sm-dur-fast) var(--sm-ease), border-color var(--sm-dur-fast), filter var(--sm-dur-fast), transform var(--sm-dur-fast);
}
button:hover, .btn:hover { background: var(--sm-surface-hover); text-decoration: none; }
button:active:not(:disabled) { transform: translateY(0.5px) scale(0.99); }
button:disabled { opacity: 0.5; cursor: not-allowed; }
button.primary, .btn.primary {
  background: linear-gradient(180deg, var(--sm-accent), var(--sm-accent-strong));
  border-color: transparent; color: #fff;
  box-shadow: var(--sm-shadow-sm), inset 0 1px 0 hsl(0 0% 100% / 0.18);
}
button.primary:hover { background: linear-gradient(180deg, var(--sm-accent), var(--sm-accent-strong)); filter: brightness(1.07); }
button.danger {
  background: var(--sm-critical); border-color: transparent; color: #fff;
  box-shadow: var(--sm-shadow-sm), inset 0 1px 0 hsl(0 0% 100% / 0.18);
}
button.danger:hover { background: var(--sm-critical); filter: brightness(1.06); }
button.link {
  height: auto; padding: 0; margin: 0; border: none; background: none;
  color: var(--sm-accent); font-weight: var(--sm-weight-regular);
}
button.link:hover { background: none; text-decoration: underline; }
button.link.danger { color: var(--sm-critical); box-shadow: none; }
button.link.danger:hover { filter: none; }

.actions { display: flex; gap: var(--sm-space-2); flex-wrap: wrap; margin-top: var(--sm-space-4); }
.actions form { margin: 0; }
.actions button { margin-top: 0; }
form.inline { display: inline; margin: 0; }

/* ---- filters / pager ---- */
.filters { display: flex; gap: var(--sm-space-2); align-items: center; flex-wrap: wrap; margin: var(--sm-space-3) 0; }
.filters input, .filters select { width: auto; margin: 0; }
.filters button, .filters .btn { margin: 0; }
.pager { display: flex; gap: var(--sm-space-3); align-items: center; margin-top: var(--sm-space-3); }

/* ---- code / secret ---- */
pre {
  padding: var(--sm-space-3) var(--sm-space-4); margin: var(--sm-space-2) 0;
  overflow-x: auto; font-family: var(--sm-font-mono); font-size: 12.5px; line-height: 1.5;
  color: var(--sm-text);
}
.secret { display: flex; align-items: center; gap: var(--sm-space-3); padding: var(--sm-space-3) var(--sm-space-4); margin: var(--sm-space-2) 0; }
.secret code { flex: 1; word-break: break-all; }
.secret button { margin: 0; flex-shrink: 0; }

/* ---- flash / banners ---- */
.flash {
  padding: var(--sm-space-3) var(--sm-space-4);
  border-radius: var(--sm-radius-2);
  border: 1px solid transparent;
  margin-bottom: var(--sm-space-3);
  font-size: var(--sm-text-md);
}
.flash.ok  { background: var(--sm-success-soft);  border-color: hsl(150 62% 45% / 0.3); }
.flash.err { background: var(--sm-critical-soft); border-color: hsl(2 78% 60% / 0.3); }

/* ---- login ---- */
.login-page {
  min-height: 100vh; display: grid; place-items: center;
  padding: var(--sm-space-6); position: relative; overflow: hidden;
}
.login-aurora {
  position: absolute; inset: -25% -10% auto -10%; height: 65vh;
  background:
    radial-gradient(600px 300px at 30% 30%, hsl(232 90% 60% / 0.5), transparent 60%),
    radial-gradient(500px 280px at 70% 20%, hsl(280 80% 60% / 0.45), transparent 60%);
  filter: blur(34px); pointer-events: none;
  animation: sm-drift 14s ease-in-out infinite alternate;
}
@keyframes sm-drift { from { transform: translateY(-12px) scale(1); } to { transform: translateY(22px) scale(1.05); } }
.login-card { position: relative; width: 100%; max-width: 400px; padding: var(--sm-space-8); }
.login-brand { display: flex; align-items: center; gap: var(--sm-space-3); margin-bottom: var(--sm-space-6); }
.login-brand img { width: 34px; height: 34px; filter: drop-shadow(0 4px 14px hsl(var(--sm-accent-h) 90% 50% / 0.5)); }
.login-brand .t { font-size: var(--sm-text-xl); font-weight: var(--sm-weight-semibold); letter-spacing: -0.02em; }
.login-brand .s { display: block; font-size: var(--sm-text-sm); color: var(--sm-text-secondary); font-weight: var(--sm-weight-regular); letter-spacing: 0; }

@media (max-width: 640px) {
  .topbar { flex-wrap: wrap; height: auto; gap: var(--sm-space-2); }
  .wrap { margin-top: var(--sm-space-4); }
  td.ua { display: none; }
}
