.header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;background:linear-gradient(135deg,#1a1a2e,#16213e);border-bottom:1px solid #0f3460}.header-title{margin:0;font-size:1.5rem;font-weight:600;color:#e94560}.header-settings-btn{background:transparent;border:2px solid #0f3460;color:#e94560;font-size:1.25rem;width:40px;height:40px;border-radius:8px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.header-settings-btn:hover{background:#0f3460;border-color:#e94560}.text-input-container{display:flex;flex-direction:column;gap:.5rem}.text-input{width:100%;padding:1rem;font-size:1rem;font-family:inherit;background:#16213e;border:2px solid #0f3460;border-radius:8px;color:#eee;resize:vertical;min-height:100px;transition:border-color .2s ease}.text-input:focus{outline:none;border-color:#e94560}.text-input:disabled{opacity:.6;cursor:not-allowed}.text-input--invalid{border-color:#ff6b6b}.text-input::placeholder{color:#666}.text-input-footer{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem}.char-count{font-size:.85rem;color:#666}.unsupported-warning{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.warning-text{font-size:.85rem;color:#ff6b6b}.sanitize-btn{background:transparent;border:1px solid #ff6b6b;color:#ff6b6b;padding:.25rem .5rem;font-size:.8rem;border-radius:4px;cursor:pointer;transition:all .2s ease}.sanitize-btn:hover{background:#ff6b6b;color:#1a1a2e}.morse-display-container{display:flex;flex-direction:column;gap:.5rem}.morse-display-header{display:flex;justify-content:space-between;align-items:center}.morse-label{font-size:.9rem;font-weight:600;color:#e94560}.morse-duration{font-size:.85rem;color:#666}.morse-display{background:#16213e;border:2px solid #0f3460;border-radius:8px;padding:1rem;min-height:80px;font-family:Courier New,Courier,monospace;font-size:1.5rem;letter-spacing:.2em;word-break:break-all;transition:border-color .2s ease}.morse-display--playing{border-color:#e94560;box-shadow:0 0 10px #e945604d}.morse-placeholder{color:#666;font-style:italic;font-size:1rem;letter-spacing:normal}.morse-code{color:#fff}.morse-legend{display:flex;gap:1.5rem;font-size:.85rem;color:#666}.legend-item{display:flex;align-items:center;gap:.25rem}.legend-symbol{font-family:Courier New,Courier,monospace;font-weight:700;color:#e94560;font-size:1rem}.playback-controls{display:flex;flex-direction:column;gap:1rem}.flashlight-warning{background:#ffc1071a;border:1px solid #ffc107;border-radius:6px;padding:.75rem;font-size:.85rem;color:#ffc107;text-align:center}.progress-container{height:8px;background:#16213e;border-radius:4px;overflow:hidden}.progress-bar{height:100%;background:linear-gradient(90deg,#e94560,#ff6b9d);border-radius:4px;transition:width .1s ease}.controls-buttons{display:flex;gap:1rem;justify-content:center}.control-btn{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;transition:all .2s ease;min-width:120px;justify-content:center}.control-btn:disabled{opacity:.5;cursor:not-allowed}.btn-icon{font-size:1.2rem}.control-btn--play{background:linear-gradient(135deg,#e94560,#ff6b9d);color:#fff}.control-btn--play:hover:not(:disabled){transform:scale(1.05);box-shadow:0 4px 15px #e9456066}.control-btn--pause{background:#ffc107;color:#1a1a2e}.control-btn--pause:hover{transform:scale(1.05);box-shadow:0 4px 15px #ffc10766}.control-btn--resume{background:linear-gradient(135deg,#28a745,#34d058);color:#fff}.control-btn--resume:hover{transform:scale(1.05);box-shadow:0 4px 15px #28a74566}.control-btn--stop{background:#dc3545;color:#fff}.control-btn--stop:hover{transform:scale(1.05);box-shadow:0 4px 15px #dc354566}.settings-panel{background:#1a1a2e;border:1px solid #0f3460;border-radius:12px;overflow:hidden;margin-bottom:1rem}.settings-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;background:#16213e;border-bottom:1px solid #0f3460}.settings-title{margin:0;font-size:1.1rem;font-weight:600;color:#e94560}.settings-close-btn{background:transparent;border:none;color:#666;font-size:1.25rem;cursor:pointer;padding:.25rem;transition:color .2s ease}.settings-close-btn:hover{color:#e94560}.settings-content{padding:1.5rem}.setting-group{margin-bottom:1.5rem}.setting-label{display:block;font-weight:600;margin-bottom:.5rem;color:#eee}.setting-input-group{display:flex;align-items:center;gap:1rem}.setting-slider{flex:1;height:6px;-webkit-appearance:none;appearance:none;background:#0f3460;border-radius:3px;outline:none}.setting-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;background:#e94560;border-radius:50%;cursor:pointer;transition:transform .2s ease}.setting-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.setting-slider::-moz-range-thumb{width:18px;height:18px;background:#e94560;border-radius:50%;cursor:pointer;border:none}.setting-number{width:80px;padding:.5rem;background:#16213e;border:1px solid #0f3460;border-radius:6px;color:#eee;font-size:1rem;text-align:center}.setting-number:focus{outline:none;border-color:#e94560}.setting-unit{color:#666;font-size:.9rem}.setting-description{margin-top:.5rem;font-size:.85rem;color:#666}.derived-timings{background:#16213e;border-radius:8px;padding:1rem;margin-bottom:1.5rem}.derived-title{margin:0 0 .75rem;font-size:.9rem;font-weight:600;color:#888}.timing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem}.timing-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem;background:#1a1a2e;border-radius:4px}.timing-label{font-size:.85rem;color:#888}.timing-value{font-family:Courier New,monospace;font-weight:600;color:#e94560}.settings-actions{display:flex;justify-content:flex-end}.reset-btn{background:transparent;border:1px solid #666;color:#888;padding:.5rem 1rem;font-size:.9rem;border-radius:6px;cursor:pointer;transition:all .2s ease}.reset-btn:hover{border-color:#e94560;color:#e94560}.flashlight-indicator{display:flex;align-items:center;gap:1rem;padding:1rem;background:#16213e;border-radius:8px;border:1px solid #0f3460}.indicator-light{position:relative;width:48px;height:48px;border-radius:50%;background:#0f3460;display:flex;align-items:center;justify-content:center;transition:all .15s ease}.indicator-glow{position:absolute;inset:-8px;border-radius:50%;background:radial-gradient(circle,#ffdc6400 0% 100%);transition:all .15s ease;pointer-events:none}.indicator-light--on .indicator-glow{background:radial-gradient(circle,#ffdc6499,#ffdc6400 70%)}.indicator-bulb{width:24px;height:24px;border-radius:50%;background:#333;border:2px solid #444;transition:all .15s ease}.indicator-light--on .indicator-bulb{background:#fffde7;border-color:#fff59d;box-shadow:0 0 20px #fffde7cc}.indicator-status{flex:1}.status-text{font-size:.95rem;color:#888;transition:color .15s ease}.status-text--on{color:#fffde7;font-weight:600}.status-error{font-size:.9rem;color:#ff6b6b}.status-unavailable{font-size:.9rem;color:#ffc107}.permission-btn{background:transparent;border:1px solid #ffc107;color:#ffc107;padding:.25rem .5rem;font-size:.85rem;border-radius:4px;cursor:pointer;margin-left:.5rem;transition:all .2s ease}.permission-btn:hover{background:#ffc107;color:#1a1a2e}#root{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(prefers-reduced-motion:no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0;box-sizing:border-box}html,body{min-height:100vh}body{background-color:#0f0f1a;color:#eee}#root{min-height:100vh}
