:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:#ffffffde;background-color:#1a1a1a;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh;background-color:#111;color:#eee;overflow:hidden}#root{width:100%;height:100vh;display:flex;flex-direction:row}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#2a2a2a;cursor:pointer;transition:border-color .25s,background-color .25s;color:#fff}button:hover{background-color:#3a3a3a;border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}input,textarea{border-radius:4px;border:1px solid #444;background:#222;color:#fff;padding:8px;font-family:inherit}input[type=range]{background:transparent;border:none;padding:0}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;height:16px;width:16px;border-radius:50%;background:#646cff;cursor:pointer;margin-top:-6px}input[type=range]::-webkit-slider-runnable-track{width:100%;height:4px;cursor:pointer;background:#444;border-radius:2px}.App{display:flex;flex-direction:row;width:100%;height:100vh;overflow:hidden;position:relative}.menu-toggle{position:fixed;top:24px;left:24px;width:32px;height:32px;background:transparent;border:1px solid #333;padding:0;cursor:pointer;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;transition:border-color .15s ease;border-radius:0}.menu-toggle:hover{border-color:#555}.menu-toggle:focus,.menu-toggle:focus-visible{outline:none;box-shadow:none}.menu-line{display:block;width:14px;height:1px;background-color:#666;transition:background-color .15s ease}.menu-toggle:hover .menu-line{background-color:#fff}.main-content{flex:1;display:flex;transition:opacity .3s ease}.main-content.faded{opacity:0;pointer-events:none}.sidebar-wrapper{transition:opacity .3s ease;flex-shrink:0;width:auto;display:flex}.sidebar-wrapper.faded{opacity:0;pointer-events:none}.mobile-menu-btn{display:none}@media(max-width:768px){.App{height:100dvh}.main-content{width:100%;height:100%;position:fixed;inset:0}.sidebar-wrapper{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000;pointer-events:none;opacity:0;transition:opacity .3s ease}.sidebar-wrapper.mobile-open{pointer-events:auto;opacity:1}.mobile-menu-btn{display:flex;position:fixed;top:20px;left:20px;width:24px;height:24px;background:transparent;border:none;border-radius:0;z-index:100;flex-direction:column;align-items:center;justify-content:center;gap:5px;cursor:pointer;padding:0}.mobile-menu-btn .bar{width:22px;height:1.5px;background:#555;transition:background .15s ease;border-radius:1px}.mobile-menu-btn:active .bar{background:#fff}}.reader-display{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:#000;position:relative;height:100%;width:100%;overflow:hidden;min-height:0}.reader-logo{position:absolute;bottom:2rem;right:2rem;height:48px;width:auto;opacity:.4;transition:opacity .3s ease;z-index:20}.reader-logo:hover{opacity:.8}.reader-display.placeholder .word-orp{color:#444}.guide-lines{position:absolute;bottom:0;left:50%;transform:translate(-50%);width:2px;display:flex;flex-direction:column;justify-content:space-between;pointer-events:none;height:60%;top:20%}.guide-lines{height:180px;top:50%;transform:translate(-50%,-50%);width:0}.line{width:4px;height:20px;background-color:#333;margin-left:-2px}.line.top{margin-bottom:auto}.line.bottom{margin-top:auto}.word-container{display:flex;align-items:baseline;font-family:Courier New,Courier,monospace;font-family:Georgia,serif;font-size:5rem;line-height:1;color:#fff;z-index:10;width:100%}.word-left{flex:1;text-align:right;white-space:pre}.word-orp{color:#ff3e3e;flex:0 0 auto;text-align:center;min-width:.8ch}.word-right{flex:1;text-align:left;white-space:pre;display:flex;align-items:baseline}.truncation-dots{color:#444;font-size:.8em;margin-left:2px}.wpm-display{position:absolute;bottom:2rem;left:2rem;font-family:sans-serif;font-size:1.2rem;color:#555;font-style:italic}.app-store-cta{position:absolute;bottom:2rem;left:50%;transform:translate(-50%);font-size:.75rem;color:#444;letter-spacing:.5px;text-transform:uppercase;font-weight:500;white-space:nowrap;text-decoration:none;transition:color .15s ease}.app-store-cta:hover{color:#888}@media(max-width:768px){.reader-logo{inset:18px auto auto 50%;transform:translate(-50%);height:40px;opacity:.5}.reader-logo:active{opacity:1}.word-container{font-size:2.5rem;padding:0 10px}.guide-lines{height:120px}.line{height:15px;width:3px;margin-left:-1.5px}.wpm-display{inset:20px 20px auto auto;font-size:.85rem;line-height:24px}.app-store-cta{bottom:.75rem;font-size:.55rem;padding:0 1rem}}.sidebar-container{position:relative;display:flex;flex-shrink:0;transition:width .3s ease;width:320px}.sidebar-container.collapsed{width:48px}.sidebar-toggle{position:absolute;top:24px;right:24px;width:32px;height:32px;background:transparent;border:1px solid #333;color:#666;font-size:.9rem;cursor:pointer;z-index:10;display:flex;align-items:center;justify-content:center;transition:color .15s ease,border-color .15s ease;padding:0;border-radius:8px;outline:none}.sidebar-toggle:hover{color:#fff;border-color:#555;background:transparent}.sidebar-toggle:focus,.sidebar-toggle:focus-visible{outline:none;box-shadow:none}.sidebar-toggle:active{color:#888}.sidebar-container.collapsed .sidebar-toggle{right:8px}.sidebar{width:320px;background-color:#0a0a0a;border-left:1px solid #222;display:flex;flex-direction:column;padding:24px;box-sizing:border-box;height:100vh;overflow-y:auto;flex-shrink:0;transition:opacity .3s ease,transform .3s ease}.sidebar-container.collapsed .sidebar{opacity:0;pointer-events:none;transform:translate(20px)}.sidebar h2{margin-top:0;font-size:.7rem;color:#555;text-transform:uppercase;letter-spacing:2px;font-weight:400;margin-bottom:2.5rem}.control-group{margin-bottom:2rem;display:flex;flex-direction:column;gap:10px}.control-group label{font-size:.75rem;font-weight:400;color:#666;text-transform:uppercase;letter-spacing:1px;display:flex;justify-content:space-between}.highlight{color:#fff}.play-container{display:flex;justify-content:center}.play-btn{width:100%;padding:14px 20px;font-size:.85rem;font-weight:500;letter-spacing:1px;text-transform:uppercase;display:flex;align-items:center;justify-content:center;gap:10px;background-color:#fff;color:#000;border:none;border-radius:8px;transition:background-color .15s ease,color .15s ease}.play-btn:hover{background-color:#ddd}.play-btn:focus,.play-btn:focus-visible{outline:none;box-shadow:none}.play-btn.paused{background-color:transparent;color:#fff;border:1px solid #333}.play-btn.paused:hover{background-color:#111;border-color:#444}.play-btn .icon{font-size:.9rem}.wpm-controls{display:flex;align-items:center;gap:10px}.wpm-controls input[type=range]{flex:1}.scrubber-container{display:flex;flex-direction:column;gap:8px}.scrubber-container input[type=range]{width:100%}.time-info{display:flex;justify-content:space-between;font-size:.7rem;color:#444;font-family:SF Mono,Monaco,Inconsolata,monospace}.text-group{flex:1;display:flex;flex-direction:column}.text-display{width:100%;box-sizing:border-box;background-color:#050505;border:1px solid #222;color:#ccc;font-family:Inter,system-ui,sans-serif;font-size:.85rem;line-height:1.6;padding:12px;height:200px;max-height:200px;border-radius:8px;overflow-y:auto;word-break:break-all}.text-display .word{transition:color .15s ease}.text-display .word.read{color:#9f9f9f}.text-input-wrapper{flex:1;display:flex;flex-direction:column;position:relative}.text-input-wrapper textarea{width:100%;box-sizing:border-box;resize:none;background-color:#050505;border:1px solid #222;color:#ccc;font-family:Inter,system-ui,sans-serif;font-size:.85rem;line-height:1.6;padding:12px;height:200px;max-height:200px;border-radius:8px;transition:border-color .15s ease;word-break:break-all;overflow-y:auto}.text-input-wrapper textarea:focus{border-color:#444;outline:none}.text-input-wrapper textarea::placeholder{color:#444}.text-group textarea::placeholder{color:#444}.text-group textarea:focus{border-color:#444;outline:none}.article-link{display:block;margin-top:12px;padding:10px 16px;background:transparent;border:1px solid #333;color:#888;font-size:.75rem;text-transform:uppercase;letter-spacing:1px;text-decoration:none;text-align:center;transition:all .15s ease}.article-link:hover{border-color:#555;color:#fff}input[type=range]{-webkit-appearance:none;appearance:none;background:transparent;width:100%}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;height:14px;width:14px;border-radius:50%;background:#fff;cursor:pointer;margin-top:-6px;transition:background .15s ease}input[type=range]::-webkit-slider-thumb:hover{background:#ccc}input[type=range]::-webkit-slider-runnable-track{width:100%;height:2px;cursor:pointer;background:#333}input[type=range]:focus{outline:none}.music-group{display:flex;flex-direction:column;gap:16px;padding-top:24px;margin-top:24px;border-top:1px solid #222}.toggle-row{display:flex;justify-content:space-between;align-items:center}.toggle-label{font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:1px;color:#666}.apple-toggle{width:44px;height:24px;border-radius:99px;background-color:#333;border:none;position:relative;cursor:pointer;transition:background-color .2s ease;padding:2px}.apple-toggle:focus,.apple-toggle:focus-visible{outline:none;box-shadow:none}.apple-toggle.active{background-color:#fff}.toggle-thumb{width:20px;height:20px;background-color:#fff;border-radius:50%;position:absolute;top:2px;left:2px;transition:transform .2s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 4px #0003}.apple-toggle.active .toggle-thumb{transform:translate(20px);background-color:#111}.music-controls{display:flex;justify-content:center;align-items:center;gap:32px;margin-top:12px;padding-bottom:8px;animation:fadeIn .3s ease}.music-btn{background:transparent;border:none;color:#fff;cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:color .15s ease,background-color .15s ease}.music-btn:hover{color:#ccc;background-color:#ffffff1a}.music-btn:focus,.music-btn:focus-visible{outline:none}.music-btn.play{font-size:1.2em}.music-btn .icon{font-size:1.2rem;line-height:1}.volume-control{padding:0 4px;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.input-mode-selector{display:flex;gap:8px;margin-bottom:12px}.mode-btn{flex:1;padding:10px 12px;background:transparent;border:1px solid #333;color:#666;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;transition:all .2s ease;border-radius:5px}.mode-btn:hover{border-color:#555;color:#999}.mode-btn:focus,.mode-btn:focus-visible{outline:none}.mode-btn.active{background:#fff;border-color:#fff;color:#000}.input-area{display:none;opacity:0;transition:opacity .25s ease}.input-area.visible{display:block;opacity:1;animation:fadeIn .25s ease}.file-upload-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:120px;border:1px dashed #333;background:#050505;cursor:pointer;transition:all .2s ease;gap:8px;border-radius:8px}.file-upload-zone:hover{border-color:#555;background:#0a0a0a}.upload-icon{font-size:1.5rem;color:#555;transition:color .2s ease}.file-upload-zone:hover .upload-icon{color:#888}.upload-text{font-size:.75rem;color:#555;text-transform:uppercase;letter-spacing:1px}.format-hint{display:block;margin-top:8px;font-size:.65rem;color:#444;text-align:center;letter-spacing:.5px}.file-info{display:flex;justify-content:space-between;align-items:center;background:#111;border:1px solid #333;border-bottom:none;padding:8px 12px;border-radius:8px 8px 0 0;font-size:.75rem;color:#fff;margin-bottom:-1px;position:relative;z-index:1}.file-info+textarea{border-top-left-radius:0;border-top-right-radius:0;border-top-color:#333}.filename{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-family:Inter,sans-serif;color:#aaa}.remove-file{background:transparent;border:none;color:#666;cursor:pointer;font-size:1.2rem;line-height:1;padding:0 4px;transition:color .15s ease;border-radius:4px;display:flex;align-items:center;justify-content:center;width:20px;height:20px}.remove-file:hover{color:#fff;background:#222}@media(max-width:768px){.sidebar-container,.sidebar-container.collapsed{width:100%;height:100%}.sidebar{width:100%;height:100%;border-left:none;padding:60px 24px 24px;overflow-y:auto}.sidebar-toggle{top:16px;right:16px;width:40px;height:40px;font-size:1.1rem}.sidebar-container.collapsed .sidebar,.sidebar-container.collapsed .sidebar-toggle{display:none}.control-group{margin-bottom:1.5rem;gap:8px}.play-btn{padding:14px 20px;font-size:.85rem}.music-group{padding-top:16px;margin-top:16px;gap:12px}.text-input-wrapper textarea,.text-display{height:150px;max-height:150px;font-size:.85rem}.input-mode-selector{margin-bottom:10px}.mode-btn{padding:10px 12px;font-size:.75rem}.file-upload-zone{min-height:100px}.play-btn .icon{display:inline-block;width:12px;height:12px;font-size:0;position:relative}.play-btn .icon:before{content:"";position:absolute;top:0;left:0}.play-btn:not(.paused) .icon:before{width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:10px solid #000}.play-btn.paused .icon:before{width:10px;height:12px;border-left:3px solid #fff;border-right:3px solid #fff;background:transparent;top:50%;transform:translateY(-50%)}.music-btn .icon{display:inline-block;width:18px;height:14px;font-size:0;position:relative}.music-btn .icon:before,.music-btn .icon:after{content:"";position:absolute;top:50%;transform:translateY(-50%)}.music-btn[aria-label="Previous track"] .icon:before{left:0;width:3px;height:12px;background:#fff}.music-btn[aria-label="Previous track"] .icon:after{left:5px;width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:10px solid #fff}.music-btn[aria-label="Next track"] .icon:before{right:0;width:3px;height:12px;background:#fff}.music-btn[aria-label="Next track"] .icon:after{right:5px;width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:10px solid #fff}}
