/* ==========================================================================
   EkşiVeri — arayüz tasarım sistemi
   Tek yüzey rengi, tek kenarlık, iki köşe yarıçapı, küçük bir boşluk ölçeği.
   ========================================================================== */

:root {
  --bg: #f5f6f8;
  --surface: #ffffff;
  --surface-2: #f8f9fb;
  --border: #e3e7ed;
  --border-strong: #cfd6e0;

  --text: #0f1b2d;
  --text-2: #3b4a5f;
  --muted: #637184;

  --primary: #0f2747;
  --primary-hover: #1b3d6d;
  --primary-tint: #eaf0f8;
  --accent: #0f9f77;
  --accent-tint: #e4f6ef;
  --danger: #b42318;
  --danger-tint: #fdeceb;

  --radius: 12px;
  --radius-sm: 8px;
  --shadow: 0 1px 2px rgba(15, 27, 45, 0.05);
  --shadow-pop: 0 8px 24px rgba(15, 27, 45, 0.08);

  --s1: 4px;
  --s2: 8px;
  --s3: 12px;
  --s4: 16px;
  --s5: 24px;
  --s6: 32px;
}

/* ---------- Taban ---------- */
html, body { background: var(--bg); }
body {
  font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  font-size: 14px;
  line-height: 1.55;
  color: var(--text);
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3, h4, h5 {
  font-family: 'Manrope', 'Inter', sans-serif;
  color: var(--text);
  letter-spacing: -0.01em;
}
a { color: var(--primary-hover); }
.container-fluid { max-width: 1480px; padding: 0; }
.app-shell { padding: 0 var(--s5) var(--s6); }

/* ---------- Üst çubuk ---------- */
.app-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s4);
  padding: var(--s4) 0;
}
.app-brand { display: flex; align-items: center; gap: var(--s3); min-width: 0; }
.app-brand-mark {
  width: 36px; height: 36px; flex: none;
  display: grid; place-items: center;
  border-radius: 10px;
  background: var(--primary);
  color: #fff;
  font: 800 17px/1 'Manrope', sans-serif;
}
.app-brand-name { font: 800 19px/1.1 'Manrope', sans-serif; color: var(--text); }
.app-brand-tag { color: var(--muted); font-size: 12.5px; margin-top: 2px; }
.app-bar-right { display: flex; align-items: center; gap: var(--s3); }
.status-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 10px; border-radius: 999px;
  background: var(--accent-tint); color: #0a7a5b;
  font-size: 12px; font-weight: 600;
}
.status-chip:before {
  content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--accent);
}
.user-chip {
  display: flex; align-items: center; gap: var(--s3);
  padding: 5px 6px 5px 5px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 999px;
}
.user-chip-avatar {
  width: 32px; height: 32px; border-radius: 50%; object-fit: cover; flex: none;
  background: var(--primary-tint);
}
.user-chip-text { line-height: 1.2; min-width: 0; }
.user-chip-name {
  font-weight: 600; font-size: 13px; max-width: 200px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.user-chip-role { color: var(--muted); font-size: 11.5px; }
.user-chip .btn { padding: 6px 12px; font-size: 12.5px; }

/* ---------- Sekmeler ---------- */
.app-tab-wrap > .tabbable > .nav-tabs {
  display: flex; flex-wrap: nowrap; gap: var(--s1);
  overflow-x: auto; overflow-y: hidden;
  margin: 0 0 var(--s5);
  border-bottom: 1px solid var(--border);
  scrollbar-width: none;
}
.app-tab-wrap > .tabbable > .nav-tabs::-webkit-scrollbar { display: none; }
.app-tab-wrap > .tabbable > .nav-tabs > li { float: none; margin: 0; flex: none; }
.app-tab-wrap > .tabbable > .nav-tabs > li > a {
  margin: 0; border: 0; border-radius: 0;
  padding: 11px 14px;
  background: transparent;
  color: var(--muted);
  font: 600 14px 'Inter', sans-serif;
  white-space: nowrap;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
}
.app-tab-wrap > .tabbable > .nav-tabs > li > a:hover {
  background: transparent; color: var(--text); border-bottom-color: var(--border-strong);
}
.app-tab-wrap > .tabbable > .nav-tabs > li.active > a,
.app-tab-wrap > .tabbable > .nav-tabs > li.active > a:hover,
.app-tab-wrap > .tabbable > .nav-tabs > li.active > a:focus {
  background: transparent; border: 0; border-bottom: 2px solid var(--primary);
  color: var(--primary);
}
.app-tab-wrap > .tabbable > .tab-content > .tab-pane { background: transparent; }

/* ---------- Sayfa başlığı ---------- */
.app-section-header { margin: 0 0 var(--s5); }
.app-section-header h3 { margin: 0; font-size: 22px; font-weight: 800; }
.app-section-header h3 .fa, .app-section-header h3 .fas { color: var(--muted); margin-right: 6px; font-size: 18px; }
.app-section-header p { margin: 4px 0 0; color: var(--muted); font-size: 14px; }

/* ---------- Kartlar ---------- */
.app-panel-card,
.dashboard-card,
.analysis-container,
.tab-pane .well {
  min-width: 0;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: var(--s5);
}
.tab-pane .well { min-height: 0; }
.analysis-container { margin-top: 0; }
.dashboard-section { display: grid; gap: var(--s5); min-width: 0; }
.dashboard-grid {
  display: grid; gap: var(--s5);
  grid-template-columns: minmax(280px, 0.8fr) minmax(0, 1.6fr);
}
.dashboard-card-full { grid-column: 1 / -1; }
.dashboard-card-header { display: block; margin-bottom: var(--s4); }
.dashboard-card-accent { display: none; }
.dashboard-card-title { margin: 0; font-size: 16px; font-weight: 700; }
.dashboard-card-copy { margin: 2px 0 0; color: var(--muted); font-size: 13px; }
.dashboard-note {
  margin-top: var(--s3); padding: var(--s3) var(--s4);
  border-radius: var(--radius-sm);
  background: var(--surface-2); border: 1px solid var(--border);
  color: var(--muted); font-size: 12.5px;
}
.preview-actions-wrap { margin-bottom: var(--s4); }
.criteria-panel .form-group:last-child { margin-bottom: 0; }

/* ---------- Form ---------- */
label, .control-label { color: var(--text-2); font-weight: 600; font-size: 13px; margin-bottom: 6px; }
.form-group { margin-bottom: var(--s4); }
.form-control, .selectize-input {
  min-height: 40px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  background: var(--surface);
  box-shadow: none;
  color: var(--text);
  font-size: 14px;
}
.form-control { height: 40px; padding: 8px 12px; }
textarea.form-control { height: auto; min-height: 96px; resize: vertical; line-height: 1.5; }
.selectize-input { padding: 9px 12px; }
.selectize-dropdown { border-radius: var(--radius-sm); border-color: var(--border-strong); box-shadow: var(--shadow-pop); }
.form-control:focus, .selectize-input.focus {
  border-color: var(--primary-hover);
  box-shadow: 0 0 0 3px rgba(27, 61, 109, 0.14);
}
.shiny-input-container { max-width: 100%; }
.shiny-input-container > .form-control, textarea.form-control { width: 100%; max-width: 100%; box-sizing: border-box; }
.irs--shiny .irs-bar { background: var(--primary); border-color: var(--primary); }
.irs--shiny .irs-handle { border-color: var(--primary); }
.irs--shiny .irs-single, .irs--shiny .irs-from, .irs--shiny .irs-to { background: var(--primary); }
.input-group .btn { height: 40px; }

/* ---------- Düğmeler ---------- */
.btn, .tab-pane .btn {
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  padding: 9px 16px;
  font-weight: 600; font-size: 14px;
  box-shadow: none;
  transition: background .15s, border-color .15s, color .15s;
}
.btn-primary, .app-btn-primary, .tab-pane .btn-primary {
  background: var(--primary); border-color: var(--primary); color: #fff !important;
}
.btn-primary:hover, .btn-primary:focus, .app-btn-primary:hover, .app-btn-primary:focus {
  background: var(--primary-hover); border-color: var(--primary-hover);
}
.btn-success, .app-btn-secondary, .tab-pane .btn-success {
  background: var(--surface); border-color: var(--border-strong); color: var(--primary) !important;
}
.btn-success:hover, .app-btn-secondary:hover { background: var(--surface-2); border-color: var(--primary-hover); }
.btn-default, .tab-pane .btn-default {
  background: var(--surface); border-color: var(--border-strong); color: var(--text-2) !important;
}
.btn-default:hover { background: var(--surface-2); }
.btn-info, .tab-pane .btn-info {
  background: var(--primary-tint); border-color: var(--primary-tint); color: var(--primary) !important;
  margin-bottom: 0;
}
.btn-info:hover { background: #dce6f3; }
.btn-block + .btn-block { margin-top: 0; }
.btn:focus-visible, a:focus-visible, .nav-tabs a:focus-visible {
  outline: 2px solid var(--primary-hover); outline-offset: 2px;
}

/* ---------- Kaynak seçimi ---------- */
.source-card-group .shiny-options-group {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s3); margin-top: 0;
}
.source-card-group .radio { margin: 0; }
.source-card-group .radio label {
  width: 100%; min-height: 84px; margin: 0; padding: var(--s3);
  display: flex; align-items: center; justify-content: center; text-align: center;
  background: var(--surface);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  color: var(--text-2); font-weight: 600; cursor: pointer;
  transition: border-color .15s, background .15s;
}
.source-card-group .radio label:hover { border-color: var(--primary-hover); }
.source-card-group .radio input { position: absolute; opacity: 0; pointer-events: none; }
.source-card-group .radio:has(input:checked) label {
  background: var(--primary-tint); border-color: var(--primary); color: var(--primary);
  box-shadow: inset 0 0 0 1px var(--primary);
}
.source-card-group .source-choice-inner { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.source-card-group .source-choice-inner .fa { font-size: 20px; }

/* ---------- Tablolar (DataTables) ---------- */
.dataTables_wrapper { color: var(--text-2); font-size: 13.5px; width: 100%; }
.dataTables_wrapper .dataTables_scrollBody, .dataTables_wrapper .dataTables_scroll { border-radius: var(--radius-sm); }
table.dataTable { border-collapse: collapse !important; border-spacing: 0 !important; width: 100% !important; margin: 0 !important; }
table.dataTable thead th {
  border-bottom: 1px solid var(--border) !important;
  background: var(--surface-2);
  color: var(--muted) !important;
  font-size: 11.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
  padding: 10px 12px !important;
  white-space: nowrap;
}
table.dataTable thead th:first-child { border-top-left-radius: var(--radius-sm); }
table.dataTable thead th:last-child { border-top-right-radius: var(--radius-sm); }
table.dataTable tbody tr { background: var(--surface) !important; box-shadow: none; }
table.dataTable tbody tr:hover { background: var(--surface-2) !important; }
table.dataTable tbody td {
  border-top: 1px solid var(--border) !important;
  padding: 11px 12px !important;
  vertical-align: middle;
  overflow-wrap: anywhere;
}
table.dataTable.no-footer { border-bottom: 1px solid var(--border) !important; }
table.dataTable tbody tr.selected, table.dataTable tbody tr.selected td { background: var(--primary-tint) !important; color: var(--text); box-shadow: none; }
table.dataTable td.num, table.dataTable th.num { text-align: right; font-variant-numeric: tabular-nums; }
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select {
  background: var(--surface); border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm); min-height: 36px; padding: 6px 10px; margin-left: 6px;
}
.dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter { margin-bottom: var(--s3); }
.dataTables_wrapper .dataTables_info { color: var(--muted); font-size: 12.5px; padding-top: 14px; }
.dataTables_wrapper .dataTables_paginate { padding-top: 10px; }
.dataTables_wrapper .dataTables_paginate .paginate_button {
  border-radius: var(--radius-sm) !important; border: 1px solid transparent !important;
  background: transparent !important; color: var(--text-2) !important; padding: 5px 11px;
}
.dataTables_wrapper .dataTables_paginate .paginate_button:hover { background: var(--surface-2) !important; border-color: var(--border) !important; }
.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
  background: var(--primary) !important; color: #fff !important;
}
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled { color: var(--border-strong) !important; }

/* ---------- Analiz çıktısı ---------- */
.analysis-result strong { color: var(--primary); font-weight: 700; }
.analysis-result p { margin-bottom: 12px; }
.analysis-result ul, .analysis-result ol { margin: 0 0 12px 20px; }

/* ---------- Metrik kartları (ortak) ---------- */
.app-metric-card {
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius);
  box-shadow: var(--shadow); padding: var(--s5); text-align: left;
}
.app-metric-label { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .05em; font-weight: 700; }
.app-metric-value { margin-top: 8px; font-size: 32px; line-height: 1; color: var(--text); font-weight: 800; }

/* ==========================================================================
   Yönetim paneli
   ========================================================================== */
.admin-dashboard { gap: var(--s5); }
.admin-header { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--s4); flex-wrap: wrap; }
.admin-header h2 { margin: 0; font-size: 22px; font-weight: 800; }
.admin-header p { margin: 4px 0 0; color: var(--muted); }
.admin-badge {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 10px; border-radius: 999px;
  background: var(--primary-tint); color: var(--primary);
  font-size: 12px; font-weight: 700;
}

.admin-metric-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s4); }
.admin-metric-slot { min-width: 0; }
.admin-stat-card {
  display: flex; flex-direction: column; gap: var(--s3);
  height: 100%;
  padding: var(--s5);
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius);
  box-shadow: var(--shadow);
}
.admin-stat-top { display: flex; align-items: center; gap: var(--s3); }
.admin-stat-icon {
  width: 36px; height: 36px; flex: none; display: grid; place-items: center;
  border-radius: 10px; font-size: 15px;
  background: var(--primary-tint); color: var(--primary);
}
.admin-stat-card-mint .admin-stat-icon { background: var(--accent-tint); color: #0a7a5b; }
.admin-stat-label { color: var(--muted); font-size: 12px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.admin-stat-value { font: 800 34px/1 'Manrope', sans-serif; color: var(--text); font-variant-numeric: tabular-nums; }
.admin-stat-note { color: var(--muted); font-size: 13px; }

.admin-main-grid, .admin-secondary-grid, .admin-editor-grid { display: grid; gap: var(--s4); align-items: stretch; min-width: 0; }
.admin-editor-grid { align-items: start; }
.admin-main-grid { grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr); }
.admin-secondary-grid { grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.8fr); }
.admin-editor-grid { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); }

.admin-panel-card { padding: var(--s5); min-width: 0; overflow: hidden; }
.admin-panel-header { margin-bottom: var(--s4); }
.admin-panel-heading h4 { margin: 0; font-size: 16px; font-weight: 700; }
.admin-panel-heading p { margin: 2px 0 0; color: var(--muted); font-size: 13px; }
.admin-panel-card .shiny-plot-output { background: transparent; border-radius: 0; }
.admin-panel-card .dataTables_wrapper { margin: 0; }

.admin-editor-grid-inner { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--s4); margin-bottom: 0; }
.admin-editor-column { display: grid; gap: 0; min-width: 0; align-content: start; }
.admin-editor-column .form-group { margin-bottom: var(--s4); }
.admin-editor-footer {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s4); flex-wrap: wrap;
  margin-top: var(--s2); padding-top: var(--s4); border-top: 1px solid var(--border);
}
.admin-editor-note { color: var(--muted); font-size: 12.5px; }
.admin-preview-card { position: sticky; top: var(--s4); }
.admin-preview-card .login-preview-card { margin: 0; }

/* ==========================================================================
   Giriş ekranı
   ========================================================================== */
.login-shell {
  min-height: 100vh; display: flex; align-items: center; justify-content: center;
  padding: var(--s6) var(--s5);
}
.login-layout {
  width: min(1100px, 100%);
  display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(340px, 0.85fr);
  gap: var(--s4); align-items: stretch;
}
.login-story-card, .login-auth-card {
  border-radius: 16px; border: 1px solid var(--border); box-shadow: var(--shadow);
}
.login-story-card { background: var(--surface); padding: 40px; }
.login-auth-card {
  background: var(--primary); border-color: var(--primary); color: #e9eff7;
  padding: 40px; display: flex; flex-direction: column; justify-content: center;
}
.login-kicker, .login-preview-kicker {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 10px; border-radius: 999px;
  background: var(--primary-tint); color: var(--primary);
  font-size: 12px; font-weight: 700; margin-bottom: var(--s4);
}
.login-auth-eyebrow {
  display: inline-flex; padding: 4px 10px; border-radius: 999px; margin-bottom: var(--s4);
  background: rgba(255,255,255,.12); color: #dbe7f5; font-size: 12px; font-weight: 700; width: fit-content;
}
.login-title { margin: 0; font-size: 36px; line-height: 1.15; font-weight: 800; max-width: 640px; }
.login-description { margin: var(--s4) 0 0; color: var(--muted); font-size: 16px; line-height: 1.7; max-width: 640px; }
.login-feature-list { display: grid; gap: var(--s3); margin-top: var(--s5); }
.login-feature-item { display: flex; gap: var(--s3); align-items: flex-start; }
.login-feature-icon {
  width: 24px; height: 24px; flex: none; display: grid; place-items: center;
  border-radius: 50%; background: var(--accent-tint); color: #0a7a5b; font-size: 11px; margin-top: 1px;
}
.login-feature-text { color: var(--text-2); font-size: 14.5px; line-height: 1.55; font-weight: 500; }
.login-trust-box {
  margin-top: var(--s5); padding: var(--s4);
  border-radius: var(--radius-sm); background: var(--surface-2); border: 1px solid var(--border);
}
.login-trust-label { color: var(--text); font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.login-trust-text { margin-top: 6px; color: var(--muted); font-size: 13.5px; line-height: 1.6; }
.login-auth-title { margin: 0; font-size: 26px; font-weight: 800; color: #fff; }
.login-auth-copy { margin: var(--s3) 0 var(--s5); color: rgba(226,235,246,.85); font-size: 14.5px; line-height: 1.7; }
.login-google-button {
  width: 100%; padding: 13px 18px; font-size: 15px;
  background: #fff !important; border-color: #fff !important; color: var(--primary) !important;
}
.login-google-button:hover, .login-google-button:focus { background: var(--primary-tint) !important; border-color: var(--primary-tint) !important; }
.login-auth-footer { display: flex; gap: 8px; align-items: center; margin-top: var(--s4); color: rgba(226,235,246,.7); font-size: 12.5px; }
.login-error-box {
  background: var(--danger-tint); color: var(--danger); border: 1px solid #f4c7c3;
  padding: var(--s3) var(--s4); border-radius: var(--radius-sm); margin-bottom: var(--s4);
}

/* Yönetim paneli önizlemesi */
.login-preview-card { border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface-2); padding: var(--s5); }
.login-preview-title { margin: 0; font-size: 22px; line-height: 1.25; font-weight: 800; }
.login-preview-description { margin: var(--s3) 0 0; color: var(--muted); line-height: 1.65; }
.login-preview-list { margin: var(--s4) 0 0 18px; padding: 0; color: var(--text-2); }
.login-preview-list li { margin-bottom: 6px; }
.login-preview-note-label { margin-top: var(--s4); font-size: 11.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--text); }
.login-preview-note { margin-top: 4px; color: var(--muted); }
.login-preview-button {
  display: inline-flex; align-items: center; gap: 8px; margin-top: var(--s4);
  padding: 9px 16px; border-radius: var(--radius-sm); background: var(--primary); color: #fff; font-weight: 600;
}

/* ---------- Altbilgi ---------- */
.app-footer { padding: var(--s5) var(--s5) var(--s6); }
.app-footer-inner {
  max-width: 1480px; margin: 0 auto; padding-top: var(--s4);
  border-top: 1px solid var(--border);
  color: var(--muted); font-size: 12.5px; line-height: 1.6; text-align: left;
}
.app-footer-inner a { color: var(--text-2); border-bottom: 1px dotted var(--border-strong); text-decoration: none; }

/* ---------- Duyarlı ---------- */
@media (max-width: 1100px) {
  .login-layout, .dashboard-grid,
  .admin-main-grid, .admin-secondary-grid, .admin-editor-grid { grid-template-columns: 1fr; }
  .admin-preview-card { position: static; }
  .admin-metric-grid { grid-template-columns: 1fr; }
}
@media (max-width: 768px) {
  .app-shell { padding: 0 var(--s3) var(--s5); }
  .app-bar { flex-wrap: wrap; }
  .app-brand-tag, .status-chip { display: none; }
  .login-shell { padding: var(--s4) var(--s3); }
  .login-story-card, .login-auth-card { padding: var(--s5); }
  .login-title { font-size: 28px; }
  .admin-editor-grid-inner { grid-template-columns: 1fr; }
  .source-card-group .shiny-options-group { grid-template-columns: 1fr; }
  .app-panel-card, .dashboard-card, .analysis-container, .tab-pane .well { padding: var(--s4); }
  .app-footer { padding: var(--s4) var(--s3) var(--s5); }
}

/* Tematik analiz çıktısı */
.analysis-result { line-height: 1.7; color: var(--text-2); font-size: 15px; }
.analysis-result h3 { margin: 0 0 var(--s4); font-size: 18px; font-weight: 800; color: var(--text); }
.analysis-result .content { max-width: 78ch; }

/* DataTables scrollX gizli başlık kopyası görünür boşluk bırakmasın */
.dataTables_scrollBody table.dataTable thead th,
.dataTables_scrollBody table.dataTable thead td {
  padding-top: 0 !important; padding-bottom: 0 !important;
  height: 0; line-height: 0; border: 0 !important; background: transparent;
}
.dataTables_scrollBody table.dataTable thead .dataTables_sizing { height: 0; overflow: hidden; }
.admin-secondary-grid { align-items: start; }

/* ---------- Tema anahtarı ---------- */
.theme-toggle {
  display: inline-flex; padding: 2px; gap: 2px;
  background: var(--surface); border: 1px solid var(--border); border-radius: 999px;
}
.theme-toggle-btn {
  width: 28px; height: 28px; display: grid; place-items: center;
  border: 0; border-radius: 50%; background: transparent; color: var(--muted);
  font-size: 12px; cursor: pointer; transition: background .15s, color .15s;
}
.theme-toggle-btn:hover { color: var(--text); }
:root[data-theme-pref="light"] .theme-toggle-btn[data-theme-choice="light"],
:root[data-theme-pref="dark"] .theme-toggle-btn[data-theme-choice="dark"],
:root[data-theme-pref="system"] .theme-toggle-btn[data-theme-choice="system"] {
  background: var(--primary-tint); color: var(--primary);
}

/* ---------- Kullanıcı detayı (modal) ---------- */
.user-detail-grid {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s4);
  margin-bottom: var(--s4);
}
.user-detail-label { color: var(--muted); font-size: 11.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.user-detail-value { margin-top: 2px; font-weight: 600; overflow-wrap: anywhere; }
.user-detail-chips { display: flex; flex-wrap: wrap; gap: var(--s2); margin-bottom: var(--s2); }
.user-detail-chip { padding: 3px 10px; border-radius: 999px; background: var(--primary-tint); color: var(--primary); font-size: 12px; font-weight: 600; }
.user-detail-heading { margin: var(--s4) 0 var(--s3); font-size: 15px; font-weight: 700; }
.modal-content { background: var(--surface); color: var(--text); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow-pop); }
.modal-header, .modal-footer { border-color: var(--border); }
.modal-title { font: 800 18px 'Manrope', sans-serif; }
.modal-header .close { color: var(--text); text-shadow: none; opacity: .6; }
@media (max-width: 768px) { .user-detail-grid { grid-template-columns: 1fr 1fr; } }
#admin_all_users tbody tr { cursor: pointer; }

/* ==========================================================================
   Koyu tema
   ========================================================================== */
:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #0c1320;
  --surface: #131c2c;
  --surface-2: #19253a;
  --border: #25324a;
  --border-strong: #34445f;
  --text: #e7ecf4;
  --text-2: #bcc7d8;
  --muted: #8a98ad;
  --primary: #5b93e8;
  --primary-hover: #7aa8ee;
  --primary-tint: #1c2d4a;
  --accent: #34c79b;
  --accent-tint: #123a31;
  --danger: #f1857c;
  --danger-tint: #3a1c1b;
  --shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
  --shadow-pop: 0 8px 24px rgba(0, 0, 0, 0.5);
}
:root[data-theme="dark"] .btn-primary,
:root[data-theme="dark"] .app-btn-primary,
:root[data-theme="dark"] .tab-pane .btn-primary,
:root[data-theme="dark"] .login-preview-button,
:root[data-theme="dark"] .app-brand-mark { background: #2f6bd0; border-color: #2f6bd0; color: #fff !important; }
:root[data-theme="dark"] .btn-primary:hover,
:root[data-theme="dark"] .btn-primary:focus,
:root[data-theme="dark"] .app-btn-primary:hover { background: #3d7ae0; border-color: #3d7ae0; }
:root[data-theme="dark"] .btn-info:hover { background: #24395c; }
:root[data-theme="dark"] .status-chip,
:root[data-theme="dark"] .admin-stat-card-mint .admin-stat-icon,
:root[data-theme="dark"] .login-feature-icon { color: #5fe0b8; }
:root[data-theme="dark"] .login-auth-card { background: #16233a; border-color: var(--border); }
:root[data-theme="dark"] .login-google-button { background: #fff !important; color: #0f2747 !important; }
:root[data-theme="dark"] .selectize-dropdown,
:root[data-theme="dark"] .selectize-input,
:root[data-theme="dark"] .selectize-input input { background: var(--surface); color: var(--text); }
:root[data-theme="dark"] .selectize-dropdown .active { background: var(--primary-tint); color: var(--text); }
:root[data-theme="dark"] .form-control::placeholder { color: var(--muted); }
:root[data-theme="dark"] .form-control[disabled], :root[data-theme="dark"] .form-control[readonly] { background: var(--surface-2); }
:root[data-theme="dark"] .irs--shiny .irs-line { background: var(--border-strong); border-color: var(--border-strong); }
:root[data-theme="dark"] .irs--shiny .irs-min, :root[data-theme="dark"] .irs--shiny .irs-max { background: var(--surface-2); color: var(--muted); }
:root[data-theme="dark"] .irs--shiny .irs-grid-text { color: var(--muted); }
:root[data-theme="dark"] .btn-file, :root[data-theme="dark"] .input-group-btn .btn { background: var(--surface-2); }
:root[data-theme="dark"] .nav-tabs > li > a { color: var(--muted); }
:root[data-theme="dark"] .close { color: var(--text); }
:root[data-theme="dark"] .shiny-notification { background: var(--surface-2); color: var(--text); border-color: var(--border-strong); opacity: 1; }
:root[data-theme="dark"] .dataTables_wrapper .dataTables_filter, :root[data-theme="dark"] .dataTables_wrapper .dataTables_length { color: var(--text-2); }
:root[data-theme="dark"] table.dataTable thead th, :root[data-theme="dark"] table.dataTable thead td { background: var(--surface-2); }
/* Kelime bulutu, ağ ve ilişkili kelimeler beyaz tuval kullanır; koyu temada okunur kalsın. */
:root[data-theme="dark"] .wordcloud2, :root[data-theme="dark"] #wordcloud_plot, :root[data-theme="dark"] #assoc_cloud, :root[data-theme="dark"] #word_network {
  background: #ffffff; border-radius: var(--radius-sm);
}

/* ==========================================================================
   Deneyim katmanı: boş durumlar, veri özeti, araç çubukları, meşgul durumu
   ========================================================================== */
.empty-state {
  display: flex; align-items: center; gap: var(--s4); flex-wrap: wrap;
  margin-bottom: var(--s4); padding: var(--s4) var(--s5);
  background: var(--primary-tint); border: 1px solid var(--border); border-radius: var(--radius);
}
.empty-state-inline { background: var(--surface-2); margin-bottom: var(--s4); }
.empty-state-icon {
  width: 40px; height: 40px; flex: none; display: grid; place-items: center;
  border-radius: 10px; background: var(--surface); color: var(--primary); font-size: 16px;
}
.empty-state-body { flex: 1 1 260px; min-width: 0; }
.empty-state-body p { margin: 2px 0 0; color: var(--muted); font-size: 13px; }
.empty-state-actions { display: flex; gap: var(--s2); flex-wrap: wrap; }

.data-summary {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s4);
  margin-bottom: var(--s4); padding: var(--s4);
  background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius);
}
.data-summary-stats { display: flex; flex-wrap: wrap; gap: var(--s5); min-width: 0; }
.data-stat-value { font: 800 20px/1.2 'Manrope', sans-serif; color: var(--text); overflow-wrap: anywhere; }
.data-stat-label { color: var(--muted); font-size: 11.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.data-summary-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s2); }
.data-summary-label { color: var(--muted); font-size: 12.5px; font-weight: 600; margin-right: 2px; }
.data-summary-sep { width: 1px; height: 22px; background: var(--border-strong); margin: 0 var(--s2); }
.btn-sm, .tab-pane .btn-sm { padding: 6px 12px; font-size: 13px; }

.viz-toolbar, .export-row { display: flex; justify-content: flex-end; gap: var(--s2); margin-bottom: var(--s2); }
.export-row { justify-content: flex-start; margin: 0 0 var(--s4); }
.share-btn { white-space: nowrap; }

/* "Veri hazır" göstergesi: analiz sekmelerinde yeşil nokta */
html[data-has-data="1"] .nav-tabs a[data-value="Kelime Bulutu"]::after,
html[data-has-data="1"] .nav-tabs a[data-value="Kelime Ağı"]::after,
html[data-has-data="1"] .nav-tabs a[data-value="İlişkili Kelimeler (Korelasyonel)"]::after,
html[data-has-data="1"] .nav-tabs a[data-value="Tematik Analiz (Yapay Zeka)"]::after {
  content: ''; display: inline-block; width: 6px; height: 6px; margin-left: 8px;
  border-radius: 50%; background: var(--accent); vertical-align: middle;
}

/* Meşgulken üstte ince ilerleme çizgisi ve işlem düğmelerini kilitle */
html.shiny-busy::before {
  content: ''; position: fixed; top: 0; left: 0; right: 0; height: 3px; z-index: 2000;
  background: linear-gradient(90deg, transparent, var(--primary), transparent);
  background-size: 40% 100%; background-repeat: no-repeat;
  animation: app-busy 1.1s ease-in-out infinite;
}
@keyframes app-busy { from { background-position: -40% 0; } to { background-position: 140% 0; } }
html.shiny-busy .btn-primary, html.shiny-busy .app-btn-primary { pointer-events: none; opacity: .65; }

/* Shiny ilerleme bildirimi */
.shiny-notification { border-radius: var(--radius-sm); border: 1px solid var(--border-strong); box-shadow: var(--shadow-pop); background: var(--surface); color: var(--text); opacity: 1; }
.shiny-notification-message, .shiny-notification-default { border-left: 3px solid var(--primary); }
.shiny-notification-warning { border-left: 3px solid #d98a00; }
.shiny-notification-error { border-left: 3px solid var(--danger); }
.shiny-progress-notification .progress { height: 6px; border-radius: 999px; background: var(--surface-2); box-shadow: none; }
.shiny-progress-notification .progress-bar { background: var(--primary); }
.shiny-progress-notification .progress-text .progress-message { font-weight: 700; }

.app-toast {
  position: fixed; left: 50%; bottom: 28px; transform: translate(-50%, 12px); z-index: 3000;
  padding: 9px 16px; border-radius: 999px; background: var(--text); color: var(--bg);
  font-size: 13px; font-weight: 600; opacity: 0; transition: opacity .2s, transform .2s; pointer-events: none;
}
.app-toast.show { opacity: 1; transform: translate(-50%, 0); }
@media (max-width: 768px) { .share-btn { display: none; } .data-summary-sep { display: none; } }
