← back to Handbag Authentication
public/css/product.css
575 lines
/* Product Detail Page Styles */
.product-detail {
padding: 2rem 0;
}
.back-nav {
margin-bottom: 1.5rem;
}
.btn-back {
display: inline-block;
padding: 0.75rem 1.5rem;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
text-decoration: none;
border-radius: 8px;
font-weight: 600;
transition: transform 0.2s;
}
.btn-back:hover {
transform: translateX(-5px);
}
/* Product Header */
.product-header {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 3rem;
margin-bottom: 3rem;
background: white;
padding: 2rem;
border-radius: 15px;
box-shadow: 0 4px 20px rgba(0,0,0,0.08);
}
.product-images {
position: relative;
}
.main-image {
width: 100%;
border-radius: 12px;
border: 2px solid #e0e0e0;
margin-bottom: 1rem;
}
.image-actions {
display: flex;
gap: 1rem;
}
.btn-zoom, .btn-reverse-search {
flex: 1;
padding: 0.75rem;
border: none;
border-radius: 8px;
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
color: white;
font-weight: 600;
cursor: pointer;
transition: transform 0.2s;
}
.btn-zoom:hover, .btn-reverse-search:hover {
transform: scale(1.05);
}
.product-summary h2 {
font-size: 1.8rem;
margin-bottom: 1rem;
color: #2c3e50;
}
.product-meta {
display: flex;
gap: 0.75rem;
flex-wrap: wrap;
margin-bottom: 1.5rem;
}
.badge {
padding: 0.5rem 1rem;
border-radius: 20px;
font-size: 0.85rem;
font-weight: 600;
}
.badge-brand {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
}
.badge-source {
background: #e3f2fd;
color: #1976d2;
}
.badge-condition {
background: #e8f5e9;
color: #388e3c;
}
.badge-type {
background: #fff3e0;
color: #f57c00;
}
/* Quick Stats */
.quick-stats {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1rem;
margin-bottom: 2rem;
}
.stat-box {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
padding: 1.25rem;
border-radius: 10px;
text-align: center;
}
.stat-box.highlight {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
}
.stat-box.profit {
background: linear-gradient(135deg, #11998e 0%, #38ef7d 100%);
color: white;
}
.stat-box label {
font-size: 0.85rem;
opacity: 0.9;
margin-bottom: 0.5rem;
display: block;
}
.stat-box h3 {
font-size: 1.8rem;
margin: 0.5rem 0;
}
.stat-box p {
font-size: 0.9rem;
opacity: 0.85;
margin: 0;
}
/* Action Buttons */
.action-buttons {
display: flex;
gap: 1rem;
flex-wrap: wrap;
}
.btn-primary, .btn-presell, .btn-compare {
flex: 1;
padding: 1rem 1.5rem;
border: none;
border-radius: 10px;
font-weight: 700;
font-size: 1rem;
cursor: pointer;
transition: all 0.3s;
text-align: center;
text-decoration: none;
display: inline-block;
}
.btn-primary {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
}
.btn-presell {
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
color: white;
}
.btn-compare {
background: linear-gradient(135deg, #fa709a 0%, #fee140 100%);
color: #2c3e50;
}
.btn-primary:hover, .btn-presell:hover, .btn-compare:hover {
transform: translateY(-3px);
box-shadow: 0 8px 20px rgba(0,0,0,0.2);
}
/* Tabs */
.tabs {
display: flex;
gap: 0.5rem;
margin-bottom: 2rem;
flex-wrap: wrap;
}
.tab {
padding: 1rem 1.5rem;
background: white;
border: 2px solid #e0e0e0;
border-radius: 10px;
font-weight: 600;
cursor: pointer;
transition: all 0.3s;
}
.tab:hover {
border-color: #667eea;
color: #667eea;
}
.tab.active {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
border-color: #667eea;
}
.tab-content {
display: none;
background: white;
padding: 2rem;
border-radius: 15px;
box-shadow: 0 4px 20px rgba(0,0,0,0.08);
}
.tab-content.active {
display: block;
}
.tab-content h3 {
font-size: 1.5rem;
margin-bottom: 1.5rem;
color: #2c3e50;
}
.tab-content h4 {
font-size: 1.2rem;
margin: 1.5rem 0 1rem 0;
color: #34495e;
}
/* Cost Breakdown Table */
.breakdown-table {
width: 100%;
border-collapse: collapse;
margin-bottom: 2rem;
}
.breakdown-table th {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 1rem;
text-align: left;
font-weight: 600;
}
.breakdown-table td {
padding: 1rem;
border-bottom: 1px solid #e0e0e0;
}
.breakdown-table tr:hover {
background: #f5f7fa;
}
.breakdown-table .total-row {
font-weight: 700;
font-size: 1.1rem;
background: #e8f5e9;
}
/* SKU Grid */
.sku-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 1.5rem;
}
.sku-card {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
padding: 1.5rem;
border-radius: 12px;
}
.sku-card h4 {
margin-top: 0;
}
.detail-table {
width: 100%;
}
.detail-table td {
padding: 0.5rem;
}
.detail-table td:first-child {
font-weight: 600;
width: 40%;
}
/* Retailer Grid */
.retailer-note {
background: #fff3e0;
padding: 1rem;
border-radius: 8px;
margin-bottom: 1.5rem;
border-left: 4px solid #f57c00;
}
.retailer-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 1.5rem;
margin-bottom: 2rem;
}
.retailer-card {
background: white;
border: 2px solid #e0e0e0;
border-radius: 12px;
padding: 1.5rem;
text-align: center;
transition: all 0.3s;
}
.retailer-card:hover {
border-color: #667eea;
transform: translateY(-5px);
box-shadow: 0 8px 20px rgba(0,0,0,0.1);
}
.retailer-card img {
width: 60px;
height: 60px;
margin-bottom: 1rem;
}
.retailer-card h4 {
margin: 0.5rem 0;
}
.retailer-card a {
display: inline-block;
margin-top: 1rem;
padding: 0.75rem 1.5rem;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
text-decoration: none;
border-radius: 8px;
font-weight: 600;
}
/* History Sources */
.history-sources {
display: flex;
gap: 1rem;
margin-bottom: 2rem;
}
.source-btn {
padding: 0.75rem 1.5rem;
background: white;
border: 2px solid #e0e0e0;
border-radius: 8px;
cursor: pointer;
font-weight: 600;
transition: all 0.3s;
}
.source-btn:hover {
border-color: #667eea;
}
.source-btn.active {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
border-color: #667eea;
}
.price-history {
margin-bottom: 2rem;
}
.history-stats {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 1rem;
}
.history-stats .stat-card {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
padding: 1.5rem;
border-radius: 10px;
text-align: center;
}
.history-stats .stat-card h4 {
margin-top: 0;
font-size: 1rem;
opacity: 0.8;
}
.history-stats .stat-card p {
font-size: 1.5rem;
font-weight: 700;
color: #667eea;
margin: 0;
}
/* Comps Grid */
.comps-filters {
display: flex;
gap: 1rem;
margin-bottom: 2rem;
}
.comps-filters select {
padding: 0.75rem 1rem;
border: 2px solid #e0e0e0;
border-radius: 8px;
font-size: 1rem;
cursor: pointer;
}
.comps-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 1.5rem;
}
.comp-card {
background: white;
border: 2px solid #e0e0e0;
border-radius: 12px;
overflow: hidden;
transition: all 0.3s;
}
.comp-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 20px rgba(0,0,0,0.1);
}
.comp-card img {
width: 100%;
height: 200px;
object-fit: cover;
}
.comp-card-body {
padding: 1rem;
}
.comp-card-body h5 {
font-size: 0.9rem;
margin: 0 0 0.5rem 0;
color: #2c3e50;
}
.comp-card-body .price {
font-size: 1.3rem;
font-weight: 700;
color: #27ae60;
margin: 0.5rem 0;
}
.comp-card-body .meta {
font-size: 0.85rem;
color: #7f8c8d;
}
/* Platform Comparison */
.platform-comparison-table {
overflow-x: auto;
}
.platform-comparison-table table {
width: 100%;
border-collapse: collapse;
}
.platform-comparison-table th {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 1rem;
text-align: left;
font-weight: 600;
}
.platform-comparison-table td {
padding: 1rem;
border-bottom: 1px solid #e0e0e0;
}
.platform-comparison-table tr:hover {
background: #f5f7fa;
}
.platform-comparison-table .platform-name {
font-weight: 700;
color: #2c3e50;
}
.platform-comparison-table .profit-positive {
color: #27ae60;
font-weight: 700;
}
.platform-comparison-table .profit-negative {
color: #e74c3c;
font-weight: 700;
}
/* Responsive */
@media (max-width: 768px) {
.product-header {
grid-template-columns: 1fr;
gap: 2rem;
}
.quick-stats {
grid-template-columns: 1fr;
}
.tabs {
flex-direction: column;
}
.history-stats {
grid-template-columns: 1fr 1fr;
}
}
/* Real Sold Comps Styling */
.comps-loading {
padding: 1rem;
text-align: center;
color: #7f8c8d;
font-style: italic;
animation: pulse 1.5s ease-in-out infinite;
}
@keyframes pulse {
0%, 100% { opacity: 0.6; }
50% { opacity: 1; }
}
.no-comps {
padding: 0.75rem;
text-align: center;
color: #95a5a6;
font-size: 0.85rem;
}
.comp-source {
font-size: 0.7rem;
color: #7f8c8d;
text-transform: uppercase;
font-weight: 400;
display: block;
margin-top: 0.2rem;
}
.comp-price {
font-weight: 700;
color: #27ae60;
font-size: 1rem;
}