:root {
  color-scheme: dark;
  --ui-bg: #090c12;
  --ui-surface: #111722;
  --ui-surface-raised: #171e2b;
  --ui-surface-hover: #1c2635;
  --ui-text: #edf2f8;
  --ui-text-soft: #c3ccda;
  --ui-muted: #8995a8;
  --ui-border: #222c3a;
  --ui-border-strong: #344156;
  --ui-accent: #78a7ff;
  --ui-accent-strong: #5688ec;
  --ui-accent-alt: #8b85f6;
  --ui-accent-soft: rgba(120, 167, 255, 0.13);
  --ui-on-accent: #07101d;
  --ui-danger: #ff858d;
  --ui-danger-soft: #3a1d22;
  --ui-danger-border: #5a2a30;
  --ui-success: #72d9a4;
  --ui-success-soft: #16331e;
  --ui-success-border: #1f7a45;
  --ui-warning: #f4c66d;
  --ui-warning-soft: #2a2418;
  --ui-warning-border: #5a4a2a;
  --ui-info: #9bc1ff;
  --ui-info-soft: #1c2942;
  --ui-info-border: #2a4a7a;
  --ui-purple: #c89eff;
  --ui-purple-soft: #2a1d3a;
  --ui-radius-sm: 8px;
  --ui-radius: 11px;
  --ui-radius-lg: 15px;
  --ui-shadow: 0 16px 42px rgba(0, 0, 0, 0.28);
  --ui-shadow-strong: 0 24px 70px rgba(0, 0, 0, 0.5);
  --ui-backdrop: rgba(3, 6, 11, 0.72);
  --ui-header-height: 56px;
  --ui-content-width: 1120px;
  --ui-space-1: 4px;
  --ui-space-2: 8px;
  --ui-space-3: 12px;
  --ui-space-4: 16px;
  --ui-space-5: 24px;
  --ui-space-6: 32px;
}

.app-shell *,
.app-shell *::before,
.app-shell *::after {
  box-sizing: border-box;
}

.app-shell [hidden] {
  display: none !important;
}

body.app-shell {
  margin: 0;
  min-height: 100vh;
  color: var(--ui-text);
  background:
    radial-gradient(circle at 15% -15%, rgba(86, 136, 236, 0.14), transparent 34rem), var(--ui-bg);
  font-family:
    "Inter",
    system-ui,
    -apple-system,
    "Segoe UI",
    Roboto,
    Arial,
    sans-serif;
  -webkit-font-smoothing: antialiased;
}

.app-shell .app-header {
  position: sticky;
  top: 0;
  z-index: 30;
  display: flex;
  min-height: var(--ui-header-height);
  height: auto;
  align-items: center;
  gap: 14px;
  padding: 0 clamp(16px, 3vw, 32px);
  border-bottom: 1px solid var(--ui-border);
  background: rgba(9, 12, 18, 0.88);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

.app-shell .app-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  color: var(--ui-text);
  font-weight: 650;
  text-decoration: none;
  white-space: nowrap;
}

.app-shell .app-mark {
  display: block;
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  box-shadow: 0 8px 24px rgba(86, 136, 236, 0.25);
  object-fit: cover;
}

.app-shell .app-context {
  color: var(--ui-muted);
  font-weight: 500;
}

.app-shell .app-nav {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-left: auto;
}

.app-shell .app-nav-link {
  display: inline-flex;
  min-height: 36px;
  align-items: center;
  padding: 7px 10px;
  border: 1px solid transparent;
  border-radius: var(--ui-radius-sm);
  color: var(--ui-muted);
  font-size: 13px;
  text-decoration: none;
  white-space: nowrap;
}

.app-shell .app-nav-link:hover,
.app-shell .app-nav-link.active,
.app-shell .app-nav-link[aria-current="page"] {
  border-color: var(--ui-border);
  color: var(--ui-text);
  background: var(--ui-surface-raised);
  text-decoration: none;
}

.app-shell .app-user {
  overflow: hidden;
  max-width: 180px;
  padding-left: 12px;
  border-left: 1px solid var(--ui-border);
  color: var(--ui-muted);
  font-size: 13px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.app-shell :where(button, input, textarea, select) {
  font: inherit;
}

.app-shell button:not(:disabled) {
  cursor: pointer;
}

.app-shell :where(button, a, input, textarea, select):focus-visible {
  outline: 2px solid var(--ui-accent);
  outline-offset: 2px;
}

.app-shell :where(input, textarea, select) {
  border-color: var(--ui-border);
  border-radius: var(--ui-radius-sm);
  color: var(--ui-text);
  background: var(--ui-surface);
}

.app-shell :where(input, textarea, select):focus {
  border-color: var(--ui-accent);
  outline: none;
  box-shadow: 0 0 0 3px var(--ui-accent-soft);
}

.app-shell :where(.primary, .secondary, .danger, .icon-action, .ui-button) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--ui-space-2);
  min-height: 36px;
  padding: 8px 13px;
  border-style: solid;
  border-width: 1px;
  border-radius: var(--ui-radius-sm);
  transition:
    border-color 0.15s,
    background 0.15s,
    color 0.15s,
    transform 0.15s;
}

.app-shell .primary,
.app-shell .ui-button.primary {
  border-color: transparent;
  color: var(--ui-on-accent);
  background: linear-gradient(135deg, var(--ui-accent), var(--ui-accent-alt));
  box-shadow: 0 8px 24px rgba(86, 136, 236, 0.2);
}

.app-shell .secondary,
.app-shell .icon-action,
.app-shell .ui-button {
  border-color: var(--ui-border);
  color: var(--ui-text-soft);
  background: var(--ui-surface-raised);
}

.app-shell :where(.secondary, .icon-action, .ui-button):hover {
  border-color: var(--ui-border-strong);
  color: var(--ui-text);
  background: var(--ui-surface-hover);
}

.app-shell .danger {
  border-color: rgba(255, 133, 141, 0.38);
  color: var(--ui-danger);
  background: rgba(255, 133, 141, 0.07);
}

.app-shell :where(.card, .stat, .table-wrap, dialog) {
  border-color: var(--ui-border);
  border-radius: var(--ui-radius-lg);
  background-color: var(--ui-surface);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);
}

.app-shell dialog::backdrop {
  background: var(--ui-backdrop);
  backdrop-filter: blur(3px);
}

.app-shell .toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--ui-space-3);
}

.app-shell :where(.status, .notice) {
  border: 1px solid var(--ui-border);
  color: var(--ui-muted);
  background: var(--ui-surface);
}

.app-shell :where(.status, .notice)[data-kind="error"] {
  border-color: var(--ui-danger-border);
  color: var(--ui-danger);
  background: var(--ui-danger-soft);
}

.app-shell :where(.status, .notice)[data-kind="success"] {
  border-color: var(--ui-success-border);
  color: var(--ui-success);
  background: var(--ui-success-soft);
}

.app-shell :where(.status, .notice) {
  border-radius: var(--ui-radius);
}

:where(.app-shell main a) {
  color: var(--ui-accent);
}

@media (max-width: 760px) {
  .app-shell .app-header {
    flex-wrap: wrap;
    padding-top: 10px;
    padding-bottom: 10px;
  }

  .app-shell .app-nav {
    order: 3;
    width: 100%;
    margin-left: 0;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
  }

  .app-shell .app-nav::-webkit-scrollbar {
    display: none;
  }

  .app-shell .app-user {
    display: none;
  }
}
