/* ==========================================================================
   KITCHO — jetons de design + composants (v1)
   Auto-hébergeable : aucune ressource externe. Polices système.
   Clair par défaut, sombre automatique (prefers-color-scheme),
   forçable avec data-theme="light" | "dark" sur n'importe quel élément.
   ========================================================================== */

:root,[data-theme="light"]{
  color-scheme:light;
  /* Neutres chauds */
  --bg:#FBF5EA; --surface:#FFFDF8; --surface-2:#F4EBDB; --surface-3:#EADFCB;
  --text:#2B1D16; --muted:#6A584B;
  --border:#E6D9C4; --border-strong:#8C765D;
  /* Marque : paprika */
  --brand:#2D6A45; --brand-hover:#245839; --on-brand:#FFFFFF; --brand-soft:#DCEEE1; --brand-ink:#1E4C31;
  --tomato:#BF400F; --tomato-soft:#FCE5D6;
  /* Basilic : coché / succès */
  --basil:#2D6A45; --on-basil:#FFFFFF; --basil-soft:#DCEEE1; --basil-ink:#1E4C31;
  /* Beurre : aujourd'hui / attention */
  --butter:#F3C556; --butter-soft:#FBEDC4; --butter-ink:#6A4700;
  /* Danger, info */
  --danger:#A62B2B; --on-danger:#FFFFFF; --danger-soft:#FBE2DE; --danger-ink:#8A1F1F;
  --info:#285D8C; --info-soft:#DDE9F5; --info-ink:#1F4A70;
  --focus:#1F5FC4;
  /* Catégories de recettes : encre + fond (≥ 5:1) */
  --cat-veg:#2D6A45;   --cat-veg-s:#DCEEE1;
  --cat-fish:#285D8C;  --cat-fish-s:#DDE9F5;
  --cat-meat:#9A3A2A;  --cat-meat-s:#F8E0DA;
  --cat-soup:#82500A;  --cat-soup-s:#FBEACB;
  --cat-salad:#55640F; --cat-salad-s:#E8EFC9;
  --cat-other:#6A584B; --cat-other-s:#EFE6D6;
  /* Vichy (motif signature) */
  --gingham:rgba(45,106,69,.14);
  /* Ombres chaudes */
  --sh-1:0 1px 2px rgba(74,44,20,.08),0 1px 1px rgba(74,44,20,.04);
  --sh-2:0 2px 4px rgba(74,44,20,.06),0 10px 24px rgba(74,44,20,.10);
  --sh-3:0 18px 48px rgba(74,44,20,.20);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme]){
    color-scheme:dark;
    --bg:#17110E; --surface:#211915; --surface-2:#2B211B; --surface-3:#372A22;
    --text:#F6ECE0; --muted:#BBAB9B; --border:#3A2D25; --border-strong:#8E7A68;
    --brand:#7FCB98; --brand-hover:#96D8AB; --on-brand:#0F2B1A; --brand-soft:#1E3326; --brand-ink:#A6E0B9; --tomato:#F29461; --tomato-soft:#3A2218;
    --basil:#7FCB98; --on-basil:#0F2B1A; --basil-soft:#1E3326; --basil-ink:#A6E0B9;
    --butter:#F2CD6A; --butter-soft:#3A2F12; --butter-ink:#F5D98A;
    --danger:#FF9D8E; --on-danger:#3A0F0A; --danger-soft:#3C1E1B; --danger-ink:#FFB4A8;
    --info:#8DBCE8; --info-soft:#1D2D3C; --info-ink:#A9CDF0;
    --focus:#8DB8FF;
    --cat-veg:#8FD6A6;   --cat-veg-s:#1E3326;
    --cat-fish:#9CC6EE;  --cat-fish-s:#1D2D3C;
    --cat-meat:#FFAA99;  --cat-meat-s:#3C1E1B;
    --cat-soup:#F2C877;  --cat-soup-s:#3A2D12;
    --cat-salad:#C9DB7A; --cat-salad-s:#2C3310;
    --cat-other:#C9B9A8; --cat-other-s:#33291F;
    --gingham:rgba(127,203,152,.12);
    --sh-1:0 1px 2px rgba(0,0,0,.4);
    --sh-2:0 2px 4px rgba(0,0,0,.3),0 10px 24px rgba(0,0,0,.4);
    --sh-3:0 18px 48px rgba(0,0,0,.6);
  }
}
[data-theme="dark"]{
  color-scheme:dark;
  --bg:#17110E; --surface:#211915; --surface-2:#2B211B; --surface-3:#372A22;
  --text:#F6ECE0; --muted:#BBAB9B; --border:#3A2D25; --border-strong:#8E7A68;
  --brand:#7FCB98; --brand-hover:#96D8AB; --on-brand:#0F2B1A; --brand-soft:#1E3326; --brand-ink:#A6E0B9; --tomato:#F29461; --tomato-soft:#3A2218;
  --basil:#7FCB98; --on-basil:#0F2B1A; --basil-soft:#1E3326; --basil-ink:#A6E0B9;
  --butter:#F2CD6A; --butter-soft:#3A2F12; --butter-ink:#F5D98A;
  --danger:#FF9D8E; --on-danger:#3A0F0A; --danger-soft:#3C1E1B; --danger-ink:#FFB4A8;
  --info:#8DBCE8; --info-soft:#1D2D3C; --info-ink:#A9CDF0;
  --focus:#8DB8FF;
  --cat-veg:#8FD6A6;   --cat-veg-s:#1E3326;
  --cat-fish:#9CC6EE;  --cat-fish-s:#1D2D3C;
  --cat-meat:#FFAA99;  --cat-meat-s:#3C1E1B;
  --cat-soup:#F2C877;  --cat-soup-s:#3A2D12;
  --cat-salad:#C9DB7A; --cat-salad-s:#2C3310;
  --cat-other:#C9B9A8; --cat-other-s:#33291F;
  --gingham:rgba(127,203,152,.12);
  --sh-1:0 1px 2px rgba(0,0,0,.4);
  --sh-2:0 2px 4px rgba(0,0,0,.3),0 10px 24px rgba(0,0,0,.4);
  --sh-3:0 18px 48px rgba(0,0,0,.6);
}

/* Jetons non thématiques */
:root{
  --font-display:"Fraunces","Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;
  --font-body:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --fs-xs:12px; --fs-sm:14px; --fs-md:16px; --fs-lg:18px; --fs-xl:22px; --fs-2xl:28px; --fs-3xl:36px; --fs-4xl:48px;
  --s-1:4px; --s-2:8px; --s-3:12px; --s-4:16px; --s-5:24px; --s-6:32px; --s-7:48px; --s-8:64px;
  --r-sm:8px; --r-md:12px; --r-lg:18px; --r-xl:26px; --r-pill:999px;
  --ease:cubic-bezier(.2,.8,.2,1); --spring:cubic-bezier(.34,1.56,.64,1);
  --t-fast:120ms; --t-med:220ms; --t-slow:420ms;
  --tap:44px;
}

/* ---------- Base ---------- */
.k-app{background:var(--bg);color:var(--text);font:400 16px/1.5 var(--font-body);-webkit-font-smoothing:antialiased;text-size-adjust:100%}
.k-app *,.k-app *::before,.k-app *::after{box-sizing:border-box}
.k-app h1,.k-app h2,.k-app h3,.k-app h4{font-family:var(--font-display);font-weight:600;letter-spacing:-.01em;line-height:1.15;margin:0}
.k-app p{margin:0}
/* Modif Kitcho : :where() annule la spécificité, sinon cette règle écrase la couleur de .k-btn, .k-tab, .k-logo… sur les <a> */
:where(.k-app) a{color:var(--brand-ink)}
.k-display{font-family:var(--font-display);font-weight:600;letter-spacing:-.015em}
.k-eyebrow{font:700 12px/1.2 var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.k-muted{color:var(--muted)}
.k-num{font-variant-numeric:tabular-nums}
.k-app :focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:6px}

/* Vichy : motif signature (bandeaux, états vides, page de partage) */
.k-gingham{background-color:var(--surface);background-image:repeating-linear-gradient(0deg,var(--gingham) 0 10px,transparent 10px 20px),repeating-linear-gradient(90deg,var(--gingham) 0 10px,transparent 10px 20px)}

/* ---------- Pictogrammes (masques CSS, 1 couleur = currentColor) ---------- */
.k-i{display:inline-block;width:22px;height:22px;flex:none;background:currentColor;-webkit-mask:var(--ic) center/contain no-repeat;mask:var(--ic) center/contain no-repeat}
.k-i--sm{width:16px;height:16px}
.k-i--lg{width:28px;height:28px}
.k-i--xl{width:40px;height:40px}
.i-check{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E")}
.i-plus{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E")}
.i-x{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E")}
.i-refresh{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 11a8 8 0 0 0-14.5-4.2L4 9M4 4v5h5M4 13a8 8 0 0 0 14.5 4.2L20 15M20 20v-5h-5'/%3E%3C/svg%3E")}
.i-down{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}
.i-up{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 15l6-6 6 6'/%3E%3C/svg%3E")}
.i-left{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 5l-7 7 7 7'/%3E%3C/svg%3E")}
.i-right{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 5l7 7-7 7'/%3E%3C/svg%3E")}
.i-more{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3.6' stroke-linecap='round'%3E%3Cpath d='M5 12h.01M12 12h.01M19 12h.01'/%3E%3C/svg%3E")}
.i-sun{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2.5v2M12 19.5v2M2.5 12h2M19.5 12h2M5.3 5.3l1.4 1.4M17.3 17.3l1.4 1.4M5.3 18.7l1.4-1.4M17.3 6.7l1.4-1.4'/%3E%3C/svg%3E")}
.i-moon{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.5A8 8 0 0 1 9.5 4 8 8 0 1 0 20 14.5z'/%3E%3C/svg%3E")}
.i-eyeoff{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 3l18 18M10.6 5.1A9.6 9.6 0 0 1 12 5c5 0 8.5 4.2 9.5 7-.4 1.1-1.2 2.4-2.4 3.6M6.5 6.8C4.6 8.2 3.3 10.2 2.5 12c1 2.8 4.5 7 9.5 7 1.4 0 2.7-.3 3.8-.8M9.9 10a3 3 0 0 0 4.1 4.1'/%3E%3C/svg%3E")}
.i-copy{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='11' height='11' rx='2.5'/%3E%3Cpath d='M5 15V6.5A2.5 2.5 0 0 1 7.5 4H15'/%3E%3C/svg%3E")}
.i-print{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 9V4h10v5M7 17H5a1 1 0 0 1-1-1v-5a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a1 1 0 0 1-1 1h-2M7 14h10v6H7z'/%3E%3C/svg%3E")}
.i-star{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.5l2.6 5.4 5.9.8-4.3 4.1 1 5.9L12 17l-5.2 2.7 1-5.9L3.5 9.7l5.9-.8z'/%3E%3C/svg%3E")}
.i-starfill{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23000' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.5l2.6 5.4 5.9.8-4.3 4.1 1 5.9L12 17l-5.2 2.7 1-5.9L3.5 9.7l5.9-.8z'/%3E%3C/svg%3E")}
.i-external{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4h6v6M20 4l-9 9M18 14v4.5a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 4 18.5v-11A1.5 1.5 0 0 1 5.5 6H10'/%3E%3C/svg%3E")}
.i-warn{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4l9 16H3zM12 10v4M12 17h.01'/%3E%3C/svg%3E")}
.i-info{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v5M12 8h.01'/%3E%3C/svg%3E")}
.i-wifioff{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 3l18 18M2 9a15 15 0 0 1 5-3M9 9.5a10 10 0 0 1 11 2M5.5 13a10 10 0 0 1 3-1.8M9 16.5a5 5 0 0 1 5-1M12 20h.01'/%3E%3C/svg%3E")}
.i-trash{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7h16M10 11v6M14 11v6M6 7l1 12.5A1.5 1.5 0 0 0 8.5 21h7a1.5 1.5 0 0 0 1.5-1.5L18 7M9 7V4h6v3'/%3E%3C/svg%3E")}
.i-user{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 20c0-4 3.6-6 8-6s8 2 8 6'/%3E%3C/svg%3E")}
.i-mail{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='3'/%3E%3Cpath d='M3.5 7l8.5 6.5L20.5 7'/%3E%3C/svg%3E")}
.i-spark{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8zM19 16v4M17 18h4'/%3E%3C/svg%3E")}
.i-link{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1'/%3E%3C/svg%3E")}
.i-share{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='6' cy='12' r='2.5'/%3E%3Ccircle cx='18' cy='6' r='2.5'/%3E%3Ccircle cx='18' cy='18' r='2.5'/%3E%3Cpath d='M8.2 10.8l7.6-3.6M8.2 13.2l7.6 3.6'/%3E%3C/svg%3E")}
.i-logout{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 4H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h4M15 8l4 4-4 4M19 12H9'/%3E%3C/svg%3E")}
.i-search{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='M16 16l4.5 4.5'/%3E%3C/svg%3E")}
.i-edit{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20l1-4L16.5 4.5a2 2 0 0 1 3 3L8 19z'/%3E%3C/svg%3E")}
.i-lock{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='9' rx='2.5'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E")}
/* Navigation */
.i-week{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5' width='17' height='15.5' rx='3'/%3E%3Cpath d='M3.5 10h17M8 3v4M16 3v4M8 14h2M14 14h2'/%3E%3C/svg%3E")}
.i-month{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5' width='17' height='15.5' rx='3'/%3E%3Cpath d='M3.5 10h17M8 3v4M16 3v4M8 14h.01M12 14h.01M16 14h.01M8 17.4h.01M12 17.4h.01'/%3E%3C/svg%3E")}
.i-basket{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9h18l-1.7 9.2A2 2 0 0 1 17.3 20H6.7a2 2 0 0 1-2-1.8zM8 9l3-5M16 9l-3-5'/%3E%3C/svg%3E")}
.i-book{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 6.5C10 5 7 4.5 4 5v13c3-.5 6 0 8 1.5 2-1.5 5-2 8-1.5V5c-3-.5-6 0-8 1.5zM12 6.5v13'/%3E%3C/svg%3E")}
.i-home{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11l8-7 8 7M6 9.5V19a1 1 0 0 0 1 1h3.5v-5.5h3V20H17a1 1 0 0 0 1-1V9.5'/%3E%3C/svg%3E")}
/* Catégories de recettes */
.i-leaf{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 19C5 10 10 5 20 4c0 10-5 15-14 15M5 19l7-7'/%3E%3C/svg%3E")}
.i-fish{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 12c2.5-3.8 6-5.5 10-5.5 2.6 0 4.8 1.4 6.5 3.5L22 8v8l-3-2c-1.7 2.1-3.9 3.5-6.5 3.5-4 0-7.5-1.7-10-5.5z'/%3E%3Cpath d='M7.5 11.2h.01' stroke-width='2.6'/%3E%3C/svg%3E")}
.i-meat{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 4.5a5.5 5.5 0 0 1 5 8c-1 1.8-3 3-5 3l-2.3-.2-4.4 4.4a2 2 0 0 1-2.8-2.8l4.4-4.4L9 10.2c0-2 1.2-4 3-5a5.5 5.5 0 0 1 2.5-.7z'/%3E%3C/svg%3E")}
.i-soup{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 12h17a8.5 8.5 0 0 1-17 0zM9 21h6M8.5 4c-1 1 1 2 0 3.5M12.5 4c-1 1 1 2 0 3.5M16.5 4c-1 1 1 2 0 3.5'/%3E%3C/svg%3E")}
.i-salad{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 12.5h17a8.5 8.5 0 0 1-17 0zM8 12c0-3 1.5-5 4-6 .5 3-1 5.5-4 6zM13 12c0-2.5 2-4.5 5-5 0 2.5-2 4.5-5 5'/%3E%3C/svg%3E")}
.i-plate{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='8.5'/%3E%3Ccircle cx='12' cy='12' r='4.5'/%3E%3C/svg%3E")}
/* Rayons */
.i-apple{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 8c-1.5-1.2-5-1.5-6.5 1.5-1.4 3 .5 8.5 3 10 1.2.7 2.2.2 3.5.2s2.3.5 3.5-.2c2.5-1.5 4.4-7 3-10C17 6.5 13.5 6.8 12 8zM12 8c0-2 1-3.5 3-4.5'/%3E%3C/svg%3E")}
.i-bread{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='9.2' width='20' height='5.6' rx='2.8' transform='rotate(-45 12 12)'/%3E%3Cpath d='M7.5 14.5l2 2M11 11l2 2M14.5 7.5l2 2'/%3E%3C/svg%3E")}
.i-milk{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 3h8l1 4v13a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V7zM7 7h10M7 12.5h10'/%3E%3C/svg%3E")}
.i-jar{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='7' y='3.5' width='10' height='3.5' rx='1'/%3E%3Cpath d='M6.5 8.5a2 2 0 0 1 2-1.5h7a2 2 0 0 1 2 1.5V19a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2zM6.5 12h11'/%3E%3C/svg%3E")}
.i-snow{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3v18M4.2 7.5l15.6 9M4.2 16.5l15.6-9M9.5 4.5L12 7l2.5-2.5M9.5 19.5L12 17l2.5 2.5'/%3E%3C/svg%3E")}
.i-glass{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 3h8l-.7 8a3.3 3.3 0 0 1-6.6 0zM12 14.5V20M8.5 20h7'/%3E%3C/svg%3E")}
.i-bag{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 8h14l-1 12H6zM9 8V6a3 3 0 0 1 6 0v2'/%3E%3C/svg%3E")}
/* Logo (cocotte cochée) en masque, pour le favicon monochrome */
.i-pot{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Ccircle cx='32' cy='13' r='4.5'/%3E%3Cpath d='M11 33c0-9 9-13 21-13s21 4 21 13z'/%3E%3Cpath fill-rule='evenodd' d='M14 36h36a8 8 0 0 1 8 8v2a8 8 0 0 1-8 8H14a8 8 0 0 1-8-8v-2a8 8 0 0 1 8-8zM22.16 45.74L29.1 52.69L41.84 39.94L39.16 37.26L29.1 47.31L24.84 43.06z' stroke='none'/%3E%3C/svg%3E")}

/* ---------- Boutons ---------- */
.k-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 20px;border-radius:var(--r-md);border:1.5px solid transparent;background:transparent;color:var(--text);font:600 16px/1.1 var(--font-body);text-decoration:none;cursor:pointer;transition:background var(--t-fast),transform var(--t-fast) var(--ease),box-shadow var(--t-fast);white-space:nowrap}
.k-btn:active{transform:translateY(1px) scale(.98)}
.k-btn--primary{background:var(--brand);color:var(--on-brand);box-shadow:0 2px 0 rgba(0,0,0,.14)}
.k-btn--primary:hover{background:var(--brand-hover)}
.k-btn--secondary{background:var(--surface);border-color:var(--border-strong);color:var(--text)}
.k-btn--secondary:hover{background:var(--surface-2)}
.k-btn--ghost{color:var(--brand-ink)}
.k-btn--ghost:hover{background:var(--brand-soft)}
.k-btn--danger{background:var(--danger);color:var(--on-danger)}
.k-btn--danger-o{border-color:var(--danger);color:var(--danger-ink);background:transparent}
.k-btn--sm{min-height:44px;padding:0 14px;font-size:14px}
.k-btn--block{display:flex;width:100%}
.k-btn[disabled]{opacity:1;background:var(--surface-3);color:var(--muted);border-color:transparent;box-shadow:none;cursor:not-allowed}
.k-iconbtn{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:var(--r-md);border:0;background:transparent;color:var(--text);cursor:pointer;flex:none}
.k-iconbtn:hover{background:var(--surface-2)}
.k-iconbtn--tint{background:var(--surface-2)}

/* Pastilles à bascule (toolbar) : l'état actif porte aussi une coche */
.k-pill{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border-radius:var(--r-pill);border:1.5px solid var(--border-strong);background:var(--surface);color:var(--text);font:600 14px/1 var(--font-body);cursor:pointer;white-space:nowrap}
.k-pill[aria-pressed="true"]{background:var(--basil-soft);border-color:var(--basil);color:var(--basil-ink)}

/* Puces de jours : Lun … Dim */
.k-day{position:relative;display:inline-grid;place-items:center;width:48px;height:48px;border-radius:var(--r-pill);border:1.5px solid var(--border-strong);background:var(--surface);color:var(--text);font:600 14px/1 var(--font-body);cursor:pointer}
.k-day[aria-pressed="true"]{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}
.k-day[aria-pressed="true"]::after{content:"";position:absolute;top:-4px;right:-4px;width:18px;height:18px;border-radius:50%;border:2px solid var(--bg);background:var(--basil);box-sizing:border-box}
.k-day[aria-pressed="true"]::before{content:"";position:absolute;top:-4px;right:-4px;width:18px;height:18px;z-index:1;background:var(--on-basil);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 12.5l3.5 3.5L17 9'/%3E%3C/svg%3E") center/100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 12.5l3.5 3.5L17 9'/%3E%3C/svg%3E") center/100% no-repeat}

/* ---------- Champs ---------- */
.k-field{display:flex;flex-direction:column;gap:6px}
.k-label{font:600 14px/1.3 var(--font-body);color:var(--text)}
.k-input,.k-select,.k-textarea{width:100%;min-height:48px;padding:12px 14px;border:1.5px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);color:var(--text);font:400 16px/1.4 var(--font-body)}
.k-textarea{min-height:104px;resize:vertical}
.k-input::placeholder,.k-textarea::placeholder{color:var(--muted)}
.k-input:focus,.k-select:focus,.k-textarea:focus{outline:3px solid var(--focus);outline-offset:1px;border-color:var(--text)}
.k-help{font-size:13px;line-height:1.4;color:var(--muted)}
.k-searchbox{position:relative}
.k-searchbox .k-i{position:absolute;left:14px;top:13px;color:var(--muted)}
.k-searchbox .k-input{padding-left:44px}
.k-selectwrap{position:relative}
.k-selectwrap .k-select{appearance:none;-webkit-appearance:none;padding-right:42px}
.k-selectwrap .k-i{position:absolute;right:12px;top:13px;pointer-events:none;color:var(--muted)}
.k-check{display:flex;align-items:center;gap:12px;min-height:44px;cursor:pointer;font-size:15px}
.k-check input{width:24px;height:24px;margin:0;accent-color:var(--brand)}

/* ---------- Badges ---------- */
.k-badge{--c:var(--cat-other);--cs:var(--cat-other-s);display:inline-flex;align-items:center;gap:5px;min-height:24px;padding:2px 10px 2px 8px;border-radius:var(--r-pill);background:var(--cs);color:var(--c);font:700 12px/1.2 var(--font-body);white-space:nowrap}
.k-badge .k-i{width:14px;height:14px}
.cat-veg{--c:var(--cat-veg);--cs:var(--cat-veg-s)}
.cat-fish{--c:var(--cat-fish);--cs:var(--cat-fish-s)}
.cat-meat{--c:var(--cat-meat);--cs:var(--cat-meat-s)}
.cat-soup{--c:var(--cat-soup);--cs:var(--cat-soup-s)}
.cat-salad{--c:var(--cat-salad);--cs:var(--cat-salad-s)}
.cat-other{--c:var(--cat-other);--cs:var(--cat-other-s)}
.k-badge--manual{background:transparent;border:1.5px dashed var(--border-strong);color:var(--muted)}
.k-badge--admin{background:var(--brand-soft);color:var(--brand-ink)}
.k-badge--member{background:var(--surface-3);color:var(--text)}
.k-badge--today{background:var(--butter);color:#3B2A00}
.k-count{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:26px;padding:0 10px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--muted);font:700 13px/1 var(--font-body);font-variant-numeric:tabular-nums}
.k-count--done{background:var(--basil-soft);color:var(--basil-ink)}

/* Vignette de recette sans photo : couleur + motif + pictogramme */
.k-thumb{--c:var(--cat-other);--cs:var(--cat-other-s);position:relative;display:grid;place-items:center;width:52px;height:52px;border-radius:16px;background:var(--cs);color:var(--c);flex:none;overflow:hidden}
.k-thumb::before{content:"";position:absolute;inset:0;background-image:radial-gradient(currentColor 1.1px,transparent 1.6px);background-size:9px 9px;opacity:.22}
.k-thumb .k-i{position:relative}
.k-thumb--lg{width:88px;height:88px;border-radius:24px}
.k-thumb--lg .k-i{width:40px;height:40px}

/* ---------- Cartes ---------- */
.k-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-1)}
.k-card--pad{padding:16px}
.k-card--raised{box-shadow:var(--sh-2)}

/* ---------- Ligne de courses (élément clé) ---------- */
.k-row{position:relative;display:flex;align-items:center;gap:14px;min-height:64px;padding:12px 16px;border-top:1px solid var(--border);cursor:pointer;transition:background var(--t-fast)}
.k-row:first-child{border-top:0}
.k-row:active{background:var(--surface-2)}
.k-row__input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.k-box{display:grid;place-items:center;width:32px;height:32px;flex:none;border-radius:10px;border:2px solid var(--border-strong);background:var(--surface);color:var(--on-basil);transition:background var(--t-med) var(--ease),border-color var(--t-med),transform var(--t-med) var(--spring)}
.k-box .k-i{width:20px;height:20px;transform:scale(.3);opacity:0;transition:transform var(--t-med) var(--spring),opacity var(--t-fast)}
.k-row__input:checked ~ .k-box{background:var(--basil);border-color:var(--basil);transform:scale(1.06)}
.k-row__input:checked ~ .k-box .k-i{transform:scale(1);opacity:1}
.k-row__input:focus-visible ~ .k-box{outline:3px solid var(--focus);outline-offset:3px}
.k-row__body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.k-row__line{font-size:17px;line-height:1.3}
.k-qty{font-weight:700;font-variant-numeric:tabular-nums;margin-right:4px}
.k-meta{font-size:13px;line-height:1.35;color:var(--muted)}
.k-row__input:checked ~ .k-row__body .k-row__line{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1.5px}
.k-row__input:checked ~ .k-row__body .k-qty{font-weight:600}

/* Rayon (repliable) */
.k-aisle{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-1)}
.k-aisle__head{display:flex;align-items:center;gap:12px;width:100%;min-height:60px;padding:10px 16px;border:0;background:transparent;color:var(--text);text-align:left;cursor:pointer;font:inherit}
.k-aisle__icon{display:grid;place-items:center;width:40px;height:40px;border-radius:14px;background:var(--brand-soft);color:var(--brand-ink);flex:none}
.k-aisle__name{flex:1;font:600 19px/1.2 var(--font-display);letter-spacing:-.01em}
.k-aisle__chev{color:var(--muted);transition:transform var(--t-med) var(--ease)}
.k-aisle.is-closed .k-aisle__chev{transform:rotate(-90deg)}
.k-aisle.is-closed .k-aisle__body{display:none}
.k-aisle.is-done .k-aisle__icon{background:var(--basil-soft);color:var(--basil-ink)}
.k-aisle__body{border-top:1px solid var(--border)}

/* Progression */
.k-progress{display:flex;flex-direction:column;gap:8px}
.k-progress__top{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.k-progress__num{font:600 28px/1 var(--font-display);font-variant-numeric:tabular-nums}
.k-progress__num small{font:600 15px/1 var(--font-body);color:var(--muted);margin-left:4px}
.k-progress__track{height:12px;border-radius:var(--r-pill);background:var(--surface-3);overflow:hidden}
.k-progress__fill{height:100%;border-radius:var(--r-pill);background:var(--basil);transition:width var(--t-slow) var(--ease)}

/* ---------- Bandeaux & messages ---------- */
.k-banner{--bc:var(--info);--bs:var(--info-soft);--bi:var(--info-ink);display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:var(--r-md);border:1.5px solid var(--bc);background:var(--bs);color:var(--bi);font-size:15px;line-height:1.4}
.k-banner > .k-i{margin-top:1px}
.k-banner__body{flex:1;min-width:0}
.k-banner__body b{display:block}
.k-banner__act{display:inline-flex;align-items:center;min-height:44px;margin:-8px -6px -8px 0;padding:0 12px;border-radius:10px;border:0;background:transparent;color:inherit;font:700 14px/1 var(--font-body);text-decoration:underline;text-underline-offset:3px;cursor:pointer;white-space:nowrap}
.k-banner--ok{--bc:var(--basil);--bs:var(--basil-soft);--bi:var(--basil-ink)}
.k-banner--warn{--bc:var(--butter-ink);--bs:var(--butter-soft);--bi:var(--butter-ink)}
.k-banner--err{--bc:var(--danger);--bs:var(--danger-soft);--bi:var(--danger-ink)}
.k-banner--off{--bc:var(--border-strong);--bs:var(--surface-2);--bi:var(--text)}

/* ---------- Dépliants ---------- */
.k-details{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}
.k-details > summary{display:flex;align-items:center;gap:12px;min-height:56px;padding:8px 16px;font:600 16px/1.2 var(--font-body);cursor:pointer;list-style:none}
.k-details > summary::-webkit-details-marker{display:none}
.k-details > summary .k-i:last-child{margin-left:auto;color:var(--muted);transition:transform var(--t-med) var(--ease)}
.k-details[open] > summary .k-i:last-child{transform:rotate(180deg)}
.k-details__body{padding:4px 16px 16px;border-top:1px solid var(--border)}

/* ---------- Navigation ---------- */
.k-appbar{display:flex;align-items:center;gap:12px;padding:12px 16px}
.k-logo{display:inline-flex;align-items:center;gap:10px;color:var(--text);text-decoration:none;font:700 22px/1 var(--font-display);letter-spacing:-.02em}
.k-logo svg{display:block}
.k-tabbar{display:grid;grid-template-columns:repeat(5,1fr);align-items:end;padding:6px 6px calc(8px + env(safe-area-inset-bottom,0px));background:var(--surface);border-top:1px solid var(--border);box-shadow:0 -8px 24px rgba(74,44,20,.07)}
.k-tab{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:56px;padding:4px 2px;color:var(--muted);text-decoration:none;font:600 12px/1.1 var(--font-body)}
.k-tab__ico{display:grid;place-items:center;width:58px;height:32px;border-radius:var(--r-pill)}
.k-tab[aria-current="page"]{color:var(--brand-ink);font-weight:700}
.k-tab[aria-current="page"] .k-tab__ico{background:var(--brand-soft)}
.k-tab--cta .k-tab__ico{width:64px;height:44px;margin-top:-16px;background:var(--brand);color:var(--on-brand);box-shadow:var(--sh-2);border:3px solid var(--surface)}
.k-tab--cta{color:var(--text)}
.k-tab--cta[aria-current="page"] .k-tab__ico{background:var(--brand)}
.k-topbar{display:flex;align-items:center;gap:20px;padding:10px 24px;background:var(--surface);border-bottom:1px solid var(--border)}
.k-nav{display:flex;gap:4px;margin-left:12px}
.k-nav a{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:var(--r-pill);color:var(--muted);text-decoration:none;font:600 15px/1 var(--font-body)}
.k-nav a:hover{background:var(--surface-2);color:var(--text)}
.k-nav a[aria-current="page"]{background:var(--brand-soft);color:var(--brand-ink)}

/* ---------- Semaine ---------- */
.k-daycard{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-1)}
.k-daycard__head{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--surface-2);border-bottom:1px solid var(--border)}
.k-daycard__name{font:600 18px/1 var(--font-display)}
.k-daycard.is-today{border-color:var(--butter-ink);box-shadow:0 0 0 2px var(--butter),var(--sh-1)}
.k-daycard.is-today .k-daycard__head{background:var(--butter-soft)}
.k-meal{display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--border)}
.k-meal:first-of-type{border-top:0}
.k-meal__slot{display:inline-flex;align-items:center;gap:4px;font:700 11.5px/1 var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.k-meal__name{font:600 16px/1.25 var(--font-body);color:var(--text);text-decoration:none}
.k-meal__sub{font-size:13px;color:var(--muted);display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.k-add{display:flex;align-items:center;gap:8px;padding:8px 12px;border-top:1px dashed var(--border-strong)}

/* ---------- États vides ---------- */
.k-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:32px 24px;text-align:center}
.k-empty h2{font-size:24px}
.k-empty p{color:var(--muted);max-width:30ch}

/* ---------- Feuille d'ajout, toast ---------- */
.k-sheet{background:var(--surface);border:1.5px dashed var(--border-strong);border-radius:var(--r-lg);padding:16px;display:flex;flex-direction:column;gap:12px}
.k-toast{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:var(--r-md);background:var(--text);color:var(--bg);box-shadow:var(--sh-3);font:600 15px/1.3 var(--font-body)}

/* ---------- Mouvement ---------- */
@keyframes k-pop{0%{transform:scale(1)}40%{transform:scale(1.14)}100%{transform:scale(1)}}
@keyframes k-rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.k-app *,.k-app *::before,.k-app *::after{transition:none!important;animation:none!important}}

/* ---------- Impression : liste de courses ---------- */
@media print{
  .k-app{background:#fff;color:#000}
  .k-tabbar,.k-topbar,.k-appbar,.k-noprint,.k-btn,.k-pill{display:none!important}
  .k-aisle{box-shadow:none;border:0;border-bottom:1px solid #999;border-radius:0;break-inside:avoid}
  .k-aisle.is-closed .k-aisle__body{display:block}
  .k-box{border-color:#000;background:#fff;border-radius:3px;width:18px;height:18px}
  .k-box .k-i{display:none}
  .k-row{min-height:0;padding:4px 8px;border-top:0}
  .k-meta{color:#333}
}
