/* ─── 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}
.view{display:none}.view.active{display:block}
#reader-view.active{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden}

/* ─── 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 4rem}

/* 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}
.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:100;background:#0F172A;padding:0.75rem 1rem;padding-top:max(0.75rem,env(safe-area-inset-top));display:flex;align-items:center;gap:0.75rem;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;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.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 */
.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}
.sentence-track{display:flex;flex-direction:column}

/* sentence card */
.s-card{min-height:60vh;display:flex;flex-direction:column;justify-content:center;padding:2rem 1.25rem;scroll-snap-align:center;scroll-snap-stop:always;transition:opacity 0.3s}
.s-card.faded{opacity:0.25}
.s-card.near{opacity:0.5}
.s-card.active{opacity:1}
.s-card .de-line{font-size:1.5rem;font-weight:600;line-height:1.5;color:#F1F5F9;margin-bottom:0.75rem;letter-spacing:-0.01em;overflow-wrap:break-word;word-wrap:break-word;max-width:100%}
.s-card .en-line{font-size:1.35rem;color:#94A3B8;line-height:1.5}
.s-card .sentence-num{font-size:0.75rem;color:#475569;margin-bottom:0.5rem;font-weight:500}

/* 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-prep{color:#FB923C}          /* prepositions → orange */
.tok-adj{color:#2DD4BF}           /* adjectives → teal */
.tok-adv{color:#A78BFA}           /* adverbs → violet */
.tok-pron{color:#67E8F9}          /* pronouns → cyan */
.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 ─── */
.grammar-legend{flex:0 0 auto;display:flex;gap:0.5rem;flex-wrap:wrap;justify-content:center;padding:0.35rem 0.75rem;font-size:0.6875rem;background:#0F172A;border-bottom:1px solid #1E293B;touch-action:none;-webkit-user-select:none;user-select:none}
.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}

/* ─── 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:55vh;overflow-y:auto;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 NOTES BUTTON & MODAL ─── */
.grammar-notes-btn{background:none;border:1px solid #334155;color:#64748B;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 ─── */
.audio-controls{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:center;align-items:center;gap:0.5rem;flex-wrap:wrap;padding:0.75rem 0.75rem;background:linear-gradient(0deg,#0B0F1A 60%,transparent);z-index:200}
.speed-btn{background:#1E293B;border:1px solid #334155;color:#94A3B8;padding:0.5rem 0.9rem;border-radius:999px;cursor:pointer;font-size:0.8rem;font-weight:500;transition:all 0.2s;-webkit-tap-highlight-color:transparent;min-height:40px}
.speed-btn:hover{border-color:#94A3B8;color:#F1F5F9}
.speed-btn.active{background:#F59E0B;border-color:#F59E0B;color:#0F172A;font-weight:700}
.voice-debug-btn{background:none;border:1px solid #334155;color:#64748B;padding:0.5rem;border-radius:8px;cursor:pointer;font-size:1rem;min-height:44px;min-width:44px;margin-left:0.5rem;transition:all 0.2s}
.voice-debug-btn:hover{border-color:#94A3B8;color:#F1F5F9}

/* ─── 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:#F59E0B;color:#0F172A;font-size:1.5rem;border:none;cursor:pointer;box-shadow:0 4px 16px rgba(245,158,11,0.4);z-index:9990;display:flex;align-items:center;justify-content:center;transition:transform 0.2s;-webkit-tap-highlight-color:transparent}
.lang-fab:hover{transform:scale(1.08)}
.lang-fab:active{transform:scale(0.95)}

.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-close{display:block;width:100%;margin-top:1rem;padding:0.625rem;background:#F59E0B;color:#0F172A;border:none;border-radius:8px;font-weight:700;font-size:0.875rem;cursor:pointer;transition:opacity 0.2s}
.lang-fab-close:hover{opacity:0.85}

/* ─── 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}

/* ─── responsive ─── */
@media(min-width:640px){
  .story-card{flex:0 0 180px}
  .s-card{padding:3rem 2rem}
  .s-card .de-line{font-size:1.75rem}
  .s-card .en-line{font-size:1.5rem}
}
@media(min-width:1024px){
  .story-card{flex:0 0 200px}
  .sentence-viewport{max-width:800px;margin:0 auto}
}
