/* ─── Reset & base ─── */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,sans-serif;background:#0B0F1A;color:#E5E7EB;min-height:100vh;overflow-x:hidden;line-height:1.6}
/* Prevent whole-page scroll behind reader on iOS when URL bar expands/collapses */
html.reader-no-scroll,body.reader-no-scroll{overflow:hidden;height:100%;touch-action:none}
.view{display:none}.view.active{display:block}
/* Reader shell: flex column; height set by CSS fallback and overridden by visualViewport JS on mobile */
#reader-view.active{display:flex;flex-direction:column;position:relative;min-height:100vh;min-height:100dvh;height:100vh;height:100dvh;max-height:100dvh;overflow:hidden}
/* When JS pins to visualViewport, inline styles set top/left/width/height */
#reader-view.active.reader-vv-layout{max-height:none}

/* ─── HOME VIEW ─── */
.home-header{background:linear-gradient(135deg,#1E293B 0%,#0F172A 100%);padding:2.5rem 1.25rem 2rem;text-align:center;border-bottom:1px solid #1E293B}
.home-logo{font-size:1.75rem;font-weight:700;color:#F8FAFC;letter-spacing:-0.02em}
.home-subtitle{color:#94A3B8;font-size:0.9375rem;margin-top:0.25rem}
.home-content{max-width:1200px;margin:0 auto;padding:1rem 0 1rem}
.home-footer{text-align:center;padding:1.5rem 1rem calc(env(safe-area-inset-bottom,0) + 2rem);font-size:0.8125rem;color:#475569;display:flex;gap:0.75rem;justify-content:center;align-items:center;flex-wrap:wrap}
.home-footer a{color:#475569;text-decoration:none;transition:color 0.2s}
.home-footer a:hover{color:#94A3B8}
.home-footer span{color:#334155}
.home-footer-copy{color:#475569}
.home-footer-watermark{display:inline-block;width:0;overflow:hidden}

/* Hide the default more-apps FAB — reader uses the 🌐 lang-fab to open the apps overlay */
.more-apps-fab{display:none !important}

/* row */
.story-row{padding:0 0 1.5rem}
.row-title{padding:0.75rem 1.25rem 0.5rem;font-size:1.125rem;font-weight:700;color:#F1F5F9;letter-spacing:-0.01em}
.row-title .row-icon{margin-right:0.35rem}
.row-scroll{display:flex;gap:0.875rem;overflow-x:auto;padding:0 1.25rem 0.5rem;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.row-scroll::-webkit-scrollbar{display:none}

/* card */
.story-card{flex:0 0 160px;scroll-snap-align:start;cursor:pointer;border-radius:12px;overflow:hidden;background:#1E293B;border:1px solid #334155;transition:transform 0.2s,box-shadow 0.2s;-webkit-tap-highlight-color:transparent;position:relative}
.story-card:hover{transform:translateY(-4px);box-shadow:0 8px 24px rgba(0,0,0,0.3)}
.story-card:active{transform:scale(0.97)}
.card-cover{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;background:#0F172A;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}
.card-body{padding:0.5rem 0.625rem 0.625rem}
.card-title{font-size:0.8125rem;font-weight:600;color:#F1F5F9;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card-level{font-size:0.6875rem;color:#94A3B8;margin-top:0.2rem}
.card-progress-track{height:3px;background:#334155;border-radius:2px;margin-top:0.375rem;overflow:hidden}
.card-progress-fill{height:100%;background:#F59E0B;border-radius:2px;transition:width 0.3s}

/* download badge */
.card-download-badge{position:absolute;bottom:52px;right:4px;background:rgba(0,0,0,0.75);color:#4ADE80;font-size:0.625rem;padding:2px 6px;border-radius:4px;pointer-events:none;line-height:1.3}

/* card context menu */
.card-context-menu{position:fixed;background:#1E293B;border:1px solid #475569;border-radius:8px;padding:4px 0;min-width:170px;box-shadow:0 8px 24px rgba(0,0,0,0.5);z-index:9999;animation:fadeIn 0.1s ease-out}
.card-context-menu button{display:block;width:100%;padding:10px 16px;background:none;border:none;color:#F1F5F9;font-size:0.875rem;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
.card-context-menu button:hover{background:#334155}
.card-context-menu button:active{background:#475569}

/* continue row highlight */
.continue-row .row-title{color:#F59E0B}

/* ─── READER VIEW ─── */
.reader-topbar{flex:0 0 auto;z-index:200;background:#0F172A;padding:0.5rem 0.75rem;padding-top:max(0.5rem,env(safe-area-inset-top));display:flex;align-items:center;gap:0.5rem;border-bottom:1px solid #1E293B;position:relative;touch-action:none;-webkit-user-select:none;user-select:none}
.back-btn{background:none;border:1px solid #334155;color:#94A3B8;padding:0.375rem 0.75rem;border-radius:8px;cursor:pointer;font-size:0.875rem;white-space:nowrap;-webkit-tap-highlight-color:transparent}
.back-btn:hover{color:#F1F5F9;border-color:#94A3B8}
.reader-title{flex:1;font-size:0.9375rem;font-weight:600;color:#F1F5F9;min-width:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.25}
.reader-sentence-count{flex-shrink:0;font-size:0.8125rem;font-weight:600;color:#94A3B8;margin-left:0.25rem;cursor:pointer;border:1px solid #334155;border-radius:6px;padding:2px 7px;-webkit-tap-highlight-color:transparent;transition:border-color 0.15s,color 0.15s}
.reader-sentence-count:active{color:#F1F5F9;border-color:#94A3B8}
/* ─── SENTENCE PICKER (bottom sheet) ─── */
.sentence-picker-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.6);z-index:450;display:flex;align-items:flex-end;justify-content:center;animation:fadeIn 0.15s ease-out}
.sentence-picker-overlay.hidden{display:none}
.sentence-picker{background:#1E293B;border:1px solid #334155;border-radius:14px 14px 0 0;max-width:480px;width:100%;max-height:72vh;display:flex;flex-direction:column;box-shadow:0 -8px 32px rgba(0,0,0,0.4);animation:slideUp 0.2s ease-out}
.sentence-picker-header{display:flex;justify-content:space-between;align-items:center;padding:0.875rem 1rem 0.5rem;border-bottom:1px solid #334155;flex-shrink:0}
.sentence-picker-title{font-size:0.875rem;font-weight:700;color:#F1F5F9;text-transform:uppercase;letter-spacing:0.05em}
.sentence-picker-close{background:none;border:none;color:#94A3B8;font-size:1.25rem;cursor:pointer;padding:0 0.25rem;line-height:1}
.sentence-picker-list{overflow-y:auto;-webkit-overflow-scrolling:touch;flex:1 1 auto}
.sentence-picker-row{display:flex;align-items:center;gap:0.75rem;padding:0.625rem 1rem;border-bottom:1px solid rgba(51,65,85,0.35);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background 0.1s}
.sentence-picker-row:last-child{border-bottom:none;padding-bottom:max(0.625rem,env(safe-area-inset-bottom))}
.sentence-picker-row:active{background:rgba(255,255,255,0.05)}
.sentence-picker-row.is-active{background:rgba(245,158,11,0.08)}
.sentence-picker-num{font-size:0.75rem;font-weight:700;color:#475569;min-width:28px;flex-shrink:0;text-align:right}
.sentence-picker-row.is-active .sentence-picker-num{color:#F59E0B}
.sentence-picker-text{font-size:0.9375rem;color:#CBD5E1;line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.reader-progress-bar{position:absolute;bottom:0;left:0;right:0;height:3px;background:#1E293B}
.reader-progress-fill{height:100%;background:#F59E0B;transition:width 0.3s;border-radius:0 2px 2px 0}

/* sentence viewport: no top gap so picture starts just after legend header */
.sentence-viewport{flex:1 1 0%;min-height:0;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-top:0;padding-bottom:0}
.sentence-track{display:flex;flex-direction:column;height:100%}

/* sentence card: one full "page" */
.s-card{flex:0 0 100%;height:100%;min-height:0;display:flex;flex-direction:column;justify-content:flex-start;padding:0 0.75rem 7.5rem;scroll-snap-align:start;scroll-snap-stop:always;transition:opacity 0.15s}
.s-card.faded,.s-card.near{opacity:0;pointer-events:none}
.s-card.active{opacity:1}
.story-end-card{
  justify-content:flex-start;
  align-items:center;
  padding-top:0.6rem;
  padding-bottom:8.9rem;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
}
.story-end-wrap{
  width:min(680px,100%);
  border:1px solid #334155;
  border-radius:16px;
  background:#111827;
  padding:1rem;
  margin-top:0.2rem;
  box-shadow:0 10px 32px rgba(0,0,0,0.35);
  display:flex;
  flex-direction:column;
  gap:0.9rem;
}
.story-end-ad-slot{
  min-height:150px;
  border:1px dashed #475569;
  border-radius:12px;
  background:linear-gradient(145deg,#0f172a,#111827);
  padding:0;
  overflow:hidden;
}
.story-end-ad-slider{
  display:flex;
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;
  min-height:150px;
  scrollbar-width:none;
}
.story-end-ad-slider::-webkit-scrollbar{display:none}
.story-end-ad-slide{
  flex:0 0 100%;
  scroll-snap-align:start;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  text-align:left;
  padding:0.9rem 1rem;
}
.story-end-ad-kicker{
  font-size:0.7rem;
  text-transform:uppercase;
  letter-spacing:0.07em;
  color:#94A3B8;
}
.story-end-ad-title{font-size:1.02rem;font-weight:800;color:#E2E8F0;margin-top:0.1rem}
.story-end-ad-body{font-size:0.84rem;color:#CBD5E1;margin-top:0.3rem;max-width:55ch;line-height:1.4}
.story-end-ad-link{
  margin-top:0.55rem;
  display:inline-flex;
  align-items:center;
  border:1px solid #f59e0b;
  border-radius:999px;
  padding:0.28rem 0.65rem;
  font-size:0.76rem;
  font-weight:700;
  color:#f59e0b;
  text-decoration:none;
}
.story-end-ad-link:hover{background:rgba(245,158,11,0.13)}
.story-end-ad-note{
  margin-top:-0.35rem;
  font-size:0.75rem;
  color:#64748B;
  font-style:italic;
  text-align:left;
}
.story-end-heading{font-size:0.95rem;font-weight:700;color:#E2E8F0;margin-bottom:0.35rem}
.reader-rate-stars{display:flex;gap:0.35rem}
.reader-rate-star{
  appearance:none;
  border:none;
  background:transparent;
  color:#475569;
  font-size:1.6rem;
  line-height:1;
  padding:0.1rem 0.2rem;
  cursor:pointer;
  transition:transform 0.15s,color 0.15s;
}
.reader-rate-star:hover{transform:translateY(-1px)}
.reader-rate-star.is-on{color:#F59E0B}
.story-end-next-block{display:flex;flex-direction:column;gap:0.5rem}
.story-end-complete{font-size:0.95rem;color:#CBD5E1}
.story-end-next-preview{
  border:1px solid #334155;
  border-radius:10px;
  background:#0f172a;
  padding:0.55rem 0.65rem;
}
.story-end-next-label{
  font-size:0.72rem;
  text-transform:uppercase;
  letter-spacing:0.05em;
  color:#94A3B8;
}
.story-end-next-title{
  margin-top:0.2rem;
  font-size:0.95rem;
  font-weight:700;
  color:#E2E8F0;
}
.story-end-next-sub{
  margin-top:0.15rem;
  font-size:0.78rem;
  color:#94A3B8;
}
.story-end-next-btn{
  align-self:flex-start;
  border:1px solid #f59e0b;
  background:#f59e0b;
  color:#0f172a;
  border-radius:10px;
  padding:0.55rem 0.9rem;
  font-weight:700;
  cursor:pointer;
}
.story-end-next-btn:hover{filter:brightness(1.06)}
@media (max-height: 740px){
  .story-end-ad-slot{min-height:132px}
  .story-end-wrap{gap:0.75rem;padding:0.9rem}
}
.s-card .de-line{font-size:1.5rem;font-weight:600;line-height:1.4;color:#F1F5F9;letter-spacing:-0.01em;overflow-wrap:break-word;word-wrap:break-word;max-width:100%}
.s-card .en-line{font-size:1.25rem;color:#CBD5E1;line-height:1.4;overflow-wrap:break-word;word-wrap:break-word;max-width:100%}

/* sentence page split: image (top 50%) + text (remaining) */
.sentence-image-wrap{flex:0 0 50%;height:50%;background:#0B0F1A;border-radius:0;overflow:hidden;display:flex;align-items:stretch;justify-content:stretch;margin-top:0}
.sentence-image-wrap .sentence-img{display:block;width:100%;height:100%;object-fit:contain;background:inherit}
.sentence-text-wrap{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0.4rem 0.75rem 0;gap:0.4rem;text-align:center}
.sentence-text-wrap .de-line,.sentence-text-wrap .en-line{margin:0;text-align:center}
.de-line--compact{font-size:clamp(1.1rem,3.8vw,1.3rem)!important}

/* token-level grammar coloring */
.tok{display:inline;transition:background 0.15s}
.tok-noun-m{color:#60A5FA}        /* der → blue */
.tok-noun-f{color:#F472B6}        /* die → pink */
.tok-noun-n{color:#34D399}        /* das → green */
.tok-noun-pl{color:#C084FC}       /* plural → purple */
.tok-verb{color:#FBBF24}          /* verbs → amber */
.tok-aux{text-decoration:underline dotted #FBBF24;text-decoration-thickness:2px;text-underline-offset:3px}            /* Perfekt auxiliary */
.tok-verb-particle{text-decoration:underline dashed #FBBF24;text-decoration-thickness:2px;text-underline-offset:3px}   /* sep. prefix */
.tok-past-participle{text-decoration:underline solid #FBBF24;text-decoration-thickness:2px;text-underline-offset:3px}  /* Perfekt participle */
.tok-bracket-open::before{content:"[";color:#FBBF24;opacity:0.6;font-size:0.75em;font-weight:700;margin-right:1px;pointer-events:none}
.tok-bracket-close::after{content:"]";color:#FBBF24;opacity:0.6;font-size:0.75em;font-weight:700;margin-left:1px;pointer-events:none}
.tok-prep{color:#FB923C}          /* prepositions → orange */
.tok-adj{color:#2DD4BF}           /* adjectives → teal */
.tok-adv{color:#A78BFA}           /* adverbs → violet */
.tok-pron{color:#A5B4FC}          /* pronouns → lavender */
.tok-conj{color:#9CA3AF}          /* conjunctions → gray */
.tok-art{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.tok-art-m{text-decoration-color:#60A5FA;color:#60A5FA}
.tok-art-f{text-decoration-color:#F472B6;color:#F472B6}
.tok-art-n{text-decoration-color:#34D399;color:#34D399}
.tok-art-pl{text-decoration-color:#C084FC;color:#C084FC}
.tok-punct{color:#64748B}

/* karaoke highlight */
.tok-speaking{background:rgba(251,191,36,0.25);border-radius:3px;padding:0 2px;margin:0 -2px;box-shadow:0 0 8px rgba(251,191,36,0.3);transition:background 0.12s,box-shadow 0.12s}

/* translation token interaction */
.trans-tok{display:inline;cursor:pointer;border-radius:2px;transition:background 0.15s}
.trans-tok:active{background:rgba(255,255,255,0.08)}
.tok-xref{background:rgba(99,182,255,0.25);border-radius:3px;padding:0 2px;margin:0 -2px;box-shadow:0 0 8px rgba(99,182,255,0.3);transition:background 0.2s,box-shadow 0.2s}

/* token interaction */
.tok:not(.tok-punct){cursor:pointer;border-radius:2px}
.tok:not(.tok-punct):active{background:rgba(255,255,255,0.08)}

/* ─── GRAMMAR LEGEND (compact so image starts soon after header) ─── */
/* Static in column flow — avoids iOS Safari sticky bugs when URL bar resizes layout viewport */
.grammar-legend{flex:0 0 auto;display:flex;gap:0.3rem;flex-wrap:wrap;justify-content:center;padding:0.25rem 0.2rem;font-size:0.75rem;background:#0F172A;border-bottom:1px solid #1E293B;touch-action:none;-webkit-user-select:none;user-select:none;position:relative;z-index:190;cursor:pointer}
.grammar-legend:active{opacity:0.7}
.grammar-legend-item{display:flex;align-items:center;gap:3px;white-space:nowrap;color:#94A3B8}
.grammar-legend-swatch{width:10px;height:10px;border-radius:2px;display:inline-block;flex-shrink:0}
/* Noun sub-swatches inline group */
.grammar-legend-noun-group{display:flex;align-items:center;gap:3px;white-space:nowrap;color:#94A3B8}
.grammar-legend-noun-dots{display:flex;gap:2px;align-items:center}
/* Legend modal (tap legend bar to open) */
.legend-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.6);z-index:450;display:flex;align-items:flex-end;justify-content:center;animation:fadeIn 0.15s ease-out}
.legend-modal-overlay.hidden{display:none}
.legend-modal{background:#1E293B;border:1px solid #334155;border-radius:14px 14px 0 0;max-width:480px;width:100%;padding:1rem 1rem 1.5rem;box-shadow:0 -8px 32px rgba(0,0,0,0.4);animation:slideUp 0.2s ease-out}
.legend-modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:0.75rem}
.legend-modal-title{font-size:0.875rem;font-weight:700;color:#F1F5F9;text-transform:uppercase;letter-spacing:0.05em}
.legend-modal-close{background:none;border:none;color:#94A3B8;font-size:1.25rem;cursor:pointer;padding:0 0.25rem;line-height:1}
.legend-modal-row{display:flex;align-items:center;gap:0.625rem;padding:0.45rem 0;border-bottom:1px solid rgba(51,65,85,0.4)}
.legend-modal-row:last-child{border-bottom:none}
.legend-modal-swatch{width:14px;height:14px;border-radius:3px;flex-shrink:0}
.legend-modal-label{font-size:0.875rem;font-weight:600;color:#CBD5E1;min-width:110px}
.legend-modal-desc{font-size:0.8125rem;color:#64748B;line-height:1.4}

/* ─── GRAMMAR POPUP (bottom sheet) ─── */
.grammar-popup-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:400;display:flex;align-items:flex-end;justify-content:center;animation:fadeIn 0.15s ease-out}
.grammar-popup{background:#1E293B;border:1px solid #334155;border-radius:14px 14px 0 0;max-width:480px;width:100%;max-height:min(55vh,calc(100dvh - env(safe-area-inset-bottom) - 80px));overflow-y:auto;-webkit-overflow-scrolling:touch;padding:1.25rem 1rem 1.5rem;box-shadow:0 -8px 32px rgba(0,0,0,0.4);animation:slideUp 0.2s ease-out}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.grammar-popup-word{font-size:1.5rem;font-weight:700;color:#F8FAFC;margin-bottom:0.75rem;display:flex;align-items:center;gap:0.5rem}
.grammar-popup-speak{background:none;border:1px solid #475569;border-radius:50%;width:2rem;height:2rem;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background 0.15s}
.grammar-popup-speak:active{background:#334155}
.grammar-popup-row{display:flex;gap:0.5rem;margin-bottom:0.5rem;font-size:0.875rem;line-height:1.4}
.grammar-popup-label{color:#64748B;min-width:70px;flex-shrink:0;font-weight:600}
.grammar-popup-value{color:#CBD5E1}
.grammar-popup-divider{border:none;border-top:1px solid #334155;margin:0.75rem 0}
.grammar-popup-card{background:#0F172A;border:1px solid #334155;border-radius:8px;padding:0.75rem;margin-bottom:0.5rem}
.grammar-popup-card-title{font-size:0.8125rem;font-weight:700;color:#F59E0B;margin-bottom:0.25rem}
.grammar-popup-card-body{font-size:0.8125rem;color:#94A3B8;line-height:1.5}
.grammar-popup-insight{background:#0F172A;border:1px solid #334155;margin-top:10px;padding:8px;border-radius:8px;color:#CBD5F5;font-size:12px;line-height:1.4}
.pattern-badge{font-size:0.6875rem;color:#94A3B8;margin-top:0.15rem;opacity:1;letter-spacing:0.01em}
.pattern-badge .p-verb{color:#D97706}
.pattern-badge .p-prep{color:#C2610C}
.pattern-badge .p-case{color:#94A3B8}

/* ─── GRAMMAR NOTES (at bottom for easy thumb reach) ─── */
.reader-grammar-notes-wrap{flex:0 0 auto;min-height:0}
.reader-grammar-notes-wrap .grammar-notes-btn{margin:0}
.reader-grammar-notes-wrap--footer{display:flex;justify-content:center;padding:0.2rem 1rem 0.3rem}
.reader-grammar-notes-wrap--footer:empty{display:none}
.reader-grammar-notes-wrap--footer .grammar-notes-btn{min-height:44px;padding:0.4rem 0.75rem;font-size:0.8125rem}
/* ─── GRAMMAR NOTES BUTTON & MODAL ─── */
.grammar-notes-btn{background:none;border:1px solid #475569;color:#94A3B8;padding:0.25rem 0.5rem;border-radius:6px;cursor:pointer;font-size:0.6875rem;margin-top:0.5rem;transition:all 0.2s;-webkit-tap-highlight-color:transparent}
.grammar-notes-btn:hover{border-color:#94A3B8;color:#F1F5F9}
.grammar-notes-modal{position:fixed;inset:0;background:rgba(0,0,0,0.8);z-index:350;display:flex;align-items:center;justify-content:center;padding:1rem;animation:fadeIn 0.15s ease-out}
.grammar-notes-modal.hidden{display:none}
.grammar-notes-content{background:#1E293B;border:1px solid #334155;border-radius:12px;max-width:520px;width:100%;max-height:80vh;overflow-y:auto;padding:1.25rem}
.grammar-notes-close{float:right;background:none;border:none;color:#94A3B8;font-size:1.25rem;cursor:pointer;padding:0 0.25rem;line-height:1}
.grammar-notes-close:hover{color:#F1F5F9}
.grammar-notes-card{background:#0F172A;border:1px solid #334155;border-radius:8px;padding:0.75rem;margin-bottom:0.75rem}
.grammar-notes-card h4{font-size:0.875rem;font-weight:700;color:#F59E0B;margin-bottom:0.25rem}
.grammar-notes-card p{font-size:0.8125rem;color:#94A3B8;line-height:1.5}
.grammar-notes-table{width:100%;border-collapse:collapse;margin-top:0.75rem;font-size:0.8125rem}
.grammar-notes-table caption{text-align:left;font-weight:700;color:#F1F5F9;margin-bottom:0.375rem;font-size:0.875rem}
.grammar-notes-table th{text-align:left;padding:0.375rem 0.5rem;border-bottom:1px solid #334155;color:#94A3B8;font-weight:600}
.grammar-notes-table td{padding:0.375rem 0.5rem;border-bottom:1px solid rgba(51,65,85,0.4);color:#CBD5E1}
.grammar-notes-table tr:last-child td{border-bottom:none}

/* ─── AUDIO CONTROLS (column: Grammar Notes above speed row) ─── */
/* Absolute to #reader-view so bottom bar stays inside visualViewport-fixed shell (fixed would use layout viewport on iOS) */
.audio-controls{position:absolute;bottom:0;left:0;right:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding:0;padding-bottom:max(0.75rem,env(safe-area-inset-bottom));background:linear-gradient(0deg,#0B0F1A 70%,transparent);z-index:200;pointer-events:auto}
.audio-controls-row{display:flex;justify-content:center;align-items:center;gap:0.3rem;flex-wrap:nowrap;padding:0.35rem 0.5rem 0;width:100%}
.speed-btn{flex:1;min-width:0;background:#1E293B;border:1px solid #334155;color:#94A3B8;padding:0.3rem 0.25rem;border-radius:999px;cursor:pointer;font-size:0.75rem;font-weight:500;transition:all 0.2s;-webkit-tap-highlight-color:transparent;min-height:36px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.speed-btn:hover{border-color:#94A3B8;color:#F1F5F9}
.speed-btn.active{background:#F59E0B;border-color:#F59E0B;color:#0F172A;font-weight:700}
.speed-btn.paused{background:#0B0F1A;border:3px solid #F59E0B;color:#F59E0B;font-weight:700}
.speed-btn.custom{background:#C026D3;border-color:#C026D3;color:#fff;font-weight:700}
.speed-btn.custom-paused{background:#0B0F1A;border:3px solid #C026D3;color:#C026D3;font-weight:700}
.settings-btn{flex:0 0 auto;background:#1E293B;border:1px solid #334155;color:#94A3B8;padding:0.3rem;border-radius:999px;cursor:pointer;font-size:1rem;min-height:36px;min-width:36px;display:flex;align-items:center;justify-content:center;transition:all 0.2s;-webkit-tap-highlight-color:transparent}
.settings-btn:hover{border-color:#94A3B8;color:#F1F5F9}
.voice-debug-btn{display:none;background:none;border:1px solid #334155;color:#64748B;padding:0.3rem;border-radius:8px;cursor:pointer;font-size:0.9rem;min-height:36px;min-width:36px;flex-shrink:0;transition:all 0.2s}
.voice-debug-btn:hover{border-color:#94A3B8;color:#F1F5F9}
/* ─── SETTINGS PANEL (bottom sheet) ─── */
.settings-panel{position:fixed;inset:0;background:rgba(0,0,0,0.55);z-index:450;display:flex;align-items:flex-end;justify-content:center;animation:fadeIn 0.15s ease-out}
.settings-panel.hidden{display:none}
.settings-panel-content{background:#1E293B;border:1px solid #334155;border-radius:14px 14px 0 0;max-width:480px;width:100%;padding:1.25rem 1rem 1.5rem;box-shadow:0 -8px 32px rgba(0,0,0,0.4);animation:slideUp 0.2s ease-out}
.settings-panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}
.settings-panel-title{font-size:1rem;font-weight:700;color:#F1F5F9}
.settings-close{background:none;border:none;color:#94A3B8;font-size:1.25rem;cursor:pointer;padding:0.25rem 0.5rem;line-height:1}
.settings-close:hover{color:#F1F5F9}
.settings-speed-row{display:flex;align-items:center;gap:1rem;margin-bottom:0.75rem}
.settings-speed-label{font-size:1.25rem;font-weight:700;color:#F1F5F9;min-width:3.5rem;text-align:center}
.settings-speed-slider{flex:1;accent-color:#C026D3;height:4px;cursor:pointer}
.settings-hint{font-size:0.8125rem;color:#64748B;margin-bottom:1rem;text-align:center}
.settings-reset-btn{display:block;width:100%;padding:0.625rem;background:none;border:1px solid #334155;color:#94A3B8;border-radius:8px;font-size:0.875rem;cursor:pointer;transition:all 0.2s}
.settings-reset-btn:hover{border-color:#94A3B8;color:#F1F5F9}
.settings-cast-tip{margin-top:1.25rem;padding:0.875rem 1rem;background:rgba(15,23,42,0.6);border:1px solid #334155;border-radius:10px}
.settings-cast-tip-title{font-size:0.875rem;font-weight:700;color:#F1F5F9;margin-bottom:0.5rem}
.settings-cast-tip-list{margin:0;padding-left:1.1rem;color:#94A3B8;font-size:0.8125rem;line-height:1.5}
.settings-cast-tip-list li{margin-bottom:0.25rem}
.settings-cast-tip-list li:last-child{margin-bottom:0}
.settings-cast-tip-list b{color:#CBD5E1}
.settings-cast-tip-list i{color:#F1F5F9;font-style:normal}

/* ─── VOICE MODAL ─── */
.voice-modal{position:fixed;inset:0;background:rgba(0,0,0,0.8);z-index:300;display:flex;align-items:center;justify-content:center;padding:1rem}
.voice-modal.hidden{display:none}
.voice-modal-content{background:#1E293B;border:1px solid #334155;border-radius:12px;max-width:600px;width:100%;max-height:80vh;overflow:hidden;display:flex;flex-direction:column}
.voice-modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid #334155}
.voice-modal-header h3{font-size:1.125rem;color:#F1F5F9;margin:0}
.voice-modal-close{background:none;border:none;color:#94A3B8;font-size:1.5rem;cursor:pointer;padding:0.25rem 0.5rem;line-height:1}
.voice-modal-close:hover{color:#F1F5F9}
.voice-modal-body{padding:1rem;overflow-y:auto;font-size:0.875rem}
.voice-item{padding:0.625rem 0.75rem;margin-bottom:0.5rem;background:#0F172A;border:1px solid #334155;border-radius:8px}
.voice-item.selected{border-color:#F59E0B;background:#1C1206}
.voice-name{color:#F1F5F9;font-weight:600;margin-bottom:0.25rem}
.voice-lang{color:#94A3B8;font-size:0.8125rem}
.voice-type{display:inline-block;background:#334155;color:#CBD5E1;padding:0.125rem 0.5rem;border-radius:4px;font-size:0.75rem;margin-left:0.5rem}
.voice-type.remote{background:#0F766E;color:#D1FAE5}

/* ─── LANGUAGE FAB ─── */
.lang-fab{position:fixed;bottom:1.5rem;right:1.5rem;width:56px;height:56px;border-radius:50%;background:linear-gradient(145deg,#FBBF24,#F59E0B);color:#0F172A;font-size:1.5rem;border:none;cursor:pointer;box-shadow:0 4px 16px rgba(245,158,11,0.45),inset 0 1px 0 rgba(255,255,255,0.38),inset 0 -2px 6px rgba(0,0,0,0.15);z-index:9990;display:flex;align-items:center;justify-content:center;transition:transform 0.2s,box-shadow 0.2s;-webkit-tap-highlight-color:transparent;animation:langFabBreathe 3.6s ease-in-out infinite}
@keyframes langFabBreathe{0%,100%{box-shadow:0 4px 16px rgba(245,158,11,0.45),inset 0 1px 0 rgba(255,255,255,0.38),inset 0 -2px 6px rgba(0,0,0,0.15)}50%{box-shadow:0 6px 22px rgba(245,158,11,0.65),inset 0 1px 0 rgba(255,255,255,0.38),inset 0 -2px 6px rgba(0,0,0,0.15)}}
.lang-fab:hover{transform:scale(1.08);animation:none}
.lang-fab:active{transform:scale(0.95)}
@media (prefers-reduced-motion:reduce){.lang-fab{animation:none}}

.lang-fab-panel{position:fixed;bottom:6rem;right:1rem;width:280px;background:#1E293B;border:1px solid #334155;border-radius:14px;padding:1rem;z-index:9991;box-shadow:0 12px 40px rgba(0,0,0,0.5);animation:slideUp 0.2s ease-out}
.lang-fab-title{font-size:0.75rem;font-weight:700;color:#94A3B8;text-transform:uppercase;letter-spacing:0.05em;margin-bottom:0.5rem;margin-top:0.75rem}
.lang-fab-title:first-child{margin-top:0}
.lang-fab-group{display:flex;flex-wrap:wrap;gap:0.375rem}
.lang-fab-opt{background:#0F172A;border:1px solid #334155;color:#94A3B8;padding:0.375rem 0.75rem;border-radius:999px;cursor:pointer;font-size:0.8125rem;transition:all 0.2s;-webkit-tap-highlight-color:transparent}
.lang-fab-opt.active{background:#F59E0B;border-color:#F59E0B;color:#0F172A;font-weight:600}
.lang-fab-opt:hover{border-color:#94A3B8;color:#F1F5F9}
.lang-fab-divider{border:none;border-top:1px solid #334155;margin:1rem 0 0}
.lang-fab-more-apps{display:flex;align-items:center;gap:0.75rem;width:100%;margin-top:0.5rem;padding:0.75rem 0.875rem;background:linear-gradient(180deg,rgba(245,158,11,0.10),rgba(245,158,11,0.03));color:#F1F5F9;border:1px solid rgba(245,158,11,0.35);border-radius:10px;cursor:pointer;transition:transform 0.15s,box-shadow 0.2s,border-color 0.2s,background 0.2s;font-family:inherit;text-align:left;-webkit-tap-highlight-color:transparent}
.lang-fab-more-apps:hover{border-color:rgba(245,158,11,0.6);background:linear-gradient(180deg,rgba(245,158,11,0.16),rgba(245,158,11,0.06));transform:translateY(-1px);box-shadow:0 6px 18px rgba(245,158,11,0.2)}
.lang-fab-more-apps:active{transform:translateY(0)}
.lang-fab-more-apps-icon{flex:0 0 auto;width:36px;height:36px;border-radius:8px;background:rgba(245,158,11,0.18);display:flex;align-items:center;justify-content:center;color:#F59E0B;font-size:1rem}
.lang-fab-more-apps-text{flex:1 1 auto;display:flex;flex-direction:column;gap:0.125rem;min-width:0}
.lang-fab-more-apps-title{font-weight:700;font-size:0.875rem;color:#F1F5F9;line-height:1.2}
.lang-fab-more-apps-sub{font-size:0.75rem;color:#94A3B8;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lang-fab-more-apps-chev{flex:0 0 auto;color:#94A3B8;font-size:1rem;transition:transform 0.2s,color 0.2s}
.lang-fab-more-apps:hover .lang-fab-more-apps-chev{transform:translateX(3px);color:#F59E0B}
.lang-fab-close{display:block;width:100%;margin-top:0.75rem;padding:0.625rem;background:transparent;color:#94A3B8;border:1px solid #334155;border-radius:8px;font-weight:600;font-size:0.875rem;cursor:pointer;transition:all 0.2s;font-family:inherit;-webkit-tap-highlight-color:transparent}
.lang-fab-close:hover{border-color:#94A3B8;color:#F1F5F9;background:rgba(255,255,255,0.03)}

/* ─── LANGUAGE PICKER (before story) ─── */
.lang-picker-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.7);z-index:500;display:flex;align-items:center;justify-content:center;padding:1rem;animation:fadeIn 0.15s ease-out}
.lang-picker-content{background:#1E293B;border:1px solid #334155;border-radius:14px;max-width:380px;width:100%;padding:1.5rem;box-shadow:0 12px 40px rgba(0,0,0,0.5);animation:slideUp 0.2s ease-out}
.lang-picker-section{margin-bottom:1rem}
.lang-picker-label{display:block;font-size:0.75rem;font-weight:700;color:#94A3B8;text-transform:uppercase;letter-spacing:0.05em;margin-bottom:0.5rem}
.lang-picker-fixed{background:#0F172A;border:1px solid #334155;color:#F1F5F9;padding:0.5rem 0.75rem;border-radius:8px;font-size:0.9375rem}
.lang-picker-options{display:flex;flex-wrap:wrap;gap:0.375rem}
.lang-picker-opt{background:#0F172A;border:1px solid #334155;color:#94A3B8;padding:0.5rem 1rem;border-radius:999px;cursor:pointer;font-size:0.875rem;transition:all 0.2s;-webkit-tap-highlight-color:transparent}
.lang-picker-opt.active{background:#F59E0B;border-color:#F59E0B;color:#0F172A;font-weight:600}
.lang-picker-opt:hover{border-color:#94A3B8;color:#F1F5F9}
.lang-picker-start{display:block;width:100%;margin-top:1.25rem;padding:0.75rem;background:#F59E0B;color:#0F172A;border:none;border-radius:10px;font-weight:700;font-size:1rem;cursor:pointer;transition:opacity 0.2s}
.lang-picker-start:hover{opacity:0.85}

/* ─── Small phones (iPhone SE, small Android): proportional shrink ─── */
/* Keeps chip/badge sizes intact; only shrinks image, DE/EN text, and spacing */
@media(max-height:750px) and (max-width:430px){
  .sentence-image-wrap{flex:0 0 43%;height:43%}
  .s-card{padding:0 0.75rem 6.25rem}
  .s-card .de-line{font-size:1.25rem}
  .s-card .en-line{font-size:1.0625rem}
  .sentence-text-wrap{gap:0.2rem;padding:0.2rem 0.75rem 0}
}

/* ─── responsive (web / desktop): prevent overlap, keep content above footer ─── */
@media(min-width:640px){
  .story-card{flex:0 0 180px}
  .s-card{padding:0 2rem 7.5rem}
  .s-card .de-line{font-size:1.625rem}
  .s-card .en-line{font-size:1.375rem}
}
@media(min-width:1024px){
  .story-card{flex:0 0 200px}
  .sentence-viewport{max-width:800px;margin:0 auto;padding-right:0.5rem;scrollbar-gutter:stable}
}

/* ─── GRAMMAR SECONDARY CHIPS (text area row, below pattern) ─── */
.sentence-chips-row{display:flex;flex-wrap:wrap;gap:0.25rem;justify-content:center;margin-top:0.1rem}
.grammar-chip{background:rgba(71,85,105,0.18);border:1px solid rgba(71,85,105,0.4);color:#64748B;font-size:0.625rem;padding:2px 8px;border-radius:999px;white-space:nowrap;letter-spacing:0.02em;text-transform:lowercase;line-height:1.6}

/* ─── ACTIVE ROW HIGHLIGHT IN GRAMMAR NOTES TABLES ─── */
/* Highlights the conjugation row that matches the verb form used in the sentence */
.grammar-table-active td{background:rgba(245,158,11,0.1);color:#F59E0B;font-weight:600}
.grammar-table-active td:first-child{border-left:2px solid #F59E0B;padding-left:calc(0.375rem - 2px)}

/* ─── SKELETON LOADING (home screen) ─── */
@keyframes skeleton-shimmer{from{background-position:200% center}to{background-position:-200% center}}
.story-card-skeleton{pointer-events:none;background:linear-gradient(90deg,#1E293B 25%,#2D3F52 50%,#1E293B 75%);background-size:200% auto;animation:skeleton-shimmer 1.6s linear infinite;border-color:transparent}
.story-card-skeleton::after{content:'';display:block;aspect-ratio:3/4}
.skeleton-row .row-title{width:120px;height:1.125rem;border-radius:4px;background:linear-gradient(90deg,#1E293B 25%,#2D3F52 50%,#1E293B 75%);background-size:200% auto;animation:skeleton-shimmer 1.6s linear infinite}

/* ─── AD BANNER SLOT ─── */
/* Fixed 50px banner at very bottom, below audio controls */
.ad-banner-slot{position:fixed;bottom:0;left:0;right:0;height:50px;background:#0B0F1A;border-top:1px solid #1E293B;z-index:180;display:flex;align-items:center;justify-content:center;overflow:hidden}
.ad-banner-slot.hidden{display:none}

/* When ad banner is active: shift FAB, audio controls, and card padding up by 50px */
body.has-ad-banner .lang-fab{bottom:calc(1.5rem + 50px)}
body.has-ad-banner .audio-controls{bottom:50px}
body.has-ad-banner .s-card{padding-bottom:calc(7.5rem + 50px)}
@media(max-height:750px) and (max-width:430px){body.has-ad-banner .s-card{padding-bottom:calc(6.25rem + 50px)}}
@media(min-width:640px){body.has-ad-banner .s-card{padding-bottom:calc(7.5rem + 50px)}}

/* ─── MORE-APPS OVERLAY (dark override, reader-scoped) ───
   Shared overlay ships with light-theme CSS (inline in more-apps-overlay.php).
   These rules re-theme it for the reader only via `body.reader-app` scope.
   Higher specificity wins over the inline <style>, no !important needed. */
body.reader-app .more-apps-backdrop{background:rgba(0,0,0,0.65)}
body.reader-app .more-apps-sheet{background:#1E293B;border:1px solid #334155;box-shadow:0 16px 48px rgba(0,0,0,0.55)}
body.reader-app .more-apps-sheet-header{border-bottom:1px solid #334155}
body.reader-app .more-apps-sheet-title{color:#F1F5F9}
body.reader-app .more-apps-close{color:#94A3B8}
body.reader-app .more-apps-close:hover{background:rgba(255,255,255,0.06);color:#F1F5F9}
body.reader-app .more-apps-home-link{color:#94A3B8}
body.reader-app .more-apps-home-link:hover{color:#F59E0B;text-decoration:none}
body.reader-app .more-apps-remember-label{color:#94A3B8}
body.reader-app .more-apps-remember-label input{accent-color:#F59E0B}
body.reader-app .more-apps-link{background:#0F172A;border:1px solid #334155;color:#E5E7EB}
body.reader-app .more-apps-link:hover{background:#162033;border-color:rgba(245,158,11,0.5);color:#F1F5F9;transform:translateY(-1px);box-shadow:0 6px 18px rgba(245,158,11,0.12)}
body.reader-app .more-apps-link.current{background:#0F172A;color:#F1F5F9;border-left:3px solid #F59E0B;padding-left:calc(1rem - 3px)}
body.reader-app .more-apps-link i{color:#94A3B8}
body.reader-app .more-apps-link:hover i,
body.reader-app .more-apps-link.current i{color:#F59E0B}
