Design ludique arrondi + mobile responsive + fix IPv6

- ToolboxVignette: prop bullets[] remplace description, touch targets agrandis
- Design arrondi: border-radius 16px cards, 20px pills, 12px inputs, no borders
- Hover animations: translateY(-3px) + shadow, active states pour touch
- SectionLayout: toolbox accordion mobile, pills scroll horizontal, responsive title/subtitle
- app.vue: MoodSwitcher dans drawer mobile, header responsive, nav touch-friendly
- Dashboard: grille 2-colonnes mobile, connect banner column layout, formula code scroll
- Documents/decisions/mandates/protocols: cards responsive (padding, font-size, gap)
- Login: touch targets 3rem min, iOS zoom prevention, responsive sizing
- Modals: padding responsive sm:p-6
- Protocols: table compact mobile, proto items responsive
- nuxt.config: host 0.0.0.0 pour fix IPv4/IPv6 binding

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Yvv
2026-02-28 23:09:29 +01:00
parent 9b6388a600
commit c7cb22f313
15 changed files with 1730 additions and 1021 deletions

View File

@@ -39,73 +39,73 @@
}
/* --------------------------------------------------------------------------
Zen — Frais, vegetal, vivant (Light)
Palette: sauge / lavande / terre cuite / bleu ciel
Zen — Foret profonde, vegetal et mineral (Light)
Palette: vert sombre / brun chaud / bleu ardoise / terre
-------------------------------------------------------------------------- */
.mood-zen {
--mood-bg: #f6f9f5;
--mood-surface: #ffffff;
--mood-surface-hover: #ecf4e8;
--mood-text: #172014;
--mood-text-muted: #4e6d48;
--mood-accent: #2e8250;
--mood-accent-soft: rgba(46, 130, 80, 0.07);
--mood-bg: #f0f4ef;
--mood-surface: #fafcf9;
--mood-surface-hover: #e4ece0;
--mood-text: #0e1a0c;
--mood-text-muted: #3a5634;
--mood-accent: #1a6838;
--mood-accent-soft: rgba(26, 104, 56, 0.08);
--mood-accent-text: #ffffff;
--mood-border: #bdd4b8;
--mood-secondary: #7868a6;
--mood-tertiary: #b86830;
--mood-success: #1d9048;
--mood-warning: #a87020;
--mood-error: #b83838;
--mood-gradient: linear-gradient(145deg, #f2f8ef 0%, #ffffff 40%, #f4f0f8 100%);
--mood-shadow: rgba(40, 100, 60, 0.06);
--mood-input-bg: #ffffff;
--mood-input-border: #a4c4a0;
--mood-input-focus: #2e8250;
--mood-border: #a0c098;
--mood-secondary: #6b5838;
--mood-tertiary: #3a6878;
--mood-success: #146830;
--mood-warning: #8a6018;
--mood-error: #a03030;
--mood-gradient: linear-gradient(145deg, #eaf2e6 0%, #fafcf9 40%, #f0ece4 100%);
--mood-shadow: rgba(26, 80, 40, 0.08);
--mood-input-bg: #fafcf9;
--mood-input-border: #90b088;
--mood-input-focus: #1a6838;
--mood-status-prepa: #a87020;
--mood-status-prepa-bg: rgba(168, 112, 32, 0.10);
--mood-status-vote: #6858a0;
--mood-status-vote-bg: rgba(104, 88, 160, 0.10);
--mood-status-vigueur: #1d9048;
--mood-status-vigueur-bg: rgba(29, 144, 72, 0.10);
--mood-status-clos: #607858;
--mood-status-clos-bg: rgba(96, 120, 88, 0.08);
--mood-status-prepa: #8a6018;
--mood-status-prepa-bg: rgba(138, 96, 24, 0.10);
--mood-status-vote: #3a6878;
--mood-status-vote-bg: rgba(58, 104, 120, 0.10);
--mood-status-vigueur: #146830;
--mood-status-vigueur-bg: rgba(20, 104, 48, 0.10);
--mood-status-clos: #506848;
--mood-status-clos-bg: rgba(80, 104, 72, 0.08);
}
/* --------------------------------------------------------------------------
Chagrine — Lumineux, electrique, profond (Dark)
Palette: violet vif / cyan / magenta / or
Chagrine — Profond, electrique, bleu dominant (Dark)
Palette: bleu electrique / cyan / magenta / or
-------------------------------------------------------------------------- */
.mood-chagrine {
--mood-bg: #14101e;
--mood-surface: #1c1628;
--mood-surface-hover: #261e38;
--mood-text: #e4daf0;
--mood-text-muted: #9888b8;
--mood-accent: #9470d8;
--mood-accent-soft: rgba(148, 112, 216, 0.12);
--mood-bg: #0c1018;
--mood-surface: #121824;
--mood-surface-hover: #1a2438;
--mood-text: #d8e4f0;
--mood-text-muted: #7898c0;
--mood-accent: #4088d8;
--mood-accent-soft: rgba(64, 136, 216, 0.12);
--mood-accent-text: #ffffff;
--mood-border: #302448;
--mood-border: #1e3050;
--mood-secondary: #38c8c8;
--mood-tertiary: #e07090;
--mood-success: #40d888;
--mood-tertiary: #d870a0;
--mood-success: #38d080;
--mood-warning: #e0b040;
--mood-error: #e86060;
--mood-gradient: linear-gradient(145deg, #14101e 0%, #1c1628 40%, #101820 100%);
--mood-shadow: rgba(120, 80, 200, 0.12);
--mood-input-bg: #1c1628;
--mood-input-border: #3c2c58;
--mood-input-focus: #9470d8;
--mood-error: #e06060;
--mood-gradient: linear-gradient(145deg, #0c1018 0%, #121824 40%, #0c1420 100%);
--mood-shadow: rgba(40, 100, 200, 0.15);
--mood-input-bg: #121824;
--mood-input-border: #283c58;
--mood-input-focus: #4088d8;
--mood-status-prepa: #e0b040;
--mood-status-prepa-bg: rgba(224, 176, 64, 0.15);
--mood-status-vote: #38c8c8;
--mood-status-vote-bg: rgba(56, 200, 200, 0.14);
--mood-status-vigueur: #40d888;
--mood-status-vigueur-bg: rgba(64, 216, 136, 0.14);
--mood-status-clos: #7868a0;
--mood-status-clos-bg: rgba(120, 104, 160, 0.12);
--mood-status-vigueur: #38d080;
--mood-status-vigueur-bg: rgba(56, 208, 128, 0.14);
--mood-status-clos: #6080a8;
--mood-status-clos-bg: rgba(96, 128, 168, 0.12);
}
/* --------------------------------------------------------------------------
@@ -144,35 +144,59 @@
}
/* ==========================================================================
Global design tokens
Global design tokens — Nunito, rounded, borderless
========================================================================== */
*,
*::before,
*::after {
border-color: transparent;
}
html {
font-family: 'Nunito', system-ui, -apple-system, sans-serif;
font-size: 16px;
}
body {
font-family: 'Nunito', system-ui, -apple-system, sans-serif;
transition: background-color 0.3s ease, color 0.3s ease;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* --- No borders anywhere --- */
button, input, select, textarea {
border: none !important;
outline: none;
font-family: inherit;
}
input:focus, select:focus, textarea:focus {
outline: none;
box-shadow: 0 0 0 2.5px var(--mood-accent-soft);
}
/* --- Status pills --- */
.status-pill {
display: inline-flex;
align-items: center;
padding: 3px 10px;
border-radius: 4px;
font-size: 0.6875rem;
font-weight: 600;
letter-spacing: 0.02em;
text-transform: uppercase;
padding: 5px 14px;
border-radius: 20px;
font-size: 0.8125rem;
font-weight: 700;
letter-spacing: 0.01em;
cursor: pointer;
transition: all 0.15s ease;
user-select: none;
border: none;
border: none !important;
}
.status-pill:hover {
filter: brightness(1.1);
filter: brightness(1.08);
transform: translateY(-1px);
}
.status-pill.active {
box-shadow: 0 0 0 2px var(--mood-accent);
box-shadow: 0 0 0 2.5px var(--mood-accent);
}
.status-prepa {
@@ -193,14 +217,32 @@ body {
}
/* ==========================================================================
Nuxt UI overrides
Nuxt UI overrides — borderless everything
========================================================================== */
:root .mood-peps,
:root .mood-zen,
:root .mood-chagrine,
:root .mood-grave {
--ui-border: var(--mood-input-border);
--ui-border: transparent;
--ui-bg: var(--mood-input-bg);
--ui-text-highlighted: var(--mood-accent);
}
:root button,
:root [class*="UButton"],
:root [class*="u-button"],
:root [data-variant] {
border: none !important;
font-family: 'Nunito', system-ui, sans-serif !important;
}
:root input,
:root textarea,
:root select,
:root [class*="UInput"],
:root [class*="USelect"],
:root [class*="UTextarea"] {
border: none !important;
font-family: 'Nunito', system-ui, sans-serif !important;
}