/* ===== 全局重置 ===== */
* {
 margin: 0;
 padding: 0;
 box-sizing: border-box;
}
body {
 font-family: "PingFang SC", "Microsoft YaHei", sans-serif;
 background: linear-gradient(135deg, #ffe0ec 0%, #fff5f7 50%, #ffe8f0 100%);
 color: #333;
 overflow-x: hidden;
}
.container {
 max-width: 900px;
 margin: 0 auto;
 padding: 0 20px;
}
/* ===== 飘落爱心背景 ===== */
.hearts-bg {
 position: fixed;
 top: 0; left: 0;
 width: 100%; height: 100%;
 pointer-events: none;
 z-index: 0;
 overflow: hidden;
}
.heart {
 position: absolute;
 font-size: 20px;
 animation: fall linear infinite;
 opacity: 0.6;
}
@keyframes fall {
 0% {
 transform: translateY(-10vh) rotate(0deg);
 opacity: 0;
 }
 10% { opacity: 0.6; }
 90% { opacity: 0.6; }
 100% {
 transform: translateY(110vh) rotate(360deg);
 opacity: 0;
 }
}
/* ===== 封面 ===== */
.hero {
 height: 100vh;
 display: flex;
 align-items: center;
 justify-content: center;
 text-align: center;
 position: relative;
 z-index: 1;
}
.hero-content h1 {
 font-size: 3.5rem;
 color: #e8507a;
 margin-bottom: 20px;
 text-shadow: 2px 2px 8px rgba(232, 80, 122, 0.2);
}
.hero-content .subtitle {
 font-size: 1.3rem;
 color: #888;
 margin-bottom: 60px;
}
.scroll-hint {
 color: #e8507a;
 font-size: 0.9rem;
}
.scroll-hint .arrow {
 font-size: 1.5rem;
 margin-top: 10px;
 animation: bounce 1.5s infinite;
}
@keyframes bounce {
 0%, 100% { transform: translateY(0); }
 50% { transform: translateY(10px); }
}
/* ===== 淡入动画 ===== */
.fade-in {
 opacity: 0;
 animation: fadeIn 1.2s ease forwards;
}
.delay-1 { animation-delay: 0.5s; }
.delay-2 { animation-delay: 1s; }
@keyframes fadeIn {
 from { opacity: 0; transform: translateY(20px); }
 to { opacity: 1; transform: translateY(0); }
}
/* ===== 通用标题 ===== */
.section-title {
 text-align: center;
 font-size: 2rem;
 color: #e8507a;
 margin-bottom: 40px;
 position: relative;
}
.section-title::after {
 content: "";
 display: block;
 width: 60px;
 height: 3px;
 background: #e8507a;
 margin: 12px auto 0;
 border-radius: 2px;
}
/* ===== 道歉信 ===== */
.letter-section {
 padding: 80px 0;
 position: relative;
 z-index: 1;
}
.letter-card {
 background: white;
 border-radius: 20px;
 padding: 50px 40px;
 box-shadow: 0 10px 40px rgba(232, 80, 122, 0.15);
 line-height: 2;
 font-size: 1.05rem;
 color: #555;
 min-height: 200px;
}
.letter-sign {
 text-align: right;
 margin-top: 30px;
 color: #e8507a;
 font-style: italic;
}
/* ===== 时间线 ===== */
.timeline-section {
 padding: 80px 0;
 position: relative;
 z-index: 1;
}
.timeline {
 position: relative;
 padding: 20px 0;
}
.timeline::before {
 content: "";
 position: absolute;
 left: 50%;
 top: 0; bottom: 0;
 width: 3px;
 background: #e8507a;
 transform: translateX(-50%);
 opacity: 0.3;
}
.timeline-item {
 position: relative;
 width: 50%;
 padding: 20px 40px;
 margin-bottom: 20px;
}
.timeline-item.left { left: 0; text-align: right; }
.timeline-item.right { left: 50%; text-align: left; }
.timeline-dot {
 position: absolute;
 top: 30px;
 width: 16px; height: 16px;
 background: #e8507a;
 border-radius: 50%;
 border: 3px solid white;
 box-shadow: 0 0 0 3px #e8507a;
}
.timeline-item.left .timeline-dot { right: -8px; }
.timeline-item.right .timeline-dot { left: -8px; }
.timeline-content {
 background: white;
 padding: 20px;
 border-radius: 12px;
 box-shadow: 0 4px 15px rgba(0,0,0,0.08);
 transition: transform 0.3s;
}
.timeline-content:hover {
 transform: translateY(-5px);
}
.timeline-content h3 {
 color: #e8507a;
 margin-bottom: 8px;
}
.timeline-content p {
 color: #666;
 line-height: 1.7;
}
/* ===== 承诺卡片 ===== */
.promise-section {
 padding: 80px 0;
 position: relative;
 z-index: 1;
}
.promise-cards {
 display: grid;
 grid-template-columns: repeat(3, 1fr);
 gap: 25px;
}
.promise-card {
 background: white;
 border-radius: 16px;
 padding: 35px 25px;
 text-align: center;
 box-shadow: 0 5px 20px rgba(232, 80, 122, 0.1);
 transition: all 0.3s ease;
}
.promise-card:hover {
 transform: translateY(-8px);
 box-shadow: 0 15px 35px rgba(232, 80, 122, 0.2);
}
.promise-card .icon {
 font-size: 2.5rem;
 margin-bottom: 15px;
}
.promise-card h3 {
 color: #e8507a;
 margin-bottom: 12px;
 font-size: 1.2rem;
}
.promise-card p {
 color: #777;
 line-height: 1.8;
 font-size: 0.95rem;
}
/* ===== 互动按钮 ===== */
.action-section {
 padding: 80px 0;
 text-align: center;
 position: relative;
 z-index: 1;
}
.btn-group {
 display: flex;
 justify-content: center;
 gap: 20px;
 margin-top: 30px;
 flex-wrap: wrap;
}
.btn {
 padding: 15px 40px;
 font-size: 1.1rem;
 border: none;
 border-radius: 50px;
 cursor: pointer;
 transition: all 0.3s ease;
 font-family: inherit;
}
.btn-yes {
 background: linear-gradient(135deg, #e8507a, #ff7aa2);
 color: white;
 box-shadow: 0 5px 20px rgba(232, 80, 122, 0.4);
}
.btn-yes:hover {
 transform: scale(1.08);
 box-shadow: 0 8px 30px rgba(232, 80, 122, 0.5);
}
.btn-no {
 background: white;
 color: #e8507a;
 border: 2px solid #e8507a;
}
.btn-no:hover {
 background: #fff0f5;
}
.result-box {
 margin-top: 30px;
 padding: 25px;
 background: white;
 border-radius: 15px;
 box-shadow: 0 5px 20px rgba(232, 80, 122, 0.15);
 max-width: 500px;
 margin-left: auto;
 margin-right: auto;
 animation: fadeIn 0.5s ease;
}
.result-box p {
 font-size: 1.1rem;
 line-height: 1.8;
 color: #555;
}
/* ===== 页脚 ===== */
.footer {
 text-align: center;
 padding: 40px 20px;
 color: #aaa;
 font-size: 0.9rem;
 position: relative;
 z-index: 1;
}
.footer .date {
 margin-top: 8px;
 font-size: 0.8rem;
}
/* ===== 响应式适配 ===== */
@media (max-width: 768px) {
 .hero-content h1 { font-size: 2.2rem; }
 .hero-content .subtitle { font-size: 1rem; }
 .timeline::before { left: 20px; }
 .timeline-item {
 width: 100%;
 left: 0 !important;
 text-align: left !important;
 padding-left: 50px;
 padding-right: 10px;
 }
 .timeline-item .timeline-dot { left: 12px !important; right: auto !important; }
 .promise-cards {
 grid-template-columns: 1fr;
 }
 .letter-card {
 padding: 30px 20px;
 }
}