-
@@ -308,5 +309,243 @@
opacity: 0.5;
cursor: not-allowed;
}
+
+/* --- Vinyl Player Styles --- */
+:root {
+ --color-black: #000;
+ --color-gray: #5e6062;
+ --color-white: #fff;
+ --color-yellow: #f0f39c;
+ --color-yellow-light: #fff99e;
+ --transition-time: 250ms;
+ --transition-method: ease-in-out;
+ --album-size: 260px;
+ --vinyl-offset: 15px;
+ --vinyl-size: calc(var(--album-size) - var(--vinyl-offset));
+ --vinyl-center-size: 110px;
+}
+
+.player-container {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 15px 0;
+ perspective: 1000px;
+}
+
+.player {
+ color: var(--color-gray);
+ font-family: 'Raleway', 'Outfit', sans-serif;
+ height: var(--album-size);
+ line-height: 1.2;
+ position: relative;
+ width: var(--album-size);
+ transition: all var(--transition-time) var(--transition-method);
+ margin: 0 auto;
+}
+
+.player::after {
+ transform: rotate(-2deg);
+ transition: all var(--transition-time) var(--transition-method);
+ background: #777;
+ bottom: 12px;
+ box-shadow: 0 15px 23px rgba(0, 0, 0, 0.3);
+ content: '';
+ height: 10px;
+ left: 2%;
+ opacity: 0;
+ padding-left: 5%;
+ position: absolute;
+ width: 96%;
+ z-index: 5;
+}
+
+.player:hover::after {
+ opacity: 0.6;
+}
+
+.player .player__content {
+ background-color: var(--color-white);
+ height: 100%;
+ padding: 50px 15px 0 15px;
+ position: relative;
+ text-align: left;
+ width: 100%;
+ z-index: 10;
+ border-radius: 8px;
+ box-shadow: 0 10px 30px rgba(0,0,0,0.05);
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ border: 1px solid rgba(8, 60, 130, 0.05);
+}
+
+.player .player__artist {
+ font-size: 16px;
+ font-weight: 600;
+ margin-bottom: 3px;
+ max-width: 140px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ color: #343f52;
+}
+
+.player .player__album {
+ font-size: 13px;
+ font-weight: 300;
+ margin-bottom: 15px;
+ max-width: 140px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ color: #a4aec6;
+}
+
+.player .player__track {
+ font-size: 12px;
+ font-weight: 400;
+ margin-bottom: 15px;
+ max-width: 140px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ color: #60697b;
+}
+
+.player .player__track::before,
+.player .player__track::after {
+ content: '"';
+ font-size: 14px;
+ vertical-align: middle;
+}
+
+.album {
+ transform: translateY(-50%);
+ transition: all var(--transition-time) var(--transition-method);
+ box-shadow: 0px 8px 20px rgba(0, 0, 0, 0.15);
+ cursor: pointer;
+ height: var(--album-size);
+ position: absolute;
+ right: 0;
+ top: 50%;
+ width: var(--album-size);
+ z-index: 100;
+ border-radius: 8px;
+}
+
+.player:hover {
+ transform: scale(1.08) translateY(-5px);
+ z-index: 999;
+}
+
+.player:hover .player__content {
+ box-shadow: 0 15px 35px rgba(0,0,0,0.1);
+}
+
+.player:hover .album {
+ right: -140px;
+}
+
+.album__cover {
+ background-color: var(--color-black);
+ background-size: cover;
+ background-position: center;
+ height: 100%;
+ position: relative;
+ width: 100%;
+ z-index: 20;
+ border-radius: 8px;
+ box-shadow: 0 5px 15px rgba(0,0,0,0.1);
+}
+
+.vinyl {
+ transition: all var(--transition-time) var(--transition-method);
+ left: calc(var(--vinyl-offset) / 2);
+ position: absolute;
+ top: calc(var(--vinyl-offset) / 2);
+ height: var(--vinyl-size);
+ width: var(--vinyl-size);
+ z-index: 10;
+}
+
+.vinyl__shadow,
+.vinyl__circle {
+ border-radius: 100%;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+
+.vinyl__shadow {
+ box-shadow: 2px 8px 15px rgba(0, 0, 0, 0.2);
+ z-index: 5;
+}
+
+.vinyl__circle {
+ animation: rotate-vinyl 3s linear infinite both paused;
+ background-color: #1e1b1b;
+ background-image: radial-gradient(circle, #2c2727 10%, transparent 10%),
+ repeating-radial-gradient(circle, #2c2727, #1e1b1b 2px, #2c2727 4px);
+ z-index: 10;
+}
+
+.player:hover .vinyl {
+ left: 45%;
+}
+
+.player:hover .vinyl__circle {
+ animation-play-state: running;
+}
+
+.vinyl__center {
+ transform: translate(-50%, -50%);
+ background-color: #292424;
+ border-radius: 100%;
+ height: var(--vinyl-center-size);
+ left: 50%;
+ position: absolute;
+ top: 50%;
+ width: var(--vinyl-center-size);
+}
+
+.vinyl__center::before,
+.vinyl__center::after {
+ transform: translate(-50%, -50%);
+ border-radius: 100%;
+ content: '';
+ left: 50%;
+ position: absolute;
+ top: 50%;
+}
+
+.vinyl__center::before {
+ background-color: #e31e24;
+ background-image: var(--center-bg);
+ background-size: cover;
+ background-position: center;
+ height: calc(var(--vinyl-center-size) - 20px);
+ width: calc(var(--vinyl-center-size) - 20px);
+ z-index: 5;
+}
+
+.vinyl__center::after {
+ background-color: #fff;
+ height: 20px;
+ width: 20px;
+ z-index: 10;
+ box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
+}
+
+@keyframes rotate-vinyl {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+}
@endpush
diff --git a/resources/views/front/music-productions/show.blade.php b/resources/views/front/music-productions/show.blade.php
index eb49c53..33263bc 100644
--- a/resources/views/front/music-productions/show.blade.php
+++ b/resources/views/front/music-productions/show.blade.php
@@ -40,28 +40,51 @@
}
@endphp
- {{-- CD Jewel Case 3D Mockup --}}
+ {{-- Vinyl Player Mockup --}}
@if($production->cover_image_url)
-
-
-
- {{-- Left Spine (Plastic Hinge) --}}
-
- {{-- Cover Graphic --}}
-
- {{-- Glass shine reflection --}}
-
- {{-- Play Button Overlay --}}
- @if($videoId)
-
-
-
+
+
+
+
{{ $production->translate('client_name') ?: __('music_productions.card_category_default') }}
+
+ @if($production->production_date)
+ {{ $production->production_date->format('Y') }}
+ @else
+
+ @endif
+
+
{{ $production->translate('title') }}
+
+
- @endif
+
+
+ @if($prev)
+
+ @else
+
+ @endif
+
+
+
+ @if($next)
+
+ @else
+
+ @endif
+
-
@endif
@@ -188,151 +211,413 @@
@push('styles')
@@ -385,6 +668,7 @@ body.lightbox-open .cd-case {