/* Rituel — jetons de marque
   Le thème réel de l'application : une déclinaison bronze/sauge du design
   system Organic. Ce sont ces valeurs qu'il faut employer, pas celles du
   Organic par défaut (dont l'accent est un terracotta plus vif).

   Règle : jamais un hex en dur dans une page. Tout passe par ces variables. */

:root {
  /* ── Sol et encre ──────────────────────────────────────────── */
  --color-bg: #f4eee4;        /* crème : le sol de toute l'interface claire */
  --color-surface: #f0eae0;   /* sable : une surface posée sur le sol */
  --color-text: #17161a;      /* encre */
  --color-divider: rgba(23, 22, 26, .16);

  /* ── Accent 1 — bronze. La voix principale, les actions, l'écart ── */
  --color-accent: #8c6a3f;
  --color-accent-100: #f7efe2; --color-accent-200: #ecdcc2; --color-accent-300: #dcc39b;
  --color-accent-400: #c3a374; --color-accent-500: #a5854f; --color-accent-600: #8c6a3f;
  --color-accent-700: #6e5230; --color-accent-800: #4e3a22; --color-accent-900: #322515;

  /* ── Accent 2 — sauge. Seconde voix réelle : le normal, le tenu, le sain ── */
  --color-accent-2: #6f784f;
  --color-accent-2-100: #eff1e5; --color-accent-2-200: #dfe3ca; --color-accent-2-300: #c6ccab;
  --color-accent-2-400: #a8b088; --color-accent-2-500: #8b9468; --color-accent-2-600: #6f784f;
  --color-accent-2-700: #565e3c; --color-accent-2-800: #3d432a; --color-accent-2-900: #272b1a;

  /* ── Neutres chauds. Jamais de gris froid ── */
  --color-neutral-100: #fbf8f2; --color-neutral-200: #f0eae0; --color-neutral-300: #ded6c8;
  --color-neutral-400: #c2b9a9; --color-neutral-500: #9d9484; --color-neutral-600: #7c7466;
  --color-neutral-700: #5d564b; --color-neutral-800: #403b33; --color-neutral-900: #26231e;

  /* ── Nuit. L'écran Sommeil, et sur le site tout bloc « la nuit » ──
     Le fond nuit est un sauge très sombre, pas un noir : la chaleur reste. */
  --night-ground: var(--color-accent-2-900);
  --night-ink: var(--color-accent-2-100);

  /* ── Type ──────────────────────────────────────────────────── */
  --font-heading: "Caprasimo", Georgia, serif;   /* display uniquement */
  --font-body: "Figtree", system-ui, sans-serif; /* tout le reste */

  /* ── Rayons. Sur-arrondir est le parti pris ── */
  --radius-sm: 8px; --radius-md: 16px; --radius-lg: 28px; --radius-pill: 999px;

  /* ── Élévation. Douce et chaude, jamais une ombre noire ── */
  --shadow-sm: 0 4px 14px rgba(46, 43, 37, .07);
  --shadow-md: 0 10px 26px rgba(46, 43, 37, .13);
  --shadow-lg: 0 24px 60px rgba(46, 43, 37, .28);

  /* ── Mouvement. Trois courbes, trois durées, rien d'autre ── */
  --ease-out: cubic-bezier(.2, .8, .2, 1);        /* entrées, sorties, glissements */
  --ease-spring: cubic-bezier(.3, 1.4, .4, 1);    /* ce qui doit rebondir */
  --ease-spring-soft: cubic-bezier(.32, 1.45, .4, 1);
  --dur-fast: 350ms; --dur-base: 450ms; --dur-slow: 600ms;
  --stagger: 70ms;   /* décalage d'une cascade */
}

/* ══ Les deux niveaux de surface — il n'y en a pas trois ══ */

/* Verre chaud : les cartes de tête, celles qui portent le chiffre du jour */
.glass {
  background: rgba(249, 244, 237, .62);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  border: 1px solid rgba(255, 255, 255, .66);
  box-shadow: 0 14px 36px rgba(46, 43, 37, .13);
  border-radius: var(--radius-lg);
}
/* Plaque : les cartes de liste. Pas de flou — le flou coûte cher et ne se
   justifie que sur la carte qu'on regarde en premier. */
.plate {
  background: rgba(255, 255, 255, .5);
  box-shadow: var(--shadow-sm);
  border-radius: var(--radius-md);
}

/* Veils d'encre sur fond nuit — les seuls paliers autorisés.
   4 / 7 / 9 / 12 % : surfaces, pistes vides, filets.
   64 % : PLANCHER du texte secondaire (4,5:1 sur le fond nuit).
   100 % : valeurs et titres. */
.veil-4  { background: color-mix(in srgb, var(--night-ink) 4%, transparent) }
.veil-7  { background: color-mix(in srgb, var(--night-ink) 7%, transparent) }
.veil-12 { background: color-mix(in srgb, var(--night-ink) 12%, transparent) }
.ink-64  { color: color-mix(in srgb, var(--night-ink) 64%, transparent) }

/* ══ Mouvement — le vocabulaire complet ══ */
@keyframes anLift    { from { opacity: 0; transform: translateY(20px) } to { opacity: 1; transform: none } }
@keyframes anEnterR  { from { opacity: 0; transform: translateX(26px) scale(.985) } to { opacity: 1; transform: none } }
@keyframes anEnterL  { from { opacity: 0; transform: translateX(-26px) scale(.985) } to { opacity: 1; transform: none } }
@keyframes anSweep   { from { transform: scaleX(0) } to { transform: scaleX(1) } }   /* origine gauche */
@keyframes anGrow    { from { transform: scaleY(0); opacity: 0 } to { transform: scaleY(1); opacity: 1 } } /* origine bas */
@keyframes anFade    { from { opacity: 0 } to { opacity: 1 } }  /* le SEUL admis sur un élément déjà en rotate() */
@keyframes anGlowSpin{ to { transform: rotate(360deg) } }
@keyframes morph {
  0%   { border-radius: 46% 54% 60% 40% / 50% 44% 56% 50% }
  50%  { border-radius: 58% 42% 41% 59% / 61% 56% 44% 39% }
  100% { border-radius: 46% 54% 60% 40% / 50% 44% 56% 50% }
}

/* Obligatoire sur toute page. Les boucles d'ambiance (morph, glow) doivent
   être ARRÊTÉES, pas accélérées. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 1ms !important; animation-delay: 0ms !important;
    animation-iteration-count: 1 !important; transition-duration: 1ms !important;
  }
}

/* États interactifs — thémés, jamais ceux du navigateur */
a { color: var(--color-accent-800); text-decoration-thickness: 1px; text-underline-offset: 3px }
a:hover { color: var(--color-accent) }
:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px }
::selection { background: var(--color-accent-200) }
