/* ============================================================
   YKS Hızlı Okuma — Exercise Module Styles
   ============================================================ */


/* ═══════════════════════════════════════════════════════════════
   SHARED EXERCISE LAYOUT
   ═══════════════════════════════════════════════════════════════ */

.exercise-page {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  min-height: calc(100vh - 120px);
  width: 100%;
}

.exercise-page > .glass-card {
  flex: 1;
  display: flex;
  flex-direction: column;
  width: 100%;
  min-height: calc(100vh - 220px);
}

.exercise-page > .glass-card > .tach-display {
  flex: 1;
  min-height: 420px;
  width: 100%;
  max-width: 100%;
}

/* Header */
.exercise-header {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.exercise-header h2 {
  font-size: var(--text-2xl);
  font-weight: 700;
  color: var(--text-primary);
}

.exercise-header p {
  font-size: var(--text-sm);
  color: var(--text-secondary);
  max-width: 600px;
  line-height: 1.6;
}

.exercise-header .btn-ghost {
  align-self: flex-start;
  margin-bottom: var(--space-2);
}

/* Controls Panel */
.exercise-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-6);
  background: var(--glass-bg);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-xl);
}

.exercise-controls label {
  font-size: var(--text-xs);
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.exercise-controls .select,
.exercise-controls .slider {
  min-width: 140px;
}

/* Exercise Area */
.exercise-area {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 400px;
  padding: var(--space-8);
  background: var(--glass-bg);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-2xl);
  position: relative;
  overflow: hidden;
}

.exercise-canvas-container {
  width: 100%;
  height: 100%;
  min-height: 400px;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}

.exercise-canvas-container canvas {
  border-radius: var(--radius-lg);
}

/* Results */
.exercise-result {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-5);
  padding: var(--space-8);
  background: var(--glass-bg);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-2xl);
  text-align: center;
}

.exercise-score {
  font-family: var(--font-mono);
  font-size: var(--text-5xl);
  font-weight: 800;
  letter-spacing: -0.03em;
  background: linear-gradient(135deg, var(--color-primary), var(--color-accent));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  line-height: 1;
}


/* ═══════════════════════════════════════════════════════════════
   SACCADIC EXERCISES
   ═══════════════════════════════════════════════════════════════ */

.saccadic-dot {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--color-primary);
  box-shadow: 0 0 16px hsla(210, 100%, 60%, 0.5), 0 0 40px hsla(210, 100%, 60%, 0.2);
  position: absolute;
  transition: all 200ms ease;
  z-index: 5;
}

.saccadic-dot.active {
  animation: dotPulse 600ms ease-in-out;
}

.saccadic-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: var(--space-6);
  padding: var(--space-6);
  width: 100%;
  max-width: 100%;
}

.saccadic-center-word {
  font-size: var(--text-3xl);
  font-weight: 700;
  color: var(--text-primary);
  text-align: center;
  padding: var(--space-4);
  position: relative;
}

.saccadic-center-word::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 40%;
  height: 3px;
  background: linear-gradient(90deg, transparent, var(--color-primary), transparent);
  border-radius: var(--radius-full);
}

.saccadic-peripheral {
  font-size: var(--text-base);
  color: var(--text-muted);
  text-align: center;
  padding: var(--space-3);
  opacity: 0.6;
  transition: opacity var(--transition-fast), color var(--transition-fast);
}

.saccadic-peripheral.highlight {
  opacity: 1;
  color: var(--text-secondary);
}


/* ═══════════════════════════════════════════════════════════════
   TACHISTOSCOPE
   ═══════════════════════════════════════════════════════════════ */

.tach-display {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 200px;
  width: 100%;
  max-width: 100%;
  position: relative;
}

.tach-word {
  font-family: var(--font-reading);
  font-size: var(--text-4xl);
  font-weight: 700;
  color: var(--text-primary);
  text-align: center;
  letter-spacing: 0.02em;
  animation: flashWord 400ms ease both;
  user-select: none;
}

.tach-input {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-4);
  width: 100%;
  max-width: 400px;
  margin: 0 auto;
}

.tach-input .input {
  text-align: center;
  font-size: var(--text-lg);
  font-weight: 500;
  letter-spacing: 0.04em;
}

.tach-feedback {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-6);
  border-radius: var(--radius-lg);
  font-size: var(--text-sm);
  font-weight: 600;
  transition: all var(--transition-base);
}

.tach-feedback.correct {
  background: hsla(145, 70%, 55%, 0.12);
  color: var(--color-success);
  border: 1px solid hsla(145, 70%, 55%, 0.2);
}

.tach-feedback.incorrect {
  background: hsla(0, 80%, 60%, 0.12);
  color: var(--color-danger);
  border: 1px solid hsla(0, 80%, 60%, 0.2);
}


/* ═══════════════════════════════════════════════════════════════
   BLOCK READING
   ═══════════════════════════════════════════════════════════════ */

.block-text {
  font-family: var(--font-reading);
  font-size: var(--text-lg);
  line-height: 2;
  color: var(--text-secondary);
  max-width: 700px;
  margin: 0 auto;
  padding: var(--space-6);
  user-select: none;
  position: relative;
}

.block-group {
  display: inline;
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
  transition:
    background var(--transition-fast),
    color var(--transition-fast),
    box-shadow var(--transition-fast);
}

.block-group.active {
  background: hsla(210, 100%, 60%, 0.18);
  color: var(--text-primary);
  box-shadow: 0 0 14px hsla(210, 100%, 60%, 0.2);
  animation: sweepHighlight 300ms ease both;
  background-image: linear-gradient(
    90deg,
    hsla(210, 100%, 60%, 0.18),
    hsla(210, 100%, 60%, 0.18)
  );
  background-repeat: no-repeat;
}

.block-group.read {
  color: var(--text-muted);
  opacity: 0.45;
}


/* ═══════════════════════════════════════════════════════════════
   SUBVOCALIZATION
   ═══════════════════════════════════════════════════════════════ */

.shadow-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(
    180deg,
    hsla(225, 30%, 8%, 0.92) 0%,
    hsla(225, 30%, 8%, 0.6) 60%,
    transparent 100%
  );
  pointer-events: none;
  z-index: 10;
  transform-origin: top center;
}

.counter-display {
  position: fixed;
  bottom: var(--space-8);
  left: 50%;
  transform: translateX(-50%);
  z-index: 100;
  font-family: var(--font-mono);
  font-size: var(--text-5xl);
  font-weight: 800;
  color: var(--color-primary);
  text-shadow: 0 0 20px hsla(210, 100%, 60%, 0.5);
  pointer-events: none;
  user-select: none;
}

.metronome-visual {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  padding: var(--space-4);
}

.metronome-visual .beat {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: hsla(225, 25%, 25%, 0.5);
  border: 1px solid var(--glass-border);
  transition:
    background var(--transition-fast),
    box-shadow var(--transition-fast),
    transform var(--transition-fast);
}

.metronome-visual .beat.active {
  background: var(--color-primary);
  box-shadow: 0 0 12px hsla(210, 100%, 60%, 0.5);
  transform: scale(1.3);
}


/* ═══════════════════════════════════════════════════════════════
   STRATEGY — İSOAT
   ═══════════════════════════════════════════════════════════════ */

.strategy-step {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-5);
  border-radius: var(--radius-lg);
  font-size: var(--text-sm);
  font-weight: 500;
  color: var(--text-muted);
  background: hsla(225, 25%, 14%, 0.3);
  border: 1px solid transparent;
  transition:
    color var(--transition-base),
    background var(--transition-base),
    border-color var(--transition-base),
    box-shadow var(--transition-base);
  position: relative;
}

.strategy-step .step-number {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--text-xs);
  font-weight: 700;
  background: hsla(225, 20%, 25%, 0.6);
  color: var(--text-muted);
  flex-shrink: 0;
  transition:
    background var(--transition-base),
    color var(--transition-base);
}

.strategy-step.active {
  color: var(--text-primary);
  background: hsla(210, 100%, 60%, 0.08);
  border-color: hsla(210, 100%, 60%, 0.2);
  box-shadow: 0 0 12px hsla(210, 100%, 60%, 0.1);
}

.strategy-step.active .step-number {
  background: var(--color-primary);
  color: #fff;
}

.strategy-step.complete {
  color: var(--text-secondary);
  background: hsla(145, 70%, 55%, 0.06);
  border-color: hsla(145, 70%, 55%, 0.15);
}

.strategy-step.complete .step-number {
  background: var(--color-success);
  color: #fff;
}

.strategy-step.complete .step-number::after {
  content: '✓';
  font-size: var(--text-xs);
}

/* Strategy Paragraph */
.strategy-paragraph {
  font-family: var(--font-reading);
  font-size: var(--text-base);
  line-height: 1.9;
  color: var(--text-secondary);
  padding: var(--space-6);
  background: hsla(225, 25%, 10%, 0.4);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-xl);
  max-height: 400px;
  overflow-y: auto;
}

/* Strategy Question */
.strategy-question {
  padding: var(--space-5);
  background: hsla(225, 25%, 14%, 0.3);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-xl);
}

.strategy-question h4 {
  font-size: var(--text-base);
  font-weight: 600;
  color: var(--text-primary);
  margin-bottom: var(--space-4);
}

.question-option {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-lg);
  margin-bottom: var(--space-2);
  cursor: pointer;
  font-size: var(--text-sm);
  color: var(--text-secondary);
  transition:
    background var(--transition-fast),
    border-color var(--transition-fast),
    color var(--transition-fast),
    box-shadow var(--transition-fast);
  user-select: none;
}

/* Radio indicator */
.question-option::before {
  content: '';
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 2px solid var(--glass-border-hover);
  flex-shrink: 0;
  transition:
    background var(--transition-fast),
    border-color var(--transition-fast),
    box-shadow var(--transition-fast);
}

.question-option:hover {
  background: hsla(220, 20%, 90%, 0.04);
  border-color: var(--glass-border-hover);
  color: var(--text-primary);
}

.question-option.selected {
  background: hsla(210, 100%, 60%, 0.08);
  border-color: hsla(210, 100%, 60%, 0.25);
  color: var(--text-primary);
}

.question-option.selected::before {
  background: var(--color-primary);
  border-color: var(--color-primary);
  box-shadow: inset 0 0 0 3px var(--bg-primary);
}

.question-option.correct {
  background: hsla(145, 70%, 55%, 0.1);
  border-color: hsla(145, 70%, 55%, 0.35);
  color: var(--color-success-light);
}

.question-option.correct::before {
  background: var(--color-success);
  border-color: var(--color-success);
  box-shadow: inset 0 0 0 3px var(--bg-primary);
}

.question-option.incorrect {
  background: hsla(0, 80%, 60%, 0.1);
  border-color: hsla(0, 80%, 60%, 0.3);
  color: var(--color-danger-light);
}

.question-option.incorrect::before {
  background: var(--color-danger);
  border-color: var(--color-danger);
  box-shadow: inset 0 0 0 3px var(--bg-primary);
}


/* ═══════════════════════════════════════════════════════════════
   DKS TRACKER
   ═══════════════════════════════════════════════════════════════ */

.dks-reading-area {
  font-family: var(--font-reading);
  font-size: var(--text-base);
  line-height: 1.9;
  color: var(--text-secondary);
  padding: var(--space-6);
  background: hsla(225, 25%, 10%, 0.4);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-xl);
  flex: 1;
  min-height: 350px;
  max-height: 55vh;
  overflow-y: auto;
  position: relative;
}

.dks-tab-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  width: 100%;
}

#dks-test-area {
  flex: 1;
  display: flex;
  flex-direction: column;
  width: 100%;
}

#dks-test-area > .glass-card {
  flex: 1;
  display: flex;
  flex-direction: column;
}

.dks-timer {
  font-family: var(--font-mono);
  font-size: var(--text-5xl);
  font-weight: 800;
  color: var(--color-primary);
  text-align: center;
  letter-spacing: 0.06em;
  padding: var(--space-4);
  text-shadow: 0 0 20px hsla(210, 100%, 60%, 0.3);
}

.dks-timer.warning {
  color: var(--color-warning);
  text-shadow: 0 0 20px hsla(35, 100%, 60%, 0.3);
}

.dks-timer.danger {
  color: var(--color-danger);
  text-shadow: 0 0 20px hsla(0, 80%, 60%, 0.3);
  animation: pulse 0.6s ease-in-out infinite;
}

.dks-result-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-8);
  background: var(--glass-bg);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-2xl);
  text-align: center;
}

.dks-result-card .dks-value {
  font-family: var(--font-mono);
  font-size: var(--text-5xl);
  font-weight: 800;
  background: linear-gradient(135deg, var(--color-primary), var(--color-accent));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  line-height: 1;
}

.dks-result-card .dks-unit {
  font-size: var(--text-sm);
  color: var(--text-muted);
  font-weight: 500;
}

.dks-formula {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  color: var(--text-muted);
  background: hsla(225, 25%, 12%, 0.6);
  padding: var(--space-3) var(--space-5);
  border-radius: var(--radius-lg);
  border: 1px solid var(--glass-border);
  text-align: center;
  letter-spacing: 0.02em;
}

.dks-formula strong {
  color: var(--color-primary);
  font-weight: 700;
}

.dks-history-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.dks-history-list .history-entry {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-3) var(--space-4);
  background: hsla(225, 25%, 14%, 0.3);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-lg);
  font-size: var(--text-sm);
  transition:
    background var(--transition-fast),
    border-color var(--transition-fast);
}

.dks-history-list .history-entry:hover {
  background: hsla(225, 25%, 18%, 0.4);
  border-color: var(--glass-border-hover);
}

.dks-history-list .history-date {
  color: var(--text-muted);
  font-size: var(--text-xs);
}

.dks-history-list .history-value {
  font-family: var(--font-mono);
  font-weight: 700;
  color: var(--color-primary-light);
}


/* ═══════════════════════════════════════════════════════════════
   RESPONSIVE
   ═══════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {
  .exercise-area {
    min-height: 300px;
    padding: var(--space-4);
  }

  .exercise-canvas-container {
    min-height: 300px;
  }

  .exercise-controls {
    flex-direction: column;
    align-items: stretch;
  }

  .exercise-controls label {
    width: 100%;
  }

  .exercise-controls .select,
  .exercise-controls .slider {
    min-width: 100%;
  }

  .saccadic-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-4);
  }

  .saccadic-center-word {
    font-size: var(--text-2xl);
  }

  .tach-word {
    font-size: var(--text-3xl);
  }

  .block-text {
    font-size: var(--text-base);
    padding: var(--space-4);
  }

  .dks-timer {
    font-size: var(--text-4xl);
  }

  .exercise-score {
    font-size: var(--text-4xl);
  }

  .strategy-paragraph {
    max-height: 300px;
    padding: var(--space-4);
  }
}

@media (max-width: 480px) {
  .exercise-area {
    min-height: 250px;
    padding: var(--space-3);
    border-radius: var(--radius-xl);
  }

  .saccadic-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-3);
  }

  .exercise-header h2 {
    font-size: var(--text-xl);
  }

  .dks-result-card .dks-value {
    font-size: var(--text-4xl);
  }
}


/* ═══════════════════════════════════════════════════════════════
   MOBILDE EGZERSIZ SAHNELERI
   Egzersiz panelleri mobilde 375px ekranin ancak %66'sini kullaniyor,
   ustelik 24px ic dolgu okuma genisligini ~279px'e dusuruyordu; blok
   okuma / RSVP gibi metin egzersizleri icin dar ve kucuk kaliyordu.
   Mobilde dolgu kisaltilir, sahne ekrani dolduracak sekilde buyutulur
   ve dokunma hedefleri buyutulur.
   ═══════════════════════════════════════════════════════════════ */

@media (max-width: 767px) {
  #br-reading-panel,
  #cf-reading-panel,
  #cm-reading-panel,
  #ds-reading-panel,
  #ls-reading-panel,
  #rp-reading-panel,
  #rsvp-reading-panel,
  #sb-reading-panel {
    /* Ekrani ZORLA doldurmak panelin yarisini bos birakiyordu (icerigi kisa
       olan egzersizlerde 692px panelde 353px bosluk). Olculu bir alt sinir
       verilir; metin yogun egzersizlerde panel zaten icerigiyle buyur. */
    min-height: 380px !important;
    padding: var(--space-3) !important;
    margin-top: var(--space-2) !important;
    /* space-between icerigi uclara itip ortada bosluk biraktigi icin
       icerik yukaridan asagi akar. */
    justify-content: flex-start !important;
    gap: var(--space-3);
    /* .exercise-page bir flex kapsayici (align-items: stretch) oldugu icin
       panel ebeveyn yuksekligine yayilip icerigin iki katina cikiyordu;
       kendi icerigi kadar yer kaplar. */
    align-self: flex-start;
    flex: 0 0 auto;
  }

  /* Okuma metni mobilde daha buyuk ve rahat satir araligiyla */
  #br-reading-area,
  #ds-reading-area,
  #ls-reading-area,
  #rp-reading-area,
  #sb-reading-area {
    font-size: 1.15rem !important;
    line-height: 1.85 !important;
  }

  /* Sahne ustundeki kontrol seridi: dokunma hedefleri buyutulur */
  #br-reading-panel .btn-xs,
  #ds-reading-panel .btn-xs,
  #ls-reading-panel .btn-xs,
  #rp-reading-panel .btn-xs,
  #sb-reading-panel .btn-xs,
  #rsvp-reading-panel .btn-xs {
    min-width: 40px !important;
    min-height: 36px !important;
    font-size: 15px !important;
  }

  /* Canli hiz kaydiricisi parmakla tutulabilecek genislikte olsun */
  #br-live-speed-slider,
  #rsvp-reading-panel input[type="range"],
  #ls-reading-panel input[type="range"] {
    flex: 1 1 auto;
    min-width: 90px;
    height: 8px !important;
  }
}


/* ═══════════════════════════════════════════════════════════════
   EGZERSIZ CALISIRKEN SADE EKRAN
   Egzersiz basladiktan sonra bile giris karti (baslik + aciklama) ve
   "Egzersizi Baslat" dugmesi ekranda kaliyor, sahneyi asagi itiyordu;
   kullanici her seferinde kaydirmak zorundaydi. Sahne gorunur oldugunda
   app.js sayfaya .exercise-running sinifini ekler ve bunlar gizlenir.
   ═══════════════════════════════════════════════════════════════ */

.exercise-running .sp-hero,
.exercise-running .sp-start-dock,
.exercise-running .exercise-header,
.exercise-running #yks-speed-advice-box {
  display: none !important;
}

/* Ayar paneli de egzersiz sirasinda gerekmez */
.exercise-running .sp-section,
.exercise-running .settings-page > .sp-section {
  display: none !important;
}

/* Sahne, sadelesen ekranda daha fazla yer kullanir */
.exercise-running #br-reading-panel,
.exercise-running #cf-reading-panel,
.exercise-running #cm-reading-panel,
.exercise-running #ds-reading-panel,
.exercise-running #ls-reading-panel,
.exercise-running #rp-reading-panel,
.exercise-running #rsvp-reading-panel,
.exercise-running #sb-reading-panel {
  margin-top: 0 !important;
}

@media (max-width: 767px) {
  .exercise-running #br-reading-panel,
  .exercise-running #cf-reading-panel,
  .exercise-running #cm-reading-panel,
  .exercise-running #ds-reading-panel,
  .exercise-running #ls-reading-panel,
  .exercise-running #rp-reading-panel,
  .exercise-running #rsvp-reading-panel,
  .exercise-running #sb-reading-panel {
    /* Egzersiz basladiginda giris karti, ayarlar ve baslat dugmesi zaten
       gizleniyor; panel bosalan alanin tamamini kullanir. 380px lik sinir
       paneli kucuk birakiyor, altinda genis bir bos serit kaliyordu.
       Cikarilan yukseklik: ust baslik 52 + alt gezinme 62 + sayfa ve
       gezinme boslugu ~56. */
    /* min-height yalnizca ALT sinirdi; icerik uzun olan egzersizlerde
       (Anlamsiz Ayiklama'da 2710px) panel ekrandan tasip alt gezinme
       cubugunun ARKASINA giriyordu. Artik yukseklik SABIT: panel her
       zaman ust baslik ile alt cubuk arasini tam doldurur, icerik
       kendi icinde kayar. */
    /* Olculen cerceve: panel ust kenari 124px'te basliyor, alt gezinme
       cubugu 734px'te; 210 tam olarak panelin cubugun 8px ustunde
       bitmesini saglar. Daha kucuk bir deger paneli cubugun arkasina
       sokuyor. Sayfadaki olu kaydirma ise .exercise-page yuksekligi
       sabitlenerek giderildi. */
    height: calc(100vh - 210px) !important;
    height: calc(100dvh - 210px) !important;
    min-height: calc(100dvh - 210px) !important;
    max-height: calc(100dvh - 210px) !important;
    overflow: hidden !important;
    align-self: stretch !important;
    flex: 1 1 auto !important;
    margin-top: var(--space-1) !important;
  }

  /* Panel icindeki okuma alani, tasan metni KENDI icinde kaydirir;
     App aktif satiri otomatik olarak ortada tutar. */
  .exercise-running #br-reading-panel > *,
  .exercise-running #cf-reading-panel > *,
  .exercise-running #cm-reading-panel > *,
  .exercise-running #ds-reading-panel > *,
  .exercise-running #ls-reading-panel > *,
  .exercise-running #rsvp-reading-panel > *,
  .exercise-running #sb-reading-panel > * {
    min-height: 0;
  }
  .exercise-running #br-reading-panel > *:last-child,
  .exercise-running #cf-reading-panel > *:last-child,
  .exercise-running #cm-reading-panel > *:last-child,
  .exercise-running #ds-reading-panel > *:last-child,
  .exercise-running #ls-reading-panel > *:last-child,
  .exercise-running #rsvp-reading-panel > *:last-child,
  .exercise-running #sb-reading-panel > *:last-child {
    flex: 1 1 auto;
    overflow-y: auto;
    overscroll-behavior: contain;
  }
}

/* Egzersiz sirasinda sayfa kabi, gizlenen ogelerden arta kalan
   yuksekligi koruyup sayfayi gereksiz yere kaydirilabilir birakiyordu. */
.exercise-running .exercise-page {
  min-height: 0 !important;
  height: auto !important;
  gap: 0 !important;
}

/* Egzersiz sirasinda gereksiz ust ogeler: "Ne Ise Yarar?" yardim dugmesi
   egzersiz boyunca ekranin ustunde duruyor ve sahneyi asagi itiyordu. */
.exercise-running .help-trigger-btn {
  display: none !important;
}


/* Soru ve sonuc panelleri de .exercise-page (flex, stretch) icinde
   ebeveyn yuksekligine yayilip icerigin altinda genis bosluk birakiyordu. */
@media (max-width: 767px) {
  #ls-questions-panel, #rp-questions-panel, #rsvp-questions-panel, #sb-questions-panel,
  #cf-result-panel, #cm-result-panel, #ds-result-panel, #ls-result-panel,
  #rp-result-panel, #rsvp-result-panel, #sb-result-panel {
    align-self: flex-start;
    flex: 0 0 auto;
    padding: var(--space-4) !important;
  }
}

/* ── Okuma hizi tavsiye kutusu ────────────────────────────────
   Egzersiz sayfasina sonradan enjekte edilir. ".exercise-page >
   .glass-card" kurali (flex:1 + min-height) buna uygulanmamali;
   yoksa iki satirlik metin ekran boyu bos bir kutuya donusuyor. */
.exercise-page > #yks-speed-advice-box,
.yks-advice-box {
  flex: 0 0 auto !important;
  min-height: 0 !important;
  align-self: stretch;
}

/* ── Ters Piramit okuma alani ─────────────────────────────────
   Piramit 20+ satir oldugu icin panel 4000px'e uzuyor ve sayfa
   dev bir seride donusuyordu. Okuma alani panel icinde sinirli
   kalir, satirlar KENDI icinde kayar (App aktif satiri ortalar). */
#rp-pyramid-viewport {
  overflow-y: auto;
  overscroll-behavior: contain;
  width: 100%;
  /* Ortalama, icerik tastiginda ust/alt kirpar */
  justify-content: flex-start !important;
  padding-block: 40%;
}
/* Panelin yuksekligi SABITLENIR; yoksa min-height bir alt sinir oldugu
   icin 21 satirlik piramit paneli 4600px'e uzatiyor, sayfa dev bir
   serite donusuyordu. Satirlar panel icinde kayar. */
.exercise-running #rp-reading-panel {
  height: calc(100vh - 210px);
  height: calc(100dvh - 210px);
  max-height: calc(100dvh - 210px);
  overflow: hidden;
}
#rp-pyramid-viewport {
  flex: 1 1 auto;
  min-height: 0 !important;
}

/* ═══════════════════════════════════════════════════════════════
   MOBIL PERFORMANS
   backdrop-filter: blur() Android WebView'da her ogeyi ayri bir
   katmana alip arka plani her karede yeniden bulaniklastirir; en
   pahali CSS ozelligidir.

   NOT: Onceki surumde .exercise-controls / .exercise-area /
   .dks-result-card gibi seciciler hedeflenmisti; olcumde bu
   siniflarin sayfada HIC bulunmadigi gorulda (0 eslesme), yani
   kural bos calisiyordu. Bulanikligi asil tuketenler .glass-card
   ve .dash-*-card ailesiydi: tek ekranda 21 canli blur katmani.

   Bulanik katman ekrandaki her kart icin ayri ayri hesaplandigindan
   tek tek secici yazmak yerine --glass-blur degiskeni kapatilir ve
   bir yakalayici kural ile kalan tum blur'lar susturulur. Blur
   kalkinca yari saydam yuzeyler okunmaz hale geldigi icin cam
   arka planlari ayni tonun OPAK karsiligiyla degistirilir; gorunum
   neredeyse ayni kalir.
   ═══════════════════════════════════════════════════════════════ */
@media (max-width: 767px) {
  :root {
    --glass-blur: none;
    /* Ayni renk, saydamlik yerine opak; blur olmadan da okunur */
    --glass-bg: hsl(225, 25%, 12%);
    --glass-bg-strong: hsl(225, 25%, 9%);
    --bg-card-hover: hsl(225, 25%, 16%);
  }

  /* Degisken kullanmayan, dogrudan blur yazan kurallar icin yakalayici */
  *,
  *::before,
  *::after {
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }

  /* will-change kalici katman ayirir; mobilde bellek ve GPU maliyeti
     kazancindan buyuk. */
  .exercise-area,
  .exercise-controls,
  .mobile-nav-link,
  .nav-item {
    will-change: auto !important;
  }
}
