feat: implement modular UMass theme components and supporting generation scripts for home page structure

This commit is contained in:
2026-07-29 23:03:29 +07:00
parent c1e0e39aad
commit 317df123bb
37 changed files with 7044 additions and 192 deletions
@@ -0,0 +1,172 @@
<style>
.stroke-book-banner {
background-color: #f8f9fa;
padding: 36px 20px;
font-family: var(--font-family-base, 'Inter', 'Segoe UI', sans-serif);
display: flex;
justify-content: center;
}
.sbb-container {
display: flex;
flex-direction: row;
align-items: center;
max-width: var(--max-width);
width: 100%;
gap: 50px;
/* Faint brain background pattern placeholder */
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 24 24" fill="none" stroke="%23ffe6e6" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9.5 2A2.5 2.5 0 0 1 12 4.5v15a2.5 2.5 0 0 1-4.96.44 2.5 2.5 0 0 1-2.96-3.08 3 3 0 0 1-.34-5.58 2.5 2.5 0 0 1 1.32-4.24 2.5 2.5 0 0 1 1.98-3A2.5 2.5 0 0 1 9.5 2Z"/><path d="M14.5 2A2.5 2.5 0 0 0 12 4.5v15a2.5 2.5 0 0 0 4.96.44 2.5 2.5 0 0 0 2.96-3.08 3 3 0 0 0 .34-5.58 2.5 2.5 0 0 0-1.32-4.24 2.5 2.5 0 0 0-1.98-3A2.5 2.5 0 0 0 14.5 2Z"/></svg>');
background-position: right center;
background-repeat: no-repeat;
background-size: 350px;
}
.sbb-left {
flex: 1.2;
display: flex;
justify-content: flex-end;
}
.sbb-left img {
max-width: 100%;
height: auto;
object-fit: contain;
filter: drop-shadow(0 15px 25px rgba(0, 0, 0, 0.15));
}
.sbb-right {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
padding-right: 20px;
}
.sbb-subtitle {
font-size: 1.4rem;
font-weight: 700;
color: #222;
margin-bottom: 5px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.sbb-title {
font-size: 3.2rem;
font-weight: 800;
color: #c0272d;
margin: 0 0 15px 0;
text-transform: uppercase;
line-height: 1.1;
letter-spacing: -0.5px;
}
.sbb-tagline {
font-size: 1.25rem;
font-weight: 700;
color: #333;
margin-bottom: 30px;
}
.sbb-features {
list-style: none;
padding: 0;
margin: 0 0 35px 0;
}
.sbb-features li {
font-size: 1.1rem;
color: #444;
margin-bottom: 14px;
display: flex;
align-items: center;
font-weight: 500;
}
.sbb-features li::before {
content: '✓';
display: inline-flex;
justify-content: center;
align-items: center;
width: 24px;
height: 24px;
border-radius: 50%;
border: 1.5px solid #c0272d;
color: #c0272d;
font-size: 14px;
font-weight: bold;
margin-right: 12px;
flex-shrink: 0;
}
.sbb-btn {
display: inline-block;
background: linear-gradient(180deg, #d81b32 0%, #a11122 100%);
color: #fff;
font-weight: 700;
font-size: 1.15rem;
padding: 16px 40px;
border-radius: 6px;
text-decoration: none;
text-transform: uppercase;
box-shadow: 0 4px 10px rgba(161, 17, 34, 0.4);
transition: all 0.3s ease;
letter-spacing: 0.5px;
border: 1px solid #8e0b1b;
}
.sbb-btn:hover {
background: linear-gradient(180deg, #ee1f38 0%, #b81427 100%);
box-shadow: 0 6px 15px rgba(161, 17, 34, 0.5);
transform: translateY(-2px);
color: #fff !important;
}
@media (max-width: 992px) {
.sbb-container {
flex-direction: column;
text-align: center;
gap: 30px;
background-image: none;
}
.sbb-left {
justify-content: center;
}
.sbb-right {
align-items: center;
padding-right: 0;
}
.sbb-title {
font-size: 2.5rem;
}
.sbb-features li {
text-align: left;
justify-content: flex-start;
}
}
</style>
<div class="stroke-book-banner">
<div class="sbb-container">
<div class="sbb-left">
<img src="/upload/sach-dot-quy-ngang.png" alt="Cẩm nang sức khỏe phòng chống đột quỵ">
</div>
<div class="sbb-right">
<div class="sbb-subtitle">CẨM NANG SỨC KHỎE</div>
<h2 class="sbb-title">PHÒNG CHỐNG ĐỘT QUỴ</h2>
<div class="sbb-tagline">Hiểu đúng Phòng sớm Sống khỏe mỗi ngày</div>
<ul class="sbb-features">
<li>Kiến thức khoa học, dễ hiểu</li>
<li>Nhận biết sớm dấu hiệu Xử trí kịp thời</li>
<li>Phòng ngừa hiệu quả Giảm thiểu nguy cơ</li>
<li>Dành cho mọi lứa tuổi</li>
</ul>
<a href="#" class="sbb-btn">TÌM HIỂU NGAY</a>
</div>
</div>
</div>