/** * Auth Styles - Authentication Pages * * Login, Signup, Password Reset etc. * Split-screen SaaS layout pattern * * Reuses: swp-btn, swp-plan-card, swp-plan-badge (components.css) */ /* =========================================== AUTH LAYOUT - Split Screen =========================================== */ swp-auth-layout { display: grid; grid-template-columns: 45fr 55fr; min-height: 100vh; } /* =========================================== BRANDING PANEL (Left Side) =========================================== */ swp-auth-branding { display: flex; flex-direction: column; justify-content: center; padding: var(--spacing-24); background: linear-gradient(135deg, var(--color-teal) 0%, #00695c 100%); color: white; position: relative; overflow: hidden; } /* Decorative background pattern */ swp-auth-branding::before { content: ''; position: absolute; top: -50%; right: -50%; width: 100%; height: 100%; background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%); pointer-events: none; } swp-auth-branding::after { content: ''; position: absolute; bottom: -30%; left: -30%; width: 80%; height: 80%; background: radial-gradient(circle, rgba(255,255,255,0.08) 0%, transparent 60%); pointer-events: none; } swp-auth-logo { display: flex; align-items: center; gap: var(--spacing-3); margin-bottom: var(--spacing-16); position: relative; z-index: 1; } swp-auth-logo i { font-size: 32px; } swp-auth-logo span { font-size: var(--font-size-2xl); font-weight: var(--font-weight-bold); letter-spacing: -0.5px; } swp-auth-tagline { display: block; font-size: var(--font-size-3xl); font-weight: var(--font-weight-semibold); line-height: var(--line-height-tight); margin-bottom: var(--spacing-12); position: relative; z-index: 1; max-width: 400px; } swp-auth-subtitle { display: block; font-size: var(--font-size-lg); opacity: 0.9; margin-bottom: var(--spacing-16); position: relative; z-index: 1; max-width: 380px; line-height: var(--line-height-relaxed); } /* =========================================== PLAN PANEL (Left Side - Alternative) =========================================== */ swp-auth-plan-panel { display: flex; flex-direction: column; justify-content: center; padding: var(--spacing-24); background: var(--color-background); position: relative; } swp-auth-plan-panel swp-auth-logo { color: var(--color-text); margin-bottom: var(--spacing-12); } swp-auth-plan-panel swp-auth-logo i { color: var(--color-teal); } swp-selected-plan-header { display: block; font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); text-transform: uppercase; letter-spacing: 0.5px; color: var(--color-text-secondary); margin-bottom: var(--spacing-5); } /* =========================================== PLAN CONTENT (Auth-specific layout) Plan card/badge base styles in components.css =========================================== */ swp-plan-badge { margin-bottom: var(--spacing-4); } swp-plan-name { display: block; font-size: var(--font-size-2xl); font-weight: var(--font-weight-bold); color: var(--color-text); margin-bottom: var(--spacing-1); } swp-plan-users { display: block; font-size: var(--font-size-sm); color: var(--color-text-secondary); margin-bottom: var(--spacing-5); } swp-plan-price { display: flex; align-items: baseline; gap: var(--spacing-1); margin-bottom: var(--spacing-6); min-height: 44px; } swp-plan-price-amount { font-size: 36px; font-weight: var(--font-weight-bold); color: var(--color-text); line-height: 1; } swp-plan-price-amount.contact { font-size: var(--font-size-xl); color: var(--color-purple); } swp-plan-price-period { font-size: var(--font-size-base); color: var(--color-text-secondary); } swp-plan-features { display: flex; flex-direction: column; gap: var(--spacing-3); } swp-plan-feature { display: flex; align-items: center; gap: var(--spacing-3); font-size: var(--font-size-sm); color: var(--color-text); } swp-plan-feature i { font-size: 18px; color: var(--color-green); flex-shrink: 0; } /* =========================================== CHANGE PLAN LINK =========================================== */ swp-change-plan-link { display: block; margin-top: var(--spacing-6); } swp-change-plan-link a { display: inline-flex; align-items: center; gap: var(--spacing-2); font-size: var(--font-size-sm); color: var(--color-text-secondary); text-decoration: none; transition: color var(--transition-fast); } swp-change-plan-link a:hover { color: var(--color-teal); } swp-change-plan-link i { font-size: 16px; } /* =========================================== FEATURE LIST =========================================== */ swp-auth-features { display: flex; flex-direction: column; gap: var(--spacing-5); position: relative; z-index: 1; } swp-auth-feature { display: flex; align-items: center; gap: var(--spacing-3); font-size: var(--font-size-base); } swp-auth-feature i { font-size: 20px; opacity: 0.9; } /* =========================================== FORM PANEL (Right Side) =========================================== */ swp-auth-form-panel { display: flex; flex-direction: column; justify-content: center; align-items: center; padding: var(--spacing-24); background: var(--color-surface); } swp-auth-form-container { width: 100%; max-width: 420px; } swp-auth-header { display: block; margin-bottom: var(--spacing-12); text-align: center; } swp-auth-title { display: block; font-size: var(--font-size-2xl); font-weight: var(--font-weight-semibold); color: var(--color-text); margin-bottom: var(--spacing-2); } swp-auth-description { display: block; font-size: var(--font-size-base); color: var(--color-text-secondary); } /* =========================================== USER INFO CARD (Pre-verified user) Base pattern in components.css, auth-specific styling only =========================================== */ swp-user-info-card { margin-bottom: var(--spacing-6); } swp-user-avatar { width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; background: var(--bg-teal-strong); color: var(--color-teal); font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); border-radius: 50%; flex-shrink: 0; } swp-user-verified { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; color: var(--color-green); flex-shrink: 0; } swp-user-verified i { font-size: 22px; } /* =========================================== FORM ELEMENTS Base patterns in components.css, auth-specific only =========================================== */ swp-auth-form { display: flex; flex-direction: column; gap: var(--spacing-5); } swp-form-input select option { padding: var(--spacing-2); } swp-form-label .optional { font-weight: var(--font-weight-normal); color: var(--color-text-muted); } /* Input with icon */ swp-form-input.has-icon input { padding-right: 44px; } swp-form-input .input-icon { position: absolute; right: var(--spacing-3); top: 50%; transform: translateY(-50%); color: var(--color-text-muted); cursor: pointer; padding: var(--spacing-2); border-radius: var(--radius-sm); transition: color var(--transition-fast); } swp-form-input .input-icon:hover { color: var(--color-text-secondary); } swp-form-input .input-icon i { font-size: 20px; display: block; } /* =========================================== PASSWORD STRENGTH INDICATOR =========================================== */ swp-password-strength { display: flex; align-items: center; gap: var(--spacing-3); margin-top: var(--spacing-2); } swp-strength-bar { flex: 1; height: 4px; background: var(--color-border); border-radius: 2px; overflow: hidden; } swp-strength-fill { height: 100%; width: 0%; border-radius: 2px; transition: width var(--transition-normal), background var(--transition-normal); } swp-strength-fill.weak { width: 25%; background: var(--color-red); } swp-strength-fill.fair { width: 50%; background: var(--color-amber); } swp-strength-fill.good { width: 75%; background: var(--color-blue); } swp-strength-fill.strong { width: 100%; background: var(--color-green); } swp-strength-text { font-size: var(--font-size-xs); color: var(--color-text-muted); min-width: 50px; } swp-strength-text.weak { color: var(--color-red); } swp-strength-text.fair { color: var(--color-amber); } swp-strength-text.good { color: var(--color-blue); } swp-strength-text.strong { color: var(--color-green); } /* =========================================== CHECKBOX =========================================== */ swp-form-checkbox { display: flex; align-items: flex-start; gap: var(--spacing-3); cursor: pointer; } swp-form-checkbox input[type="checkbox"] { width: 18px; height: 18px; margin: 0; cursor: pointer; accent-color: var(--color-teal); flex-shrink: 0; margin-top: 2px; } swp-form-checkbox span { font-size: var(--font-size-sm); color: var(--color-text-secondary); line-height: var(--line-height-normal); } swp-form-checkbox a { color: var(--color-teal); text-decoration: none; } swp-form-checkbox a:hover { text-decoration: underline; } /* Button base styles in components.css */ /* =========================================== AUTH FOOTER =========================================== */ swp-auth-footer { display: block; margin-top: var(--spacing-10); text-align: center; } swp-auth-footer-text { font-size: var(--font-size-sm); color: var(--color-text-secondary); } swp-auth-footer-text a { color: var(--color-teal); font-weight: var(--font-weight-medium); text-decoration: none; } swp-auth-footer-text a:hover { text-decoration: underline; } /* =========================================== DIVIDER =========================================== */ swp-auth-divider { display: flex; align-items: center; gap: var(--spacing-4); margin: var(--spacing-6) 0; } swp-auth-divider::before, swp-auth-divider::after { content: ''; flex: 1; height: 1px; background: var(--color-border); } swp-auth-divider span { font-size: var(--font-size-sm); color: var(--color-text-muted); } /* =========================================== SOCIAL LOGIN =========================================== */ swp-social-buttons { display: flex; flex-direction: column; gap: var(--spacing-3); } /* Social button styles in components.css */ /* =========================================== FORM MESSAGES =========================================== */ /* Parent pattern with color variants - using CSS nesting */ swp-form-error, swp-form-success { display: flex; align-items: center; gap: var(--spacing-2); padding: var(--spacing-3) var(--spacing-4); border: 1px solid; border-radius: var(--border-radius); font-size: var(--font-size-sm); & i { font-size: 18px; } } swp-form-error { background: var(--bg-red-medium); border-color: var(--border-red); color: var(--color-red); } swp-form-success { background: var(--bg-green-medium); border-color: var(--border-green); color: var(--color-green); } /* =========================================== PRICING PAGE =========================================== */ swp-pricing-page { display: flex; flex-direction: column; align-items: center; min-height: 100vh; padding: var(--spacing-16) var(--spacing-6); background: var(--color-background); } swp-pricing-header { display: flex; flex-direction: column; align-items: center; text-align: center; margin-bottom: var(--spacing-16); } swp-pricing-header swp-auth-logo { margin-bottom: var(--spacing-10); color: var(--color-text); } swp-pricing-header swp-auth-logo i { color: var(--color-teal); } swp-pricing-title { display: block; font-size: var(--font-size-3xl); font-weight: var(--font-weight-bold); color: var(--color-text); margin-bottom: var(--spacing-3); } swp-pricing-subtitle { display: block; font-size: var(--font-size-lg); color: var(--color-text-secondary); } swp-pricing-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--spacing-6); max-width: 1100px; width: 100%; align-items: stretch; } /* Plan cards in pricing grid */ swp-pricing-grid swp-plan-card { padding: var(--spacing-8); position: relative; display: flex; flex-direction: column; height: 100%; } swp-pricing-grid swp-plan-features { flex: 1; } swp-pricing-grid swp-plan-action { margin-top: auto; padding-top: var(--spacing-6); } swp-pricing-grid swp-plan-card.popular { border-color: var(--color-teal); box-shadow: var(--shadow-focus-ring); transform: scale(1.02); } /* Plan badge/button styles in components.css */ swp-pricing-grid swp-plan-action { margin-top: var(--spacing-6); } swp-pricing-footer { margin-top: var(--spacing-12); text-align: center; } swp-pricing-footer-text { font-size: var(--font-size-sm); color: var(--color-text-secondary); } swp-pricing-footer-text a { color: var(--color-teal); font-weight: var(--font-weight-medium); text-decoration: none; } swp-pricing-footer-text a:hover { text-decoration: underline; } /* =========================================== PAYMENT PAGE =========================================== */ swp-order-summary { display: flex; flex-direction: column; gap: var(--spacing-3); margin-top: var(--spacing-5); padding-top: var(--spacing-5); border-top: 1px solid var(--color-border); } swp-order-line { display: flex; justify-content: space-between; font-size: var(--font-size-sm); color: var(--color-text); } swp-order-line.discount { color: var(--color-green); } swp-order-line.total { font-weight: var(--font-weight-semibold); font-size: var(--font-size-base); } swp-order-divider { height: 1px; background: var(--color-border); margin: var(--spacing-2) 0; } swp-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--spacing-4); } swp-payment-secure { display: flex; align-items: center; justify-content: center; gap: var(--spacing-2); padding: var(--spacing-3); background: var(--bg-green-subtle); border-radius: var(--border-radius); font-size: var(--font-size-sm); color: var(--color-green); } swp-payment-secure i { font-size: 16px; } swp-payment-processing { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--spacing-5); padding: var(--spacing-16) 0; } swp-spinner { width: 48px; height: 48px; border: 3px solid var(--color-border); border-top-color: var(--color-teal); border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } swp-processing-text { font-size: var(--font-size-base); color: var(--color-text-secondary); } swp-payment-success { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--spacing-4); padding: var(--spacing-16) 0; } swp-success-icon { width: 64px; height: 64px; display: flex; align-items: center; justify-content: center; background: var(--bg-green-strong); border-radius: 50%; color: var(--color-green); } swp-success-icon i { font-size: 32px; } swp-success-title { font-size: var(--font-size-xl); font-weight: var(--font-weight-semibold); color: var(--color-text); } swp-success-text { font-size: var(--font-size-base); color: var(--color-text-secondary); } /* =========================================== RESPONSIVE DESIGN =========================================== */ @media (max-width: 1024px) { swp-auth-layout { grid-template-columns: 40fr 60fr; } swp-auth-branding { padding: var(--spacing-16); } swp-auth-plan-panel { padding: var(--spacing-16); } swp-auth-tagline { font-size: var(--font-size-2xl); } swp-pricing-grid { grid-template-columns: 1fr; max-width: 400px; } swp-pricing-grid swp-plan-card.popular { transform: none; order: -1; } } @media (max-width: 768px) { swp-auth-layout { grid-template-columns: 1fr; grid-template-rows: auto 1fr; } swp-auth-branding { padding: var(--spacing-10) var(--spacing-6); text-align: center; align-items: center; } swp-auth-plan-panel { padding: var(--spacing-6); } swp-auth-plan-panel swp-auth-logo { display: none; } swp-selected-plan-header { text-align: center; } swp-plan-card { padding: var(--spacing-5); } swp-plan-price-amount { font-size: 28px; } swp-auth-logo { margin-bottom: var(--spacing-6); justify-content: center; } swp-auth-tagline { font-size: var(--font-size-xl); margin-bottom: var(--spacing-4); } swp-auth-subtitle { display: none; } swp-auth-features { flex-direction: row; flex-wrap: wrap; justify-content: center; gap: var(--spacing-4); } swp-auth-feature { font-size: var(--font-size-sm); } swp-auth-form-panel { padding: var(--spacing-10) var(--spacing-6); } swp-auth-form-container { max-width: 100%; } } @media (max-width: 480px) { swp-auth-branding { padding: var(--spacing-8) var(--spacing-5); } swp-auth-plan-panel { padding: var(--spacing-5); } swp-auth-form-panel { padding: var(--spacing-8) var(--spacing-5); } swp-auth-features { display: none; } swp-change-plan-link { text-align: center; } }