initial commit

This commit is contained in:
Azmat Ali
2026-03-26 15:52:12 +05:30
commit dd78914161
37 changed files with 6983 additions and 0 deletions
+177
View File
@@ -0,0 +1,177 @@
/* ============================================================
ABOUT — LAYOUT B
Full-width centered text block. Stats row inline below.
No split — content breathes with generous whitespace.
============================================================ */
.about-b {
padding: 6rem 0;
background-color: var(--color-bg);
transition: background-color 0.4s ease;
}
/* ── Top: centered text block ──────────────────────────── */
.about-b-text {
max-width: 680px;
margin: 0 auto 4rem;
text-align: center;
}
.about-b-text .section-title {
margin-bottom: 1rem;
}
.about-b-body {
font-size: 1rem;
color: var(--color-text-muted);
line-height: 1.85;
margin-bottom: 1rem;
}
.about-b-body + .about-b-body { margin-bottom: 2rem; }
.about-b-actions {
display: flex;
align-items: center;
justify-content: center;
gap: 1rem;
flex-wrap: wrap;
}
/* ── Stats bar ─────────────────────────────────────────── */
.about-b-stats {
display: grid;
grid-template-columns: repeat(4, 1fr);
border: 1px solid var(--color-border);
border-radius: var(--radius-xl);
overflow: hidden;
margin-bottom: 4rem;
transition: border-color 0.3s ease;
}
.about-b-stat {
padding: 2rem 1.5rem;
text-align: center;
border-right: 1px solid var(--color-border);
transition: background-color 0.3s ease;
position: relative;
}
.about-b-stat:last-child { border-right: none; }
.about-b-stat::after {
content: '';
position: absolute;
bottom: 0; left: 0; right: 0;
height: 3px;
background: linear-gradient(90deg, var(--color-primary), var(--color-accent));
transform: scaleX(0);
transition: transform 0.3s ease;
}
.about-b-stat:hover { background-color: var(--color-surface); }
.about-b-stat:hover::after { transform: scaleX(1); }
.about-b-stat-number {
font-family: var(--font-heading);
font-size: 2.4rem;
font-weight: 900;
color: var(--color-primary);
line-height: 1;
margin-bottom: 0.4rem;
}
.about-b-stat-label {
font-size: 0.78rem;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--color-text-muted);
margin-bottom: 0.3rem;
}
.about-b-stat-desc {
font-size: 0.8rem;
color: var(--color-text-muted);
line-height: 1.5;
}
/* ── Tags row ──────────────────────────────────────────── */
.about-b-tags {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
justify-content: center;
margin-bottom: 3rem;
}
.about-b-tag {
display: inline-block;
padding: 0.35rem 0.9rem;
border-radius: var(--radius-md);
border: 1px solid var(--color-border);
font-size: 0.8rem;
font-weight: 600;
color: var(--color-text-muted);
background-color: var(--color-surface);
transition: all 0.2s ease;
}
.about-b-tag:hover {
border-color: var(--color-primary);
color: var(--color-primary);
background-color: var(--color-primary-soft);
}
/* ── Team strip ────────────────────────────────────────── */
.about-b-team {
display: flex;
align-items: center;
justify-content: center;
gap: 1rem;
}
.about-b-team-avatars {
display: flex;
}
.about-b-team-avatars span {
width: 40px; height: 40px;
border-radius: 50%;
border: 2px solid var(--color-bg);
background-color: var(--color-surface-2);
display: flex; align-items: center; justify-content: center;
font-size: 0.72rem; font-weight: 700;
color: var(--color-text);
margin-right: -10px;
}
.about-b-team-avatars span:last-child {
background-color: var(--color-primary);
color: var(--color-btn-text);
font-size: 0.65rem;
}
.about-b-team-text {
padding-left: 18px;
font-size: 0.875rem;
color: var(--color-text-muted);
}
.about-b-team-text strong {
color: var(--color-heading);
font-weight: 700;
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 700px) {
.about-b-stats { grid-template-columns: 1fr 1fr; }
.about-b-stat:nth-child(2) { border-right: none; }
.about-b-stat:nth-child(3),
.about-b-stat:nth-child(4) { border-top: 1px solid var(--color-border); }
}
@media (max-width: 480px) {
.about-b-stats { grid-template-columns: 1fr; }
.about-b-stat { border-right: none; border-bottom: 1px solid var(--color-border); }
}
+166
View File
@@ -0,0 +1,166 @@
/* ============================================================
ABOUT — LAYOUT C
Reversed 40/60 split: decorative image panel left,
rich text content right. Bold visual weight on left.
============================================================ */
.about-c {
padding: 6rem 0;
background-color: var(--color-surface);
transition: background-color 0.4s ease;
}
.about-c-inner {
display: grid;
grid-template-columns: 2fr 3fr;
gap: 5rem;
align-items: center;
}
/* ── Left: image panel ─────────────────────────────────── */
.about-c-visual {
position: relative;
}
.about-c-img-placeholder {
aspect-ratio: 4/5;
background-color: var(--card-bg);
border: 1px solid var(--card-border);
border-radius: var(--radius-xl);
overflow: hidden;
position: relative;
display: flex;
align-items: center;
justify-content: center;
transition: border-color 0.3s ease;
}
.about-c-img-placeholder::before {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(135deg, var(--color-primary-soft) 0%, transparent 60%);
}
.about-c-img-label {
font-size: 0.75rem;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--color-text-muted);
position: relative;
z-index: 1;
text-align: center;
}
/* Floating accent card on image */
.about-c-img-card {
position: absolute;
bottom: 1.5rem;
right: -1.5rem;
background-color: var(--color-primary);
color: var(--color-btn-text);
border-radius: var(--radius-lg);
padding: 1rem 1.25rem;
font-size: 0.82rem;
font-weight: 700;
box-shadow: 0 8px 24px var(--color-shadow);
z-index: 2;
line-height: 1.4;
}
.about-c-img-card-num {
font-family: var(--font-heading);
font-size: 1.6rem;
font-weight: 900;
display: block;
line-height: 1;
margin-bottom: 0.2rem;
}
/* ── Right: content ────────────────────────────────────── */
.about-c-content {}
.about-c-content .section-title { margin-bottom: 1rem; }
.about-c-body {
font-size: 0.95rem;
color: var(--color-text-muted);
line-height: 1.85;
margin-bottom: 1rem;
}
.about-c-body + .about-c-body { margin-bottom: 2rem; }
/* ── Inline stats ──────────────────────────────────────── */
.about-c-stats {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin-bottom: 2rem;
}
.about-c-stat {
padding: 1.25rem;
background-color: var(--card-bg);
border: 1px solid var(--card-border);
border-radius: var(--radius-md);
transition: border-color 0.3s ease, transform 0.3s ease;
}
.about-c-stat:hover {
border-color: var(--card-hover-border);
transform: translateY(-2px);
}
.about-c-stat-num {
font-family: var(--font-heading);
font-size: 1.8rem;
font-weight: 900;
color: var(--color-primary);
line-height: 1;
margin-bottom: 0.3rem;
}
.about-c-stat-label {
font-size: 0.8rem;
font-weight: 600;
color: var(--color-text-muted);
}
/* ── Tags ──────────────────────────────────────────────── */
.about-c-tags {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
margin-bottom: 2rem;
}
.about-c-tag {
display: inline-block;
padding: 0.35rem 0.9rem;
border-radius: var(--radius-md);
border: 1px solid var(--color-border);
font-size: 0.8rem;
font-weight: 600;
color: var(--color-text-muted);
background-color: var(--color-surface);
transition: all 0.2s ease;
}
.about-c-tag:hover {
border-color: var(--color-primary);
color: var(--color-primary);
background-color: var(--color-primary-soft);
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 900px) {
.about-c-inner {
grid-template-columns: 1fr;
gap: 3rem;
}
.about-c-img-placeholder { aspect-ratio: 16/7; }
.about-c-img-card { right: 1rem; }
}
+190
View File
@@ -0,0 +1,190 @@
/* ============================================================
ABOUT US COMPONENT
Split layout: left text content, right stat/image block
============================================================ */
.about {
padding: 6rem 0;
background-color: var(--color-bg);
transition: background-color 0.4s ease;
}
.about-inner {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 5rem;
align-items: center;
}
/* ── Left: content ─────────────────────────────────────── */
.about-content .section-subtitle {
margin-bottom: 1.5rem;
}
.about-body {
font-size: 0.95rem;
color: var(--color-text-muted);
line-height: 1.8;
margin-bottom: 1rem;
}
.about-body + .about-body {
margin-bottom: 2rem;
}
.about-tags {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
margin-bottom: 2rem;
}
.about-tag {
display: inline-block;
padding: 0.35rem 0.9rem;
border-radius: var(--radius-md);
border: 1px solid var(--color-border);
font-size: 0.8rem;
font-weight: 600;
color: var(--color-text-muted);
background-color: var(--color-surface);
transition: all 0.2s ease;
}
.about-tag:hover {
border-color: var(--color-primary);
color: var(--color-primary);
background-color: var(--color-primary-soft);
}
/* ── Right: visual panel ───────────────────────────────── */
.about-visual {
display: flex;
flex-direction: column;
gap: 1rem;
}
.about-stat-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
}
.about-stat-card {
background-color: var(--card-bg);
border: 1px solid var(--card-border);
border-radius: var(--radius-lg);
padding: 1.75rem 1.5rem;
position: relative;
overflow: hidden;
transition: border-color 0.3s ease, transform 0.3s ease;
}
.about-stat-card:hover {
border-color: var(--card-hover-border);
transform: translateY(-2px);
}
.about-stat-card::before {
content: '';
position: absolute;
top: 0; left: 0; right: 0;
height: 2px;
background: linear-gradient(90deg, var(--color-primary), var(--color-accent));
opacity: 0;
transition: opacity 0.3s ease;
}
.about-stat-card:hover::before {
opacity: 1;
}
.about-stat-number {
font-family: var(--font-heading);
font-size: 2.2rem;
font-weight: 900;
color: var(--color-primary);
line-height: 1;
margin-bottom: 0.4rem;
}
.about-stat-label {
font-size: 0.82rem;
font-weight: 600;
color: var(--color-text-muted);
text-transform: uppercase;
letter-spacing: 0.06em;
}
.about-stat-desc {
font-size: 0.8rem;
color: var(--color-text-muted);
margin-top: 0.4rem;
line-height: 1.5;
}
/* ── Team row ──────────────────────────────────────────── */
.about-team-card {
background-color: var(--card-bg);
border: 1px solid var(--card-border);
border-radius: var(--radius-lg);
padding: 1.5rem;
display: flex;
align-items: center;
gap: 1rem;
transition: border-color 0.3s ease;
}
.about-team-card:hover {
border-color: var(--card-hover-border);
}
.about-team-avatars {
display: flex;
}
.about-team-avatars span {
width: 40px;
height: 40px;
border-radius: 50%;
border: 2px solid var(--color-bg);
background-color: var(--color-surface-2);
display: flex;
align-items: center;
justify-content: center;
font-size: 0.72rem;
font-weight: 700;
color: var(--color-text);
margin-right: -10px;
transition: background-color 0.3s ease;
}
.about-team-avatars span:last-child {
background-color: var(--color-primary);
color: var(--color-btn-text);
font-size: 0.65rem;
}
.about-team-info {
padding-left: 14px;
}
.about-team-title {
font-size: 0.9rem;
font-weight: 700;
color: var(--color-heading);
margin-bottom: 0.2rem;
}
.about-team-sub {
font-size: 0.8rem;
color: var(--color-text-muted);
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 900px) {
.about-inner {
grid-template-columns: 1fr;
gap: 3rem;
}
}
+168
View File
@@ -0,0 +1,168 @@
/* ============================================================
CONTACT — LAYOUT B
Centered single card. No left info column.
Clean, focused, minimal.
============================================================ */
.contact-b {
padding: 6rem 0;
background-color: var(--color-bg);
transition: background-color 0.4s ease;
}
.contact-b-header {
text-align: center;
max-width: 560px;
margin: 0 auto 3rem;
}
.contact-b-header .section-subtitle { margin: 0 auto; }
/* ── Centered card ─────────────────────────────────────── */
.contact-b-card {
max-width: 680px;
margin: 0 auto;
background-color: var(--card-bg);
border: 1px solid var(--card-border);
border-radius: var(--radius-xl);
padding: 3rem;
box-shadow: var(--color-card-shadow);
transition: all 0.4s ease;
}
/* ── Form elements (reuse from contact.css patterns) ────── */
.contact-b-form-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1.25rem;
margin-bottom: 1.25rem;
}
.contact-b-form-group {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.contact-b-form-group.full-width { grid-column: 1 / -1; }
.contact-b-label {
font-size: 0.82rem;
font-weight: 600;
color: var(--color-text);
}
.contact-b-label span { color: var(--color-primary); margin-left: 2px; }
.contact-b-input,
.contact-b-textarea,
.contact-b-select {
background-color: var(--color-surface);
border: 1.5px solid var(--color-border);
border-radius: var(--radius-md);
padding: 0.7rem 1rem;
font-family: var(--font-body);
font-size: 0.9rem;
color: var(--color-text);
outline: none;
width: 100%;
transition: border-color 0.2s ease, box-shadow 0.2s ease;
appearance: none;
}
.contact-b-input::placeholder,
.contact-b-textarea::placeholder { color: var(--color-text-muted); opacity: 0.7; }
.contact-b-input:focus,
.contact-b-textarea:focus,
.contact-b-select:focus {
border-color: var(--color-primary);
box-shadow: 0 0 0 3px var(--color-primary-soft);
}
.contact-b-textarea { resize: vertical; min-height: 130px; line-height: 1.6; }
.contact-b-select-wrap { position: relative; }
.contact-b-select-wrap::after {
content: '';
position: absolute;
right: 1rem; top: 50%;
transform: translateY(-50%);
width: 0; height: 0;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-top: 5px solid var(--color-text-muted);
pointer-events: none;
}
/* ── Submit row ────────────────────────────────────────── */
.contact-b-submit-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
margin-top: 1.75rem;
flex-wrap: wrap;
}
.contact-b-privacy {
font-size: 0.78rem;
color: var(--color-text-muted);
line-height: 1.5;
max-width: 260px;
}
.contact-b-privacy a {
color: var(--color-primary);
text-decoration: underline;
text-decoration-color: transparent;
transition: text-decoration-color 0.2s ease;
}
.contact-b-privacy a:hover { text-decoration-color: var(--color-primary); }
/* ── Success state ─────────────────────────────────────── */
.contact-b-success {
display: none;
text-align: center;
padding: 2rem;
}
.contact-b-success.is-visible { display: block; }
.contact-b-success-icon {
width: 56px; height: 56px;
border-radius: 50%;
background-color: var(--color-primary-soft);
border: 2px solid var(--color-primary);
display: flex; align-items: center; justify-content: center;
margin: 0 auto 1.25rem;
}
.contact-b-success-icon svg {
width: 24px; height: 24px;
stroke: var(--color-primary); fill: none;
stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round;
}
.contact-b-success-title {
font-family: var(--font-heading);
font-size: 1.4rem; font-weight: 800;
color: var(--color-heading);
margin-bottom: 0.5rem;
}
.contact-b-success-text {
font-size: 0.9rem;
color: var(--color-text-muted);
line-height: 1.7;
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 600px) {
.contact-b-card { padding: 1.5rem; }
.contact-b-form-grid { grid-template-columns: 1fr; }
.contact-b-submit-row { flex-direction: column; align-items: stretch; text-align: center; }
.contact-b-privacy { max-width: 100%; }
}
+260
View File
@@ -0,0 +1,260 @@
/* ============================================================
CONTACT — LAYOUT C
3-column: info left, form center, decorative accent right.
Editorial feel, visually rich.
============================================================ */
.contact-c {
padding: 6rem 0;
background-color: var(--color-bg);
transition: background-color 0.4s ease;
}
.contact-c-inner {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
gap: 3rem;
align-items: start;
}
/* ── Left: info ────────────────────────────────────────── */
.contact-c-info {}
.contact-c-info .section-label { margin-bottom: 0.5rem; }
.contact-c-info .section-title {
font-size: 1.6rem;
margin-bottom: 0.75rem;
}
.contact-c-info .section-subtitle {
font-size: 0.9rem;
margin-bottom: 2rem;
}
.contact-c-details {
display: flex;
flex-direction: column;
gap: 1.25rem;
}
.contact-c-detail-item {
display: flex;
align-items: flex-start;
gap: 0.75rem;
}
.contact-c-detail-icon {
width: 36px; height: 36px;
flex-shrink: 0;
border-radius: var(--radius-md);
background-color: var(--color-primary-soft);
display: flex; align-items: center; justify-content: center;
transition: background-color 0.3s ease;
}
.contact-c-detail-icon svg {
width: 16px; height: 16px;
stroke: var(--color-primary); fill: none;
stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
transition: stroke 0.3s ease;
}
.contact-c-detail-item:hover .contact-c-detail-icon { background-color: var(--color-primary); }
.contact-c-detail-item:hover .contact-c-detail-icon svg { stroke: var(--color-btn-text); }
.contact-c-detail-label {
font-size: 0.7rem; font-weight: 700;
letter-spacing: 0.08em; text-transform: uppercase;
color: var(--color-text-muted); margin-bottom: 0.15rem;
}
.contact-c-detail-value {
font-size: 0.88rem; font-weight: 500;
color: var(--color-heading);
}
/* ── Center: form ──────────────────────────────────────── */
.contact-c-form-wrap {
background-color: var(--card-bg);
border: 1px solid var(--card-border);
border-radius: var(--radius-xl);
padding: 2rem;
box-shadow: var(--color-card-shadow);
}
.contact-c-form-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin-bottom: 1rem;
}
.contact-c-form-group {
display: flex;
flex-direction: column;
gap: 0.4rem;
}
.contact-c-form-group.full-width { grid-column: 1 / -1; }
.contact-c-label {
font-size: 0.78rem; font-weight: 600;
color: var(--color-text);
}
.contact-c-label span { color: var(--color-primary); margin-left: 2px; }
.contact-c-input,
.contact-c-textarea,
.contact-c-select {
background-color: var(--color-surface);
border: 1.5px solid var(--color-border);
border-radius: var(--radius-md);
padding: 0.65rem 0.875rem;
font-family: var(--font-body);
font-size: 0.875rem;
color: var(--color-text);
outline: none;
width: 100%;
transition: border-color 0.2s ease, box-shadow 0.2s ease;
appearance: none;
}
.contact-c-input::placeholder,
.contact-c-textarea::placeholder { color: var(--color-text-muted); opacity: 0.7; }
.contact-c-input:focus,
.contact-c-textarea:focus,
.contact-c-select:focus {
border-color: var(--color-primary);
box-shadow: 0 0 0 3px var(--color-primary-soft);
}
.contact-c-textarea { resize: vertical; min-height: 110px; line-height: 1.6; }
.contact-c-select-wrap { position: relative; }
.contact-c-select-wrap::after {
content: '';
position: absolute; right: 0.875rem; top: 50%;
transform: translateY(-50%);
width: 0; height: 0;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-top: 5px solid var(--color-text-muted);
pointer-events: none;
}
.contact-c-submit-row {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 1rem;
margin-top: 1.25rem;
}
/* ── Success ───────────────────────────────────────────── */
.contact-c-success {
display: none;
text-align: center;
padding: 1.5rem;
}
.contact-c-success.is-visible { display: block; }
.contact-c-success-icon {
width: 48px; height: 48px;
border-radius: 50%;
background-color: var(--color-primary-soft);
border: 2px solid var(--color-primary);
display: flex; align-items: center; justify-content: center;
margin: 0 auto 1rem;
}
.contact-c-success-icon svg {
width: 20px; height: 20px;
stroke: var(--color-primary); fill: none;
stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round;
}
.contact-c-success-title {
font-family: var(--font-heading);
font-size: 1.2rem; font-weight: 800;
color: var(--color-heading); margin-bottom: 0.4rem;
}
.contact-c-success-text {
font-size: 0.85rem; color: var(--color-text-muted); line-height: 1.7;
}
/* ── Right: decorative accent panel ───────────────────── */
.contact-c-accent {
background-color: var(--color-primary);
border-radius: var(--radius-xl);
padding: 2rem;
display: flex;
flex-direction: column;
gap: 1.5rem;
position: sticky;
top: 5rem;
}
.contact-c-accent-title {
font-family: var(--font-heading);
font-size: 1.1rem; font-weight: 800;
color: var(--color-btn-text);
line-height: 1.3;
}
.contact-c-accent-list {
display: flex;
flex-direction: column;
gap: 0.75rem;
}
.contact-c-accent-item {
display: flex;
align-items: flex-start;
gap: 0.6rem;
font-size: 0.82rem;
color: var(--color-btn-text);
opacity: 0.85;
line-height: 1.5;
}
.contact-c-accent-item svg {
width: 14px; height: 14px;
stroke: var(--color-btn-text); fill: none;
stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round;
flex-shrink: 0; margin-top: 2px;
}
.contact-c-accent-divider {
height: 1px;
background-color: rgba(255,255,255,0.2);
}
.contact-c-accent-response {
font-size: 0.8rem;
color: var(--color-btn-text);
opacity: 0.7;
line-height: 1.6;
}
.contact-c-accent-response strong {
opacity: 1;
display: block;
font-size: 0.85rem;
margin-bottom: 0.2rem;
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 1024px) {
.contact-c-inner { grid-template-columns: 1fr 2fr; }
.contact-c-accent { display: none; }
}
@media (max-width: 700px) {
.contact-c-inner { grid-template-columns: 1fr; }
.contact-c-form-grid { grid-template-columns: 1fr; }
}
+286
View File
@@ -0,0 +1,286 @@
/* ============================================================
CONTACT FORM COMPONENT
Split layout: left info panel, right form card
============================================================ */
.contact {
padding: 6rem 0;
background-color: var(--color-surface);
transition: background-color 0.4s ease;
}
.contact-inner {
display: grid;
grid-template-columns: 1fr 1.6fr;
gap: 5rem;
align-items: start;
}
/* ── Left: info ────────────────────────────────────────── */
.contact-info .section-title {
margin-bottom: 1rem;
}
.contact-info .section-subtitle {
margin-bottom: 2.5rem;
}
.contact-details {
display: flex;
flex-direction: column;
gap: 1.25rem;
}
.contact-detail-item {
display: flex;
align-items: flex-start;
gap: 1rem;
}
.contact-detail-icon {
width: 40px;
height: 40px;
flex-shrink: 0;
border-radius: var(--radius-md);
background-color: var(--color-primary-soft);
display: flex;
align-items: center;
justify-content: center;
transition: background-color 0.3s ease;
}
.contact-detail-icon svg {
width: 18px;
height: 18px;
stroke: var(--color-primary);
fill: none;
stroke-width: 2;
stroke-linecap: round;
stroke-linejoin: round;
transition: stroke 0.3s ease;
}
.contact-detail-item:hover .contact-detail-icon {
background-color: var(--color-primary);
}
.contact-detail-item:hover .contact-detail-icon svg {
stroke: var(--color-btn-text);
}
.contact-detail-label {
font-size: 0.75rem;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--color-text-muted);
margin-bottom: 0.2rem;
}
.contact-detail-value {
font-size: 0.92rem;
color: var(--color-heading);
font-weight: 500;
}
/* ── Right: form card ──────────────────────────────────── */
.contact-form-card {
background-color: var(--card-bg);
border: 1px solid var(--card-border);
border-radius: var(--radius-xl);
padding: 2.5rem;
box-shadow: var(--color-card-shadow);
transition: all 0.4s ease;
}
/* ── Form elements ─────────────────────────────────────── */
.form-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1.25rem;
margin-bottom: 1.25rem;
}
.form-group {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.form-group.full-width {
grid-column: 1 / -1;
}
.form-label {
font-size: 0.82rem;
font-weight: 600;
color: var(--color-text);
letter-spacing: 0.01em;
}
.form-label span {
color: var(--color-primary);
margin-left: 2px;
}
.form-input,
.form-textarea,
.form-select {
background-color: var(--color-surface);
border: 1.5px solid var(--color-border);
border-radius: var(--radius-md);
padding: 0.7rem 1rem;
font-family: var(--font-body);
font-size: 0.9rem;
color: var(--color-text);
outline: none;
transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.3s ease;
width: 100%;
appearance: none;
-webkit-appearance: none;
}
.form-input::placeholder,
.form-textarea::placeholder {
color: var(--color-text-muted);
opacity: 0.7;
}
.form-input:focus,
.form-textarea:focus,
.form-select:focus {
border-color: var(--color-primary);
box-shadow: 0 0 0 3px var(--color-primary-soft);
}
.form-textarea {
resize: vertical;
min-height: 130px;
line-height: 1.6;
}
/* Select arrow */
.form-select-wrap {
position: relative;
}
.form-select-wrap::after {
content: '';
position: absolute;
right: 1rem;
top: 50%;
transform: translateY(-50%);
width: 0;
height: 0;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-top: 5px solid var(--color-text-muted);
pointer-events: none;
}
/* ── Submit row ────────────────────────────────────────── */
.form-submit-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
margin-top: 1.75rem;
flex-wrap: wrap;
}
.form-privacy {
font-size: 0.78rem;
color: var(--color-text-muted);
line-height: 1.5;
max-width: 260px;
}
.form-privacy a {
color: var(--color-primary);
text-decoration: underline;
text-decoration-color: transparent;
transition: text-decoration-color 0.2s ease;
}
.form-privacy a:hover {
text-decoration-color: var(--color-primary);
}
.form-submit-row .btn {
flex-shrink: 0;
}
/* ── Success state ─────────────────────────────────────── */
.form-success {
display: none;
text-align: center;
padding: 2rem;
}
.form-success.is-visible {
display: block;
}
.form-success-icon {
width: 56px;
height: 56px;
border-radius: 50%;
background-color: var(--color-primary-soft);
border: 2px solid var(--color-primary);
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 1.25rem;
}
.form-success-icon svg {
width: 24px;
height: 24px;
stroke: var(--color-primary);
fill: none;
stroke-width: 2.5;
stroke-linecap: round;
stroke-linejoin: round;
}
.form-success-title {
font-family: var(--font-heading);
font-size: 1.4rem;
font-weight: 800;
color: var(--color-heading);
margin-bottom: 0.5rem;
}
.form-success-text {
font-size: 0.9rem;
color: var(--color-text-muted);
line-height: 1.7;
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 900px) {
.contact-inner {
grid-template-columns: 1fr;
gap: 3rem;
}
}
@media (max-width: 540px) {
.form-grid {
grid-template-columns: 1fr;
}
.contact-form-card {
padding: 1.5rem;
}
.form-submit-row {
flex-direction: column;
align-items: stretch;
text-align: center;
}
.form-privacy {
max-width: 100%;
}
}
+157
View File
@@ -0,0 +1,157 @@
/* ============================================================
CTA — LAYOUT B
Split: left text + trust items, right email capture card.
More functional, conversion-focused.
============================================================ */
.cta-b {
padding: 6rem 0;
background-color: var(--cta-bg);
background-image: var(--cta-gradient);
position: relative;
overflow: hidden;
transition: background-color 0.4s ease;
}
.cta-b::before {
content: '';
position: absolute;
width: 600px; height: 600px;
border-radius: 50%;
background: radial-gradient(circle, var(--color-primary-soft) 0%, transparent 70%);
top: -300px; left: -150px;
opacity: 0.4;
pointer-events: none;
}
.cta-b-inner {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 5rem;
align-items: center;
position: relative;
z-index: 1;
}
/* ── Left: text ────────────────────────────────────────── */
.cta-b-content {}
.cta-b-label {
display: inline-flex;
align-items: center;
gap: 0.4rem;
font-size: 0.78rem;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--color-primary);
margin-bottom: 1rem;
}
.cta-b-title {
font-family: var(--font-heading);
font-size: clamp(1.8rem, 3.5vw, 2.8rem);
font-weight: 900;
color: var(--color-heading);
line-height: 1.12;
letter-spacing: -0.025em;
margin-bottom: 1.25rem;
}
.cta-b-title em { font-style: normal; color: var(--color-primary); }
.cta-b-subtitle {
font-size: 1rem;
color: var(--color-text-muted);
line-height: 1.75;
margin-bottom: 2rem;
}
.cta-b-trust {
display: flex;
flex-direction: column;
gap: 0.6rem;
}
.cta-b-trust-item {
display: flex;
align-items: center;
gap: 0.5rem;
font-size: 0.85rem;
color: var(--color-text-muted);
font-weight: 500;
}
.cta-b-trust-item svg {
width: 14px; height: 14px;
stroke: var(--color-primary); fill: none;
stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round;
flex-shrink: 0;
}
/* ── Right: capture card ───────────────────────────────── */
.cta-b-card {
background-color: var(--card-bg);
border: 1px solid var(--card-border);
border-radius: var(--radius-xl);
padding: 2.5rem;
box-shadow: var(--color-card-shadow), var(--color-glow);
transition: border-color 0.3s ease;
}
.cta-b-card-title {
font-family: var(--font-heading);
font-size: 1.25rem;
font-weight: 800;
color: var(--color-heading);
margin-bottom: 0.4rem;
}
.cta-b-card-sub {
font-size: 0.88rem;
color: var(--color-text-muted);
margin-bottom: 1.75rem;
line-height: 1.6;
}
.cta-b-form {
display: flex;
flex-direction: column;
gap: 0.85rem;
margin-bottom: 1rem;
}
.cta-b-input {
background-color: var(--color-surface);
border: 1.5px solid var(--color-border);
border-radius: var(--radius-md);
padding: 0.75rem 1rem;
font-family: var(--font-body);
font-size: 0.9rem;
color: var(--color-text);
outline: none;
width: 100%;
transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.cta-b-input::placeholder { color: var(--color-text-muted); opacity: 0.7; }
.cta-b-input:focus {
border-color: var(--color-primary);
box-shadow: 0 0 0 3px var(--color-primary-soft);
}
.cta-b-card .btn { width: 100%; justify-content: center; }
.cta-b-note {
font-size: 0.75rem;
color: var(--color-text-muted);
text-align: center;
margin-top: 0.75rem;
line-height: 1.5;
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 860px) {
.cta-b-inner { grid-template-columns: 1fr; gap: 3rem; }
}
+159
View File
@@ -0,0 +1,159 @@
/* ============================================================
CTA — LAYOUT C
Full-bleed panel. Large decorative BG word. Bold & loud.
Uses the primary color as background for max contrast.
============================================================ */
.cta-c {
padding: 7rem 0;
background-color: var(--color-primary);
position: relative;
overflow: hidden;
transition: background-color 0.4s ease;
}
/* ── Large decorative word ─────────────────────────────── */
.cta-c::before {
content: 'START';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-family: var(--font-heading);
font-size: clamp(10rem, 22vw, 20rem);
font-weight: 900;
color: var(--color-btn-text);
opacity: 0.05;
letter-spacing: -0.05em;
white-space: nowrap;
pointer-events: none;
user-select: none;
line-height: 1;
}
.cta-c-inner {
text-align: center;
max-width: 680px;
margin: 0 auto;
position: relative;
z-index: 1;
}
.cta-c-label {
display: inline-flex;
align-items: center;
gap: 0.4rem;
font-size: 0.78rem;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--color-btn-text);
opacity: 0.7;
margin-bottom: 1.25rem;
}
.cta-c-title {
font-family: var(--font-heading);
font-size: clamp(2.4rem, 5vw, 4rem);
font-weight: 900;
color: var(--color-btn-text);
line-height: 1.08;
letter-spacing: -0.03em;
margin-bottom: 1.25rem;
}
.cta-c-subtitle {
font-size: 1.05rem;
color: var(--color-btn-text);
opacity: 0.8;
line-height: 1.75;
margin-bottom: 2.5rem;
}
/* ── Inverted buttons ──────────────────────────────────── */
.cta-c-actions {
display: flex;
align-items: center;
justify-content: center;
gap: 1rem;
flex-wrap: wrap;
margin-bottom: 2rem;
}
.cta-c .btn-solid {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.75rem 1.75rem;
border-radius: var(--radius-md);
font-family: var(--font-body);
font-size: 0.95rem;
font-weight: 600;
cursor: pointer;
border: 2px solid var(--color-btn-text);
background-color: var(--color-btn-text);
color: var(--color-primary);
transition: all 0.25s ease;
text-decoration: none;
}
.cta-c .btn-solid:hover {
background-color: transparent;
color: var(--color-btn-text);
transform: translateY(-1px);
}
.cta-c .btn-ghost {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.75rem 1.75rem;
border-radius: var(--radius-md);
font-family: var(--font-body);
font-size: 0.95rem;
font-weight: 600;
cursor: pointer;
border: 2px solid rgba(255,255,255,0.4);
background-color: transparent;
color: var(--color-btn-text);
transition: all 0.25s ease;
text-decoration: none;
}
.cta-c .btn-ghost:hover {
border-color: var(--color-btn-text);
background-color: rgba(255,255,255,0.1);
transform: translateY(-1px);
}
/* ── Trust row ─────────────────────────────────────────── */
.cta-c-trust {
display: flex;
align-items: center;
justify-content: center;
gap: 1.5rem;
flex-wrap: wrap;
}
.cta-c-trust-item {
display: flex;
align-items: center;
gap: 0.4rem;
font-size: 0.82rem;
color: var(--color-btn-text);
opacity: 0.75;
font-weight: 500;
}
.cta-c-trust-item svg {
width: 14px; height: 14px;
stroke: var(--color-btn-text); fill: none;
stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round;
}
.cta-c-divider {
width: 4px; height: 4px;
border-radius: 50%;
background-color: var(--color-btn-text);
opacity: 0.3;
}
+132
View File
@@ -0,0 +1,132 @@
/* ============================================================
CTA COMPONENT
Centered call-to-action section with background treatment
============================================================ */
.cta-section {
padding: 6rem 0;
background-color: var(--cta-bg);
background-image: var(--cta-gradient);
position: relative;
overflow: hidden;
transition: background-color 0.4s ease;
}
/* ── Background decoration ─────────────────────────────── */
.cta-section::before,
.cta-section::after {
content: '';
position: absolute;
border-radius: 50%;
pointer-events: none;
}
.cta-section::before {
width: 500px; height: 500px;
background: radial-gradient(circle, var(--color-primary-soft) 0%, transparent 70%);
top: -200px; left: -100px;
opacity: 0.5;
}
.cta-section::after {
width: 400px; height: 400px;
background: radial-gradient(circle, var(--color-accent-soft) 0%, transparent 70%);
bottom: -150px; right: -50px;
opacity: 0.5;
}
.cta-inner {
text-align: center;
max-width: 680px;
margin: 0 auto;
position: relative;
z-index: 1;
}
/* ── Label ─────────────────────────────────────────────── */
.cta-label {
display: inline-flex;
align-items: center;
gap: 0.5rem;
font-size: 0.78rem;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--color-primary);
margin-bottom: 1rem;
}
/* ── Headline ──────────────────────────────────────────── */
.cta-title {
font-family: var(--font-heading);
font-size: clamp(2rem, 4.5vw, 3.2rem);
font-weight: 900;
color: var(--color-heading);
line-height: 1.12;
letter-spacing: -0.025em;
margin-bottom: 1.25rem;
}
.cta-title em {
font-style: normal;
color: var(--color-primary);
}
.cta-subtitle {
font-size: 1.05rem;
color: var(--color-text-muted);
line-height: 1.75;
margin-bottom: 2.5rem;
max-width: 500px;
margin-left: auto;
margin-right: auto;
}
/* ── Actions ───────────────────────────────────────────── */
.cta-actions {
display: flex;
align-items: center;
justify-content: center;
gap: 1rem;
flex-wrap: wrap;
margin-bottom: 2rem;
}
/* ── Trust line ────────────────────────────────────────── */
.cta-trust {
display: flex;
align-items: center;
justify-content: center;
gap: 1.5rem;
flex-wrap: wrap;
}
.cta-trust-item {
display: flex;
align-items: center;
gap: 0.4rem;
font-size: 0.82rem;
color: var(--color-text-muted);
font-weight: 500;
}
.cta-trust-item svg {
width: 14px; height: 14px;
stroke: var(--color-primary);
fill: none;
stroke-width: 2.5;
stroke-linecap: round;
stroke-linejoin: round;
}
.cta-divider {
width: 4px; height: 4px;
border-radius: 50%;
background-color: var(--color-border);
}
@media (max-width: 480px) {
.cta-divider {
display: none;
}
}
+117
View File
@@ -0,0 +1,117 @@
/* ============================================================
FAQ — LAYOUT B
Full-width centered accordion. No sidebar heading.
Heading centered above the list. Clean and open.
============================================================ */
.faq-b {
padding: 6rem 0;
background-color: var(--color-bg);
transition: background-color 0.4s ease;
}
.faq-b-header {
text-align: center;
max-width: 600px;
margin: 0 auto 4rem;
}
.faq-b-header .section-subtitle { margin: 0 auto; }
.faq-b-contact-nudge {
font-size: 0.88rem;
color: var(--color-text-muted);
line-height: 1.6;
margin-top: 1rem;
}
.faq-b-contact-nudge a {
color: var(--color-primary);
font-weight: 600;
text-decoration: underline;
text-decoration-color: transparent;
transition: text-decoration-color 0.2s ease;
}
.faq-b-contact-nudge a:hover {
text-decoration-color: var(--color-primary);
}
/* ── Accordion list ────────────────────────────────────── */
.faq-b-list {
max-width: 760px;
margin: 0 auto;
border-top: 1px solid var(--color-border);
}
.faq-b-item {
border-bottom: 1px solid var(--color-border);
transition: border-color 0.3s ease;
}
.faq-b-item.is-open { border-bottom-color: var(--color-primary); }
.faq-b-question {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
padding: 1.5rem 0;
cursor: pointer;
background: none;
border: none;
width: 100%;
text-align: left;
user-select: none;
}
.faq-b-question-text {
font-family: var(--font-heading);
font-size: 1.05rem;
font-weight: 700;
color: var(--color-heading);
line-height: 1.4;
transition: color 0.2s ease;
}
.faq-b-item.is-open .faq-b-question-text { color: var(--color-primary); }
.faq-b-icon {
flex-shrink: 0;
width: 28px; height: 28px;
border-radius: 50%;
border: 1.5px solid var(--color-border);
display: flex; align-items: center; justify-content: center;
transition: all 0.3s ease;
background-color: var(--color-surface);
}
.faq-b-item.is-open .faq-b-icon {
background-color: var(--color-primary);
border-color: var(--color-primary);
transform: rotate(45deg);
}
.faq-b-icon svg {
width: 12px; height: 12px;
stroke: var(--color-text-muted); fill: none;
stroke-width: 2.5; stroke-linecap: round;
transition: stroke 0.3s ease;
}
.faq-b-item.is-open .faq-b-icon svg { stroke: var(--color-btn-text); }
.faq-b-answer {
max-height: 0;
overflow: hidden;
transition: max-height 0.4s ease;
}
.faq-b-item.is-open .faq-b-answer { max-height: 300px; }
.faq-b-answer-inner {
padding-bottom: 1.5rem;
font-size: 0.93rem;
color: var(--color-text-muted);
line-height: 1.8;
}
+130
View File
@@ -0,0 +1,130 @@
/* ============================================================
FAQ — LAYOUT C
Two-column accordion grid. Questions split into two columns.
Each column has its own independent accordion behavior.
============================================================ */
.faq-c {
padding: 6rem 0;
background-color: var(--color-surface);
transition: background-color 0.4s ease;
}
.faq-c-header {
text-align: center;
max-width: 600px;
margin: 0 auto 4rem;
}
.faq-c-header .section-subtitle { margin: 0 auto; }
.faq-c-contact-nudge {
font-size: 0.88rem;
color: var(--color-text-muted);
line-height: 1.6;
margin-top: 1rem;
}
.faq-c-contact-nudge a {
color: var(--color-primary);
font-weight: 600;
text-decoration: underline;
text-decoration-color: transparent;
transition: text-decoration-color 0.2s ease;
}
.faq-c-contact-nudge a:hover {
text-decoration-color: var(--color-primary);
}
/* ── Two-col grid ──────────────────────────────────────── */
.faq-c-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 0 4rem;
align-items: start;
}
/* ── Column ────────────────────────────────────────────── */
.faq-c-col {
border-top: 1px solid var(--color-border);
}
/* ── Item ──────────────────────────────────────────────── */
.faq-c-item {
border-bottom: 1px solid var(--color-border);
transition: border-color 0.3s ease;
}
.faq-c-item.is-open { border-bottom-color: var(--color-primary); }
.faq-c-question {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
padding: 1.35rem 0;
cursor: pointer;
background: none;
border: none;
width: 100%;
text-align: left;
user-select: none;
}
.faq-c-question-text {
font-family: var(--font-heading);
font-size: 0.98rem;
font-weight: 700;
color: var(--color-heading);
line-height: 1.4;
transition: color 0.2s ease;
}
.faq-c-item.is-open .faq-c-question-text { color: var(--color-primary); }
.faq-c-icon {
flex-shrink: 0;
width: 24px; height: 24px;
border-radius: 50%;
border: 1.5px solid var(--color-border);
display: flex; align-items: center; justify-content: center;
transition: all 0.3s ease;
background-color: var(--card-bg);
}
.faq-c-item.is-open .faq-c-icon {
background-color: var(--color-primary);
border-color: var(--color-primary);
transform: rotate(45deg);
}
.faq-c-icon svg {
width: 10px; height: 10px;
stroke: var(--color-text-muted); fill: none;
stroke-width: 2.5; stroke-linecap: round;
transition: stroke 0.3s ease;
}
.faq-c-item.is-open .faq-c-icon svg { stroke: var(--color-btn-text); }
.faq-c-answer {
max-height: 0;
overflow: hidden;
transition: max-height 0.4s ease;
}
.faq-c-item.is-open .faq-c-answer { max-height: 300px; }
.faq-c-answer-inner {
padding-bottom: 1.35rem;
font-size: 0.88rem;
color: var(--color-text-muted);
line-height: 1.8;
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 768px) {
.faq-c-grid { grid-template-columns: 1fr; gap: 0; }
.faq-c-col:last-child { border-top: none; }
}
+162
View File
@@ -0,0 +1,162 @@
/* ============================================================
FAQ COMPONENT
Accordion-style questions with smooth expand/collapse
============================================================ */
.faq {
padding: 6rem 0;
background-color: var(--color-surface);
transition: background-color 0.4s ease;
}
.faq-inner {
display: grid;
grid-template-columns: 1fr 2fr;
gap: 5rem;
align-items: start;
}
/* ── Left: heading ─────────────────────────────────────── */
.faq-heading {
position: sticky;
top: 5rem;
}
.faq-heading .section-title {
margin-bottom: 1rem;
}
.faq-heading .section-subtitle {
margin-bottom: 2rem;
}
.faq-contact-nudge {
font-size: 0.88rem;
color: var(--color-text-muted);
line-height: 1.6;
}
.faq-contact-nudge a {
color: var(--color-primary);
font-weight: 600;
text-decoration: underline;
text-decoration-color: transparent;
transition: text-decoration-color 0.2s ease;
}
.faq-contact-nudge a:hover {
text-decoration-color: var(--color-primary);
}
/* ── Right: accordion list ─────────────────────────────── */
.faq-list {
display: flex;
flex-direction: column;
gap: 0;
border-top: 1px solid var(--color-border);
}
/* ── Individual item ───────────────────────────────────── */
.faq-item {
border-bottom: 1px solid var(--color-border);
transition: border-color 0.3s ease;
}
.faq-item.is-open {
border-bottom-color: var(--color-primary);
}
.faq-question {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
padding: 1.5rem 0;
cursor: pointer;
user-select: none;
list-style: none;
background: none;
border: none;
width: 100%;
text-align: left;
}
.faq-question::-webkit-details-marker {
display: none;
}
.faq-question-text {
font-family: var(--font-heading);
font-size: 1.05rem;
font-weight: 700;
color: var(--color-heading);
line-height: 1.4;
transition: color 0.2s ease;
}
.faq-item.is-open .faq-question-text {
color: var(--color-primary);
}
.faq-icon {
flex-shrink: 0;
width: 28px;
height: 28px;
border-radius: 50%;
border: 1.5px solid var(--color-border);
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s ease;
background-color: var(--color-surface);
}
.faq-item.is-open .faq-icon {
background-color: var(--color-primary);
border-color: var(--color-primary);
transform: rotate(45deg);
}
.faq-icon svg {
width: 12px;
height: 12px;
stroke: var(--color-text-muted);
fill: none;
stroke-width: 2.5;
stroke-linecap: round;
transition: stroke 0.3s ease;
}
.faq-item.is-open .faq-icon svg {
stroke: var(--color-btn-text);
}
/* ── Answer panel ──────────────────────────────────────── */
.faq-answer {
max-height: 0;
overflow: hidden;
transition: max-height 0.4s ease, padding 0.3s ease;
}
.faq-item.is-open .faq-answer {
max-height: 300px;
}
.faq-answer-inner {
padding-bottom: 1.5rem;
font-size: 0.93rem;
color: var(--color-text-muted);
line-height: 1.8;
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 860px) {
.faq-inner {
grid-template-columns: 1fr;
gap: 2.5rem;
}
.faq-heading {
position: static;
}
}
+159
View File
@@ -0,0 +1,159 @@
/* ============================================================
FEATURES — LAYOUT B
Alternating rows: icon + title + text on left, visual on right.
Even rows flip. More spacious, editorial feel.
============================================================ */
.features-b {
padding: 6rem 0;
background-color: var(--color-surface);
transition: background-color 0.4s ease;
}
.features-b-header {
text-align: center;
margin-bottom: 5rem;
}
.features-b-header .section-subtitle { margin: 0 auto; }
/* ── Each row ──────────────────────────────────────────── */
.features-b-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: center;
padding: 3.5rem 0;
border-top: 1px solid var(--color-border);
}
.features-b-row:last-child { border-bottom: 1px solid var(--color-border); }
/* Flip even rows */
.features-b-row:nth-child(even) .features-b-text { order: 2; }
.features-b-row:nth-child(even) .features-b-visual { order: 1; }
/* ── Text side ─────────────────────────────────────────── */
.features-b-text {}
.features-b-icon {
width: 52px; height: 52px;
background-color: var(--color-primary-soft);
border-radius: var(--radius-md);
display: flex; align-items: center; justify-content: center;
margin-bottom: 1.25rem;
transition: background-color 0.3s ease;
}
.features-b-icon svg {
width: 24px; height: 24px;
stroke: var(--color-primary); fill: none;
stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
transition: stroke 0.3s ease;
}
.features-b-row:hover .features-b-icon {
background-color: var(--color-primary);
}
.features-b-row:hover .features-b-icon svg {
stroke: var(--color-btn-text);
}
.features-b-title {
font-family: var(--font-heading);
font-size: 1.6rem;
font-weight: 800;
color: var(--color-heading);
margin-bottom: 0.75rem;
line-height: 1.2;
letter-spacing: -0.02em;
}
.features-b-desc {
font-size: 0.95rem;
color: var(--color-text-muted);
line-height: 1.8;
margin-bottom: 1.25rem;
max-width: 420px;
}
.features-b-link {
display: inline-flex;
align-items: center;
gap: 0.4rem;
font-size: 0.875rem;
font-weight: 600;
color: var(--color-primary);
transition: gap 0.2s ease;
}
.features-b-link:hover { gap: 0.65rem; }
.features-b-link svg {
width: 14px; height: 14px;
stroke: currentColor; fill: none;
stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round;
}
/* ── Visual side: accent block with sub-points ─────────── */
.features-b-visual {
background-color: var(--card-bg);
border: 1px solid var(--card-border);
border-radius: var(--radius-xl);
padding: 2rem;
display: flex;
flex-direction: column;
gap: 1rem;
transition: border-color 0.3s ease;
}
.features-b-row:hover .features-b-visual {
border-color: var(--card-hover-border);
}
.features-b-point {
display: flex;
align-items: flex-start;
gap: 0.75rem;
padding: 0.75rem;
border-radius: var(--radius-md);
background-color: var(--color-surface);
border: 1px solid var(--color-border);
transition: border-color 0.2s ease;
}
.features-b-point:hover { border-color: var(--color-primary); }
.features-b-point-dot {
width: 8px; height: 8px;
border-radius: 50%;
background-color: var(--color-primary);
flex-shrink: 0;
margin-top: 6px;
}
.features-b-point-text {
font-size: 0.875rem;
color: var(--color-text);
line-height: 1.6;
}
.features-b-point-text strong {
color: var(--color-heading);
font-weight: 700;
display: block;
margin-bottom: 0.1rem;
font-size: 0.85rem;
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 800px) {
.features-b-row {
grid-template-columns: 1fr;
gap: 2rem;
}
.features-b-row:nth-child(even) .features-b-text,
.features-b-row:nth-child(even) .features-b-visual { order: unset; }
}
+132
View File
@@ -0,0 +1,132 @@
/* ============================================================
FEATURES — LAYOUT C
Single column, oversized numbered list. Bold & editorial.
Each item spans full width with a large number accent.
============================================================ */
.features-c {
padding: 6rem 0;
background-color: var(--color-bg);
transition: background-color 0.4s ease;
}
.features-c-header {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 3rem;
align-items: end;
margin-bottom: 4rem;
padding-bottom: 3rem;
border-bottom: 1px solid var(--color-border);
}
.features-c-header .section-subtitle { margin: 0; }
/* ── List ──────────────────────────────────────────────── */
.features-c-list {
display: flex;
flex-direction: column;
gap: 0;
}
/* ── Each item ─────────────────────────────────────────── */
.features-c-item {
display: grid;
grid-template-columns: 80px 1fr auto;
gap: 2rem;
align-items: center;
padding: 2rem 0;
border-bottom: 1px solid var(--color-border);
cursor: default;
transition: padding 0.3s ease;
position: relative;
}
.features-c-item::before {
content: '';
position: absolute;
left: -1.5rem; top: 0; bottom: 0;
width: 3px;
background-color: var(--color-primary);
transform: scaleY(0);
transition: transform 0.3s ease;
transform-origin: bottom;
}
.features-c-item:hover::before { transform: scaleY(1); }
.features-c-item:hover { padding-left: 0.5rem; }
/* ── Number ────────────────────────────────────────────── */
.features-c-number {
font-family: var(--font-heading);
font-size: 3rem;
font-weight: 900;
color: var(--color-primary);
opacity: 0.25;
line-height: 1;
transition: opacity 0.3s ease;
user-select: none;
}
.features-c-item:hover .features-c-number { opacity: 1; }
/* ── Content ───────────────────────────────────────────── */
.features-c-content {}
.features-c-title {
font-family: var(--font-heading);
font-size: 1.25rem;
font-weight: 800;
color: var(--color-heading);
margin-bottom: 0.4rem;
transition: color 0.2s ease;
}
.features-c-item:hover .features-c-title { color: var(--color-primary); }
.features-c-desc {
font-size: 0.9rem;
color: var(--color-text-muted);
line-height: 1.7;
max-width: 560px;
}
/* ── Right: icon ───────────────────────────────────────── */
.features-c-icon {
width: 48px; height: 48px;
border-radius: var(--radius-md);
background-color: var(--color-surface);
border: 1px solid var(--color-border);
display: flex; align-items: center; justify-content: center;
flex-shrink: 0;
transition: all 0.3s ease;
}
.features-c-icon svg {
width: 22px; height: 22px;
stroke: var(--color-text-muted); fill: none;
stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
transition: stroke 0.3s ease;
}
.features-c-item:hover .features-c-icon {
background-color: var(--color-primary);
border-color: var(--color-primary);
}
.features-c-item:hover .features-c-icon svg {
stroke: var(--color-btn-text);
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 768px) {
.features-c-header { grid-template-columns: 1fr; }
.features-c-item {
grid-template-columns: 50px 1fr;
gap: 1.25rem;
}
.features-c-icon { display: none; }
.features-c-number { font-size: 2rem; }
}
+149
View File
@@ -0,0 +1,149 @@
/* ============================================================
FEATURES COMPONENT
3-column feature grid with icon, title, description
============================================================ */
.features {
padding: 6rem 0;
background-color: var(--color-surface);
transition: background-color 0.4s ease;
}
.features-header {
text-align: center;
margin-bottom: 4rem;
}
.features-header .section-subtitle {
margin: 0 auto;
}
/* ── Grid ──────────────────────────────────────────────── */
.features-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1.5rem;
}
/* ── Card ──────────────────────────────────────────────── */
.feature-card {
background-color: var(--card-bg);
border: 1px solid var(--card-border);
border-radius: var(--radius-lg);
padding: 2rem;
position: relative;
overflow: hidden;
transition: border-color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
cursor: default;
}
.feature-card::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 3px;
background: linear-gradient(90deg, var(--color-primary), var(--color-accent));
transform: scaleX(0);
transform-origin: left;
transition: transform 0.35s ease;
}
.feature-card:hover {
border-color: var(--card-hover-border);
transform: translateY(-4px);
box-shadow: var(--color-card-shadow);
}
.feature-card:hover::after {
transform: scaleX(1);
}
/* ── Icon ──────────────────────────────────────────────── */
.feature-icon {
width: 48px;
height: 48px;
background-color: var(--color-primary-soft);
border-radius: var(--radius-md);
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 1.25rem;
transition: background-color 0.3s ease;
}
.feature-icon svg {
width: 22px;
height: 22px;
color: var(--color-primary);
stroke: var(--color-primary);
fill: none;
stroke-width: 2;
stroke-linecap: round;
stroke-linejoin: round;
transition: color 0.3s ease, stroke 0.3s ease;
}
.feature-card:hover .feature-icon {
background-color: var(--color-primary);
}
.feature-card:hover .feature-icon svg {
color: var(--color-btn-text);
stroke: var(--color-btn-text);
}
/* ── Text ──────────────────────────────────────────────── */
.feature-title {
font-family: var(--font-heading);
font-size: 1.15rem;
font-weight: 700;
color: var(--color-heading);
margin-bottom: 0.6rem;
transition: color 0.3s ease;
}
.feature-desc {
font-size: 0.92rem;
color: var(--color-text-muted);
line-height: 1.7;
transition: color 0.3s ease;
}
.feature-link {
display: inline-flex;
align-items: center;
gap: 0.35rem;
margin-top: 1rem;
font-size: 0.85rem;
font-weight: 600;
color: var(--color-primary);
transition: gap 0.2s ease, color 0.2s ease;
}
.feature-link:hover {
gap: 0.6rem;
}
.feature-link svg {
width: 14px; height: 14px;
stroke: currentColor;
fill: none;
stroke-width: 2.5;
stroke-linecap: round;
stroke-linejoin: round;
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 900px) {
.features-grid {
grid-template-columns: 1fr 1fr;
}
}
@media (max-width: 580px) {
.features-grid {
grid-template-columns: 1fr;
}
}
+124
View File
@@ -0,0 +1,124 @@
/* ============================================================
FOOTER — LAYOUT B
Two rows: top = centered nav links, bottom = brand + copy.
Airy, minimal, centered everything.
============================================================ */
.footer-b {
background-color: var(--footer-bg);
padding: 3.5rem 0 0;
transition: background-color 0.4s ease;
}
/* ── Top row: nav columns centered ────────────────────── */
.footer-b-nav {
display: flex;
justify-content: center;
gap: 5rem;
padding-bottom: 3rem;
border-bottom: 1px solid var(--color-border);
flex-wrap: wrap;
}
.footer-b-col {}
.footer-b-col-title {
font-family: var(--font-heading);
font-size: 0.78rem; font-weight: 700;
letter-spacing: 0.1em; text-transform: uppercase;
color: var(--color-heading);
margin-bottom: 1rem;
}
[data-theme="midnight"] .footer-b .footer-b-col-title,
[data-theme="neon"] .footer-b .footer-b-col-title { color: #f0f6ff; }
[data-theme="linen"] .footer-b .footer-b-col-title { color: #faf7f2; }
[data-theme="petal"] .footer-b .footer-b-col-title { color: #fdf8ff; }
.footer-b-links {
display: flex;
flex-direction: column;
gap: 0.6rem;
}
.footer-b-links a {
font-size: 0.88rem;
color: var(--footer-text);
transition: color 0.2s ease;
}
.footer-b-links a:hover { color: var(--color-primary); }
/* ── Bottom row: brand center ──────────────────────────── */
.footer-b-bottom {
display: flex;
flex-direction: column;
align-items: center;
gap: 1.25rem;
padding: 2.5rem 0;
text-align: center;
border-top: 1px solid var(--color-border);
}
.footer-b-logo {
display: flex;
align-items: center;
gap: 0.6rem;
font-family: var(--font-heading);
font-size: 1.2rem; font-weight: 800;
color: var(--color-heading);
letter-spacing: -0.02em;
transition: color 0.3s ease;
}
[data-theme="midnight"] .footer-b .footer-b-logo,
[data-theme="neon"] .footer-b .footer-b-logo { color: #f0f6ff; }
[data-theme="linen"] .footer-b .footer-b-logo { color: #faf7f2; }
[data-theme="petal"] .footer-b .footer-b-logo { color: #fdf8ff; }
.footer-b-logo .logo-mark {
width: 28px; height: 28px;
background-color: var(--color-primary);
border-radius: var(--radius-sm);
display: flex; align-items: center; justify-content: center;
font-size: 0.85rem; font-weight: 900;
color: var(--color-btn-text);
}
.footer-b-tagline {
font-size: 0.85rem;
color: var(--footer-text);
max-width: 340px;
line-height: 1.6;
}
.footer-b-social {
display: flex;
gap: 0.75rem;
}
.footer-b-social a {
width: 34px; height: 34px;
border-radius: var(--radius-sm);
border: 1px solid var(--color-border);
display: flex; align-items: center; justify-content: center;
color: var(--footer-text);
transition: all 0.2s ease;
}
.footer-b-social a:hover {
border-color: var(--color-primary);
color: var(--color-primary);
background-color: var(--color-primary-soft);
}
.footer-b-social a svg {
width: 14px; height: 14px;
stroke: currentColor; fill: none;
stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
}
.footer-b-copy {
font-size: 0.8rem;
color: var(--footer-text);
}
+90
View File
@@ -0,0 +1,90 @@
/* ============================================================
FOOTER — LAYOUT C
Ultra-minimal: single full-width bar.
Logo left, nav links center, copy right. One line.
============================================================ */
.footer-c {
background-color: var(--footer-bg);
border-top: 1px solid var(--color-border);
transition: background-color 0.4s ease;
}
.footer-c-bar {
display: flex;
align-items: center;
justify-content: space-between;
height: 64px;
gap: 2rem;
}
/* ── Logo ──────────────────────────────────────────────── */
.footer-c-logo {
display: flex;
align-items: center;
gap: 0.5rem;
font-family: var(--font-heading);
font-size: 1.1rem; font-weight: 800;
letter-spacing: -0.02em;
flex-shrink: 0;
transition: color 0.3s ease;
}
[data-theme="midnight"] .footer-c .footer-c-logo,
[data-theme="neon"] .footer-c .footer-c-logo { color: #f0f6ff; }
[data-theme="linen"] .footer-c .footer-c-logo { color: #faf7f2; }
[data-theme="petal"] .footer-c .footer-c-logo { color: #fdf8ff; }
.footer-c-logo:hover { color: var(--color-primary) !important; }
.footer-c-logo .logo-mark {
width: 26px; height: 26px;
background-color: var(--color-primary);
border-radius: var(--radius-sm);
display: flex; align-items: center; justify-content: center;
font-size: 0.78rem; font-weight: 900;
color: var(--color-btn-text);
}
/* ── Center nav ────────────────────────────────────────── */
.footer-c-nav {
display: flex;
align-items: center;
gap: 1.75rem;
flex: 1;
justify-content: center;
}
.footer-c-nav a {
font-size: 0.82rem; font-weight: 500;
color: var(--footer-text);
transition: color 0.2s ease;
white-space: nowrap;
}
.footer-c-nav a:hover { color: var(--color-primary); }
/* ── Right: copy ───────────────────────────────────────── */
.footer-c-copy {
font-size: 0.78rem;
color: var(--footer-text);
flex-shrink: 0;
white-space: nowrap;
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 768px) {
.footer-c-bar {
flex-direction: column;
height: auto;
padding: 1.5rem 0;
gap: 1rem;
text-align: center;
}
.footer-c-nav {
flex-wrap: wrap;
gap: 1rem;
justify-content: center;
}
}
+160
View File
@@ -0,0 +1,160 @@
/* ============================================================
FOOTER COMPONENT
4-column link grid + bottom bar with copyright
============================================================ */
.site-footer {
background-color: var(--footer-bg);
padding: 4rem 0 0;
transition: background-color 0.4s ease;
}
/* ── Main grid ─────────────────────────────────────────── */
.footer-grid {
display: grid;
grid-template-columns: 2fr 1fr 1fr 1fr;
gap: 3rem;
padding-bottom: 3rem;
border-bottom: 1px solid var(--color-border);
}
/* ── Brand column ──────────────────────────────────────── */
.footer-brand .header-logo {
margin-bottom: 1rem;
color: var(--color-heading);
}
[data-theme="midnight"] .site-footer .header-logo {
color: #f0f6ff;
}
[data-theme="linen"] .site-footer .header-logo {
color: #faf7f2;
}
[data-theme="linen"] .site-footer .logo-mark {
color: #1c1208;
}
.footer-tagline {
font-size: 0.9rem;
color: var(--footer-text);
line-height: 1.7;
max-width: 240px;
margin-bottom: 1.5rem;
}
.footer-social {
display: flex;
gap: 0.75rem;
}
.footer-social a {
width: 36px; height: 36px;
border-radius: var(--radius-sm);
border: 1px solid var(--color-border);
display: flex;
align-items: center;
justify-content: center;
color: var(--footer-text);
transition: all 0.2s ease;
}
.footer-social a:hover {
border-color: var(--color-primary);
color: var(--color-primary);
background-color: var(--color-primary-soft);
}
.footer-social a svg {
width: 16px; height: 16px;
stroke: currentColor;
fill: none;
stroke-width: 2;
stroke-linecap: round;
stroke-linejoin: round;
}
/* ── Link columns ──────────────────────────────────────── */
.footer-col-title {
font-family: var(--font-heading);
font-size: 0.8rem;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--color-heading);
margin-bottom: 1.25rem;
}
[data-theme="linen"] .site-footer .footer-col-title {
color: #faf7f2;
}
[data-theme="midnight"] .site-footer .footer-col-title {
color: #f0f6ff;
}
.footer-links {
display: flex;
flex-direction: column;
gap: 0.7rem;
}
.footer-links a {
font-size: 0.9rem;
color: var(--footer-text);
transition: color 0.2s ease;
}
.footer-links a:hover {
color: var(--color-primary);
}
/* ── Bottom bar ────────────────────────────────────────── */
.footer-bottom {
display: flex;
align-items: center;
justify-content: space-between;
padding: 1.5rem 0;
gap: 1rem;
flex-wrap: wrap;
}
.footer-copy {
font-size: 0.82rem;
color: var(--footer-text);
}
.footer-bottom-links {
display: flex;
gap: 1.5rem;
}
.footer-bottom-links a {
font-size: 0.82rem;
color: var(--footer-text);
transition: color 0.2s ease;
}
.footer-bottom-links a:hover {
color: var(--color-primary);
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 900px) {
.footer-grid {
grid-template-columns: 1fr 1fr;
}
}
@media (max-width: 480px) {
.footer-grid {
grid-template-columns: 1fr;
gap: 2rem;
}
.footer-bottom {
flex-direction: column;
align-items: flex-start;
}
}
+161
View File
@@ -0,0 +1,161 @@
/* ============================================================
HEADER — LAYOUT B
Centered: logo centered top, nav centered below it
Full-width underline, no right-side CTA buttons in nav row
============================================================ */
.header-b {
position: sticky;
top: 0;
z-index: 100;
background-color: var(--nav-bg);
border-bottom: 1px solid var(--nav-border);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
transition: background-color 0.4s ease, border-color 0.4s ease;
}
.header-b-inner {
display: flex;
flex-direction: column;
align-items: center;
padding: 1rem 0 0;
gap: 0;
}
/* ── Logo row ──────────────────────────────────────────── */
.header-b-top {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
padding-bottom: 0.85rem;
position: relative;
}
.header-b-top .header-logo {
font-family: var(--font-heading);
font-size: 1.35rem;
font-weight: 800;
color: var(--color-heading);
display: flex;
align-items: center;
gap: 0.6rem;
letter-spacing: -0.02em;
transition: color 0.3s ease;
}
.header-b-top .header-logo:hover { color: var(--color-primary); }
.header-b-top .logo-mark {
width: 32px; height: 32px;
background-color: var(--color-primary);
border-radius: var(--radius-sm);
display: flex; align-items: center; justify-content: center;
font-size: 0.9rem; font-weight: 900;
color: var(--color-btn-text);
flex-shrink: 0;
transition: background-color 0.3s ease;
}
/* CTA tucked to the right absolutely */
.header-b-top .header-b-cta {
position: absolute;
right: 1.5rem;
display: flex;
gap: 0.6rem;
}
.header-b-top .header-b-cta .btn {
padding: 0.5rem 1.1rem;
font-size: 0.85rem;
}
/* ── Nav row ───────────────────────────────────────────── */
.header-b-nav {
display: flex;
align-items: center;
justify-content: center;
gap: 0;
border-top: 1px solid var(--color-border);
width: 100%;
}
.header-b-nav a {
padding: 0.7rem 1.4rem;
font-size: 0.875rem;
font-weight: 500;
color: var(--color-text-muted);
position: relative;
transition: color 0.2s ease;
}
.header-b-nav a::after {
content: '';
position: absolute;
bottom: 0; left: 0; right: 0;
height: 2px;
background-color: var(--color-primary);
transform: scaleX(0);
transition: transform 0.2s ease;
}
.header-b-nav a:hover { color: var(--color-heading); }
.header-b-nav a:hover::after { transform: scaleX(1); }
/* ── Mobile toggle ─────────────────────────────────────── */
.header-b-top .mobile-toggle {
display: none;
position: absolute;
right: 1rem;
flex-direction: column;
gap: 5px;
cursor: pointer;
padding: 0.5rem;
border: none;
background: none;
}
.header-b-top .mobile-toggle span {
display: block; width: 24px; height: 2px;
background-color: var(--color-text);
border-radius: 2px;
transition: all 0.3s ease;
}
/* ── Mobile menu ───────────────────────────────────────── */
.mobile-menu {
display: none;
flex-direction: column;
border-top: 1px solid var(--color-border);
padding: 1rem 0;
background-color: var(--nav-bg);
width: 100%;
}
.mobile-menu a {
padding: 0.75rem 1.5rem;
font-size: 0.95rem; font-weight: 500;
color: var(--color-text);
transition: color 0.2s ease, background-color 0.2s ease;
}
.mobile-menu a:hover {
color: var(--color-primary);
background-color: var(--color-primary-soft);
}
.mobile-menu .mobile-menu-actions {
display: flex; gap: 0.75rem;
padding: 1rem 1.5rem 0;
border-top: 1px solid var(--color-border);
margin-top: 0.5rem;
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 768px) {
.header-b-nav,
.header-b-top .header-b-cta { display: none; }
.header-b-top .mobile-toggle { display: flex; }
.mobile-menu.is-open { display: flex; }
}
+151
View File
@@ -0,0 +1,151 @@
/* ============================================================
HEADER — LAYOUT C
Ultra-minimal: logo left, single CTA right.
Nav hidden behind a menu button that opens a full-width
dropdown drawer instead of an inline nav bar.
============================================================ */
.header-c {
position: sticky;
top: 0;
z-index: 100;
background-color: var(--nav-bg);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
transition: background-color 0.4s ease;
}
.header-c-inner {
display: flex;
align-items: center;
justify-content: space-between;
height: 64px;
}
/* ── Logo ──────────────────────────────────────────────── */
.header-c-inner .header-logo {
display: flex;
align-items: center;
gap: 0.6rem;
font-family: var(--font-heading);
font-size: 1.3rem;
font-weight: 800;
color: var(--color-heading);
letter-spacing: -0.02em;
transition: color 0.3s ease;
}
.header-c-inner .header-logo:hover { color: var(--color-primary); }
.header-c-inner .logo-mark {
width: 32px; height: 32px;
background-color: var(--color-primary);
border-radius: var(--radius-sm);
display: flex; align-items: center; justify-content: center;
font-size: 0.9rem; font-weight: 900;
color: var(--color-btn-text);
flex-shrink: 0;
}
/* ── Right: CTA + menu trigger ─────────────────────────── */
.header-c-right {
display: flex;
align-items: center;
gap: 0.75rem;
}
.header-c-right .btn {
padding: 0.5rem 1.25rem;
font-size: 0.875rem;
}
/* ── Menu trigger ──────────────────────────────────────── */
.header-c-menu-btn {
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0.5rem 0.85rem;
border: 1.5px solid var(--color-border);
border-radius: var(--radius-md);
background: none;
cursor: pointer;
font-family: var(--font-body);
font-size: 0.82rem;
font-weight: 600;
color: var(--color-text);
transition: all 0.2s ease;
}
.header-c-menu-btn:hover {
border-color: var(--color-primary);
color: var(--color-primary);
}
.header-c-menu-btn svg {
width: 16px; height: 16px;
stroke: currentColor; fill: none;
stroke-width: 2; stroke-linecap: round;
}
/* ── Full-width nav drawer ─────────────────────────────── */
.header-c-drawer {
display: none;
border-top: 1px solid var(--color-border);
background-color: var(--nav-bg);
}
.header-c-drawer.is-open { display: block; }
.header-c-drawer-inner {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 0;
padding: 0;
}
.header-c-drawer-link {
display: flex;
flex-direction: column;
gap: 0.25rem;
padding: 1.25rem 1.5rem;
border-right: 1px solid var(--color-border);
transition: background-color 0.2s ease;
}
.header-c-drawer-link:last-child { border-right: none; }
.header-c-drawer-link:hover {
background-color: var(--color-primary-soft);
}
.header-c-drawer-link-title {
font-size: 0.9rem;
font-weight: 700;
color: var(--color-heading);
transition: color 0.2s ease;
}
.header-c-drawer-link:hover .header-c-drawer-link-title {
color: var(--color-primary);
}
.header-c-drawer-link-desc {
font-size: 0.78rem;
color: var(--color-text-muted);
line-height: 1.5;
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 600px) {
.header-c-right .btn-outline { display: none; }
.header-c-drawer-inner {
grid-template-columns: 1fr 1fr;
}
.header-c-drawer-link:nth-child(2) { border-right: none; }
.header-c-drawer-link:nth-child(3),
.header-c-drawer-link:nth-child(4) {
border-top: 1px solid var(--color-border);
}
}
+168
View File
@@ -0,0 +1,168 @@
/* ============================================================
HEADER / NAV COMPONENT
Sticky, blurred, responsive navigation bar
============================================================ */
.site-header {
position: sticky;
top: 0;
z-index: 100;
background-color: var(--nav-bg);
border-bottom: 1px solid var(--nav-border);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
transition: background-color 0.4s ease, border-color 0.4s ease;
}
.header-inner {
display: flex;
align-items: center;
justify-content: space-between;
height: 68px;
}
/* ── Logo ──────────────────────────────────────────────── */
.header-logo {
display: flex;
align-items: center;
gap: 0.6rem;
font-family: var(--font-heading);
font-size: 1.3rem;
font-weight: 800;
color: var(--color-heading);
letter-spacing: -0.02em;
transition: color 0.3s ease;
}
.header-logo:hover {
color: var(--color-primary);
}
.logo-mark {
width: 32px;
height: 32px;
background-color: var(--color-primary);
border-radius: var(--radius-sm);
display: flex;
align-items: center;
justify-content: center;
font-size: 0.9rem;
font-weight: 900;
color: var(--color-btn-text);
flex-shrink: 0;
transition: background-color 0.3s ease;
}
/* ── Nav links ─────────────────────────────────────────── */
.header-nav {
display: flex;
align-items: center;
gap: 2rem;
}
.header-nav a {
font-size: 0.9rem;
font-weight: 500;
color: var(--color-text-muted);
transition: color 0.2s ease;
position: relative;
}
.header-nav a::after {
content: '';
position: absolute;
bottom: -3px;
left: 0;
width: 0;
height: 2px;
background-color: var(--color-primary);
transition: width 0.2s ease;
border-radius: 2px;
}
.header-nav a:hover {
color: var(--color-heading);
}
.header-nav a:hover::after {
width: 100%;
}
/* ── CTA group ─────────────────────────────────────────── */
.header-actions {
display: flex;
align-items: center;
gap: 0.75rem;
}
.header-actions .btn {
padding: 0.55rem 1.25rem;
font-size: 0.875rem;
}
/* ── Mobile toggle ─────────────────────────────────────── */
.mobile-toggle {
display: none;
flex-direction: column;
gap: 5px;
cursor: pointer;
padding: 0.5rem;
border: none;
background: none;
}
.mobile-toggle span {
display: block;
width: 24px;
height: 2px;
background-color: var(--color-text);
border-radius: 2px;
transition: all 0.3s ease;
}
/* ── Mobile menu ───────────────────────────────────────── */
.mobile-menu {
display: none;
flex-direction: column;
gap: 0;
border-top: 1px solid var(--color-border);
padding: 1rem 0;
background-color: var(--nav-bg);
}
.mobile-menu a {
padding: 0.75rem 1.5rem;
font-size: 0.95rem;
font-weight: 500;
color: var(--color-text);
transition: color 0.2s ease, background-color 0.2s ease;
}
.mobile-menu a:hover {
color: var(--color-primary);
background-color: var(--color-primary-soft);
}
.mobile-menu .mobile-menu-actions {
display: flex;
gap: 0.75rem;
padding: 1rem 1.5rem 0;
border-top: 1px solid var(--color-border);
margin-top: 0.5rem;
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 768px) {
.header-nav,
.header-actions {
display: none;
}
.mobile-toggle {
display: flex;
}
.mobile-menu.is-open {
display: flex;
}
}
+195
View File
@@ -0,0 +1,195 @@
/* ============================================================
HERO — LAYOUT B
Centered, full-width headline. No right-side card.
Email capture inline. Trust logos bar below.
============================================================ */
.hero-b {
background-color: var(--hero-bg);
background-image: var(--hero-gradient);
padding: 8rem 0 6rem;
text-align: center;
position: relative;
overflow: hidden;
transition: background-color 0.4s ease;
}
/* ── Grid lines ────────────────────────────────────────── */
.hero-b::before {
content: '';
position: absolute;
inset: 0;
background-image:
linear-gradient(var(--color-border) 1px, transparent 1px),
linear-gradient(90deg, var(--color-border) 1px, transparent 1px);
background-size: 60px 60px;
opacity: 0.2;
pointer-events: none;
}
.hero-b-inner {
max-width: 780px;
margin: 0 auto;
position: relative;
z-index: 1;
}
/* ── Badge ─────────────────────────────────────────────── */
.hero-b-badge {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.4rem 0.9rem;
background-color: var(--color-primary-soft);
border: 1px solid var(--color-primary);
border-radius: 99px;
font-size: 0.8rem;
font-weight: 600;
color: var(--color-primary);
letter-spacing: 0.04em;
margin-bottom: 2rem;
}
.hero-b-badge-dot {
width: 6px;
height: 6px;
border-radius: 50%;
background-color: var(--color-primary);
animation: pulse-dot 2s ease-in-out infinite;
}
/* ── Headline ──────────────────────────────────────────── */
.hero-b-title {
font-family: var(--font-heading);
font-size: clamp(3rem, 6vw, 5rem);
font-weight: 900;
line-height: 1.05;
color: var(--color-heading);
letter-spacing: -0.035em;
margin-bottom: 1.5rem;
}
.hero-b-title em {
font-style: normal;
color: var(--color-primary);
}
.hero-b-subtitle {
font-size: 1.15rem;
color: var(--color-text-muted);
line-height: 1.75;
max-width: 560px;
margin: 0 auto 2.5rem;
}
/* ── Email capture row ─────────────────────────────────── */
.hero-b-capture {
display: flex;
align-items: center;
gap: 0.75rem;
max-width: 480px;
margin: 0 auto 1.5rem;
background-color: var(--card-bg);
border: 1.5px solid var(--card-border);
border-radius: var(--radius-lg);
padding: 0.4rem 0.4rem 0.4rem 1.1rem;
transition: border-color 0.25s ease, box-shadow 0.25s ease;
}
.hero-b-capture:focus-within {
border-color: var(--color-primary);
box-shadow: 0 0 0 3px var(--color-primary-soft);
}
.hero-b-input {
flex: 1;
background: none;
border: none;
outline: none;
font-family: var(--font-body);
font-size: 0.92rem;
color: var(--color-text);
padding: 0.4rem 0;
min-width: 0;
}
.hero-b-input::placeholder {
color: var(--color-text-muted);
}
.hero-b-capture .btn {
flex-shrink: 0;
padding: 0.6rem 1.25rem;
font-size: 0.875rem;
}
.hero-b-note {
font-size: 0.8rem;
color: var(--color-text-muted);
margin-bottom: 3.5rem;
}
/* ── Stats row ─────────────────────────────────────────── */
.hero-b-stats {
display: flex;
align-items: center;
justify-content: center;
gap: 0;
border-top: 1px solid var(--color-border);
padding-top: 3rem;
flex-wrap: wrap;
}
.hero-b-stat {
flex: 1;
min-width: 140px;
padding: 0 2rem;
border-right: 1px solid var(--color-border);
}
.hero-b-stat:last-child {
border-right: none;
}
.hero-b-stat-value {
font-family: var(--font-heading);
font-size: 2rem;
font-weight: 900;
color: var(--color-primary);
line-height: 1;
margin-bottom: 0.35rem;
}
.hero-b-stat-label {
font-size: 0.8rem;
color: var(--color-text-muted);
font-weight: 500;
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 600px) {
.hero-b-capture {
flex-direction: column;
padding: 0.75rem;
border-radius: var(--radius-md);
}
.hero-b-input {
width: 100%;
text-align: center;
}
.hero-b-capture .btn {
width: 100%;
justify-content: center;
}
.hero-b-stats {
gap: 1.5rem;
}
.hero-b-stat {
border-right: none;
min-width: 100px;
}
}
+244
View File
@@ -0,0 +1,244 @@
/* ============================================================
HERO — LAYOUT C
Asymmetric 60/40. Left: large headline + feature pill list.
Right: stacked notification-style cards. Bold & editorial.
============================================================ */
.hero-c {
background-color: var(--hero-bg);
background-image: var(--hero-gradient);
padding: 6rem 0 5rem;
position: relative;
overflow: hidden;
transition: background-color 0.4s ease;
}
/* ── Decorative large bg text ──────────────────────────── */
.hero-c::after {
content: 'HERO';
position: absolute;
bottom: -2rem;
right: -1rem;
font-family: var(--font-heading);
font-size: clamp(8rem, 16vw, 14rem);
font-weight: 900;
color: var(--color-primary);
opacity: 0.03;
line-height: 1;
pointer-events: none;
user-select: none;
letter-spacing: -0.05em;
}
.hero-c-inner {
display: grid;
grid-template-columns: 3fr 2fr;
gap: 4rem;
align-items: center;
position: relative;
z-index: 1;
}
/* ── Left: content ─────────────────────────────────────── */
.hero-c-content {}
.hero-c-eyebrow {
display: flex;
align-items: center;
gap: 0.75rem;
margin-bottom: 1.5rem;
}
.hero-c-eyebrow-line {
width: 32px;
height: 2px;
background-color: var(--color-primary);
border-radius: 2px;
}
.hero-c-eyebrow-text {
font-size: 0.78rem;
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--color-primary);
}
.hero-c-title {
font-family: var(--font-heading);
font-size: clamp(2.8rem, 5.5vw, 4.5rem);
font-weight: 900;
line-height: 1.05;
color: var(--color-heading);
letter-spacing: -0.035em;
margin-bottom: 1.5rem;
}
.hero-c-title em {
font-style: normal;
color: var(--color-primary);
}
.hero-c-subtitle {
font-size: 1.05rem;
color: var(--color-text-muted);
line-height: 1.75;
max-width: 480px;
margin-bottom: 2.5rem;
}
/* ── Feature pill list ─────────────────────────────────── */
.hero-c-features {
display: flex;
flex-direction: column;
gap: 0.6rem;
margin-bottom: 2.5rem;
}
.hero-c-feature {
display: flex;
align-items: center;
gap: 0.75rem;
font-size: 0.92rem;
color: var(--color-text);
font-weight: 500;
}
.hero-c-feature-check {
width: 20px;
height: 20px;
border-radius: 50%;
background-color: var(--color-primary-soft);
border: 1.5px solid var(--color-primary);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
transition: background-color 0.3s ease;
}
.hero-c-feature-check svg {
width: 10px;
height: 10px;
stroke: var(--color-primary);
fill: none;
stroke-width: 3;
stroke-linecap: round;
stroke-linejoin: round;
transition: stroke 0.3s ease;
}
.hero-c-feature:hover .hero-c-feature-check {
background-color: var(--color-primary);
}
.hero-c-feature:hover .hero-c-feature-check svg {
stroke: var(--color-btn-text);
}
/* ── Actions ───────────────────────────────────────────── */
.hero-c-actions {
display: flex;
align-items: center;
gap: 1rem;
flex-wrap: wrap;
}
/* ── Right: notification cards stack ──────────────────── */
.hero-c-visual {
display: flex;
flex-direction: column;
gap: 0.85rem;
position: relative;
}
.hero-c-notif {
background-color: var(--card-bg);
border: 1px solid var(--card-border);
border-radius: var(--radius-lg);
padding: 1rem 1.25rem;
display: flex;
align-items: flex-start;
gap: 0.85rem;
transition: border-color 0.3s ease, transform 0.3s ease;
position: relative;
overflow: hidden;
}
.hero-c-notif::before {
content: '';
position: absolute;
left: 0; top: 0; bottom: 0;
width: 3px;
background-color: var(--color-primary);
opacity: 0;
transition: opacity 0.3s ease;
}
.hero-c-notif:hover {
border-color: var(--card-hover-border);
transform: translateX(4px);
}
.hero-c-notif:hover::before {
opacity: 1;
}
/* Offset cards for depth */
.hero-c-notif:nth-child(2) { margin-left: 1.5rem; }
.hero-c-notif:nth-child(3) { margin-left: 0.75rem; }
.hero-c-notif:nth-child(4) { margin-left: 2rem; }
.hero-c-notif-icon {
width: 36px;
height: 36px;
border-radius: var(--radius-md);
background-color: var(--color-primary-soft);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
font-size: 1rem;
transition: background-color 0.3s ease;
}
.hero-c-notif:hover .hero-c-notif-icon {
background-color: var(--color-primary);
}
.hero-c-notif-body {}
.hero-c-notif-title {
font-size: 0.85rem;
font-weight: 700;
color: var(--color-heading);
margin-bottom: 0.15rem;
}
.hero-c-notif-text {
font-size: 0.78rem;
color: var(--color-text-muted);
line-height: 1.5;
}
.hero-c-notif-time {
font-size: 0.7rem;
color: var(--color-text-muted);
margin-left: auto;
flex-shrink: 0;
padding-top: 2px;
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 900px) {
.hero-c-inner {
grid-template-columns: 1fr;
gap: 3rem;
}
.hero-c-notif:nth-child(2),
.hero-c-notif:nth-child(3),
.hero-c-notif:nth-child(4) {
margin-left: 0;
}
}
+286
View File
@@ -0,0 +1,286 @@
/* ============================================================
HERO COMPONENT
Full-width split hero with headline, sub, CTA, and badge
============================================================ */
.hero {
background-color: var(--hero-bg);
background-image: var(--hero-gradient);
padding: 7rem 0 6rem;
position: relative;
overflow: hidden;
transition: background-color 0.4s ease;
}
/* ── Decorative grid lines ─────────────────────────────── */
.hero::before {
content: '';
position: absolute;
inset: 0;
background-image:
linear-gradient(var(--color-border) 1px, transparent 1px),
linear-gradient(90deg, var(--color-border) 1px, transparent 1px);
background-size: 60px 60px;
opacity: 0.25;
pointer-events: none;
}
.hero-inner {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: center;
position: relative;
z-index: 1;
}
/* ── Left: content ─────────────────────────────────────── */
.hero-content {
max-width: 560px;
}
.hero-badge {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.4rem 0.9rem;
background-color: var(--color-primary-soft);
border: 1px solid var(--color-primary);
border-radius: 99px;
font-size: 0.8rem;
font-weight: 600;
color: var(--color-primary);
letter-spacing: 0.04em;
margin-bottom: 1.75rem;
transition: all 0.3s ease;
}
.hero-badge-dot {
width: 6px;
height: 6px;
border-radius: 50%;
background-color: var(--color-primary);
animation: pulse-dot 2s ease-in-out infinite;
}
@keyframes pulse-dot {
0%, 100% { opacity: 1; transform: scale(1); }
50% { opacity: 0.5; transform: scale(0.8); }
}
.hero-title {
font-family: var(--font-heading);
font-size: clamp(2.6rem, 5vw, 3.8rem);
font-weight: 900;
line-height: 1.08;
color: var(--color-heading);
letter-spacing: -0.03em;
margin-bottom: 1.25rem;
}
.hero-title em {
font-style: normal;
color: var(--color-primary);
}
.hero-subtitle {
font-size: 1.15rem;
color: var(--color-text-muted);
line-height: 1.75;
margin-bottom: 2.25rem;
max-width: 480px;
}
.hero-actions {
display: flex;
align-items: center;
gap: 1rem;
flex-wrap: wrap;
margin-bottom: 2.5rem;
}
.hero-social-proof {
display: flex;
align-items: center;
gap: 0.75rem;
}
.hero-avatars {
display: flex;
}
.hero-avatars span {
display: flex;
align-items: center;
justify-content: center;
width: 34px;
height: 34px;
border-radius: 50%;
border: 2px solid var(--color-bg);
background-color: var(--color-surface-2);
font-size: 0.7rem;
font-weight: 700;
color: var(--color-text);
margin-right: -10px;
transition: background-color 0.3s ease, border-color 0.3s ease;
}
.hero-proof-text {
font-size: 0.85rem;
color: var(--color-text-muted);
padding-left: 18px;
}
.hero-proof-text strong {
color: var(--color-heading);
font-weight: 700;
}
/* ── Right: visual card ────────────────────────────────── */
.hero-visual {
position: relative;
}
.hero-card {
background-color: var(--card-bg);
border: 1px solid var(--card-border);
border-radius: var(--radius-xl);
padding: 2rem;
box-shadow: var(--color-card-shadow), var(--color-glow);
transition: all 0.4s ease;
position: relative;
overflow: hidden;
}
.hero-card::before {
content: '';
position: absolute;
top: 0; left: 0; right: 0;
height: 2px;
background: linear-gradient(90deg, var(--color-primary), var(--color-accent));
opacity: 0.8;
}
.hero-card-header {
display: flex;
align-items: center;
gap: 0.5rem;
margin-bottom: 1.5rem;
}
.hero-card-dot {
width: 10px; height: 10px; border-radius: 50%;
}
.hero-card-dot:nth-child(1) { background: #ff5f57; }
.hero-card-dot:nth-child(2) { background: #ffbd2e; }
.hero-card-dot:nth-child(3) { background: #28ca41; }
.hero-stat-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin-bottom: 1.5rem;
}
.hero-stat {
background-color: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
padding: 1rem;
transition: all 0.3s ease;
}
.hero-stat-value {
font-family: var(--font-heading);
font-size: 1.6rem;
font-weight: 900;
color: var(--color-primary);
line-height: 1;
margin-bottom: 0.3rem;
}
.hero-stat-label {
font-size: 0.78rem;
color: var(--color-text-muted);
font-weight: 500;
}
.hero-chart-bar {
display: flex;
align-items: flex-end;
gap: 6px;
height: 80px;
}
.hero-chart-bar span {
flex: 1;
background-color: var(--color-primary-soft);
border-radius: var(--radius-sm) var(--radius-sm) 0 0;
transition: background-color 0.3s ease;
position: relative;
overflow: hidden;
}
.hero-chart-bar span::after {
content: '';
position: absolute;
bottom: 0; left: 0; right: 0;
background-color: var(--color-primary);
border-radius: inherit;
transition: height 0.8s ease;
}
.hero-chart-bar span:nth-child(1)::after { height: 40%; }
.hero-chart-bar span:nth-child(2)::after { height: 65%; }
.hero-chart-bar span:nth-child(3)::after { height: 50%; }
.hero-chart-bar span:nth-child(4)::after { height: 80%; }
.hero-chart-bar span:nth-child(5)::after { height: 60%; }
.hero-chart-bar span:nth-child(6)::after { height: 90%; }
.hero-chart-bar span:nth-child(7)::after { height: 75%; }
/* ── Floating badge ──────────────────────────────────── */
.hero-float-badge {
position: absolute;
bottom: -1rem;
right: -1rem;
background-color: var(--color-primary);
color: var(--color-btn-text);
border-radius: var(--radius-lg);
padding: 0.75rem 1.25rem;
font-size: 0.8rem;
font-weight: 700;
box-shadow: 0 8px 24px var(--color-shadow);
animation: float-badge 4s ease-in-out infinite;
}
@keyframes float-badge {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-6px); }
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 900px) {
.hero-inner {
grid-template-columns: 1fr;
gap: 3rem;
text-align: center;
}
.hero-content {
max-width: 100%;
}
.hero-actions {
justify-content: center;
}
.hero-social-proof {
justify-content: center;
}
.hero-subtitle {
margin-left: auto;
margin-right: auto;
}
}
+160
View File
@@ -0,0 +1,160 @@
/* ============================================================
TESTIMONIALS — LAYOUT B
One large featured quote center-stage.
Author selector row below — click to cycle testimonials.
============================================================ */
.testimonials-b {
padding: 6rem 0;
background-color: var(--color-surface);
transition: background-color 0.4s ease;
}
.testimonials-b-header {
text-align: center;
margin-bottom: 4rem;
}
.testimonials-b-header .section-subtitle { margin: 0 auto; }
/* ── Big quote card ────────────────────────────────────── */
.testimonials-b-stage {
max-width: 820px;
margin: 0 auto 3rem;
background-color: var(--card-bg);
border: 1px solid var(--card-border);
border-radius: var(--radius-xl);
padding: 3.5rem;
text-align: center;
position: relative;
overflow: hidden;
transition: border-color 0.3s ease;
box-shadow: var(--color-card-shadow);
}
.testimonials-b-stage::before {
content: '';
position: absolute;
top: 0; left: 0; right: 0;
height: 3px;
background: linear-gradient(90deg, var(--color-primary), var(--color-accent));
}
.testimonials-b-quote-mark {
font-family: var(--font-heading);
font-size: 5rem;
line-height: 0.6;
color: var(--color-primary);
opacity: 0.2;
margin-bottom: 1.5rem;
display: block;
}
/* Testimonial slides */
.testimonials-b-slide {
display: none;
}
.testimonials-b-slide.is-active {
display: block;
animation: tb-fade-in 0.4s ease;
}
@keyframes tb-fade-in {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
.testimonials-b-text {
font-size: 1.2rem;
color: var(--color-text);
line-height: 1.8;
font-style: italic;
margin-bottom: 2rem;
}
.testimonials-b-stars {
display: flex;
gap: 3px;
justify-content: center;
margin-bottom: 1.5rem;
}
.testimonials-b-stars span { color: var(--color-accent); font-size: 1rem; }
.testimonials-b-author {
display: flex;
align-items: center;
justify-content: center;
gap: 0.85rem;
}
.testimonials-b-avatar {
width: 44px; height: 44px;
border-radius: 50%;
background-color: var(--color-primary-soft);
border: 2px solid var(--color-primary);
display: flex; align-items: center; justify-content: center;
font-size: 0.8rem; font-weight: 800;
color: var(--color-primary);
}
.testimonials-b-name {
font-size: 0.92rem; font-weight: 700;
color: var(--color-heading);
margin-bottom: 0.15rem;
}
.testimonials-b-role {
font-size: 0.8rem;
color: var(--color-text-muted);
}
/* ── Author selector row ───────────────────────────────── */
.testimonials-b-selectors {
display: flex;
align-items: center;
justify-content: center;
gap: 1rem;
flex-wrap: wrap;
}
.testimonials-b-selector {
display: flex;
align-items: center;
gap: 0.6rem;
padding: 0.6rem 1.1rem;
border-radius: 99px;
border: 1.5px solid var(--color-border);
background: none;
cursor: pointer;
font-family: var(--font-body);
font-size: 0.82rem;
font-weight: 600;
color: var(--color-text-muted);
transition: all 0.2s ease;
}
.testimonials-b-selector.is-active,
.testimonials-b-selector:hover {
border-color: var(--color-primary);
color: var(--color-primary);
background-color: var(--color-primary-soft);
}
.testimonials-b-sel-avatar {
width: 24px; height: 24px;
border-radius: 50%;
background-color: var(--color-surface-2);
display: flex; align-items: center; justify-content: center;
font-size: 0.6rem; font-weight: 800;
color: var(--color-text);
flex-shrink: 0;
transition: all 0.2s ease;
}
.testimonials-b-selector.is-active .testimonials-b-sel-avatar,
.testimonials-b-selector:hover .testimonials-b-sel-avatar {
background-color: var(--color-primary);
color: var(--color-btn-text);
}
+153
View File
@@ -0,0 +1,153 @@
/* ============================================================
TESTIMONIALS — LAYOUT C
Full-width stacked list. Each testimonial is a wide row
with a large number, quote, and author inline.
============================================================ */
.testimonials-c {
padding: 6rem 0;
background-color: var(--color-bg);
transition: background-color 0.4s ease;
}
.testimonials-c-header {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 3rem;
align-items: end;
margin-bottom: 4rem;
padding-bottom: 3rem;
border-bottom: 2px solid var(--color-border);
}
.testimonials-c-header .section-subtitle { margin: 0; }
/* ── List ──────────────────────────────────────────────── */
.testimonials-c-list {
display: flex;
flex-direction: column;
gap: 0;
}
/* ── Each row ──────────────────────────────────────────── */
.testimonials-c-item {
display: grid;
grid-template-columns: 60px 1fr auto;
gap: 2.5rem;
align-items: center;
padding: 2.5rem 0;
border-bottom: 1px solid var(--color-border);
cursor: default;
transition: background-color 0.2s ease;
position: relative;
}
.testimonials-c-item:hover {
padding-left: 1rem;
padding-right: 1rem;
margin-left: -1rem;
margin-right: -1rem;
background-color: var(--color-surface);
border-radius: var(--radius-md);
}
/* ── Big number ────────────────────────────────────────── */
.testimonials-c-num {
font-family: var(--font-heading);
font-size: 2.5rem;
font-weight: 900;
color: var(--color-primary);
opacity: 0.2;
line-height: 1;
transition: opacity 0.3s ease;
user-select: none;
}
.testimonials-c-item:hover .testimonials-c-num { opacity: 1; }
/* ── Quote ─────────────────────────────────────────────── */
.testimonials-c-body {}
.testimonials-c-stars {
display: flex;
gap: 2px;
margin-bottom: 0.6rem;
}
.testimonials-c-stars span { color: var(--color-accent); font-size: 0.85rem; }
.testimonials-c-text {
font-size: 0.98rem;
color: var(--color-text);
line-height: 1.75;
font-style: italic;
margin-bottom: 0.75rem;
max-width: 680px;
}
/* ── Author inline ─────────────────────────────────────── */
.testimonials-c-author {
display: flex;
align-items: center;
gap: 0.6rem;
}
.testimonials-c-avatar {
width: 32px; height: 32px;
border-radius: 50%;
background-color: var(--color-primary-soft);
border: 1.5px solid var(--color-primary);
display: flex; align-items: center; justify-content: center;
font-size: 0.65rem; font-weight: 800;
color: var(--color-primary);
flex-shrink: 0;
transition: all 0.2s ease;
}
.testimonials-c-item:hover .testimonials-c-avatar {
background-color: var(--color-primary);
color: var(--color-btn-text);
}
.testimonials-c-name {
font-size: 0.85rem; font-weight: 700;
color: var(--color-heading);
}
.testimonials-c-role {
font-size: 0.78rem;
color: var(--color-text-muted);
margin-left: 0.5rem;
}
/* ── Right: company badge ──────────────────────────────── */
.testimonials-c-badge {
padding: 0.35rem 0.85rem;
border: 1px solid var(--color-border);
border-radius: 99px;
font-size: 0.75rem;
font-weight: 600;
color: var(--color-text-muted);
white-space: nowrap;
flex-shrink: 0;
transition: all 0.2s ease;
}
.testimonials-c-item:hover .testimonials-c-badge {
border-color: var(--color-primary);
color: var(--color-primary);
background-color: var(--color-primary-soft);
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 768px) {
.testimonials-c-header { grid-template-columns: 1fr; }
.testimonials-c-item {
grid-template-columns: 40px 1fr;
gap: 1.25rem;
}
.testimonials-c-badge { display: none; }
.testimonials-c-num { font-size: 1.8rem; }
}
+159
View File
@@ -0,0 +1,159 @@
/* ============================================================
TESTIMONIALS COMPONENT
3-column card grid with quote, avatar, name, role
============================================================ */
.testimonials {
padding: 6rem 0;
background-color: var(--color-bg);
transition: background-color 0.4s ease;
}
.testimonials-header {
text-align: center;
margin-bottom: 4rem;
}
.testimonials-header .section-subtitle {
margin: 0 auto;
}
/* ── Grid ──────────────────────────────────────────────── */
.testimonials-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1.5rem;
align-items: start;
}
/* ── Card ──────────────────────────────────────────────── */
.testimonial-card {
background-color: var(--card-bg);
border: 1px solid var(--card-border);
border-radius: var(--radius-lg);
padding: 2rem;
display: flex;
flex-direction: column;
gap: 1.25rem;
position: relative;
transition: border-color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
}
.testimonial-card:hover {
border-color: var(--card-hover-border);
transform: translateY(-3px);
box-shadow: var(--color-card-shadow);
}
/* Offset second card slightly for visual interest */
.testimonials-grid .testimonial-card:nth-child(2) {
margin-top: 1.5rem;
}
/* ── Stars ─────────────────────────────────────────────── */
.testimonial-stars {
display: flex;
gap: 3px;
}
.testimonial-stars span {
color: var(--color-accent);
font-size: 0.9rem;
}
/* ── Quote mark ────────────────────────────────────────── */
.testimonial-quote-mark {
font-family: var(--font-heading);
font-size: 4rem;
line-height: 0.5;
color: var(--color-primary);
opacity: 0.3;
user-select: none;
}
/* ── Text ──────────────────────────────────────────────── */
.testimonial-text {
font-size: 0.93rem;
color: var(--color-text);
line-height: 1.8;
flex: 1;
}
/* ── Divider ───────────────────────────────────────────── */
.testimonial-divider {
height: 1px;
background-color: var(--color-border);
transition: background-color 0.3s ease;
}
/* ── Author ────────────────────────────────────────────── */
.testimonial-author {
display: flex;
align-items: center;
gap: 0.85rem;
}
.testimonial-avatar {
width: 42px;
height: 42px;
border-radius: 50%;
background-color: var(--color-primary-soft);
border: 2px solid var(--color-primary);
display: flex;
align-items: center;
justify-content: center;
font-size: 0.78rem;
font-weight: 800;
color: var(--color-primary);
flex-shrink: 0;
transition: all 0.3s ease;
}
.testimonial-card:hover .testimonial-avatar {
background-color: var(--color-primary);
color: var(--color-btn-text);
}
.testimonial-name {
font-size: 0.9rem;
font-weight: 700;
color: var(--color-heading);
margin-bottom: 0.15rem;
}
.testimonial-role {
font-size: 0.78rem;
color: var(--color-text-muted);
}
/* ── Featured card (middle) ────────────────────────────── */
.testimonial-card.is-featured {
border-color: var(--color-primary);
background: linear-gradient(160deg, var(--color-primary-soft) 0%, var(--card-bg) 50%);
}
.testimonial-card.is-featured::before {
content: 'Featured';
position: absolute;
top: -1px;
right: 1.5rem;
background-color: var(--color-primary);
color: var(--color-btn-text);
font-size: 0.68rem;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
padding: 0.25rem 0.7rem;
border-radius: 0 0 var(--radius-sm) var(--radius-sm);
}
/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 900px) {
.testimonials-grid {
grid-template-columns: 1fr;
}
.testimonials-grid .testimonial-card:nth-child(2) {
margin-top: 0;
}
}