/* --- 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 { 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); } /* --- 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); } .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; } .lang-dropdown { display: none; position: absolute; top: 100%; right: 0; background-color: var(--surface-color); border: 1px solid var(--border-color); border-radius: var(--border-radius); padding: 0.5rem; margin-top: 0.5rem; box-shadow: 0 4px 12px rgba(0,0,0,0.1); min-width: 120px; } .language-switcher:hover .lang-dropdown { display: block; } .lang-dropdown a { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem; border-radius: calc(var(--border-radius) / 2); } .lang-dropdown a:hover, .lang-dropdown a.active { background-color: var(--bg-color); } .lang-dropdown a img { width: 20px; height: 15px; object-fit: cover; border-radius: 2px; } /* --- 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%; } /* --- Hero Section --- */ .hero { text-align: center; padding: calc(var(--base-spacing) * 5) 0; background: var(--gradient); color: white; } .hero h1 { color: white; } .hero p { font-size: 1.25rem; margin: var(--base-spacing) 0 calc(var(--base-spacing) * 2); max-width: 600px; margin-left: auto; margin-right: auto; opacity: 0.9; } .cta-button { background: white; color: var(--color-primary); padding: 0.8rem 2.5rem; border-radius: var(--border-radius); font-weight: 600; font-family: var(--font-family-headings); font-size: 1.1rem; box-shadow: 0 4px 15px rgba(0,0,0,0.1); transition: transform 0.2s, box-shadow 0.2s; } .cta-button:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(0,0,0,0.15); color: var(--color-primary); } /* --- How It Works Section --- */ .how-it-works { padding: calc(var(--base-spacing) * 4) 0; text-align: center; } .steps { display: flex; justify-content: space-around; gap: calc(var(--base-spacing) * 2); margin-top: calc(var(--base-spacing) * 2); } .step { max-width: 300px; } .step-icon { width: 70px; height: 70px; border-radius: 50%; background: var(--gradient); color: white; display: inline-flex; align-items: center; justify-content: center; margin-bottom: var(--base-spacing); } .step-icon i { width: 32px; height: 32px; } .step h3 { margin-bottom: 0.5rem; } .step p { color: var(--subtle-text-color); } /* --- Generator Section --- */ .generator-section { padding: calc(var(--base-spacing) * 4) 0; background-color: var(--surface-color); transition: background-color 0.3s; } .generator-section h2 { text-align: center; margin-bottom: calc(var(--base-spacing) * 2); } .generator-form { max-width: 1000px; margin: 0 auto; } .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: calc(var(--base-spacing) * 2); } .form-column-wide { grid-column: 1 / -1; } .form-group { margin-bottom: var(--base-spacing); } .form-group label { display: block; font-weight: 500; margin-bottom: 0.5rem; } .form-group input[type="text"], .form-group input[type="number"], .form-group select { 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-group input:focus, .form-group select:focus { outline: none; border-color: var(--color-primary); } .photo-upload-container .upload-area { border: 2px dashed var(--border-color); border-radius: var(--border-radius); padding: calc(var(--base-spacing) * 2); text-align: center; cursor: pointer; transition: border-color 0.2s; } .photo-upload-container .upload-area:hover { border-color: var(--color-primary); } .upload-area i { width: 48px; height: 48px; color: var(--subtle-text-color); margin-bottom: var(--base-spacing); } .photo-preview { display: flex; gap: var(--base-spacing); margin-top: var(--base-spacing); flex-wrap: wrap; } .preview-item { position: relative; width: 100px; height: 100px; } .preview-item img { width: 100%; height: 100%; object-fit: cover; border-radius: var(--border-radius); } .remove-img-btn { position: absolute; top: -5px; right: -5px; background: rgba(0,0,0,0.7); color: white; border: none; border-radius: 50%; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; cursor: pointer; font-weight: bold; } .form-submit-group { text-align: center; margin-top: calc(var(--base-spacing) * 2); } .form-submit-group .cta-button { background: var(--gradient); color: white; border: none; cursor: pointer; } .form-submit-group .cta-button:hover { color: white; } /* --- 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; } /* --- Result & Error Styles --- */ .result-container { margin-top: calc(var(--base-spacing) * 3); padding: calc(var(--base-spacing) * 2); border: 1px solid var(--border-color); border-radius: var(--border-radius); background-color: var(--bg-color); } .result-container h3 { text-align: center; margin-bottom: calc(var(--base-spacing) * 1.5); } .result-item { margin-bottom: var(--base-spacing); } .result-item label { font-weight: 600; font-family: var(--font-family-headings); display: block; margin-bottom: 0.25rem; color: var(--color-primary); } .result-item p { background-color: var(--surface-color); padding: var(--base-spacing); border-radius: var(--border-radius); border: 1px solid var(--border-color); } .result-actions { margin-top: calc(var(--base-spacing) * 1.5); display: flex; justify-content: flex-end; gap: var(--base-spacing); } .btn { padding: 0.6rem 1.2rem; border-radius: var(--border-radius); font-weight: 600; font-family: var(--font-family-headings); border: none; cursor: pointer; display: inline-flex; align-items: center; gap: 0.5rem; transition: opacity 0.2s; } .btn:hover { opacity: 0.85; } .btn-primary { background: var(--gradient); color: white; } .btn-secondary { background-color: var(--surface-color); color: var(--text-color); border: 1px solid var(--border-color); } .error-message { margin-top: calc(var(--base-spacing) * 2); padding: var(--base-spacing); background-color: #ffcccc; color: #990000; border: 1px solid #ff9999; border-radius: var(--border-radius); text-align: center; } [data-theme="dark"] .error-message { background-color: #4d0000; color: #ffc2c2; border-color: #800000; } /* --- History Page --- */ .page-title { text-align: center; margin: calc(var(--base-spacing) * 2) 0; } .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; background-color: var(--bg-color); font-size: 0.9rem; color: var(--subtle-text-color); } .history-item .card-body { background-color: var(--surface-color); } .card { border: 1px solid var(--border-color); border-radius: var(--border-radius); overflow: hidden; /* Ensures children conform to border radius */ } .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); } .text-center { text-align: center; } /* --- Pricing Page --- */ .pricing-card-title { font-size: 2.5rem; font-weight: 700; } .pricing-card-title small { font-size: 1rem; font-weight: 400; } .card-header h4 { font-weight: 600; } .list-unstyled { padding-left: 0; list-style: none; } .btn-group .btn { border-radius: var(--border-radius); } .btn-group .btn:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; } .btn-group .btn:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; } /* --- FAQ Page --- */ .accordion-button { font-weight: 600; font-family: var(--font-family-headings); background-color: var(--surface-color); color: var(--text-color); } .accordion-button:not(.collapsed) { background-color: var(--bg-color); color: var(--color-primary); } .accordion-button:focus { box-shadow: 0 0 0 0.25rem rgba(108, 99, 255, 0.25); } .accordion-item { background-color: var(--surface-color); border: 1px solid var(--border-color); } .accordion-body { background-color: var(--bg-color); } /* --- Terms Page --- */ .terms-content h4 { margin-top: 1.5rem; margin-bottom: 0.5rem; color: var(--color-primary); }