/* --- Base & Variables --- */ :root { --color-primary: #6C63FF; --color-secondary: #FF6584; --font-family-headings: 'Poppins', sans-serif; --font-family-body: 'Roboto', sans-serif; --base-spacing: 1rem; --border-radius: 0.5rem; /* Light Mode */ --bg-color: #F8F9FA; --surface-color: #FFFFFF; --text-color: #212529; --subtle-text-color: #6c757d; --border-color: #E0E0E0; --gradient: linear-gradient(45deg, var(--color-primary), var(--color-secondary)); } [data-theme="dark"] { --bg-color: #121212; --surface-color: #1E1E1E; --text-color: #E0E0E0; --subtle-text-color: #adb5bd; --border-color: #333; } /* --- Reset & Base Styles --- */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: var(--font-family-body); background-color: var(--bg-color); color: var(--text-color); line-height: 1.6; transition: background-color 0.3s, color 0.3s; } .container { max-width: 1200px; margin: 0 auto; padding: 0 calc(var(--base-spacing) * 1.5); } h1, h2, h3, h4, h5, h6 { font-family: var(--font-family-headings); font-weight: 600; color: var(--text-color); } h1 { font-size: 3rem; line-height: 1.2; } h2 { font-size: 2.25rem; margin-bottom: var(--base-spacing); } h3 { font-size: 1.5rem; } a { color: var(--color-primary); text-decoration: none; transition: color 0.2s; } a:hover { color: var(--color-secondary); } .page-header { text-align: center; padding: calc(var(--base-spacing) * 3) 0; background-color: var(--surface-color); border-bottom: 1px solid var(--border-color); margin-bottom: calc(var(--base-spacing) * 3); } .page-header h1 { font-size: 2.75rem; } .page-header p { font-size: 1.1rem; color: var(--subtle-text-color); max-width: 600px; margin: 0.5rem auto 0; } /* --- Header --- */ .header { background-color: var(--surface-color); box-shadow: 0 2px 4px rgba(0,0,0,0.05); padding: var(--base-spacing) 0; position: sticky; top: 0; z-index: 100; transition: background-color 0.3s; } [data-theme="dark"] .header { box-shadow: 0 2px 4px rgba(0,0,0,0.2); } .header .container { display: flex; justify-content: space-between; align-items: center; } .logo { font-family: var(--font-family-headings); font-size: 1.5rem; font-weight: 700; color: var(--color-primary); } .logo:hover { color: var(--color-primary); } .main-nav { display: flex; gap: calc(var(--base-spacing) * 1.5); } .main-nav a { font-weight: 500; color: var(--text-color); } .main-nav a.login-btn { background: var(--gradient); color: white; padding: 0.5rem 1.5rem; border-radius: var(--border-radius); font-weight: 600; } .header-actions { display: flex; align-items: center; gap: var(--base-spacing); } /* --- Language Switcher --- */ .language-switcher { position: relative; cursor: pointer; } .selected-lang { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem; border: 1px solid var(--border-color); border-radius: var(--border-radius); transition: background-color 0.2s; } .language-switcher:hover .selected-lang { background-color: var(--bg-color); } .selected-lang img { width: 20px; height: 15px; object-fit: cover; border-radius: 2px; } .selected-lang span { font-weight: 500; } .icon-sm { width: 16px; height: 16px; transition: transform 0.2s ease-in-out; } .language-switcher:hover .icon-sm { transform: rotate(180deg); } .lang-dropdown { display: block; /* Use opacity and visibility for animation */ position: absolute; top: calc(100% + 0.5rem); right: 0; background-color: var(--surface-color); border: 1px solid var(--border-color); border-radius: var(--border-radius); padding: 0.5rem; box-shadow: 0 8px 24px rgba(0,0,0,0.1); min-width: 150px; z-index: 10; /* Animation */ opacity: 0; visibility: hidden; transform: translateY(-10px); transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s; } .language-switcher:hover .lang-dropdown { opacity: 1; visibility: visible; transform: translateY(0); } .lang-dropdown a { display: flex; align-items: center; gap: 0.75rem; padding: 0.6rem 0.8rem; border-radius: calc(var(--border-radius) / 2); color: var(--text-color); font-weight: 500; } .lang-dropdown a:hover, .lang-dropdown a.active { background-color: var(--bg-color); color: var(--color-primary); } .lang-dropdown a.active { font-weight: 600; } .lang-dropdown a img { width: 20px; height: 15px; object-fit: cover; border-radius: 2px; } /* --- User Menu --- */ .user-menu { position: relative; } .user-menu-toggle { background: none; border: none; cursor: pointer; display: flex; align-items: center; gap: 0.5rem; padding: 0.25rem; border-radius: 50px; transition: background-color 0.2s; } .user-menu:hover .user-menu-toggle { background-color: var(--bg-color); } .avatar { width: 36px; height: 36px; border-radius: 50%; object-fit: cover; border: 2px solid var(--border-color); } .user-menu .icon-sm { color: var(--text-color); } .user-dropdown { display: block; position: absolute; top: calc(100% + 0.5rem); right: 0; background-color: var(--surface-color); border: 1px solid var(--border-color); border-radius: var(--border-radius); padding: 0.5rem; box-shadow: 0 8px 24px rgba(0,0,0,0.1); min-width: 160px; z-index: 10; opacity: 0; visibility: hidden; transform: translateY(-10px); transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s; } .user-menu:hover .user-dropdown { opacity: 1; visibility: visible; transform: translateY(0); } .user-dropdown a { display: block; padding: 0.6rem 1rem; color: var(--text-color); border-radius: calc(var(--border-radius) / 2); } .user-dropdown a:hover { background-color: var(--bg-color); color: var(--color-primary); } /* --- Theme Switch --- */ .theme-switch-wrapper { display: flex; align-items: center; } .theme-switch { position: relative; display: inline-block; width: 50px; height: 26px; } .theme-switch input { opacity: 0; width: 0; height: 0; } .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; transition: .4s; } .slider:before { position: absolute; content: ""; height: 20px; width: 20px; left: 3px; bottom: 3px; background-color: white; transition: .4s; } input:checked + .slider { background-color: var(--color-primary); } input:focus + .slider { box-shadow: 0 0 1px var(--color-primary); } input:checked + .slider:before { transform: translateX(24px); } .slider.round { border-radius: 34px; } .slider.round:before { border-radius: 50%; } /* --- Footer --- */ .footer { background-color: var(--surface-color); text-align: center; padding: calc(var(--base-spacing) * 2) 0; margin-top: calc(var(--base-spacing) * 3); border-top: 1px solid var(--border-color); color: var(--subtle-text-color); transition: background-color 0.3s, border-color 0.3s; } /* --- Buttons --- */ .btn { padding: 0.75rem 1.5rem; border-radius: var(--border-radius); font-weight: 600; font-family: var(--font-family-headings); border: none; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; transition: all 0.2s; text-align: center; } .btn:hover { opacity: 0.9; transform: translateY(-2px); } .btn-primary { background: var(--gradient); color: white; } .btn-primary:hover { color: white; } .btn-secondary { background-color: var(--surface-color); color: var(--text-color); border: 1px solid var(--border-color); } .btn-outline-primary { background-color: transparent; color: var(--color-primary); border: 2px solid var(--color-primary); } .btn-outline-primary:hover { background-color: var(--color-primary); color: white; } /* --- Cards --- */ .card { background-color: var(--surface-color); border: 1px solid var(--border-color); border-radius: var(--border-radius); overflow: hidden; transition: all 0.3s; } .card-body { padding: calc(var(--base-spacing) * 1.5); } .card-header { padding: var(--base-spacing) calc(var(--base-spacing) * 1.5); border-bottom: 1px solid var(--border-color); background-color: var(--bg-color); } /* --- Forms --- */ .form-group { margin-bottom: var(--base-spacing); } .form-group label { display: block; font-weight: 500; margin-bottom: 0.5rem; } .form-control { width: 100%; padding: 0.75rem; border: 1px solid var(--border-color); border-radius: var(--border-radius); background-color: var(--bg-color); color: var(--text-color); font-family: var(--font-family-body); font-size: 1rem; transition: border-color 0.2s, background-color 0.3s; } .form-control:focus { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(108, 99, 255, 0.15); } /* --- Auth Pages (Login/Register) --- */ .auth-container { max-width: 450px; margin: calc(var(--base-spacing) * 3) auto; } .auth-container .card-header h2 { font-size: 1.75rem; text-align: center; margin: 0; } .auth-container .btn { width: 100%; } .auth-container .text-center { margin-top: var(--base-spacing); color: var(--subtle-text-color); } /* --- History Page --- */ .history-list { display: flex; flex-direction: column; gap: calc(var(--base-spacing) * 1.5); } .history-item .card-header { display: flex; justify-content: space-between; align-items: center; font-size: 0.9rem; color: var(--subtle-text-color); } .history-item .card-body p { white-space: pre-wrap; /* Keep formatting */ } /* --- Pricing Page --- */ .pricing-toggle { display: flex; justify-content: center; align-items: center; margin-bottom: calc(var(--base-spacing) * 2.5); gap: var(--base-spacing); } .pricing-toggle span { font-weight: 500; color: var(--subtle-text-color); } .pricing-toggle .toggle-switch { position: relative; display: inline-block; width: 50px; height: 26px; } .pricing-toggle .toggle-switch input { opacity: 0; width: 0; height: 0; } .pricing-toggle .toggle-slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: var(--color-primary); transition: .4s; border-radius: 34px; } .pricing-toggle .toggle-slider:before { position: absolute; content: ""; height: 20px; width: 20px; left: 3px; bottom: 3px; background-color: white; transition: .4s; border-radius: 50%; } .pricing-toggle input:checked + .toggle-slider:before { transform: translateX(24px); } .pricing-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: calc(var(--base-spacing) * 2); align-items: stretch; } .pricing-card { display: flex; flex-direction: column; text-align: center; padding: calc(var(--base-spacing) * 2); border: 2px solid var(--border-color); transition: all 0.3s ease; } .pricing-card.popular { border-color: var(--color-primary); transform: scale(1.05); box-shadow: 0 10px 30px rgba(108, 99, 255, 0.15); } .pricing-card h3 { font-size: 1.5rem; color: var(--color-primary); } .pricing-card .price { font-size: 3rem; font-weight: 700; font-family: var(--font-family-headings); margin: var(--base-spacing) 0; } .pricing-card .price .period { font-size: 1rem; font-weight: 400; color: var(--subtle-text-color); } .pricing-card .features { list-style: none; padding: 0; margin: var(--base-spacing) 0; flex-grow: 1; } .pricing-card .features li { margin-bottom: 0.75rem; display: flex; align-items: center; justify-content: center; gap: 0.5rem; } .pricing-card .features li svg { width: 20px; height: 20px; color: var(--color-primary); } .pricing-card .btn { width: 100%; margin-top: auto; } .annual-price { display: none; } /* --- FAQ Page --- */ .faq-container { max-width: 800px; margin: 0 auto; } .accordion-item { background-color: var(--surface-color); border: 1px solid var(--border-color); margin-bottom: var(--base-spacing); border-radius: var(--border-radius); } .accordion-header { padding: 0; border: none; } .accordion-button { width: 100%; text-align: left; padding: var(--base-spacing) calc(var(--base-spacing) * 1.5); font-weight: 600; font-family: var(--font-family-headings); font-size: 1.1rem; background-color: var(--surface-color); color: var(--text-color); border: none; cursor: pointer; position: relative; border-radius: var(--border-radius); } .accordion-button:not(.collapsed) { color: var(--color-primary); border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .accordion-button::after { content: '+'; position: absolute; right: calc(var(--base-spacing) * 1.5); top: 50%; transform: translateY(-50%); font-size: 1.5rem; font-weight: 300; transition: transform 0.2s ease-in-out; } .accordion-button:not(.collapsed)::after { content: '−'; transform: translateY(-50%) rotate(45deg); } .accordion-collapse { display: none; } .accordion-collapse.show { display: block; } .accordion-body { padding: calc(var(--base-spacing) * 1.5); background-color: var(--bg-color); border-bottom-left-radius: var(--border-radius); border-bottom-right-radius: var(--border-radius); } /* --- Terms Page --- */ .terms-content { max-width: 800px; margin: 0 auto; background-color: var(--surface-color); padding: calc(var(--base-spacing) * 2); border-radius: var(--border-radius); } .terms-content h2 { font-size: 1.75rem; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--border-color); } .terms-content h3 { font-size: 1.25rem; margin-top: 1.5rem; margin-bottom: 0.75rem; color: var(--color-primary); } .terms-content p, .terms-content ul, .terms-content ol { margin-bottom: 1rem; line-height: 1.7; } .terms-content ul, .terms-content ol { padding-left: 1.5rem; } /* --- Generator Form --- */ .generator-section { padding: calc(var(--base-spacing) * 3) 0; background-color: var(--surface-color); } .generator-form { background-color: var(--bg-color); padding: calc(var(--base-spacing) * 2); border-radius: var(--border-radius); border: 1px solid var(--border-color); } .form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: calc(var(--base-spacing) * 2); margin-bottom: calc(var(--base-spacing) * 2); } .form-column-wide { grid-column: 1 / -1; } .generator-form .form-group label { font-size: 0.9rem; font-weight: 600; color: var(--subtle-text-color); text-transform: uppercase; } .generator-form input[type="text"], .generator-form input[type="number"], .generator-form textarea, .generator-form select { width: 100%; padding: 0.8rem 1rem; border: 2px solid var(--border-color); border-radius: var(--border-radius); background-color: var(--surface-color); color: var(--text-color); font-family: var(--font-family-body); font-size: 1rem; transition: border-color 0.2s, box-shadow 0.2s; } .generator-form input:focus, .generator-form textarea:focus, .generator-form select:focus { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 4px rgba(108, 99, 255, 0.2); } .generator-form select { appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%236c757d' class='bi bi-chevron-down' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 1rem center; background-size: 1em; } .form-submit-group { text-align: center; margin-top: calc(var(--base-spacing) * 2); } .cta-button { background: var(--gradient); color: white; padding: 1rem 2.5rem; border-radius: 50px; font-weight: 700; font-family: var(--font-family-headings); text-transform: uppercase; letter-spacing: 1px; border: none; cursor: pointer; transition: transform 0.2s, box-shadow 0.2s; } .cta-button:hover { transform: translateY(-3px); box-shadow: 0 10px 20px rgba(0,0,0,0.1); color: white; } /* --- Hero Section --- */ .hero { background: var(--gradient); padding: 6rem 0; text-align: center; margin-top: 2rem; border-radius: var(--border-radius); } .hero h1, .hero p { color: white; } .hero h1 { font-size: 3.5rem; font-weight: 700; } .hero p { font-size: 1.25rem; margin-top: 1rem; margin-bottom: 2rem; opacity: 0.9; } .hero .cta-button { background: white; color: var(--color-primary); } .hero .cta-button:hover { background: var(--surface-color); color: var(--color-primary); } /* --- How It Works Section --- */ .how-it-works { padding: calc(var(--base-spacing) * 4) 0; background-color: var(--bg-color); } .how-it-works .section-header { text-align: center; margin-bottom: calc(var(--base-spacing) * 3); } .how-it-works .section-header h2 { font-size: 2.5rem; } .how-it-works .section-header p { font-size: 1.1rem; color: var(--subtle-text-color); max-width: 500px; margin: 0.5rem auto 0; } .steps-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: calc(var(--base-spacing) * 2.5); } .step-card { background-color: var(--surface-color); border-radius: var(--border-radius); padding: calc(var(--base-spacing) * 2); text-align: center; border: 1px solid var(--border-color); transition: transform 0.3s ease, box-shadow 0.3s ease; } .step-card:hover { transform: translateY(-10px); box-shadow: 0 15px 30px rgba(0,0,0,0.08); } .step-icon-wrapper { display: inline-flex; align-items: center; justify-content: center; width: 80px; height: 80px; border-radius: 50%; background: var(--gradient); margin-bottom: calc(var(--base-spacing) * 1.5); color: white; } .step-icon-wrapper svg { width: 36px; height: 36px; } .step-content h3 { font-size: 1.3rem; margin-bottom: 0.5rem; } .step-content p { color: var(--subtle-text-color); }