refactor(templates): motifs inline récurrents en classes, reliquats px en remUnverified
Les styles inline répétés des templates deviennent des classes dans style.css : .section-title (h2 de section), .hint / .hint-sm (textes atténués), .option-title / .option-sub (lignes des sélecteurs équipe, thème, graphiques), .link-title / .link-sub (cartes-liens de Réglages), .btn-lg / .btn-xl (boutons de validation), .field-lg (champs 18px de login et inscription). Les font-size inline restants passent en rem ; les min-height de cibles tactiles restent en px (WCAG 2.5.8). Audit axe (16 écrans) : aucune violation critical/serious.
8a09936 parent: dbea23f modified
assets/style.css +12 -0 | @@ -161,12 +161,24 @@ input[type=number] { -moz-appearance: textfield; appearance: textfield; } | ||
| 161 | 161 | .btn-icon { width: 36px; height: 36px; padding: 0; } |
| 162 | 162 | .btn-icon-sm { width: 32px; height: 32px; padding: 0; } |
| 163 | 163 | .btn-block { width: 100%; margin-top: var(--space-2); } |
| 164 | +.btn-lg { min-height: 52px; font-size: 1rem; } | |
| 165 | +.btn-xl { min-height: 56px; font-size: 1.25rem; } | |
| 166 | + | |
| 167 | +/* — typo utilitaire (ex-styles inline) — */ | |
| 168 | +.section-title { font-size: 1rem; margin: var(--space-8) 0 var(--space-2); } | |
| 169 | +.hint { font-size: 0.8125rem; opacity: .7; margin: 0 0 var(--space-3); } | |
| 170 | +.hint-sm { font-size: 0.75rem; opacity: .7; } | |
| 171 | +.option-title { display: block; font-size: 1rem; } | |
| 172 | +.option-sub { display: block; font-size: 0.75rem; opacity: .75; } | |
| 173 | +.link-title { display: block; font-family: var(--font-heading); font-size: 1.0625rem; } | |
| 174 | +.link-sub { display: block; font-size: 0.8125rem; opacity: .7; } | |
| 164 | 175 | |
| 165 | 176 | /* — formulaires — */ |
| 166 | 177 | .field > label { |
| 167 | 178 | display: block; font-size: 0.75rem; margin-bottom: 5px; |
| 168 | 179 | color: color-mix(in srgb, var(--color-text) 70%, transparent); |
| 169 | 180 | } |
| 181 | +.field-lg > label, .field-lg .input { font-size: 1.125rem; } | |
| 170 | 182 | .input { |
| 171 | 183 | width: 100%; min-height: 36px; padding: 6px 14px; font: inherit; |
| 172 | 184 | font-size: 0.875rem; color: var(--color-text); caret-color: var(--color-accent); |
| @@ -161,12 +161,24 @@ input[type=number] { -moz-appearance: textfield; appearance: textfield; } | |||
| 161 | .btn-icon { width: 36px; height: 36px; padding: 0; } | 161 | .btn-icon { width: 36px; height: 36px; padding: 0; } |
| 162 | .btn-icon-sm { width: 32px; height: 32px; padding: 0; } | 162 | .btn-icon-sm { width: 32px; height: 32px; padding: 0; } |
| 163 | .btn-block { width: 100%; margin-top: var(--space-2); } | 163 | .btn-block { width: 100%; margin-top: var(--space-2); } |
| 164 | +.btn-lg { min-height: 52px; font-size: 1rem; } | ||
| 165 | +.btn-xl { min-height: 56px; font-size: 1.25rem; } | ||
| 166 | + | ||
| 167 | +/* — typo utilitaire (ex-styles inline) — */ | ||
| 168 | +.section-title { font-size: 1rem; margin: var(--space-8) 0 var(--space-2); } | ||
| 169 | +.hint { font-size: 0.8125rem; opacity: .7; margin: 0 0 var(--space-3); } | ||
| 170 | +.hint-sm { font-size: 0.75rem; opacity: .7; } | ||
| 171 | +.option-title { display: block; font-size: 1rem; } | ||
| 172 | +.option-sub { display: block; font-size: 0.75rem; opacity: .75; } | ||
| 173 | +.link-title { display: block; font-family: var(--font-heading); font-size: 1.0625rem; } | ||
| 174 | +.link-sub { display: block; font-size: 0.8125rem; opacity: .7; } | ||
| 164 | 175 | ||
| 165 | /* — formulaires — */ | 176 | /* — formulaires — */ |
| 166 | .field > label { | 177 | .field > label { |
| 167 | display: block; font-size: 0.75rem; margin-bottom: 5px; | 178 | display: block; font-size: 0.75rem; margin-bottom: 5px; |
| 168 | color: color-mix(in srgb, var(--color-text) 70%, transparent); | 179 | color: color-mix(in srgb, var(--color-text) 70%, transparent); |
| 169 | } | 180 | } |
| 181 | +.field-lg > label, .field-lg .input { font-size: 1.125rem; } | ||
| 170 | .input { | 182 | .input { |
| 171 | width: 100%; min-height: 36px; padding: 6px 14px; font: inherit; | 183 | width: 100%; min-height: 36px; padding: 6px 14px; font: inherit; |
| 172 | font-size: 0.875rem; color: var(--color-text); caret-color: var(--color-accent); | 184 | font-size: 0.875rem; color: var(--color-text); caret-color: var(--color-accent); |
modified
templates/add_step1.html +1 -1 | @@ -9,7 +9,7 @@ | ||
| 9 | 9 | {% if m.warning %}<p class="warn">{{ shell.tr.forgot_timer }}</p>{% endif %} |
| 10 | 10 | <form method="post" action="/timer/annuler" style="margin:var(--space-2) 0 0"> |
| 11 | 11 | <input type="hidden" name="csrf" value="{{ shell.csrf }}"> |
| 12 | - <button type="submit" class="btn btn-ghost" style="font-size:13px;padding-left:0;color:var(--color-accent-900)">{{ shell.tr.cancel_measured }}</button> | |
| 12 | + <button type="submit" class="btn btn-ghost" style="font-size:0.8125rem;padding-left:0;color:var(--color-accent-900)">{{ shell.tr.cancel_measured }}</button> | |
| 13 | 13 | </form> |
| 14 | 14 | </div> |
| 15 | 15 | {% endif %} |
| @@ -9,7 +9,7 @@ | |||
| 9 | {% if m.warning %}<p class="warn">{{ shell.tr.forgot_timer }}</p>{% endif %} | 9 | {% if m.warning %}<p class="warn">{{ shell.tr.forgot_timer }}</p>{% endif %} |
| 10 | <form method="post" action="/timer/annuler" style="margin:var(--space-2) 0 0"> | 10 | <form method="post" action="/timer/annuler" style="margin:var(--space-2) 0 0"> |
| 11 | <input type="hidden" name="csrf" value="{{ shell.csrf }}"> | 11 | <input type="hidden" name="csrf" value="{{ shell.csrf }}"> |
| 12 | - <button type="submit" class="btn btn-ghost" style="font-size:13px;padding-left:0;color:var(--color-accent-900)">{{ shell.tr.cancel_measured }}</button> | 12 | + <button type="submit" class="btn btn-ghost" style="font-size:0.8125rem;padding-left:0;color:var(--color-accent-900)">{{ shell.tr.cancel_measured }}</button> |
| 13 | </form> | 13 | </form> |
| 14 | </div> | 14 | </div> |
| 15 | {% endif %} | 15 | {% endif %} |
modified
templates/add_step2.html +1 -1 | @@ -28,6 +28,6 @@ | ||
| 28 | 28 | {% call c::date_row(shell, "date", "date", date, "", "", day_prev, day_next, false) %}{% endcall %} |
| 29 | 29 | <p class="date-label">{{ date_label }}</p> |
| 30 | 30 | |
| 31 | - <button type="submit" class="btn btn-primary btn-block" style="min-height:52px;font-size:16px">{{ shell.tr.title_add }}</button> | |
| 31 | + <button type="submit" class="btn btn-primary btn-block btn-lg">{{ shell.tr.title_add }}</button> | |
| 32 | 32 | </form> |
| 33 | 33 | {% endblock %} |
| @@ -28,6 +28,6 @@ | |||
| 28 | {% call c::date_row(shell, "date", "date", date, "", "", day_prev, day_next, false) %}{% endcall %} | 28 | {% call c::date_row(shell, "date", "date", date, "", "", day_prev, day_next, false) %}{% endcall %} |
| 29 | <p class="date-label">{{ date_label }}</p> | 29 | <p class="date-label">{{ date_label }}</p> |
| 30 | 30 | ||
| 31 | - <button type="submit" class="btn btn-primary btn-block" style="min-height:52px;font-size:16px">{{ shell.tr.title_add }}</button> | 31 | + <button type="submit" class="btn btn-primary btn-block btn-lg">{{ shell.tr.title_add }}</button> |
| 32 | </form> | 32 | </form> |
| 33 | {% endblock %} | 33 | {% endblock %} |
modified
templates/app.html +2 -2 | @@ -72,8 +72,8 @@ | ||
| 72 | 72 | <button type="submit" class="team-choice{% if t.current %} current{% endif %}"> |
| 73 | 73 | <span class="team-dot" style="background:{{ t.color }}"></span> |
| 74 | 74 | <span style="flex:1;text-align:left"> |
| 75 | - <span style="display:block;font-size:16px">{{ t.name }}</span> | |
| 76 | - <span style="display:block;font-size:12px;opacity:.7">{{ t.meta }}</span> | |
| 75 | + <span class="option-title">{{ t.name }}</span> | |
| 76 | + <span class="option-sub">{{ t.meta }}</span> | |
| 77 | 77 | </span> |
| 78 | 78 | {% if t.current %}<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"></path></svg>{% endif %} |
| 79 | 79 | </button> |
| @@ -72,8 +72,8 @@ | |||
| 72 | <button type="submit" class="team-choice{% if t.current %} current{% endif %}"> | 72 | <button type="submit" class="team-choice{% if t.current %} current{% endif %}"> |
| 73 | <span class="team-dot" style="background:{{ t.color }}"></span> | 73 | <span class="team-dot" style="background:{{ t.color }}"></span> |
| 74 | <span style="flex:1;text-align:left"> | 74 | <span style="flex:1;text-align:left"> |
| 75 | - <span style="display:block;font-size:16px">{{ t.name }}</span> | 75 | + <span class="option-title">{{ t.name }}</span> |
| 76 | - <span style="display:block;font-size:12px;opacity:.7">{{ t.meta }}</span> | 76 | + <span class="option-sub">{{ t.meta }}</span> |
| 77 | </span> | 77 | </span> |
| 78 | {% if t.current %}<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"></path></svg>{% endif %} | 78 | {% if t.current %}<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"></path></svg>{% endif %} |
| 79 | </button> | 79 | </button> |
modified
templates/categories.html +2 -2 | @@ -20,7 +20,7 @@ | ||
| 20 | 20 | <input type="hidden" name="csrf" value="{{ csrf }}"> |
| 21 | 21 | {% if t.archived %} |
| 22 | 22 | <input type="hidden" name="restaure" value="1"> |
| 23 | - <button type="submit" class="btn btn-ghost" style="font-size:12px">{{ shell.tr.restore }}</button> | |
| 23 | + <button type="submit" class="btn btn-ghost" style="font-size:0.75rem">{{ shell.tr.restore }}</button> | |
| 24 | 24 | {% else %} |
| 25 | 25 | <button type="submit" class="btn btn-secondary btn-icon-sm" aria-label="{{ shell.tr.archive_aria }}"> |
| 26 | 26 | <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.75" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="4" rx="1"></rect><path d="M5 8v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V8"></path><path d="M10 12h4"></path></svg> |
| @@ -29,7 +29,7 @@ | ||
| 29 | 29 | </form> |
| 30 | 30 | </div> |
| 31 | 31 | {% endfor %} |
| 32 | -<p class="text-muted" style="font-size:12px;margin-top:var(--space-3)">{{ shell.tr.rename_help }}</p> | |
| 32 | +<p class="text-muted" style="font-size:0.75rem;margin-top:var(--space-3)">{{ shell.tr.rename_help }}</p> | |
| 33 | 33 | |
| 34 | 34 | <h2 class="groups-title">{{ shell.tr.groups_title }}</h2> |
| 35 | 35 | <p class="groups-hint">{{ shell.tr.groups_hint }}</p> |
| @@ -20,7 +20,7 @@ | |||
| 20 | <input type="hidden" name="csrf" value="{{ csrf }}"> | 20 | <input type="hidden" name="csrf" value="{{ csrf }}"> |
| 21 | {% if t.archived %} | 21 | {% if t.archived %} |
| 22 | <input type="hidden" name="restaure" value="1"> | 22 | <input type="hidden" name="restaure" value="1"> |
| 23 | - <button type="submit" class="btn btn-ghost" style="font-size:12px">{{ shell.tr.restore }}</button> | 23 | + <button type="submit" class="btn btn-ghost" style="font-size:0.75rem">{{ shell.tr.restore }}</button> |
| 24 | {% else %} | 24 | {% else %} |
| 25 | <button type="submit" class="btn btn-secondary btn-icon-sm" aria-label="{{ shell.tr.archive_aria }}"> | 25 | <button type="submit" class="btn btn-secondary btn-icon-sm" aria-label="{{ shell.tr.archive_aria }}"> |
| 26 | <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.75" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="4" rx="1"></rect><path d="M5 8v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V8"></path><path d="M10 12h4"></path></svg> | 26 | <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.75" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="4" rx="1"></rect><path d="M5 8v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V8"></path><path d="M10 12h4"></path></svg> |
| @@ -29,7 +29,7 @@ | |||
| 29 | </form> | 29 | </form> |
| 30 | </div> | 30 | </div> |
| 31 | {% endfor %} | 31 | {% endfor %} |
| 32 | -<p class="text-muted" style="font-size:12px;margin-top:var(--space-3)">{{ shell.tr.rename_help }}</p> | 32 | +<p class="text-muted" style="font-size:0.75rem;margin-top:var(--space-3)">{{ shell.tr.rename_help }}</p> |
| 33 | 33 | ||
| 34 | <h2 class="groups-title">{{ shell.tr.groups_title }}</h2> | 34 | <h2 class="groups-title">{{ shell.tr.groups_title }}</h2> |
| 35 | <p class="groups-hint">{{ shell.tr.groups_hint }}</p> | 35 | <p class="groups-hint">{{ shell.tr.groups_hint }}</p> |
modified
templates/login.html +7 -10 | @@ -19,22 +19,19 @@ | ||
| 19 | 19 | <h1>Ex Ego</h1> |
| 20 | 20 | <p class="tagline">{{ tr.tagline }}</p> |
| 21 | 21 | <form method="post" action="/login"> |
| 22 | - <div class="field" style="margin-bottom:var(--space-3)"> | |
| 23 | - <label for="username" style="font-size:18px">{{ tr.username_label }}</label> | |
| 22 | + <div class="field field-lg" style="margin-bottom:var(--space-3)"> | |
| 23 | + <label for="username">{{ tr.username_label }}</label> | |
| 24 | 24 | {# « webauthn » dans autocomplete : le navigateur/1Password propose la |
| 25 | 25 | passkey directement dans le champ (conditional UI). #} |
| 26 | 26 | <input class="input" id="username" name="username" autocomplete="username webauthn" |
| 27 | - autocapitalize="none" autocorrect="off" required autofocus | |
| 28 | - style="font-size: 18px"> | |
| 27 | + autocapitalize="none" autocorrect="off" required autofocus> | |
| 29 | 28 | </div> |
| 30 | - <div class="field" style="margin-bottom:var(--space-4)"> | |
| 31 | - <label for="password" style="font-size:18px">{{ tr.password_label }}</label> | |
| 32 | - <input class="input" id="password" name="password" type="password" autocomplete="current-password" required | |
| 33 | - style="font-size: 18px"> | |
| 29 | + <div class="field field-lg" style="margin-bottom:var(--space-4)"> | |
| 30 | + <label for="password">{{ tr.password_label }}</label> | |
| 31 | + <input class="input" id="password" name="password" type="password" autocomplete="current-password" required> | |
| 34 | 32 | </div> |
| 35 | 33 | {% if let Some(e) = error %}<p class="form-error">{{ e }}</p>{% endif %} |
| 36 | - <button type="submit" class="btn btn-primary btn-block" | |
| 37 | - style="min-height:56px;font-size:20px">{{ tr.sign_in }}</button> | |
| 34 | + <button type="submit" class="btn btn-primary btn-block btn-xl">{{ tr.sign_in }}</button> | |
| 38 | 35 | </form> |
| 39 | 36 | {% if webauthn %} |
| 40 | 37 | <button type="button" class="btn btn-secondary btn-block" id="passkey-login" hidden |
| @@ -19,22 +19,19 @@ | |||
| 19 | <h1>Ex Ego</h1> | 19 | <h1>Ex Ego</h1> |
| 20 | <p class="tagline">{{ tr.tagline }}</p> | 20 | <p class="tagline">{{ tr.tagline }}</p> |
| 21 | <form method="post" action="/login"> | 21 | <form method="post" action="/login"> |
| 22 | - <div class="field" style="margin-bottom:var(--space-3)"> | 22 | + <div class="field field-lg" style="margin-bottom:var(--space-3)"> |
| 23 | - <label for="username" style="font-size:18px">{{ tr.username_label }}</label> | 23 | + <label for="username">{{ tr.username_label }}</label> |
| 24 | {# « webauthn » dans autocomplete : le navigateur/1Password propose la | 24 | {# « webauthn » dans autocomplete : le navigateur/1Password propose la |
| 25 | passkey directement dans le champ (conditional UI). #} | 25 | passkey directement dans le champ (conditional UI). #} |
| 26 | <input class="input" id="username" name="username" autocomplete="username webauthn" | 26 | <input class="input" id="username" name="username" autocomplete="username webauthn" |
| 27 | - autocapitalize="none" autocorrect="off" required autofocus | 27 | + autocapitalize="none" autocorrect="off" required autofocus> |
| 28 | - style="font-size: 18px"> | ||
| 29 | </div> | 28 | </div> |
| 30 | - <div class="field" style="margin-bottom:var(--space-4)"> | 29 | + <div class="field field-lg" style="margin-bottom:var(--space-4)"> |
| 31 | - <label for="password" style="font-size:18px">{{ tr.password_label }}</label> | 30 | + <label for="password">{{ tr.password_label }}</label> |
| 32 | - <input class="input" id="password" name="password" type="password" autocomplete="current-password" required | 31 | + <input class="input" id="password" name="password" type="password" autocomplete="current-password" required> |
| 33 | - style="font-size: 18px"> | ||
| 34 | </div> | 32 | </div> |
| 35 | {% if let Some(e) = error %}<p class="form-error">{{ e }}</p>{% endif %} | 33 | {% if let Some(e) = error %}<p class="form-error">{{ e }}</p>{% endif %} |
| 36 | - <button type="submit" class="btn btn-primary btn-block" | 34 | + <button type="submit" class="btn btn-primary btn-block btn-xl">{{ tr.sign_in }}</button> |
| 37 | - style="min-height:56px;font-size:20px">{{ tr.sign_in }}</button> | ||
| 38 | </form> | 35 | </form> |
| 39 | {% if webauthn %} | 36 | {% if webauthn %} |
| 40 | <button type="button" class="btn btn-secondary btn-block" id="passkey-login" hidden | 37 | <button type="button" class="btn btn-secondary btn-block" id="passkey-login" hidden |
modified
templates/security.html +6 -6 | @@ -3,8 +3,8 @@ | ||
| 3 | 3 | <p class="step-hint">{{ shell.tr.security_hint }}</p> |
| 4 | 4 | |
| 5 | 5 | {% if webauthn || !keys.is_empty() %} |
| 6 | -<h2 style="font-size:16px;margin:0 0 var(--space-2)">{{ shell.tr.passkeys_title }}</h2> | |
| 7 | -<p style="font-size:13px;opacity:.7;margin:0 0 var(--space-3)">{{ shell.tr.passkeys_hint }}</p> | |
| 6 | +<h2 class="section-title" style="margin-top:0">{{ shell.tr.passkeys_title }}</h2> | |
| 7 | +<p class="hint">{{ shell.tr.passkeys_hint }}</p> | |
| 8 | 8 | {% if !webauthn %} |
| 9 | 9 | <p class="form-error" style="margin:0 0 var(--space-3)">{{ shell.tr.passkey_disabled_note }}</p> |
| 10 | 10 | {% endif %} |
| @@ -17,10 +17,10 @@ | ||
| 17 | 17 | {# tabindex=-1 : la soumission clavier passe par Entrée dans l'input (cf. categories.html). #} |
| 18 | 18 | <button type="submit" class="visually-hidden" tabindex="-1">{{ shell.tr.rename }}</button> |
| 19 | 19 | </form> |
| 20 | - <span class="text-muted" style="font-size:12px;white-space:nowrap">{{ k.created }}</span> | |
| 20 | + <span class="text-muted" style="font-size:0.75rem;white-space:nowrap">{{ k.created }}</span> | |
| 21 | 21 | </div> |
| 22 | 22 | <details style="margin:0 0 var(--space-3)"> |
| 23 | - <summary class="btn btn-ghost" style="font-size:12px">{{ shell.tr.passkey_delete }}</summary> | |
| 23 | + <summary class="btn btn-ghost" style="font-size:0.75rem">{{ shell.tr.passkey_delete }}</summary> | |
| 24 | 24 | <form method="post" action="{{ k.delete_action }}" style="display:flex;gap:var(--space-2);align-items:center;margin-top:var(--space-2)"> |
| 25 | 25 | <input type="hidden" name="csrf" value="{{ csrf }}"> |
| 26 | 26 | <input class="input" name="mdp" type="password" autocomplete="current-password" required |
| @@ -32,7 +32,7 @@ | ||
| 32 | 32 | </details> |
| 33 | 33 | {% endfor %} |
| 34 | 34 | {% if keys.is_empty() && webauthn %} |
| 35 | -<p class="text-muted" style="font-size:13px;margin:0 0 var(--space-3)">{{ shell.tr.passkey_none }}</p> | |
| 35 | +<p class="text-muted" style="font-size:0.8125rem;margin:0 0 var(--space-3)">{{ shell.tr.passkey_none }}</p> | |
| 36 | 36 | {% endif %} |
| 37 | 37 | |
| 38 | 38 | {% if webauthn %} |
| @@ -101,7 +101,7 @@ | ||
| 101 | 101 | {% endif %} |
| 102 | 102 | {% endif %} |
| 103 | 103 | |
| 104 | -<h2 style="font-size:16px;margin:var(--space-8) 0 var(--space-3)">{{ shell.tr.session }}</h2> | |
| 104 | +<h2 class="section-title" style="margin-bottom:var(--space-3)">{{ shell.tr.session }}</h2> | |
| 105 | 105 | <form method="post" action="/parametres/mot-de-passe"> |
| 106 | 106 | <input type="hidden" name="csrf" value="{{ csrf }}"> |
| 107 | 107 | <div class="field" style="margin-bottom:var(--space-3)"> |
| @@ -3,8 +3,8 @@ | |||
| 3 | <p class="step-hint">{{ shell.tr.security_hint }}</p> | 3 | <p class="step-hint">{{ shell.tr.security_hint }}</p> |
| 4 | 4 | ||
| 5 | {% if webauthn || !keys.is_empty() %} | 5 | {% if webauthn || !keys.is_empty() %} |
| 6 | -<h2 style="font-size:16px;margin:0 0 var(--space-2)">{{ shell.tr.passkeys_title }}</h2> | 6 | +<h2 class="section-title" style="margin-top:0">{{ shell.tr.passkeys_title }}</h2> |
| 7 | -<p style="font-size:13px;opacity:.7;margin:0 0 var(--space-3)">{{ shell.tr.passkeys_hint }}</p> | 7 | +<p class="hint">{{ shell.tr.passkeys_hint }}</p> |
| 8 | {% if !webauthn %} | 8 | {% if !webauthn %} |
| 9 | <p class="form-error" style="margin:0 0 var(--space-3)">{{ shell.tr.passkey_disabled_note }}</p> | 9 | <p class="form-error" style="margin:0 0 var(--space-3)">{{ shell.tr.passkey_disabled_note }}</p> |
| 10 | {% endif %} | 10 | {% endif %} |
| @@ -17,10 +17,10 @@ | |||
| 17 | {# tabindex=-1 : la soumission clavier passe par Entrée dans l'input (cf. categories.html). #} | 17 | {# tabindex=-1 : la soumission clavier passe par Entrée dans l'input (cf. categories.html). #} |
| 18 | <button type="submit" class="visually-hidden" tabindex="-1">{{ shell.tr.rename }}</button> | 18 | <button type="submit" class="visually-hidden" tabindex="-1">{{ shell.tr.rename }}</button> |
| 19 | </form> | 19 | </form> |
| 20 | - <span class="text-muted" style="font-size:12px;white-space:nowrap">{{ k.created }}</span> | 20 | + <span class="text-muted" style="font-size:0.75rem;white-space:nowrap">{{ k.created }}</span> |
| 21 | </div> | 21 | </div> |
| 22 | <details style="margin:0 0 var(--space-3)"> | 22 | <details style="margin:0 0 var(--space-3)"> |
| 23 | - <summary class="btn btn-ghost" style="font-size:12px">{{ shell.tr.passkey_delete }}</summary> | 23 | + <summary class="btn btn-ghost" style="font-size:0.75rem">{{ shell.tr.passkey_delete }}</summary> |
| 24 | <form method="post" action="{{ k.delete_action }}" style="display:flex;gap:var(--space-2);align-items:center;margin-top:var(--space-2)"> | 24 | <form method="post" action="{{ k.delete_action }}" style="display:flex;gap:var(--space-2);align-items:center;margin-top:var(--space-2)"> |
| 25 | <input type="hidden" name="csrf" value="{{ csrf }}"> | 25 | <input type="hidden" name="csrf" value="{{ csrf }}"> |
| 26 | <input class="input" name="mdp" type="password" autocomplete="current-password" required | 26 | <input class="input" name="mdp" type="password" autocomplete="current-password" required |
| @@ -32,7 +32,7 @@ | |||
| 32 | </details> | 32 | </details> |
| 33 | {% endfor %} | 33 | {% endfor %} |
| 34 | {% if keys.is_empty() && webauthn %} | 34 | {% if keys.is_empty() && webauthn %} |
| 35 | -<p class="text-muted" style="font-size:13px;margin:0 0 var(--space-3)">{{ shell.tr.passkey_none }}</p> | 35 | +<p class="text-muted" style="font-size:0.8125rem;margin:0 0 var(--space-3)">{{ shell.tr.passkey_none }}</p> |
| 36 | {% endif %} | 36 | {% endif %} |
| 37 | 37 | ||
| 38 | {% if webauthn %} | 38 | {% if webauthn %} |
| @@ -101,7 +101,7 @@ | |||
| 101 | {% endif %} | 101 | {% endif %} |
| 102 | {% endif %} | 102 | {% endif %} |
| 103 | 103 | ||
| 104 | -<h2 style="font-size:16px;margin:var(--space-8) 0 var(--space-3)">{{ shell.tr.session }}</h2> | 104 | +<h2 class="section-title" style="margin-bottom:var(--space-3)">{{ shell.tr.session }}</h2> |
| 105 | <form method="post" action="/parametres/mot-de-passe"> | 105 | <form method="post" action="/parametres/mot-de-passe"> |
| 106 | <input type="hidden" name="csrf" value="{{ csrf }}"> | 106 | <input type="hidden" name="csrf" value="{{ csrf }}"> |
| 107 | <div class="field" style="margin-bottom:var(--space-3)"> | 107 | <div class="field" style="margin-bottom:var(--space-3)"> |
modified
templates/settings.html +33 -33 | @@ -24,34 +24,34 @@ | ||
| 24 | 24 | |
| 25 | 25 | <div class="card" style="margin-bottom:var(--space-3)"> |
| 26 | 26 | <div class="card-kicker">{{ shell.tr.account_kicker }}</div> |
| 27 | - <div style="font-size:19px;font-family:var(--font-heading)">{{ shell.username }}</div> | |
| 27 | + <div style="font-size:1.1875rem;font-family:var(--font-heading)">{{ shell.username }}</div> | |
| 28 | 28 | <p class="card-body">{{ account_line }}</p> |
| 29 | 29 | {# Pas .card-body : son opacité 0.8 délaverait le lien sous 4.5:1 (axe). #} |
| 30 | - <p style="margin:var(--space-2) 0 0;font-size:13px">{{ shell.tr.feedback_title }} | |
| 30 | + <p style="margin:var(--space-2) 0 0;font-size:0.8125rem">{{ shell.tr.feedback_title }} | |
| 31 | 31 | <a href="{{ feedback_href }}" target="_blank" rel="noopener">{{ shell.tr.feedback_link }} ↗</a></p> |
| 32 | - <p style="font-size:11px;opacity:.7;margin:var(--space-1) 0 0">{{ version_line }}</p> | |
| 32 | + <p style="font-size:0.6875rem;opacity:.7;margin:var(--space-1) 0 0">{{ version_line }}</p> | |
| 33 | 33 | </div> |
| 34 | 34 | |
| 35 | 35 | <a class="card times-link" href="/temps" style="margin-bottom:var(--space-3)"> |
| 36 | 36 | <span style="flex:1"> |
| 37 | - <span style="display:block;font-family:var(--font-heading);font-size:17px">{{ shell.tr.my_entries }}</span> | |
| 38 | - <span style="display:block;font-size:13px;opacity:.7">{{ shell.tr.my_entries_desc }}</span> | |
| 37 | + <span class="link-title">{{ shell.tr.my_entries }}</span> | |
| 38 | + <span class="link-sub">{{ shell.tr.my_entries_desc }}</span> | |
| 39 | 39 | </span> |
| 40 | 40 | {% call c::chevron_right(17) %}{% endcall %} |
| 41 | 41 | </a> |
| 42 | 42 | |
| 43 | 43 | <a class="card times-link" href="/parametres/categories" style="margin-bottom:var(--space-3)"> |
| 44 | 44 | <span style="flex:1"> |
| 45 | - <span style="display:block;font-family:var(--font-heading);font-size:17px">{{ shell.tr.title_categories }}</span> | |
| 46 | - <span style="display:block;font-size:13px;opacity:.7">{{ shell.tr.manage_categories_desc }}</span> | |
| 45 | + <span class="link-title">{{ shell.tr.title_categories }}</span> | |
| 46 | + <span class="link-sub">{{ shell.tr.manage_categories_desc }}</span> | |
| 47 | 47 | </span> |
| 48 | 48 | {% call c::chevron_right(17) %}{% endcall %} |
| 49 | 49 | </a> |
| 50 | 50 | |
| 51 | 51 | <a class="card times-link" href="/parametres/securite" style="margin-bottom:var(--space-6)"> |
| 52 | 52 | <span style="flex:1"> |
| 53 | - <span style="display:block;font-family:var(--font-heading);font-size:17px">{{ shell.tr.title_security }}</span> | |
| 54 | - <span style="display:block;font-size:13px;opacity:.7">{{ shell.tr.security_card_desc }}</span> | |
| 53 | + <span class="link-title">{{ shell.tr.title_security }}</span> | |
| 54 | + <span class="link-sub">{{ shell.tr.security_card_desc }}</span> | |
| 55 | 55 | </span> |
| 56 | 56 | {% call c::chevron_right(17) %}{% endcall %} |
| 57 | 57 | </a> |
| @@ -66,9 +66,9 @@ | ||
| 66 | 66 | </div> |
| 67 | 67 | </div> |
| 68 | 68 | </form> |
| 69 | -<p style="font-size:12px;opacity:.7;margin:0 0 var(--space-6)">{{ shell.tr.rename_team_note }}</p> | |
| 69 | +<p class="hint-sm" style="margin:0 0 var(--space-6)">{{ shell.tr.rename_team_note }}</p> | |
| 70 | 70 | |
| 71 | -<h2 style="font-size:16px;margin:0 0 var(--space-2)">{{ members_title }}</h2> | |
| 71 | +<h2 class="section-title" style="margin-top:0">{{ members_title }}</h2> | |
| 72 | 72 | <div style="display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)"> |
| 73 | 73 | {% for m in members %}<span class="tag tag-neutral">{{ m }}</span>{% endfor %} |
| 74 | 74 | </div> |
| @@ -84,10 +84,10 @@ | ||
| 84 | 84 | </div> |
| 85 | 85 | </form> |
| 86 | 86 | {% if let Some(e) = invite_error %}<p class="form-error" style="margin:0 0 var(--space-2)">{{ e }}</p>{% endif %} |
| 87 | -<p style="font-size:12px;opacity:.7;margin:0">{{ shell.tr.invite_note }}</p> | |
| 87 | +<p class="hint-sm" style="margin:0">{{ shell.tr.invite_note }}</p> | |
| 88 | 88 | |
| 89 | -<h2 style="font-size:16px;margin:var(--space-6) 0 var(--space-2)">{{ shell.tr.invite_link }}</h2> | |
| 90 | -<p style="font-size:13px;opacity:.7;margin:0 0 var(--space-3)">{{ shell.tr.invite_link_hint }}</p> | |
| 89 | +<h2 class="section-title" style="margin-top:var(--space-6)">{{ shell.tr.invite_link }}</h2> | |
| 90 | +<p class="hint">{{ shell.tr.invite_link_hint }}</p> | |
| 91 | 91 | {% if let Some(lien) = invite_link %} |
| 92 | 92 | <div class="field" style="margin-bottom:var(--space-2)"> |
| 93 | 93 | {# Le titre juste au-dessus nomme déjà le champ : aria-label plutôt qu'un |
| @@ -95,7 +95,7 @@ | ||
| 95 | 95 | sélectionnable pour être copié. #} |
| 96 | 96 | <input class="input" id="lien-invit" value="{{ lien }}" readonly |
| 97 | 97 | aria-label="{{ shell.tr.invite_link }}" aria-describedby="lien-aide" |
| 98 | - style="min-height:44px;font-size:13px"> | |
| 98 | + style="min-height:44px;font-size:0.8125rem"> | |
| 99 | 99 | </div> |
| 100 | 100 | <p class="field-hint" id="lien-aide" style="margin-bottom:var(--space-2)">{{ shell.tr.invite_link_ready }}</p> |
| 101 | 101 | {% endif %} |
| @@ -105,22 +105,22 @@ | ||
| 105 | 105 | </form> |
| 106 | 106 | |
| 107 | 107 | {% if !sent.is_empty() %} |
| 108 | -<h2 style="font-size:16px;margin:var(--space-6) 0 var(--space-2)">{{ shell.tr.pending_invites }}</h2> | |
| 108 | +<h2 class="section-title" style="margin-top:var(--space-6)">{{ shell.tr.pending_invites }}</h2> | |
| 109 | 109 | {% for si in sent %} |
| 110 | 110 | <div class="sent-row"> |
| 111 | 111 | <div style="flex:1;min-width:0"> |
| 112 | - <div style="font-size:15px">{{ si.name }}</div> | |
| 113 | - <div style="font-size:12px;opacity:.7">{{ si.meta }}</div> | |
| 112 | + <div style="font-size:0.9375rem">{{ si.name }}</div> | |
| 113 | + <div class="hint-sm">{{ si.meta }}</div> | |
| 114 | 114 | </div> |
| 115 | 115 | <form method="post" action="{{ si.cancel_action }}" style="margin:0"> |
| 116 | 116 | <input type="hidden" name="csrf" value="{{ csrf }}"> |
| 117 | - <button type="submit" class="btn btn-ghost" style="font-size:12px">{{ shell.tr.cancel }}</button> | |
| 117 | + <button type="submit" class="btn btn-ghost" style="font-size:0.75rem">{{ shell.tr.cancel }}</button> | |
| 118 | 118 | </form> |
| 119 | 119 | </div> |
| 120 | 120 | {% endfor %} |
| 121 | 121 | {% endif %} |
| 122 | 122 | |
| 123 | -<h2 style="font-size:16px;margin:var(--space-8) 0 var(--space-2)">{{ shell.tr.create_team }}</h2> | |
| 123 | +<h2 class="section-title">{{ shell.tr.create_team }}</h2> | |
| 124 | 124 | <form method="post" action="/equipes"> |
| 125 | 125 | <input type="hidden" name="csrf" value="{{ csrf }}"> |
| 126 | 126 | <div style="display:flex;gap:var(--space-2)"> |
| @@ -128,7 +128,7 @@ | ||
| 128 | 128 | <button type="submit" class="btn btn-primary" style="min-height:44px">{{ shell.tr.create }}</button> |
| 129 | 129 | </div> |
| 130 | 130 | </form> |
| 131 | -<p style="font-size:12px;opacity:.7;margin:var(--space-2) 0 0">{{ shell.tr.create_team_note }}</p> | |
| 131 | +<p class="hint-sm" style="margin:var(--space-2) 0 0">{{ shell.tr.create_team_note }}</p> | |
| 132 | 132 | |
| 133 | 133 | {% if can_leave %} |
| 134 | 134 | <form method="post" action="/equipes/quitter"> |
| @@ -136,10 +136,10 @@ | ||
| 136 | 136 | <button type="submit" class="btn btn-block" |
| 137 | 137 | style="min-height:46px;margin-top:var(--space-6);color:var(--color-accent-700);border:1px solid var(--color-accent-300)">{{ leave_label }}</button> |
| 138 | 138 | </form> |
| 139 | -<p style="font-size:11px;opacity:.7;margin-top:var(--space-2);text-align:center">{{ shell.tr.leave_note }}</p> | |
| 139 | +<p style="font-size:0.6875rem;opacity:.7;margin-top:var(--space-2);text-align:center">{{ shell.tr.leave_note }}</p> | |
| 140 | 140 | {% endif %} |
| 141 | 141 | |
| 142 | -<h2 style="font-size:16px;margin:var(--space-8) 0 var(--space-2)">{{ shell.tr.language }}</h2> | |
| 142 | +<h2 class="section-title">{{ shell.tr.language }}</h2> | |
| 143 | 143 | <div style="display:flex;gap:var(--space-2);flex-wrap:wrap;margin-bottom:var(--space-2)"> |
| 144 | 144 | {% for l in langs %} |
| 145 | 145 | <form method="post" action="/parametres/langue" style="margin:0"> |
| @@ -152,8 +152,8 @@ | ||
| 152 | 152 | {% endfor %} |
| 153 | 153 | </div> |
| 154 | 154 | |
| 155 | -<h2 style="font-size:16px;margin:var(--space-8) 0 var(--space-2)">{{ shell.tr.display }}</h2> | |
| 156 | -<p style="font-size:13px;opacity:.7;margin:0 0 var(--space-3)">{{ shell.tr.display_hint }}</p> | |
| 155 | +<h2 class="section-title">{{ shell.tr.display }}</h2> | |
| 156 | +<p class="hint">{{ shell.tr.display_hint }}</p> | |
| 157 | 157 | <div style="display:grid;gap:var(--space-2);margin-bottom:var(--space-2)"> |
| 158 | 158 | {% for th in themes %} |
| 159 | 159 | <form method="post" action="/parametres/affichage" style="margin:0"> |
| @@ -162,8 +162,8 @@ | ||
| 162 | 162 | <button type="submit" class="theme-choice{% if th.current %} current{% endif %}" {% if th.current %}aria-current="true"{% endif %}> |
| 163 | 163 | <span class="theme-swatch swatch-{{ th.code }}"></span> |
| 164 | 164 | <span style="flex:1;text-align:left"> |
| 165 | - <span style="display:block;font-size:16px">{{ th.name }}</span> | |
| 166 | - <span style="display:block;font-size:12px;opacity:.75">{{ th.desc }}</span> | |
| 165 | + <span class="option-title">{{ th.name }}</span> | |
| 166 | + <span class="option-sub">{{ th.desc }}</span> | |
| 167 | 167 | </span> |
| 168 | 168 | {% if th.current %}<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"></path></svg>{% endif %} |
| 169 | 169 | </button> |
| @@ -171,8 +171,8 @@ | ||
| 171 | 171 | {% endfor %} |
| 172 | 172 | </div> |
| 173 | 173 | |
| 174 | -<h2 style="font-size:16px;margin:var(--space-8) 0 var(--space-2)">{{ shell.tr.chart_style }}</h2> | |
| 175 | -<p style="font-size:13px;opacity:.7;margin:0 0 var(--space-3)">{{ shell.tr.chart_style_hint }}</p> | |
| 174 | +<h2 class="section-title">{{ shell.tr.chart_style }}</h2> | |
| 175 | +<p class="hint">{{ shell.tr.chart_style_hint }}</p> | |
| 176 | 176 | <div style="display:grid;gap:var(--space-2);margin-bottom:var(--space-2)"> |
| 177 | 177 | {% for cs in chart_styles %} |
| 178 | 178 | <form method="post" action="/parametres/graphiques" style="margin:0"> |
| @@ -187,8 +187,8 @@ | ||
| 187 | 187 | {% endif %} |
| 188 | 188 | </span> |
| 189 | 189 | <span style="flex:1;text-align:left"> |
| 190 | - <span style="display:block;font-size:16px">{{ cs.name }}</span> | |
| 191 | - <span style="display:block;font-size:12px;opacity:.75">{{ cs.desc }}</span> | |
| 190 | + <span class="option-title">{{ cs.name }}</span> | |
| 191 | + <span class="option-sub">{{ cs.desc }}</span> | |
| 192 | 192 | </span> |
| 193 | 193 | {% if cs.current %}<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"></path></svg>{% endif %} |
| 194 | 194 | </button> |
| @@ -196,11 +196,11 @@ | ||
| 196 | 196 | {% endfor %} |
| 197 | 197 | </div> |
| 198 | 198 | |
| 199 | -<h2 style="font-size:16px;margin:var(--space-8) 0 var(--space-3)">{{ shell.tr.session }}</h2> | |
| 199 | +<h2 class="section-title" style="margin-bottom:var(--space-3)">{{ shell.tr.session }}</h2> | |
| 200 | 200 | <form method="post" action="/logout"> |
| 201 | 201 | <input type="hidden" name="csrf" value="{{ csrf }}"> |
| 202 | 202 | <button type="submit" class="btn btn-block" |
| 203 | 203 | style="min-height:46px;margin-top:var(--space-4);color:var(--color-accent-700);border:1px solid var(--color-accent-300)">{{ shell.tr.sign_out }}</button> |
| 204 | 204 | </form> |
| 205 | -<p class="text-muted" style="font-size:11px;margin-top:var(--space-3);text-align:center">{{ shell.tr.signout_note }}</p> | |
| 205 | +<p class="text-muted" style="font-size:0.6875rem;margin-top:var(--space-3);text-align:center">{{ shell.tr.signout_note }}</p> | |
| 206 | 206 | {% endblock %} |
| @@ -24,34 +24,34 @@ | |||
| 24 | 24 | ||
| 25 | <div class="card" style="margin-bottom:var(--space-3)"> | 25 | <div class="card" style="margin-bottom:var(--space-3)"> |
| 26 | <div class="card-kicker">{{ shell.tr.account_kicker }}</div> | 26 | <div class="card-kicker">{{ shell.tr.account_kicker }}</div> |
| 27 | - <div style="font-size:19px;font-family:var(--font-heading)">{{ shell.username }}</div> | 27 | + <div style="font-size:1.1875rem;font-family:var(--font-heading)">{{ shell.username }}</div> |
| 28 | <p class="card-body">{{ account_line }}</p> | 28 | <p class="card-body">{{ account_line }}</p> |
| 29 | {# Pas .card-body : son opacité 0.8 délaverait le lien sous 4.5:1 (axe). #} | 29 | {# Pas .card-body : son opacité 0.8 délaverait le lien sous 4.5:1 (axe). #} |
| 30 | - <p style="margin:var(--space-2) 0 0;font-size:13px">{{ shell.tr.feedback_title }} | 30 | + <p style="margin:var(--space-2) 0 0;font-size:0.8125rem">{{ shell.tr.feedback_title }} |
| 31 | <a href="{{ feedback_href }}" target="_blank" rel="noopener">{{ shell.tr.feedback_link }} ↗</a></p> | 31 | <a href="{{ feedback_href }}" target="_blank" rel="noopener">{{ shell.tr.feedback_link }} ↗</a></p> |
| 32 | - <p style="font-size:11px;opacity:.7;margin:var(--space-1) 0 0">{{ version_line }}</p> | 32 | + <p style="font-size:0.6875rem;opacity:.7;margin:var(--space-1) 0 0">{{ version_line }}</p> |
| 33 | </div> | 33 | </div> |
| 34 | 34 | ||
| 35 | <a class="card times-link" href="/temps" style="margin-bottom:var(--space-3)"> | 35 | <a class="card times-link" href="/temps" style="margin-bottom:var(--space-3)"> |
| 36 | <span style="flex:1"> | 36 | <span style="flex:1"> |
| 37 | - <span style="display:block;font-family:var(--font-heading);font-size:17px">{{ shell.tr.my_entries }}</span> | 37 | + <span class="link-title">{{ shell.tr.my_entries }}</span> |
| 38 | - <span style="display:block;font-size:13px;opacity:.7">{{ shell.tr.my_entries_desc }}</span> | 38 | + <span class="link-sub">{{ shell.tr.my_entries_desc }}</span> |
| 39 | </span> | 39 | </span> |
| 40 | {% call c::chevron_right(17) %}{% endcall %} | 40 | {% call c::chevron_right(17) %}{% endcall %} |
| 41 | </a> | 41 | </a> |
| 42 | 42 | ||
| 43 | <a class="card times-link" href="/parametres/categories" style="margin-bottom:var(--space-3)"> | 43 | <a class="card times-link" href="/parametres/categories" style="margin-bottom:var(--space-3)"> |
| 44 | <span style="flex:1"> | 44 | <span style="flex:1"> |
| 45 | - <span style="display:block;font-family:var(--font-heading);font-size:17px">{{ shell.tr.title_categories }}</span> | 45 | + <span class="link-title">{{ shell.tr.title_categories }}</span> |
| 46 | - <span style="display:block;font-size:13px;opacity:.7">{{ shell.tr.manage_categories_desc }}</span> | 46 | + <span class="link-sub">{{ shell.tr.manage_categories_desc }}</span> |
| 47 | </span> | 47 | </span> |
| 48 | {% call c::chevron_right(17) %}{% endcall %} | 48 | {% call c::chevron_right(17) %}{% endcall %} |
| 49 | </a> | 49 | </a> |
| 50 | 50 | ||
| 51 | <a class="card times-link" href="/parametres/securite" style="margin-bottom:var(--space-6)"> | 51 | <a class="card times-link" href="/parametres/securite" style="margin-bottom:var(--space-6)"> |
| 52 | <span style="flex:1"> | 52 | <span style="flex:1"> |
| 53 | - <span style="display:block;font-family:var(--font-heading);font-size:17px">{{ shell.tr.title_security }}</span> | 53 | + <span class="link-title">{{ shell.tr.title_security }}</span> |
| 54 | - <span style="display:block;font-size:13px;opacity:.7">{{ shell.tr.security_card_desc }}</span> | 54 | + <span class="link-sub">{{ shell.tr.security_card_desc }}</span> |
| 55 | </span> | 55 | </span> |
| 56 | {% call c::chevron_right(17) %}{% endcall %} | 56 | {% call c::chevron_right(17) %}{% endcall %} |
| 57 | </a> | 57 | </a> |
| @@ -66,9 +66,9 @@ | |||
| 66 | </div> | 66 | </div> |
| 67 | </div> | 67 | </div> |
| 68 | </form> | 68 | </form> |
| 69 | -<p style="font-size:12px;opacity:.7;margin:0 0 var(--space-6)">{{ shell.tr.rename_team_note }}</p> | 69 | +<p class="hint-sm" style="margin:0 0 var(--space-6)">{{ shell.tr.rename_team_note }}</p> |
| 70 | 70 | ||
| 71 | -<h2 style="font-size:16px;margin:0 0 var(--space-2)">{{ members_title }}</h2> | 71 | +<h2 class="section-title" style="margin-top:0">{{ members_title }}</h2> |
| 72 | <div style="display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)"> | 72 | <div style="display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)"> |
| 73 | {% for m in members %}<span class="tag tag-neutral">{{ m }}</span>{% endfor %} | 73 | {% for m in members %}<span class="tag tag-neutral">{{ m }}</span>{% endfor %} |
| 74 | </div> | 74 | </div> |
| @@ -84,10 +84,10 @@ | |||
| 84 | </div> | 84 | </div> |
| 85 | </form> | 85 | </form> |
| 86 | {% if let Some(e) = invite_error %}<p class="form-error" style="margin:0 0 var(--space-2)">{{ e }}</p>{% endif %} | 86 | {% if let Some(e) = invite_error %}<p class="form-error" style="margin:0 0 var(--space-2)">{{ e }}</p>{% endif %} |
| 87 | -<p style="font-size:12px;opacity:.7;margin:0">{{ shell.tr.invite_note }}</p> | 87 | +<p class="hint-sm" style="margin:0">{{ shell.tr.invite_note }}</p> |
| 88 | 88 | ||
| 89 | -<h2 style="font-size:16px;margin:var(--space-6) 0 var(--space-2)">{{ shell.tr.invite_link }}</h2> | 89 | +<h2 class="section-title" style="margin-top:var(--space-6)">{{ shell.tr.invite_link }}</h2> |
| 90 | -<p style="font-size:13px;opacity:.7;margin:0 0 var(--space-3)">{{ shell.tr.invite_link_hint }}</p> | 90 | +<p class="hint">{{ shell.tr.invite_link_hint }}</p> |
| 91 | {% if let Some(lien) = invite_link %} | 91 | {% if let Some(lien) = invite_link %} |
| 92 | <div class="field" style="margin-bottom:var(--space-2)"> | 92 | <div class="field" style="margin-bottom:var(--space-2)"> |
| 93 | {# Le titre juste au-dessus nomme déjà le champ : aria-label plutôt qu'un | 93 | {# Le titre juste au-dessus nomme déjà le champ : aria-label plutôt qu'un |
| @@ -95,7 +95,7 @@ | |||
| 95 | sélectionnable pour être copié. #} | 95 | sélectionnable pour être copié. #} |
| 96 | <input class="input" id="lien-invit" value="{{ lien }}" readonly | 96 | <input class="input" id="lien-invit" value="{{ lien }}" readonly |
| 97 | aria-label="{{ shell.tr.invite_link }}" aria-describedby="lien-aide" | 97 | aria-label="{{ shell.tr.invite_link }}" aria-describedby="lien-aide" |
| 98 | - style="min-height:44px;font-size:13px"> | 98 | + style="min-height:44px;font-size:0.8125rem"> |
| 99 | </div> | 99 | </div> |
| 100 | <p class="field-hint" id="lien-aide" style="margin-bottom:var(--space-2)">{{ shell.tr.invite_link_ready }}</p> | 100 | <p class="field-hint" id="lien-aide" style="margin-bottom:var(--space-2)">{{ shell.tr.invite_link_ready }}</p> |
| 101 | {% endif %} | 101 | {% endif %} |
| @@ -105,22 +105,22 @@ | |||
| 105 | </form> | 105 | </form> |
| 106 | 106 | ||
| 107 | {% if !sent.is_empty() %} | 107 | {% if !sent.is_empty() %} |
| 108 | -<h2 style="font-size:16px;margin:var(--space-6) 0 var(--space-2)">{{ shell.tr.pending_invites }}</h2> | 108 | +<h2 class="section-title" style="margin-top:var(--space-6)">{{ shell.tr.pending_invites }}</h2> |
| 109 | {% for si in sent %} | 109 | {% for si in sent %} |
| 110 | <div class="sent-row"> | 110 | <div class="sent-row"> |
| 111 | <div style="flex:1;min-width:0"> | 111 | <div style="flex:1;min-width:0"> |
| 112 | - <div style="font-size:15px">{{ si.name }}</div> | 112 | + <div style="font-size:0.9375rem">{{ si.name }}</div> |
| 113 | - <div style="font-size:12px;opacity:.7">{{ si.meta }}</div> | 113 | + <div class="hint-sm">{{ si.meta }}</div> |
| 114 | </div> | 114 | </div> |
| 115 | <form method="post" action="{{ si.cancel_action }}" style="margin:0"> | 115 | <form method="post" action="{{ si.cancel_action }}" style="margin:0"> |
| 116 | <input type="hidden" name="csrf" value="{{ csrf }}"> | 116 | <input type="hidden" name="csrf" value="{{ csrf }}"> |
| 117 | - <button type="submit" class="btn btn-ghost" style="font-size:12px">{{ shell.tr.cancel }}</button> | 117 | + <button type="submit" class="btn btn-ghost" style="font-size:0.75rem">{{ shell.tr.cancel }}</button> |
| 118 | </form> | 118 | </form> |
| 119 | </div> | 119 | </div> |
| 120 | {% endfor %} | 120 | {% endfor %} |
| 121 | {% endif %} | 121 | {% endif %} |
| 122 | 122 | ||
| 123 | -<h2 style="font-size:16px;margin:var(--space-8) 0 var(--space-2)">{{ shell.tr.create_team }}</h2> | 123 | +<h2 class="section-title">{{ shell.tr.create_team }}</h2> |
| 124 | <form method="post" action="/equipes"> | 124 | <form method="post" action="/equipes"> |
| 125 | <input type="hidden" name="csrf" value="{{ csrf }}"> | 125 | <input type="hidden" name="csrf" value="{{ csrf }}"> |
| 126 | <div style="display:flex;gap:var(--space-2)"> | 126 | <div style="display:flex;gap:var(--space-2)"> |
| @@ -128,7 +128,7 @@ | |||
| 128 | <button type="submit" class="btn btn-primary" style="min-height:44px">{{ shell.tr.create }}</button> | 128 | <button type="submit" class="btn btn-primary" style="min-height:44px">{{ shell.tr.create }}</button> |
| 129 | </div> | 129 | </div> |
| 130 | </form> | 130 | </form> |
| 131 | -<p style="font-size:12px;opacity:.7;margin:var(--space-2) 0 0">{{ shell.tr.create_team_note }}</p> | 131 | +<p class="hint-sm" style="margin:var(--space-2) 0 0">{{ shell.tr.create_team_note }}</p> |
| 132 | 132 | ||
| 133 | {% if can_leave %} | 133 | {% if can_leave %} |
| 134 | <form method="post" action="/equipes/quitter"> | 134 | <form method="post" action="/equipes/quitter"> |
| @@ -136,10 +136,10 @@ | |||
| 136 | <button type="submit" class="btn btn-block" | 136 | <button type="submit" class="btn btn-block" |
| 137 | style="min-height:46px;margin-top:var(--space-6);color:var(--color-accent-700);border:1px solid var(--color-accent-300)">{{ leave_label }}</button> | 137 | style="min-height:46px;margin-top:var(--space-6);color:var(--color-accent-700);border:1px solid var(--color-accent-300)">{{ leave_label }}</button> |
| 138 | </form> | 138 | </form> |
| 139 | -<p style="font-size:11px;opacity:.7;margin-top:var(--space-2);text-align:center">{{ shell.tr.leave_note }}</p> | 139 | +<p style="font-size:0.6875rem;opacity:.7;margin-top:var(--space-2);text-align:center">{{ shell.tr.leave_note }}</p> |
| 140 | {% endif %} | 140 | {% endif %} |
| 141 | 141 | ||
| 142 | -<h2 style="font-size:16px;margin:var(--space-8) 0 var(--space-2)">{{ shell.tr.language }}</h2> | 142 | +<h2 class="section-title">{{ shell.tr.language }}</h2> |
| 143 | <div style="display:flex;gap:var(--space-2);flex-wrap:wrap;margin-bottom:var(--space-2)"> | 143 | <div style="display:flex;gap:var(--space-2);flex-wrap:wrap;margin-bottom:var(--space-2)"> |
| 144 | {% for l in langs %} | 144 | {% for l in langs %} |
| 145 | <form method="post" action="/parametres/langue" style="margin:0"> | 145 | <form method="post" action="/parametres/langue" style="margin:0"> |
| @@ -152,8 +152,8 @@ | |||
| 152 | {% endfor %} | 152 | {% endfor %} |
| 153 | </div> | 153 | </div> |
| 154 | 154 | ||
| 155 | -<h2 style="font-size:16px;margin:var(--space-8) 0 var(--space-2)">{{ shell.tr.display }}</h2> | 155 | +<h2 class="section-title">{{ shell.tr.display }}</h2> |
| 156 | -<p style="font-size:13px;opacity:.7;margin:0 0 var(--space-3)">{{ shell.tr.display_hint }}</p> | 156 | +<p class="hint">{{ shell.tr.display_hint }}</p> |
| 157 | <div style="display:grid;gap:var(--space-2);margin-bottom:var(--space-2)"> | 157 | <div style="display:grid;gap:var(--space-2);margin-bottom:var(--space-2)"> |
| 158 | {% for th in themes %} | 158 | {% for th in themes %} |
| 159 | <form method="post" action="/parametres/affichage" style="margin:0"> | 159 | <form method="post" action="/parametres/affichage" style="margin:0"> |
| @@ -162,8 +162,8 @@ | |||
| 162 | <button type="submit" class="theme-choice{% if th.current %} current{% endif %}" {% if th.current %}aria-current="true"{% endif %}> | 162 | <button type="submit" class="theme-choice{% if th.current %} current{% endif %}" {% if th.current %}aria-current="true"{% endif %}> |
| 163 | <span class="theme-swatch swatch-{{ th.code }}"></span> | 163 | <span class="theme-swatch swatch-{{ th.code }}"></span> |
| 164 | <span style="flex:1;text-align:left"> | 164 | <span style="flex:1;text-align:left"> |
| 165 | - <span style="display:block;font-size:16px">{{ th.name }}</span> | 165 | + <span class="option-title">{{ th.name }}</span> |
| 166 | - <span style="display:block;font-size:12px;opacity:.75">{{ th.desc }}</span> | 166 | + <span class="option-sub">{{ th.desc }}</span> |
| 167 | </span> | 167 | </span> |
| 168 | {% if th.current %}<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"></path></svg>{% endif %} | 168 | {% if th.current %}<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"></path></svg>{% endif %} |
| 169 | </button> | 169 | </button> |
| @@ -171,8 +171,8 @@ | |||
| 171 | {% endfor %} | 171 | {% endfor %} |
| 172 | </div> | 172 | </div> |
| 173 | 173 | ||
| 174 | -<h2 style="font-size:16px;margin:var(--space-8) 0 var(--space-2)">{{ shell.tr.chart_style }}</h2> | 174 | +<h2 class="section-title">{{ shell.tr.chart_style }}</h2> |
| 175 | -<p style="font-size:13px;opacity:.7;margin:0 0 var(--space-3)">{{ shell.tr.chart_style_hint }}</p> | 175 | +<p class="hint">{{ shell.tr.chart_style_hint }}</p> |
| 176 | <div style="display:grid;gap:var(--space-2);margin-bottom:var(--space-2)"> | 176 | <div style="display:grid;gap:var(--space-2);margin-bottom:var(--space-2)"> |
| 177 | {% for cs in chart_styles %} | 177 | {% for cs in chart_styles %} |
| 178 | <form method="post" action="/parametres/graphiques" style="margin:0"> | 178 | <form method="post" action="/parametres/graphiques" style="margin:0"> |
| @@ -187,8 +187,8 @@ | |||
| 187 | {% endif %} | 187 | {% endif %} |
| 188 | </span> | 188 | </span> |
| 189 | <span style="flex:1;text-align:left"> | 189 | <span style="flex:1;text-align:left"> |
| 190 | - <span style="display:block;font-size:16px">{{ cs.name }}</span> | 190 | + <span class="option-title">{{ cs.name }}</span> |
| 191 | - <span style="display:block;font-size:12px;opacity:.75">{{ cs.desc }}</span> | 191 | + <span class="option-sub">{{ cs.desc }}</span> |
| 192 | </span> | 192 | </span> |
| 193 | {% if cs.current %}<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"></path></svg>{% endif %} | 193 | {% if cs.current %}<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"></path></svg>{% endif %} |
| 194 | </button> | 194 | </button> |
| @@ -196,11 +196,11 @@ | |||
| 196 | {% endfor %} | 196 | {% endfor %} |
| 197 | </div> | 197 | </div> |
| 198 | 198 | ||
| 199 | -<h2 style="font-size:16px;margin:var(--space-8) 0 var(--space-3)">{{ shell.tr.session }}</h2> | 199 | +<h2 class="section-title" style="margin-bottom:var(--space-3)">{{ shell.tr.session }}</h2> |
| 200 | <form method="post" action="/logout"> | 200 | <form method="post" action="/logout"> |
| 201 | <input type="hidden" name="csrf" value="{{ csrf }}"> | 201 | <input type="hidden" name="csrf" value="{{ csrf }}"> |
| 202 | <button type="submit" class="btn btn-block" | 202 | <button type="submit" class="btn btn-block" |
| 203 | style="min-height:46px;margin-top:var(--space-4);color:var(--color-accent-700);border:1px solid var(--color-accent-300)">{{ shell.tr.sign_out }}</button> | 203 | style="min-height:46px;margin-top:var(--space-4);color:var(--color-accent-700);border:1px solid var(--color-accent-300)">{{ shell.tr.sign_out }}</button> |
| 204 | </form> | 204 | </form> |
| 205 | -<p class="text-muted" style="font-size:11px;margin-top:var(--space-3);text-align:center">{{ shell.tr.signout_note }}</p> | 205 | +<p class="text-muted" style="font-size:0.6875rem;margin-top:var(--space-3);text-align:center">{{ shell.tr.signout_note }}</p> |
| 206 | {% endblock %} | 206 | {% endblock %} |
modified
templates/signup.html +10 -11 | @@ -29,29 +29,28 @@ | ||
| 29 | 29 | Rien en clair à réécrire. #} |
| 30 | 30 | <input type="hidden" name="invitation" value="{{ inv.token }}"> |
| 31 | 31 | {% endif %} |
| 32 | - <div class="field" style="margin-bottom:var(--space-3)"> | |
| 33 | - <label for="username" style="font-size:18px">{{ tr.username_label }}</label> | |
| 32 | + <div class="field field-lg" style="margin-bottom:var(--space-3)"> | |
| 33 | + <label for="username">{{ tr.username_label }}</label> | |
| 34 | 34 | <input class="input" id="username" name="username" value="{{ username }}" |
| 35 | 35 | autocomplete="username" autocapitalize="none" autocorrect="off" |
| 36 | - required autofocus maxlength="32" style="font-size:18px"> | |
| 36 | + required autofocus maxlength="32"> | |
| 37 | 37 | </div> |
| 38 | - <div class="field" style="margin-bottom:var(--space-3)"> | |
| 39 | - <label for="password" style="font-size:18px">{{ tr.password_label }}</label> | |
| 38 | + <div class="field field-lg" style="margin-bottom:var(--space-3)"> | |
| 39 | + <label for="password">{{ tr.password_label }}</label> | |
| 40 | 40 | <input class="input" id="password" name="password" type="password" |
| 41 | - autocomplete="new-password" required minlength="8" style="font-size:18px"> | |
| 41 | + autocomplete="new-password" required minlength="8"> | |
| 42 | 42 | </div> |
| 43 | 43 | {% if invite.is_none() %} |
| 44 | - <div class="field" style="margin-bottom:var(--space-2)"> | |
| 45 | - <label for="cle" style="font-size:18px">{{ tr.signup_key_label }}</label> | |
| 44 | + <div class="field field-lg" style="margin-bottom:var(--space-2)"> | |
| 45 | + <label for="cle">{{ tr.signup_key_label }}</label> | |
| 46 | 46 | <input class="input" id="cle" name="cle" type="password" autocomplete="off" |
| 47 | 47 | autocapitalize="none" autocorrect="off" required |
| 48 | - aria-describedby="cle-aide" style="font-size:18px"> | |
| 48 | + aria-describedby="cle-aide"> | |
| 49 | 49 | </div> |
| 50 | 50 | <p class="field-hint" id="cle-aide">{{ tr.signup_key_hint }}</p> |
| 51 | 51 | {% endif %} |
| 52 | 52 | {% if let Some(e) = error %}<p class="form-error">{{ e }}</p>{% endif %} |
| 53 | - <button type="submit" class="btn btn-primary btn-block" | |
| 54 | - style="min-height:56px;font-size:20px">{{ tr.signup_submit }}</button> | |
| 53 | + <button type="submit" class="btn btn-primary btn-block btn-xl">{{ tr.signup_submit }}</button> | |
| 55 | 54 | </form> |
| 56 | 55 | {% if invite.is_none() %} |
| 57 | 56 | <p class="field-hint" style="margin-top:var(--space-4)">{{ tr.signup_team_hint }}</p> |
| @@ -29,29 +29,28 @@ | |||
| 29 | Rien en clair à réécrire. #} | 29 | Rien en clair à réécrire. #} |
| 30 | <input type="hidden" name="invitation" value="{{ inv.token }}"> | 30 | <input type="hidden" name="invitation" value="{{ inv.token }}"> |
| 31 | {% endif %} | 31 | {% endif %} |
| 32 | - <div class="field" style="margin-bottom:var(--space-3)"> | 32 | + <div class="field field-lg" style="margin-bottom:var(--space-3)"> |
| 33 | - <label for="username" style="font-size:18px">{{ tr.username_label }}</label> | 33 | + <label for="username">{{ tr.username_label }}</label> |
| 34 | <input class="input" id="username" name="username" value="{{ username }}" | 34 | <input class="input" id="username" name="username" value="{{ username }}" |
| 35 | autocomplete="username" autocapitalize="none" autocorrect="off" | 35 | autocomplete="username" autocapitalize="none" autocorrect="off" |
| 36 | - required autofocus maxlength="32" style="font-size:18px"> | 36 | + required autofocus maxlength="32"> |
| 37 | </div> | 37 | </div> |
| 38 | - <div class="field" style="margin-bottom:var(--space-3)"> | 38 | + <div class="field field-lg" style="margin-bottom:var(--space-3)"> |
| 39 | - <label for="password" style="font-size:18px">{{ tr.password_label }}</label> | 39 | + <label for="password">{{ tr.password_label }}</label> |
| 40 | <input class="input" id="password" name="password" type="password" | 40 | <input class="input" id="password" name="password" type="password" |
| 41 | - autocomplete="new-password" required minlength="8" style="font-size:18px"> | 41 | + autocomplete="new-password" required minlength="8"> |
| 42 | </div> | 42 | </div> |
| 43 | {% if invite.is_none() %} | 43 | {% if invite.is_none() %} |
| 44 | - <div class="field" style="margin-bottom:var(--space-2)"> | 44 | + <div class="field field-lg" style="margin-bottom:var(--space-2)"> |
| 45 | - <label for="cle" style="font-size:18px">{{ tr.signup_key_label }}</label> | 45 | + <label for="cle">{{ tr.signup_key_label }}</label> |
| 46 | <input class="input" id="cle" name="cle" type="password" autocomplete="off" | 46 | <input class="input" id="cle" name="cle" type="password" autocomplete="off" |
| 47 | autocapitalize="none" autocorrect="off" required | 47 | autocapitalize="none" autocorrect="off" required |
| 48 | - aria-describedby="cle-aide" style="font-size:18px"> | 48 | + aria-describedby="cle-aide"> |
| 49 | </div> | 49 | </div> |
| 50 | <p class="field-hint" id="cle-aide">{{ tr.signup_key_hint }}</p> | 50 | <p class="field-hint" id="cle-aide">{{ tr.signup_key_hint }}</p> |
| 51 | {% endif %} | 51 | {% endif %} |
| 52 | {% if let Some(e) = error %}<p class="form-error">{{ e }}</p>{% endif %} | 52 | {% if let Some(e) = error %}<p class="form-error">{{ e }}</p>{% endif %} |
| 53 | - <button type="submit" class="btn btn-primary btn-block" | 53 | + <button type="submit" class="btn btn-primary btn-block btn-xl">{{ tr.signup_submit }}</button> |
| 54 | - style="min-height:56px;font-size:20px">{{ tr.signup_submit }}</button> | ||
| 55 | </form> | 54 | </form> |
| 56 | {% if invite.is_none() %} | 55 | {% if invite.is_none() %} |
| 57 | <p class="field-hint" style="margin-top:var(--space-4)">{{ tr.signup_team_hint }}</p> | 56 | <p class="field-hint" style="margin-top:var(--space-4)">{{ tr.signup_team_hint }}</p> |
modified
templates/stats.html +1 -1 | @@ -1,7 +1,7 @@ | ||
| 1 | 1 | {% extends "app.html" %} |
| 2 | 2 | {% import "components.html" as c %} |
| 3 | 3 | {% block content %} |
| 4 | -<a class="btn btn-ghost" style="margin:0 0 var(--space-4);padding-left:0;font-size:16px;min-height:44px" href="/temps">{{ shell.tr.my_entries_arrow }}</a> | |
| 4 | +<a class="btn btn-ghost" style="margin:0 0 var(--space-4);padding-left:0;font-size:1rem;min-height:44px" href="/temps">{{ shell.tr.my_entries_arrow }}</a> | |
| 5 | 5 | |
| 6 | 6 | {% if show_pills %} |
| 7 | 7 | <nav class="scope-pills" aria-label="{{ shell.tr.scope_pills_aria }}"> |
| @@ -1,7 +1,7 @@ | |||
| 1 | {% extends "app.html" %} | 1 | {% extends "app.html" %} |
| 2 | {% import "components.html" as c %} | 2 | {% import "components.html" as c %} |
| 3 | {% block content %} | 3 | {% block content %} |
| 4 | -<a class="btn btn-ghost" style="margin:0 0 var(--space-4);padding-left:0;font-size:16px;min-height:44px" href="/temps">{{ shell.tr.my_entries_arrow }}</a> | 4 | +<a class="btn btn-ghost" style="margin:0 0 var(--space-4);padding-left:0;font-size:1rem;min-height:44px" href="/temps">{{ shell.tr.my_entries_arrow }}</a> |
| 5 | 5 | ||
| 6 | {% if show_pills %} | 6 | {% if show_pills %} |
| 7 | <nav class="scope-pills" aria-label="{{ shell.tr.scope_pills_aria }}"> | 7 | <nav class="scope-pills" aria-label="{{ shell.tr.scope_pills_aria }}"> |
modified
templates/todo_done.html +1 -1 | @@ -46,7 +46,7 @@ | ||
| 46 | 46 | </div> |
| 47 | 47 | </section> |
| 48 | 48 | |
| 49 | - <button type="submit" class="btn btn-primary btn-block" style="min-height:52px;font-size:16px;margin-top:var(--space-8)">{{ shell.tr.validate }}</button> | |
| 49 | + <button type="submit" class="btn btn-primary btn-block btn-lg" style="margin-top:var(--space-8)">{{ shell.tr.validate }}</button> | |
| 50 | 50 | </form> |
| 51 | 51 | |
| 52 | 52 | {% endblock %} |
| @@ -46,7 +46,7 @@ | |||
| 46 | </div> | 46 | </div> |
| 47 | </section> | 47 | </section> |
| 48 | 48 | ||
| 49 | - <button type="submit" class="btn btn-primary btn-block" style="min-height:52px;font-size:16px;margin-top:var(--space-8)">{{ shell.tr.validate }}</button> | 49 | + <button type="submit" class="btn btn-primary btn-block btn-lg" style="margin-top:var(--space-8)">{{ shell.tr.validate }}</button> |
| 50 | </form> | 50 | </form> |
| 51 | 51 | ||
| 52 | {% endblock %} | 52 | {% endblock %} |
modified
templates/todo_form.html +3 -3 | @@ -39,7 +39,7 @@ | ||
| 39 | 39 | </button> |
| 40 | 40 | </div> |
| 41 | 41 | </div> |
| 42 | - <p id="todo-date-label" style="font-size:13px;opacity:.7;margin:0 0 var(--space-6)" | |
| 42 | + <p id="todo-date-label" class="hint" style="margin-bottom:var(--space-6)" | |
| 43 | 43 | data-pattern="{{ vocab.pattern }}" data-weekdays="{{ vocab.weekdays }}" |
| 44 | 44 | data-months="{{ vocab.months }}" data-today="{{ vocab.today }}" |
| 45 | 45 | data-today-suffix="{{ vocab.today_suffix }}">{{ date_label }}</p> |
| @@ -67,9 +67,9 @@ | ||
| 67 | 67 | </label> |
| 68 | 68 | {% endfor %} |
| 69 | 69 | </div> |
| 70 | - <p style="font-size:12px;opacity:.7;margin:0 0 var(--space-8)">{{ shell.tr.assign_note }}</p> | |
| 70 | + <p class="hint-sm" style="margin:0 0 var(--space-8)">{{ shell.tr.assign_note }}</p> | |
| 71 | 71 | |
| 72 | - <button type="submit" class="btn btn-primary btn-block" style="min-height:52px;font-size:16px"> | |
| 72 | + <button type="submit" class="btn btn-primary btn-block btn-lg"> | |
| 73 | 73 | {% if edit_id.is_some() %}{{ shell.tr.save }}{% else %}{{ shell.tr.create_todo }}{% endif %} |
| 74 | 74 | </button> |
| 75 | 75 | </form> |
| @@ -39,7 +39,7 @@ | |||
| 39 | </button> | 39 | </button> |
| 40 | </div> | 40 | </div> |
| 41 | </div> | 41 | </div> |
| 42 | - <p id="todo-date-label" style="font-size:13px;opacity:.7;margin:0 0 var(--space-6)" | 42 | + <p id="todo-date-label" class="hint" style="margin-bottom:var(--space-6)" |
| 43 | data-pattern="{{ vocab.pattern }}" data-weekdays="{{ vocab.weekdays }}" | 43 | data-pattern="{{ vocab.pattern }}" data-weekdays="{{ vocab.weekdays }}" |
| 44 | data-months="{{ vocab.months }}" data-today="{{ vocab.today }}" | 44 | data-months="{{ vocab.months }}" data-today="{{ vocab.today }}" |
| 45 | data-today-suffix="{{ vocab.today_suffix }}">{{ date_label }}</p> | 45 | data-today-suffix="{{ vocab.today_suffix }}">{{ date_label }}</p> |
| @@ -67,9 +67,9 @@ | |||
| 67 | </label> | 67 | </label> |
| 68 | {% endfor %} | 68 | {% endfor %} |
| 69 | </div> | 69 | </div> |
| 70 | - <p style="font-size:12px;opacity:.7;margin:0 0 var(--space-8)">{{ shell.tr.assign_note }}</p> | 70 | + <p class="hint-sm" style="margin:0 0 var(--space-8)">{{ shell.tr.assign_note }}</p> |
| 71 | 71 | ||
| 72 | - <button type="submit" class="btn btn-primary btn-block" style="min-height:52px;font-size:16px"> | 72 | + <button type="submit" class="btn btn-primary btn-block btn-lg"> |
| 73 | {% if edit_id.is_some() %}{{ shell.tr.save }}{% else %}{{ shell.tr.create_todo }}{% endif %} | 73 | {% if edit_id.is_some() %}{{ shell.tr.save }}{% else %}{{ shell.tr.create_todo }}{% endif %} |
| 74 | </button> | 74 | </button> |
| 75 | </form> | 75 | </form> |
modified
templates/todos.html +1 -1 | @@ -113,7 +113,7 @@ | ||
| 113 | 113 | <div class="later-row"> |
| 114 | 114 | <span class="team-dot" style="background:{{ t.color }}"></span> |
| 115 | 115 | <div style="flex:1;min-width:0"> |
| 116 | - <div style="font-size:15px">{{ t.name }}</div> | |
| 116 | + <div style="font-size:0.9375rem">{{ t.name }}</div> | |
| 117 | 117 | <div class="todo-meta">{{ t.meta }}</div> |
| 118 | 118 | {% if !t.assignees.is_empty() %} |
| 119 | 119 | <div class="asg-chips"> |
| @@ -113,7 +113,7 @@ | |||
| 113 | <div class="later-row"> | 113 | <div class="later-row"> |
| 114 | <span class="team-dot" style="background:{{ t.color }}"></span> | 114 | <span class="team-dot" style="background:{{ t.color }}"></span> |
| 115 | <div style="flex:1;min-width:0"> | 115 | <div style="flex:1;min-width:0"> |
| 116 | - <div style="font-size:15px">{{ t.name }}</div> | 116 | + <div style="font-size:0.9375rem">{{ t.name }}</div> |
| 117 | <div class="todo-meta">{{ t.meta }}</div> | 117 | <div class="todo-meta">{{ t.meta }}</div> |
| 118 | {% if !t.assignees.is_empty() %} | 118 | {% if !t.assignees.is_empty() %} |
| 119 | <div class="asg-chips"> | 119 | <div class="asg-chips"> |