From 020793a3e29ec8839b47a6db6dd5421567fc8708 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Mon, 11 May 2026 08:50:02 +0000 Subject: [PATCH] redesign: stylish two-column login page (dark navy split layout) --- app/static/style.css | 384 ++++++++++++++++++++++++++++++--------- app/templates/login.html | 81 ++++++--- 2 files changed, 352 insertions(+), 113 deletions(-) diff --git a/app/static/style.css b/app/static/style.css index 40d0b88..e8f6b62 100644 --- a/app/static/style.css +++ b/app/static/style.css @@ -813,101 +813,311 @@ button { } } -/* Stylish login page */ -.login-page { - position: relative; - background: - radial-gradient(circle at 12% 15%, rgba(255, 255, 255, 0.55) 0, rgba(255, 255, 255, 0) 34%), - radial-gradient(circle at 88% 82%, rgba(255, 255, 255, 0.45) 0, rgba(255, 255, 255, 0) 32%), - linear-gradient(145deg, #0f4c7c 0%, #1a77b8 48%, #5db2de 100%); -} -.login-shell { - width: min(560px, 94vw); - margin: 0 auto; - display: grid; - justify-items: center; - border-radius: 18px; - padding: clamp(1.1rem, 2.4vw, 2rem); - background: rgba(255, 255, 255, 0.86); - border: 1px solid rgba(255, 255, 255, 0.7); - box-shadow: 0 18px 46px rgba(9, 44, 72, 0.28); - backdrop-filter: blur(6px); -} -.login-title { - color: #0f3553; - font-weight: 700; - letter-spacing: 0.01em; -} -.login-subtitle { - margin: -0.35rem 0 0.85rem; - text-align: center; - color: #355a77; - font-size: 0.96rem; -} -.login-panel { - width: 100% !important; - justify-self: center; - min-width: 0; - background: #ffffff; - border: 1px solid #d3e4f2; - box-shadow: 0 10px 26px rgba(20, 66, 101, 0.12); -} -.login-panel label { - font-size: 0.88rem; - color: #234a68; - font-weight: 600; -} -.login-panel input { - background: #f8fbfe; - border: 1px solid #bfd5e8; -} -.login-panel input:focus { - outline: none; - border-color: #2a82c0; - box-shadow: 0 0 0 3px rgba(42, 130, 192, 0.16); -} -.login-panel button { - margin-top: 0.3rem; - font-weight: 700; - background: linear-gradient(180deg, #1675b4 0%, #0f5b94 100%); -} -.login-page .auth-error { - margin-bottom: 0.8rem; -} -@media (max-width: 700px) { - .login-shell { - border-radius: 14px; - padding: 1rem; - backdrop-filter: none; - } - .login-subtitle { - font-size: 0.9rem; - } +/* ========== Login page redesign ========== */ +.login-wrap { + display: flex; + height: 100vh; } -.login-corner-brand { - position: fixed; - top: 14px; - left: 16px; - z-index: 20; - color: #e8f4ff; - font-size: 1.5rem; - font-weight: 700; - letter-spacing: 0.01em; - text-shadow: 0 2px 8px rgba(9, 44, 72, 0.35); +/* LEFT PANEL */ +.login-left { + flex: 0 0 48%; + background: linear-gradient(150deg, #050d1a 0%, #091829 55%, #0e2344 100%); + position: relative; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + padding: 3rem; + box-sizing: border-box; } -.login-made-by-wrap { - position: fixed; + +.login-left-glow { + position: absolute; + border-radius: 50%; + pointer-events: none; +} +.login-left-glow-top { + width: 480px; + height: 480px; + background: radial-gradient(circle, rgba(30,120,210,0.16) 0%, transparent 70%); + top: -100px; + left: -80px; +} +.login-left-glow-bottom { + width: 350px; + height: 350px; + background: radial-gradient(circle, rgba(22,90,170,0.2) 0%, transparent 70%); + bottom: -80px; + right: -50px; +} + +.login-left-inner { + position: relative; + z-index: 2; + max-width: 400px; + width: 100%; +} + +.login-left-logo { + width: min(160px, 38%); + height: auto; + margin-bottom: 2.25rem; + display: block; + filter: brightness(0) invert(1); + opacity: 0.92; +} + +.login-left-title { + font-size: clamp(1.65rem, 2.6vw, 2.25rem); + font-weight: 800; + color: #ffffff; + margin: 0 0 1.1rem; + line-height: 1.18; + letter-spacing: -0.025em; +} + +.login-left-desc { + font-size: 0.88rem; + color: rgba(168,205,238,0.7); + line-height: 1.75; + margin: 0 0 2rem; +} + +.login-features { + list-style: none; + margin: 0; + padding: 0; + display: flex; + flex-direction: column; + gap: 0.7rem; +} + +.login-feature { + display: flex; + align-items: center; + gap: 0.85rem; + color: rgba(196,226,255,0.82); + font-size: 0.875rem; + font-weight: 500; +} + +.login-feature-icon { + width: 34px; + height: 34px; + flex-shrink: 0; + background: rgba(42,130,210,0.15); + border: 1px solid rgba(42,130,210,0.28); + border-radius: 9px; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.9rem; +} + +/* RIGHT PANEL */ +.login-right { + flex: 1; + background: #09172a; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + position: relative; + padding: 2.5rem 2rem; + box-sizing: border-box; +} + +.login-right::before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 1px; + height: 100%; + background: linear-gradient(180deg, transparent 0%, rgba(42,130,210,0.25) 30%, rgba(42,130,210,0.25) 70%, transparent 100%); +} + +.login-right-inner { + width: 100%; + max-width: 340px; +} + +.login-right-logo { + width: 90px; + height: auto; + margin-bottom: 2rem; + display: block; + filter: brightness(0) invert(1); + opacity: 0.7; +} + +.login-form-title { + font-size: 1.55rem; + font-weight: 700; + color: #e6f2ff; + margin-bottom: 0.3rem; + letter-spacing: -0.02em; +} + +.login-form-subtitle { + font-size: 0.82rem; + color: rgba(130,175,215,0.6); + margin-bottom: 2rem; + letter-spacing: 0.02em; +} + +.lp-session-notice { + margin-bottom: 1rem; + font-size: 0.85rem; +} +.lp-auth-error { + margin-bottom: 1rem; +} + +.login-form { + display: flex; + flex-direction: column; + gap: 1.15rem; +} + +.login-field { + display: flex; + flex-direction: column; + gap: 0.45rem; +} + +.login-field label { + font-size: 0.75rem; + font-weight: 700; + color: rgba(150,190,225,0.75); + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.login-field input { + background: rgba(255,255,255,0.04); + border: 1px solid rgba(255,255,255,0.09); + border-radius: 10px; + padding: 0.78rem 1rem; + color: #daeeff; + font-size: 0.93rem; + font-family: inherit; + transition: border-color 0.2s, box-shadow 0.2s, background 0.2s; + outline: none; + width: 100%; + box-sizing: border-box; +} + +.login-field input::placeholder { + color: rgba(130,175,210,0.35); +} + +.login-field input:focus { + border-color: rgba(42,130,210,0.6); + box-shadow: 0 0 0 3px rgba(42,130,210,0.12); + background: rgba(255,255,255,0.07); +} + +.login-submit { + margin-top: 0.5rem; + padding: 0.82rem 1.5rem; + border: none; + border-radius: 10px; + background: linear-gradient(135deg, #1e7dc8 0%, #1360a0 100%); + color: #fff; + font-size: 0.93rem; + font-weight: 700; + font-family: inherit; + cursor: pointer; + transition: filter 0.18s, transform 0.1s; + box-shadow: 0 4px 22px rgba(22,104,180,0.38), inset 0 1px 0 rgba(255,255,255,0.14); + width: 100%; + letter-spacing: 0.02em; +} + +.login-submit:hover { + filter: brightness(1.1); +} + +.login-submit:active { + transform: translateY(1px); +} + +.login-request-btn { + display: block; + text-align: center; + margin-top: 1.1rem; + padding: 0.68rem 1.2rem; + border-radius: 10px; + border: 1px solid rgba(42,130,210,0.22); + background: transparent; + color: rgba(100,175,230,0.7); + font-size: 0.85rem; + font-weight: 600; + letter-spacing: 0.03em; + text-decoration: none; + transition: border-color 0.2s, color 0.2s, background 0.2s; +} + +.login-request-btn:hover { + border-color: rgba(42,130,210,0.5); + background: rgba(42,130,210,0.07); + color: rgba(140,200,250,0.9); +} + +.login-footer { + position: absolute; + bottom: 1.25rem; left: 0; right: 0; - bottom: 10px; - z-index: 20; display: flex; justify-content: center; } -.login-made-by { - color: rgba(240, 248, 255, 0.95); - text-shadow: 0 2px 10px rgba(9, 44, 72, 0.45); + +.login-footer-link { + color: rgba(100,145,185,0.45); + font-size: 0.75rem; + text-decoration: none; + transition: color 0.2s; +} + +.login-footer-link:hover { + color: rgba(100,175,230,0.7); +} + +/* Mobile: stack vertically */ +@media (max-width: 820px) { + .login-wrap { + flex-direction: column; + height: auto; + min-height: 100vh; + } + .login-left { + flex: none; + padding: 2.5rem 1.5rem 2rem; + } + .login-left-logo { + width: 120px; + margin-bottom: 1.5rem; + } + .login-left-title { + font-size: 1.5rem; + } + .login-left-desc { + font-size: 0.84rem; + } + .login-right { + padding: 2rem 1.5rem 4rem; + } + .login-right::before { display: none; } + .login-right-logo { display: none; } + .login-footer { bottom: 0.75rem; } +} + +@media (max-width: 480px) { + .login-left { padding: 2rem 1.25rem 1.75rem; } + .login-right { padding: 1.75rem 1.25rem 4rem; } } /* Markdown inside service card comments */ diff --git a/app/templates/login.html b/app/templates/login.html index 26a6bff..8cbd6b1 100644 --- a/app/templates/login.html +++ b/app/templates/login.html @@ -6,6 +6,10 @@ МОНТ - инфрастуктурный полигон +