forms.html 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. <!DOCTYPE html>
  2. <html lang="ru">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Messenger - {% block title %}{% endblock %}</title>
  7. <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
  8. <style>
  9. * {
  10. margin: 0;
  11. padding: 0;
  12. box-sizing: border-box;
  13. }
  14. body {
  15. font-family: 'Inter', sans-serif;
  16. background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  17. min-height: 100vh;
  18. display: flex;
  19. align-items: center;
  20. justify-content: center;
  21. padding: 20px;
  22. }
  23. .container {
  24. width: 100%;
  25. max-width: 400px;
  26. }
  27. .card {
  28. background: rgba(255, 255, 255, 0.95);
  29. backdrop-filter: blur(10px);
  30. border-radius: 20px;
  31. padding: 40px;
  32. box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
  33. border: 1px solid rgba(255, 255, 255, 0.2);
  34. }
  35. .logo {
  36. text-align: center;
  37. margin-bottom: 30px;
  38. }
  39. .logo h1 {
  40. color: #4f46e5;
  41. font-size: 28px;
  42. font-weight: 700;
  43. }
  44. .logo p {
  45. color: #6b7280;
  46. margin-top: 5px;
  47. }
  48. .form-group {
  49. margin-bottom: 20px;
  50. }
  51. .form-label {
  52. display: block;
  53. margin-bottom: 8px;
  54. color: #374151;
  55. font-weight: 500;
  56. font-size: 14px;
  57. }
  58. .form-input {
  59. width: 100%;
  60. padding: 12px 16px;
  61. border: 2px solid #e5e7eb;
  62. border-radius: 12px;
  63. font-size: 16px;
  64. transition: all 0.3s ease;
  65. background: white;
  66. }
  67. .form-input:focus {
  68. outline: none;
  69. border-color: #4f46e5;
  70. box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);
  71. }
  72. .checkbox-group {
  73. display: flex;
  74. align-items: center;
  75. margin-bottom: 25px;
  76. }
  77. .checkbox {
  78. width: 18px;
  79. height: 18px;
  80. margin-right: 10px;
  81. accent-color: #4f46e5;
  82. }
  83. .checkbox-label {
  84. color: #374151;
  85. font-size: 14px;
  86. }
  87. .btn {
  88. width: 100%;
  89. padding: 14px;
  90. border: none;
  91. border-radius: 12px;
  92. font-size: 16px;
  93. font-weight: 600;
  94. cursor: pointer;
  95. transition: all 0.3s ease;
  96. }
  97. .btn-primary {
  98. background: #4f46e5;
  99. color: white;
  100. }
  101. .btn-primary:hover {
  102. background: #4338ca;
  103. transform: translateY(-2px);
  104. box-shadow: 0 10px 20px rgba(79, 70, 229, 0.3);
  105. }
  106. .divider {
  107. text-align: center;
  108. margin: 25px 0;
  109. color: #9ca3af;
  110. font-size: 14px;
  111. position: relative;
  112. }
  113. .divider::before {
  114. content: '';
  115. position: absolute;
  116. top: 50%;
  117. left: 0;
  118. right: 0;
  119. height: 1px;
  120. background: #e5e7eb;
  121. }
  122. .divider span {
  123. background: white;
  124. padding: 0 15px;
  125. position: relative;
  126. }
  127. .switch-form {
  128. text-align: center;
  129. margin-top: 25px;
  130. }
  131. .switch-form a {
  132. color: #4f46e5;
  133. text-decoration: none;
  134. font-weight: 500;
  135. }
  136. .switch-form a:hover {
  137. text-decoration: underline;
  138. }
  139. .alert {
  140. padding: 12px 16px;
  141. border-radius: 12px;
  142. margin-bottom: 20px;
  143. font-size: 14px;
  144. }
  145. .alert-error {
  146. background: #fee2e2;
  147. color: #dc2626;
  148. border: 1px solid #fecaca;
  149. }
  150. .alert-success {
  151. background: #d1fae5;
  152. color: #065f46;
  153. border: 1px solid #a7f3d0;
  154. }
  155. @media (max-width: 480px) {
  156. .card {
  157. padding: 30px 25px;
  158. }
  159. body {
  160. padding: 15px;
  161. }
  162. }
  163. </style>
  164. </head>
  165. <body>
  166. <div class="container">
  167. <div class="card">
  168. <div class="logo">
  169. <h1>💬 Zpenr Messenger</h1>
  170. <p>{% block subtitle %}Безопасное общение{% endblock %}</p>
  171. </div>
  172. {% with messages = get_flashed_messages(with_categories=true) %}
  173. {% if messages %}
  174. {% for category, message in messages %}
  175. <div class="alert alert-{{ category }}">{{ message }}</div>
  176. {% endfor %}
  177. {% endif %}
  178. {% endwith %}
  179. {% block form %}{% endblock %}
  180. </div>
  181. </div>
  182. </body>
  183. </html>