/* ============================================================================
   Makli UI — shared design system for the Admin Portal (/) and Client Portal (/portal).
   Both surfaces load this so they read as one product.

   Tokens follow makliDesign.md. That document only specifies the DARK palette, so the
   light palette here is its deliberate counterpart: same brand violet and same spacing /
   radius / motion scales, with surfaces and text inverted to keep contrast at WCAG AA
   in both themes.

   Theming: [data-theme="dark"|"light"] on <html>. Set it before first paint (inline
   script in <head>) to avoid a flash. Defaults to prefers-color-scheme when unset.
   ========================================================================= */

:root {
  /* Brand — identical in both themes */
  --mk-brand:        #8b5cf6;
  --mk-brand-2:      #a78bfa;
  --mk-brand-soft:   rgba(139, 92, 246, 0.12);
  --mk-brand-line:   rgba(139, 92, 246, 0.22);

  /* Status */
  --mk-ok:    #10b981;
  --mk-warn:  #f59e0b;
  --mk-err:   #ef4444;
  --mk-info:  #38bdf8;

  /* Spacing scale (makliDesign.md) */
  --mk-s1: 4px;  --mk-s2: 8px;  --mk-s3: 12px; --mk-s4: 16px;
  --mk-s5: 20px; --mk-s6: 24px; --mk-s7: 32px; --mk-s8: 40px;

  /* Radius (makliDesign.md) */
  --mk-r-xs: 10px; --mk-r-sm: 14px; --mk-r-md: 16px; --mk-r-pill: 999px;

  /* Motion (makliDesign.md) */
  --mk-t-fast: 150ms; --mk-t-norm: 250ms; --mk-t-slow: 400ms;
  --mk-ease: cubic-bezier(0.4, 0, 0.2, 1);

  --mk-sidebar-w: 258px;
  --mk-font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
}

/* ── Light theme (default) ────────────────────────────────────────────────── */
:root,
:root[data-theme="light"] {
  --mk-bg:         #f7f8fa;
  --mk-surface:    #ffffff;
  --mk-surface-2:  #f2f4f7;
  --mk-sidebar-bg: #ffffff;
  --mk-ink:        #101828;
  --mk-ink-2:      #5c6a7a;
  --mk-ink-3:      #8a97a6;
  --mk-line:       #e5e8ee;
  --mk-line-soft:  #eef0f4;
  --mk-input-bg:   #ffffff;
  --mk-shadow-1:   0 1px 2px rgba(16, 24, 40, 0.06), 0 1px 3px rgba(16, 24, 40, 0.04);
  --mk-shadow-2:   0 4px 16px rgba(16, 24, 40, 0.08);
  --mk-glow:       0 8px 30px -8px rgba(139, 92, 246, 0.28);
}

/* ── Dark theme (makliDesign.md palette) ─────────────────────────────────── */
:root[data-theme="dark"] {
  --mk-bg:         #000000;
  --mk-surface:    #080b0f;
  --mk-surface-2:  #0e141b;
  --mk-sidebar-bg: #05070a;
  --mk-ink:        #e7edf3;
  --mk-ink-2:      #8b98a7;
  --mk-ink-3:      #6b7787;
  --mk-line:       rgba(167, 139, 250, 0.16);
  --mk-line-soft:  rgba(167, 139, 250, 0.09);
  --mk-input-bg:   #000000;
  --mk-shadow-1:   0 1px 2px rgba(0, 0, 0, 0.6);
  --mk-shadow-2:   0 8px 30px -8px rgba(0, 0, 0, 0.8);
  --mk-glow:       0 8px 30px -8px rgba(167, 139, 250, 0.35);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) {
    --mk-bg:#000000; --mk-surface:#080b0f; --mk-surface-2:#0e141b; --mk-sidebar-bg:#05070a;
    --mk-ink:#e7edf3; --mk-ink-2:#8b98a7; --mk-ink-3:#6b7787;
    --mk-line:rgba(167,139,250,0.16); --mk-line-soft:rgba(167,139,250,0.09);
    --mk-input-bg:#000000;
    --mk-shadow-1:0 1px 2px rgba(0,0,0,0.6); --mk-shadow-2:0 8px 30px -8px rgba(0,0,0,0.8);
    --mk-glow:0 8px 30px -8px rgba(167,139,250,0.35);
  }
}

/* ── Base ─────────────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }

body.mk-app {
  margin: 0;
  font-family: var(--mk-font);
  font-size: 14.5px;
  line-height: 1.55;
  background: var(--mk-bg);
  color: var(--mk-ink);
  -webkit-font-smoothing: antialiased;
}

.mk-app a { color: var(--mk-brand); text-decoration: none; }

/* Visible focus on every interactive element — required, never removed. */
.mk-app :is(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 2px solid var(--mk-brand);
  outline-offset: 2px;
  border-radius: 6px;
}

/* ── Layout shell ─────────────────────────────────────────────────────────── */
.mk-shell { display: flex; min-height: 100vh; }

.mk-sidebar {
  width: var(--mk-sidebar-w);
  flex: 0 0 var(--mk-sidebar-w);
  background: var(--mk-sidebar-bg);
  border-right: 1px solid var(--mk-line);
  display: flex;
  flex-direction: column;
  position: sticky;
  top: 0;
  height: 100vh;
  overflow-y: auto;
}

.mk-main { flex: 1 1 auto; min-width: 0; padding: var(--mk-s7) var(--mk-s7) var(--mk-s8); }
.mk-main-inner { max-width: 1060px; margin: 0 auto; }

/* Brand block */
.mk-brand {
  display: flex; align-items: center; gap: 10px;
  padding: var(--mk-s5) var(--mk-s5) var(--mk-s4);
  font-weight: 700; font-size: 16.5px; letter-spacing: -0.2px;
  color: var(--mk-ink);
}
.mk-brand-mark {
  width: 30px; height: 30px; flex: 0 0 30px;
  border-radius: 9px;
  background: linear-gradient(135deg, var(--mk-brand-2), var(--mk-brand));
  display: grid; place-items: center;
  color: #fff; font-weight: 800; font-size: 14px;
  box-shadow: var(--mk-glow);
}
.mk-brand small { display: block; font-size: 11.5px; font-weight: 500; color: var(--mk-ink-3); letter-spacing: 0; }

/* Nav */
.mk-nav { padding: var(--mk-s2) var(--mk-s3); display: flex; flex-direction: column; gap: 2px; }
.mk-nav-label {
  padding: var(--mk-s4) var(--mk-s3) var(--mk-s2);
  font-size: 10.5px; font-weight: 700; letter-spacing: 0.7px;
  text-transform: uppercase; color: var(--mk-ink-3);
}
.mk-nav-item {
  display: flex; align-items: center; gap: 10px;
  padding: 9px var(--mk-s3);
  border-radius: var(--mk-r-xs);
  color: var(--mk-ink-2);
  font-size: 14px; font-weight: 500;
  transition: background var(--mk-t-fast) var(--mk-ease), color var(--mk-t-fast) var(--mk-ease);
}
.mk-nav-item:hover { background: var(--mk-surface-2); color: var(--mk-ink); text-decoration: none; }
.mk-nav-item.is-active { background: var(--mk-brand-soft); color: var(--mk-brand); font-weight: 600; }
.mk-nav-item svg { flex: 0 0 17px; width: 17px; height: 17px; }
.mk-nav-item .mk-nav-badge {
  margin-left: auto;
  background: var(--mk-brand-soft); color: var(--mk-brand);
  border-radius: var(--mk-r-pill); padding: 1px 8px;
  font-size: 11px; font-weight: 700;
}
.mk-nav-item .mk-nav-badge.is-warn { background: rgba(245,158,11,0.16); color: var(--mk-warn); }

.mk-sidebar-foot { margin-top: auto; padding: var(--mk-s3); border-top: 1px solid var(--mk-line-soft); }
.mk-who { padding: var(--mk-s2) var(--mk-s3) var(--mk-s3); font-size: 12.5px; color: var(--mk-ink-3); word-break: break-all; }

/* ── Org / tenant switcher ────────────────────────────────────────────────── */
.mk-switcher { padding: 0 var(--mk-s3) var(--mk-s3); }
.mk-switcher select {
  width: 100%; padding: 9px 11px;
  background: var(--mk-surface-2);
  border: 1px solid var(--mk-line);
  border-radius: var(--mk-r-xs);
  color: var(--mk-ink); font-size: 13.5px; font-family: inherit;
  cursor: pointer;
}
.mk-switcher .mk-switcher-hint {
  font-size: 10.5px; font-weight: 700; letter-spacing: 0.7px;
  text-transform: uppercase; color: var(--mk-ink-3);
  margin: 0 0 6px 2px;
}

/* ── Theme toggle ─────────────────────────────────────────────────────────── */
.mk-theme-toggle {
  display: flex; align-items: center; gap: 8px; width: 100%;
  padding: 9px var(--mk-s3);
  background: transparent; border: 1px solid var(--mk-line);
  border-radius: var(--mk-r-xs);
  color: var(--mk-ink-2); font-size: 13.5px; font-weight: 500;
  font-family: inherit; cursor: pointer;
  transition: background var(--mk-t-fast) var(--mk-ease), color var(--mk-t-fast) var(--mk-ease);
}
.mk-theme-toggle:hover { background: var(--mk-surface-2); color: var(--mk-ink); }
.mk-theme-toggle svg { width: 16px; height: 16px; flex: 0 0 16px; }
:root[data-theme="dark"] .mk-icon-sun,
:root:not([data-theme]) .mk-icon-sun { display: none; }
:root[data-theme="light"] .mk-icon-moon { display: none; }
@media (prefers-color-scheme: dark) { :root:not([data-theme]) .mk-icon-moon { display: none; } :root:not([data-theme]) .mk-icon-sun { display: block; } }
@media (prefers-color-scheme: light) { :root:not([data-theme]) .mk-icon-sun { display: none; } }

/* ── Page header ──────────────────────────────────────────────────────────── */
.mk-page-head { margin-bottom: var(--mk-s6); }
.mk-page-head h1 { margin: 0 0 6px; font-size: 25px; font-weight: 700; letter-spacing: -0.5px; color: var(--mk-ink); }
.mk-page-head p  { margin: 0; font-size: 14px; color: var(--mk-ink-2); max-width: 76ch; }
.mk-page-head-row { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--mk-s4); flex-wrap: wrap; }

/* ── Cards ────────────────────────────────────────────────────────────────── */
.mk-card {
  background: var(--mk-surface);
  border: 1px solid var(--mk-line);
  border-radius: var(--mk-r-sm);
  padding: var(--mk-s6);
  margin-bottom: var(--mk-s5);
  box-shadow: var(--mk-shadow-1);
}
.mk-card > h2 { margin: 0 0 var(--mk-s4); font-size: 16.5px; font-weight: 650; color: var(--mk-ink); }
.mk-card > h3 { margin: 0 0 var(--mk-s3); font-size: 15px; font-weight: 650; color: var(--mk-ink); }
.mk-card-sub { margin: -8px 0 var(--mk-s4); font-size: 13.5px; color: var(--mk-ink-2); }
.mk-card.is-flush { overflow: hidden; }
.mk-card.is-flush > h2 { padding: var(--mk-s6) var(--mk-s6) 0; }

/* Stat tiles */
.mk-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: var(--mk-s4); margin-bottom: var(--mk-s5); }
.mk-stat {
  background: var(--mk-surface); border: 1px solid var(--mk-line);
  border-radius: var(--mk-r-sm); padding: var(--mk-s5);
}
.mk-stat-label { font-size: 11.5px; font-weight: 700; letter-spacing: 0.6px; text-transform: uppercase; color: var(--mk-ink-3); margin-bottom: 6px; }
.mk-stat-value { font-size: 26px; font-weight: 700; letter-spacing: -0.6px; color: var(--mk-ink); font-variant-numeric: tabular-nums; }

/* ── Buttons ──────────────────────────────────────────────────────────────── */
.mk-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 7px;
  padding: 9px 16px; min-height: 38px;
  background: linear-gradient(135deg, var(--mk-brand-2), var(--mk-brand));
  color: #fff !important; border: 1px solid transparent;
  border-radius: var(--mk-r-xs);
  font-family: inherit; font-size: 14px; font-weight: 600;
  cursor: pointer; text-decoration: none;
  transition: filter var(--mk-t-fast) var(--mk-ease), transform var(--mk-t-fast) var(--mk-ease);
}
.mk-btn:hover { filter: brightness(1.07); text-decoration: none; color: #fff; }
.mk-btn:active { transform: translateY(1px); }
.mk-btn[disabled], .mk-btn.is-disabled { opacity: 0.45; cursor: not-allowed; pointer-events: none; }
.mk-btn svg { width: 15px; height: 15px; }

.mk-btn.is-ghost { background: var(--mk-surface); color: var(--mk-ink); border-color: var(--mk-line); }
.mk-btn.is-ghost:hover { background: var(--mk-surface-2); color: var(--mk-ink); filter: none; }
.mk-btn.is-danger { background: var(--mk-err); }
.mk-btn.is-sm { padding: 5px 11px; min-height: 30px; font-size: 12.5px; }

/* ── Forms ────────────────────────────────────────────────────────────────── */
.mk-field { margin-bottom: var(--mk-s4); }
.mk-field > label,
.mk-app label.mk-label {
  display: block; margin-bottom: 6px;
  font-size: 13px; font-weight: 600; color: var(--mk-ink);
}
.mk-hint { display: block; margin-top: 5px; font-size: 12.5px; color: var(--mk-ink-2); font-weight: 400; }

.mk-app :is(input[type="text"], input[type="email"], input[type="password"], input[type="url"],
             input[type="number"], input[type="search"], select, textarea).mk-input,
.mk-field :is(input, select, textarea) {
  width: 100%; padding: 9px 12px;
  background: var(--mk-input-bg);
  border: 1px solid var(--mk-line);
  border-radius: var(--mk-r-xs);
  color: var(--mk-ink);
  font-family: inherit; font-size: 14px;
  transition: border-color var(--mk-t-fast) var(--mk-ease), box-shadow var(--mk-t-fast) var(--mk-ease);
}
.mk-field :is(input, select, textarea):focus,
.mk-input:focus {
  outline: none; border-color: var(--mk-brand);
  box-shadow: 0 0 0 3px var(--mk-brand-soft);
}
.mk-field input[type="checkbox"], .mk-field input[type="radio"] { width: auto; }
.mk-field textarea { min-height: 78px; resize: vertical; }

.mk-row { display: flex; gap: var(--mk-s4); flex-wrap: wrap; }
.mk-row > * { flex: 1 1 200px; min-width: 0; }

/* Selectable option rows — a labelled radio/checkbox with an explanatory sub-line.
   Used wherever a setting is a choice between named things (integration scope, server
   groups, sibling organizations) rather than free text to be typed. */
.mk-choice, .mk-check {
  display: flex; align-items: flex-start; gap: 11px;
  padding: 11px 13px; margin-bottom: 8px;
  border: 1px solid var(--mk-line); border-radius: var(--mk-r-xs);
  background: var(--mk-surface); cursor: pointer;
  font-weight: 400;
  transition: border-color var(--mk-t-fast) var(--mk-ease), background var(--mk-t-fast) var(--mk-ease);
}
.mk-choice:hover, .mk-check:hover { border-color: var(--mk-brand); background: var(--mk-surface-2); }
.mk-choice > input, .mk-check > input { margin-top: 2px; flex: 0 0 auto; accent-color: var(--mk-brand); }
.mk-choice > span, .mk-check > span { display: block; min-width: 0; font-size: 13.5px; color: var(--mk-ink); }
.mk-choice strong { display: block; font-size: 13.5px; font-weight: 600; }
.mk-choice small, .mk-check small {
  display: block; margin-top: 2px; font-size: 12px; color: var(--mk-ink-2); font-weight: 400;
}
/* Highlight the option that is actually selected, so the active choice is obvious. */
.mk-choice:has(> input:checked), .mk-check:has(> input:checked) {
  border-color: var(--mk-brand); background: var(--mk-brand-soft);
}
/* Indented container holding the inputs belonging to the choice above it. */
.mk-scope-box {
  margin: -2px 0 12px 26px; padding-left: 13px;
  border-left: 2px solid var(--mk-line);
}
.mk-scope-box .mk-check { margin-bottom: 6px; }

/* ── Tables ───────────────────────────────────────────────────────────────── */
.mk-table-wrap { width: 100%; overflow-x: auto; }
.mk-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.mk-table th {
  text-align: left; padding: 10px var(--mk-s4);
  font-size: 11px; font-weight: 700; letter-spacing: 0.6px; text-transform: uppercase;
  color: var(--mk-ink-3);
  border-bottom: 1px solid var(--mk-line);
  white-space: nowrap;
}
.mk-table td { padding: 12px var(--mk-s4); border-bottom: 1px solid var(--mk-line-soft); color: var(--mk-ink); vertical-align: middle; }
.mk-table tbody tr:last-child td { border-bottom: 0; }
.mk-table tbody tr:hover td { background: var(--mk-surface-2); }
.mk-table .mk-num { font-variant-numeric: tabular-nums; }

/* ── Pills / badges ───────────────────────────────────────────────────────── */
.mk-pill {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 2px 9px; border-radius: var(--mk-r-pill);
  font-size: 11.5px; font-weight: 650; white-space: nowrap;
  background: var(--mk-brand-soft); color: var(--mk-brand);
}
.mk-pill.is-ok   { background: rgba(16,185,129,0.14);  color: var(--mk-ok); }
.mk-pill.is-warn { background: rgba(245,158,11,0.16);  color: var(--mk-warn); }
.mk-pill.is-err  { background: rgba(239,68,68,0.14);   color: var(--mk-err); }
.mk-pill.is-mute { background: var(--mk-surface-2);    color: var(--mk-ink-3); }

/* ── Notices ──────────────────────────────────────────────────────────────── */
.mk-notice {
  display: flex; gap: 10px; align-items: flex-start;
  padding: 12px var(--mk-s4); margin-bottom: var(--mk-s4);
  border: 1px solid var(--mk-line); border-radius: var(--mk-r-xs);
  background: var(--mk-surface); color: var(--mk-ink); font-size: 13.5px;
}
.mk-notice svg { flex: 0 0 17px; width: 17px; height: 17px; margin-top: 1px; }
.mk-notice.is-ok   { background: rgba(16,185,129,0.09);  border-color: rgba(16,185,129,0.30);  color: var(--mk-ok); }
.mk-notice.is-warn { background: rgba(245,158,11,0.09);  border-color: rgba(245,158,11,0.32);  color: var(--mk-warn); }
.mk-notice.is-err  { background: rgba(239,68,68,0.09);   border-color: rgba(239,68,68,0.30);   color: var(--mk-err); }
.mk-notice.is-info { background: var(--mk-brand-soft);   border-color: var(--mk-brand-line);   color: var(--mk-ink); }

.mk-muted { color: var(--mk-ink-2); font-size: 13.5px; }
.mk-mono  { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 12.5px; }

/* ── Picker grid (integrations, providers, anything chosen from a set) ─────── */
.mk-picker { display: grid; grid-template-columns: repeat(auto-fill, minmax(196px, 1fr)); gap: var(--mk-s4); }
.mk-pick {
  display: flex; flex-direction: column; gap: 8px;
  padding: var(--mk-s5) var(--mk-s4);
  background: var(--mk-surface);
  border: 1px solid var(--mk-line);
  border-radius: var(--mk-r-sm);
  cursor: pointer; text-align: left;
  font-family: inherit; color: var(--mk-ink);
  transition: border-color var(--mk-t-fast) var(--mk-ease), box-shadow var(--mk-t-fast) var(--mk-ease), transform var(--mk-t-fast) var(--mk-ease);
}
.mk-pick:hover { border-color: var(--mk-brand); box-shadow: var(--mk-glow); text-decoration: none; color: var(--mk-ink); transform: translateY(-1px); }
.mk-pick.is-selected { border-color: var(--mk-brand); background: var(--mk-brand-soft); }
.mk-pick-logo {
  width: 38px; height: 38px; border-radius: var(--mk-r-xs);
  display: grid; place-items: center;
  background: var(--mk-surface-2); border: 1px solid var(--mk-line-soft);
}
.mk-pick-logo svg { width: 22px; height: 22px; }
.mk-pick-name { font-size: 14.5px; font-weight: 650; }
.mk-pick-desc { font-size: 12.5px; color: var(--mk-ink-2); line-height: 1.45; }
.mk-pick-tag {
  align-self: flex-start; margin-top: 2px;
  font-size: 10.5px; font-weight: 700; letter-spacing: 0.5px; text-transform: uppercase;
  color: var(--mk-ink-3);
}

/* ── Collapsible section ──────────────────────────────────────────────────── */
.mk-fold > summary {
  cursor: pointer; list-style: none;
  display: flex; align-items: center; gap: 9px;
  padding: 12px var(--mk-s4);
  font-size: 14.5px; font-weight: 650; color: var(--mk-ink);
  border-radius: var(--mk-r-xs);
}
.mk-fold > summary::-webkit-details-marker { display: none; }
.mk-fold > summary:hover { background: var(--mk-surface-2); }
.mk-fold > summary .mk-fold-chev { margin-left: auto; transition: transform var(--mk-t-norm) var(--mk-ease); }
.mk-fold[open] > summary .mk-fold-chev { transform: rotate(180deg); }
.mk-fold-body { padding: var(--mk-s2) var(--mk-s4) var(--mk-s5); }

/* ── Empty state ──────────────────────────────────────────────────────────── */
.mk-empty { text-align: center; padding: var(--mk-s8) var(--mk-s5); color: var(--mk-ink-2); }
.mk-empty svg { width: 38px; height: 38px; opacity: 0.35; margin-bottom: var(--mk-s3); }
.mk-empty h3 { margin: 0 0 6px; font-size: 15.5px; color: var(--mk-ink); font-weight: 650; }
.mk-empty p { margin: 0 auto var(--mk-s4); max-width: 46ch; font-size: 13.5px; }

/* ── Auth (login/reset) ───────────────────────────────────────────────────── */
.mk-auth { min-height: 100vh; display: grid; place-items: center; padding: var(--mk-s6); background: var(--mk-bg); }
.mk-auth-card {
  width: 100%; max-width: 408px;
  background: var(--mk-surface);
  border: 1px solid var(--mk-line);
  border-radius: var(--mk-r-md);
  padding: var(--mk-s7);
  box-shadow: var(--mk-shadow-2);
}
.mk-auth-brand { display: flex; flex-direction: column; align-items: center; gap: 12px; margin-bottom: var(--mk-s6); text-align: center; }
.mk-auth-brand .mk-brand-mark { width: 44px; height: 44px; flex-basis: 44px; font-size: 18px; border-radius: 12px; }
.mk-auth-brand h1 { margin: 0; font-size: 20px; font-weight: 700; letter-spacing: -0.3px; color: var(--mk-ink); }
.mk-auth-brand p { margin: 0; font-size: 13.5px; color: var(--mk-ink-2); }
.mk-auth-foot { margin-top: var(--mk-s5); text-align: center; font-size: 13px; color: var(--mk-ink-2); }
.mk-auth-foot a { font-weight: 600; }

/* ── Responsive ───────────────────────────────────────────────────────────── */
@media (max-width: 900px) {
  .mk-shell { flex-direction: column; }
  .mk-sidebar {
    width: 100%; flex-basis: auto; height: auto; position: static;
    border-right: 0; border-bottom: 1px solid var(--mk-line);
  }
  .mk-nav { flex-direction: row; flex-wrap: wrap; }
  .mk-nav-label { display: none; }
  .mk-nav-item { flex: 0 0 auto; }
  .mk-sidebar-foot { margin-top: 0; display: flex; align-items: center; gap: var(--mk-s3); flex-wrap: wrap; }
  .mk-who { padding: 0; }
  .mk-main { padding: var(--mk-s5) var(--mk-s4) var(--mk-s7); }
}

@media (prefers-reduced-motion: reduce) {
  .mk-app *, .mk-app *::before, .mk-app *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
}
