:root{color-scheme:dark;--bg: #0d1117;--panel: #161b22;--border: #30363d;--text: #e6edf3;--muted: #8b949e;--accent: #3fb950;--accent-dim: #238636;--warn: #d29922;--btn: #21262d;--btn-hover: #30363d;--font: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--mono: "IBM Plex Mono", "SF Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body{margin:0;height:100%;width:100%;overflow:hidden;overscroll-behavior:none;touch-action:pan-x pan-y;-webkit-text-size-adjust:100%;text-size-adjust:100%;background:var(--bg);color:var(--text);font-family:var(--font);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}html{position:fixed;top:0;right:0;bottom:0;left:0}#app{height:100%;width:100%;display:flex;flex-direction:column;overflow:hidden;overscroll-behavior:none;touch-action:manipulation}.topbar{display:flex;align-items:center;gap:12px;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--panel);flex-shrink:0;min-width:0}.topbar h1{margin:0;font-size:14px;font-weight:600;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .meta{color:var(--muted);font-size:12px;font-family:var(--mono);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lesson-pick{flex-shrink:0}.lesson-pick select{max-width:min(420px,46vw);padding:4px 8px;border-radius:6px;border:1px solid var(--border);background:var(--btn);color:var(--text);font-size:12px;font-family:var(--font)}.lesson-pick select:hover{background:var(--btn-hover)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.layout{flex:1;min-height:0;min-width:0;display:grid;grid-template-columns:1fr 240px;overflow:hidden}.chart-wrap{min-width:0;min-height:0;display:flex;flex-direction:column;border-right:1px solid var(--border);overflow:hidden;touch-action:none}#tv_chart_container{flex:1;min-height:0;overflow:hidden;touch-action:none}.side{display:flex;flex-direction:column;min-height:0;min-width:0;background:var(--panel);overflow:hidden}.side-header{padding:12px 14px 8px;border-bottom:1px solid var(--border);flex-shrink:0}.side-header .bar-label{font-family:var(--mono);font-size:15px;font-weight:600;word-break:break-word}.side-header .bar-ohlc{margin-top:4px;font-family:var(--mono);font-size:11px;color:var(--muted)}.side-notes,.side-replay{flex:1 1 0;min-height:0;display:flex;flex-direction:column}.side-notes{padding:12px 14px;gap:8px;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.side-notes .peek-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--btn);color:var(--text);border-radius:6px;padding:8px 12px;font-size:13px;cursor:pointer;align-self:stretch;flex-shrink:0;min-height:40px;touch-action:manipulation}.side-notes .peek-btn:hover{background:var(--btn-hover)}.side-notes .peek-btn.active{border-color:var(--warn);color:var(--warn)}.book-text{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:10px 12px;font-size:13px;line-height:1.55;white-space:pre-wrap;color:var(--text);display:none}.book-text.open{display:block}.book-text.empty{color:var(--muted);font-style:italic}.side-replay{padding:12px 14px;padding-bottom:max(14px,env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--panel);justify-content:center;gap:12px}.side-replay .status{font-family:var(--mono);font-size:12px;color:var(--accent);text-align:center;line-height:1.35;word-break:break-word;flex-shrink:0}.side-replay .replay-btns{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%}.side-replay .replay-btns button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--btn);color:var(--text);border-radius:8px;padding:14px 8px;font-size:14px;font-weight:600;cursor:pointer;min-height:52px;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.side-replay .replay-btns button:hover:not(:disabled){background:var(--btn-hover)}.side-replay .replay-btns button:active:not(:disabled){background:var(--accent-dim);border-color:var(--accent)}.side-replay .replay-btns button:disabled{opacity:.4;cursor:not-allowed}.error-banner{padding:16px;color:#ff7b72;font-family:var(--mono);white-space:pre-wrap}
