diff --git a/src/components/ControlsLayer.css b/src/components/ControlsLayer.css index 8203462..f579e63 100644 --- a/src/components/ControlsLayer.css +++ b/src/components/ControlsLayer.css @@ -1,8 +1,3 @@ -/* ============================================ - CONTROLS LAYER - Modern, Clean & Minimal Design - ============================================ */ - .controls-layer { position: absolute; inset: 0; @@ -10,91 +5,85 @@ display: flex; flex-direction: column; justify-content: flex-end; - cursor: default; pointer-events: auto; + cursor: default; opacity: 1; transition: opacity var(--player-transition-normal) ease; } -/* Visible state */ -.controls-layer.visible { +.controls-layer::before { + content: ''; + position: absolute; + inset: auto 0 0; + height: 55%; + background: linear-gradient( + to bottom, + transparent 0%, + rgba(0, 0, 0, 0.3) 35%, + var(--player-overlay-strong) 100% + ); opacity: 1; + transition: opacity var(--player-transition-normal) ease; + pointer-events: none; +} + +.controls-layer > * { + position: relative; + z-index: 1; } -/* Hidden state */ .controls-layer.hidden.playing { opacity: 0; } -/* Hide cursor in fullscreen */ +.controls-layer.hidden.playing::before { + opacity: 0; +} + .controls-layer.fullscreen.hidden.playing { cursor: none; } -/* ============================================ - CONTROLS BAR - ============================================ */ - .controls-bar { display: flex; flex-direction: column; - padding: var(--player-spacing-xl) var(--player-spacing-lg) var(--player-spacing-lg); - background: linear-gradient( - to top, - var(--player-bg-controls) 0%, - var(--player-bg-controls) 50%, - transparent 100% - ); - transform: translateY(0); - transition: transform var(--player-transition-normal) ease; + gap: var(--player-spacing-sm); + padding: var(--player-spacing-lg) var(--player-spacing-lg) var(--player-spacing-md); pointer-events: auto; + transition: transform var(--player-transition-normal) ease; } -/* Slide controls down when hidden */ .controls-layer.hidden.playing .controls-bar { - transform: translateY(100%); + transform: translateY(12px); pointer-events: none; } -/* ============================================ - PROGRESS CONTAINER - ============================================ */ - .progress-container { - margin-bottom: var(--player-spacing-md); + margin-bottom: var(--player-spacing-xs); } -/* ============================================ - CONTROLS ROW - ============================================ */ - .controls-row { display: flex; align-items: center; - justify-content: space-between; gap: var(--player-spacing-sm); + flex-wrap: wrap; } -.controls-left { +.controls-left, +.controls-right { display: flex; align-items: center; gap: var(--player-spacing-sm); } .controls-right { - display: flex; - align-items: center; - gap: var(--player-spacing-sm); margin-left: auto; } -/* ============================================ - RESPONSIVE - ============================================ */ - @media (max-width: 640px) { .controls-bar { - padding: var(--player-spacing-lg) var(--player-spacing-md) var(--player-spacing-md); + padding: var(--player-spacing-md) var(--player-spacing-md) var(--player-spacing-sm); + gap: var(--player-spacing-sm); } .controls-row { diff --git a/src/components/VideoElement.css b/src/components/VideoElement.css index a1f3a82..91fee03 100644 --- a/src/components/VideoElement.css +++ b/src/components/VideoElement.css @@ -1,14 +1,8 @@ -/* ============================================ - VIDEO ELEMENT - Modern & Clean Design - ============================================ */ - .video-container { position: relative; width: 100%; height: 100%; z-index: var(--player-z-video); - overflow: visible; pointer-events: none; } @@ -18,12 +12,9 @@ display: block; object-fit: contain; pointer-events: auto; + background-color: #000; } -/* ============================================ - HIDE NATIVE CONTROLS - ============================================ */ - .video-element::-webkit-media-controls, .video-element::-webkit-media-controls-enclosure, .video-element::-webkit-media-controls-panel { @@ -34,106 +25,79 @@ display: none !important; } -/* ============================================ - SUBTITLE STYLING - Clean & Modern - Cross-browser compatible - ============================================ */ - -/* Base subtitle appearance */ -::cue { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif !important; - font-size: 1.4rem !important; - font-weight: 600 !important; - line-height: 1.4 !important; - color: #ffffff !important; - background-color: rgba(0, 0, 0, 0.85) !important; - padding: 0.3em 0.65em !important; - border-radius: 4px !important; - text-shadow: 0 1px 3px rgba(0, 0, 0, 0.8) !important; - white-space: pre-line !important; -} - +::cue, .video-element::cue { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif !important; - font-size: 1.4rem !important; - font-weight: 600 !important; - line-height: 1.4 !important; + font-family: 'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', + 'Roboto', 'Helvetica Neue', Arial, sans-serif !important; + font-size: 1.28rem !important; + font-weight: 500 !important; + line-height: 1.45 !important; + letter-spacing: 0.01em !important; color: #ffffff !important; - background-color: rgba(0, 0, 0, 0.85) !important; - padding: 0.3em 0.65em !important; - border-radius: 4px !important; - text-shadow: 0 1px 3px rgba(0, 0, 0, 0.8) !important; + background-color: rgba(15, 15, 15, 0.78) !important; + padding: 0.35em 0.75em !important; + border-radius: var(--player-radius-sm) !important; + text-shadow: none !important; white-space: pre-line !important; } -/* Firefox specific */ ::-moz-cue, -video::-moz-cue, .video-element::-moz-cue { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif !important; - font-size: 1.4rem !important; - font-weight: 600 !important; - line-height: 1.4 !important; + font-family: 'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', + 'Roboto', 'Helvetica Neue', Arial, sans-serif !important; + font-size: 1.28rem !important; + font-weight: 500 !important; + line-height: 1.45 !important; + letter-spacing: 0.01em !important; color: #ffffff !important; - background-color: rgba(0, 0, 0, 0.85) !important; - padding: 0.3em 0.65em !important; - border-radius: 4px !important; - text-shadow: 0 1px 3px rgba(0, 0, 0, 0.8) !important; + background-color: rgba(15, 15, 15, 0.78) !important; + padding: 0.35em 0.75em !important; + border-radius: var(--player-radius-sm) !important; + text-shadow: none !important; white-space: pre-line !important; } -/* Text formatting */ -::cue(b), ::cue(strong), -.video-element::cue(b), .video-element::cue(strong) { +::cue(b), +::cue(strong), +.video-element::cue(b), +.video-element::cue(strong), +::-moz-cue(b), +::-moz-cue(strong) { font-weight: 700 !important; } -::cue(i), ::cue(em), -.video-element::cue(i), .video-element::cue(em) { +::cue(i), +::cue(em), +.video-element::cue(i), +.video-element::cue(em), +::-moz-cue(i), +::-moz-cue(em) { font-style: italic !important; } ::cue(u), -.video-element::cue(u) { - text-decoration: underline !important; -} - -::-moz-cue(b), ::-moz-cue(strong) { - font-weight: 700 !important; -} - -::-moz-cue(i), ::-moz-cue(em) { - font-style: italic !important; -} - +.video-element::cue(u), ::-moz-cue(u) { text-decoration: underline !important; } -/* ============================================ - SUBTITLE POSITIONING - Chromium - ============================================ */ - .video-element::-webkit-media-text-track-container { position: absolute !important; - bottom: var(--player-subtitle-bottom) !important; left: 0 !important; right: 0 !important; + bottom: var(--player-subtitle-bottom) !important; width: 100% !important; - height: auto !important; display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important; - padding: 0 16px !important; + padding: 0 18px !important; margin: 0 !important; - overflow: visible !important; - z-index: 10 !important; + z-index: var(--player-z-subtitle) !important; pointer-events: none !important; - transition: bottom 0.2s ease !important; + transition: bottom var(--player-transition-fast) ease !important; } -/* When controls are hidden, move subtitles down */ .video-player.controls-hidden .video-element::-webkit-media-text-track-container { bottom: var(--player-subtitle-bottom-hidden) !important; } @@ -150,119 +114,35 @@ video::-moz-cue, text-align: center !important; } -/* ============================================ - SUBTITLE POSITIONING - Firefox - ============================================ */ - video::-moz-text-track-display, .video-element::-moz-text-track-display { position: absolute !important; - bottom: var(--player-subtitle-bottom) !important; left: 0 !important; right: 0 !important; + bottom: var(--player-subtitle-bottom) !important; width: 100% !important; display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important; - padding: 0 16px !important; + padding: 0 18px !important; margin: 0 !important; text-align: center !important; - z-index: 10 !important; + z-index: var(--player-z-subtitle) !important; pointer-events: none !important; - transition: bottom 0.2s ease !important; + transition: bottom var(--player-transition-fast) ease !important; } -/* When controls are hidden, move subtitles down */ .video-player.controls-hidden video::-moz-text-track-display, .video-player.controls-hidden .video-element::-moz-text-track-display { bottom: var(--player-subtitle-bottom-hidden) !important; } -/* ============================================ - FULLSCREEN - ============================================ */ - .video-element:fullscreen::cue, -:fullscreen .video-element::cue { - font-size: 1.8rem !important; - padding: 0.4em 0.8em !important; -} - +:fullscreen .video-element::cue, ::-moz-cue:fullscreen, video:fullscreen::-moz-cue, -.video-element:fullscreen::-moz-cue, -:fullscreen ::-moz-cue, -:fullscreen video::-moz-cue, -:fullscreen .video-element::-moz-cue { - font-size: 1.8rem !important; - padding: 0.4em 0.8em !important; -} - -.video-element:fullscreen::-webkit-media-text-track-container, -:fullscreen .video-element::-webkit-media-text-track-container { - bottom: calc(var(--player-subtitle-bottom) + 20px) !important; -} - -video:fullscreen::-moz-text-track-display, -.video-element:fullscreen::-moz-text-track-display, -:fullscreen video::-moz-text-track-display, -:fullscreen .video-element::-moz-text-track-display { - bottom: calc(var(--player-subtitle-bottom) + 20px) !important; -} - -/* ============================================ - RESPONSIVE - ============================================ */ - -@media (max-width: 768px) { - ::cue, - .video-element::cue, - ::-moz-cue, - video::-moz-cue, - .video-element::-moz-cue { - font-size: 1.25rem !important; - } - - .video-player { - --player-subtitle-bottom: 85px; - } -} - -@media (max-width: 640px) { - ::cue, - .video-element::cue, - ::-moz-cue, - video::-moz-cue, - .video-element::-moz-cue { - font-size: 1.1rem !important; - padding: 0.25em 0.55em !important; - } - - .video-player { - --player-subtitle-bottom: 75px; - } - - .video-element::-webkit-media-text-track-container { - padding: 0 12px !important; - } - - video::-moz-text-track-display, - .video-element::-moz-text-track-display { - padding: 0 12px !important; - } -} - -@media (max-width: 375px) { - ::cue, - .video-element::cue, - ::-moz-cue, - video::-moz-cue, - .video-element::-moz-cue { - font-size: 1rem !important; - } - - .video-player { - --player-subtitle-bottom: 65px; - } +:fullscreen ::-moz-cue { + font-size: 1.6rem !important; + padding: 0.4em 0.85em !important; } diff --git a/src/components/VideoPlayer.css b/src/components/VideoPlayer.css index 276e33f..c0511ab 100644 --- a/src/components/VideoPlayer.css +++ b/src/components/VideoPlayer.css @@ -1,50 +1,28 @@ -/* ============================================ - VIDEO PLAYER - Main Container - Modern, Clean & Minimal Design - ============================================ */ - .video-player { - /* Positioning */ position: relative; + display: block; width: 100%; max-width: 100%; - - /* Appearance */ - background-color: var(--player-bg); + background: var(--player-bg); border-radius: var(--player-radius); overflow: hidden; - - /* Typography */ - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif; + color: var(--player-text); + font-family: 'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', + 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - - /* Interaction */ user-select: none; -webkit-user-select: none; - - /* Isolation for library usage */ - contain: layout style paint; + isolation: isolate; + transition: border-radius var(--player-transition-normal) ease; } -/* Box model consistency */ .video-player *, .video-player *::before, .video-player *::after { box-sizing: border-box; - margin: 0; - padding: 0; } -/* Preserve video native rendering */ -.video-player video { - box-sizing: content-box; -} - -/* ============================================ - ASPECT RATIO - 16:9 - ============================================ */ - .video-player::before { content: ''; display: block; @@ -53,42 +31,30 @@ .video-player > * { position: absolute; - top: 0; - left: 0; + inset: 0; +} + +.video-player video { + display: block; width: 100%; height: 100%; } -/* ============================================ - FULLSCREEN - Remove border radius - ============================================ */ - .video-player:fullscreen, .video-player:-webkit-full-screen, .video-player:-moz-full-screen, -.video-player:-ms-fullscreen { - width: 100vw; - height: 100vh; +.video-player:-ms-fullscreen, +:fullscreen .video-player, +:-webkit-full-screen .video-player { border-radius: 0; } -/* ============================================ - HIDE NATIVE CONTROLS - ============================================ */ - -.video-player video::-webkit-media-controls { - display: none !important; -} - -.video-player video::-webkit-media-controls-enclosure { - display: none !important; -} - +.video-player video::-webkit-media-controls, +.video-player video::-webkit-media-controls-enclosure, .video-player video::-webkit-media-controls-panel { display: none !important; } -/* Keep subtitles visible */ .video-player video::-webkit-media-text-track-container, .video-player video::-webkit-media-text-track-display { display: block !important; diff --git a/src/components/controls/CenterPlayButton.css b/src/components/controls/CenterPlayButton.css index 9453809..d39489d 100644 --- a/src/components/controls/CenterPlayButton.css +++ b/src/components/controls/CenterPlayButton.css @@ -1,14 +1,6 @@ -/* ============================================ - CENTER PLAY BUTTON - Clean & Modern Design - ============================================ */ - .center-play-overlay { position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; + inset: 0; display: flex; align-items: center; justify-content: center; @@ -17,48 +9,49 @@ } .center-play-button { - width: 72px; - height: 72px; - border-radius: 50%; + width: 68px; + height: 68px; + border-radius: 18px; background-color: var(--player-primary); border: none; - cursor: pointer; + color: var(--player-text); display: flex; align-items: center; justify-content: center; - transition: all var(--player-transition-normal) ease; + cursor: pointer; + transition: background-color var(--player-transition-fast) ease, + color var(--player-transition-fast) ease; pointer-events: all; - outline: none; } .center-play-button:hover { background-color: var(--player-primary-hover); - transform: scale(1.1); } .center-play-button:active { - transform: scale(1); + background-color: var(--player-primary-active); } .center-play-button:focus-visible { - outline: 2px solid var(--player-primary); + outline: 2px solid var(--player-text); outline-offset: 4px; } .center-play-button svg { - width: 36px; - height: 36px; - margin-left: 3px; + width: 34px; + height: 34px; + margin-left: 2px; } @media (max-width: 640px) { .center-play-button { - width: 60px; - height: 60px; + width: 58px; + height: 58px; + border-radius: 16px; } .center-play-button svg { - width: 30px; - height: 30px; + width: 28px; + height: 28px; } } diff --git a/src/components/controls/ControlButton.css b/src/components/controls/ControlButton.css index d54e147..56b7cd0 100644 --- a/src/components/controls/ControlButton.css +++ b/src/components/controls/ControlButton.css @@ -1,30 +1,26 @@ -/* ============================================ - CONTROL BUTTON - Clean & Modern Design - ============================================ */ - .control-button { - background: none; + appearance: none; + background: transparent; border: none; color: var(--player-text); - cursor: pointer; - padding: var(--player-spacing-sm); + padding: var(--player-spacing-xs); display: inline-flex; align-items: center; justify-content: center; border-radius: var(--player-radius-sm); - transition: all var(--player-transition-fast) ease; - position: relative; - outline: none; + transition: color var(--player-transition-fast) ease, + background-color var(--player-transition-fast) ease, + opacity var(--player-transition-fast) ease; + cursor: pointer; } -.control-button:hover { - background-color: rgba(255, 255, 255, 0.1); - transform: scale(1.05); +.control-button:hover:not(:disabled) { + color: var(--player-primary); + background-color: rgba(255, 255, 255, 0.08); } -.control-button:active { - transform: scale(0.95); +.control-button:active:not(:disabled) { + color: var(--player-primary-active); } .control-button:focus-visible { @@ -33,15 +29,10 @@ } .control-button:disabled { - opacity: 0.4; + opacity: 0.45; cursor: not-allowed; } -.control-button:disabled:hover { - background-color: transparent; - transform: none; -} - .control-button svg { width: var(--player-icon-md); height: var(--player-icon-md); diff --git a/src/components/controls/ProgressBar.css b/src/components/controls/ProgressBar.css index 12fafc4..738ca36 100644 --- a/src/components/controls/ProgressBar.css +++ b/src/components/controls/ProgressBar.css @@ -1,21 +1,16 @@ -/* ============================================ - PROGRESS BAR - Clean & Modern Design - ============================================ */ - .progress-bar { position: relative; width: 100%; - height: 20px; - cursor: pointer; + height: 24px; display: flex; align-items: center; + cursor: pointer; } .progress-track { position: relative; width: 100%; - height: 4px; + height: 3px; background-color: var(--player-progress-bg); border-radius: var(--player-radius-full); overflow: hidden; @@ -29,30 +24,28 @@ .progress-buffered { position: absolute; - top: 0; - left: 0; - height: 100%; + inset: 0; + width: 0; background-color: var(--player-progress-buffered); - transition: width 0.1s ease; + transition: width 0.12s ease; } .progress-played { position: absolute; - top: 0; - left: 0; - height: 100%; + inset: 0; + width: 0; background-color: var(--player-primary); - transition: width 0.1s ease; display: flex; align-items: center; justify-content: flex-end; + transition: width 0.12s ease; } .progress-handle { width: 12px; height: 12px; - background-color: var(--player-primary); border-radius: 50%; + background-color: var(--player-primary); transform: scale(0); transition: transform var(--player-transition-fast) ease; margin-right: -6px; @@ -65,13 +58,15 @@ .progress-tooltip { position: absolute; - bottom: calc(100% + 10px); + bottom: calc(100% + 8px); + left: 0; transform: translateX(-50%); - background-color: var(--player-bg-menu); + padding: 4px 10px; + background: var(--player-surface); + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 8px; color: var(--player-text); - padding: 6px 12px; - border-radius: var(--player-radius-sm); - font-size: 14px; + font-size: 12px; font-weight: 500; white-space: nowrap; pointer-events: none; @@ -84,13 +79,14 @@ top: 100%; left: 50%; transform: translateX(-50%); - border: 4px solid transparent; - border-top-color: var(--player-bg-menu); + border-width: 5px; + border-style: solid; + border-color: var(--player-surface) transparent transparent transparent; } @media (max-width: 640px) { .progress-bar { - height: 24px; + height: 22px; } .progress-track { diff --git a/src/components/controls/TimeDisplay.css b/src/components/controls/TimeDisplay.css index 5cb5a8c..d2627aa 100644 --- a/src/components/controls/TimeDisplay.css +++ b/src/components/controls/TimeDisplay.css @@ -1,23 +1,16 @@ -/* ============================================ - TIME DISPLAY - Clean & Modern Design - ============================================ */ - .time-display { display: flex; align-items: center; gap: 4px; color: var(--player-text); - font-size: 14px; + font-size: 13px; font-weight: 500; font-variant-numeric: tabular-nums; + letter-spacing: 0.01em; user-select: none; } -.time-separator { - color: var(--player-text-secondary); -} - +.time-separator, .time-duration { color: var(--player-text-secondary); } diff --git a/src/components/controls/VolumeControl.css b/src/components/controls/VolumeControl.css index a04233b..4034113 100644 --- a/src/components/controls/VolumeControl.css +++ b/src/components/controls/VolumeControl.css @@ -1,102 +1,83 @@ -/* ============================================ - VOLUME CONTROL - Clean & Modern Design - ============================================ */ - .volume-control { display: flex; align-items: center; - gap: var(--player-spacing-sm); + gap: var(--player-spacing-xs); position: relative; } .volume-slider-container { position: relative; width: 0; - height: 5px; + height: 4px; background-color: var(--player-progress-bg); border-radius: var(--player-radius-full); - overflow: visible; - transition: width var(--player-transition-normal) ease, opacity var(--player-transition-normal) ease; + overflow: hidden; opacity: 0; + transition: width var(--player-transition-normal) ease, + opacity var(--player-transition-normal) ease; } .volume-slider-container.visible { - width: 90px; + width: 88px; opacity: 1; } .volume-slider { position: absolute; - top: 50%; - left: 0; + inset: 0; width: 100%; height: 100%; - transform: translateY(-50%); - -webkit-appearance: none; appearance: none; background: transparent; cursor: pointer; - z-index: 2; +} + +.volume-slider:focus-visible { + outline: 2px solid var(--player-primary); + outline-offset: 2px; + border-radius: var(--player-radius-sm); +} + +.volume-slider::-webkit-slider-runnable-track { + height: 100%; + background: transparent; } .volume-slider::-webkit-slider-thumb { - -webkit-appearance: none; appearance: none; - width: 14px; - height: 14px; + width: 12px; + height: 12px; border-radius: 50%; background-color: var(--player-primary); - cursor: pointer; - transition: transform var(--player-transition-fast) ease; + border: none; + margin-top: -4px; } -.volume-slider::-webkit-slider-thumb:hover { - transform: scale(1.15); +.volume-slider::-moz-range-track { + height: 100%; + background: transparent; } .volume-slider::-moz-range-thumb { - width: 14px; - height: 14px; - border: none; + width: 12px; + height: 12px; border-radius: 50%; background-color: var(--player-primary); - cursor: pointer; - transition: transform var(--player-transition-fast) ease; -} - -.volume-slider::-moz-range-thumb:hover { - transform: scale(1.15); -} - -.volume-slider:focus { - outline: none; -} - -.volume-slider:focus-visible::-webkit-slider-thumb { - outline: 2px solid var(--player-primary); - outline-offset: 2px; -} - -.volume-slider:focus-visible::-moz-range-thumb { - outline: 2px solid var(--player-primary); - outline-offset: 2px; + border: none; } .volume-slider-fill { position: absolute; - top: 0; - left: 0; - height: 100%; + inset: 0; + width: 0; background: var(--player-primary); - pointer-events: none; - transition: width 0.1s ease; - z-index: 1; border-radius: var(--player-radius-full); + pointer-events: none; + transition: width 0.12s ease; } @media (max-width: 640px) { .volume-slider-container.visible { - width: 70px; + width: 72px; } } diff --git a/src/components/menus/SettingsMenu.css b/src/components/menus/SettingsMenu.css index 1ce37c1..d395bf1 100644 --- a/src/components/menus/SettingsMenu.css +++ b/src/components/menus/SettingsMenu.css @@ -1,59 +1,52 @@ -/* ============================================ - SETTINGS MENU - Clean & Modern Design - ============================================ */ - .settings-menu { position: absolute; - bottom: calc(100% + 10px); + bottom: calc(100% + 12px); right: 0; - background-color: var(--player-bg-menu); + min-width: 260px; + max-height: 360px; + background: var(--player-surface); + border: 1px solid rgba(255, 255, 255, 0.12); border-radius: var(--player-radius); - min-width: 280px; - max-height: 380px; overflow: hidden; z-index: var(--player-z-menu); + color: var(--player-text); animation: fadeIn var(--player-transition-normal) ease; - backdrop-filter: blur(10px); } .settings-menu-header { - padding: var(--player-spacing-md) var(--player-spacing-lg); - border-bottom: 1px solid rgba(255, 255, 255, 0.08); display: flex; align-items: center; gap: var(--player-spacing-sm); - position: relative; + padding: var(--player-spacing-md) var(--player-spacing-lg); + border-bottom: 1px solid rgba(255, 255, 255, 0.08); } .settings-menu-header h3 { - margin: 0; - font-size: 15px; - font-weight: 600; - color: var(--player-text); flex: 1; + margin: 0; + font-size: 14px; + font-weight: 600; } .settings-back-button { - background: none; + appearance: none; + background: transparent; border: none; color: var(--player-text); - font-size: 24px; - cursor: pointer; - padding: 0; width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; border-radius: var(--player-radius-sm); - transition: background-color var(--player-transition-fast) ease; - margin-left: -6px; - outline: none; + cursor: pointer; + transition: color var(--player-transition-fast) ease, + background-color var(--player-transition-fast) ease; } .settings-back-button:hover { - background-color: rgba(255, 255, 255, 0.1); + color: var(--player-primary); + background-color: rgba(255, 255, 255, 0.08); } .settings-main-options { @@ -68,26 +61,26 @@ padding: var(--player-spacing-md) var(--player-spacing-lg); background: none; border: none; + width: 100%; + text-align: left; color: var(--player-text); cursor: pointer; - transition: background-color var(--player-transition-fast) ease; - text-align: left; - width: 100%; - outline: none; + transition: background-color var(--player-transition-fast) ease, + color var(--player-transition-fast) ease; } .settings-main-option:hover { - background-color: rgba(255, 255, 255, 0.05); + background-color: rgba(255, 255, 255, 0.06); } .settings-main-option-icon { + width: 32px; + height: 32px; display: flex; align-items: center; justify-content: center; - width: 32px; - height: 32px; - background-color: rgba(239, 68, 68, 0.12); border-radius: var(--player-radius-sm); + background-color: rgba(239, 68, 68, 0.14); } .settings-main-option-content { @@ -98,9 +91,8 @@ } .settings-main-option-label { - font-size: 14px; - font-weight: 500; - color: var(--player-text); + font-size: 13px; + font-weight: 600; } .settings-main-option-value { @@ -109,14 +101,14 @@ } .settings-main-option-arrow { - font-size: 20px; + font-size: 18px; color: var(--player-text-secondary); } .settings-options { display: flex; flex-direction: column; - max-height: 300px; + max-height: 280px; overflow-y: auto; } @@ -127,21 +119,22 @@ padding: var(--player-spacing-md) var(--player-spacing-lg); background: none; border: none; - color: var(--player-text); - font-size: 14px; - cursor: pointer; - transition: background-color var(--player-transition-fast) ease; + width: 100%; text-align: left; - outline: none; + color: var(--player-text); + font-size: 13px; + cursor: pointer; + transition: background-color var(--player-transition-fast) ease, + color var(--player-transition-fast) ease; } .settings-option:hover { - background-color: rgba(255, 255, 255, 0.05); + background-color: rgba(255, 255, 255, 0.06); } .settings-option.active { color: var(--player-primary); - background-color: rgba(239, 68, 68, 0.12); + background-color: rgba(239, 68, 68, 0.14); } .settings-option span { @@ -164,7 +157,7 @@ } .settings-options::-webkit-scrollbar-thumb { - background-color: rgba(255, 255, 255, 0.15); + background-color: rgba(255, 255, 255, 0.18); border-radius: 3px; } @@ -174,24 +167,16 @@ @media (max-width: 640px) { .settings-menu { - min-width: 260px; - max-height: 340px; - } - - .settings-main-option { - padding: var(--player-spacing-sm) var(--player-spacing-md); - } - - .settings-main-option-icon { - width: 28px; - height: 28px; + min-width: 240px; + max-height: 320px; } + .settings-main-option, .settings-option { padding: var(--player-spacing-sm) var(--player-spacing-md); } .settings-options { - max-height: 260px; + max-height: 240px; } } diff --git a/src/components/overlays/LoadingSpinner.css b/src/components/overlays/LoadingSpinner.css index 081fda2..1f9c40f 100644 --- a/src/components/overlays/LoadingSpinner.css +++ b/src/components/overlays/LoadingSpinner.css @@ -1,18 +1,10 @@ -/* ============================================ - LOADING SPINNER - Clean & Modern Design - ============================================ */ - .loading-spinner-overlay { position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; + inset: 0; display: flex; align-items: center; justify-content: center; - background-color: rgba(0, 0, 0, 0.2); + background-color: rgba(0, 0, 0, 0.28); z-index: var(--player-z-loading); pointer-events: none; } @@ -20,8 +12,3 @@ .loading-spinner { animation: fadeIn var(--player-transition-normal) ease; } - -@keyframes fadeIn { - from { opacity: 0; } - to { opacity: 1; } -} diff --git a/src/styles/variables.css b/src/styles/variables.css index be50f74..0d75831 100644 --- a/src/styles/variables.css +++ b/src/styles/variables.css @@ -1,76 +1,69 @@ -/* ============================================ - VIDEO PLAYER - CSS Variables - Modern, Clean & Isolated Design System - ============================================ */ - :root { - /* ==================== PRIMARY COLORS ==================== */ + /* Core colors */ --player-primary: #ef4444; --player-primary-hover: #dc2626; --player-primary-active: #b91c1c; - /* ==================== BACKGROUNDS ==================== */ --player-bg: #000000; - --player-bg-controls: rgba(0, 0, 0, 0.75); - --player-bg-menu: rgba(15, 15, 15, 0.96); + --player-overlay-soft: rgba(0, 0, 0, 0.45); + --player-overlay-strong: rgba(0, 0, 0, 0.75); + --player-surface: rgba(18, 18, 18, 0.94); - /* ==================== TEXT ==================== */ --player-text: #ffffff; --player-text-secondary: #d1d5db; --player-text-muted: #9ca3af; - /* ==================== PROGRESS BAR ==================== */ - --player-progress-bg: rgba(255, 255, 255, 0.25); - --player-progress-buffered: rgba(255, 255, 255, 0.4); + --player-progress-bg: rgba(255, 255, 255, 0.18); + --player-progress-buffered: rgba(255, 255, 255, 0.32); - /* ==================== SPACING ==================== */ - --player-spacing-xs: 6px; - --player-spacing-sm: 12px; - --player-spacing-md: 18px; - --player-spacing-lg: 24px; - --player-spacing-xl: 32px; + --player-spacing-xs: 4px; + --player-spacing-sm: 8px; + --player-spacing-md: 12px; + --player-spacing-lg: 16px; + --player-spacing-xl: 24px; - /* ==================== BORDER RADIUS ==================== */ - --player-radius: 8px; - --player-radius-sm: 4px; + --player-radius: 14px; + --player-radius-sm: 8px; --player-radius-full: 9999px; - /* ==================== TRANSITIONS ==================== */ - --player-transition-fast: 150ms; + --player-transition-fast: 120ms; --player-transition-normal: 200ms; - /* ==================== Z-INDEX ==================== */ --player-z-video: 1; --player-z-subtitle: 10; --player-z-controls: 20; --player-z-menu: 30; --player-z-loading: 40; - /* ==================== ICON SIZES ==================== */ - --player-icon-sm: 20px; - --player-icon-md: 24px; - --player-icon-lg: 32px; - --player-icon-xl: 48px; + --player-icon-sm: 18px; + --player-icon-md: 22px; + --player-icon-lg: 30px; + --player-icon-xl: 44px; - /* ==================== SUBTITLE POSITIONING ==================== */ - --player-subtitle-bottom: 100px; - --player-subtitle-bottom-hidden: 40px; + --player-subtitle-bottom: 80px; + --player-subtitle-bottom-hidden: 36px; } -/* ============================================ - ANIMATIONS - ============================================ */ - @keyframes spin { - to { transform: rotate(360deg); } + to { + transform: rotate(360deg); + } } @keyframes fadeIn { - from { opacity: 0; } - to { opacity: 1; } + from { + opacity: 0; + } + to { + opacity: 1; + } } @keyframes fadeOut { - from { opacity: 1; } - to { opacity: 0; } + from { + opacity: 1; + } + to { + opacity: 0; + } }