/* ── Design tokens ────────────────────────────────────────────────────────── */
:root {
  --ink:       #0f2437;
  --ink-soft:  #1e3a52;
  --blue:      #1d6fa8;
  --accent:    #2563eb;
  --muted:     #64748b;
  --line:      #e2e8f0;
  --page:      #f8fafc;
  --surface:   #ffffff;
  --mist:      #f1f5f9;

  --shadow-xs: 0 1px 2px rgba(15,36,55,.04);
  --shadow-sm: 0 1px 3px rgba(15,36,55,.06), 0 2px 8px rgba(15,36,55,.04);
  --shadow-md: 0 4px 16px rgba(15,36,55,.07), 0 1px 4px rgba(15,36,55,.04);
  --shadow-lg: 0 8px 28px rgba(15,36,55,.09), 0 2px 6px rgba(15,36,55,.04);

  --radius-sm:  8px;
  --radius-md:  12px;
  --radius-lg:  16px;
  --radius-xl:  20px;
}

/* ── Reset & base ─────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }

body {
  margin: 0;
  font-family: "Inter", "Segoe UI", system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.6;
  background: var(--page);
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
}

a { color: var(--blue); text-decoration: none; }
a:hover { text-decoration: underline; }

h1 { margin: 0 0 6px; font-size: 26px; font-weight: 700; line-height: 1.15; letter-spacing: -.02em; }
h2 { margin: 0 0 12px; font-size: 16px; font-weight: 700; line-height: 1.25; }
h3 { margin: 0; font-size: 13px; font-weight: 600; line-height: 1.3; }

/* ── Topbar ───────────────────────────────────────────────────────────────── */
.topbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 28px;
  height: 60px;
  background: #0f2437;
  border-bottom: 1px solid rgba(255,255,255,.08);
  color: white;
  position: sticky;
  top: 0;
  z-index: 100;
}

.topbar-actions { display: flex; align-items: center; gap: 6px; }

.topbar-link {
  color: rgba(255,255,255,.75);
  text-decoration: none;
  font-size: 13.5px;
  font-weight: 500;
  padding: 6px 12px;
  border-radius: var(--radius-sm);
  transition: color .15s, background .15s;
}
.topbar-link:hover {
  color: white;
  background: rgba(255,255,255,.1);
  text-decoration: none;
}

.brand { font-size: 17px; font-weight: 700; letter-spacing: -.02em; }
.subtitle { font-size: 12px; color: rgba(255,255,255,.55); margin-top: 1px; }

/* ── Layout shell ─────────────────────────────────────────────────────────── */
.page-shell {
  max-width: 1240px;
  margin: 0 auto;
  padding: 28px 28px 48px;
}

/* ── Cards ────────────────────────────────────────────────────────────────── */
.card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-xl);
  padding: 22px 24px;
  box-shadow: var(--shadow-sm);
  margin-bottom: 16px;
  transition: box-shadow .2s;
}
.card:hover { box-shadow: var(--shadow-md); }

.card-scroll {
  max-height: 320px;
  overflow-y: auto;
  padding-right: 6px;
  scrollbar-width: thin;
  scrollbar-color: var(--line) transparent;
}

/* ── Dashboard layout ─────────────────────────────────────────────────────── */
.grid-two {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-bottom: 16px;
}

.dashboard-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 20px;
}

/* ── Module selector ──────────────────────────────────────────────────────── */
.selector-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.selector-card {
  display: block;
  background: var(--surface);
  border: 1px solid var(--line);
  border-top: 3px solid var(--blue);
  border-radius: var(--radius-xl);
  padding: 24px;
  box-shadow: var(--shadow-sm);
  color: var(--ink);
  text-decoration: none;
  min-height: 200px;
  transition: transform .18s ease, box-shadow .18s ease, border-top-color .18s;
}
.selector-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-lg);
  border-top-color: var(--accent);
  text-decoration: none;
}
.selector-card h2 { margin: 0 0 8px; font-size: 17px; }
.selector-card p { margin: 0; color: var(--muted); line-height: 1.5; font-size: 13.5px; }

.selector-icon {
  width: 52px;
  height: 52px;
  border-radius: 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 16px;
  background: linear-gradient(135deg, #0f2437 0%, #2563eb 100%);
  color: white;
  font-size: 17px;
  font-weight: 700;
  box-shadow: 0 4px 12px rgba(37,99,235,.25);
}

/* ── Buttons ──────────────────────────────────────────────────────────────── */
.primary-button,
.secondary-button,
.secondary-button-dark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: var(--radius-md);
  padding: 9px 18px;
  font-size: 13.5px;
  font-weight: 600;
  font-family: inherit;
  cursor: pointer;
  transition: background .15s, box-shadow .15s, transform .1s;
  white-space: nowrap;
  text-decoration: none;
}
.primary-button {
  background: var(--accent);
  color: white;
  box-shadow: 0 1px 3px rgba(37,99,235,.3);
}
.primary-button:hover {
  background: #1d4ed8;
  box-shadow: 0 4px 12px rgba(37,99,235,.35);
  text-decoration: none;
  color: white;
}
.secondary-button {
  background: rgba(255,255,255,.14);
  color: white;
  border: 1px solid rgba(255,255,255,.2);
}
.secondary-button:hover {
  background: rgba(255,255,255,.22);
  text-decoration: none;
  color: white;
}
.secondary-button-dark {
  background: var(--ink);
  color: white;
}
.secondary-button-dark:hover {
  background: var(--ink-soft);
  text-decoration: none;
  color: white;
}

button:disabled, select:disabled, input:disabled {
  opacity: .5;
  cursor: not-allowed;
}

/* ── Inputs ───────────────────────────────────────────────────────────────── */
.stack-form { display: flex; flex-direction: column; gap: 14px; }
.stack-form label { display: flex; flex-direction: column; gap: 5px; font-weight: 600; font-size: 13px; }

.stack-form input,
.stack-form select,
.stack-form textarea {
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  font-size: 14px;
  font-family: inherit;
  background: var(--surface);
  color: var(--ink);
  transition: border-color .15s, box-shadow .15s;
}
.stack-form input:focus,
.stack-form select:focus,
.stack-form textarea:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(37,99,235,.12);
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.form-grid-full { grid-column: 1 / -1; }
.compact-stack { gap: 10px; }

/* ── Alerts ───────────────────────────────────────────────────────────────── */
.alert-banner {
  padding: 12px 16px;
  border-radius: var(--radius-md);
  margin-bottom: 16px;
  border: 1px solid var(--line);
  font-size: 13.5px;
  font-weight: 600;
}
.alert-success { background: #f0fdf4; border-color: #bbf7d0; color: #166534; }
.alert-error   { background: #fef2f2; border-color: #fecaca; color: #991b1b; }

.error-banner {
  padding: 11px 14px; border-radius: var(--radius-md);
  background: #fef2f2; color: #991b1b; margin-bottom: 12px;
  border: 1px solid #fecaca; font-size: 13px;
}
.success-banner {
  padding: 10px 14px; border-radius: var(--radius-md);
  background: #f0fdf4; color: #166534; border: 1px solid #bbf7d0;
  margin-bottom: 12px; font-size: 13px; font-weight: 600;
}
.info-banner {
  padding: 12px 16px; border-radius: var(--radius-md);
  background: #eff6ff; color: #1e40af; border: 1px solid #bfdbfe;
  margin-bottom: 12px; font-size: 13px;
}
.info-banner strong { display: block; margin-bottom: 4px; }
.info-banner p { margin: 0; }

/* ── Misc util ────────────────────────────────────────────────────────────── */
.muted, small { color: var(--muted); }
.inline-note { font-size: 12px; color: var(--muted); }
.section-divider { height: 1px; background: var(--line); margin: 16px 0; }

.notice-list { margin: 0; padding-left: 18px; }
.notice-list li + li { margin-top: 4px; }

code {
  font-family: "SF Mono", "Menlo", monospace;
  background: #eff6ff; color: #1e40af;
  padding: 2px 6px; border-radius: 5px; font-size: 13px;
}

/* ── Center switcher ──────────────────────────────────────────────────────── */
.center-switcher-form {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
}
.center-switcher-form select, .search-input {
  padding: 9px 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  font-size: 13.5px;
  background: var(--surface);
  color: var(--ink);
  font-family: inherit;
  transition: border-color .15s, box-shadow .15s;
}
.center-switcher-form select:focus, .search-input:focus {
  outline: none; border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(37,99,235,.12);
}
.center-switcher-form select { min-width: 240px; }
.dashboard-switcher { justify-content: flex-end; }
.search-input { width: 320px; max-width: 100%; }

/* ── Selector toolbar ─────────────────────────────────────────────────────── */
.selector-toolbar {
  display: flex; align-items: center;
  justify-content: space-between; gap: 16px;
}

/* ── Login ────────────────────────────────────────────────────────────────── */
.login-card { max-width: 420px; margin: 64px auto 0; }

/* ── Study list ───────────────────────────────────────────────────────────── */
.study-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
.study-list li {
  padding: 11px 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--mist);
  transition: background .15s;
}
.study-list li:hover { background: #e8f0f8; }
.study-list li, .study-list li a, .study-list li div { font-size: 12.5px; line-height: 1.4; }

.study-inline-actions { display: flex; align-items: center; gap: 10px; margin-top: 8px; flex-wrap: wrap; }
.validated-inline-status { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 8px; }

/* ── Folder / batch cards ─────────────────────────────────────────────────── */
.day-folder { margin-bottom: 14px; }

.folder-card {
  margin-bottom: 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: var(--mist);
  overflow: hidden;
  transition: box-shadow .15s;
}
.folder-card:hover { box-shadow: var(--shadow-sm); }
.folder-card.folder-ready   { border-color: #bbf7d0; background: #f0fdf4; }
.folder-card.folder-downloaded { border-color: #bfdbfe; background: #eff6ff; }
.folder-card.folder-closed  { border-color: #e2e8f0; background: #f8fafc; opacity: .88; }

.folder-summary {
  display: flex; align-items: center; justify-content: space-between;
  gap: 10px; padding: 10px 14px;
  cursor: pointer; font-weight: 600; list-style: none; font-size: 12.5px;
  user-select: none;
}
.folder-summary::-webkit-details-marker { display: none; }
.folder-summary::after { content: "+"; font-size: 18px; line-height: 1; color: var(--blue); font-weight: 400; }
.folder-card[open] .folder-summary::after { content: "−"; }

.folder-title  { font-size: 12.5px; }
.folder-count  { color: var(--muted); font-size: 11.5px; font-weight: 500; }

.folder-content {
  padding: 0 16px 16px;
  background: rgba(255,255,255,.7);
  border-top: 1px solid var(--line);
}

.day-folder-header {
  display: flex; align-items: center; justify-content: space-between;
  gap: 10px; margin-bottom: 10px;
}
.day-folder-header strong { font-size: 12px; }
.folder-actions { display: flex; align-items: center; gap: 8px; }

/* ── Badges ───────────────────────────────────────────────────────────────── */
.status-badge {
  display: inline-flex; align-items: center;
  margin-left: 6px; padding: 2px 8px;
  border-radius: 999px; background: #dcfce7; color: #166534;
  font-size: 10.5px; font-weight: 700;
}
.status-badge-neutral { background: #f1f5f9; color: #475569; }

/* ── Inline links & buttons ───────────────────────────────────────────────── */
.secondary-inline-link { color: var(--blue); font-weight: 600; text-decoration: none; }
.secondary-inline-link:hover { text-decoration: underline; }
.inline-form { margin: 0; }

.link-button {
  border: 0; background: transparent; color: var(--blue);
  font-weight: 600; cursor: pointer; padding: 0; font: inherit; font-size: 12.5px;
}
.link-button:hover { text-decoration: underline; }

.danger-link-button {
  border: 0; background: transparent; color: #dc2626;
  font-weight: 700; cursor: pointer; padding: 0; font: inherit; font-size: 12.5px;
}
.danger-link-button:hover { text-decoration: underline; }

/* ── Tables ───────────────────────────────────────────────────────────────── */
.study-table { width: 100%; border-collapse: collapse; }
.study-table th, .study-table td {
  text-align: left; padding: 10px 10px;
  border-bottom: 1px solid var(--line);
  font-size: 13px;
}
.study-table th { color: var(--muted); font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }
.study-table tbody tr:hover td { background: var(--mist); }
.downloaded-row td { background: #f0fdf4; }

.data-table { width: 100%; border-collapse: collapse; }
.data-table th, .data-table td {
  text-align: left; padding: 10px 12px;
  border-bottom: 1px solid var(--line); font-size: 13px;
}
.data-table th {
  background: var(--mist); color: var(--muted);
  font-size: 11.5px; font-weight: 600;
  text-transform: uppercase; letter-spacing: .04em;
}
.data-table tbody tr:hover td { background: #f8fafc; }

.table-toolbar { display: flex; align-items: center; justify-content: flex-end; margin-bottom: 10px; }
.table-scroll { max-height: 360px; overflow-y: auto; }

/* ── Search ───────────────────────────────────────────────────────────────── */
.search-empty { margin-top: 10px; font-size: 12.5px; }
.search-panel-header {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 14px; flex-wrap: wrap;
}
.dashboard-search-form { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.search-results-list { list-style: none; padding: 0; margin: 12px 0 0; display: flex; flex-direction: column; gap: 8px; }

.search-result-item {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 12px; padding: 11px 14px;
  border: 1px solid var(--line); border-radius: var(--radius-md);
  background: var(--mist);
}
.search-result-hidden { background: #f8fafc; }
.search-result-main { min-width: 0; flex: 1; }
.search-result-title-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 4px; }
.search-result-title-row strong { font-size: 12.5px; }
.search-result-main small { display: block; font-size: 11.5px; line-height: 1.4; }
.search-result-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }

/* ── Pending group ────────────────────────────────────────────────────────── */
.pending-group { margin-bottom: 16px; }
.pending-header {
  display: flex; align-items: center; justify-content: space-between;
  gap: 10px; margin-bottom: 10px;
}
.pending-header h3 { margin: 0; font-size: 13px; }

/* ── Compact & misc ───────────────────────────────────────────────────────── */
.compact-button { padding: 7px 12px; font-size: 12px; white-space: nowrap; }
.launch-link { display: inline-flex; align-items: center; text-decoration: none; }
.launch-link:hover { text-decoration: none; }
.api-list { margin: 0; padding-left: 18px; }
.portal-helper { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--line); }
.portal-helper-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.compact-hint { font-size: 12px; }

/* ── Admin users ──────────────────────────────────────────────────────────── */
.user-admin-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.user-admin-card {
  border: 1px solid var(--line); border-radius: var(--radius-lg);
  padding: 18px; background: var(--surface); box-shadow: var(--shadow-xs);
}
.user-admin-head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 10px; margin-bottom: 14px;
}
.user-admin-head strong { display: block; margin-bottom: 4px; font-size: 17px; }
.user-admin-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12px; color: var(--muted); }

/* ── Review layouts ───────────────────────────────────────────────────────── */
.review-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(360px, 1fr);
  gap: 16px; align-items: start;
}
.review-header-links {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap; justify-content: flex-end;
}
.review-preview-card, .review-editor-card { margin-bottom: 0; }
.review-preview-toolbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
.review-toolbar-spacer { flex: 1; }

.pdf-review-frame {
  width: 100%; height: 960px;
  border: 1px solid var(--line); border-radius: var(--radius-lg);
  background: #dce5ee;
}
.review-meta { margin-bottom: 16px; }
.review-meta-list { margin: 0; display: grid; grid-template-columns: 1fr; gap: 10px; }
.review-meta-list div {
  padding: 11px 13px; border: 1px solid var(--line);
  border-radius: var(--radius-md); background: var(--mist);
}
.review-meta-list dt {
  margin: 0 0 3px; font-size: 10.5px; font-weight: 700;
  color: var(--muted); text-transform: uppercase; letter-spacing: .04em;
}
.review-meta-list dd { margin: 0; font-size: 13px; line-height: 1.4; }
.review-editor-form { display: flex; flex-direction: column; gap: 12px; }
.review-editor-form label { display: flex; flex-direction: column; gap: 6px; font-weight: 600; }
.review-editor-form textarea {
  min-height: 740px; padding: 13px;
  border: 1px solid var(--line); border-radius: var(--radius-lg);
  font-size: 14px; line-height: 1.6; color: var(--ink);
  font-family: inherit; resize: vertical; background: var(--surface);
}
.review-actions { display: flex; justify-content: flex-end; gap: 10px; flex-wrap: wrap; }

/* ── ECG review page ──────────────────────────────────────────────────────── */
.ecg-review-page {
  --ecg-review-side-margin: 8mm;
  display: flex; flex-direction: column; gap: 12px;
  width: calc(100vw - (var(--ecg-review-side-margin) * 2));
  max-width: calc(100vw - (var(--ecg-review-side-margin) * 2));
  margin-left: calc(50% - 50vw + var(--ecg-review-side-margin));
  margin-right: calc(50% - 50vw + var(--ecg-review-side-margin));
}
.ecg-review-page .dashboard-header,
.ecg-review-page .success-banner,
.ecg-review-page .error-banner { margin-bottom: 0; }

.ecg-review-form-shell { display: flex; flex-direction: column; gap: 12px; }
.ecg-review-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) clamp(440px, 28vw, 520px);
  gap: 12px; align-items: start; width: 100%; margin-left: 0;
}
.ecg-review-workspace {
  display: grid;
  grid-template-columns: minmax(0, 1fr) clamp(360px, 28vw, 460px);
  gap: 12px; align-items: start; width: 100%;
}
.ecg-review-canvas-col { display: flex; flex-direction: column; }
.ecg-review-sidebar-col { display: flex; flex-direction: column; gap: 14px; }

.ecg-review-canvas-col .ecg-canvas-shell { border-radius: 10px 10px 0 0; }

.ecg-tools-bar {
  display: flex; flex-wrap: wrap; align-items: center; gap: 4px;
  padding: 7px 12px; background: #f4f7fa;
  border: 1px solid #dde4ec; border-top: none;
  border-radius: 0 0 10px 10px; margin-bottom: 6px;
}
.ecg-tools-group { display: flex; align-items: center; gap: 3px; }
.ecg-tools-group + .ecg-tools-group { padding-left: 8px; margin-left: 6px; border-left: 1px solid #cdd6e0; }
.ecg-tools-group--end { margin-left: auto; gap: 8px; border-left: none !important; padding-left: 0 !important; }

.ecg-tool-page-label { font-size: 13px; font-weight: 600; color: var(--ink); min-width: 72px; text-align: center; }
.ecg-tool-link { font-size: 13px; color: var(--blue); text-decoration: none; font-weight: 500; }
.ecg-tool-link:hover { text-decoration: underline; }

.ecg-tool-btn {
  display: inline-flex; align-items: center; justify-content: center;
  height: 30px; padding: 0 12px;
  background: white; border: 1px solid #c8d3de; border-radius: 6px;
  color: var(--ink); font-size: 12.5px; font-weight: 500;
  cursor: pointer; white-space: nowrap;
  transition: background .12s, border-color .12s, color .12s;
  font-family: inherit;
}
.ecg-tool-btn:hover:not(:disabled) { background: #edf2f7; border-color: #9aafc4; }
.ecg-tool-btn:disabled { opacity: .38; cursor: not-allowed; }
.ecg-tool-btn--icon { width: 30px; padding: 0; font-size: 16px; }
.ecg-tool-btn.is-active, .ecg-caliper-btn.is-active { background: #1a56a8; border-color: #1a56a8; color: white; }
.ecg-tool-btn.is-active:hover { background: #154a96; }

.ecg-review-preview-top-card, .ecg-review-panel,
.ecg-review-sidebar-card, .ecg-review-sidebar-col,
.ecg-review-report-card { margin-bottom: 0; }
.ecg-review-preview-top-card { padding: 16px; }
.ecg-review-preview-toolbar { margin-bottom: 12px; }

.ecg-review-frame-shell {
  overflow: hidden;
  border: 1px solid rgba(15,36,55,.1);
  border-radius: 10px;
  background: linear-gradient(180deg, #d4dde7 0%, #c5cfdb 100%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.2);
}
.ecg-review-canvas-col .ecg-review-frame-shell {
  border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-bottom: none;
}
.ecg-canvas-shell { position: relative; height: 700px; user-select: none; }
.ecg-review-canvas { display: block; width: 100%; height: 100%; }
.ecg-page-indicator { font-size: 13px; white-space: nowrap; }

.ecg-caliper-toolbar-group {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
  padding-left: 6px; border-left: 1px solid var(--line);
}
.ecg-caliper-result-bar, .ecg-caliper-calibrate-bar {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 8px 14px; margin-bottom: 10px; border-radius: 10px; font-size: 13px;
}
.ecg-caliper-result-bar { background: rgba(0,119,182,.08); border: 1px solid rgba(0,119,182,.2); }
.ecg-caliper-calibrate-bar { background: rgba(244,162,97,.1); border: 1px solid rgba(244,162,97,.3); }
.ecg-caliper-result-bar strong { font-size: 15px; color: #0077b6; }
.ecg-caliper-result-label { color: var(--muted); font-size: 12px; }
.ecg-caliper-sep { color: var(--muted); }
.ecg-caliper-result-dismiss {
  margin-left: auto; background: none; border: none;
  cursor: pointer; color: var(--muted); font-size: 14px; padding: 2px 6px; border-radius: 6px;
}
.ecg-caliper-result-dismiss:hover { background: rgba(0,0,0,.06); }
.ecg-caliper-custom-input {
  width: 110px; padding: 5px 8px; border: 1px solid var(--line);
  border-radius: 8px; font-size: 13px; background: white; color: var(--ink);
}

.ecg-review-sidebar-card { display: flex; flex-direction: column; gap: 14px; padding: 20px; }
.ecg-review-report-card {
  display: flex; flex-direction: column; gap: 14px;
  padding-top: 2px; border-top: 1px solid rgba(15,36,55,.1);
}
.ecg-review-sidebar-top, .ecg-review-report-header { display: flex; flex-direction: column; gap: 10px; }
.ecg-review-case-heading { margin-bottom: 0; }
.ecg-review-kicker {
  margin: 0 0 4px; font-size: 10.5px; font-weight: 800;
  letter-spacing: .08em; text-transform: uppercase; color: var(--blue);
}
.ecg-review-case-heading h2 { margin-bottom: 0; font-size: 17px; line-height: 1.15; }
.ecg-review-patient-summary {
  display: flex; flex-direction: column; gap: 5px;
  padding: 10px 0 12px; border-bottom: 1px solid rgba(15,36,55,.1);
}
.ecg-review-patient-line {
  margin: 0; display: flex; flex-wrap: wrap; gap: 6px 12px; font-size: 13px; line-height: 1.4;
}
.ecg-review-patient-line strong {
  color: var(--muted); font-size: 10.5px; text-transform: uppercase; letter-spacing: .03em;
}
.ecg-review-report-topline { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.ecg-review-report-topline h3 { margin: 0; font-size: 17px; }
.ecg-review-meta-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.ecg-review-meta-chip {
  display: inline-flex; align-items: center; min-height: 28px; padding: 0 10px;
  border: 1px solid var(--line); border-radius: 999px;
  background: var(--mist); font-size: 12px; font-weight: 600; color: var(--ink);
}
.ecg-review-file-line { margin: 0; font-size: 13px; line-height: 1.45; color: var(--muted); }
.ecg-review-file-line strong { color: var(--ink); }
.ecg-review-editor-stack { gap: 10px; }
.ecg-review-field { display: flex; flex-direction: column; gap: 7px; font-weight: 600; }
.ecg-review-field textarea, .ecg-review-field input {
  padding: 12px; border: 1px solid var(--line); border-radius: var(--radius-lg);
  font-size: 14px; line-height: 1.6; color: var(--ink);
  font-family: inherit; resize: vertical; background: var(--surface);
  transition: border-color .15s, box-shadow .15s;
}
.ecg-review-field textarea:focus, .ecg-review-field input:focus {
  outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(37,99,235,.12);
}
.ecg-review-field input { min-height: 50px; }
.ecg-review-summary-field textarea { min-height: clamp(120px, 14vh, 168px); }
.ecg-review-inline-template-tools { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.ecg-review-inline-template-picker { display: flex; width: 100%; align-items: center; gap: 10px; flex-wrap: wrap; }
.ecg-review-inline-template-picker[hidden] { display: none !important; }
.ecg-review-inline-template-picker select {
  flex: 1 1 220px; min-width: 0; padding: 9px 12px;
  border: 1px solid var(--line); border-radius: var(--radius-md);
  font-size: 13px; color: var(--ink); background: var(--surface); font-family: inherit;
}
.ecg-review-inline-template-empty { margin: 0; font-size: 12px; }
.ecg-review-primary-actions { display: grid; grid-template-columns: 1fr; gap: 10px; }
.ecg-review-primary-actions .primary-button,
.ecg-review-primary-actions .secondary-button-dark { width: 100%; }
.ecg-review-landscape-frame { display: block; height: min(86vh, 1120px); border: 0; border-radius: 0; background: #c6d0db; }
.ecg-review-secondary-grid { display: grid; grid-template-columns: minmax(320px, .9fr) minmax(0, 1.1fr); gap: 12px; align-items: start; }
.ecg-review-section-head, .ecg-review-template-panel-head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 10px; flex-wrap: wrap; margin-bottom: 10px;
}
.ecg-review-section-head h2, .ecg-review-template-panel-head h2 { margin-bottom: 4px; }
.ecg-review-section-head p, .ecg-review-template-panel-head p { margin: 0; }
.ecg-review-pending-scroll { max-height: 520px; overflow: auto; padding-right: 6px; }
.ecg-review-pending-table { min-width: 980px; border: 1px solid var(--line); border-radius: var(--radius-lg); overflow: hidden; background: white; }
.ecg-review-pending-grid {
  display: grid;
  grid-template-columns: 72px minmax(132px, 1.2fr) minmax(190px, 1.55fr) minmax(142px, 1.1fr) minmax(132px, 1fr) minmax(156px, 1.2fr) minmax(120px, .95fr);
  align-items: center; gap: 0;
}
.ecg-review-pending-grid-header {
  position: sticky; top: 0; z-index: 1; min-height: 52px; padding: 0 12px;
  border-bottom: 1px solid var(--line); background: var(--mist);
}
.ecg-review-pending-grid-header .ecg-review-pending-cell { font-size: 12px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.ecg-review-pending-cell { min-width: 0; padding: 0 10px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ecg-review-pending-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; }
.ecg-review-pending-list li { list-style: none; }
.ecg-review-pending-item { border-bottom: 1px solid var(--line); background: white; overflow: hidden; transition: background .12s; }
.ecg-review-pending-item:last-child { border-bottom: 0; }
.ecg-review-pending-item.is-active { background: #eff6ff; box-shadow: inset 3px 0 0 var(--accent); }
.ecg-review-pending-button { width: 100%; display: block; padding: 0; border: 0; background: transparent; color: inherit; text-align: left; cursor: pointer; }
.ecg-review-pending-button .ecg-review-pending-grid { min-height: 60px; padding: 0 12px; }
.ecg-review-pending-button:hover { background: #f8fafc; }
.ecg-review-pending-button:focus-visible { outline: 2px solid rgba(37,99,235,.25); outline-offset: -2px; }
.ecg-review-pending-cell-icon { display: flex; align-items: center; justify-content: center; }
.ecg-review-pending-icon {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 38px; min-height: 28px; padding: 0 8px;
  border-radius: 8px; background: #16a34a; color: white;
  font-size: 11px; font-weight: 800; letter-spacing: .04em;
}
.ecg-review-pending-button .ecg-review-pending-cell { font-size: 13.5px; line-height: 1.35; color: var(--ink); }
.ecg-review-pending-button .ecg-review-pending-cell:nth-child(2) { font-weight: 700; color: var(--blue); }
.ecg-review-pending-button .ecg-review-pending-cell:nth-child(4),
.ecg-review-pending-button .ecg-review-pending-cell:nth-child(6) { font-variant-numeric: tabular-nums; }
.ecg-review-pending-state-cell { display: flex; justify-content: flex-start; }
.ecg-review-pending-status-chip {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 88px; min-height: 28px; padding: 0 12px;
  border-radius: 999px; background: #eff6ff; color: var(--blue);
  font-size: 11.5px; font-weight: 700; white-space: nowrap;
}
.ecg-review-template-shell { display: flex; flex-direction: column; gap: 14px; }
.ecg-review-template-select-row, .ecg-review-template-submit-row, .ecg-review-template-card-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ecg-review-template-select-row select {
  min-width: 220px; padding: 9px 12px;
  border: 1px solid var(--line); border-radius: var(--radius-md);
  font-size: 13px; color: var(--ink); background: var(--surface); font-family: inherit;
}
.ecg-review-template-editor { display: flex; flex-direction: column; gap: 10px; }
.ecg-review-template-editor-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.ecg-review-template-body-field textarea { min-height: 220px; }
.ecg-review-template-library { display: flex; flex-direction: column; gap: 8px; max-height: 280px; overflow-y: auto; padding-right: 6px; }
.ecg-review-template-card {
  display: flex; flex-direction: column; gap: 8px; padding: 12px 16px;
  border: 1px solid var(--line); border-radius: var(--radius-lg); background: white;
}
.ecg-review-template-card-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.ecg-review-template-card-header strong { display: block; margin-bottom: 3px; font-size: 13.5px; }
.ecg-review-template-card-header p { margin: 0; }
.ecg-review-empty-state {
  padding: 12px 14px; border: 1px dashed var(--line);
  border-radius: var(--radius-lg); background: rgba(255,255,255,.7);
  color: var(--muted); font-size: 13px;
}

/* ── Dashboard redesign ───────────────────────────────────────────────────── */
.dashboard-header-left h1 { margin-bottom: 4px; }
.dashboard-header-right { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }

.pending-badge-large {
  display: inline-flex; align-items: center; padding: 5px 14px;
  border-radius: 999px; background: #dc2626; color: white;
  font-size: 13px; font-weight: 700; letter-spacing: .01em; white-space: nowrap;
  box-shadow: 0 2px 8px rgba(220,38,38,.3);
}

.dashboard-hero-card {
  display: flex; align-items: center; justify-content: space-between;
  gap: 20px; border-left: 4px solid var(--accent);
  background: linear-gradient(105deg, #eff6ff 0%, white 55%);
  padding: 22px 26px;
}
.dashboard-hero-left { display: flex; flex-direction: column; gap: 5px; }
.dashboard-hero-stat { display: flex; align-items: baseline; gap: 10px; }
.dashboard-hero-number { font-size: 46px; font-weight: 800; line-height: 1; color: var(--ink); letter-spacing: -.03em; }
.dashboard-hero-label { font-size: 15px; font-weight: 600; color: var(--blue); }
.dashboard-hero-hint { margin: 0; font-size: 13px; color: var(--muted); }
.dashboard-hero-actions { display: flex; flex-direction: column; align-items: flex-end; gap: 8px; flex-shrink: 0; }
.dashboard-hero-btn { font-size: 14.5px; padding: 11px 22px; border-radius: var(--radius-md); white-space: nowrap; }

.dashboard-search-card { padding: 14px 20px; }
.dashboard-search-inline { display: flex; align-items: center; gap: 10px; }
.dashboard-search-full { flex: 1; min-width: 0; }

.card-section-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.card-section-head h2 { margin: 0; }

.status-badge-count {
  background: var(--blue); color: white;
  font-size: 11.5px; font-weight: 700; padding: 3px 10px; border-radius: 999px;
}

.dashboard-excel-collapse { margin-bottom: 16px; }
.dashboard-excel-collapse > summary {
  list-style: none; display: flex; align-items: center; gap: 12px;
  cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--muted); user-select: none;
}
.dashboard-excel-collapse > summary::-webkit-details-marker { display: none; }
.dashboard-excel-collapse > summary::before { content: "›"; font-size: 18px; transition: transform .2s; display: inline-block; }
.dashboard-excel-collapse[open] > summary::before { transform: rotate(90deg); }
.dashboard-excel-form { display: flex; align-items: center; gap: 10px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line); }

.dashboard-search-inline input[type="text"],
.dashboard-search-inline input[type="search"] {
  padding: 9px 12px; border: 1px solid var(--line); border-radius: var(--radius-md);
  font-size: 13.5px; font-family: inherit; background: var(--surface); color: var(--ink);
  transition: border-color .15s, box-shadow .15s;
}
.dashboard-search-inline input:focus {
  outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(37,99,235,.12);
}

/* ── Agenda WhatsApp ──────────────────────────────────────────────────────── */
.schedule-grid th, .schedule-grid td {
  padding: 10px 12px; border-bottom: 1px solid var(--line); vertical-align: middle;
}
.schedule-grid th {
  background: var(--mist); font-size: 11.5px; font-weight: 600;
  text-transform: uppercase; letter-spacing: .04em; color: var(--muted);
}
.schedule-grid tbody tr:last-child td { border-bottom: none; }

.schedule-select {
  width: 100%; padding: 7px 10px;
  border: 1px solid var(--line); border-radius: var(--radius-sm);
  font-size: 13px; background: white; color: var(--ink); font-family: inherit;
}
.schedule-select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(37,99,235,.12); }

/* ── Responsive ───────────────────────────────────────────────────────────── */
@media (max-width: 960px) {
  .user-admin-grid, .form-grid, .selector-grid, .grid-two { grid-template-columns: 1fr; }
}

@media (max-width: 1180px) {
  .ecg-review-page { width: calc(100vw - 14mm); max-width: calc(100vw - 14mm); margin-left: calc(50% - 50vw + 7mm); margin-right: calc(50% - 50vw + 7mm); }
  .ecg-review-hero-grid { grid-template-columns: minmax(0, 1fr) clamp(390px, 32vw, 470px); }
  .ecg-review-workspace { grid-template-columns: minmax(0, 1fr) clamp(340px, 30vw, 430px); }
  .ecg-review-landscape-frame { height: min(80vh, 960px); }
}

@media (max-width: 900px) {
  .dashboard-header, .selector-toolbar, .center-switcher-form { flex-direction: column; align-items: stretch; }
  .grid-two { grid-template-columns: 1fr; }
  .review-layout { grid-template-columns: 1fr; }
  .ecg-review-hero-grid, .ecg-review-workspace, .ecg-review-secondary-grid { grid-template-columns: 1fr; }
  .ecg-review-page { width: 100%; max-width: 100%; margin-left: 0; margin-right: 0; }
  .ecg-review-canvas-col .ecg-review-frame-shell { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
  .selector-grid { grid-template-columns: 1fr; }
  .topbar { flex-direction: column; align-items: flex-start; gap: 10px; height: auto; padding: 14px 18px; }
  .page-shell { padding: 18px 16px 36px; }
  .pending-header { flex-direction: column; align-items: flex-start; }
  .search-panel-header, .dashboard-search-form, .search-result-item, .search-result-actions { flex-direction: column; align-items: flex-start; }
  .center-switcher-form select { min-width: 0; width: 100%; }
  .pdf-review-frame { height: 720px; }
  .review-editor-form textarea { min-height: 420px; }
  .ecg-review-summary-field textarea { min-height: 150px; }
  .ecg-review-landscape-frame { height: 64vh; }
  .ecg-review-template-editor-grid { grid-template-columns: 1fr; }
  .ecg-review-report-topline { flex-direction: column; align-items: flex-start; }
  .ecg-review-inline-template-picker { flex-direction: column; align-items: stretch; }
  .ecg-review-template-card-header { flex-direction: column; align-items: flex-start; }
  .ecg-review-template-select-row select { min-width: 0; width: 100%; }
}

@media (max-width: 760px) {
  .dashboard-hero-card { flex-direction: column; align-items: flex-start; }
  .dashboard-hero-actions { align-items: flex-start; flex-direction: row; flex-wrap: wrap; }
  .dashboard-hero-number { font-size: 36px; }
  .dashboard-search-inline { flex-wrap: wrap; }
}

@media (max-width: 640px) {
  .ecg-review-patient-line { flex-direction: column; align-items: flex-start; gap: 5px; }
  .ecg-review-landscape-frame { height: 54vh; }
}
