*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { font-size: 14px; line-height: 1.6; scroll-behavior: smooth; } body { font-family: $font-ui; background: var(--bg-primary); color: var(--text-primary); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } a { color: var(--accent-primary); text-decoration: none; &:hover { color: var(--accent-hover); } } code { font-family: $font-code; background: var(--code-bg); padding: 2px 6px; border-radius: $radius-sm; font-size: 0.9em; } pre { code { display: block; padding: 16px; border-radius: $radius-md; overflow-x: auto; } } .section { max-width: 1120px; margin: 0 auto; padding: 80px 24px; @media (max-width: $breakpoint-mobile) { padding: 48px 16px; } } .section-title { font-size: 32px; font-weight: 700; text-align: center; margin-bottom: 16px; color: var(--text-primary); @media (max-width: $breakpoint-mobile) { font-size: 24px; } } .section-desc { text-align: center; color: var(--text-secondary); font-size: 16px; max-width: 640px; margin: 0 auto 48px; } // ─── Scroll reveal animations ──────────────────────────── .reveal { opacity: 0; transform: translateY(24px); transition: opacity 0.6s ease, transform 0.6s ease; &.revealed { opacity: 1; transform: translateY(0); } } .reveal-delay-1 { transition-delay: 0.08s; } .reveal-delay-2 { transition-delay: 0.16s; } .reveal-delay-3 { transition-delay: 0.24s; } .reveal-delay-4 { transition-delay: 0.32s; } // ─── Keyframes ──────────────────────────────────────────── @keyframes fade-in-up { from { opacity: 0; transform: translateY(32px); } to { opacity: 1; transform: translateY(0); } } @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } @keyframes pulse-border { 0%, 100% { border-color: var(--border-color); } 50% { border-color: var(--text-muted); } } .animate-fade-in-up { animation: fade-in-up 0.7s ease both; } .animate-fade-in { animation: fade-in 0.5s ease both; } .animate-delay-1 { animation-delay: 0.1s; } .animate-delay-2 { animation-delay: 0.2s; } .animate-delay-3 { animation-delay: 0.3s; } .animate-delay-4 { animation-delay: 0.4s; } .animate-delay-5 { animation-delay: 0.5s; }