/*
  TNA Systems — tenant-aware visual polish for NON-TEST application pages.

  Load this stylesheet AFTER app-learner.css/app-staff.css and after any
  page-local <style> blocks. Apply body class="app-shell" to non-test pages.
  Do NOT load this stylesheet on assessment/test routes.
*/

body.app-shell {
  --app-primary: var(--brand-primary, #1a73e8);
  --app-secondary: var(--brand-secondary, var(--brand-primary, #0b62d6));
  --app-ink: #0b1930;
  --app-muted: #5f6f86;
  --app-page: #f3f7fc;
  --app-surface: rgba(255,255,255,.92);
  --app-border: rgba(93,116,150,.16);
  --app-shadow: 0 18px 50px rgba(15, 38, 72, .09);
  --app-shadow-soft: 0 8px 24px rgba(15, 38, 72, .07);
  --app-radius: 18px;

  min-height: 100vh;
  overflow-x: hidden;
  color: var(--app-ink);
  background-color: var(--app-page);
  background-attachment: fixed;
  background-repeat: no-repeat;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* Tenant-colour circles/rings inspired by the exhibition video. */
@supports (color: color-mix(in srgb, #000 10%, transparent)) {
  body.app-shell {
    --app-primary-soft: color-mix(in srgb, var(--app-primary) 11%, white);
    --app-secondary-soft: color-mix(in srgb, var(--app-secondary) 9%, white);
    --app-primary-line: color-mix(in srgb, var(--app-primary) 11%, transparent);
    --app-secondary-line: color-mix(in srgb, var(--app-secondary) 9%, transparent);
    --app-primary-border: color-mix(in srgb, var(--app-primary) 16%, transparent);
    --app-primary-shadow: color-mix(in srgb, var(--app-primary) 22%, transparent);

    background-image:
      radial-gradient(circle at 102% -4%,
        transparent 0 9.2rem,
        var(--app-primary-line) 9.25rem 10.8rem,
        transparent 10.85rem),
      radial-gradient(circle at -3% 103%,
        transparent 0 12.4rem,
        var(--app-secondary-line) 12.45rem 14.2rem,
        transparent 14.25rem),
      radial-gradient(circle at 94% 73%,
        transparent 0 5.8rem,
        color-mix(in srgb, var(--app-secondary) 6%, transparent) 5.85rem 6.7rem,
        transparent 6.75rem),
      linear-gradient(145deg,
        color-mix(in srgb, var(--app-primary) 4%, #f6f9fd) 0%,
        #f8fbff 44%,
        color-mix(in srgb, var(--app-secondary) 4%, #f4f8fd) 100%);
  }
}

body.app-shell ::selection {
  background: var(--app-primary);
  color: #fff;
}

body.app-shell :where(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 3px solid var(--app-primary);
  outline-offset: 3px;
}

body.app-shell .container {
  position: relative;
  margin-top: clamp(18px, 3vw, 34px);
  margin-bottom: clamp(26px, 4vw, 52px);
}

/* Header / logo treatment */
body.app-shell .header-brand {
  width: max-content;
  max-width: 100%;
  min-height: 58px;
  margin: 10px auto 24px;
  padding: 10px 18px;
  border: 1px solid var(--app-border);
  border-radius: 18px;
  background: rgba(255,255,255,.72);
  box-shadow: var(--app-shadow-soft);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

body.app-shell .header-brand img {
  filter: drop-shadow(0 5px 11px rgba(15,38,72,.10));
}

body.app-shell .page-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  margin: 4px 0 20px;
}

body.app-shell .page-title,
body.app-shell .page-heading h1 {
  margin: 0;
  color: var(--app-ink);
  letter-spacing: -.035em;
  line-height: 1.08;
  font-size: clamp(1.8rem, 3vw, 2.55rem);
}

body.app-shell .page-kicker {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  margin-bottom: 8px;
  padding: 5px 10px;
  border-radius: 999px;
  color: var(--app-primary);
  background: var(--app-primary-soft, #eaf2ff);
  font-size: .74rem;
  font-weight: 800;
  letter-spacing: .075em;
  text-transform: uppercase;
}

body.app-shell .page-subtitle {
  max-width: 720px;
  margin: 8px 0 0;
  color: var(--app-muted);
  line-height: 1.55;
}

/* Navigation areas become subtle glass surfaces. */
body.app-shell .topbar {
  min-height: 58px;
  margin: 0 0 22px;
  padding: 8px 10px;
  border: 1px solid var(--app-border);
  border-radius: 16px;
  background: rgba(255,255,255,.74);
  box-shadow: var(--app-shadow-soft);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

body.app-shell .top-nav {
  min-height: 48px;
  align-items: center;
}

/* Surfaces */
body.app-shell .card,
body.app-shell .section,
body.app-shell .surface,
body.app-shell .modal-card {
  border-color: var(--app-border);
  border-radius: var(--app-radius);
  background: var(--app-surface);
  box-shadow: var(--app-shadow);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

body.app-shell .card {
  padding: clamp(16px, 2.2vw, 24px);
}

body.app-shell .card + .card,
body.app-shell .section + .section {
  margin-top: 18px;
}

body.app-shell .muted,
body.app-shell .help-text,
body.app-shell .inline-note {
  color: var(--app-muted);
}

/* Inputs */
body.app-shell input[type="text"],
body.app-shell input[type="email"],
body.app-shell input[type="tel"],
body.app-shell input[type="date"],
body.app-shell input[type="time"],
body.app-shell input[type="number"],
body.app-shell input[type="password"],
body.app-shell select,
body.app-shell textarea,
body.app-shell .input {
  min-height: 44px;
  border-color: rgba(91,111,139,.23);
  border-radius: 12px;
  background: rgba(255,255,255,.94);
  box-shadow: inset 0 1px 2px rgba(15,38,72,.025);
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}

body.app-shell input:focus,
body.app-shell select:focus,
body.app-shell textarea:focus,
body.app-shell .input:focus {
  border-color: var(--app-primary);
  background: #fff;
  box-shadow: 0 0 0 4px var(--app-primary-border, rgba(26,115,232,.14));
}

/* Buttons */
body.app-shell .btn {
  min-height: 42px;
  border-radius: 11px !important;
  padding: 10px 16px;
  box-shadow: 0 8px 18px var(--app-primary-shadow, rgba(26,115,232,.17));
  transition: transform .16s ease, box-shadow .16s ease, filter .16s ease, background .16s ease;
}

body.app-shell .btn:not(.ghost):not(.warn):not(.ok):not(.err):not(.danger):not([disabled]) {
  color: #fff;
  background:
    linear-gradient(rgba(5, 18, 35, .18), rgba(5, 18, 35, .18)),
    linear-gradient(135deg, var(--app-primary), var(--app-secondary));
  text-shadow: 0 1px 2px rgba(5, 18, 35, .38);
}

body.app-shell .btn:not([disabled]):hover {
  transform: translateY(-1px);
  filter: saturate(1.05) brightness(.99);
  box-shadow: 0 12px 25px var(--app-primary-shadow, rgba(26,115,232,.21));
}

body.app-shell .btn:not([disabled]):active {
  transform: translateY(0);
}

body.app-shell .btn.ghost,
body.app-shell .btn.outline {
  color: var(--app-ink);
  border: 1px solid var(--app-border);
  background: rgba(255,255,255,.82);
  box-shadow: 0 6px 15px rgba(15,38,72,.06);
}

body.app-shell .btn.ghost:hover,
body.app-shell .btn.outline:hover {
  color: var(--app-primary);
  border-color: var(--app-primary-border, rgba(26,115,232,.22));
  background: #fff;
}

body.app-shell .btn[disabled],
body.app-shell .btn.locked {
  opacity: .62;
  filter: grayscale(.12);
  box-shadow: none;
}

/* Learner dashboard: make session details and modules feel purposeful. */
body.app-shell--learner #sessionDetails {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

body.app-shell--learner #sessionDetails p {
  margin: 0;
  padding: 13px 15px;
  border: 1px solid var(--app-border);
  border-radius: 13px;
  background: rgba(247,250,254,.9);
}

body.app-shell--learner #actions {
  gap: 12px;
  margin-top: 14px;
}

body.app-shell--learner #actions .btn.block {
  position: relative;
  min-height: 64px;
  padding: 15px 60px 15px 18px;
  text-align: left;
  font-size: 1rem;
  border: 1px solid transparent;
  overflow: hidden;
}

body.app-shell--learner #actions .btn.block::after {
  content: "→";
  position: absolute;
  right: 18px;
  top: 50%;
  width: 32px;
  height: 32px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  transform: translateY(-50%);
  color: var(--app-primary);
  background: rgba(255,255,255,.9);
  font-size: 1.05rem;
  box-shadow: 0 5px 13px rgba(15,38,72,.12);
}

body.app-shell--learner #actions .btn.block.locked,
body.app-shell--learner #actions .btn.block[disabled] {
  color: #65748a;
  border-color: var(--app-border);
  background: rgba(235,240,247,.78);
}

body.app-shell--learner #actions .btn.block.locked::after,
body.app-shell--learner #actions .btn.block[disabled]::after {
  content: "•";
  color: #8a98aa;
  background: rgba(255,255,255,.74);
}

/* Tabs */
body.app-shell .tabs {
  display: flex;
  gap: 5px;
  padding: 6px;
  margin-top: 18px;
  border: 1px solid var(--app-border) !important;
  border-bottom: 1px solid var(--app-border) !important;
  border-radius: 15px;
  background: rgba(255,255,255,.74);
  box-shadow: var(--app-shadow-soft);
  overflow-x: auto;
}

body.app-shell .tab {
  min-height: 42px;
  border: 0 !important;
  border-bottom: 0 !important;
  border-radius: 10px;
  color: var(--app-muted);
  white-space: nowrap;
}

body.app-shell .tab:hover {
  color: var(--app-ink);
  background: rgba(247,250,254,.92);
}

body.app-shell .tab.active {
  color: var(--app-primary);
  border: 0 !important;
  border-bottom: 0 !important;
  background: var(--app-primary-soft, #eaf2ff);
  box-shadow: inset 0 0 0 1px var(--app-primary-border, rgba(26,115,232,.13));
}

/* Tables */
body.app-shell .table-wrap {
  border: 1px solid var(--app-border);
  border-radius: 15px;
  background: rgba(255,255,255,.92);
  overflow: auto;
  box-shadow: 0 8px 22px rgba(15,38,72,.055);
}

body.app-shell .table {
  margin: 0;
  border-radius: 15px;
  box-shadow: none;
  overflow: hidden;
}

body.app-shell .table thead th {
  color: #35445a;
  background: color-mix(in srgb, var(--app-primary) 4%, #f7f9fc);
  border-bottom: 1px solid var(--app-border);
  font-size: .83rem;
  letter-spacing: .025em;
}

body.app-shell .table tbody tr {
  transition: background .16s ease;
}

body.app-shell .table tbody tr:hover,
body.app-shell .row-click:hover {
  background: var(--app-primary-soft, #f0f6ff);
}

body.app-shell .table td {
  border-bottom-color: rgba(91,111,139,.13);
}

/* Modals / overlays */
body.app-shell .modal-overlay {
  background: rgba(8, 20, 38, .52);
  backdrop-filter: blur(5px);
  -webkit-backdrop-filter: blur(5px);
}

body.app-shell .modal,
body.app-shell .modal-card,
body.app-shell .overlay > .panel,
body.app-shell .overlay .card {
  border: 1px solid rgba(255,255,255,.62);
  border-radius: 20px;
  box-shadow: 0 28px 80px rgba(8,20,38,.26);
  max-width: calc(100vw - 24px);
  max-height: calc(100vh - 24px);
  overflow: auto;
}

/* Toasts */
body.app-shell .toast {
  border: 1px solid rgba(255,255,255,.28);
  border-radius: 13px;
  box-shadow: 0 16px 40px rgba(8,20,38,.22);
}

/* Small status chips can be reused without JS changes. */
body.app-shell .status-chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 28px;
  padding: 5px 10px;
  border-radius: 999px;
  color: var(--app-primary);
  background: var(--app-primary-soft, #eaf2ff);
  font-size: .78rem;
  font-weight: 750;
}

@media (max-width: 720px) {
  body.app-shell {
    background-attachment: scroll;
  }

  body.app-shell .container {
    width: min(100% - 20px, 100%);
    max-width: none;
    margin-top: 12px;
    padding: 0 4px;
  }

  body.app-shell .header-brand {
    margin-bottom: 18px;
  }

  body.app-shell .page-heading {
    align-items: flex-start;
    flex-direction: column;
  }

  body.app-shell--learner #sessionDetails {
    grid-template-columns: 1fr;
  }

  body.app-shell .card {
    border-radius: 16px;
  }

  body.app-shell .topbar {
    border-radius: 14px;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.app-shell *,
  body.app-shell *::before,
  body.app-shell *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
  }
}
