.player-wrapper{position:relative;width:100%;aspect-ratio:16 / 9;background-color:#000;overflow:hidden;outline:none}.player-video{width:100%;height:100%;object-fit:contain;display:block}.player-play-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:10;transition:opacity var(--transition-base)}.player-play-overlay svg{width:64px;height:64px;filter:drop-shadow(0 2px 8px rgba(0,0,0,.3));transition:transform var(--transition-fast)}.player-play-overlay:hover svg{transform:scale(1.08)}.player-play-overlay.hidden{opacity:0;pointer-events:none}.player-loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:9;opacity:0;pointer-events:none;transition:opacity var(--transition-fast)}.player-loader.visible{opacity:1}.player-loader svg{width:44px;height:44px;animation:player-spin 1s linear infinite}@keyframes player-spin{to{transform:rotate(360deg)}}.player-error{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);z-index:11;opacity:0;pointer-events:none;transition:opacity var(--transition-base)}.player-error.visible{opacity:1;pointer-events:auto}.player-error-text{color:#ffffffd9;font-size:.9375rem;font-weight:var(--font-weight-medium)}.player-error-retry{color:#fff;border:1px solid rgba(255,255,255,.5);padding:var(--space-sm) var(--space-md);border-radius:4px;font-size:.8125rem;cursor:pointer;transition:border-color var(--transition-fast),background-color var(--transition-fast)}.player-error-retry:hover{border-color:#fff;background-color:#ffffff1a}.player-controls{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:#0000004d;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);opacity:0;transform:translateY(4px);transition:opacity var(--transition-base),transform var(--transition-base);z-index:12}.player-wrapper.controls-visible .player-controls{opacity:1;transform:translateY(0)}.player-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;color:#fff;cursor:pointer;flex-shrink:0;border-radius:4px;transition:background-color var(--transition-fast)}.player-btn:hover{background-color:#ffffff1a}.player-btn:focus-visible{outline:2px solid rgba(255,255,255,.8);outline-offset:2px}.player-btn svg{width:20px;height:20px;fill:currentColor}.player-progress{flex:1;height:4px;background:#fff3;border-radius:3px;cursor:pointer;position:relative;transition:height var(--transition-fast)}.player-progress:hover,.player-progress:active{height:6px}.player-progress-buffered{position:absolute;top:0;left:0;height:100%;background:#ffffff40;border-radius:3px;width:0%;pointer-events:none}.player-progress-bar{position:absolute;top:0;left:0;height:100%;background:#fff;border-radius:3px;width:0%;pointer-events:none}.player-progress-thumb{position:absolute;top:50%;left:0%;width:12px;height:12px;background:#fff;border-radius:50%;transform:translate(-50%,-50%) scale(0);transition:transform var(--transition-fast);pointer-events:none;box-shadow:0 1px 4px #0000004d}.player-progress:hover .player-progress-thumb{transform:translate(-50%,-50%) scale(1)}.player-progress:focus-visible{outline:2px solid rgba(255,255,255,.8);outline-offset:2px}.player-time{font-size:.75rem;color:#ffffffd9;font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}.player-volume{display:flex;align-items:center;gap:0}.player-volume-slider{width:0;opacity:0;transition:width var(--transition-base),opacity var(--transition-base);accent-color:#fff;cursor:pointer}.player-volume:hover .player-volume-slider{width:64px;opacity:1}.player-settings-wrapper{position:relative}.player-settings-menu{position:absolute;bottom:calc(100% + var(--space-sm));right:0;background:#000000bf;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:8px;padding:var(--space-sm);min-width:160px;z-index:20}.player-settings-group{padding:var(--space-xs) 0}.player-settings-group+.player-settings-group{border-top:1px solid rgba(255,255,255,.15)}.player-settings-label{display:block;font-size:.6875rem;color:#ffffff80;text-transform:uppercase;letter-spacing:.05em;padding:var(--space-xs) var(--space-sm)}.player-quality-options,.player-speed-options{display:flex;flex-wrap:wrap;gap:2px}.player-quality-opt,.player-speed-opt{padding:var(--space-xs) var(--space-sm);border-radius:4px;font-size:.75rem;color:#ffffffb3;cursor:pointer;transition:color var(--transition-fast),background-color var(--transition-fast)}.player-quality-opt:hover,.player-speed-opt:hover{color:#fff;background:#ffffff1a}.player-quality-opt.active,.player-speed-opt.active{color:#fff;background:#ffffff26}.cinema-mode{position:fixed;inset:0;z-index:200;background-color:var(--color-bg);display:flex;align-items:center;justify-content:center;animation:cinema-in var(--transition-slow) ease-out}.cinema-mode .player-wrapper{width:100%;max-width:1200px;max-height:80vh}.cinema-close{position:absolute;top:var(--space-md);right:var(--space-md);z-index:201;color:var(--color-text-primary);width:40px;height:40px;display:flex;align-items:center;justify-content:center}.cinema-close svg{width:24px;height:24px;stroke:currentColor;stroke-width:2;fill:none}@keyframes cinema-in{0%{opacity:0}to{opacity:1}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}@media(max-width:767px){.player-btn{width:44px;height:44px}.player-btn svg{width:22px;height:22px}.player-progress{height:6px}.player-play-overlay svg{width:56px;height:56px}.player-volume{display:none}.player-settings-menu{max-height:60vh;overflow-y:auto}.player-quality-opt{min-height:44px;min-width:48px;display:flex;align-items:center;justify-content:center}.player-time{font-size:.6875rem}}@media(hover:none){.player-volume{display:none}.player-progress-thumb{transform:translate(-50%,-50%) scale(1)}}@media(prefers-reduced-motion:reduce){.cinema-mode{animation:none}.player-loader svg{animation-duration:2s}.player-controls{transition:opacity var(--transition-fast);transform:none}}
