:root { --bg: #0b1020; --bg-soft: #121a2f; --text: #dbe4ff; --text-soft: #8b9cc8; --accent: #6d7cff; --accent-2: #30d1ff; --error: #ff6b8a; --ok: #6dffb5; } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; background: radial-gradient(circle at top left, #111a32, var(--bg)); color: var(--text); overflow: hidden; } .app-shell { min-height: 100vh; display: grid; place-items: center; padding: 24px; position: relative; z-index: 2; } .card { width: min(560px, 100%); background: linear-gradient(145deg, rgba(18, 26, 47, 0.85), rgba(11, 16, 32, 0.95)); border: 1px solid rgba(109, 124, 255, 0.25); border-radius: 18px; backdrop-filter: blur(10px); box-shadow: 0 24px 80px rgba(0, 0, 0, 0.45); padding: 28px; } h1 { margin-top: 0; margin-bottom: 8px; letter-spacing: 0.4px; } .sub { margin-top: 0; margin-bottom: 20px; color: var(--text-soft); } .auth-panel { border: 1px solid rgba(139, 156, 200, 0.2); background: rgba(9, 13, 26, 0.45); border-radius: 12px; padding: 12px; margin-bottom: 16px; } .auth-text { margin: 0; color: var(--text-soft); } .auth-actions { display: flex; gap: 8px; margin-top: 10px; } .auth-link, .ghost-btn { appearance: none; border: 1px solid rgba(109, 124, 255, 0.45); background: rgba(109, 124, 255, 0.14); color: var(--text); border-radius: 10px; padding: 8px 12px; text-decoration: none; cursor: pointer; font: inherit; font-weight: 600; } .auth-link:hover, .ghost-btn:hover { background: rgba(109, 124, 255, 0.28); } #quote-form.locked { opacity: 0.6; pointer-events: none; } label { display: block; margin-top: 14px; margin-bottom: 8px; font-weight: 600; } select, textarea, input[type="file"], button { width: 100%; border-radius: 12px; border: 1px solid rgba(139, 156, 200, 0.25); background: rgba(9, 13, 26, 0.75); color: var(--text); font: inherit; } select, textarea { padding: 12px; } input[type="file"] { padding: 10px; } input[type="file"]::file-selector-button { margin-right: 10px; border: 1px solid rgba(109, 124, 255, 0.45); background: rgba(109, 124, 255, 0.14); color: var(--text); border-radius: 8px; padding: 6px 10px; cursor: pointer; } .hint { margin: 8px 0 0; color: var(--text-soft); font-size: 0.9rem; } textarea { min-height: 160px; resize: vertical; } button { margin-top: 16px; padding: 12px; font-weight: 700; border: 0; background: linear-gradient(90deg, var(--accent), var(--accent-2)); color: #061228; cursor: pointer; transition: transform 0.2s ease, box-shadow 0.2s ease; } button:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(48, 209, 255, 0.35); } button:disabled { opacity: 0.55; cursor: not-allowed; } .status { min-height: 1.2em; margin-top: 12px; color: var(--text-soft); } .status.ok { color: var(--ok); } .status.error { color: var(--error); } .bg-glow { position: absolute; border-radius: 999px; filter: blur(70px); opacity: 0.35; z-index: 1; animation: float 8s ease-in-out infinite; } .bg-glow-a { width: 260px; height: 260px; left: 10%; top: 12%; background: #526dff; } .bg-glow-b { width: 320px; height: 320px; right: 10%; bottom: 12%; background: #18ccff; animation-delay: -4s; } .fade-in-up { animation: fadeInUp 0.65s ease forwards; } @keyframes float { 0%, 100% { transform: translateY(0px); } 50% { transform: translateY(-16px); } } @keyframes fadeInUp { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } }