@for (category of topLevelCategories(); track category.categoryID) {
-
}
diff --git a/src/app/pages/home/home.component.scss b/src/app/pages/home/home.component.scss
index 0a23c1b..30e555d 100644
--- a/src/app/pages/home/home.component.scss
+++ b/src/app/pages/home/home.component.scss
@@ -1,329 +1,25 @@
-.home-container {
- max-width: 1200px;
- margin: 0 auto;
- padding: 20px;
- animation: fadeIn 0.5s ease-in;
-}
-
+// ========== SHARED ANIMATIONS ==========
@keyframes fadeIn {
- from {
- opacity: 0;
- transform: translateY(10px);
- }
- to {
- opacity: 1;
- transform: translateY(0);
- }
+ from { opacity: 0; transform: translateY(10px); }
+ to { opacity: 1; transform: translateY(0); }
}
-.hero {
- text-align: center;
- padding: 80px 20px;
- background: var(--gradient-hero);
- color: white;
- border-radius: var(--radius-xl);
- margin-bottom: 50px;
- position: relative;
- overflow: hidden;
- box-shadow: var(--shadow-lg);
-
- &.hero-compact {
- padding: 35px 20px;
- margin-bottom: 25px;
-
- h1 {
- font-size: 2.2rem;
- margin-bottom: 8px;
- }
-
- p {
- font-size: 1.1rem;
- }
- }
-
- &::before {
- content: '';
- position: absolute;
- top: -50%;
- left: -50%;
- width: 200%;
- height: 200%;
- background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%);
- animation: pulse 4s ease-in-out infinite;
- }
-
- @keyframes pulse {
- 0%, 100% {
- transform: scale(1);
- opacity: 0.5;
- }
- 50% {
- transform: scale(1.1);
- opacity: 0.8;
- }
- }
-
- h1 {
- font-size: 3.5rem;
- margin: 0 0 15px 0;
- font-weight: 700;
- position: relative;
- z-index: 1;
- text-shadow: 0 2px 10px rgba(0,0,0,0.2);
- animation: slideDown 0.8s ease-out;
- }
-
- @keyframes slideDown {
- from {
- opacity: 0;
- transform: translateY(-30px);
- }
- to {
- opacity: 1;
- transform: translateY(0);
- }
- }
-
- p {
- font-size: 1.4rem;
- margin: 0;
- opacity: 0.95;
- position: relative;
- z-index: 1;
- animation: slideUp 0.8s ease-out 0.2s both;
- }
-
- @keyframes slideUp {
- from {
- opacity: 0;
- transform: translateY(20px);
- }
- to {
- opacity: 0.95;
- transform: translateY(0);
- }
- }
+@keyframes fadeInUp {
+ from { opacity: 0; transform: translateY(30px); }
+ to { opacity: 1; transform: translateY(0); }
}
-.loading,
-.error {
- text-align: center;
- padding: 60px 20px;
-}
-
-.spinner {
- width: 50px;
- height: 50px;
- border: 4px solid #f3f3f3;
- border-top: 4px solid var(--primary-color);
- border-radius: 50%;
- animation: spin 1s linear infinite;
- margin: 0 auto 20px;
+@keyframes slideDown {
+ from { opacity: 0; transform: translateY(-30px); }
+ to { opacity: 1; transform: translateY(0); }
}
@keyframes spin {
- 0% { transform: rotate(0deg); }
- 100% { transform: rotate(360deg); }
+ from { transform: rotate(0deg); }
+ to { transform: rotate(360deg); }
}
-.error {
- button {
- margin-top: 20px;
- padding: 10px 24px;
- background: var(--primary-color);
- color: white;
- border: none;
- border-radius: 6px;
- cursor: pointer;
- font-size: 1rem;
-
- &:hover {
- background: var(--primary-hover);
- }
- }
-}
-
-.categories {
- h2 {
- font-size: 2rem;
- margin-bottom: 30px;
- color: #333;
- }
-}
-
-.empty-categories {
- text-align: center;
- padding: 60px 20px;
- background: white;
- border-radius: 12px;
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
-
- .empty-icon {
- font-size: 4rem;
- margin-bottom: 20px;
- opacity: 0.5;
- }
-
- h3 {
- font-size: 1.5rem;
- color: #333;
- margin: 0 0 10px 0;
- }
-
- p {
- color: #666;
- font-size: 1rem;
- margin: 0;
- }
-}
-
-.categories-grid {
- display: grid;
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
- gap: 30px;
- animation: fadeIn 0.6s ease-in 0.3s both;
-}
-
-.category-card {
- background: white;
- border-radius: var(--radius-lg);
- box-shadow: var(--shadow-md);
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
- height: 100%;
- display: flex;
- flex-direction: column;
- overflow: hidden;
- position: relative;
-
- &::before {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background: var(--gradient-primary);
- opacity: 0;
- transition: opacity 0.3s ease;
- z-index: 1;
- }
-
- &:hover {
- transform: translateY(-8px) scale(1.02);
- box-shadow: var(--shadow-lg);
-
- &::before {
- opacity: 0.1;
- }
-
- .category-media img {
- transform: scale(1.1);
- }
-
- h3 {
- color: var(--primary-color);
- }
- }
-}
-
-.category-link {
- display: flex;
- flex-direction: column;
- flex: 1;
- text-decoration: none;
- color: inherit;
- position: relative;
- min-height: 220px;
- z-index: 2;
-
- .category-media {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- display: flex;
- align-items: center;
- justify-content: center;
- overflow: hidden;
- background: linear-gradient(135deg, #f6f7fb 0%, #e9ecf5 100%);
- }
-
- .category-media img {
- width: 100%;
- height: 100%;
- object-fit: contain;
- background: white;
- padding: 15px;
- transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1), filter 0.5s ease;
- filter: drop-shadow(0 4px 8px rgba(0,0,0,0.08));
- border-radius: 8px;
- }
-
- &:hover .category-media img {
- transform: scale(1.05);
- filter: drop-shadow(0 16px 32px rgba(0,0,0,0.18)) saturate(1.1);
- }
-
- .category-fallback {
- font-size: 1.5rem;
- font-weight: 700;
- color: var(--primary-color);
- background: var(--gradient-primary);
- -webkit-background-clip: text;
- -webkit-text-fill-color: transparent;
- background-clip: text;
- text-align: center;
- padding: 20px;
- }
-
- h3 {
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
- margin: 0;
- padding: 20px;
- font-size: 1.3rem;
- font-weight: 600;
- color: #333;
- background: linear-gradient(to top, rgba(255,255,255,0.98) 0%, rgba(255,255,255,0.95) 70%, transparent 100%);
- z-index: 3;
- transition: color 0.3s ease;
- }
-}
-
-@media (max-width: 768px) {
- .home-container {
- padding: 15px;
- }
-
- .hero {
- padding: 50px 20px;
- border-radius: 15px;
-
- h1 {
- font-size: 2.5rem;
- }
-
- p {
- font-size: 1.1rem;
- }
- }
-
- .categories-grid {
- grid-template-columns: 1fr;
- gap: 20px;
- }
-
- .category-card {
- &:hover {
- transform: translateY(-4px) scale(1);
- }
- }
-}
-
-// ========== novo HOME PAGE STYLES ==========
+// ========== NOVO HOME PAGE STYLES ==========
.novo-home {
min-height: calc(100vh - 200px);
animation: fadeIn 0.6s ease;
@@ -619,26 +315,6 @@
}
}
-@keyframes slideDown {
- from {
- opacity: 0;
- transform: translateY(-30px);
- }
- to {
- opacity: 1;
- transform: translateY(0);
- }
-}
-
-@keyframes spin {
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
-}
-
@media (max-width: 968px) {
.novo-hero {
padding: 4rem 2rem;
@@ -701,3 +377,522 @@
transform: translateY(-4px);
}
}
+
+// ========== DEXAR REDESIGN 2026 STYLES ==========
+.dexar-home {
+ width: 100%;
+ overflow-x: hidden;
+}
+
+// Hero Section
+.dexar-hero {
+ position: relative;
+ width: 100%;
+ height: 600px;
+ background-image: url('/assets/images/hero_background_desktop.webp');
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+ overflow: hidden;
+
+ // Mobile hero image
+ @media (max-width: 768px) {
+ background-image: url('/assets/images/hero_background_mobile.webp');
+ }
+}
+
+.dexar-hero-overlay {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ background: linear-gradient(
+ to right,
+ rgba(255, 255, 255, 0.1) 10%,
+ rgba(255, 255, 255, 0.1) 10%,
+ rgba(255, 255, 255, 0.1) 15%);
+ display: flex;
+ align-items: center;
+ padding: 0 56px;
+}
+
+.dexar-hero-content {
+ max-width: 600px;
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+ animation: fadeInUp 0.8s ease-out;
+}
+
+.dexar-hero-title {
+ font-weight: 500;
+ font-size: 42px;
+ color: var(--text-primary);
+ line-height: 1.2;
+ margin: 0;
+ animation: fadeInUp 0.8s ease-out 0.1s both;
+}
+
+.dexar-hero-subtitle {
+ font-weight: 500;
+ font-size: 24px;
+ color: var(--text-primary);
+ line-height: 1.3;
+ margin: 0;
+ animation: fadeInUp 0.8s ease-out 0.2s both;
+}
+
+.dexar-hero-tagline {
+ font-weight: 500;
+ font-size: 24px;
+ color: var(--text-primary);
+ line-height: 1.3;
+ margin: 0;
+ animation: fadeInUp 0.8s ease-out 0.3s both;
+}
+
+.dexar-hero-actions {
+ display: flex;
+ gap: 16px;
+ margin-top: 12px;
+ animation: fadeInUp 0.8s ease-out 0.4s both;
+}
+
+.dexar-btn-primary {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 280px;
+ height: 48px;
+ background: var(--gradient-primary);
+ border: 1px solid var(--border-color);
+ border-radius: var(--radius-lg);
+ font-weight: 500;
+ font-size: 20px;
+ color: #ffffff;
+ text-decoration: none;
+ letter-spacing: 1.08px;
+ cursor: pointer;
+ transition: all 0.3s ease;
+ box-shadow: 0 4px 12px rgba(73, 118, 113, 0.3);
+
+ &:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 6px 16px rgba(73, 118, 113, 0.4);
+ }
+
+ &:active {
+ transform: translateY(0px);
+ box-shadow: 0 2px 8px rgba(73, 118, 113, 0.3);
+ }
+}
+
+.dexar-btn-secondary {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 9px;
+ width: 220px;
+ height: 48px;
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-color);
+ border-radius: var(--radius-lg);
+ font-weight: 500;
+ font-size: 20px;
+ color: var(--text-primary);
+ letter-spacing: 1.08px;
+ cursor: pointer;
+ transition: all 0.3s ease;
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
+
+ svg {
+ width: 11px;
+ height: 16px;
+ transition: transform 0.3s ease;
+ }
+
+ &:hover {
+ background: #ffffff;
+ transform: translateY(-2px);
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15);
+
+ svg {
+ transform: translateX(3px);
+ }
+ }
+
+ &:active {
+ transform: translateY(0px);
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+ }
+}
+
+// Loading & Error States
+.dexar-loading,
+.dexar-error {
+ text-align: center;
+ padding: 60px 20px;
+ max-width: 1200px;
+ margin: 0 auto;
+}
+
+.dexar-spinner {
+ width: 50px;
+ height: 50px;
+ border: 4px solid #f3f3f3;
+ border-top: 4px solid var(--primary-color);
+ border-radius: 50%;
+ animation: spin 1s linear infinite;
+ margin: 0 auto 20px;
+}
+
+.dexar-error {
+ button {
+ margin-top: 20px;
+ padding: 12px 28px;
+ background: var(--primary-color);
+ color: white;
+ border: none;
+ border-radius: var(--radius-lg);
+ cursor: pointer;
+ font-size: 1.1rem;
+ font-weight: 500;
+ transition: all 0.3s ease;
+
+ &:hover {
+ background: var(--primary-hover);
+ transform: translateY(-2px);
+ box-shadow: 0 4px 12px rgba(73, 118, 113, 0.3);
+ }
+ }
+}
+
+// Categories Section
+.dexar-categories {
+ max-width: 1440px;
+ margin: 50px auto;
+ padding: 0 56px;
+}
+
+.dexar-categories-title {
+ font-size: 2.5rem;
+ font-weight: 600;
+ margin-bottom: 40px;
+ color: var(--text-primary);
+}
+
+.dexar-empty-categories {
+ text-align: center;
+ padding: 80px 20px;
+ background: white;
+ border-radius: 16px;
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
+
+ .dexar-empty-icon {
+ font-size: 4rem;
+ margin-bottom: 20px;
+ opacity: 0.5;
+ }
+
+ h3 {
+ font-size: 1.8rem;
+ color: var(--text-primary);
+ margin: 0 0 12px 0;
+ font-weight: 600;
+ }
+
+ p {
+ color: var(--text-secondary);
+ font-size: 1.1rem;
+ margin: 0;
+ }
+}
+
+.dexar-categories-grid {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 30px;
+ animation: fadeIn 0.6s ease-in 0.3s both;
+ width: 100%;
+}
+
+.dexar-category-card {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ text-decoration: none;
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+
+ &:hover {
+ transform: translateY(-4px);
+
+ .dexar-category-image {
+ box-shadow: 0 6px 8px 0 rgba(0, 0, 0, 0.2);
+ }
+
+ .dexar-category-info {
+ box-shadow: 0 6px 8px 0 rgba(0, 0, 0, 0.2);
+ }
+ }
+}
+
+.dexar-category-image {
+ width: 100%;
+ aspect-ratio: 4 / 3;
+ border: 1px solid var(--border-color);
+ border-radius: var(--radius-lg) var(--radius-lg) 0 0;
+ box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.15);
+ overflow: hidden;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--bg-secondary);
+ position: relative;
+
+ img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ transition: transform 0.3s ease;
+ }
+
+ &:hover img {
+ transform: scale(1.05);
+ }
+}
+
+.dexar-category-fallback {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 5rem;
+ font-weight: 700;
+ color: var(--primary-color);
+ background: linear-gradient(135deg, var(--bg-secondary) 0%, var(--bg-tertiary) 100%);
+}
+
+.dexar-category-info {
+ width: 100%;
+ border: 1px solid var(--border-color);
+ border-top: none;
+ border-radius: 0 0 var(--radius-lg) var(--radius-lg);
+ padding: 12px 16px;
+ box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.15);
+ background: #f5f3f9;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ gap: 2px;
+ transition: background 0.3s ease;
+}
+
+.dexar-category-name {
+ font-weight: 600;
+ font-size: clamp(14px, 1.4vw, 18px);
+ color: var(--text-primary);
+ margin: 0;
+ line-height: 1.3;
+ display: -webkit-box;
+ line-clamp: 2;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ min-height: calc(2 * 1.3em);
+}
+
+.dexar-category-count {
+ font-weight: 600;
+ font-size: clamp(11px, 1vw, 13px);
+ color: var(--text-secondary);
+ margin: 0;
+ line-height: 1.2;
+}
+
+// Wide category card (spans 2 columns)
+.dexar-category-card--wide {
+ grid-column: span 2;
+
+ .dexar-category-image {
+ aspect-ratio: 8 / 3;
+
+ img {
+ object-fit: cover;
+ }
+ }
+}
+
+// Responsive Design
+@media (max-width: 1200px) {
+ .dexar-hero {
+ height: 380px;
+ }
+
+ .dexar-hero-overlay {
+ padding: 0 40px;
+ }
+
+ .dexar-hero-title {
+ font-size: 38px;
+ }
+
+ .dexar-hero-subtitle,
+ .dexar-hero-tagline {
+ font-size: 22px;
+ }
+
+ .dexar-categories {
+ padding: 0 40px;
+ }
+
+ .dexar-categories-grid {
+ grid-template-columns: repeat(3, 1fr);
+ gap: 24px;
+ }
+}
+
+@media (max-width: 992px) {
+ .dexar-hero {
+ height: 340px;
+ }
+
+ .dexar-hero-overlay {
+ padding: 0 32px;
+ }
+
+ .dexar-hero-title {
+ font-size: 34px;
+ }
+
+ .dexar-hero-subtitle,
+ .dexar-hero-tagline {
+ font-size: 20px;
+ }
+
+ .dexar-btn-primary,
+ .dexar-btn-secondary {
+ height: 44px;
+ font-size: 18px;
+ }
+
+ .dexar-btn-primary {
+ width: 240px;
+ }
+
+ .dexar-btn-secondary {
+ width: 200px;
+ }
+
+ .dexar-categories {
+ padding: 0 32px;
+ }
+
+ .dexar-categories-grid {
+ grid-template-columns: repeat(3, 1fr);
+ gap: 20px;
+ }
+}
+
+@media (max-width: 768px) {
+ .dexar-hero {
+ height: 320px;
+ background-position: right center;
+ }
+
+ .dexar-hero-overlay {
+ padding: 0 20px;
+ background: linear-gradient(
+ to bottom,
+ rgba(255, 255, 255, 0.45) 0%,
+ rgba(255, 255, 255, 0.15) 100%
+ );
+ }
+
+ .dexar-hero-title {
+ font-size: 28px;
+ }
+
+ .dexar-hero-subtitle,
+ .dexar-hero-tagline {
+ font-size: 17px;
+ }
+
+ .dexar-hero-actions {
+ flex-direction: row;
+ gap: 10px;
+ width: 100%;
+ }
+
+ .dexar-btn-primary,
+ .dexar-btn-secondary {
+ flex: 1;
+ min-width: 0;
+ max-width: 180px;
+ height: 40px;
+ font-size: 14px;
+ letter-spacing: 0.5px;
+ }
+
+ .dexar-categories {
+ margin: 40px auto;
+ padding: 0 20px;
+ }
+
+ .dexar-categories-title {
+ font-size: 2rem;
+ margin-bottom: 30px;
+ }
+
+ .dexar-categories-grid {
+ grid-template-columns: repeat(2, 1fr);
+ gap: 16px;
+ }
+
+ .dexar-category-info {
+ padding: 10px 12px;
+ }
+}
+
+@media (max-width: 480px) {
+ .dexar-hero {
+ height: 280px;
+ }
+
+ .dexar-hero-title {
+ font-size: 24px;
+ }
+
+ .dexar-hero-subtitle,
+ .dexar-hero-tagline {
+ font-size: 15px;
+ }
+
+ .dexar-hero-actions {
+ gap: 10px;
+ }
+
+ .dexar-btn-primary,
+ .dexar-btn-secondary {
+ height: 38px;
+ font-size: 13px;
+ max-width: 160px;
+ }
+
+ .dexar-categories {
+ padding: 0 16px;
+ }
+
+ .dexar-categories-grid {
+ grid-template-columns: repeat(2, 1fr);
+ gap: 12px;
+ }
+
+ .dexar-category-info {
+ padding: 8px 10px;
+ }
+
+ .dexar-category-card:hover {
+ transform: translateY(-2px);
+ }
+}
diff --git a/src/app/pages/item-detail/item-detail.component.scss b/src/app/pages/item-detail/item-detail.component.scss
index 9621d4e..590394e 100644
--- a/src/app/pages/item-detail/item-detail.component.scss
+++ b/src/app/pages/item-detail/item-detail.component.scss
@@ -642,22 +642,70 @@ $dx-card-bg: #f5f3f9;
}
}
-// Responsive
+// ========== DEXAR RESPONSIVE ==========
+
+// Large desktop — constrain gallery height
+@media (min-width: 1201px) {
+ .dx-main-photo {
+ max-height: 560px;
+ }
+}
+
+// Tablet landscape / small desktop
+@media (max-width: 1200px) {
+ .dx-item-content {
+ gap: 32px;
+ }
+
+ .dx-title {
+ font-size: 1.5rem;
+ }
+}
+
+// Tablet portrait
@media (max-width: 992px) {
.dx-item-content {
grid-template-columns: 1fr;
gap: 32px;
}
+
+ .dx-gallery {
+ max-width: 600px;
+ margin: 0 auto;
+ }
+
+ .dx-main-photo {
+ max-height: 480px;
+ aspect-ratio: auto;
+ }
+
+ .dx-add-cart {
+ max-width: 100%;
+ }
+
+ .dx-reviews-section,
+ .dx-qa-section {
+ h2 {
+ font-size: 1.3rem;
+ }
+ }
}
+// Mobile
@media (max-width: 768px) {
.dx-item-container {
padding: 16px;
}
- // On mobile: thumbnails go below main photo
+ .dx-item-content {
+ gap: 24px;
+ margin-bottom: 32px;
+ }
+
+ // Thumbnails go below main photo
.dx-gallery {
flex-direction: column;
+ max-width: 100%;
}
.dx-thumbnails {
@@ -666,14 +714,16 @@ $dx-card-bg: #f5f3f9;
max-height: none;
overflow-x: auto;
overflow-y: hidden;
- order: 1; // put below main photo
+ order: 1;
scrollbar-width: none;
&::-webkit-scrollbar { display: none; }
}
.dx-main-photo {
- order: 0; // main photo first
+ order: 0;
+ max-height: 400px;
+ aspect-ratio: auto;
}
.dx-thumb {
@@ -690,8 +740,32 @@ $dx-card-bg: #f5f3f9;
font-size: 1.8rem;
}
+ .dx-old-price {
+ font-size: 1rem;
+ }
+
.dx-add-cart {
max-width: 100%;
+ padding: 14px 20px;
+ font-size: 1rem;
+ }
+
+ .dx-description {
+ h2 {
+ font-size: 1.15rem;
+ }
+ }
+
+ .dx-specs-table {
+ .spec-key {
+ white-space: normal;
+ width: auto;
+ }
+
+ td {
+ padding: 8px 10px;
+ font-size: 0.85rem;
+ }
}
.dx-review-form {
@@ -707,21 +781,153 @@ $dx-card-bg: #f5f3f9;
width: 100%;
}
}
+
+ .dx-review-card {
+ padding: 16px;
+ }
+
+ .dx-reviews-section,
+ .dx-qa-section {
+ margin-bottom: 32px;
+
+ h2 {
+ font-size: 1.25rem;
+ margin-bottom: 16px;
+ }
+ }
+
+ .dx-qa-card {
+ padding: 16px;
+ }
+
+ .dx-question,
+ .dx-answer {
+ font-size: 0.9rem;
+ }
}
+// Small mobile
@media (max-width: 480px) {
+ .dx-item-container {
+ padding: 12px;
+ }
+
+ .dx-item-content {
+ gap: 20px;
+ margin-bottom: 24px;
+ }
+
+ .dx-main-photo {
+ max-height: 300px;
+ border-radius: 10px;
+
+ img, video {
+ padding: 8px;
+ }
+ }
+
.dx-thumb {
- width: 56px;
- height: 56px;
- min-width: 56px;
+ width: 52px;
+ height: 52px;
+ min-width: 52px;
}
.dx-title {
- font-size: 1.25rem;
+ font-size: 1.2rem;
+ }
+
+ .dx-info {
+ gap: 16px;
}
.dx-current-price {
- font-size: 1.6rem;
+ font-size: 1.5rem;
+ }
+
+ .dx-rating {
+ flex-wrap: wrap;
+ gap: 6px;
+ }
+
+ .dx-stock {
+ flex-wrap: wrap;
+ gap: 6px;
+ }
+
+ .dx-add-cart {
+ padding: 12px 16px;
+ font-size: 0.95rem;
+ border-radius: 10px;
+ }
+
+ .dx-review-form {
+ padding: 14px;
+
+ h3 {
+ font-size: 1rem;
+ }
+ }
+
+ .dx-star-selector {
+ .dx-star-pick {
+ font-size: 1.5rem;
+ }
+ }
+
+ .dx-textarea {
+ padding: 12px;
+ font-size: 0.9rem;
+ }
+
+ .dx-review-card {
+ padding: 14px;
+ }
+
+ .dx-reviewer-name {
+ font-size: 0.9rem;
+ }
+
+ .dx-review-text {
+ font-size: 0.9rem;
+ }
+
+ .dx-specs-table {
+ td {
+ padding: 6px 8px;
+ font-size: 0.8rem;
+ display: block;
+ }
+
+ .spec-key {
+ width: 100%;
+ padding-bottom: 2px;
+ }
+
+ .spec-value {
+ padding-top: 0;
+ }
+
+ tr {
+ display: flex;
+ flex-direction: column;
+ padding: 6px 0;
+ }
+ }
+
+ .dx-qa-card {
+ padding: 14px;
+ }
+
+ .dx-question,
+ .dx-answer {
+ font-size: 0.85rem;
+ gap: 8px;
+ }
+
+ .dx-qa-label {
+ width: 24px;
+ height: 24px;
+ font-size: 0.7rem;
}
}
@@ -1299,12 +1505,20 @@ $dx-card-bg: #f5f3f9;
}
}
+// ========== NOVO RESPONSIVE ==========
+
+// Tablet portrait
@media (max-width: 968px) {
.novo-item-content {
grid-template-columns: 1fr;
gap: 2rem;
}
+ .novo-gallery {
+ max-width: 600px;
+ margin: 0 auto;
+ }
+
.novo-info .novo-title {
font-size: 1.5rem;
}
@@ -1313,6 +1527,10 @@ $dx-card-bg: #f5f3f9;
font-size: 2rem;
}
+ .novo-info .novo-add-cart {
+ max-width: 100%;
+ }
+
.novo-review-form {
padding: 1.5rem;
@@ -1328,6 +1546,213 @@ $dx-card-bg: #f5f3f9;
}
}
+// Mobile
+@media (max-width: 768px) {
+ .novo-item-container {
+ padding: 1rem;
+ }
+
+ .novo-item-content {
+ gap: 1.5rem;
+ margin-bottom: 2rem;
+ }
+
+ .novo-gallery {
+ max-width: 100%;
+
+ .novo-main-photo {
+ border-radius: var(--radius-lg);
+ margin-bottom: 0.75rem;
+ }
+
+ .novo-thumbnails {
+ grid-template-columns: repeat(auto-fill, minmax(60px, 1fr));
+ gap: 0.5rem;
+ }
+ }
+
+ .novo-info {
+ .novo-title {
+ font-size: 1.35rem;
+ }
+
+ .novo-rating {
+ flex-wrap: wrap;
+ gap: 0.5rem;
+ margin-bottom: 1rem;
+ }
+
+ .novo-price-block {
+ padding: 1rem;
+
+ .current-price {
+ font-size: 1.75rem;
+ }
+
+ .old-price {
+ font-size: 0.95rem;
+ }
+ }
+
+ .novo-stock {
+ flex-wrap: wrap;
+ gap: 0.5rem;
+ padding: 0.75rem;
+ }
+
+ .novo-add-cart {
+ padding: 1rem 1.5rem;
+ font-size: 1rem;
+ margin-bottom: 1.5rem;
+ }
+
+ .novo-description {
+ h3 {
+ font-size: 1.1rem;
+ }
+ }
+ }
+
+ .novo-specs-table {
+ .spec-key {
+ white-space: normal;
+ width: auto;
+ }
+
+ td {
+ padding: 8px 10px;
+ font-size: 0.85rem;
+ }
+ }
+
+ .novo-reviews {
+ margin-top: 2rem;
+ padding-top: 2rem;
+
+ h2 {
+ font-size: 1.35rem;
+ margin-bottom: 1.5rem;
+ }
+ }
+
+ .novo-review-card {
+ padding: 1rem;
+ }
+
+ .novo-review-form {
+ padding: 1.25rem;
+
+ h3 {
+ font-size: 1.1rem;
+ }
+ }
+}
+
+// Small mobile
+@media (max-width: 480px) {
+ .novo-item-container {
+ padding: 0.75rem;
+ }
+
+ .novo-item-content {
+ gap: 1.25rem;
+ margin-bottom: 1.5rem;
+ }
+
+ .novo-gallery {
+ .novo-thumbnails {
+ grid-template-columns: repeat(auto-fill, minmax(52px, 1fr));
+ gap: 0.4rem;
+ }
+
+ .novo-main-photo {
+ border-radius: var(--radius-md);
+ }
+ }
+
+ .novo-info {
+ .novo-title {
+ font-size: 1.15rem;
+ }
+
+ .novo-price-block {
+ padding: 0.75rem;
+
+ .current-price {
+ font-size: 1.5rem;
+ }
+ }
+
+ .novo-stock {
+ padding: 0.6rem;
+ font-size: 0.85rem;
+ }
+
+ .novo-add-cart {
+ padding: 0.85rem 1rem;
+ font-size: 0.95rem;
+ border-radius: var(--radius-md);
+ }
+ }
+
+ .novo-review-form {
+ padding: 1rem;
+
+ .novo-rating-input {
+ .novo-star-selector {
+ .novo-star {
+ font-size: 1.6rem;
+ }
+ }
+ }
+
+ .novo-textarea {
+ padding: 0.75rem;
+ font-size: 0.9rem;
+ }
+ }
+
+ .novo-review-card {
+ padding: 0.75rem;
+
+ .review-header {
+ flex-direction: column;
+ gap: 0.5rem;
+
+ .review-stars {
+ align-self: flex-start;
+ }
+ }
+
+ .review-text {
+ font-size: 0.9rem;
+ }
+ }
+
+ .novo-specs-table {
+ td {
+ padding: 6px 8px;
+ font-size: 0.8rem;
+ display: block;
+ }
+
+ .spec-key {
+ width: 100%;
+ padding-bottom: 2px;
+ }
+
+ .spec-value {
+ padding-top: 0;
+ }
+
+ tr {
+ display: flex;
+ flex-direction: column;
+ padding: 6px 0;
+ }
+ }
+}
+
// ========== BADGES, TAGS & SPECS (shared) ==========
// Badges