.customer-request-dashboard {
max-width: 1200px;
margin: 0 auto;
padding: var(--space-3xl) var(--space-md);
} .dashboard-header {
text-align: center;
margin-bottom: var(--space-3xl);
}
.dashboard-header h1 {
font-size: var(--font-size-3xl);
font-weight: var(--font-weight-bold);
margin: 0 0 var(--space-sm) 0;
color: var(--gray-900);
}
.dashboard-subtitle {
font-size: var(--font-size-lg);
color: var(--gray-600);
margin: 0;
line-height: var(--line-height-normal);
} .request-summary {
background: #ffffff;
border: var(--border-width) solid var(--border-color-light);
border-radius: var(--radius-md);
padding: var(--space-2xl);
margin-bottom: var(--space-2xl);
box-shadow: var(--shadow-sm);
transition: var(--transition-fast);
}
.request-summary:hover {
border-color: var(--border-color-dark);
} .request-header {
margin-bottom: 30px;
}
.request-header-main {
display: flex;
align-items: center;
gap: 15px;
flex-wrap: wrap;
margin-bottom: 20px;
}
.request-title {
font-size: 28px;
font-weight: 700;
margin: 0;
color: #2c3e50;
flex: 1;
}
.trade-badge {
display: inline-flex;
align-items: center;
padding: var(--space-xs) var(--space-sm);
background: var(--accent);
color: #fff;
border-radius: var(--radius-full);
font-size: var(--font-size-sm);
font-weight: var(--font-weight-semibold);
text-transform: uppercase;
letter-spacing: var(--letter-spacing-wide);
}
.request-meta {
display: flex;
flex-wrap: wrap;
gap: 20px;
font-size: 15px;
color: #7f8c8d;
}
.request-meta span {
display: flex;
align-items: center;
gap: 8px;
background: #f8f9fa;
padding: 8px 16px;
border-radius: 8px;
transition: all 0.3s ease;
}
.request-meta span:hover {
background: #e9ecef;
} .response-summary-badge {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 12px 20px;
background: linear-gradient(135deg, #4caf50 0%, #45a049 100%);
color: #fff;
border-radius: 8px;
font-size: 16px;
font-weight: 600;
margin-bottom: 30px;
box-shadow: 0 4px 12px rgba(76, 175, 80, 0.3);
}
.response-summary-badge strong {
font-size: 20px;
} .request-actions {
margin-top: 30px;
padding-top: 25px;
border-top: 1px solid #e9ecef;
}
.request-actions a[href*="tel:"] {
color: unset;
}
.btn-toggle-details {
background: #f8f9fa;
border: 2px solid #e9ecef;
padding: 12px 24px;
border-radius: 8px;
font-size: 15px;
font-weight: 600;
color: #34495e;
cursor: pointer;
transition: all 0.3s ease;
display: inline-flex;
align-items: center;
gap: 8px;
}
.btn-toggle-details:hover {
background: white;
border-color: var(--accent);
color: var(--accent);
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(102, 126, 234, 0.2);
}
.request-full-details {
margin-top: 25px;
padding: 25px;
background: #f8f9fa;
border-radius: 12px;
border-left: 4px solid var(--accent);
}
.request-full-details h4 {
margin: 0 0 15px 0;
font-size: 18px;
font-weight: 700;
color: #2c3e50;
}
.request-full-details p {
margin: 12px 0;
font-size: 15px;
line-height: 1.7;
color: #34495e;
}
.request-full-details strong {
color: #2c3e50;
font-weight: 600;
} .responses {
margin-top: 30px;
}
.no-responses {
text-align: center;
padding: 50px 30px;
background: #f8f9fa;
border-radius: 12px;
border: 2px dashed #e9ecef;
}
.no-responses p {
margin: 0;
color: #7f8c8d;
font-size: 16px;
line-height: 1.6;
} .response-card {
background: #ffffff;
border: 2px solid #e9ecef;
border-radius: 12px;
padding: 30px;
margin-bottom: 25px;
transition: all 0.3s ease;
}
.response-card:hover {
box-shadow: 0 8px 25px rgba(0,0,0,0.1);
border-color: var(--accent);
transform: translateY(-3px);
}
.response-card.unlocked {
border-color: #4caf50;
background: linear-gradient(to bottom right, #ffffff 0%, #f0f9f4 100%);
box-shadow: 0 4px 20px rgba(76, 175, 80, 0.15);
} .business-info {
display: flex;
align-items: center;
gap: 20px;
margin-bottom: 25px;
padding-bottom: 20px;
border-bottom: 2px solid #f8f9fa;
}
.business-logo {
width: 70px;
height: 70px;
border-radius: 50%;
object-fit: cover;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
border: 3px solid #fff;
}
.business-logo-placeholder {
width: 70px;
height: 70px;
border-radius: 50%;
background: linear-gradient(135deg, var(--accent) 0%, var(--accent) 100%);
display: flex;
align-items: center;
justify-content: center;
color: #fff;
font-size: 28px;
font-weight: 700;
box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
border: 3px solid #fff;
}
.business-details {
flex: 1;
}
.business-name {
margin: 0 0 10px 0;
font-size: 22px;
font-weight: 700;
color: #2c3e50;
}
.business-meta {
display: flex;
flex-wrap: wrap;
gap: 12px;
font-size: 14px;
color: #7f8c8d;
}
.business-meta span {
display: flex;
align-items: center;
gap: 6px;
background: #f8f9fa;
padding: 6px 12px;
border-radius: 6px;
transition: all 0.3s ease;
}
.business-meta span:hover {
background: #e9ecef;
} .response-content {
margin-bottom: 25px;
}
.response-content h4 {
margin: 0 0 12px 0;
font-size: 16px;
font-weight: 700;
color: #2c3e50;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.response-message {
margin: 0 0 20px 0;
padding: 20px;
background: linear-gradient(to right, #f8f9fa 0%, #ffffff 100%);
border-left: 4px solid var(--accent);
border-radius: 8px;
font-size: 15px;
line-height: 1.7;
color: #34495e;
white-space: pre-wrap;
} .response-estimate,
.response-timeframe {
margin: 12px 0;
padding: 15px 20px;
background: linear-gradient(135deg, #e3f2fd 0%, #f0f8ff 100%);
border-radius: 8px;
border-left: 4px solid #2196F3;
font-size: 15px;
display: flex;
align-items: center;
gap: 10px;
}
.response-estimate strong,
.response-timeframe strong {
color: #1565c0;
font-weight: 700;
}
.response-estimate span,
.response-timeframe span {
color: #34495e;
} .unlock-action {
margin-top: 25px;
padding: 25px;
background: linear-gradient(135deg, #fff3cd 0%, #fff8e1 100%);
border-radius: 12px;
border: 2px solid #ffc107;
}
.unlock-info {
margin: 0 0 15px 0;
font-size: 15px;
color: #856404;
line-height: 1.6;
}
.btn-unlock-contact {
width: 100%;
padding: 16px 32px;
background: linear-gradient(135deg, var(--accent) 0%, var(--accent) 100%);
color: #fff;
border: none;
border-radius: 8px;
font-size: 17px;
font-weight: 700;
cursor: pointer;
transition: all 0.3s ease;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 10px;
box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);
}
.btn-unlock-contact:hover {
transform: translateY(-3px);
box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
}
.btn-unlock-contact:active {
transform: translateY(-1px);
} .contact-unlocked {
margin-top: 25px;
padding: 30px;
background: linear-gradient(135deg, #e8f5e9 0%, #f1f8f4 100%);
border: 3px solid #4caf50;
border-radius: 12px;
box-shadow: 0 4px 20px rgba(76, 175, 80, 0.2);
}
.unlock-status {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 20px;
color: #2e7d32;
font-weight: 700;
font-size: 16px;
padding: 12px 20px;
background: rgba(255, 255, 255, 0.7);
border-radius: 8px;
}
.business-contact {
background: #fff;
padding: 25px;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
}
.business-contact h4 {
margin: 0 0 15px 0;
font-size: 18px;
font-weight: 700;
color: #2c3e50;
}
.business-contact p {
margin: 12px 0;
font-size: 15px;
color: #34495e;
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 10px;
}
.business-contact strong {
color: #2c3e50;
font-weight: 700;
min-width: 100px;
}
.business-contact a {
color: var(--accent);
text-decoration: none;
transition: all 0.3s ease;
}
.business-contact a:hover {
color: #2c3e50;
text-decoration: underline;
}
.contact-actions {
display: flex;
gap: 12px;
margin-top: 20px;
}
.btn-contact {
flex: 1;
padding: 14px 24px;
border: none;
border-radius: 8px;
font-size: 16px;
font-weight: 700;
text-decoration: none;
text-align: center;
cursor: pointer;
transition: all 0.3s ease;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
}
.btn-contact:nth-child(1) {
background: linear-gradient(135deg, #4caf50 0%, #45a049 100%);
color: #fff;
box-shadow: 0 4px 12px rgba(76, 175, 80, 0.3);
}
.btn-contact:nth-child(1):hover {
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(76, 175, 80, 0.4);
}
.btn-contact:nth-child(2) {
background: linear-gradient(135deg, #2196F3 0%, #0b7dda 100%);
color: #fff;
box-shadow: 0 4px 12px rgba(33, 150, 243, 0.3);
}
.btn-contact:nth-child(2):hover {
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(33, 150, 243, 0.4);
} .modal {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.6);
z-index: 10000;
overflow-y: auto;
padding: 20px;
backdrop-filter: blur(4px);
}
.modal-content {
background: #fff;
max-width: 550px;
margin: 50px auto;
border-radius: 16px;
padding: 40px;
position: relative;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
animation: modalSlideIn 0.3s ease-out;
}
@keyframes modalSlideIn {
from {
opacity: 0;
transform: translateY(-30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.modal-content h2 {
margin: 0 0 20px 0;
font-size: 28px;
font-weight: 700;
color: #2c3e50;
}
.modal-content > p {
margin: 0 0 25px 0;
font-size: 16px;
line-height: 1.6;
color: #7f8c8d;
}
.unlock-info-box {
margin: 25px 0;
padding: 25px;
background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);
border-radius: 12px;
border: 2px solid #e9ecef;
}
.unlock-info-box h3 {
margin: 0 0 15px 0;
font-size: 18px;
font-weight: 700;
color: #2c3e50;
}
.unlock-info-box ul {
list-style: none;
padding: 0;
margin: 0 0 15px 0;
}
.unlock-info-box li {
padding: 10px 0;
font-size: 15px;
color: #34495e;
border-bottom: 1px solid #e9ecef;
}
.unlock-info-box li:last-child {
border-bottom: none;
}
.unlock-info-box strong {
color: var(--accent);
font-weight: 700;
}
.privacy-note {
margin: 15px 0 0 0;
padding: 15px;
background: #fff3cd;
border-left: 4px solid #ffc107;
border-radius: 8px;
font-size: 14px;
color: #856404;
line-height: 1.6;
}
.modal-actions {
display: flex;
gap: 12px;
margin-top: 30px;
}
.btn-confirm-unlock,
.btn-cancel-unlock {
flex: 1;
padding: 16px 32px;
border: none;
border-radius: 8px;
font-size: 17px;
font-weight: 700;
cursor: pointer;
transition: all 0.3s ease;
}
.btn-confirm-unlock {
background: linear-gradient(135deg, var(--accent) 0%, var(--accent) 100%);
color: #fff;
box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);
}
.btn-confirm-unlock:hover {
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);
}
.btn-cancel-unlock {
background: #f8f9fa;
color: #7f8c8d;
border: 2px solid #e9ecef;
}
.btn-cancel-unlock:hover {
background: #e9ecef;
color: #34495e;
} .message-overlay {
display: none;
position: fixed;
top: 30px;
left: 50%;
transform: translateX(-50%);
z-index: 10001;
max-width: 500px;
width: 90%;
}
.message-box {
padding: 18px 25px;
border-radius: 12px;
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.25);
font-size: 15px;
font-weight: 600;
animation: slideDown 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
@keyframes slideDown {
from {
opacity: 0;
transform: translateY(-30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.message-box.success {
background: linear-gradient(135deg, #d4edda 0%, #c3e6cb 100%);
border: 2px solid #4caf50;
color: #155724;
}
.message-box.error {
background: linear-gradient(135deg, #f8d7da 0%, #f5c6cb 100%);
border: 2px solid #dc3545;
color: #721c24;
} .dashboard-message {
padding: 18px 25px;
border-radius: 12px;
margin-bottom: 25px;
font-size: 15px;
font-weight: 600;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15);
animation: slideDown 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.dashboard-message.success {
background: linear-gradient(135deg, #d4edda 0%, #c3e6cb 100%);
border: 2px solid #4caf50;
color: #155724;
}
.dashboard-message.error {
background: linear-gradient(135deg, #f8d7da 0%, #f5c6cb 100%);
border: 2px solid #dc3545;
color: #721c24;
} .loading-overlay {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(255, 255, 255, 0.95);
z-index: 9999;
align-items: center;
justify-content: center;
backdrop-filter: blur(4px);
}
.loading-spinner {
width: 60px;
height: 60px;
border: 5px solid #f3f3f3;
border-top: 5px solid var(--accent);
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
} .empty-state {
text-align: center;
padding: 80px 40px;
background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);
border-radius: 16px;
border: 2px dashed #e9ecef;
}
.empty-state p {
margin: 0 0 25px 0;
font-size: 18px;
color: #7f8c8d;
line-height: 1.6;
}
.btn-primary {
display: inline-block;
padding: 16px 40px;
background: linear-gradient(135deg, var(--accent) 0%, var(--accent) 100%);
color: #fff;
text-decoration: none;
border-radius: 8px;
font-size: 17px;
font-weight: 700;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);
}
.btn-primary:hover {
transform: translateY(-3px);
box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
} @media (max-width: 768px) {
.customer-request-dashboard {
padding: 40px 15px;
}
.dashboard-header h1 {
font-size: 28px;
}
.dashboard-subtitle {
font-size: 16px;
}
.request-summary {
padding: 25px 20px;
}
.request-title {
font-size: 22px;
}
.request-header-main {
flex-direction: column;
align-items: flex-start;
gap: 12px;
}
.trade-badge {
align-self: flex-start;
}
.request-meta {
flex-direction: column;
gap: 10px;
}
.request-meta span {
justify-content: flex-start;
}
.business-info {
flex-direction: column;
text-align: center;
align-items: center;
}
.business-name {
font-size: 20px;
}
.business-meta {
flex-direction: column;
gap: 8px;
width: 100%;
}
.business-meta span {
justify-content: center;
}
.contact-actions {
flex-direction: column;
}
.btn-contact {
width: 100%;
}
.modal-content {
margin: 20px;
padding: 30px 20px;
}
.modal-content h2 {
font-size: 24px;
}
.modal-actions {
flex-direction: column;
}
.btn-confirm-unlock,
.btn-cancel-unlock {
width: 100%;
}
.empty-state {
padding: 50px 25px;
}
}
@media (max-width: 480px) {
.customer-request-dashboard {
padding: 30px 10px;
}
.dashboard-header h1 {
font-size: 24px;
}
.dashboard-subtitle {
font-size: 15px;
}
.request-summary {
padding: 20px 15px;
margin-bottom: 30px;
}
.request-title {
font-size: 20px;
}
.trade-badge {
font-size: 12px;
padding: 6px 12px;
}
.response-card {
padding: 20px 15px;
}
.business-logo,
.business-logo-placeholder {
width: 60px;
height: 60px;
font-size: 24px;
}
.business-name {
font-size: 18px;
}
.btn-unlock-contact {
font-size: 16px;
padding: 14px 24px;
}
.modal-content {
padding: 25px 15px;
}
}