:root,[data-theme=light]{--bg: #f6f3ed;--bg-surface: rgba(255, 255, 255, .64);--bg-elevated: #ffffff;--bg-topbar: rgba(246, 243, 237, .94);--bg-player: rgba(250, 248, 244, .96);--bg-tag: #edf3f1;--text: #26312f;--text-muted: #6b7b77;--text-dim: #a2aaa7;--text-tag: #52625e;--border: rgba(38, 49, 47, .1);--border-strong: rgba(38, 49, 47, .16);--accent: #2d6a5f;--accent-bg: rgba(45, 106, 95, .14);--accent-dark: #153d36;--shadow: rgba(38, 49, 47, .12);--shadow-strong: rgba(38, 49, 47, .2);--overlay: rgba(38, 49, 47, .08);--gradient: linear-gradient(180deg, rgba(255, 255, 255, .62), rgba(255, 255, 255, 0));--word-a1: #333333;--word-a2: #1a6b3f;--word-b1: #1a3f8f;--word-b2: #5b2d8e;--word-c1: #8a6d00;--word-c2: #a01a1a;color:var(--text);background:var(--bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}[data-theme=dark]{--bg: #1a1e1d;--bg-surface: rgba(42, 48, 46, .85);--bg-elevated: #2a302e;--bg-topbar: rgba(26, 30, 29, .94);--bg-player: rgba(26, 30, 29, .96);--bg-tag: #2f3633;--text: #e0e3e1;--text-muted: #9aa5a1;--text-dim: #6b7b77;--text-tag: #9aa5a1;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .14);--accent: #3d9e8a;--accent-bg: rgba(61, 158, 138, .18);--accent-dark: #b8e6db;--shadow: rgba(0, 0, 0, .3);--shadow-strong: rgba(0, 0, 0, .4);--overlay: rgba(0, 0, 0, .3);--gradient: linear-gradient(180deg, rgba(255, 255, 255, .04), rgba(255, 255, 255, 0));--word-a1: #f8f8f8;--word-a2: #4ade80;--word-b1: #60a5fa;--word-b2: #c084fc;--word-c1: #facc15;--word-c2: #f87171;color:var(--text);background:var(--bg)}[data-theme=dark]{--bg: #1a1e1d;--bg-surface: rgba(42, 48, 46, .85);--bg-elevated: #2a302e;--bg-topbar: rgba(26, 30, 29, .94);--bg-player: rgba(26, 30, 29, .96);--bg-tag: #2f3633;--text: #e0e3e1;--text-muted: #9aa5a1;--text-dim: #6b7b77;--text-tag: #9aa5a1;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .14);--accent: #3d9e8a;--accent-bg: rgba(61, 158, 138, .18);--accent-dark: #b8e6db;--shadow: rgba(0, 0, 0, .3);--shadow-strong: rgba(0, 0, 0, .4);--overlay: rgba(0, 0, 0, .3);--gradient: linear-gradient(180deg, rgba(255, 255, 255, .04), rgba(255, 255, 255, 0));--word-a1: #f8f8f8;--word-a2: #4ade80;--word-b1: #60a5fa;--word-b2: #c084fc;--word-c1: #facc15;--word-c2: #f87171}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select{font:inherit}button{color:inherit}.reader-page{display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,1fr);height:100vh;background:var(--gradient),var(--bg)}.top-bar{z-index:5;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px clamp(16px,4vw,40px);border-bottom:1px solid var(--border);background:var(--bg-topbar);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);flex-wrap:nowrap;min-width:0}.site-link{color:var(--text);font-size:clamp(1.05rem,2vw,1.35rem);font-weight:700;text-decoration:none;letter-spacing:0;white-space:nowrap}.site-link:hover{text-decoration:underline}.top-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex:1;min-width:0}.control-group{display:flex;align-items:center;gap:4px;padding:4px;border:1px solid var(--border);border-radius:10px;background:var(--bg-surface);flex:0 1 auto;min-width:0}.control-measure{position:absolute;visibility:hidden;pointer-events:none;z-index:-1;width:max-content;flex:0;min-width:0}.speed-select{height:32px;padding:0 6px 0 8px;border:0;border-radius:6px;background:transparent;color:var(--text);font-size:.82rem;font-weight:600;cursor:pointer;outline:none}.tool-button{display:inline-flex;align-items:center;gap:4px;height:32px;padding:0 10px;border:0;border-radius:6px;background:transparent;color:var(--text-muted);font-size:.82rem;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .12s ease,color .12s ease}.tool-button:hover{color:var(--text)}.tool-button.active{background:var(--accent-bg);color:var(--accent)}.tool-button.icon-only{padding:0;width:32px;justify-content:center}.segmented{display:inline-grid;grid-template-columns:repeat(3,36px);padding:2px;gap:1px;border-radius:6px}.segmented button{height:28px;padding:0;border:0;border-radius:5px;background:transparent;color:var(--text-muted);font-size:.78rem;font-weight:600;cursor:pointer;transition:background .12s ease,color .12s ease,box-shadow .12s ease}.segmented button.active{background:var(--bg-elevated);color:var(--text);box-shadow:0 1px 3px var(--shadow)}h1,h2{margin:0;font-weight:700;letter-spacing:0}h1{font-size:clamp(1.12rem,2vw,1.5rem)}h2{font-size:1.45rem}.text-viewer{overflow-y:auto;overscroll-behavior:contain;scroll-padding:22vh 0}.reader-column{width:min(760px,100%);margin:0 auto;padding:clamp(28px,6vw,56px) clamp(18px,5vw,34px) 140px}.course-header{margin-bottom:24px;padding:0 18px}.course-thumbnail{display:block;width:100%;max-height:240px;object-fit:cover;border-radius:10px;margin-bottom:20px}.course-title{font-size:calc(1.6rem * var(--font-scale));line-height:1.4;color:var(--text)}.course-description{margin:10px 0 0;color:var(--text-muted);font-size:calc(1rem * var(--font-scale));line-height:1.6}.segment{position:relative;padding:16px 18px 16px 22px;border-radius:8px;color:var(--text-dim);transition:background .18s ease,color .18s ease}.segment+.segment{margin-top:6px}.segment:before{position:absolute;inset:18px auto 18px 0;width:3px;border-radius:999px;background:var(--speaker-color, transparent);opacity:.3;content:""}.segment.current{color:var(--text);background:var(--bg-surface);box-shadow:0 8px 26px var(--shadow)}.segment.current:before{background:var(--speaker-color, var(--accent));opacity:1}.segment.played{color:var(--text-muted)}.segment-text{margin:0;font-family:Georgia,Times New Roman,serif;font-size:calc(1.1rem * var(--font-scale));line-height:1.88;letter-spacing:0}.translation{margin:8px 0 0;color:var(--text-muted);font-size:calc(.96rem * var(--font-scale));line-height:1.7}.word{display:inline;margin:0 .13em;padding:0 .03em;border:0;border-radius:4px;background:transparent;color:inherit;cursor:pointer;line-height:inherit}.word.level-a1{--word-color: var(--word-a1)}.word.level-a2{--word-color: var(--word-a2)}.word.level-b1{--word-color: var(--word-b1)}.word.level-b2{--word-color: var(--word-b2)}.word.level-c1{--word-color: var(--word-c1)}.word.level-c2{--word-color: var(--word-c2)}.word.level-unknown{--word-color: var(--text-dim)}.word.played{color:var(--word-color)}.segment.current .word:not(.played):not(.active){color:var(--text-dim)}.word.active{background:transparent;text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px;text-decoration-thickness:2px;color:var(--word-color)}.char-unplayed{color:var(--text-dim)}.bottom-player{z-index:6;padding:10px clamp(14px,4vw,36px) calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--bg-player);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.progress-row{display:flex;align-items:center;gap:10px;color:var(--text-muted);font-size:.82rem}.progress{flex:1;accent-color:var(--accent)}.player-controls{display:flex;align-items:center;justify-content:center;gap:24px;margin-top:10px}.player-body{position:relative;display:flex;align-items:center;justify-content:space-between;margin-top:8px;min-height:64px}.player-left,.player-right{display:flex;align-items:center;min-width:72px;z-index:1}.player-right{justify-content:flex-end}.player-center{position:absolute;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:16px}.player-select{padding:4px 8px;border:1px solid var(--border);border-radius:6px;background:var(--bg-elevated);color:var(--text-muted);font-size:.8rem;cursor:pointer;outline:none}.player-select:focus{border-color:var(--accent)}.speed-button,.loop-button{display:inline-flex;align-items:center;gap:4px;padding:6px 10px;border:none;border-radius:6px;background:var(--bg-elevated);color:var(--text-muted);font-size:.82rem;cursor:pointer;transition:background .15s,color .15s}.speed-button:active,.loop-button:active{background:var(--bg-surface)}.loop-button.active{color:var(--accent)}.loop-label{font-size:.75rem}.icon-button,.word-menu button{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:0;border-radius:50%;background:var(--bg-elevated);box-shadow:0 1px 5px var(--shadow);cursor:pointer;color:var(--text-muted);transition:box-shadow .15s ease}.icon-button:active{box-shadow:0 1px 2px var(--shadow)}.play-button{display:inline-flex;align-items:center;justify-content:center;width:54px;height:54px;border:0;border-radius:50%;background:var(--accent);color:#fff;cursor:pointer;box-shadow:0 2px 8px var(--shadow-strong);transition:box-shadow .15s ease}.play-button:active{box-shadow:0 1px 3px var(--shadow)}.play-button-wrap{position:relative;display:inline-flex;align-items:center;justify-content:center}.countdown-ring{position:absolute;top:50%;left:50%;width:66px;height:66px;margin-top:-33px;margin-left:-33px;color:var(--accent);pointer-events:none;transform:rotate(-90deg)}.countdown-ring circle{stroke-dasharray:182.21;stroke-dashoffset:182.21;animation:countdown-fill .76s linear forwards}@keyframes countdown-fill{0%{stroke-dashoffset:182.21}to{stroke-dashoffset:0}}.word-menu{position:fixed;z-index:9;display:flex;align-items:center;gap:8px;max-width:min(320px,calc(100vw - 24px));padding:8px;border:1px solid var(--border);border-radius:8px;background:var(--bg-elevated);box-shadow:0 16px 48px var(--shadow);transform:translate(-50%,-100%)}.word-menu strong{overflow:hidden;max-width:108px;text-overflow:ellipsis;white-space:nowrap}.overlay-backdrop{position:fixed;inset:0;z-index:7;background:var(--overlay)}.dict-card{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:10;width:min(420px,calc(100vw - 24px));padding:20px;border:1px solid var(--border);border-radius:12px;background:var(--bg-elevated);box-shadow:0 20px 60px var(--shadow)}.dict-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.dict-translation{margin:18px 0;color:var(--text);font-size:1.08rem;line-height:1.65}.dict-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dict-meta span{padding:5px 8px;border-radius:6px;background:var(--bg-tag);color:var(--text-tag);font-size:.78rem}.center-state{display:flex;align-items:center;justify-content:center;grid-row:1 / -1;height:100%;color:var(--text-muted)}.error-empty{display:flex;flex-direction:column;align-items:center;gap:12px;font-size:1.1rem}.error-empty .error-icon{font-size:3.5rem}.more-dropdown{position:absolute;top:calc(100% + 4px);right:clamp(16px,4vw,40px);z-index:20;display:flex;flex-direction:column;gap:2px;min-width:160px;padding:6px;border:1px solid var(--border);border-radius:10px;background:var(--bg-elevated);box-shadow:0 8px 32px var(--shadow-strong)}.more-dropdown .tool-button{width:100%;justify-content:flex-start;padding:8px 12px;height:auto;font-size:.88rem;border-radius:8px}.dropdown-row{display:flex;align-items:center;gap:8px;padding:6px 12px}.dropdown-label{color:var(--text-muted);font-size:.82rem;white-space:nowrap}.dropdown-select{flex:1;height:32px;padding:0 8px;border:1px solid var(--border);border-radius:6px;background:var(--bg-elevated);color:var(--text);font-size:.82rem;cursor:pointer;outline:none}.dropdown-select:focus{border-color:var(--accent)}.more-dropdown .segmented{padding:2px}.dropdown-separator{height:1px;margin:2px 8px;background:var(--border)}.dropdown-backdrop{position:fixed;inset:0;z-index:19}.top-actions{position:relative}@media(max-width:520px){.top-bar{gap:8px;padding:12px clamp(12px,3vw,20px)}.control-group{padding:3px}.speed-select{font-size:.78rem;padding:0 4px 0 6px}.segmented{grid-template-columns:repeat(3,32px)}.segmented button{height:26px;font-size:.72rem}}@media(max-width:680px){.segment{padding-right:10px;padding-left:18px}.segment-text{line-height:1.82}.player-center{gap:16px}.icon-button{width:42px;height:42px}.play-button{width:52px;height:52px}.countdown-ring{width:62px;height:62px;margin-top:-31px;margin-left:-31px}.speed-button,.loop-button{padding:4px 8px;font-size:.78rem}.loop-label{display:none}}.flip-enter-active{animation:flip-in .4s ease-out;transform-origin:center center}.flip-leave-active{animation:flip-out .25s ease-in;transform-origin:center center}@keyframes flip-in{0%{transform:translate(-50%,-50%) perspective(600px) rotateY(90deg);opacity:0}to{transform:translate(-50%,-50%) perspective(600px) rotateY(0);opacity:1}}@keyframes flip-out{0%{transform:translate(-50%,-50%) perspective(600px) rotateY(0);opacity:1}to{transform:translate(-50%,-50%) perspective(600px) rotateY(90deg);opacity:0}}.fade-enter-active,.fade-leave-active{transition:opacity .2s ease}.fade-enter-from,.fade-leave-to{opacity:0}
