gcx/frontend/portal/src/app/content.module.css

194 lines
3.3 KiB
CSS

/* Shared styles for content/legal pages */
.hero {
padding: 160px 24px 60px;
text-align: center;
background: linear-gradient(180deg, var(--color-primary-surface) 0%, var(--color-surface) 100%);
}
.title {
font-size: 42px;
font-weight: 700;
margin-bottom: 12px;
}
.subtitle {
font-size: 18px;
color: var(--color-text-secondary);
max-width: 600px;
margin: 0 auto;
}
.body {
max-width: 800px;
margin: 0 auto;
padding: 60px 24px 100px;
}
.body h2 {
font-size: 24px;
font-weight: 600;
margin: 40px 0 16px;
color: var(--color-text-primary);
}
.body h3 {
font-size: 18px;
font-weight: 600;
margin: 28px 0 12px;
color: var(--color-text-primary);
}
.body p {
font-size: 15px;
line-height: 1.8;
color: var(--color-text-secondary);
margin-bottom: 16px;
}
.body ul {
padding-left: 24px;
margin-bottom: 16px;
}
.body li {
font-size: 15px;
line-height: 1.8;
color: var(--color-text-secondary);
margin-bottom: 8px;
}
.updated {
font-size: 14px;
color: var(--color-text-tertiary);
margin-bottom: 40px;
}
/* ---- Grid layout for pages like careers, help, status ---- */
.grid {
max-width: var(--max-width);
margin: 0 auto;
padding: 80px 24px;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 28px;
}
.card {
background: var(--color-surface);
border-radius: var(--radius-lg);
padding: 36px 28px;
border: 1px solid var(--color-border-light);
transition: all 0.3s;
}
.card:hover {
transform: translateY(-4px);
box-shadow: var(--shadow-lg);
}
.cardIcon {
font-size: 36px;
margin-bottom: 16px;
}
.cardTitle {
font-size: 20px;
font-weight: 600;
margin-bottom: 10px;
}
.cardDesc {
font-size: 14px;
color: var(--color-text-secondary);
line-height: 1.7;
}
.cardLink {
display: inline-block;
margin-top: 16px;
font-size: 14px;
font-weight: 600;
color: var(--color-primary);
}
/* ---- Status indicator ---- */
.statusDot {
display: inline-block;
width: 10px;
height: 10px;
border-radius: 50%;
background: var(--color-success);
margin-right: 8px;
}
.statusRow {
display: flex;
align-items: center;
justify-content: space-between;
padding: 16px 0;
border-bottom: 1px solid var(--color-border-light);
font-size: 15px;
}
.statusLabel {
display: flex;
align-items: center;
gap: 8px;
}
.statusBadge {
font-size: 13px;
font-weight: 500;
color: var(--color-success);
}
/* ---- Blog card ---- */
.blogCard {
background: var(--color-surface);
border-radius: var(--radius-lg);
overflow: hidden;
border: 1px solid var(--color-border-light);
transition: all 0.3s;
}
.blogCard:hover {
transform: translateY(-4px);
box-shadow: var(--shadow-lg);
}
.blogThumb {
height: 180px;
background: linear-gradient(135deg, var(--color-primary-surface), var(--color-primary-container));
display: flex;
align-items: center;
justify-content: center;
font-size: 48px;
}
.blogBody {
padding: 24px;
}
.blogDate {
font-size: 13px;
color: var(--color-text-tertiary);
margin-bottom: 8px;
}
.blogTitle {
font-size: 18px;
font-weight: 600;
margin-bottom: 8px;
}
.blogExcerpt {
font-size: 14px;
color: var(--color-text-secondary);
line-height: 1.6;
}
@media (max-width: 768px) {
.title { font-size: 28px; }
.grid { grid-template-columns: 1fr; max-width: 480px; }
}