feat: nouveau logo « cadran ex aequo » — signe égal bicolore dans un cadran (icône PWA, login, master SVG dans docs/, capture README)Unverified
Claude-Session: https://claude.ai/code/session_01FPKHKGfqvnvXKY9tNhYmkh
ab03361 parent: 21aa7ec modified
assets/icon-512.png +0 -0 | Binary files a/assets/icon-512.png and b/assets/icon-512.png differ |
| Binary files a/assets/icon-512.png and b/assets/icon-512.png differ | Binary files a/assets/icon-512.png and b/assets/icon-512.png differ |
modified
assets/style.css +1 -4 | @@ -352,10 +352,7 @@ a.team-pill:hover { filter: brightness(.96); } | ||
| 352 | 352 | /* La coquille ne scrolle plus : au clavier ouvert, c'est ici que ça défile. */ |
| 353 | 353 | overflow-y: auto; |
| 354 | 354 | } |
| 355 | -.login-icon { | |
| 356 | - width: 72px; height: 72px; border-radius: 999px; background: var(--color-accent); | |
| 357 | - display: flex; align-items: center; justify-content: center; margin-bottom: var(--space-6); | |
| 358 | -} | |
| 355 | +.login-logo { display: block; flex: none; margin-bottom: var(--space-6); } | |
| 359 | 356 | .login h1 { font-size: 44px; margin: 0 0 var(--space-2); letter-spacing: -0.02em; } |
| 360 | 357 | .login .tagline { font-size: 15px; opacity: .7; margin: 0 0 var(--space-8); max-width: 15em; } |
| 361 | 358 | .form-error { font-size: 13px; color: var(--color-accent-700); margin: 0 0 var(--space-3); } |
| @@ -352,10 +352,7 @@ a.team-pill:hover { filter: brightness(.96); } | |||
| 352 | /* La coquille ne scrolle plus : au clavier ouvert, c'est ici que ça défile. */ | 352 | /* La coquille ne scrolle plus : au clavier ouvert, c'est ici que ça défile. */ |
| 353 | overflow-y: auto; | 353 | overflow-y: auto; |
| 354 | } | 354 | } |
| 355 | -.login-icon { | 355 | +.login-logo { display: block; flex: none; margin-bottom: var(--space-6); } |
| 356 | - width: 72px; height: 72px; border-radius: 999px; background: var(--color-accent); | ||
| 357 | - display: flex; align-items: center; justify-content: center; margin-bottom: var(--space-6); | ||
| 358 | -} | ||
| 359 | .login h1 { font-size: 44px; margin: 0 0 var(--space-2); letter-spacing: -0.02em; } | 356 | .login h1 { font-size: 44px; margin: 0 0 var(--space-2); letter-spacing: -0.02em; } |
| 360 | .login .tagline { font-size: 15px; opacity: .7; margin: 0 0 var(--space-8); max-width: 15em; } | 357 | .login .tagline { font-size: 15px; opacity: .7; margin: 0 0 var(--space-8); max-width: 15em; } |
| 361 | .form-error { font-size: 13px; color: var(--color-accent-700); margin: 0 0 var(--space-3); } | 358 | .form-error { font-size: 13px; color: var(--color-accent-700); margin: 0 0 var(--space-3); } |
added
docs/logo.svg +14 -0 | new file mode 100644 | ||
| @@ -0,0 +1,14 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="96" height="96" viewBox="0 0 96 96"> | |
| 2 | + <!-- Ex Ego — « le cadran ex aequo » : un signe égal dans un cadran d'horloge. | |
| 3 | + Deux traits de longueur égale, partagés terracotta/sauge en proportions | |
| 4 | + inversées : des contributions différentes, un total égal. --> | |
| 5 | + <circle cx="48" cy="48" r="44" fill="#f5ead8"/> | |
| 6 | + <circle cx="48" cy="14" r="2.9" fill="#201e1d" opacity=".55"/> | |
| 7 | + <circle cx="48" cy="82" r="2.9" fill="#201e1d" opacity=".3"/> | |
| 8 | + <circle cx="14" cy="48" r="2.9" fill="#201e1d" opacity=".3"/> | |
| 9 | + <circle cx="82" cy="48" r="2.9" fill="#201e1d" opacity=".3"/> | |
| 10 | + <rect x="27" y="35.5" width="42" height="10.5" rx="5.25" fill="#c67139"/> | |
| 11 | + <path d="M53.5 35.5 h10.25 a5.25 5.25 0 0 1 0 10.5 h-10.25 z" fill="#7a8a5e"/> | |
| 12 | + <rect x="27" y="50" width="42" height="10.5" rx="5.25" fill="#7a8a5e"/> | |
| 13 | + <path d="M43.5 50 h20.25 a5.25 5.25 0 0 1 0 10.5 h-20.25 z" fill="#c67139"/> | |
| 14 | +</svg> | |
| new file mode 100644 | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="96" height="96" viewBox="0 0 96 96"> | ||
| 2 | + <!-- Ex Ego — « le cadran ex aequo » : un signe égal dans un cadran d'horloge. | ||
| 3 | + Deux traits de longueur égale, partagés terracotta/sauge en proportions | ||
| 4 | + inversées : des contributions différentes, un total égal. --> | ||
| 5 | + <circle cx="48" cy="48" r="44" fill="#f5ead8"/> | ||
| 6 | + <circle cx="48" cy="14" r="2.9" fill="#201e1d" opacity=".55"/> | ||
| 7 | + <circle cx="48" cy="82" r="2.9" fill="#201e1d" opacity=".3"/> | ||
| 8 | + <circle cx="14" cy="48" r="2.9" fill="#201e1d" opacity=".3"/> | ||
| 9 | + <circle cx="82" cy="48" r="2.9" fill="#201e1d" opacity=".3"/> | ||
| 10 | + <rect x="27" y="35.5" width="42" height="10.5" rx="5.25" fill="#c67139"/> | ||
| 11 | + <path d="M53.5 35.5 h10.25 a5.25 5.25 0 0 1 0 10.5 h-10.25 z" fill="#7a8a5e"/> | ||
| 12 | + <rect x="27" y="50" width="42" height="10.5" rx="5.25" fill="#7a8a5e"/> | ||
| 13 | + <path d="M43.5 50 h20.25 a5.25 5.25 0 0 1 0 10.5 h-20.25 z" fill="#c67139"/> | ||
| 14 | +</svg> | ||
modified
docs/screens/connexion.png +0 -0 | Binary files a/docs/screens/connexion.png and b/docs/screens/connexion.png differ |
| Binary files a/docs/screens/connexion.png and b/docs/screens/connexion.png differ | Binary files a/docs/screens/connexion.png and b/docs/screens/connexion.png differ |
modified
templates/login.html +12 -3 | @@ -3,9 +3,18 @@ | ||
| 3 | 3 | {% block lang %}{{ lang_code }}{% endblock %} |
| 4 | 4 | {% block body %} |
| 5 | 5 | <main class="login"> |
| 6 | - <div class="login-icon"> | |
| 7 | - <svg width="34" height="34" viewBox="0 0 24 24" fill="none" stroke="#f5ead8" stroke-width="2.75" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"></circle><path d="M12 7v5l3 2"></path></svg> | |
| 8 | - </div> | |
| 6 | + {# Logo « cadran ex aequo » — disque surface (fond crème du login). #} | |
| 7 | + <svg class="login-logo" width="72" height="72" viewBox="0 0 96 96" aria-hidden="true"> | |
| 8 | + <circle cx="48" cy="48" r="44" fill="#ebddc5"/> | |
| 9 | + <circle cx="48" cy="14" r="2.9" fill="#201e1d" opacity=".55"/> | |
| 10 | + <circle cx="48" cy="82" r="2.9" fill="#201e1d" opacity=".3"/> | |
| 11 | + <circle cx="14" cy="48" r="2.9" fill="#201e1d" opacity=".3"/> | |
| 12 | + <circle cx="82" cy="48" r="2.9" fill="#201e1d" opacity=".3"/> | |
| 13 | + <rect x="27" y="35.5" width="42" height="10.5" rx="5.25" fill="#c67139"/> | |
| 14 | + <path d="M53.5 35.5 h10.25 a5.25 5.25 0 0 1 0 10.5 h-10.25 z" fill="#7a8a5e"/> | |
| 15 | + <rect x="27" y="50" width="42" height="10.5" rx="5.25" fill="#7a8a5e"/> | |
| 16 | + <path d="M43.5 50 h20.25 a5.25 5.25 0 0 1 0 10.5 h-20.25 z" fill="#c67139"/> | |
| 17 | + </svg> | |
| 9 | 18 | <h1>Ex Ego</h1> |
| 10 | 19 | <p class="tagline">{{ tr.tagline }}</p> |
| 11 | 20 | <form method="post" action="/login"> |
| @@ -3,9 +3,18 @@ | |||
| 3 | {% block lang %}{{ lang_code }}{% endblock %} | 3 | {% block lang %}{{ lang_code }}{% endblock %} |
| 4 | {% block body %} | 4 | {% block body %} |
| 5 | <main class="login"> | 5 | <main class="login"> |
| 6 | - <div class="login-icon"> | 6 | + {# Logo « cadran ex aequo » — disque surface (fond crème du login). #} |
| 7 | - <svg width="34" height="34" viewBox="0 0 24 24" fill="none" stroke="#f5ead8" stroke-width="2.75" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"></circle><path d="M12 7v5l3 2"></path></svg> | 7 | + <svg class="login-logo" width="72" height="72" viewBox="0 0 96 96" aria-hidden="true"> |
| 8 | - </div> | 8 | + <circle cx="48" cy="48" r="44" fill="#ebddc5"/> |
| 9 | + <circle cx="48" cy="14" r="2.9" fill="#201e1d" opacity=".55"/> | ||
| 10 | + <circle cx="48" cy="82" r="2.9" fill="#201e1d" opacity=".3"/> | ||
| 11 | + <circle cx="14" cy="48" r="2.9" fill="#201e1d" opacity=".3"/> | ||
| 12 | + <circle cx="82" cy="48" r="2.9" fill="#201e1d" opacity=".3"/> | ||
| 13 | + <rect x="27" y="35.5" width="42" height="10.5" rx="5.25" fill="#c67139"/> | ||
| 14 | + <path d="M53.5 35.5 h10.25 a5.25 5.25 0 0 1 0 10.5 h-10.25 z" fill="#7a8a5e"/> | ||
| 15 | + <rect x="27" y="50" width="42" height="10.5" rx="5.25" fill="#7a8a5e"/> | ||
| 16 | + <path d="M43.5 50 h20.25 a5.25 5.25 0 0 1 0 10.5 h-20.25 z" fill="#c67139"/> | ||
| 17 | + </svg> | ||
| 9 | <h1>Ex Ego</h1> | 18 | <h1>Ex Ego</h1> |
| 10 | <p class="tagline">{{ tr.tagline }}</p> | 19 | <p class="tagline">{{ tr.tagline }}</p> |
| 11 | <form method="post" action="/login"> | 20 | <form method="post" action="/login"> |