diff --git a/src/App.css b/src/App.css index 036222b..f04a47c 100644 --- a/src/App.css +++ b/src/App.css @@ -44,6 +44,471 @@ h1, h2, h3, h4, h5, h6 { width: auto; } +/* ========================================================= + AUTH PAGES +========================================================= */ +.auth-root, +.signup-root { + position: relative; + min-height: 100vh; + overflow: hidden; + background: + radial-gradient(circle at 12% 18%, rgba(6, 182, 212, 0.2), transparent 28%), + radial-gradient(circle at 88% 14%, rgba(139, 92, 246, 0.2), transparent 34%), + linear-gradient(160deg, #050816 0%, #0b1120 48%, #111827 100%); + color: var(--text-main); +} + +.bg-blobs, +.signup-blobs { + position: absolute; + inset: 0; + pointer-events: none; + overflow: hidden; +} + +.blob, +.signup-blob { + position: absolute; + border-radius: 999px; + filter: blur(80px); + opacity: 0.5; +} + +.blob-a, +.signup-blob-a { + top: 10%; + left: -8%; + width: 320px; + height: 320px; + background: rgba(59, 130, 246, 0.28); +} + +.blob-b, +.signup-blob-b { + right: -10%; + top: 18%; + width: 360px; + height: 360px; + background: rgba(14, 165, 233, 0.16); +} + +.blob-c, +.signup-blob-c { + left: 38%; + bottom: -12%; + width: 420px; + height: 420px; + background: rgba(99, 102, 241, 0.18); +} + +.auth-header, +.signup-header, +.auth-footer, +.signup-footer { + position: relative; + z-index: 1; + width: min(1180px, calc(100% - 40px)); + margin: 0 auto; +} + +.auth-header, +.signup-header { + padding: 28px 0 0; +} + +.brand, +.signup-brand { + display: inline-flex; + align-items: center; + gap: 14px; + padding: 12px 16px; + border: 1px solid rgba(148, 163, 184, 0.18); + border-radius: 18px; + background: rgba(15, 23, 42, 0.45); + backdrop-filter: blur(18px); + box-shadow: 0 18px 48px rgba(2, 6, 23, 0.24); +} + +.brand-name, +.signup-brand-name { + font-size: 1.15rem; + font-weight: 800; + letter-spacing: -0.03em; +} + +.brand-sub, +.signup-brand-sub { + color: #94a3b8; + font-size: 0.88rem; +} + +.auth-main, +.signup-main { + position: relative; + z-index: 1; + width: min(1180px, calc(100% - 40px)); + margin: 0 auto; + padding: 44px 0 28px; + display: grid; + grid-template-columns: minmax(0, 1.08fr) minmax(360px, 0.92fr); + gap: 40px; + align-items: center; +} + +.signup-main { + grid-template-columns: minmax(0, 1fr); + justify-items: center; + min-height: calc(100vh - 170px); +} + +.hero-copy { + max-width: 620px; +} + +.hero-title { + font-size: clamp(2.8rem, 5vw, 4.9rem); + line-height: 0.98; + letter-spacing: -0.05em; + margin-bottom: 18px; +} + +.hero-title span { + background: linear-gradient(135deg, #67e8f9, #a78bfa); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.hero-desc { + max-width: 560px; + color: #94a3b8; + font-size: 1.08rem; + line-height: 1.75; +} + +.feature-row { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 14px; + margin-top: 32px; +} + +.feat { + padding: 16px 18px; + border-radius: 18px; + border: 1px solid rgba(148, 163, 184, 0.16); + background: rgba(15, 23, 42, 0.5); + color: #cbd5e1; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03); +} + +.feat strong { + display: block; + color: #f8fafc; + font-size: 0.95rem; + margin-bottom: 4px; +} + +.feat span { + font-size: 0.9rem; + color: #94a3b8; +} + +.auth-panel-wrap, +.signup-panel-wrap { + width: 100%; + display: flex; + justify-content: center; +} + +.auth-panel, +.signup-panel { + position: relative; + width: min(100%, 470px); + border-radius: 32px; + border: 1px solid rgba(148, 163, 184, 0.18); + background: + linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.02)), + rgba(9, 14, 28, 0.82); + backdrop-filter: blur(24px); + box-shadow: + 0 28px 80px rgba(2, 6, 23, 0.48), + inset 0 1px 0 rgba(255, 255, 255, 0.05); + overflow: hidden; +} + +.panel-inner, +.signup-panel-inner { + position: relative; + z-index: 1; + padding: 34px 30px 30px; +} + +.auth-form, +.signup-form { + display: flex; + flex-direction: column; + gap: 18px; +} + +.form-title, +.signup-form-title { + margin: 0 0 6px; + font-size: 1.9rem; + line-height: 1.15; + letter-spacing: -0.04em; +} + +.field, +.signup-field { + display: flex; + flex-direction: column; + gap: 8px; +} + +.label, +.signup-label { + color: #cbd5e1; + font-size: 0.9rem; + font-weight: 600; +} + +.field input, +.signup-field input { + width: 100%; + border: 1px solid rgba(148, 163, 184, 0.18); + border-radius: 16px; + background: rgba(15, 23, 42, 0.72); + color: #f8fafc; + padding: 14px 16px; + font-size: 0.98rem; + outline: none; + transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease; +} + +.field input::placeholder, +.signup-field input::placeholder { + color: #64748b; +} + +.field input:focus, +.signup-field input:focus { + border-color: rgba(103, 232, 249, 0.7); + box-shadow: 0 0 0 4px rgba(34, 211, 238, 0.12); + transform: translateY(-1px); +} + +.submit-btn, +.signup-submit-btn, +.google-btn, +.signup-google-btn, +.link-btn, +.signup-link-btn { + font: inherit; +} + +.submit-btn, +.signup-submit-btn { + width: 100%; + border: none; + border-radius: 16px; + padding: 14px 18px; + background: linear-gradient(135deg, #22d3ee, #6366f1); + color: #eff6ff; + font-size: 0.98rem; + font-weight: 700; + cursor: pointer; + transition: transform 0.18s ease, box-shadow 0.18s ease, opacity 0.18s ease; + box-shadow: 0 16px 36px rgba(34, 211, 238, 0.2); +} + +.submit-btn:hover, +.signup-submit-btn:hover, +.google-btn:hover, +.signup-google-btn:hover { + transform: translateY(-1px); +} + +.submit-btn:active, +.signup-submit-btn:active, +.google-btn:active, +.signup-google-btn:active { + transform: translateY(0); +} + +.google-btn, +.signup-google-btn { + width: 100%; + border: 1px solid rgba(148, 163, 184, 0.18); + border-radius: 16px; + padding: 13px 16px; + background: rgba(255, 255, 255, 0.03); + color: #e2e8f0; + font-weight: 600; + cursor: pointer; + transition: border-color 0.18s ease, background 0.18s ease; +} + +.google-btn:hover, +.signup-google-btn:hover { + border-color: rgba(103, 232, 249, 0.4); + background: rgba(255, 255, 255, 0.06); +} + +.divider, +.signup-divider { + position: relative; + text-align: center; + color: #94a3b8; + font-size: 0.84rem; + text-transform: uppercase; + letter-spacing: 0.14em; +} + +.divider::before, +.signup-divider::before { + content: ""; + position: absolute; + top: 50%; + left: 0; + right: 0; + height: 1px; + background: rgba(148, 163, 184, 0.16); +} + +.divider span, +.signup-divider span { + position: relative; + padding: 0 12px; + background: rgba(9, 14, 28, 0.92); +} + +.switch-row, +.signup-switch { + display: flex; + justify-content: center; + align-items: center; + gap: 8px; + flex-wrap: wrap; + color: #94a3b8; + font-size: 0.94rem; +} + +.link-btn, +.signup-link-btn { + border: none; + background: none; + color: #67e8f9; + cursor: pointer; + font-weight: 700; + padding: 0; +} + +.link-btn:hover, +.signup-link-btn:hover { + color: #a5f3fc; +} + +.panel-deco { + position: absolute; + width: 180px; + height: 180px; + border-radius: 999px; + filter: blur(12px); + opacity: 0.28; +} + +.deco-left { + top: -56px; + right: -32px; + background: radial-gradient(circle, rgba(34, 211, 238, 0.9), transparent 68%); +} + +.deco-right { + bottom: -68px; + left: -36px; + background: radial-gradient(circle, rgba(99, 102, 241, 0.9), transparent 68%); +} + +.auth-footer, +.signup-footer { + padding: 0 0 26px; + text-align: center; + color: #94a3b8; +} + +@media (max-width: 980px) { + .auth-main { + grid-template-columns: 1fr; + padding-top: 30px; + } + + .hero-copy { + max-width: none; + } + + .feature-row { + grid-template-columns: 1fr; + } + + .auth-panel-wrap, + .signup-panel-wrap { + justify-content: stretch; + } + + .auth-panel, + .signup-panel { + width: 100%; + } +} + +@media (max-width: 640px) { + .auth-header, + .signup-header, + .auth-main, + .signup-main, + .auth-footer, + .signup-footer { + width: min(100% - 24px, 100%); + } + + .auth-header, + .signup-header { + padding-top: 18px; + } + + .auth-main, + .signup-main { + padding-top: 22px; + padding-bottom: 18px; + gap: 22px; + } + + .brand, + .signup-brand { + width: 100%; + justify-content: center; + } + + .hero-title { + font-size: clamp(2.2rem, 11vw, 3.2rem); + } + + .hero-desc { + font-size: 0.98rem; + } + + .panel-inner, + .signup-panel-inner { + padding: 24px 18px 22px; + } + + .form-title, + .signup-form-title { + font-size: 1.55rem; + } +} + /* ========================================================= LANDING PAGE ========================================================= */