:root{--primary-color: #007bff;--primary-dark: #0056b3;--background-color: #1a1a1a;--surface-color: #2d2d2d;--text-color: #ffffff;--text-secondary: #b3b3b3;--border-color: #404040;--success-color: #28a745;--warning-color: #ffc107;--error-color: #dc3545;--header-height: 64px;--nav-height: 56px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--touch-target: 44px;--border-radius: 8px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:var(--background-color);color:var(--text-color);line-height:1.6;font-size:16px;overflow-x:hidden}#app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{background-color:var(--surface-color);border-bottom:1px solid var(--border-color);padding:var(--spacing-md);position:sticky;top:0;z-index:100}.app-header h1{font-size:1.5rem;margin-bottom:var(--spacing-sm);text-align:center}.main-nav{display:flex;gap:var(--spacing-xs);justify-content:center}.nav-btn{background:transparent;border:1px solid var(--border-color);color:var(--text-secondary);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius);cursor:pointer;font-size:.9rem;min-height:var(--touch-target);transition:all .2s ease;flex:1;max-width:120px}.nav-btn:hover,.nav-btn.active{background-color:var(--primary-color);color:var(--text-color);border-color:var(--primary-color)}.main-content{flex:1;padding:var(--spacing-lg);padding-bottom:calc(var(--spacing-lg) + 80px);overflow-y:auto}.view{display:none}.view.active{display:block}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg);flex-wrap:wrap;gap:var(--spacing-md)}.section-header h2{font-size:1.25rem;color:var(--text-color)}.btn-primary{background-color:var(--primary-color);color:var(--text-color);border:none;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius);cursor:pointer;font-size:.9rem;min-height:var(--touch-target);transition:background-color .2s ease;touch-action:manipulation}.btn-primary:hover{background-color:var(--primary-dark)}.btn-primary:active{transform:translateY(1px)}.subscriptions-list,.playlists-list{display:grid;gap:var(--spacing-md)}.empty-state{text-align:center;padding:var(--spacing-xl);color:var(--text-secondary);background-color:var(--surface-color);border-radius:var(--border-radius);border:1px dashed var(--border-color)}.player-container{background-color:var(--surface-color);border-radius:var(--border-radius);padding:var(--spacing-lg);border:1px solid var(--border-color)}.player-placeholder{text-align:center;color:var(--text-secondary);padding:var(--spacing-xl)}.loading-overlay{position:fixed;inset:0;background-color:#1a1a1ae6;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:1000}.loading-overlay.hidden{display:none}.loading-spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top:3px solid var(--primary-color);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:var(--spacing-md)}.offline-indicator{position:fixed;top:0;left:0;right:0;background-color:var(--warning-color);color:var(--background-color);text-align:center;padding:var(--spacing-sm);font-weight:600;z-index:1001}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (min-width: 768px){.main-nav{max-width:400px;margin:0 auto}.main-content{max-width:800px;margin:0 auto;padding:var(--spacing-lg)}.section-header{flex-wrap:nowrap}}@media (min-width: 1024px){.main-content{max-width:1000px;padding:var(--spacing-xl)}.subscriptions-list,.playlists-list{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}}@media (hover: none) and (pointer: coarse){.nav-btn:hover{background:transparent;color:var(--text-secondary);border-color:var(--border-color)}.nav-btn.active:hover{background-color:var(--primary-color);color:var(--text-color);border-color:var(--primary-color)}.btn-primary:hover{background-color:var(--primary-color)}}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.nav-btn:focus,.btn-primary:focus{outline:2px solid var(--primary-color);outline-offset:2px}.add-subscription-form{background-color:var(--surface-color);border:1px solid var(--border-color);border-radius:var(--border-radius);padding:var(--spacing-lg);margin-bottom:var(--spacing-lg)}.add-subscription-form h3{margin-bottom:var(--spacing-md);color:var(--text-color)}.form-group{margin-bottom:var(--spacing-md)}.form-group label{display:block;margin-bottom:var(--spacing-sm);color:var(--text-color);font-weight:500}.form-group input{width:100%;padding:var(--spacing-sm) var(--spacing-md);background-color:var(--background-color);border:1px solid var(--border-color);border-radius:var(--border-radius);color:var(--text-color);font-size:1rem;min-height:var(--touch-target)}.form-group input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 2px #007bff40}.form-group input:disabled{opacity:.6;cursor:not-allowed}.form-actions{display:flex;gap:var(--spacing-md);flex-wrap:wrap}.btn-secondary{background-color:transparent;color:var(--text-secondary);border:1px solid var(--border-color);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius);cursor:pointer;font-size:.9rem;min-height:var(--touch-target);transition:all .2s ease;touch-action:manipulation}.btn-secondary:hover{background-color:var(--surface-color);border-color:var(--text-secondary)}.btn-danger{background-color:var(--error-color);color:var(--text-color);border:none;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius);cursor:pointer;font-size:.85rem;min-height:var(--touch-target);transition:background-color .2s ease;touch-action:manipulation}.btn-danger:hover{background-color:#c82333}.subscription-grid{display:grid;gap:var(--spacing-md);grid-template-columns:1fr}.subscription-card{background-color:var(--surface-color);border:1px solid var(--border-color);border-radius:var(--border-radius);padding:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-md)}.subscription-info{flex:1}.subscription-title{font-size:1.1rem;font-weight:600;margin-bottom:var(--spacing-sm);color:var(--text-color);line-height:1.4}.subscription-description{color:var(--text-secondary);margin-bottom:var(--spacing-sm);line-height:1.5}.subscription-url{font-size:.85rem;color:var(--primary-color);margin-bottom:var(--spacing-sm);word-break:break-all}.subscription-meta{font-size:.8rem;color:var(--text-secondary)}.subscription-actions{display:flex;justify-content:flex-end;gap:var(--spacing-sm)}.help-text{font-size:.9rem;color:var(--text-secondary);margin-top:var(--spacing-sm)}.help-text code{background-color:var(--border-color);color:var(--primary-color);padding:2px 4px;border-radius:3px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.85em}.help-text small{display:block;margin-top:var(--spacing-xs);font-size:.8rem;color:var(--text-secondary);opacity:.8}@media (min-width: 768px){.subscription-grid{grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}.form-actions{flex-wrap:nowrap}}@media (min-width: 1024px){.subscription-grid{grid-template-columns:repeat(auto-fill,minmax(400px,1fr))}}.episodes-list{margin-top:var(--spacing-lg)}.episodes-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg)}.episodes-header h3{color:var(--text-color);font-size:1.2rem}.loading-text{color:var(--text-secondary);font-size:.9rem}.episode-grid{display:grid;gap:var(--spacing-md);grid-template-columns:1fr}.episode-card{background-color:var(--surface-color);border:1px solid var(--border-color);border-radius:var(--border-radius);padding:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-md)}.episode-card.compact{padding:var(--spacing-md);flex-direction:row;align-items:center}.episode-info{flex:1}.episode-title{font-size:1rem;font-weight:600;margin-bottom:var(--spacing-sm);color:var(--text-color);line-height:1.4}.episode-card.compact .episode-title{font-size:.9rem;margin-bottom:var(--spacing-xs)}.episode-description{color:var(--text-secondary);margin-bottom:var(--spacing-sm);line-height:1.5}.episode-meta{display:flex;gap:var(--spacing-md);align-items:center;font-size:.85rem;color:var(--text-secondary)}.episode-date{color:var(--text-secondary)}.episode-duration{background-color:var(--border-color);color:var(--text-color);padding:2px 6px;border-radius:4px;font-size:.8rem}.episode-actions{display:flex;gap:var(--spacing-sm);justify-content:flex-end}.player-active{display:flex;flex-direction:column;gap:var(--spacing-lg)}.player-info{text-align:center}.player-info h3{font-size:1.3rem;margin-bottom:var(--spacing-md);color:var(--text-color)}.player-info .episode-description{text-align:left}.player-controls{display:flex;flex-direction:column;gap:var(--spacing-lg)}.main-controls{display:flex;justify-content:center;align-items:center;gap:var(--spacing-lg)}.play-pause-btn{background-color:var(--primary-color);color:var(--text-color);border:none;border-radius:50%;width:60px;height:60px;font-size:1.5rem;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.play-pause-btn:hover{background-color:var(--primary-dark);transform:scale(1.05)}.skip-btn{background-color:var(--surface-color);color:var(--text-color);border:1px solid var(--border-color);border-radius:var(--border-radius);padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;font-size:.85rem;transition:all .2s ease}.skip-btn:hover{background-color:var(--border-color)}.progress-controls{display:flex;align-items:center;gap:var(--spacing-md)}.progress-bar{flex:1;height:6px;background:var(--border-color);border-radius:3px;outline:none;cursor:pointer;-webkit-appearance:none;appearance:none}.progress-bar::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;background:var(--primary-color);border-radius:50%;cursor:pointer}.progress-bar::-moz-range-thumb{width:16px;height:16px;background:var(--primary-color);border-radius:50%;cursor:pointer;border:none}.time-display{font-size:.85rem;color:var(--text-secondary);min-width:45px;text-align:center}.secondary-controls{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-lg)}.volume-control{display:flex;align-items:center;gap:var(--spacing-sm)}.volume-control button{background:none;border:none;color:var(--text-color);cursor:pointer;font-size:1.2rem}.volume-slider{width:80px;height:4px;background:var(--border-color);border-radius:2px;outline:none;cursor:pointer;-webkit-appearance:none;appearance:none}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;background:var(--primary-color);border-radius:50%;cursor:pointer}.volume-slider::-moz-range-thumb{width:12px;height:12px;background:var(--primary-color);border-radius:50%;cursor:pointer;border:none}.playback-speed{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xs)}.playback-speed label{font-size:.85rem;color:var(--text-secondary)}.playback-speed input{width:80px}.episode-actions{display:flex;justify-content:center;gap:var(--spacing-md);margin-top:var(--spacing-md)}.playlist-grid{display:grid;gap:var(--spacing-md);grid-template-columns:1fr}.playlist-card{background-color:var(--surface-color);border:1px solid var(--border-color);border-radius:var(--border-radius);padding:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-md)}.playlist-info{flex:1}.playlist-name{font-size:1.1rem;font-weight:600;margin-bottom:var(--spacing-sm);color:var(--text-color)}.playlist-meta{color:var(--text-secondary);font-size:.9rem;margin-bottom:var(--spacing-xs)}.playlist-date{color:var(--text-secondary);font-size:.8rem}.playlist-actions{display:flex;gap:var(--spacing-sm);justify-content:flex-end}.playlist-details{margin-top:var(--spacing-lg)}.playlist-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg)}.playlist-header h3{color:var(--text-color);font-size:1.3rem}.playlist-episodes{margin-bottom:var(--spacing-xl)}.add-episodes-section{background-color:var(--surface-color);border:1px solid var(--border-color);border-radius:var(--border-radius);padding:var(--spacing-lg)}.add-episodes-section h4{color:var(--text-color);margin-bottom:var(--spacing-md)}.available-episodes{display:flex;flex-direction:column;gap:var(--spacing-sm);max-height:400px;overflow-y:auto}@media (min-width: 768px){.episode-grid{grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}.playlist-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.player-controls{max-width:600px;margin:0 auto}.secondary-controls{flex-direction:row;justify-content:space-between}}@media (min-width: 1024px){.episode-grid{grid-template-columns:repeat(auto-fill,minmax(400px,1fr))}.playlist-grid{grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}}@media (max-width: 480px){.main-controls{gap:var(--spacing-md)}.play-pause-btn{width:50px;height:50px;font-size:1.2rem}.secondary-controls{flex-direction:column;gap:var(--spacing-md)}.volume-control,.playback-speed{width:100%;justify-content:center}}.episode-card:focus-within,.playlist-card:focus-within,.subscription-card:focus-within{outline:2px solid var(--primary-color);outline-offset:2px}audio{display:none}.btn-success{background-color:var(--success-color);color:#fff;border:1px solid var(--success-color);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius);cursor:pointer;min-height:var(--touch-target);transition:all .2s ease;font-size:.9rem}.btn-success:hover{background-color:#218838;border-color:#218838}.download-progress{display:flex;align-items:center;gap:var(--spacing-sm);margin-top:var(--spacing-xs)}.progress-bar{flex:1;height:8px;background-color:var(--border-color);border-radius:4px;overflow:hidden;position:relative}.progress-fill{height:100%;background-color:var(--primary-color);transition:width .3s ease;border-radius:4px}.progress-text{font-size:.8rem;color:var(--text-secondary);min-width:40px;text-align:right}.episode-actions{display:flex;gap:var(--spacing-sm);justify-content:flex-end;flex-wrap:wrap}.episode-actions button{font-size:.85rem;padding:var(--spacing-xs) var(--spacing-sm);min-height:36px}.offline-badge{background-color:var(--success-color);color:#fff;padding:2px 6px;border-radius:4px;font-size:.75rem;margin-left:var(--spacing-xs)}.download-status{font-size:.8rem;padding:2px 6px;border-radius:4px;margin-left:var(--spacing-xs)}.download-status.downloaded{background-color:var(--success-color);color:#fff}.download-status.downloading{background-color:var(--warning-color);color:#000}.download-status.error{background-color:var(--error-color);color:#fff}.floating-player{position:fixed;bottom:0;left:0;right:0;background-color:var(--surface-color);border-top:1px solid var(--border-color);z-index:1000;cursor:pointer;transition:all .3s ease;transform:translateY(100%)}.floating-player.playing{transform:translateY(0)}.floating-player-progress{position:absolute;top:0;left:0;right:0;height:3px;background-color:var(--border-color)}.floating-player-progress .progress-fill{height:100%;background-color:var(--primary-color);transition:width .3s ease}.floating-player-content{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md);gap:var(--spacing-md)}.floating-player-info{flex:1;min-width:0}.floating-player-info .episode-title{font-weight:600;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}.floating-player-info .episode-time{font-size:.8rem;color:var(--text-secondary)}.floating-player-controls{display:flex;gap:var(--spacing-sm);align-items:center}.play-pause-btn-mini{background:var(--primary-color);border:none;color:#fff;width:40px;height:40px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1rem;transition:all .2s ease}.play-pause-btn-mini:hover{background:var(--primary-dark);transform:scale(1.05)}.expand-btn{background:transparent;border:1px solid var(--border-color);color:var(--text-secondary);width:36px;height:36px;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.9rem;transition:all .2s ease}.expand-btn:hover{background:var(--border-color);color:var(--text-color)}.episode-details-overlay{position:fixed;inset:0;background-color:#000c;z-index:2000;display:flex;align-items:center;justify-content:center;padding:var(--spacing-md)}.episode-details-modal{background-color:var(--surface-color);border-radius:var(--border-radius);max-width:600px;width:100%;max-height:80vh;overflow-y:auto;border:1px solid var(--border-color)}.episode-details-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-lg);border-bottom:1px solid var(--border-color)}.episode-details-header h3{margin:0;font-size:1.2rem;flex:1;margin-right:var(--spacing-md)}.close-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:1.2rem;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.close-btn:hover{background-color:var(--border-color);color:var(--text-color)}.episode-details-content{padding:var(--spacing-lg)}.episode-meta{display:flex;gap:var(--spacing-md);margin-bottom:var(--spacing-lg);flex-wrap:wrap;align-items:center}.episode-meta>div{font-size:.9rem;color:var(--text-secondary)}.episode-description h4{margin-bottom:var(--spacing-md);color:var(--text-color)}.description-text{line-height:1.6;color:var(--text-secondary);max-height:300px;overflow-y:auto;padding-right:var(--spacing-sm)}.episode-details-actions{display:flex;gap:var(--spacing-md);margin-top:var(--spacing-lg);justify-content:flex-end}@media (max-width: 768px){.floating-player-content{padding:var(--spacing-sm) var(--spacing-md)}.floating-player-info .episode-title{font-size:.85rem}.floating-player-info .episode-time{font-size:.75rem}.play-pause-btn-mini{width:36px;height:36px;font-size:.9rem}.expand-btn{width:32px;height:32px;font-size:.8rem}.episode-details-modal{margin:var(--spacing-md);max-height:90vh}.episode-details-header,.episode-details-content{padding:var(--spacing-md)}.episode-meta{flex-direction:column;align-items:flex-start;gap:var(--spacing-sm)}}
