Soma / frontend /src /components /AuthScreen.css
Komalpreet Kaur
style: establish full fluid mobile responsiveness on iPhone 14 viewports across AuthScreen, App Shell, and 3D Brain overlays
be0c19e unverified
/* ═══════════════════════════════════════════════
AuthScreen (Neural Gloss & Soma Orange)
═══════════════════════════════════════════════ */
.landing {
position: fixed;
inset: 0;
background: #f3f4f6; /* Premium soft, warm workspace backdrop */
display: flex;
align-items: center;
justify-content: center;
z-index: 1000;
overflow: hidden;
font-family: 'Inter', system-ui, -apple-system, sans-serif;
}
/* ── Background Neural Glows ── */
.landing-bg {
position: absolute;
inset: 0;
z-index: 0;
}
.bg-orb {
position: absolute;
border-radius: 50%;
filter: blur(120px);
opacity: 0.5;
animation: drift 20s infinite alternate ease-in-out;
}
/* Unified Soma Orange Palette Glow Orbs */
.orb-1 {
width: 600px;
height: 600px;
background: rgba(255, 107, 53, 0.15); /* Soma Orange Glow */
top: -10%;
left: -10%;
}
.orb-2 {
width: 500px;
height: 500px;
background: rgba(255, 139, 84, 0.12); /* Soft Axon Glow */
bottom: -5%;
right: -5%;
}
.orb-3 {
width: 400px;
height: 400px;
background: rgba(255, 235, 227, 0.2); /* Soft Warm Radial */
top: 30%;
right: 20%;
}
.bg-grid {
position: absolute;
inset: 0;
background-image: radial-gradient(rgba(0, 0, 0, 0.05) 1px, transparent 1px);
background-size: 30px 30px;
opacity: 0.8;
}
@keyframes drift {
from { transform: translate(0, 0) scale(1); }
to { transform: translate(40px, 40px) scale(1.15); }
}
/* ── Frosted Glass Console Panel ── */
.splash-content, .name-content {
position: relative;
z-index: 10;
width: 100%;
max-width: 480px;
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
background: rgba(255, 255, 255, 0.45);
backdrop-filter: blur(35px);
-webkit-backdrop-filter: blur(35px);
border: 1px solid rgba(255, 255, 255, 0.8);
border-radius: 32px;
padding: 48px 40px;
box-shadow: 0 24px 60px rgba(0, 0, 0, 0.04), inset 0 0 20px rgba(255, 255, 255, 0.2);
animation: slide-up 0.8s cubic-bezier(0.16, 1, 0.3, 1);
box-sizing: border-box;
}
@keyframes slide-up {
from { opacity: 0; transform: translateY(30px); }
to { opacity: 1; transform: translateY(0); }
}
/* ── Hero Orb (Floating Core) ── */
.hero-orb {
width: 80px;
height: 80px;
margin-bottom: 32px;
position: relative;
}
.hero-core {
position: absolute;
inset: 22%;
background: #ff6b35; /* Soma Orange Core */
border-radius: 50%;
box-shadow: 0 0 30px rgba(255, 107, 53, 0.6);
animation: heartbeat 2s infinite ease-in-out;
}
.hero-ring {
position: absolute;
inset: 0;
border: 1px solid rgba(255, 107, 53, 0.2);
border-radius: 50%;
animation: rotate 12s linear infinite;
}
.r2 { transform: rotate(45deg); inset: -8px; border-color: rgba(255, 107, 53, 0.15); }
.r3 { transform: rotate(-45deg); inset: -16px; border-color: rgba(255, 107, 53, 0.1); }
@keyframes rotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
@keyframes heartbeat {
0% { transform: scale(0.95); opacity: 0.8; }
50% { transform: scale(1.05); opacity: 1; box-shadow: 0 0 45px rgba(255, 107, 53, 0.85); }
100% { transform: scale(0.95); opacity: 0.8; }
}
/* ── Premium Typography ── */
.hero-title {
font-size: 4rem;
font-weight: 900;
letter-spacing: -0.06em;
color: #1e293b;
margin: 0 0 6px 0;
line-height: 1;
}
.hero-tagline {
font-size: 0.65rem;
color: #ff6b35; /* Brand accent color */
text-transform: uppercase;
letter-spacing: 0.4em;
font-weight: 800;
margin: 0 0 24px 0;
font-family: monospace;
}
.hero-desc {
font-size: 0.88rem;
color: #64748b;
line-height: 1.6;
margin: 0 0 32px 0;
max-width: 380px;
}
/* ── Dynamic Badges (Features List) ── */
.splash-features {
display: flex;
gap: 10px;
margin-bottom: 36px;
justify-content: center;
flex-wrap: wrap;
}
.splash-feature {
background: rgba(255, 255, 255, 0.65);
border: 1px solid rgba(255, 255, 255, 0.9);
padding: 6px 12px;
border-radius: 100px;
font-size: 0.68rem;
font-weight: 800;
color: #334155;
display: flex;
align-items: center;
gap: 6px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.02);
text-transform: uppercase;
letter-spacing: 0.03em;
}
.sf-dot {
width: 5px;
height: 5px;
border-radius: 50%;
background-color: #ff6b35;
box-shadow: 0 0 6px #ff6b35;
}
/* ── Premium Orange Action Buttons ── */
.enter-btn, .name-submit {
background: #ff6b35 !important;
color: #fff !important;
padding: 12px 32px !important;
border-radius: 100px !important;
border: none !important;
font-size: 0.85rem !important;
font-weight: 700 !important;
letter-spacing: 0.05em !important;
display: flex;
align-items: center;
gap: 10px;
cursor: pointer;
transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1) !important;
box-shadow: 0 6px 20px rgba(255, 107, 53, 0.25) !important;
}
.enter-btn:hover, .name-submit:hover:not(:disabled) {
transform: translateY(-2px) !important;
background: #e0531f !important;
box-shadow: 0 10px 25px rgba(255, 107, 53, 0.4) !important;
}
.enter-btn:active, .name-submit:active:not(:disabled) {
transform: translateY(0) !important;
}
.splash-hint {
font-size: 0.68rem;
color: #94a3b8;
margin-top: 16px;
font-weight: 500;
}
/* ── Name Form Stage ── */
.name-orb {
width: 60px;
height: 60px;
margin-bottom: 24px;
position: relative;
}
.name-orb .hero-core {
background: #ff6b35;
box-shadow: 0 0 20px rgba(255, 107, 53, 0.5);
}
.name-heading {
font-size: 2rem;
font-weight: 900;
color: #1e293b;
margin: 0 0 6px 0;
letter-spacing: -0.03em;
}
.name-sub {
font-size: 0.8rem;
color: #64748b;
line-height: 1.5;
margin: 0 0 24px 0;
max-width: 340px;
}
.name-form {
width: 100%;
}
.name-input-wrap {
position: relative;
margin-bottom: 20px;
}
.name-input {
width: 100%;
background: rgba(255, 255, 255, 0.8) !important;
border: 1px solid rgba(0, 0, 0, 0.08) !important;
border-radius: 16px !important;
padding: 16px 20px !important;
font-size: 1rem !important;
font-weight: 600 !important;
color: #1e293b !important;
outline: none !important;
text-align: center !important;
transition: all 0.3s ease !important;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.01) !important;
}
.name-input:focus {
border-color: #ff6b35 !important;
background: #fff !important;
box-shadow: 0 0 16px rgba(255, 107, 53, 0.12) !important;
}
.name-submit {
width: 100%;
justify-content: center;
}
.name-submit:disabled {
opacity: 0.5;
cursor: not-allowed;
transform: none !important;
box-shadow: none !important;
}
.back-link {
background: none;
border: none;
color: #64748b;
font-size: 0.75rem;
font-weight: 700;
display: flex;
align-items: center;
gap: 6px;
margin-top: 24px;
cursor: pointer;
transition: color 0.2s;
}
.back-link:hover {
color: #ff6b35;
}
.auth-error {
color: #ef4444;
font-size: 0.72rem;
font-weight: 600;
margin: -10px 0 16px 0;
text-align: center;
}
/* ── Footer ── */
.landing-footer {
position: absolute;
bottom: 30px;
display: flex;
align-items: center;
gap: 8px;
color: #94a3b8;
font-family: monospace;
font-size: 0.65rem;
font-weight: 600;
letter-spacing: 0.05em;
text-transform: uppercase;
}
.footer-dot {
width: 4px;
height: 4px;
border-radius: 50%;
background-color: #ff6b35;
}
/* ── Page Transitions ── */
.transitioning {
opacity: 0.8;
filter: blur(10px);
transition: all 0.5s ease-in-out;
}
/* ── Mobile Responsive Overrides for iPhone 14 ── */
@media (max-width: 480px) {
.landing {
align-items: flex-start !important;
padding: 30px 16px !important;
overflow-y: auto !important;
}
.splash-content, .name-content {
margin: 20px auto 60px auto !important;
padding: 36px 20px !important;
width: 100% !important;
max-width: 100% !important;
border-radius: 24px !important;
}
.hero-orb {
width: 60px !important;
height: 60px !important;
margin-bottom: 24px !important;
}
.hero-title {
font-size: 2.6rem !important;
}
.hero-tagline {
font-size: 0.58rem !important;
letter-spacing: 0.3em !important;
margin-bottom: 18px !important;
}
.hero-desc {
font-size: 0.8rem !important;
margin-bottom: 24px !important;
line-height: 1.5 !important;
}
.splash-features {
gap: 8px !important;
margin-bottom: 28px !important;
}
.splash-feature {
padding: 4px 10px !important;
font-size: 0.62rem !important;
}
.enter-btn, .name-submit {
padding: 10px 24px !important;
font-size: 0.8rem !important;
}
.landing-footer {
position: relative !important;
bottom: auto !important;
margin: 20px auto 40px auto !important;
justify-content: center !important;
}
}