@font-face { font-family: 'Sora'; src: url('@/assets/fonts/Sora-Variable.woff2') format('woff2'); font-weight: 100 800; font-display: swap; font-style: normal; } :root { /* Colors: Electric Dusk */ --color-gradient-start: #f06292; --color-gradient-mid: #ab47bc; --color-gradient-end: #5c6bc0; --color-accent: #ff7043; --color-text: #1c1c1e; --color-text-on-gradient: #ffffff; --color-surface: #fff5f8; --color-card: #ffffff; /* Gradient */ --gradient-primary: linear-gradient(135deg, #f06292 0%, #ab47bc 50%, #5c6bc0 100%); /* Spacing */ --spacing-xs: 0.5rem; --spacing-sm: 0.75rem; --spacing-md: 1rem; --spacing-lg: 1.2rem; --spacing-xl: 1.5rem; --spacing-2xl: 2rem; /* Borders */ --radius-card: 14px; --radius-button: 14px; /* Shadows */ --shadow-card: 0 2px 8px rgba(0, 0, 0, 0.1); --shadow-button: 0 2px 8px rgba(0, 0, 0, 0.15); /* Layout */ --content-max-width: 480px; --content-padding: 1.2rem; } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { font-family: 'Sora', system-ui, -apple-system, sans-serif; font-size: 16px; line-height: 1.5; color: var(--color-text); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body { min-height: 100vh; background: var(--gradient-primary); } #app { min-height: 100vh; display: flex; flex-direction: column; align-items: center; } .app-container { width: 100%; max-width: var(--content-max-width); min-height: 100vh; padding: var(--content-padding); display: flex; flex-direction: column; } /* Card-style form fields */ .form-field { background: var(--color-card); border: none; border-radius: var(--radius-card); padding: var(--spacing-md) var(--spacing-md); box-shadow: var(--shadow-card); width: 100%; font-family: inherit; font-size: 0.95rem; font-weight: 400; color: var(--color-text); outline: none; transition: box-shadow 0.2s ease; } .form-field:focus { box-shadow: 0 2px 12px rgba(0, 0, 0, 0.18); } .form-field::placeholder { color: #999; font-weight: 400; } textarea.form-field { resize: vertical; min-height: 5rem; } /* Form group (label + input) */ .form-group { display: flex; flex-direction: column; gap: 0.35rem; } .form-label { font-size: 0.85rem; font-weight: 700; color: var(--color-text-on-gradient); padding-left: 0.25rem; } /* Primary action button */ .btn-primary { display: block; width: 100%; padding: var(--spacing-md) var(--spacing-lg); background: var(--color-accent); color: var(--color-text); border: none; border-radius: var(--radius-button); font-family: inherit; font-size: 1rem; font-weight: 700; cursor: pointer; box-shadow: var(--shadow-button); transition: opacity 0.2s ease, transform 0.1s ease; text-align: center; text-decoration: none; } .btn-primary:hover { opacity: 0.92; } .btn-primary:active { transform: scale(0.98); } .btn-primary:disabled { opacity: 0.6; cursor: not-allowed; } /* Error message */ .field-error { color: #fff; font-size: 0.875rem; font-weight: 600; padding-left: 0.25rem; } /* Utility */ .text-center { text-align: center; } .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }