:root{--ink:#0a0c10;--ink-2:#0d1016;--panel:#12151c;--panel-border:#ffffff14;--on-air:#ff3b4e;--broadcast:#3bb8ff;--amber:#f0b429;--text-primary:#e8ecf1;--text-muted:#b7bfd0;--text-dim:#98a2b8}*{box-sizing:border-box;margin:0;padding:0}body{color:var(--text-primary);min-height:100vh;padding:24px 16px 60px;font-family:Inter,sans-serif}.page-backdrop{z-index:-3;background:linear-gradient(#f5f7fb 0%,#eaeef4 55%,#dee3ec 100%);position:fixed;inset:0}.side-photo{opacity:.42;z-index:-2;pointer-events:none;background-image:url(/eiffel-photo.jpg);background-position:50%;background-repeat:no-repeat;background-size:auto 100%;width:340px;position:fixed;top:0;bottom:0}.side-photo-left{left:0;-webkit-mask-image:linear-gradient(90deg,#000 40%,#0000 100%);mask-image:linear-gradient(90deg,#000 40%,#0000 100%)}.side-photo-right{right:0;-webkit-mask-image:linear-gradient(270deg,#000 40%,#0000 100%);mask-image:linear-gradient(270deg,#000 40%,#0000 100%)}.wrap{background:var(--ink);border-radius:20px;max-width:760px;margin:0 auto;padding:32px 24px 60px;box-shadow:0 30px 80px #00000059}header.app-header{border-bottom:1px solid var(--panel-border);justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:20px;display:flex}.brand{flex-direction:column;gap:4px;display:flex}.brand-top{align-items:baseline;gap:12px;display:flex}.brand-name{letter-spacing:1.5px;font-family:Bebas Neue,sans-serif;font-size:28px}.brand-name .fr-blue{color:#4d8fd6}.brand-name .fr-red{color:#e0505f}.fr-bar{border-radius:2px;width:64px;height:3px;margin-top:6px;display:flex;overflow:hidden}.fr-bar span{flex:1}.fr-bar .b{background:#4d8fd6}.fr-bar .w{background:#f4f6f9}.fr-bar .r{background:#e0505f}.tagline{letter-spacing:1.5px;color:var(--text-primary);text-transform:uppercase;font-family:IBM Plex Mono,monospace;font-size:11px}.freq{color:var(--broadcast);background:#3bb8ff14;border:1px solid #3bb8ff59;border-radius:4px;padding:4px 10px;font-family:IBM Plex Mono,monospace;font-size:14px}.on-air{align-items:center;gap:8px;display:flex}.on-air-dot{background:var(--on-air);border-radius:50%;width:9px;height:9px;animation:1.6s ease-in-out infinite pulse;box-shadow:0 0 10px 2px #ff3b4e99}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.on-air-label{letter-spacing:2px;color:var(--on-air);font-family:IBM Plex Mono,monospace;font-size:12px}nav.tabs{flex-wrap:wrap;gap:6px;margin-bottom:32px;display:flex}.tab-btn{cursor:pointer;border:1px solid var(--panel-border);color:var(--text-muted);background:0 0;border-radius:100px;padding:8px 16px;font-family:Inter,sans-serif;font-size:13px;font-weight:500;text-decoration:none;display:inline-block}.tab-btn.active{background:var(--panel);color:var(--text-primary);border-color:#3bb8ff66}.panel{background:linear-gradient(165deg, var(--panel), #0e1117);border:1px solid var(--panel-border);border-radius:20px;margin-bottom:24px;padding:28px}.eyebrow{letter-spacing:2px;color:var(--broadcast);text-transform:uppercase;margin-bottom:10px;font-family:IBM Plex Mono,monospace;font-size:12px}.section-label{letter-spacing:2px;color:var(--text-dim);text-transform:uppercase;margin-bottom:16px;font-family:IBM Plex Mono,monospace;font-size:12px}.np-title{letter-spacing:.5px;margin-bottom:24px;font-family:Bebas Neue,sans-serif;font-size:40px;line-height:1}.meter{align-items:flex-end;gap:4px;height:48px;margin-bottom:24px;display:flex}.meter span{background:linear-gradient(to top, var(--amber), #f0b42940);border-radius:2px 2px 0 0;flex:1;height:20%}.meter.playing span{animation:1.1s ease-in-out infinite bounce}.meter span:nth-child(odd){animation-duration:.9s}.meter span:nth-child(3n){animation-duration:1.3s}@keyframes bounce{0%,to{height:20%}50%{height:90%}}.transport{align-items:center;gap:18px;display:flex}.play-btn{background:var(--text-primary);width:52px;height:52px;color:var(--ink);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:18px;display:flex}.skip-btn{width:36px;height:36px;color:var(--text-primary);border:1px solid var(--panel-border);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:15px;display:flex}.skip-btn:hover{border-color:#3bb8ff66}.mini-transport{align-items:center;gap:12px;padding:0 0 16px 52px;display:flex}.progress-wrap{flex:1}.progress-track{cursor:pointer;background:#ffffff1a;border-radius:2px;height:4px;margin-bottom:8px;overflow:hidden}.progress-fill{background:var(--broadcast);height:100%}.progress-times{color:var(--text-muted);justify-content:space-between;font-family:IBM Plex Mono,monospace;font-size:12px;display:flex}.schedule-strip{gap:12px;margin-bottom:32px;padding-bottom:8px;display:flex;overflow-x:auto}.slot{background:var(--panel);border:1px solid var(--panel-border);cursor:pointer;border-radius:14px;flex:0 0 132px;padding:16px 14px}.slot:hover{border-color:#3bb8ff66}.slot.active{border-color:var(--broadcast);background:linear-gradient(165deg, #14202b, var(--panel))}.slot-time{color:var(--text-dim);margin-bottom:10px;font-family:IBM Plex Mono,monospace;font-size:11px}.slot.active .slot-time{color:var(--broadcast)}.slot-title{font-size:13px;font-weight:500;line-height:1.3}.slot-sub{color:var(--text-muted);margin-top:4px;font-size:11px}.review{justify-content:center;gap:12px;display:flex}.review-btn{cursor:pointer;border:1px solid var(--panel-border);background:var(--panel);color:var(--text-primary);border-radius:100px;padding:12px 24px;font-family:Inter,sans-serif;font-size:14px;font-weight:500}.review-btn.got-it{border-color:#3bb8ff66}.review-btn.got-it:hover{background:#3bb8ff1a}.review-btn.shaky{border-color:#f0b42966}.review-btn.shaky:hover{background:#f0b4291a}.review-btn:disabled{opacity:.5;cursor:default}.day-picker{gap:8px;margin-bottom:24px;display:flex}.day-pill{text-align:center;border:1px solid var(--panel-border);background:var(--panel);cursor:pointer;border-radius:10px;flex:1;padding:10px 0}.day-pill.active{border-color:var(--broadcast);background:linear-gradient(165deg, #14202b, var(--panel))}.day-pill-label{color:var(--text-dim);font-family:IBM Plex Mono,monospace;font-size:11px}.day-pill.active .day-pill-label{color:var(--broadcast)}.episode-row{border-bottom:1px solid var(--panel-border);align-items:center;gap:16px;padding:16px 0;display:flex}.episode-row:last-child{border-bottom:none}.ep-play{border:1px solid var(--panel-border);background:var(--ink);width:36px;height:36px;color:var(--text-primary);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;display:flex}.ep-info{flex:1}.ep-time{color:var(--text-dim);margin-bottom:3px;font-family:IBM Plex Mono,monospace;font-size:11px}.ep-title{font-size:14px;font-weight:500}.ep-status{color:var(--text-dim);font-family:IBM Plex Mono,monospace;font-size:11px}.ep-status.played{color:var(--amber)}.episode-row.locked{opacity:.45}.episode-row.locked .ep-play{cursor:default}.app-footer{border-top:1px solid var(--panel-border);justify-content:center;gap:10px;margin-top:40px;padding-top:20px;font-family:IBM Plex Mono,monospace;font-size:12px;display:flex}.app-footer a{color:var(--text-muted);text-decoration:none}.app-footer a:hover{color:var(--text-primary)}.footer-dot{color:var(--text-dim)}.speed-btn{width:auto;padding:0 10px;font-family:IBM Plex Mono,monospace;font-size:12px}.word-status-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.word-status-new{background:var(--text-dim)}.word-status-learning{background:var(--amber)}.word-status-mastered{background:var(--broadcast)}.callin-panel{border-color:#ff3b4e40}.callin-flash{letter-spacing:1px;color:var(--on-air);margin-bottom:16px;font-family:IBM Plex Mono,monospace;font-size:12px}.stat-grid{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:28px;display:grid}.stat-card{background:var(--panel);border:1px solid var(--panel-border);border-radius:14px;padding:18px}.stat-value{letter-spacing:.5px;font-family:Bebas Neue,sans-serif;font-size:32px}.stat-label{letter-spacing:1px;color:var(--text-dim);text-transform:uppercase;margin-top:4px;font-family:IBM Plex Mono,monospace;font-size:10px}.level-track{background:#ffffff0f;border-radius:6px;height:10px;margin-bottom:10px;overflow:hidden}.level-fill{background:linear-gradient(90deg, var(--amber), var(--broadcast));height:100%}.level-labels{color:var(--text-muted);justify-content:space-between;margin-bottom:28px;font-family:IBM Plex Mono,monospace;font-size:11px;display:flex}.recent-item{border-bottom:1px solid var(--panel-border);justify-content:space-between;align-items:center;padding:10px 0;font-size:13px;display:flex}.recent-item:last-child{border-bottom:none}.dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.dot.good{background:var(--broadcast)}.dot.shaky{background:var(--amber)}.setting-row{border-bottom:1px solid var(--panel-border);justify-content:space-between;align-items:center;gap:20px;padding:16px 0;display:flex}.setting-row:last-child{border-bottom:none}.setting-name{margin-bottom:3px;font-size:14px;font-weight:500}.setting-desc{color:var(--text-muted);font-size:12px}.stepper{flex-shrink:0;align-items:center;gap:12px;display:flex}.stepper button{border:1px solid var(--panel-border);background:var(--ink);width:28px;height:28px;color:var(--text-primary);cursor:pointer;border-radius:50%;font-size:16px}.stepper button:disabled{opacity:.4;cursor:default}.stepper span{text-align:center;min-width:24px;font-family:IBM Plex Mono,monospace;font-size:14px}.review-btn.danger{border-color:#ff3b4e66}.review-btn.danger:hover{background:#ff3b4e1a}.save-hint{color:var(--broadcast);margin-top:6px;font-family:IBM Plex Mono,monospace;font-size:11px}.practice-target{letter-spacing:.5px;margin-bottom:6px;font-family:Bebas Neue,sans-serif;font-size:30px}.practice-nav{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.practice-nav-label{color:var(--text-dim);font-family:IBM Plex Mono,monospace;font-size:12px}.practice-actions{gap:12px;margin-bottom:12px;display:flex}.record-btn{cursor:pointer;background:var(--panel);color:var(--text-primary);border:1px solid #ff3b4e66;border-radius:100px;padding:12px 24px;font-family:Inter,sans-serif;font-size:14px;font-weight:500}.record-btn.recording{border-color:var(--on-air);background:#ff3b4e26;animation:1.2s ease-in-out infinite pulse}.compare-row{gap:12px;display:flex}.word-check{border:1px solid var(--panel-border);background:var(--panel);border-radius:12px;margin-top:16px;padding:14px 16px}.word-check.good{background:#3bb8ff0f;border-color:#3bb8ff4d}.word-check.partial{background:#f0b4290f;border-color:#f0b4294d}.word-check-transcript{color:var(--text-muted);margin-bottom:6px;font-size:13px;font-style:italic}.word-check-result{color:var(--text-primary);font-size:14px}.waveform-compare{margin-top:20px}.waveform-row{align-items:center;gap:12px;margin-bottom:10px;display:flex}.waveform-label{color:var(--text-dim);flex-shrink:0;width:48px;font-family:IBM Plex Mono,monospace;font-size:11px}.waveform-bars{flex:1;align-items:flex-end;gap:2px;height:36px;display:flex}.waveform-bars span{border-radius:1px 1px 0 0;flex:1}.wave-native{background:var(--broadcast)}.wave-yours{background:var(--amber)}.waveform-duration{color:var(--text-muted);margin-top:8px;font-family:IBM Plex Mono,monospace;font-size:12px}.waveform-notes{margin-top:12px;padding-left:18px}.waveform-notes li{color:var(--text-primary);margin-bottom:6px;font-size:13px;line-height:1.4}.review-btn.feedback{border-color:#3bb8ff66;margin-top:4px}.review-btn.feedback:hover{background:#3bb8ff1a}.feedback-box{color:var(--text-primary);background:#3bb8ff14;border:1px solid #3bb8ff40;border-radius:12px;margin-top:14px;padding:16px;font-size:14px;line-height:1.5}.empty-state{color:var(--text-muted);padding:24px 0;font-size:14px}.drama-hero{background:linear-gradient(155deg,#1a0f12,#0e0a0c);border:1px solid #ff3b4e4d;border-radius:22px;margin-bottom:32px;padding:28px;position:relative;overflow:hidden}.drama-hero:before{content:"";pointer-events:none;background:radial-gradient(circle,#ff3b4e1f,#0000 70%);border-radius:50%;width:300px;height:300px;position:absolute;top:-50%;left:-10%}.drama-badge{letter-spacing:2px;color:var(--on-air);background:#ff3b4e1f;border:1px solid #ff3b4e59;border-radius:100px;margin-bottom:12px;padding:4px 10px;font-family:IBM Plex Mono,monospace;font-size:10px;display:inline-block}.drama-show-title{letter-spacing:.5px;margin-bottom:6px;font-family:Bebas Neue,sans-serif;font-size:34px;line-height:1}.drama-episode-title{color:var(--text-muted);margin-bottom:20px;font-size:14px}.drama-transport{align-items:center;gap:14px;display:flex}.drama-play{background:var(--on-air);color:#fff}.drama-skip:hover{border-color:#ff3b4e80}.drama-progress-fill{background:var(--on-air)}.drama-hero-photo{opacity:.7;pointer-events:none;background-image:url(/pierre-scene.jpg);background-position:50% 20%;background-size:cover;border-radius:0 22px 22px 0;width:55%;position:absolute;top:0;bottom:0;right:0;-webkit-mask-image:linear-gradient(270deg,#000 55%,#0000 100%);mask-image:linear-gradient(270deg,#000 55%,#0000 100%)}.drama-banner{background-image:linear-gradient(#0a08091a 0%,#0a080959 45%,#0a0809f2 95%),url(/pierre-scene-2.jpg);background-position:50% 35%;background-size:cover;border:1px solid #ff3b4e4d;border-radius:20px;height:180px;margin-bottom:24px;position:relative;overflow:hidden}.drama-banner-badge{letter-spacing:2px;color:var(--on-air);background:#ff3b4e26;border:1px solid #ff3b4e59;border-radius:100px;padding:4px 10px;font-family:IBM Plex Mono,monospace;font-size:10px;position:absolute;bottom:48px;left:20px}.drama-banner-title{letter-spacing:.5px;color:var(--text-primary);font-family:Bebas Neue,sans-serif;font-size:30px;position:absolute;bottom:16px;left:20px}
