/* Handbook CSS - A Professional Refactor --------------------------------------------- This stylesheet has been completely rewritten with a modern, component-based architecture using CSS Custom Properties for a scalable and maintainable design system. The visual and interactive experience remains identical to the original. */ /* ========================================================================== 1. FOUNDATION & DESIGN TOKENS ========================================================================== */ /* --- Font Import --- */ @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap'); :root { /* Base Palette (Light Mode) */ --c-bg: #F8F9FA; --c-surface: #FFFFFF; --c-text-primary: #1a1a1a; --c-text-secondary: #5a646e; --c-accent: #0077ff; --c-border: #e9ecef; --c-shadow-color: rgba(0, 4, 48, 0.05); /* UI Feedback Colors */ --c-success: #28a745; --c-error: #dc3545; --c-info: #17a2b8; --c-light-text-on-accent: #ffffff; /* Typography */ --font-primary: 'Poppins', sans-serif; --fw-regular: 400; --fw-semibold: 600; --fw-bold: 700; /* Spacing & Sizing */ --space-xs: 0.5rem; /* 8px */ --space-sm: 0.75rem; /* 12px */ --space-md: 1rem; /* 16px */ --space-lg: 1.5rem; /* 24px */ --space-xl: 2rem; /* 32px */ --space-xxl: 2.5rem; /* 40px */ /* Borders & Radii */ --radius-sm: 8px; --radius-md: 16px; --radius-lg: 24px; --radius-full: 50px; --border-width: 1px; /* Shadows */ --shadow-sm: 0 4px 15px var(--c-shadow-color); --shadow-md: 0 8px 30px var(--c-shadow-color); --shadow-lg: 0 10px 40px rgba(0, 0, 0, 0.2); /* Transitions */ --transition-fast: 0.2s cubic-bezier(0.4, 0, 0.2, 1); --transition-medium: 0.4s cubic-bezier(0.4, 0, 0.2, 1); --transition-playful: 0.6s cubic-bezier(0.34, 1.56, 0.64, 1); } /* --- Global Styles --- */ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body { font-family: var(--font-primary); background: var(--c-bg); color: var(--c-text-primary); transition: background 0.5s ease, color 0.5s ease, background-image 0.5s ease; min-height: 100vh; display: flex; flex-direction: column; background-attachment: fixed; } h1, h2, h3 { font-weight: var(--fw-bold); color: var(--c-text-primary); } p { color: var(--c-text-secondary); line-height: 1.6; } a { color: var(--c-accent); text-decoration: none; transition: opacity var(--transition-fast); } a:hover { opacity: 0.8; } input, button { font-family: inherit; font-size: inherit; color: inherit; } /* ========================================================================== 2. THEMES ========================================================================== */ body.dark-mode { --c-bg: #121212; --c-surface: #1E1E1E; --c-text-primary: #EAEAEA; --c-text-secondary: #888888; --c-accent: #00A6ED; --c-border: #2c2c2c; --c-shadow-color: rgba(0, 0, 0, 0.2); } body.cream-mode { --c-bg: #FDF8E1; --c-surface: #FFFBF0; --c-text-primary: #6B4F4F; --c-text-secondary: #9E8B7D; --c-accent: #C19A6B; --c-border: #EFE8D0; --c-shadow-color: rgba(107, 79, 79, 0.08); } body.pop-blue-mode { --c-bg: #F1FAEE; --c-surface: #ffffff; --c-text-primary: #1D3557; --c-text-secondary: #457B9D; --c-accent: #E63946; --c-border: #a8dadc4d; --c-shadow-color: rgba(29, 53, 87, 0.08); } body.pop-green-mode { --c-bg: #E8FDF0; --c-surface: #ffffff; --c-text-primary: #004D40; --c-text-secondary: #006A57; --c-accent: #FF6B6B; --c-border: #b2f7c24d; --c-shadow-color: rgba(0, 77, 64, 0.08); } body.sunset-mode { --c-bg: #FFF4E8; --c-surface: #ffffff; --c-text-primary: #5E376D; --c-text-secondary: #A16A70; --c-accent: #FF7B54; --c-border: #ffecd94d; --c-shadow-color: rgba(94, 55, 109, 0.08); } body.midnight-mode { --c-bg: #0F172A; --c-surface: #1E293B; --c-text-primary: #E2E8F0; --c-text-secondary: #94A3B8; --c-accent: #818CF8; --c-border: #334155; --c-shadow-color: rgba(0, 0, 0, 0.2); } /* --- Gradient Themes --- */ body.sunny-meadow-mode { --c-bg: #FCF9E8; --c-surface: #FFFFFF; --c-text-primary: #5c5221; --c-text-secondary: #857c58; --c-accent: #E07A5F; --c-border: #f2e9c2; --c-shadow-color: rgba(107, 79, 79, 0.08); background-image: linear-gradient(160deg, rgba(246, 211, 101, 0.2) 0%, rgba(253, 160, 133, 0.15) 100%); } body.ocean-breeze-mode { --c-bg: #E6F7F9; --c-surface: #FFFFFF; --c-text-primary: #0b4f6c; --c-text-secondary: #247b7b; --c-accent: #17A2B8; --c-border: #cceef2; --c-shadow-color: rgba(29, 53, 87, 0.08); background-image: linear-gradient(160deg, rgba(91, 36, 122, 0.1) 0%, rgba(27, 206, 223, 0.15) 100%); } body.starry-night-mode { --c-bg: #192b33; --c-surface: rgba(255, 255, 255, 0.07); --c-text-primary: #ffffff; --c-text-secondary: rgba(255, 255, 255, 0.7); --c-border: rgba(255, 255, 255, 0.15); --c-shadow-color: rgba(0, 0, 0, 0.25); --c-accent: #a3bded; background-image: linear-gradient(135deg, rgba(15, 32, 39, 0.5) 0%, rgba(32, 58, 67, 0.7) 50%, rgba(44, 83, 100, 0.7) 100%); } /* ========================================================================== 3. LAYOUT ========================================================================== */ .page-container { flex-grow: 1; display: flex; flex-direction: column; animation: fadeIn 0.5s ease-in-out; } .page-main-content { padding: 100px var(--space-xl) var(--space-xl) var(--space-xl); width: 100%; max-width: 800px; margin: 0 auto; display: flex; flex-direction: column; gap: var(--space-xxl); } .page-title { text-align: center; font-size: 2.5rem; margin-bottom: var(--space-md); } #home-page main { flex-grow: 1; display: grid; place-content: center; text-align: center; padding: var(--space-xl); } #home-page footer { padding: var(--space-xl); width: 100%; max-width: 600px; margin: 0 auto; text-align: center; } /* ========================================================================== 4. COMPONENTS ========================================================================== */ /* --- Header & Theme Manager --- */ header { position: fixed; top: 20px; left: 20px; right: 20px; display: flex; justify-content: space-between; align-items: center; height: 44px; z-index: 100; transition: transform var(--transition-medium); } header.header-hidden { transform: translateY(calc(-100% - 30px)); } #theme-manager { display: flex; align-items: center; background-color: color-mix(in srgb, var(--c-surface) 80%, transparent); backdrop-filter: blur(10px); border-radius: var(--radius-full); box-shadow: var(--shadow-sm); border: var(--border-width) solid var(--c-border); transition: all var(--transition-playful); } .theme-switcher { display: flex; gap: var(--space-xs); padding: 0 var(--space-xs); max-width: 0; opacity: 0; overflow: hidden; transition: max-width var(--transition-medium), opacity 0.2s ease, padding var(--transition-medium); } #theme-manager.themes-visible .theme-switcher { max-width: 450px; opacity: 1; padding: var(--space-xs); } .theme-switcher button { width: 28px; height: 28px; border-radius: 50%; border: 2px solid var(--c-border); cursor: pointer; transition: all var(--transition-playful); flex-shrink: 0; } .theme-switcher button:hover { transform: scale(1.15) rotate(15deg); } .theme-switcher button.active { border-color: var(--c-accent); transform: scale(1.25) rotate(-5deg); box-shadow: 0 0 12px color-mix(in srgb, var(--c-accent) 60%, transparent); } #toggle-themes-btn .arrow-icon { transition: transform var(--transition-medium); } #theme-manager.themes-visible .arrow-icon { transform: rotate(180deg); } #light-btn { background-color: #F8F9FA; } #dark-btn { background-color: #121212; } #cream-btn { background-color: #FDF8E1; } #pop-blue-btn { background-color: #F1FAEE; } #pop-green-btn { background-color: #E8FDF0; } #sunset-btn { background-color: #FFF4E8; } #midnight-btn { background-color: #0F172A; } #sunny-meadow-btn { background: linear-gradient(135deg, #f6d365, #fda085); } #ocean-breeze-btn { background: linear-gradient(135deg, #5b247a, #1bcedf); } #starry-night-btn { background: linear-gradient(135deg, #0f2027, #2c5364); } /* --- Buttons --- */ .icon-btn { background: none; border: none; cursor: pointer; padding: 4px; color: var(--c-text-secondary); display: flex; align-items: center; justify-content: center; transition: color var(--transition-fast), transform var(--transition-fast); } .icon-btn svg { stroke: currentColor; } .icon-btn:hover { color: var(--c-accent); transform: scale(1.1); } .icon-btn:active { transform: scale(1); } /* --- Card --- */ .card { background-color: var(--c-surface); border-radius: var(--radius-lg); border: var(--border-width) solid var(--c-border); padding: var(--space-lg); transition: all var(--transition-medium); } /* --- Logo & SOTD --- */ .logo-container { cursor: pointer; transition: transform var(--transition-playful); animation: popIn 0.8s var(--transition-playful) backwards; margin-bottom: var(--space-xl); } .logo-container:active { transform: scale(0.95) rotate(-3deg); } .main-icon { fill: var(--c-accent); transition: fill var(--transition-medium); margin-bottom: var(--space-xs); } .logo-container h1 { font-size: clamp(2.5rem, 8vw, 3.5rem); font-weight: var(--fw-bold); } .logo-container:hover .main-icon { fill: var(--c-text-primary); } .sotd-wrapper { margin-top: -1rem; margin-bottom: var(--space-xl); display: grid; place-items: center; animation: fadeIn 1s 0.5s ease backwards; } .sotd-label { font-size: 0.8rem; font-weight: var(--fw-semibold); color: var(--c-text-secondary); margin-bottom: var(--space-xs); letter-spacing: 0.5px; } #sotd-card, .flashcard-container { width: 100%; perspective: 1500px; cursor: pointer; } #sotd-card { max-width: 320px; height: 80px; } #sotd-card .sotd-card-inner, .flashcard-container .flashcard { position: relative; width: 100%; height: 100%; transition: transform 0.8s var(--transition-playful); transform-style: preserve-3d; } #sotd-card.is-flipped .sotd-card-inner, .flashcard-container.is-flipped .flashcard { transform: rotateY(180deg); } .sotd-front, .sotd-back, .flashcard-front, .flashcard-back { position: absolute; width: 100%; height: 100%; inset: 0; backface-visibility: hidden; display: grid; place-content: center; padding: var(--space-xl); border-radius: var(--radius-lg); background: var(--c-surface); border: var(--border-width) solid var(--c-border); box-shadow: var(--shadow-md); text-align: center; } .sotd-back, .flashcard-back { transform: rotateY(180deg); } #sotd-name { font-size: 1.2rem; font-weight: var(--fw-semibold); } #sotd-desc { font-size: 0.9rem; } /* --- Search --- */ .search-container { display: flex; flex-direction: column; align-items: center; gap: var(--space-sm); } .search-helper { font-size: 0.9rem; color: var(--c-text-secondary); margin-bottom: var(--space-xs); transition: all var(--transition-fast); } .search-helper.hidden { opacity: 0; } .search-form { position: relative; width: 100%; } .search-form input, .language-search-container input { width: 100%; padding: var(--space-md) 1.75rem; font-size: 1rem; background-color: var(--c-surface); border: var(--border-width) solid var(--c-border); border-radius: var(--radius-full); outline: none; transition: all var(--transition-medium); } .search-form input { padding-right: 4rem; } .search-form input::placeholder, .language-search-container input::placeholder { color: var(--c-text-secondary); opacity: 0.7; } .search-form input:focus, .language-search-container input:focus { border-color: var(--c-accent); box-shadow: 0 0 0 4px color-mix(in srgb, var(--c-accent) 20%, transparent); } .search-clear-btn { position: absolute; right: var(--space-md); top: 50%; transform: translateY(-50%); opacity: 0; pointer-events: none; transition: all var(--transition-fast); } .search-clear-btn.visible { opacity: 1; transform: translateY(-50%) scale(1); pointer-events: auto; } .language-search-container { width: 100%; max-height: 0; opacity: 0; transform: translateY(-10px); transition: all var(--transition-medium); overflow: hidden; } .language-search-container.visible { max-height: 100px; opacity: 1; transform: translateY(0); } /* --- Footer Links --- */ .footer-links { display: flex; justify-content: center; align-items: center; gap: var(--space-md); margin-top: var(--space-xl); } .footer-link-btn { font-size: 0.8rem; font-weight: var(--fw-semibold); padding: 0.6rem 1.2rem; border-radius: var(--radius-full); background-color: var(--c-surface); color: var(--c-text-secondary); border: var(--border-width) solid var(--c-border); transition: all var(--transition-fast); } .footer-link-btn:hover { background-color: var(--c-accent); color: var(--c-light-text-on-accent); border-color: var(--c-accent); transform: translateY(-2px); box-shadow: 0 4px 10px var(--c-shadow-color); } .footer-link-btn:active { transform: translateY(-1px); } .copyright { font-size: 0.8rem; color: var(--c-text-secondary); opacity: 0.7; } /* --- Account Page Components --- */ .account-profile { display: flex; align-items: center; gap: var(--space-lg); } .account-avatar { width: 80px; height: 80px; border-radius: 50%; background-color: var(--c-accent); color: var(--c-light-text-on-accent); display: grid; place-content: center; font-size: 2rem; font-weight: var(--fw-bold); flex-shrink: 0; transition: background-color var(--transition-medium); } .account-name { font-size: 2.25rem; margin-bottom: 0.25rem; } .membership-date { font-size: 0.9rem; } .subscription-box-link { display: flex; justify-content: space-between; align-items: center; } .manage-sub-button { font-weight: var(--fw-semibold); font-size: 0.9rem; padding: 0.75rem 1.25rem; border-radius: var(--radius-full); color: var(--c-accent); border: var(--border-width) solid var(--c-accent); } .manage-sub-button:hover { background-color: var(--c-accent); color: var(--c-light-text-on-accent); opacity: 1; } .manage-sub-button:active { transform: scale(0.97); } .stats-container { display: flex; justify-content: center; gap: clamp(2rem, 10vw, 4rem); text-align: center; } .stat-item { cursor: pointer; transition: transform var(--transition-fast); } .stat-item:hover { transform: translateY(-5px); } .stat-number { font-size: 2.5rem; font-weight: var(--fw-bold); color: var(--c-accent); transition: color var(--transition-medium); } .stat-item:hover .stat-number { color: var(--c-text-primary); } .stat-label { font-size: 0.9rem; } /* --- [MODERNIZED] Group Management --- */ .group-management-container h3 { font-size: 1.75rem; margin-bottom: var(--space-lg); text-align: center; } .member-list { display: flex; flex-direction: column; gap: 0.75rem; margin-bottom: var(--space-xl); } .member-item { display: flex; justify-content: space-between; align-items: center; padding: var(--space-sm) var(--space-md); background-color: color-mix(in srgb, var(--c-surface) 50%, transparent); backdrop-filter: blur(5px); border-radius: var(--radius-md); border: var(--border-width) solid color-mix(in srgb, var(--c-border) 40%, transparent); box-shadow: inset 0 1px 1px color-mix(in srgb, var(--c-surface) 50%, transparent); transition: all 0.3s ease, opacity 0.5s ease; opacity: 0; transform: translateY(10px); animation: fadeIn 0.5s ease forwards; } .member-item:hover { transform: translateY(-4px); box-shadow: 0 8px 25px -5px var(--c-shadow-color); border-color: var(--c-accent); } .member-item.removing { opacity: 0; transform: translateX(-20px); } .member-actions { display: flex; align-items: center; gap: var(--space-md); } .member-role { font-size: 0.8rem; font-weight: var(--fw-semibold); padding: 0.3rem 0.6rem; border-radius: var(--radius-sm); background-color: color-mix(in srgb, var(--c-bg) 50%, var(--c-surface)); color: var(--c-text-secondary); } .member-role.admin { background-color: var(--c-accent); color: var(--c-light-text-on-accent); } .remove-member-btn { color: var(--c-text-secondary); border-radius: 50%; width: 32px; height: 32px; transition: all var(--transition-fast); } .remove-member-btn:hover { color: var(--c-error); background-color: color-mix(in srgb, var(--c-error) 15%, transparent); transform: scale(1.1); } .add-member-form { display: flex; gap: var(--space-md); } .add-member-form input { flex-grow: 1; border-radius: var(--radius-md); padding: 0.85rem 1.1rem; background-color: color-mix(in srgb, var(--c-surface) 50%, transparent); border: 1px solid color-mix(in srgb, var(--c-border) 40%, transparent); } .add-member-form input.error { animation: shake 0.5s ease-in-out; border-color: var(--c-error); } .add-member-form button { font-weight: var(--fw-semibold); font-size: 1rem; padding: 0.75rem var(--space-lg); border: none; border-radius: var(--radius-md); background: linear-gradient(45deg, var(--c-accent), color-mix(in srgb, var(--c-accent) 80%, black 10%)); color: var(--c-light-text-on-accent); cursor: pointer; transition: all var(--transition-fast); box-shadow: 0 4px 15px -5px color-mix(in srgb, var(--c-accent) 50%, transparent); } .add-member-form button:hover { opacity: 1; transform: translateY(-3px); box-shadow: 0 6px 20px -5px color-mix(in srgb, var(--c-accent) 50%, transparent); } .add-member-form button:active { transform: translateY(0); opacity: 0.9; } .add-member-form button:disabled { opacity: 0.6; cursor: wait; background: var(--c-border); box-shadow: none; transform: none; } /* --- End Modernized Section --- */ .account-actions { display: flex; justify-content: center; } .logout-button { color: var(--c-text-secondary); font-size: 1rem; cursor: pointer; padding: var(--space-xs) var(--space-md); border-radius: var(--radius-md); transition: all var(--transition-fast); background: none; border: none; font-weight: var(--fw-regular); } .logout-button:hover { color: var(--c-error); background-color: color-mix(in srgb, var(--c-error) 10%, transparent); } /* --- Popups & Toasts --- */ .popup-overlay { position: fixed; inset: 0; background-color: rgba(0, 0, 0, 0.5); backdrop-filter: blur(8px); display: grid; place-items: center; z-index: 1000; opacity: 0; transition: opacity 0.3s ease-in-out; pointer-events: none; } .popup-overlay.show { opacity: 1; pointer-events: auto; } .popup-content { background: var(--c-surface); padding: var(--space-xxl) var(--space-xl); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); max-width: 90vw; width: 420px; text-align: center; position: relative; transform: scale(0.9); transition: all var(--transition-playful); } .popup-overlay.show .popup-content { transform: scale(1); } .popup-close-btn { position: absolute; top: var(--space-md); right: var(--space-md); } #toast-container { position: fixed; bottom: 20px; right: 20px; z-index: 2000; display: flex; flex-direction: column; gap: 10px; } .toast { padding: 14px 22px; border-radius: var(--radius-md); font-weight: var(--fw-semibold); color: var(--c-light-text-on-accent); box-shadow: 0 5px 25px rgba(0,0,0,0.15); opacity: 0; transform: translateX(calc(100% + 20px)); transition: all 0.6s cubic-bezier(0.68, -0.6, 0.27, 1.55); } .toast.show { opacity: 1; transform: translateX(0); } .toast.toast-success { background-color: var(--c-success); } .toast.toast-error { background-color: var(--c-error); } .toast.toast-info { background-color: var(--c-info); } /* --- Practice Page --- */ .practice-container { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-xxl); width: 100%; max-width: 500px; flex-grow: 1; padding: var(--space-xl); margin: 0 auto; } .flashcard-container { height: 280px; } .flashcard-term { font-size: 2.25rem; font-weight: var(--fw-bold); min-height: 44px; } .flashcard-definition { font-size: 1.25rem; min-height: 30px; } .practice-controls { display: flex; gap: var(--space-sm); align-items: center; justify-content: center; flex-wrap: wrap; } .practice-btn { font-size: 1rem; font-weight: var(--fw-semibold); padding: 0.75rem var(--space-lg); border-radius: var(--radius-full); border: var(--border-width) solid var(--c-border); background-color: var(--c-surface); color: var(--c-text-primary); cursor: pointer; transition: all var(--transition-fast); } .practice-btn:hover { transform: translateY(-3px); border-color: var(--c-accent); box-shadow: var(--shadow-sm); } .practice-btn:active { transform: translateY(0); } .practice-btn.shuffle { background-color: var(--c-accent); color: var(--c-light-text-on-accent); border-color: var(--c-accent); } .practice-btn.known { background-color: var(--c-success); color: var(--c-light-text-on-accent); border-color: var(--c-success); } .card-counter { color: var(--c-text-secondary); font-weight: var(--fw-semibold); } /* --- Subscription Page --- */ .subscription-page-main { padding: 120px 0 60px 0; } .subscription-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--space-xxl); max-width: 1100px; margin: 0 auto 3rem; padding: 0 var(--space-xl); } .tier-box { background-color: var(--c-surface); border: var(--border-width) solid var(--c-border); border-radius: var(--radius-lg); padding: var(--space-xxl) var(--space-xl); display: flex; flex-direction: column; transition: all var(--transition-medium); box-shadow: 0 4px 20px var(--c-shadow-color); position: relative; } .tier-box:hover { transform: translateY(-8px); box-shadow: var(--shadow-md); } .tier-box.recommended { border-color: var(--c-accent); } .tier-badge { position: absolute; top: var(--space-lg); right: var(--space-lg); background-color: var(--c-accent); color: var(--c-light-text-on-accent); padding: 0.3rem var(--space-xs); font-size: 0.8rem; font-weight: var(--fw-bold); border-radius: var(--radius-full); } .tier-header { text-align: center; margin-bottom: var(--space-lg); } .tier-name { font-size: 1.75rem; } .tier-price { font-size: 1.25rem; color: var(--c-text-secondary); } .tier-price span { font-size: 3.5rem; color: var(--c-text-primary); } .tier-description { text-align: center; color: var(--c-text-secondary); margin-bottom: var(--space-xl); min-height: 40px; font-size: 0.9rem; } .tier-perks { list-style: none; margin-bottom: var(--space-xl); flex-grow: 1; padding: 0; } .tier-perks li { padding: 0.85rem 0; border-bottom: var(--border-width) solid var(--c-border); color: var(--c-text-primary); font-size: 0.95rem; opacity: 0; transform: translateY(10px); animation: fadeIn 0.5s ease forwards; } .tier-perks li::before { content: '✓'; color: var(--c-accent); margin-right: var(--space-sm); font-weight: var(--fw-bold); } .tier-button { width: 100%; padding: 1.1rem; font-size: 1rem; font-weight: var(--fw-semibold); color: var(--c-light-text-on-accent); background-color: var(--c-text-primary); border: none; border-radius: var(--radius-full); cursor: pointer; transition: all var(--transition-fast); margin-top: auto; } .tier-button:hover { opacity: 0.85; transform: translateY(-3px); box-shadow: 0 6px 20px color-mix(in srgb, var(--c-text-primary) 30%, transparent); } .tier-button:active { transform: translateY(0); opacity: 1; } .tier-button:disabled { background-color: var(--c-border); color: var(--c-text-secondary); cursor: not-allowed; } .tier-button:disabled:hover { transform: none; box-shadow: none; opacity: 1; } .tier-box.recommended .tier-button { background-color: var(--c-accent); } .tier-box.recommended .tier-button:hover { box-shadow: 0 6px 20px color-mix(in srgb, var(--c-accent) 30%, transparent); } /* ========================================================================== 5. ANIMATIONS & MEDIA QUERIES ========================================================================== */ @keyframes fadeIn { from { opacity: 0; transform: translateY(15px); } to { opacity: 1; transform: translateY(0); } } @keyframes popIn { from { opacity: 0; transform: scale(0.8); } to { opacity: 1; transform: scale(1); } } @keyframes shake { 0%, 100% { transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); } 20%, 40%, 60%, 80% { transform: translateX(5px); } } /* --- Staggered Animations --- */ .tier-perks li:nth-child(1) { animation-delay: 0.1s; } .tier-perks li:nth-child(2) { animation-delay: 0.2s; } .tier-perks li:nth-child(3) { animation-delay: 0.3s; } .tier-perks li:nth-child(4) { animation-delay: 0.4s; } .tier-perks li:nth-child(5) { animation-delay: 0.5s; } .member-item:nth-child(1) { animation-delay: 0.05s; } .member-item:nth-child(2) { animation-delay: 0.1s; } .member-item:nth-child(3) { animation-delay: 0.15s; } .member-item:nth-child(4) { animation-delay: 0.2s; } .member-item:nth-child(5) { animation-delay: 0.25s; } /* --- Media Queries --- */ @media (max-width: 768px) { .page-main-content { padding-top: 80px; } .add-member-form { flex-direction: column; } .page-title { font-size: 2rem; } }