:root{
--primary:#16a34a;
--primary-dark:#15803d;
--secondary:#0f172a;
--accent:#f59e0b;
--bg:#f4f7fb;
--card:#ffffff;
--text:#1f2937;
--muted:#6b7280;
--border:#e5e7eb;
--danger-bg:#fee2e2;
--danger-text:#991b1b;
--success-bg:#dcfce7;
--success-text:#166534;
--info-bg:#dbeafe;
--info-text:#1d4ed8;
--shadow:0 12px 30px rgba(15, 23, 42, 0.08);
--radius:22px;
}
* {
box-sizing: border-box;
}
html {
font-size: 16px;
-webkit-text-size-adjust: 100%;
scroll-behavior: smooth;
}
body {
margin: 0;
padding: 0;
font-family: "Cairo", sans-serif;
background:
radial-gradient(circle at top right, rgba(34,197,94,.08), transparent 18%),
linear-gradient(180deg, #f8fbff 0%, #eef4f8 100%);
color: var(--text);
overflow-x: hidden;
}
img {
max-width: 100%;
height: auto;
display: block;
}
.page-wrap {
width: min(1180px, 94%);
margin: 18px auto 30px;
}
.hero {
background: linear-gradient(135deg, #0f172a, #1e293b 60%, #14532d 140%);
color: white;
border-radius: 22px;
padding: 24px 18px;
box-shadow: var(--shadow);
position: relative;
overflow: hidden;
margin-bottom: 18px;
}
.hero::before,
.hero::after {
content: "";
position: absolute;
border-radius: 999px;
background: rgba(255,255,255,.08);
}
.hero::before {
width: 160px;
height: 160px;
left: -60px;
bottom: -70px;
}
.hero::after {
width: 110px;
height: 110px;
right: 10px;
top: -35px;
}
.hero h1 {
margin: 0 0 10px;
font-size: clamp(24px, 6vw, 42px);
line-height: 1.35;
}
.hero p {
margin: 0;
max-width: 780px;
line-height: 1.9;
color: #dbeafe;
font-size: 14px;
}
.top-stats {
display: grid;
grid-template-columns: 1fr;
gap: 12px;
margin-top: 18px;
}
.stat-card {
background: rgba(255,255,255,.92);
color: var(--secondary);
border-radius: 18px;
padding: 16px;
backdrop-filter: blur(8px);
}
.stat-label {
color: var(--muted);
font-size: 13px;
margin-bottom: 8px;
}
.stat-value {
font-size: 24px;
font-weight: 800;
line-height: 1.3;
}
.stat-stars {
color: var(--accent);
margin-top: 8px;
letter-spacing: 2px;
font-size: 16px;
}
.main-grid {
display: grid;
grid-template-columns: 1fr;
gap: 18px;
align-items: start;
}
.card {
background: var(--card);
border-radius: 18px;
padding: 18px;
box-shadow: var(--shadow);
border: 1px solid var(--border);
overflow: hidden;
}
.card h2, .card h3 {
margin-top: 0;
color: var(--secondary);
}
.sticky {
position: static;
}
.alert-box {
margin: 14px 0;
padding: 14px 16px;
border-radius: 14px;
font-size: 14px;
line-height: 1.8;
}
.alert-box.success { background: var(--success-bg); color: var(--success-text); border: 1px solid #86efac; }
.alert-box.danger  { background: var(--danger-bg); color: var(--danger-text); border: 1px solid #fca5a5; }
.alert-box.info    { background: var(--info-bg); color: var(--info-text); border: 1px solid #93c5fd; }
.alert-actions {
margin-top: 10px;
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.btn-alert,
.btn-primary,
.btn-secondary,
.btn-load-more {
display: inline-flex;
align-items: center;
justify-content: center;
border: none;
text-decoration: none;
border-radius: 14px;
transition: .25s ease;
cursor: pointer;
font-family: inherit;
}
.btn-alert {
padding: 10px 14px;
background: #111827;
color: white;
font-weight: 700;
}
.btn-alert.blue { background: #2563eb; }
.btn-primary {
width: 100%;
padding: 14px 16px;
color: white;
font-size: 15px;
font-weight: 800;
background: linear-gradient(135deg, var(--primary), #22c55e);
box-shadow: 0 12px 24px rgba(34, 197, 94, 0.18);
}
.btn-primary:hover,
.btn-alert:hover,
.btn-load-more:hover {
transform: translateY(-2px);
}
.btn-secondary {
width: 100%;
padding: 12px 14px;
background: #eef2ff;
color: #3730a3;
font-weight: 700;
margin-top: 10px;
}
.form-group {
margin-bottom: 16px;
}
label {
display: block;
margin-bottom: 8px;
font-weight: 700;
color: var(--secondary);
font-size: 14px;
}
input, textarea {
width: 100%;
border: 1px solid var(--border);
background: white;
border-radius: 14px;
padding: 13px 14px;
font-size: 15px;
color: var(--text);
outline: none;
transition: .2s ease;
font-family: inherit;
}
input:focus, textarea:focus {
border-color: #22c55e;
box-shadow: 0 0 0 4px rgba(34,197,94,.12);
}
input[disabled] {
background: #f3f4f6;
color: #6b7280;
cursor: not-allowed;
}
textarea {
min-height: 110px;
resize: vertical;
}
.stars-input {
display: flex;
gap: 6px;
flex-wrap: nowrap;
direction: ltr;
justify-content: flex-end;
}
.stars-input i {
font-size: 28px;
color: #d1d5db;
cursor: pointer;
transition: transform .15s ease, color .15s ease;
}
.stars-input i.active {
color: var(--accent);
}
.hint {
font-size: 12px;
color: var(--muted);
margin-top: 8px;
}
.reviews-header {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 12px;
margin-bottom: 12px;
}
.reviews-count {
color: var(--muted);
font-size: 13px;
}
.social-share-icons {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
.social-icon {
width: 40px;
height: 40px;
border: 1px solid var(--border);
background: #fff;
color: #334155;
border-radius: 50%;
display: inline-flex;
align-items: center;
justify-content: center;
text-decoration: none;
cursor: pointer;
transition: .25s ease;
box-shadow: 0 4px 10px rgba(15, 23, 42, 0.05);
flex-shrink: 0;
}
.social-icon i {
font-size: 16px;
}
.social-icon:hover {
transform: translateY(-3px);
box-shadow: 0 10px 18px rgba(15, 23, 42, 0.10);
}
.social-icon.whatsapp:hover {
background: #25d366;
border-color: #25d366;
color: #fff;
}
.social-icon.facebook:hover {
background: #1877f2;
border-color: #1877f2;
color: #fff;
}
.social-icon.twitter:hover {
background: #111827;
border-color: #111827;
color: #fff;
}
.social-icon.copy:hover {
background: #6b7280;
border-color: #6b7280;
color: #fff;
}
.section-substats {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 10px;
margin-bottom: 16px;
}
.mini-stat {
background: #f8fafc;
border: 1px solid var(--border);
border-radius: 14px;
padding: 12px;
min-width: 0;
}
.mini-stat strong {
display: block;
font-size: 20px;
color: var(--secondary);
line-height: 1.2;
}
.mini-stat span {
color: var(--muted);
font-size: 12px;
}
.reviews-grid {
display: grid;
grid-template-columns: 1fr;
gap: 14px;
}
.review-box {
background: linear-gradient(180deg, #fff 0%, #fbfdff 100%);
border: 1px solid var(--border);
border-radius: 18px;
padding: 16px;
box-shadow: 0 5px 16px rgba(15,23,42,.04);
transition: .25s ease;
}
.review-box:hover {
transform: translateY(-4px);
box-shadow: 0 14px 28px rgba(15,23,42,.08);
}
.review-top {
display: flex;
flex-direction: column;
gap: 10px;
margin-bottom: 12px;
}
.review-name {
font-size: 16px;
font-weight: 800;
color: var(--secondary);
line-height: 1.4;
}
.review-meta-row {
display: flex;
gap: 8px;
flex-wrap: wrap;
margin-top: 8px;
}
.review-city,
.verified-badge {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 12px;
border-radius: 999px;
padding: 6px 10px;
}
.review-city {
background: #f3f4f6;
color: #4b5563;
}
.verified-badge {
background: #ecfdf5;
color: #047857;
}
.review-rating {
color: var(--accent);
font-size: 17px;
white-space: nowrap;
letter-spacing: 2px;
}
.review-comment {
font-size: 14px;
color: #374151;
line-height: 1.9;
margin: 12px 0;
word-break: break-word;
}
.review-date {
color: var(--muted);
font-size: 12px;
border-top: 1px dashed var(--border);
padding-top: 10px;
}
.reviews-footer {
margin-top: 20px;
text-align: center;
}
.btn-load-more {
width: 100%;
padding: 14px 18px;
background: var(--secondary);
color: white;
font-weight: 800;
font-size: 15px;
}
.empty-state {
text-align: center;
padding: 28px 16px;
border: 1px dashed var(--border);
border-radius: 18px;
background: #f9fafb;
color: var(--muted);
font-size: 14px;
}
.loader {
display: none;
text-align: center;
padding: 14px;
color: var(--muted);
font-weight: 700;
font-size: 14px;
}
.loader.show { display: block; }
.flash-message {
display: none;
margin-bottom: 14px;
}
.flash-message.show { display: block; }
@media (min-width: 640px) {
.page-wrap {
width: min(1180px, 95%);
margin: 24px auto 36px;
}
.hero {
padding: 28px 22px;
}
.top-stats {
grid-template-columns: repeat(2, 1fr);
}
.reviews-grid {
grid-template-columns: repeat(2, 1fr);
}
.review-top {
flex-direction: row;
justify-content: space-between;
align-items: flex-start;
}
.reviews-header {
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.btn-load-more {
width: auto;
min-width: 220px;
}
}
@media (min-width: 992px) {
.page-wrap {
margin: 28px auto 40px;
}
.hero {
border-radius: 28px;
padding: 34px 26px;
}
.hero::before {
width: 220px;
height: 220px;
left: -70px;
bottom: -90px;
}
.hero::after {
width: 140px;
height: 140px;
right: 30px;
top: -50px;
}
.top-stats {
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 16px;
margin-top: 22px;
}
.main-grid {
grid-template-columns: 390px 1fr;
gap: 22px;
}
.card {
border-radius: var(--radius);
padding: 24px;
}
.sticky {
position: sticky;
top: 18px;
}
.section-substats {
display: flex;
gap: 16px;
flex-wrap: wrap;
}
.mini-stat {
min-width: 140px;
padding: 12px 14px;
}
.mini-stat strong {
font-size: 22px;
}
.reviews-grid {
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 18px;
}
.review-box {
padding: 18px;
}
.stars-input i {
font-size: 32px;
}
}
.reviews-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
}
.review-box {
border-radius: 16px;
padding: 12px;
}
.review-name {
font-size: 14px;
}
.review-rating {
font-size: 14px;
}
.review-comment {
font-size: 12px;
margin: 10px 0;
}
.review-date {
font-size: 11px;
}
.review-city,
.verified-badge {
font-size: 10px;
padding: 4px 8px;
}
@media (min-width: 640px) {
.reviews-grid {
grid-template-columns: repeat(2, 1fr);
gap: 14px;
}
}
@media (min-width: 992px) {
.reviews-grid {
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 18px;
}
.review-box {
padding: 18px;
}
.review-name {
font-size: 16px;
}
.review-comment {
font-size: 14px;
}
}