:root{--color-toast-bg: #242b18}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--color-toast-bg: var(--color-surface)}}:root[data-theme=dark]{--color-toast-bg: var(--color-surface)}.field{display:flex;flex-direction:column;gap:var(--space-xs)}.field__label{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.field__required{padding-left:var(--space-xs);color:var(--color-error)}.field__input,.field__textarea,.field__select{width:100%;min-height:var(--control-height-lg);padding:var(--space-sm) var(--space-md);font-family:var(--font-family);font-size:1rem;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--duration-fast) var(--easing-standard)}.field__input::placeholder,.field__textarea::placeholder{color:var(--color-text-placeholder)}.field__input:focus,.field__textarea:focus,.field__select:focus{border-color:var(--color-border-focus);outline:none}.field__input:disabled,.field__textarea:disabled,.field__select:disabled{color:var(--color-text-disabled);background:var(--color-surface-hover)}.field__textarea{overflow:hidden;resize:none;line-height:1.5}.field__input--number{text-align:right;font-variant-numeric:tabular-nums}.field__control{display:flex;align-items:stretch}.field__control .field__input{border-top-right-radius:0;border-bottom-right-radius:0}.field__suffix{display:grid;place-items:center;flex:none;min-width:64px;padding:0 var(--space-md);font-size:var(--font-size-md);color:var(--color-text-secondary);background:var(--color-surface-hover);border:1px solid var(--color-border);border-left:0;border-radius:0 var(--radius-md) var(--radius-md) 0}.field__hint{margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.field__error{margin:0;font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-error)}.field--invalid .field__input,.field--invalid .field__textarea,.field--invalid .field__select{border-color:var(--color-error)}.checkbox-field{display:flex;gap:var(--space-md);align-items:flex-start;min-height:var(--control-height-lg);padding:var(--space-sm) 0;cursor:pointer}.checkbox-field__box{flex:none;width:24px;height:24px;margin:0;accent-color:var(--color-primary)}.checkbox-field__body{display:flex;flex-direction:column;gap:2px;min-width:0}.checkbox-field__label{color:var(--color-text)}.checkbox-field__hint{font-size:var(--font-size-md);color:var(--color-text-secondary)}.quantity-field{display:flex;gap:var(--space-sm);align-items:stretch}.quantity-field__value{flex:1 1 auto;min-width:0}.quantity-field__unit{flex:0 0 auto;width:140px}@media(max-width:360px){.quantity-field__unit{width:118px}}.picker{display:flex;flex-direction:column;gap:var(--space-xs)}.picker__listbox{margin:0;padding:0;list-style:none;max-height:264px;overflow-y:auto;overscroll-behavior:contain;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-normal)}.picker__option{display:flex;gap:var(--space-md);align-items:center;min-height:56px;padding:var(--space-sm) var(--space-md);cursor:pointer}.picker__body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.picker__option+.picker__option{border-top:1px solid var(--color-border)}.picker__option--active{background:var(--color-surface-hover)}.picker__option:active{background:var(--color-surface-pressed)}.picker__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker__meta{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:center;font-size:var(--font-size-md);color:var(--color-text-secondary)}.picker__piece{color:var(--color-accent)}.picker__status{margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.picker__status--error{color:var(--color-error)}.sheet{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;justify-content:flex-end}.sheet__backdrop{position:absolute;inset:0;background:var(--color-overlay);animation:sheet-fade var(--duration-fast) var(--easing-enter)}.sheet__panel{position:relative;display:flex;flex-direction:column;max-height:92dvh;background:var(--color-surface);border-radius:var(--radius-xl) var(--radius-xl) 0 0;box-shadow:var(--shadow-elevated);animation:sheet-rise var(--duration-normal) var(--easing-enter)}.sheet__panel:focus{outline:none}.sheet__header{display:flex;gap:var(--space-md);align-items:center;justify-content:space-between;padding:var(--space-lg) var(--space-lg) var(--space-md);border-bottom:1px solid var(--color-border)}.sheet__title{margin:0;font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold)}.sheet__close{display:grid;place-items:center;flex:none;width:var(--control-height-lg);height:var(--control-height-lg);font-size:var(--font-size-lg);color:var(--color-text-secondary);background:transparent;border:0;border-radius:var(--radius-full)}.sheet__close:active{background:var(--color-surface-pressed)}.sheet__body{display:flex;flex-direction:column;gap:var(--space-lg);overflow-y:auto;overscroll-behavior:contain;padding:var(--space-lg)}.sheet__body>*{flex-shrink:0}.sheet__message{margin:0;color:var(--color-text-secondary)}.sheet__actions{display:flex;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);padding-bottom:calc(var(--space-md) + var(--safe-bottom));border-top:1px solid var(--color-border)}.sheet__actions .button{flex:1;margin-top:0}.sheet--dialog .sheet__panel{max-height:80dvh}@media(min-width:720px){.sheet{align-items:center;justify-content:center}.sheet__panel{width:100%;max-width:560px;max-height:84dvh;border-radius:var(--radius-xl)}.sheet--dialog .sheet__panel{max-width:420px}.sheet__actions{padding-bottom:var(--space-md)}}@keyframes sheet-fade{0%{opacity:0}}@keyframes sheet-rise{0%{transform:translateY(6%);opacity:0}}.toast{position:fixed;right:var(--space-lg);bottom:calc(var(--above-tabbar) + var(--space-lg));left:var(--space-lg);z-index:200;display:flex;gap:var(--space-md);align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);color:var(--color-on-primary);background:var(--color-toast-bg);border-radius:var(--radius-md);box-shadow:var(--shadow-elevated);animation:toast-rise var(--duration-normal) var(--easing-enter)}.toast__message{min-width:0;font-size:var(--font-size-lg)}.toast__action{flex:none;min-height:var(--control-height-lg);padding:0 var(--space-md);font-weight:var(--font-weight-semibold);color:var(--color-on-primary);background:transparent;border:1px solid var(--color-border-hover);border-radius:var(--radius-sm)}.toast__action:active{background:var(--color-surface-pressed)}@media(min-width:720px){.toast{right:auto;left:50%;width:min(560px,calc(100% - var(--space-xxl)));transform:translate(-50%)}}@keyframes toast-rise{0%{transform:translateY(var(--space-lg));opacity:0}}@media(min-width:720px){@keyframes toast-rise{0%{transform:translate(-50%,var(--space-lg));opacity:0}}}.button--danger{color:var(--color-on-primary);background:var(--color-error)}.button--danger:active{background:var(--color-error-hover)}.button--success{color:var(--color-on-primary);background:var(--color-success)}.button--success:active{filter:brightness(.92)}.button--ghost{color:var(--color-primary-text);background:transparent;border-color:transparent}.button--ghost:active{background:var(--color-surface-pressed)}.button--block{width:100%}.button:disabled{cursor:default;opacity:.55}.form{display:flex;flex-direction:column;gap:var(--space-lg)}.form__row{display:flex;gap:var(--space-md);align-items:flex-end}.form__row>*{flex:1;min-width:0}.scanner{position:relative;display:flex;flex-direction:column;gap:var(--space-md)}.scanner__crayon{position:absolute;top:var(--space-md);right:var(--space-md);z-index:2;display:grid;place-items:center;width:var(--control-height-lg);height:var(--control-height-lg);color:#fff;background:#000000b3;backdrop-filter:blur(6px);border:0;border-radius:var(--radius-full)}.scanner__crayon--actif{color:var(--color-on-primary);background:var(--color-primary)}.scanner--plein{flex:1;min-height:0;gap:0}.scanner--plein .scanner__stage{flex:1;min-height:0;aspect-ratio:auto;border-radius:0}.scanner__manual{display:flex;flex-direction:column;gap:var(--space-md)}.scanner--plein .scanner__manual{padding:var(--space-lg);color:#fff}.scanner__stage{position:relative;aspect-ratio:4 / 3;overflow:hidden;background:#000;border-radius:var(--radius-lg)}.scanner__stage--message{display:grid;place-content:center;gap:var(--space-sm);padding:var(--space-lg);aspect-ratio:auto;min-height:140px;text-align:center;background:var(--color-surface-hover)}.scanner__video{width:100%;height:100%;object-fit:cover}.viseur{position:absolute;top:50%;left:50%;width:76%;max-width:240px;aspect-ratio:1;transform:translate(-50%,-50%);box-shadow:0 0 0 100vmax #0006}.viseur__coin{position:absolute;width:34px;height:34px;border:3px solid #fff;border-radius:8px}.viseur__coin--hg{top:0;left:0;border-right:0;border-bottom:0}.viseur__coin--hd{top:0;right:0;border-bottom:0;border-left:0}.viseur__coin--bg{bottom:0;left:0;border-top:0;border-right:0}.viseur__coin--bd{right:0;bottom:0;border-top:0;border-left:0}.viseur__ligne{position:absolute;top:50%;right:10px;left:10px;height:2px;background:var(--color-nutrient-carbs);box-shadow:0 0 14px var(--color-nutrient-carbs);animation:balayage 2.4s var(--easing-standard) infinite}@keyframes balayage{0%,to{transform:translateY(-70px)}50%{transform:translateY(70px)}}@media(prefers-reduced-motion:reduce){.viseur__ligne{animation:none}}.viseur__astuce{position:absolute;top:var(--space-lg);left:50%;z-index:1;margin:0;padding:7px var(--space-lg);font-size:var(--font-size-md);color:#fff;white-space:nowrap;background:#000000b3;backdrop-filter:blur(6px);border-radius:var(--radius-full);transform:translate(-50%)}.scanner__overlay{position:absolute;inset:auto 0 var(--space-md);margin:0;color:#fff;text-align:center}.scanner__hint{margin:0;padding:var(--space-sm) var(--space-md);font-weight:var(--font-weight-medium);color:var(--color-success);background:var(--color-surface-hover);border-radius:var(--radius-md)}.macros{display:flex;justify-content:center;margin-top:var(--space-md)}.macros__chart{flex:none;width:140px;height:140px}.macros__track{stroke:var(--color-border)}.macros__center{fill:var(--color-text);font-size:20px;font-weight:var(--font-weight-bold)}.macros__center-sub{fill:var(--color-text-secondary);font-size:9px}.macro-bar{display:flex;width:100%;height:6px;margin-top:5px;overflow:hidden;background:var(--color-border);border-radius:var(--radius-full)}.macro-bar--fine{height:4px;margin-top:4px}.macro-cells{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-sm)}.macro-cell{display:flex;flex-direction:column;gap:2px;align-items:center;padding:var(--space-sm) var(--space-xs);text-align:center;border-radius:var(--radius-md)}.macro-cell__value{font-size:var(--font-size-lg);line-height:1.1}.macro-cell__unit{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);line-height:1.2}.macro-cell--energy{color:var(--color-nutrient-energy-ink);background:var(--color-nutrient-energy-pale)}.macro-cell--proteins{color:var(--color-nutrient-proteins-ink);background:var(--color-nutrient-proteins-pale)}.macro-cell--carbs{color:var(--color-nutrient-carbs-ink);background:var(--color-nutrient-carbs-pale)}.macro-cell--fats{color:var(--color-nutrient-fats-ink);background:var(--color-nutrient-fats-pale)}.chiffre{font-family:var(--font-family-display);font-weight:var(--font-weight-extrabold);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.macro-bar__part{display:block;flex-basis:0}.macro-bar__part--fats{background:var(--color-nutrient-fats)}.macro-bar__part--carbs{background:var(--color-nutrient-carbs)}.macro-bar__part--fiber{background:var(--color-nutrient-fiber)}.macro-bar__part--proteins{background:var(--color-nutrient-proteins)}.radios{min-width:0;padding:0;margin:0;border:0}.radios__legend{padding:0;margin-bottom:var(--space-xs);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.radios__legend--muet{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.radio{display:flex;gap:var(--space-md);align-items:flex-start;min-height:var(--control-height-lg);padding:var(--space-sm) 0;cursor:pointer;border-bottom:1px solid var(--color-border)}.radio:last-of-type{border-bottom:0;padding-bottom:2px}.radio__puce{flex:none;width:21px;height:21px;margin:2px 0 0;accent-color:var(--color-primary)}.radio__corps{display:flex;flex-direction:column;gap:2px;min-width:0}.radio__label{color:var(--color-text)}.radio--on .radio__label{font-weight:var(--font-weight-semibold)}.radio__hint{font-size:var(--font-size-md);line-height:1.35;color:var(--color-text-secondary)}.radios--invalid .radio__puce{accent-color:var(--color-error)}.rayon-row{width:100%;font:inherit;color:inherit;text-align:left;background:transparent;border:0}.rayon-row:active{background:var(--color-surface-pressed)}.rayon-preview{display:flex;gap:var(--space-md);align-items:center;padding:var(--space-md);background:var(--color-surface-hover);border-radius:var(--radius-md)}.rayon-preview__name{font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.04em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rayon-choices{margin:0;padding:0;border:0}.rayon-icons,.rayon-colors{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-xs)}.rayon-icons__cell{display:grid;place-items:center;width:44px;height:44px;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.rayon-icons__cell--on{color:var(--color-primary-text);border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}.rayon-colors__cell{position:relative;display:grid;place-items:center;width:36px;height:36px;color:#fff;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);cursor:pointer}.rayon-colors__cell--on{box-shadow:0 0 0 2px var(--color-surface),0 0 0 4px var(--color-text)}.rayon-colors__cell:first-child{color:var(--color-text-secondary)}.rayon-colors__cell--custom{color:var(--color-text-secondary);border-style:dashed}.rayon-colors__input{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;opacity:0;cursor:pointer}.icon-action{display:grid;place-items:center;flex:none;width:var(--control-height-lg);height:var(--control-height-lg);color:var(--color-text-secondary);background:transparent;border:0;border-radius:var(--radius-full)}.icon-action--danger{color:var(--color-error)}.field--inline{display:flex;gap:var(--space-md);align-items:flex-start}.field--inline input{flex:none;width:22px;height:22px;margin-top:2px;accent-color:var(--color-primary)}.field--inline .field__hint{display:block;margin-top:2px}.bilan{display:grid;grid-template-columns:132px 1fr;gap:var(--space-lg);align-items:center}.bilan__anneau{position:relative;display:grid;place-items:center;width:132px;height:132px}.bilan__anneau svg{width:100%;height:100%}.bilan__piste{stroke:var(--color-border)}.bilan__arc{stroke:var(--color-primary);transition:stroke-dasharray var(--duration-normal) var(--easing-standard)}.bilan__arc--depasse{stroke:var(--color-nutrient-proteins)}.bilan__coeur{position:absolute;display:flex;flex-direction:column;gap:1px;align-items:center;text-align:center}.bilan__reste{font-size:1.5rem;line-height:1}.bilan__unite{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.bilan__macros{display:flex;flex-direction:column;gap:var(--space-md);margin:0;padding:0;list-style:none}.bilan__macro-haut{display:flex;gap:var(--space-sm);align-items:baseline;justify-content:space-between;margin-bottom:3px;font-size:var(--font-size-md)}.bilan__macro-nom{font-weight:var(--font-weight-semibold)}.bilan__macro-nom--proteins{color:var(--color-nutrient-proteins-ink)}.bilan__macro-nom--carbs{color:var(--color-nutrient-carbs-ink)}.bilan__macro-nom--fats{color:var(--color-nutrient-fats-ink)}.bilan__macro-valeur{color:var(--color-text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap}.bilan__piste-macro{display:block;height:6px;overflow:hidden;background:var(--color-border);border-radius:var(--radius-full)}.bilan__jauge{display:block;height:100%;border-radius:var(--radius-full);transition:width var(--duration-normal) var(--easing-standard)}.bilan__jauge--proteins{background:var(--color-nutrient-proteins)}.bilan__jauge--carbs{background:var(--color-nutrient-carbs)}.bilan__jauge--fats{background:var(--color-nutrient-fats)}.bilan__note{grid-column:1 / -1;margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}@media(max-width:359px){.bilan{grid-template-columns:1fr;justify-items:center}.bilan__macros{width:100%}}.hydratation{display:flex;gap:var(--space-md);align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);background:var(--color-nutrient-fats-pale);border-radius:var(--radius-xl)}.hydratation__texte{display:flex;flex-direction:column;min-width:0}.hydratation__titre{font-weight:var(--font-weight-semibold);color:var(--color-nutrient-fats-ink)}.hydratation__valeur{font-size:var(--font-size-md);color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.hydratation__repere{font-size:var(--font-size-sm)}.hydratation__echec{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-error)}.hydratation__gouttes{display:flex;gap:4px}.goutte{width:12px;height:16px;background:var(--color-surface);border:1.5px solid var(--color-nutrient-fats);border-radius:50%/60% 60% 40% 40%}.goutte--pleine{background:var(--color-nutrient-fats)}@media(max-width:400px){.hydratation__gouttes{display:none}}.hydratation__boutons{display:flex;gap:var(--space-xs)}.hydratation__bouton{display:grid;place-items:center;width:var(--control-height-lg);height:var(--control-height-lg);color:var(--color-nutrient-fats-ink);background:var(--color-surface);border:0;border-radius:var(--radius-full)}.hydratation__bouton--plein{color:var(--color-on-primary);background:var(--color-nutrient-fats-ink)}.hydratation__bouton:disabled{opacity:.45;cursor:default}.card-entete{display:flex;gap:var(--space-sm);align-items:baseline;justify-content:space-between}.card-entete__titre{margin-bottom:0}.card-entete__valeur{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.accueil__vers-planning{display:flex;gap:var(--space-sm);align-items:center;justify-content:center;margin-top:var(--space-md)}.acces{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-md)}.acces__carte{display:flex;flex-direction:column;gap:2px;padding:var(--space-lg);color:var(--color-text);text-decoration:none;background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-subtle);transition:background var(--duration-fast) var(--easing-standard)}button.acces__carte{width:100%;text-align:left;border:0;font:inherit}.acces__carte:active{background:var(--color-surface-pressed)}.acces__icone{display:grid;place-items:center;width:40px;height:40px;margin-bottom:var(--space-xs);color:var(--color-primary-text);background:var(--color-surface-hover);border-radius:var(--radius-md)}.acces__label{font-family:var(--font-family-display);font-weight:var(--font-weight-bold)}.acces__detail{font-size:var(--font-size-md);color:var(--color-text-secondary)}.screen.screen--scan{gap:0;min-height:calc(var(--app-height) - var(--header-height) - var(--safe-top) - var(--above-tabbar));padding:0;max-width:none;background:#101813}.screen--scan .scanner__stage--message{color:var(--color-text);background:var(--color-surface);border-radius:0}.fiche-scan__marque{margin:0;color:var(--color-text-secondary)}.acces--destinations{grid-template-columns:1fr;gap:var(--space-sm)}.acces--destinations .acces__carte{display:grid;grid-template-columns:40px 1fr;gap:0 var(--space-md);align-items:center;padding:var(--space-md);box-shadow:none;background:var(--color-surface-hover)}.acces--destinations .acces__icone{grid-row:1 / 3;margin-bottom:0;background:var(--color-surface)}.jours{display:flex;flex-direction:column;gap:var(--space-sm);margin:0;padding:0;list-style:none}.jour{display:flex;flex-direction:column;gap:var(--space-sm);width:100%;padding:var(--space-md) var(--space-lg);color:var(--color-text);text-decoration:none;background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-subtle);transition:background var(--duration-fast) var(--easing-standard)}.jour:active{background:var(--color-surface-pressed)}.jour--aujourdhui{outline:2px solid var(--color-primary);outline-offset:-2px}.jour__haut{display:flex;gap:var(--space-sm);align-items:baseline}.jour__nom{font-family:var(--font-family-display);font-weight:var(--font-weight-bold)}.jour__date{color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.jour--aujourdhui .jour__nom{color:var(--color-primary-text)}.jour__valeur{margin-left:auto}.jour__libre{font-size:var(--font-size-md);color:var(--color-text-secondary)}.jour__kcal{font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums}.jour__kcal:after{content:" kcal";font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);color:var(--color-text-secondary)}.jour__chevron{flex:none;font-size:var(--font-size-xl);color:var(--color-text-placeholder)}.creneaux{display:flex;gap:5px;align-items:center}.creneau{width:9px;height:9px;background:transparent;border:1.5px solid var(--color-border-hover);border-radius:var(--radius-full)}.creneau--rempli{background:var(--color-primary);border-color:var(--color-primary)}.badge-jour{padding:2px var(--space-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);white-space:nowrap;border-radius:var(--radius-full)}.badge-jour--ok{color:var(--color-success);background:var(--color-nutrient-fiber-pale)}.badge-jour--encours{color:var(--color-primary-text);background:var(--color-surface-hover)}.jour-entete{display:flex;gap:var(--space-sm);align-items:baseline;justify-content:space-between}.jour-entete__titre{margin:0;font-family:var(--font-family-display);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold)}.jour-entete__kcal{font-size:var(--font-size-xl)}.jour-entete__kcal:after{content:" kcal";font-size:var(--font-size-md);font-weight:var(--font-weight-regular);color:var(--color-text-secondary)}.slot{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-subtle);overflow:hidden}.slot__header{display:flex;gap:var(--space-md);align-items:baseline;justify-content:space-between;padding:var(--space-md) var(--space-lg) var(--space-sm)}.slot__title{margin:0;font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary)}.slot__kcal{font-size:var(--font-size-md);font-variant-numeric:tabular-nums;color:var(--color-text-secondary)}.slot__list{margin:0;padding:0;list-style:none;border-top:1px solid var(--color-border)}.slot__list>li+li{border-top:1px solid var(--color-border)}.slot__add{display:flex;gap:var(--space-xs);align-items:center;justify-content:center;width:100%;min-height:var(--control-height-lg);padding:0 var(--space-lg);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-primary-text);background:transparent;border:0;border-top:1px solid var(--color-border)}.slot__add:active{background:var(--color-surface-pressed)}.meal__button{display:flex;gap:var(--space-md);align-items:center;width:100%;min-height:56px;padding:var(--space-sm) var(--space-lg);text-align:left;background:transparent;border:0}.meal__button:active{background:var(--color-surface-pressed)}.meal__body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.meal__ligne{display:flex;gap:var(--space-sm);align-items:baseline;justify-content:space-between}.meal__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meal__kcal{flex:none;font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums}.meal__kcal:after{content:" kcal";font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);color:var(--color-text-secondary)}.meal__composition{overflow:hidden;font-size:var(--font-size-md);color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap}.meal__meta{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:center;font-size:var(--font-size-md);color:var(--color-text-secondary)}.meal__chevron{flex:none;font-size:var(--font-size-xl);color:var(--color-text-placeholder)}.picked{display:flex;gap:var(--space-sm);align-items:center;padding:var(--space-xs) var(--space-xs) var(--space-xs) var(--space-md);background:var(--color-surface-hover);border:1px solid var(--color-border);border-radius:var(--radius-md)}.picked__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:var(--font-weight-medium)}.picked__clear{display:grid;place-items:center;flex:none;width:var(--control-height-lg);height:var(--control-height-lg);color:var(--color-text-secondary);background:transparent;border:0;border-radius:var(--radius-full)}.picked__clear:active{background:var(--color-surface-pressed)}.week-source{display:grid;grid-template-columns:var(--control-height-lg) 1fr var(--control-height-lg);align-items:center;padding:var(--space-xs);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.week-source__arrow{height:var(--control-height-lg);font-size:var(--font-size-xl);color:var(--color-text-secondary);background:transparent;border:0;border-radius:var(--radius-md)}.week-source__arrow:active{background:var(--color-surface-pressed)}.week-source__body{display:flex;flex-direction:column;gap:1px;align-items:center;min-width:0}.week-source__week{font-weight:var(--font-weight-semibold)}.week-source__meta{font-size:var(--font-size-md);color:var(--color-text-secondary)}.template-list{margin:0;padding:0;list-style:none}.template{display:flex;gap:var(--space-sm);align-items:center}.template+.template{border-top:1px solid var(--color-border)}.template__apply{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0;min-height:56px;padding:var(--space-sm) var(--space-xs);text-align:left;background:transparent;border:0}.template__apply:active{background:var(--color-surface-pressed)}.template__apply:disabled{cursor:default;opacity:.5}.template__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:var(--font-weight-medium)}.template__meta{font-size:var(--font-size-md);color:var(--color-text-secondary)}.template__delete{display:grid;place-items:center;flex:none;width:var(--control-height-lg);height:var(--control-height-lg);color:var(--color-text-secondary);background:transparent;border:0;border-radius:var(--radius-full)}.template__delete:active{color:var(--color-error);background:var(--color-surface-pressed)}.meal__cost{font-variant-numeric:tabular-nums;color:var(--color-accent)}.week-head{position:sticky;top:calc(var(--header-height) + var(--safe-top));z-index:12;display:flex;flex-direction:column;gap:var(--space-md);margin:calc(-1 * var(--space-lg)) calc(-1 * var(--space-lg)) 0;padding:var(--space-lg) var(--space-lg) var(--space-md);background:var(--color-background)}.week-head:after{content:"";position:absolute;right:0;bottom:0;left:0;height:1px;background:var(--color-border)}.profile-steps dd:last-of-type{font-weight:var(--font-weight-semibold);color:var(--color-text)}.profile-macros{display:flex;flex-direction:column;gap:var(--space-sm);margin:var(--space-md) 0 0;padding:0;list-style:none}.profile-macros li{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.profile-macros__value{font-variant-numeric:tabular-nums;color:var(--color-text-secondary);white-space:nowrap}.profile-macros__per-kg{display:block;font-size:var(--font-size-md);color:var(--color-text-placeholder)}.split-curseurs{display:flex;flex-direction:column;gap:var(--space-md);margin-top:var(--space-md)}.split-curseur{display:grid;grid-template-columns:1fr auto;gap:var(--space-xs) var(--space-sm)}.split-curseur__tete{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-sm);grid-column:1 / -1}.split-curseur__nom{font-weight:var(--font-weight-medium)}.split-curseur__part{font-variant-numeric:tabular-nums;color:var(--color-text-secondary)}.split-curseur__grammes{align-self:center;min-width:3.5rem;font-variant-numeric:tabular-nums;text-align:right;color:var(--color-text-placeholder)}.split-curseur__piste{width:100%;height:28px;margin:0;accent-color:var(--teinte);background:transparent}.split-curseur__piste--proteins{--teinte: var(--color-nutrient-proteins)}.split-curseur__piste--carbs{--teinte: var(--color-nutrient-carbs)}.split-curseur__piste--fats{--teinte: var(--color-nutrient-fats)}.effets__liste{display:flex;flex-direction:column;gap:var(--space-md);margin:var(--space-md) 0;padding:0;list-style:none}.effet{padding:var(--space-md);border-left:3px solid var(--color-warning);border-radius:var(--radius-md);background:var(--color-surface-hover)}.effet--serieux{border-left-color:var(--color-error)}.effet__constat{margin:0;font-weight:var(--font-weight-medium)}.effet__horizons{margin:var(--space-sm) 0 0}.effet__horizon+.effet__horizon{margin-top:var(--space-xs)}.effet__horizon dt{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.effet__horizon dd{margin:0;color:var(--color-text-secondary)}.profile-eta{display:flex;align-items:flex-start;gap:var(--space-sm);margin:var(--space-md) 0 0;color:var(--color-text-secondary)}.profile-final{margin:var(--space-md) 0 0;padding:var(--space-sm) var(--space-md);background:var(--color-surface-hover);border-radius:var(--radius-md)}.goal-bar{display:flex;flex-direction:column;gap:var(--space-xs)}.goal-bar__track{height:var(--space-sm);overflow:hidden;background:var(--color-surface-pressed);border-radius:var(--radius-full)}.goal-bar__fill{display:block;height:100%;background:var(--color-success);border-radius:var(--radius-full);transition:width var(--duration-normal) var(--easing-standard)}.goal-bar__fill--over{background:var(--color-warning)}.goal-bar__label{margin:0;color:var(--color-text-secondary)}.status--warn{display:flex;align-items:flex-start;gap:var(--space-sm);margin:var(--space-md) 0 0;color:var(--color-warning)}.screen.screen--reglages{padding-bottom:calc(var(--reserve-pied) + 140px)}.lignes{margin-top:var(--space-sm)}.field--ligne{display:grid;grid-template-columns:1fr auto;gap:var(--space-sm) var(--space-md);align-items:center;padding:var(--space-sm) 0}.lignes .field--ligne:not(:last-child){border-bottom:1px solid var(--color-border)}.field--ligne .field__label{margin:0;font-weight:var(--font-weight-semibold)}.field--ligne>.field__control,.field--ligne>.field__input{justify-self:end;width:auto;max-width:144px}.field--ligne>.field__control>.field__input{min-width:0;max-width:none}.field--ligne .field__input{text-align:right;font-variant-numeric:tabular-nums}.field--ligne .field__hint,.field--ligne .field__error{grid-column:1 / -1;margin:0}.directions{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-sm);margin-top:var(--space-sm)}.direction{display:flex;flex-direction:column;gap:var(--space-xs);align-items:center;justify-content:center;min-height:76px;padding:var(--space-md) var(--space-xs);font-family:inherit;font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);cursor:pointer;background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius-lg)}.direction--on{color:var(--color-primary-text);background:var(--color-surface-hover);border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}.direction__icone{color:var(--color-text-placeholder)}.direction--on .direction__icone{color:var(--color-primary-text)}.card__lead.directions__invite{margin-top:var(--space-md)}.contradiction{padding:var(--space-md);margin-top:var(--space-md);background:var(--color-warning-pale);border:1px solid var(--color-warning-border);border-radius:var(--radius-lg)}.contradiction__constat{font-size:var(--font-size-md);line-height:1.5;color:var(--color-warning-ink)}.contradiction__constat .icon--inline{color:var(--color-warning-strong)}.contradiction__actions{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-md)}.allure{min-width:0;padding:0;margin:var(--space-lg) 0 0;border:0}.allure__lecture{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-sm);margin-bottom:var(--space-md)}.allure__valeur{font-size:var(--font-size-xl)}.allure__unite{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.allure__vide{font-size:var(--font-size-md);color:var(--color-text-secondary)}.allure__zone{padding:3px var(--space-sm);margin-left:auto;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-success);background:var(--color-success-pale);border-radius:var(--radius-full)}.allure__jauge{position:relative;height:64px}.allure__piste{position:absolute;top:18px;right:0;left:0;display:flex;height:10px;overflow:hidden;border-radius:var(--radius-full)}.allure__bande{display:block;height:100%}.allure__bande+.allure__bande{border-left:1px solid var(--color-surface)}.allure__bande--lente{background:var(--color-zone-caution)}.allure__bande--sure{background:var(--color-zone-safe)}.allure__bande--exclue{flex:1;background:var(--color-zone-risk)}.allure__champ{position:absolute;top:6px;height:44px;margin:0;cursor:pointer;background:transparent;appearance:none}.allure__champ::-webkit-slider-thumb{width:1px;height:44px;background:transparent;appearance:none}.allure__champ::-moz-range-thumb{width:1px;height:44px;background:transparent;border:0}.allure__champ::-webkit-slider-runnable-track,.allure__champ::-moz-range-track{background:transparent}.allure__curseur{position:absolute;top:12px;width:22px;height:22px;margin-left:-11px;pointer-events:none;background:var(--color-surface);border:4px solid var(--color-success);border-radius:var(--radius-full);box-shadow:var(--shadow-normal)}.allure__champ:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px;border-radius:var(--radius-sm)}.allure__bornes{position:relative;height:1.2em;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.allure__bornes span{position:absolute;font-variant-numeric:tabular-nums;transform:translate(-50%)}.allure__legende{margin-top:var(--space-sm);font-size:var(--font-size-md);line-height:1.45;color:var(--color-text-secondary)}.allure__annuler{margin-top:var(--space-sm)}.card.limites{background:var(--color-warning-pale);border:1px solid var(--color-warning-border)}.limites__titre{display:flex;gap:var(--space-sm);align-items:center;color:var(--color-warning-ink)}.limites__titre .icon--inline{color:var(--color-warning-strong)}.limites__liste{display:flex;flex-direction:column;gap:var(--space-md);padding:0;margin:var(--space-md) 0 0;list-style:none}.limites__liste li{position:relative;padding-left:var(--space-lg);font-size:var(--font-size-md);line-height:1.5;color:var(--color-warning-ink)}.limites__liste li:before{position:absolute;top:.55em;left:0;width:6px;height:6px;content:"";background:var(--color-warning-strong);border-radius:var(--radius-full)}.limites__source{margin-top:var(--space-md);font-size:var(--font-size-sm);line-height:1.45;color:var(--color-warning-ink);opacity:.85}.pied-reglages{position:fixed;right:0;bottom:var(--above-tabbar);left:0;z-index:15;padding:var(--space-md) var(--space-lg);padding-bottom:calc(var(--space-md) + var(--scan-overlap));background:var(--color-surface);border-top:1px solid var(--color-border);box-shadow:var(--shadow-normal)}@media(min-width:720px){.pied-reglages{right:auto;left:50%;width:720px;border-radius:var(--radius-lg) var(--radius-lg) 0 0;transform:translate(-50%)}}.pied-reglages__erreur{margin-bottom:var(--space-sm);font-size:var(--font-size-md);color:var(--color-error)}.pied-reglages__case{display:flex;gap:var(--space-md);align-items:center;min-height:var(--control-height-lg);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);cursor:pointer}.pied-reglages__case input{flex:none;width:24px;height:24px;margin:0;accent-color:var(--color-primary)}.pied-reglages__case small{font-weight:var(--font-weight-regular);color:var(--color-text-secondary)}.pied-reglages__etat{min-height:1.2em;margin-bottom:var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.pied-reglages .button[aria-disabled=true]{cursor:not-allowed;opacity:.55}.pied-reglages .button[aria-disabled=true]:focus-visible{opacity:1;outline:2px solid var(--color-border-focus);outline-offset:2px;filter:grayscale(60%)}.ing-toolbar{display:flex;gap:var(--space-sm);align-items:center}.ing-toolbar__action{display:grid;place-items:center;flex:1;height:var(--control-height-lg);min-height:var(--control-height-lg);line-height:1;padding:0 var(--space-sm);white-space:nowrap;margin-top:0}.ing-chips{display:flex;gap:var(--space-xs);overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding-bottom:var(--space-xs);margin:0;list-style:none}.ing-chips::-webkit-scrollbar{display:none}.ing-chip{flex:none;min-height:var(--control-height-md);padding:0 var(--space-md);font-size:var(--font-size-md);white-space:nowrap;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);transition:background var(--duration-fast) var(--easing-standard),color var(--duration-fast) var(--easing-standard)}.ing-chip--avec{color:var(--color-on-primary);background:var(--color-primary);border-color:var(--color-primary)}.ing-chip--sans{color:var(--color-on-primary);background:var(--color-warning);border-color:var(--color-warning)}.ing-section{display:flex;flex-direction:column}.ing-section__header[aria-expanded=false]{border-radius:var(--radius-md);border-bottom:0}.ing-section__header{position:sticky;top:calc(var(--header-height) + var(--safe-top));z-index:5;border-radius:var(--radius-md) var(--radius-md) 0 0}.ing-macro{font-variant-numeric:tabular-nums}.ing-macro--proteins{color:var(--color-nutrient-proteins-ink)}.ing-macro--carbs{color:var(--color-nutrient-carbs-ink)}.ing-macro--fats{color:var(--color-nutrient-fats-ink)}.ing-piece{color:var(--color-accent)}.ing-result__macros{display:inline-flex;flex-wrap:wrap}.ing-result__macros>span+span:before{content:"·";margin:0 var(--space-xs);color:var(--color-text-placeholder)}.ing-choices{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin:0;padding:0;border:0}.ing-choices__legend{width:100%;padding:0 0 var(--space-xs);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.ing-choices .field__hint{width:100%;margin-top:var(--space-xs)}.ing-choice{min-height:var(--control-height-lg);padding:0 var(--space-lg);font-size:var(--font-size-lg);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);transition:background var(--duration-fast) var(--easing-standard),color var(--duration-fast) var(--easing-standard)}.ing-choice--avec{color:var(--color-on-primary);background:var(--color-primary);border-color:var(--color-primary)}.ing-choice--sans{color:var(--color-on-primary);background:var(--color-warning);border-color:var(--color-warning)}.ing-criterion{display:grid;grid-template-columns:auto 1fr auto auto;gap:var(--space-sm);align-items:center;width:100%;margin-bottom:var(--space-sm)}.ing-criterion__field{grid-column:1 / -1}.ing-criterion__bound{grid-column:1;min-width:3.5rem;text-align:center;font-size:var(--font-size-xl)}.ing-criterion__value{grid-column:2;text-align:right}.ing-criterion__unit{grid-column:3;font-size:var(--font-size-md);color:var(--color-text-secondary);white-space:nowrap}.ing-criterion__remove{grid-column:4;justify-self:end;min-width:var(--control-height-md);padding:0}@media(min-width:480px){.ing-criterion{grid-template-columns:1fr auto 6rem auto auto}.ing-criterion__field{grid-column:1}.ing-criterion__bound{grid-column:2}.ing-criterion__value{grid-column:3}.ing-criterion__unit{grid-column:4}.ing-criterion__remove{grid-column:5}}.ing-undo{display:flex;flex-wrap:wrap;gap:var(--space-md);align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);color:var(--color-on-primary);background:var(--color-toast-bg);border-radius:var(--radius-md);box-shadow:var(--shadow-normal)}.ing-undo__message{margin:0;min-width:0}.ing-undo__action{flex:none;min-height:var(--control-height-lg);padding:0 var(--space-md);font-weight:var(--font-weight-semibold);color:var(--color-on-primary);background:transparent;border:1px solid var(--color-border-hover);border-radius:var(--radius-sm)}.ing-undo__error{width:100%;margin:0;font-size:var(--font-size-md);color:var(--color-error)}.screen.screen--ingredient{padding-bottom:calc(var(--reserve-pied) + 76px)}.ing-form__section{display:flex;flex-direction:column;gap:var(--space-lg);margin:0;padding:var(--space-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.ing-form__legend{padding:0 var(--space-xs);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.ing-form__sub{padding-left:var(--space-lg);border-left:2px solid var(--color-border)}.ing-form__sub .field__label{font-style:italic}.ing-form__danger{display:flex}.ing-form__danger .button{flex:1;margin-top:0}.ing-actions{position:fixed;right:0;bottom:var(--above-tabbar);left:0;z-index:15;display:flex;gap:var(--space-lg);align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);background:var(--color-surface);border-top:1px solid var(--color-border);box-shadow:var(--shadow-normal)}.ing-actions__state{margin:0;min-width:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.ing-actions .button{flex:none;margin-top:0}.button--saved{color:var(--color-on-primary);background:var(--color-success)}@media(min-width:720px){.ing-actions{right:auto;left:50%;width:720px;transform:translate(-50%);border-radius:var(--radius-lg) var(--radius-lg) 0 0}}.ing-scan{display:flex;gap:var(--space-sm);align-items:stretch}.ing-scan .field__input{flex:1;min-width:0}.ing-scan__button{flex:none;padding:0 var(--space-md);margin-top:0;white-space:nowrap}.ing-scan-fill{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md);background:var(--color-surface-hover);border:1px solid var(--color-border);border-radius:var(--radius-md)}.ing-scan-fill__wait{margin:0;color:var(--color-text-secondary)}.ing-scan-fill__title{margin:0;font-weight:var(--font-weight-semibold)}.ing-scan-fill__meta{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.ing-scan-fill__actions,.ing-scan-actions{display:flex;flex-direction:column;gap:var(--space-sm)}.ing-scan-fill__actions .button,.ing-scan-actions .button{margin-top:0}.ing-scan-fill__actions a.button,.ing-scan-actions a.button{display:grid;place-items:center;height:var(--control-height-lg);line-height:1}.ing-readonly{display:flex;flex-direction:column;gap:var(--space-xs)}.ing-readonly__value{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:center}.ing-readonly__link{color:var(--color-primary-text)}.ing-price{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:baseline;min-height:var(--control-height-lg);padding:var(--space-md) var(--space-lg);text-align:left;background:var(--color-surface-hover);border:1px solid var(--color-border);border-radius:var(--radius-md)}.ing-price:active{background:var(--color-surface-pressed)}.ing-price__amount{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums}.ing-price__for{color:var(--color-text-secondary)}.ing-price__cta{margin-left:auto;color:var(--color-primary-text);white-space:nowrap}.ing-months{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--space-xs)}.ing-month{min-height:var(--control-height-lg);font-size:var(--font-size-lg);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:background var(--duration-fast) var(--easing-standard),color var(--duration-fast) var(--easing-standard)}.ing-month--on{color:var(--color-on-primary);background:var(--color-success);border-color:var(--color-success)}.ing-months__shortcuts{display:flex;gap:var(--space-sm)}.ing-months__shortcuts .button{flex:1;margin-top:0}.ing-tabs{display:flex;gap:var(--space-xs);padding:var(--space-xs);background:var(--color-surface-hover);border-radius:var(--radius-md)}.ing-tabs__tab{flex:1;min-height:var(--control-height-lg);font-size:var(--font-size-md);color:var(--color-text-secondary);background:transparent;border:0;border-radius:var(--radius-sm)}.ing-tabs__tab--active{color:var(--color-text);background:var(--color-surface);box-shadow:var(--shadow-subtle)}.ing-off-search{display:flex;flex-direction:column;gap:var(--space-sm)}.ing-off-search .button{margin-top:0}.ing-import__report{margin:0;padding:var(--space-sm) var(--space-md);font-size:var(--font-size-md);color:var(--color-success);background:var(--color-surface-hover);border-radius:var(--radius-md)}.ing-selection{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:center;padding:var(--space-sm) var(--space-md);background:var(--color-surface-hover);border:1px solid var(--color-border);border-radius:var(--radius-md)}.ing-selection__count{flex:1;min-width:0;margin:0;font-weight:var(--font-weight-medium)}.ing-selection .button{margin-top:0}.ing-selection__failures{width:100%;margin:0;padding-left:var(--space-lg);font-size:var(--font-size-md);color:var(--color-error)}.ing-results{margin:0;padding:0;list-style:none;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.ing-result{display:flex;gap:var(--space-md);align-items:center;min-height:56px;padding:var(--space-sm) var(--space-md)}.ing-result+.ing-result{border-top:1px solid var(--color-border)}.ing-result__check{flex:none;width:24px;height:24px;accent-color:var(--color-primary)}.ing-result__slot{display:grid;place-items:center;flex:none;width:24px;height:24px}.ing-result__body{flex:1;min-width:0}.ing-result__name{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ing-result__meta{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:center;margin:2px 0 0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.ing-result__add{flex:none;padding:0 var(--space-md);margin-top:0;white-space:nowrap}.ing-store-suggestions{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin:0;padding:0;list-style:none}.ing-history{display:flex;flex-direction:column;gap:var(--space-sm)}.ing-history__summary{margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.ing-history__list{margin:0;padding:0;list-style:none;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.ing-observation{display:flex;gap:var(--space-md);align-items:flex-start;padding:var(--space-md)}.ing-observation+.ing-observation{border-top:1px solid var(--color-border)}.ing-observation__body{flex:1;min-width:0}.ing-observation__head{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:center;margin:0}.ing-observation__per100{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums;color:var(--color-primary-text)}.ing-observation__meta{margin:2px 0 0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.ing-observation__notes{margin:var(--space-xs) 0 0;font-size:var(--font-size-md);font-style:italic;color:var(--color-text-secondary)}.ing-observation__remove{display:grid;place-items:center;flex:none;width:var(--control-height-lg);height:var(--control-height-lg);color:var(--color-text-secondary);background:transparent;border:0;border-radius:var(--radius-full)}.ing-observation__remove:active{color:var(--color-error);background:var(--color-surface-pressed)}.scan-review{display:flex;flex-direction:column;gap:var(--space-lg)}.scan-review__price{display:flex;flex-direction:column;gap:var(--space-md);margin:0;padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md)}.scan-review__legend{padding:0 var(--space-xs);font-weight:var(--font-weight-semibold)}.scan-review__macros summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);min-height:var(--control-height-lg);padding:0 var(--space-md);font-weight:var(--font-weight-medium);color:var(--color-text);background:var(--color-surface-hover);border:1px solid var(--color-border);border-radius:var(--radius-md);list-style:none}.scan-review__macros summary::-webkit-details-marker{display:none}.scan-review__macros summary:after{content:"⌄";font-size:var(--font-size-xl);line-height:1;transition:transform var(--duration-fast) var(--easing-standard)}.scan-review__macros[open] summary:after{transform:rotate(180deg)}.scan-review__macros[open]{display:flex;flex-direction:column;gap:var(--space-md)}.scan-review__actions{display:flex;flex-direction:column;gap:var(--space-sm)}.scan-review__actions .button{width:100%;margin-top:0}.ing-section__header{display:flex;align-items:center;gap:var(--space-sm);width:100%;min-height:60px;text-align:left;border:0;border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:1}.ing-section__header[data-rayon]{color:var(--color-text);background:color-mix(in srgb,var(--rayon-color) 10%,var(--color-surface));border-left:3px solid var(--rayon-color)}.ing-section__header[data-rayon]:active{background:color-mix(in srgb,var(--rayon-color) 20%,var(--color-surface))}.ing-section__header[data-rayon] .ing-section__count{color:var(--color-text);background:color-mix(in srgb,var(--rayon-color) 25%,var(--color-surface))}.ing-section__icon{width:26px;height:26px;background:transparent}.ing-section__header:active{background:var(--color-surface-pressed)}.ing-section__chevron{display:grid;place-items:center;flex:none;color:var(--color-text-secondary)}.ing-section__name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ing-section__count{flex:none;padding:0 var(--space-sm);font-variant-numeric:tabular-nums;color:var(--color-text-secondary);background:var(--color-surface);border-radius:var(--radius-full)}.ing-pagination{display:flex;flex-direction:column;gap:var(--space-sm);align-items:center;padding:var(--space-md) 0}.ing-actions{padding-bottom:calc(var(--space-md) + var(--scan-overlap))}.screen.screen--pantry{padding-bottom:calc(var(--reserve-pied) + 72px)}.pantry-note{margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.pantry-note a{color:var(--color-primary-text);white-space:nowrap}.pantry-toolbar{display:flex;flex-direction:column;gap:var(--space-md)}.pantry-toolbar__search{position:relative}.pantry-toolbar__clear{position:absolute;top:0;right:0;display:grid;place-items:center;width:var(--control-height-lg);height:var(--control-height-lg);color:var(--color-text-secondary);background:transparent;border:0;border-radius:var(--radius-md)}.pantry-toolbar__clear:active{background:var(--color-surface-pressed)}.pantry-toolbar__options{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md)}.pantry-summary{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-md);margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.pantry-summary__alert{font-weight:var(--font-weight-medium);color:var(--color-error)}.pantry-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.pantry-section__header{position:sticky;top:calc(var(--header-height) + var(--safe-top));z-index:5;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.lot-list{margin:0;padding:0;list-style:none;overflow:hidden;border-radius:var(--radius-lg)}.pantry-section__header+.lot-list{border-radius:0 0 var(--radius-lg) var(--radius-lg)}.lot+.lot{border-top:1px solid var(--color-border)}.lot__open{display:flex;gap:var(--space-md);align-items:center;width:100%;min-height:56px;padding:var(--space-sm) var(--space-lg);text-align:left;color:inherit;background:transparent;border:0;transition:background var(--duration-fast) var(--easing-standard)}.lot__open:active{background:var(--color-surface-pressed)}.lot--soon .lot__open{box-shadow:inset 4px 0 0 var(--color-error)}.lot--watch .lot__open{box-shadow:inset 4px 0 0 var(--color-warning)}.lot__body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.lot__name{overflow:hidden;font-size:var(--font-size-lg);text-overflow:ellipsis;white-space:nowrap}.lot__meta{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-sm);align-items:baseline;font-size:var(--font-size-md);color:var(--color-text-secondary)}.lot__expiry--soon{font-weight:var(--font-weight-medium);color:var(--color-error)}.lot__expiry--watch{font-weight:var(--font-weight-medium);color:var(--color-warning)}.lot__siblings{padding:1px var(--space-sm);font-size:var(--font-size-xs);color:var(--color-text-secondary);background:var(--color-surface-hover);border-radius:var(--radius-full);white-space:nowrap}.lot__notes{overflow:hidden;font-size:var(--font-size-md);font-style:italic;color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap}.lot__chevron{flex:none;font-size:var(--font-size-xl);color:var(--color-text-placeholder)}.pantry-fab{position:fixed;right:var(--space-lg);bottom:calc(var(--above-tabbar) + var(--space-lg));z-index:15;display:grid;place-items:center;width:56px;height:56px;font-size:var(--font-size-title);line-height:1;color:var(--color-on-primary);background:var(--color-primary);border:0;border-radius:var(--radius-full);box-shadow:var(--shadow-elevated)}.pantry-fab:active{background:var(--color-primary-pressed)}@media(min-width:720px){.pantry-fab{right:calc(50vw - 360px + var(--space-lg))}}.picked{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-sm);align-items:baseline;padding:var(--space-sm) var(--space-md);background:var(--color-surface-hover);border:1px solid var(--color-border);border-radius:var(--radius-md)}.picked__label{width:100%;font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.picked__name{flex:1;min-width:0;font-weight:var(--font-weight-medium)}.picked__change{flex:none;padding:0 var(--space-sm)}.lot-summary{display:flex;flex-direction:column;gap:2px;margin:0;padding:var(--space-md);background:var(--color-surface-hover);border-radius:var(--radius-md);box-shadow:inset 4px 0 0 transparent}.lot-summary--soon{box-shadow:inset 4px 0 0 var(--color-error)}.lot-summary--watch{box-shadow:inset 4px 0 0 var(--color-warning)}.lot-summary__quantity{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold)}.lot-summary__expiry,.lot-summary__siblings{font-size:var(--font-size-md);color:var(--color-text-secondary)}.consume{display:flex;flex-direction:column;gap:var(--space-sm)}.consume__title{margin:0;font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.consume__shares{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-sm)}.consume__share{display:flex;flex-direction:column;gap:2px;align-items:center;justify-content:center;min-height:56px;padding:var(--space-sm);color:var(--color-primary-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.consume__share:active{background:var(--color-surface-pressed)}.consume__share:disabled{cursor:default;opacity:.55}.consume__fraction{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);line-height:1}.consume__amount{font-size:var(--font-size-md);color:var(--color-text-secondary);white-space:nowrap}.consume__hint{margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.scan{display:flex;flex-direction:column;gap:var(--space-md)}.scan__button{margin-top:0}.scan__result{display:flex;flex-direction:column;gap:var(--space-md)}.scan__name{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.scan__meta{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-sm);align-items:center;margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.scan__actions{display:flex;flex-direction:column;gap:var(--space-sm)}.scan__actions .button{width:100%;margin-top:0;display:grid;place-items:center}.price-paid{display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-md);background:var(--color-surface-hover);border-radius:var(--radius-md)}.price-paid__title{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.price-paid__lead{margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.price-paid__link{color:var(--color-primary-text)}.chezmoi-entete{display:flex;gap:var(--space-md);align-items:flex-end;justify-content:space-between}.chezmoi-entete h2{font-family:var(--font-family-display);font-size:var(--font-size-hero);font-weight:var(--font-weight-extrabold);line-height:1.05;letter-spacing:-.01em}.chezmoi-entete__surtitre{font-size:var(--font-size-md);color:var(--color-text-secondary)}.espaces{display:flex;gap:4px;padding:4px;overflow-x:auto;background:var(--color-surface-pressed);border-radius:var(--radius-lg);scrollbar-width:none}.espaces::-webkit-scrollbar{display:none}.espace{flex:1;flex-basis:0;min-height:40px;padding:0 var(--space-sm);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);white-space:nowrap;background:transparent;border:0;border-radius:var(--radius-md)}.espace--on{color:var(--color-text);background:var(--color-surface);box-shadow:var(--shadow-subtle)}.espace__compte{font-variant-numeric:tabular-nums;color:var(--color-text-placeholder)}.espace--on .espace__compte{color:var(--color-text-secondary)}.bandeau{display:flex;gap:var(--space-sm);align-items:center;padding:var(--space-sm) var(--space-md);font-size:var(--font-size-md);line-height:1.4;border-radius:var(--radius-lg)}.bandeau--ranger{color:var(--color-text);background:var(--color-surface);box-shadow:var(--shadow-subtle)}.bandeau--urgence{color:var(--color-warning-ink);background:var(--color-warning-pale);border:1px solid var(--color-warning-border)}.bandeau__lien{margin-left:auto;font-weight:var(--font-weight-semibold);white-space:nowrap}.ranger-actions{display:flex;gap:var(--space-xs);padding:0 var(--space-md) var(--space-sm)}.ranger-action{flex:1;min-height:40px;font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-primary-text);background:var(--color-surface-pressed);border:0;border-radius:var(--radius-md)}.ranger-action:active{background:var(--color-border)}.ranger-action:disabled{opacity:.5}.lot__niveau{display:block;margin-top:var(--space-xs)}.lot__niveau-piste{display:block;height:6px;overflow:hidden;background:var(--color-border);border-radius:var(--radius-full)}.lot__niveau-part{display:block;height:100%;background:var(--color-success);border-radius:var(--radius-full)}.lot__niveau-part--bas{background:var(--color-warning)}.lot__niveau-texte{display:block;margin-top:2px;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.lot__depuis{color:var(--color-text-secondary)}.bilan-sorties{padding:var(--space-sm) var(--space-md);font-size:var(--font-size-md);color:var(--color-text-secondary);text-align:center}.carte-lots{padding:0 var(--space-md);margin:0;list-style:none;background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-subtle)}.carte-lots .lot{padding:0;background:none;border-radius:0;box-shadow:none}.carte-lots .lot+.lot{border-top:1px solid var(--color-border)}.carte-lots .lot__open{display:flex;gap:var(--space-md);align-items:center;width:100%;padding:var(--space-md) 0;text-align:left;background:none;border:0}.lot__pastille{flex:none;width:40px;height:40px;border-radius:var(--radius-lg)}.carte-lots .lot__body{flex:1;min-width:0}.badge-echeance{flex:none;padding:3px var(--space-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:var(--radius-full)}.badge-echeance--soon{color:var(--color-echeance-urgent-ink);background:var(--color-echeance-urgent-pale)}.badge-echeance--watch{color:var(--color-warning-strong);background:var(--color-warning-pale);border:1px solid var(--color-warning-border)}.badge-echeance--stock{color:var(--color-success);background:var(--color-success-pale)}.badge-echeance--neutre{color:var(--color-text-secondary);background:var(--color-surface-pressed)}.chezmoi-lien{font-size:var(--font-size-md);color:var(--color-text-secondary)}.carte-lots .ranger-actions{padding:0 0 var(--space-sm)}.tris{display:flex;gap:var(--space-xs);padding-bottom:2px;overflow-x:auto;scrollbar-width:none}.tris::-webkit-scrollbar{display:none}.tri{flex:none;min-height:34px;padding:0 var(--space-md);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);white-space:nowrap;background:var(--color-surface);border:0;border-radius:var(--radius-full);box-shadow:var(--shadow-subtle)}.tri--on{color:var(--color-on-primary);background:var(--color-primary)}.tri--groupe{background:var(--color-surface-pressed);box-shadow:none}.tri--groupe.tri--on{color:var(--color-on-primary);background:var(--color-primary)}.tris__groupe{display:flex;flex:none;gap:var(--space-xs)}.tris__separateur{flex:none;width:1px;margin:var(--space-xs) 2px;background:var(--color-border)}.screen.screen--recipes,.screen.screen--editor{padding-bottom:calc(var(--reserve-pied) + 76px)}.recipes-footer,.save-bar{position:fixed;right:0;bottom:var(--above-tabbar);left:0;z-index:15;padding:var(--space-md) var(--space-lg);background:var(--color-surface);border-top:1px solid var(--color-border);box-shadow:var(--shadow-normal)}@media(min-width:720px){.recipes-footer,.save-bar{right:auto;left:50%;width:720px;transform:translate(-50%);border-radius:var(--radius-lg) var(--radius-lg) 0 0}}.save-bar__row{display:flex;gap:var(--space-md);align-items:center;justify-content:space-between}.save-bar__state{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-warning)}.save-bar__actions{display:flex;gap:var(--space-sm);flex:none}.save-bar__error{margin:0 0 var(--space-sm);font-size:var(--font-size-md);color:var(--color-error)}.save-bar__actions .button,.cook-actions .button{margin-top:0}.recipe-chips{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.recipe-chips--sheet{margin-bottom:var(--space-xl)}.recipe-chip{display:inline-flex;gap:var(--space-xs);align-items:center;min-height:36px;padding:0 var(--space-md);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-full);white-space:nowrap;transition:background var(--duration-fast) var(--easing-standard),color var(--duration-fast) var(--easing-standard)}.recipe-chip--on{color:var(--color-on-primary);background:var(--color-primary);border-color:var(--color-primary)}.recipe-chip--static{min-height:0;padding:1px var(--space-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.recipe-chip--add{border-style:dashed;color:var(--color-primary-text);border-color:var(--color-primary)}.recipe-chip__count{font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);opacity:.75}.tag-filter{overflow-x:auto;margin:0 calc(-1 * var(--space-lg));padding:0 var(--space-lg);scrollbar-width:none}.tag-filter::-webkit-scrollbar{display:none}.tag-filter__scroller{display:flex;gap:var(--space-sm);width:max-content;padding:var(--space-xs) 0}.badge--cooked{color:var(--color-on-primary);background:var(--color-primary)}.tag-create{margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--color-border)}.tag-palette{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.tag-palette__swatch{width:var(--control-height-lg);height:var(--control-height-lg);border:2px solid transparent;border-radius:var(--radius-full)}.tag-palette__swatch--on{border-color:var(--color-text)}.editor-group{margin-top:var(--space-lg)}.editor-group .section-header{margin:0 calc(-1 * var(--space-lg));background:var(--color-surface-hover)}.editor-lines{margin:0;padding:0;list-style:none}.editor-line{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md) 0;border-bottom:1px solid var(--color-border)}.editor-line__head{display:flex;gap:var(--space-sm);align-items:center;justify-content:space-between}.editor-line__name{flex:1;min-width:0;overflow:hidden;font-weight:var(--font-weight-medium);color:var(--color-primary-text);text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.editor-line__actions{display:flex;gap:var(--space-xs);flex:none}.editor-line__quantity{display:flex;gap:var(--space-sm);align-items:center}.editor-line__quantity>.field{flex:1;min-width:0}.editor-line .field__label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.editor-line__note-add{align-self:flex-start;min-height:var(--control-height-md);padding:0;font-size:var(--font-size-md);margin-top:0}.icon-action{display:grid;place-items:center;width:var(--control-height-lg);height:var(--control-height-lg);font-size:var(--font-size-lg);color:var(--color-text-secondary);background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-md);transition:background var(--duration-fast) var(--easing-standard)}.icon-action:active{background:var(--color-surface-pressed)}.icon-action:disabled{color:var(--color-text-disabled);cursor:default;opacity:.5}.icon-action--danger{color:var(--color-error);border-color:var(--color-border)}.scaler{display:flex;gap:var(--space-md);align-items:flex-end;margin-top:var(--space-md)}.scaler>.field{flex:1;min-width:0}.scaler .button{margin-top:0;flex:none}.scale-banner{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:color-mix(in srgb,var(--color-warning) 12%,transparent);border:1px solid color-mix(in srgb,var(--color-warning) 45%,transparent);border-radius:var(--radius-lg)}.scale-banner__text{margin:0;font-size:var(--font-size-md)}.scale-banner .button{align-self:flex-start;margin-top:0}.card--scaled{border-color:color-mix(in srgb,var(--color-warning) 60%,var(--color-border))}.note--warning{color:var(--color-warning)}.nutrition-table--macros tbody th{display:flex;gap:var(--space-sm);align-items:center}.nutrition-table--macros .nutrition-table__row--sub th{padding-left:var(--space-lg);font-style:italic}.nutrition-table--macros .unit{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.cook-actions{display:flex;gap:var(--space-sm);flex-wrap:wrap;margin-top:var(--space-md)}.cook-actions .button{flex:1;min-width:12rem}.cook-history__title{margin-top:var(--space-xl)}.cook-history{margin:var(--space-md) 0 0;padding:0;list-style:none}.cook-entry{display:flex;gap:var(--space-md);align-items:center;padding:var(--space-sm) 0;border-top:1px solid var(--color-border)}.cook-entry__body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.cook-entry__date{font-weight:var(--font-weight-medium);font-variant-numeric:tabular-nums}.cook-entry__stars{display:flex;gap:2px;align-items:center;font-size:var(--font-size-md);color:var(--color-warning)}.cook-entry__notes{font-size:var(--font-size-md);color:var(--color-text-secondary)}.stars{display:flex;gap:var(--space-xs);align-items:center;flex-wrap:wrap}.stars__button{width:var(--control-height-lg);height:var(--control-height-lg);font-size:var(--font-size-xl);color:var(--color-text-placeholder);background:transparent;border:0;border-radius:var(--radius-md)}.stars__button--on{color:var(--color-warning)}.stars__clear{margin-top:0;margin-left:auto;font-size:var(--font-size-md)}.tag-row{display:inline-flex;align-items:center;gap:var(--space-xs)}.tag-row__edit{min-width:var(--control-height-lg);min-height:var(--control-height-lg);font-size:var(--font-size-md);color:var(--color-text-secondary);background:transparent;border:0;border-radius:var(--radius-full)}.tag-row__edit:active{background:var(--color-surface-hover)}.recipes-footer,.save-bar{padding-bottom:calc(var(--space-md) + var(--scan-overlap))}.etapes-editor__liste{display:flex;flex-direction:column;gap:var(--space-sm);padding:0;margin:var(--space-xs) 0 var(--space-md);list-style:none}.etape-champ{display:grid;grid-template-columns:26px 1fr;gap:var(--space-sm);align-items:start}.etape-champ__corps{min-width:0}.etape-champ__rang{display:grid;place-items:center;width:26px;height:26px;margin-top:9px;font-family:var(--font-family-display);font-size:var(--font-size-md);font-weight:var(--font-weight-bold);color:var(--color-text-secondary);background:var(--color-surface-hover);border-radius:var(--radius-full)}.etape-champ__rang--titre{color:var(--color-text-placeholder);background:none}.etape-champ__outils{display:flex;gap:2px;justify-content:flex-end;margin-top:2px}.etape-champ__outil{display:grid;place-items:center;width:44px;height:44px;color:var(--color-text-secondary);cursor:pointer;background:none;border:0;border-radius:var(--radius-sm)}.etape-champ__outil:disabled{color:var(--color-text-disabled);cursor:not-allowed}.etape-champ__outil--retirer:not(:disabled){color:var(--color-error)}.field--sans-libelle>.field__label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.champ-photo__cadre{display:grid;place-items:center;width:100%;height:160px;overflow:hidden;background:var(--color-surface-pressed);border-radius:var(--radius-lg)}.champ-photo__image{width:100%;height:100%;object-fit:cover}.champ-photo__vide{display:flex;flex-direction:column;gap:var(--space-xs);align-items:center;font-size:var(--font-size-md);color:var(--color-text-placeholder)}.champ-photo__actions{display:flex;gap:var(--space-sm);margin-top:var(--space-sm)}.champ-photo__retirer{color:var(--color-error)}.screen.screen--repertoire{gap:var(--space-md)}.repertoire-entete{display:flex;gap:var(--space-md);align-items:flex-end;justify-content:space-between}.repertoire-entete h2{font-family:var(--font-family-display);font-size:var(--font-size-hero);font-weight:var(--font-weight-extrabold);line-height:1.05;letter-spacing:-.01em}.repertoire-entete__surtitre{min-height:1.3em;font-size:var(--font-size-md);color:var(--color-text-secondary)}.repertoire-plus{position:relative;display:grid;flex:none;place-items:center;width:44px;height:44px;padding:0;color:var(--color-on-primary);cursor:pointer;background:none;border:0}.repertoire-plus:before{position:absolute;width:38px;height:38px;content:"";background:var(--color-primary);border-radius:50%;box-shadow:var(--shadow-normal)}.repertoire-plus>*{position:relative}.filtres{display:flex;gap:var(--space-xs);padding-bottom:2px;overflow-x:auto;scrollbar-width:none}.filtres::-webkit-scrollbar{display:none}.filtre{flex:none;min-height:36px;padding:var(--space-xs) var(--space-md);font-family:inherit;font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);white-space:nowrap;cursor:pointer;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full)}.filtre--on{font-weight:var(--font-weight-bold);color:var(--color-on-primary);background:var(--color-primary);border-color:var(--color-primary)}.bandeau-frigo{display:flex;gap:var(--space-md);align-items:center;width:100%;padding:var(--space-md);font-family:inherit;font-size:var(--font-size-md);line-height:1.4;color:var(--color-nutrient-fats-ink);text-align:left;cursor:pointer;background:var(--color-nutrient-fats-pale);border:0;border-radius:var(--radius-lg)}.bandeau-frigo__icone{flex:none}.bandeau-frigo__lien{flex:none;margin-left:auto;font-weight:var(--font-weight-bold);white-space:nowrap}.recettes{display:flex;flex-direction:column;gap:var(--space-sm);padding:0;margin:0;list-style:none}.recette__lien{display:flex;gap:var(--space-md);align-items:center;padding:var(--space-md);background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-subtle)}.recette__lien:active{background:var(--color-surface-pressed)}.recette .icon-chip,.recette__photo{flex:none;width:54px;height:54px;border-radius:var(--radius-lg)}.recette__photo{object-fit:cover;background:var(--color-surface-pressed)}.recette__corps{flex:1;min-width:0}.recette__nom{display:block;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.recette__meta{display:flex;flex-wrap:wrap;gap:2px var(--space-sm);margin-top:2px;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.recette__meta span+span:before{margin-right:var(--space-sm);content:"·"}.recette__chevron{flex:none;color:var(--color-text-placeholder)}.recette .macro-bar{margin-top:var(--space-sm)}.badge-frigo{padding:1px var(--space-sm);margin-left:var(--space-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-success);background:var(--color-success-pale);border-radius:var(--radius-full);vertical-align:middle}.screen.screen--recette{padding-bottom:calc(var(--reserve-pied) + 132px)}.fiche-hero{--hero-encre: #f5f7f2;position:relative;display:flex;align-items:flex-end;height:132px;padding:var(--space-md);overflow:hidden;background:linear-gradient(140deg,#2b4a3a,#16281f);border-radius:var(--radius-xl)}.fiche-hero--photo{height:200px}.fiche-hero__image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.fiche-hero--photo:after{position:absolute;inset:0;content:"";background:linear-gradient(to top,rgb(0 0 0 / 55%),transparent 60%)}.fiche-hero--photo .fiche-hero__action,.fiche-hero--photo .fiche-hero__origine{z-index:1}.fiche-hero--photo .fiche-hero__action:before{background:#0000008c}.fiche-hero__filigrane{position:absolute;right:var(--space-lg);bottom:-8px;color:var(--hero-encre);opacity:.22}.fiche-hero__action{position:absolute;top:var(--space-md);right:var(--space-md);display:grid;place-items:center;width:44px;height:44px;padding:0;background:none;border:0}.fiche-hero__action:before{position:absolute;width:36px;height:36px;content:"";background:#ffffff29;border-radius:50%}.fiche-hero__action>*{position:relative}.fiche-hero__action.fiche-hero__action{color:var(--hero-encre)}.fiche-hero__origine{position:relative;padding:4px var(--space-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--hero-encre);background:#0000006b;border-radius:var(--radius-full)}.fiche-titre h2{font-family:var(--font-family-display);font-size:var(--font-size-title);font-weight:var(--font-weight-extrabold);line-height:1.15;letter-spacing:-.01em}.fiche-titre__meta{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-md);margin-top:var(--space-xs);font-size:var(--font-size-md);color:var(--color-text-secondary)}.fiche-titre__plan{padding:1px var(--space-sm);font-weight:var(--font-weight-semibold);color:var(--color-nutrient-fats-ink);background:var(--color-nutrient-fats-pale);border-radius:var(--radius-full)}.card.fiche-portions{display:flex;gap:var(--space-md);align-items:center;justify-content:space-between}.fiche-portions__label{font-weight:var(--font-weight-semibold)}.fiche-portions__label small{display:block;margin-top:1px;font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);color:var(--color-text-secondary)}.stepper{display:flex;gap:var(--space-xs);align-items:center;padding:0 var(--space-xs);background:var(--color-surface-hover);border-radius:var(--radius-full)}.stepper__bouton{position:relative;display:grid;place-items:center;width:44px;height:44px;color:var(--color-text);cursor:pointer;background:none;border:0}.stepper__bouton:before{position:absolute;width:32px;height:32px;content:"";background:var(--color-surface);border-radius:50%}.stepper__bouton>*{position:relative}.stepper__bouton:disabled{color:var(--color-text-disabled);cursor:not-allowed}.stepper__bouton:disabled:before{background:none}.stepper__valeur{min-width:2ch;font-size:var(--font-size-lg);text-align:center;font-variant-numeric:tabular-nums}.screen--recette .segmented{margin-top:var(--space-md);margin-bottom:var(--space-md)}.screen--recette .macro-bar{margin-bottom:var(--space-lg)}.fiche-plus{margin-top:var(--space-md)}.fiche-detail{margin-top:var(--space-sm)}.fiche-ingredients{display:flex;flex-direction:column;padding:0;margin:var(--space-sm) 0 0;list-style:none}.fiche-ingredient{display:flex;gap:var(--space-md);align-items:center;padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border)}.fiche-ingredient:last-child{padding-bottom:0;border-bottom:0}.fiche-ingredient__corps{flex:1;min-width:0}.fiche-ingredient__nom{display:block;font-size:var(--font-size-md);font-weight:var(--font-weight-semibold)}.fiche-ingredient__quantite{display:block;margin-top:1px;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.fiche-ingredient__kcal{font-size:var(--font-size-md);color:var(--color-text-secondary);white-space:nowrap;font-variant-numeric:tabular-nums}.badge-manque{padding:1px var(--space-sm);margin-left:var(--space-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-warning-strong);background:var(--color-nutrient-carbs-pale);border-radius:var(--radius-full)}.fiche-etapes{display:flex;flex-direction:column;padding:0;margin:var(--space-sm) 0 0;list-style:none}.fiche-etape{display:flex;gap:var(--space-md);align-items:flex-start;padding:var(--space-sm) 0;font-size:var(--font-size-md);line-height:1.5;border-bottom:1px solid var(--color-border)}.fiche-etape:last-child{padding-bottom:0;border-bottom:0}.fiche-etape--titre{font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);border-bottom:0}.fiche-etape__numero{display:grid;flex:none;place-items:center;width:26px;height:26px;margin-top:1px;font-size:var(--font-size-md);background:var(--color-surface-hover);border-radius:var(--radius-full)}.pied-recette{position:fixed;right:0;bottom:var(--above-tabbar);left:0;z-index:15;padding:var(--space-md) var(--space-lg);padding-bottom:calc(var(--space-md) + var(--scan-overlap));background:var(--color-surface);border-top:1px solid var(--color-border);box-shadow:var(--shadow-normal)}@media(min-width:720px){.pied-recette{right:auto;left:50%;width:720px;border-radius:var(--radius-lg) var(--radius-lg) 0 0;transform:translate(-50%)}}.pied-recette__etat{min-height:1.2em;margin-bottom:var(--space-sm);font-size:var(--font-size-sm);line-height:1.35;color:var(--color-text-secondary)}.pied-recette__actions{display:flex;gap:var(--space-sm)}.pied-recette__actions .button{flex:1}.screen.screen--objectifs{gap:var(--space-lg)}.cap__haut{display:flex;align-items:baseline;gap:var(--space-sm);margin-top:var(--space-sm)}.cap__cible{font-size:var(--font-size-hero);color:var(--color-primary-text)}.cap__vers{font-size:var(--font-size-md);color:var(--color-text-secondary)}.cap__piste{height:10px;margin-top:var(--space-md);overflow:hidden;background:var(--color-border);border-radius:var(--radius-full)}.cap__part{display:block;height:100%;background:var(--color-primary);border-radius:var(--radius-full);transition:width var(--duration-normal) var(--easing-standard)}.cap__reperes{display:flex;justify-content:space-between;gap:var(--space-sm);margin-top:var(--space-xs);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.cap__actuel{font-weight:var(--font-weight-semibold);color:var(--color-text)}.cap__mesures{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-sm);padding-top:var(--space-md);margin-top:var(--space-md);border-top:1px solid var(--color-border)}.mesurette{display:flex;flex-direction:column;gap:2px;min-width:0}.mesurette b{font-size:var(--font-size-lg);overflow-wrap:anywhere}.mesurette small{font-size:var(--font-size-sm);line-height:1.3;color:var(--color-text-secondary)}.verdict--tenu{color:var(--color-success)}.verdict--rate{color:var(--color-warning)}.poids__haut{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-sm);margin-top:var(--space-sm)}.poids__valeur{font-size:var(--font-size-hero)}.poids__unite{font-size:var(--font-size-lg);color:var(--color-text-secondary)}.delta{padding:2px var(--space-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);background:var(--color-surface-hover);border-radius:var(--radius-full)}.courbe{display:block;width:100%;height:140px;margin-top:var(--space-md)}.courbe__cible{stroke:var(--color-text-placeholder);stroke-width:1}.courbe__aujourdhui{stroke:var(--color-border);stroke-width:1}.courbe__pesees circle{fill:var(--color-text-placeholder)}.courbe__tendance{stroke:var(--color-success);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.courbe__projection{stroke:var(--color-primary);stroke-width:1.5;vector-effect:non-scaling-stroke}.courbe__arrivee{fill:var(--color-surface);stroke:var(--color-primary);stroke-width:2;vector-effect:non-scaling-stroke}.courbe__actuel{fill:var(--color-success);stroke:var(--color-surface);stroke-width:2;vector-effect:non-scaling-stroke}.courbe__bornes{display:flex;justify-content:space-between;gap:var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.series{display:flex;flex-wrap:wrap;gap:var(--space-md);margin-top:var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.series__item{display:inline-flex;align-items:center;gap:var(--space-xs)}.series__marque{display:inline-block;width:14px}.series__marque--points{height:4px;background:var(--color-text-placeholder);border-radius:var(--radius-full)}.series__marque--trait{height:2px;background:var(--color-success)}.series__marque--pointille{height:0;border-top:2px dashed var(--color-primary)}.plages{display:flex;gap:var(--space-xs);padding:3px;margin-top:var(--space-md);background:var(--color-surface-hover);border-radius:var(--radius-full)}.plage{flex:1;padding:var(--space-xs) var(--space-sm);font-family:inherit;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);cursor:pointer;background:none;border:none;border-radius:var(--radius-full);transition:background var(--duration-fast) var(--easing-standard),color var(--duration-fast) var(--easing-standard)}.plage--actif{color:var(--color-text);background:var(--color-surface);box-shadow:var(--shadow-subtle)}.screen--objectifs .card-entete .button{flex:0 0 auto;padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-md)}.energie{display:flex;flex-direction:column;gap:var(--space-md);margin-top:var(--space-sm)}.energie__haut{display:flex;justify-content:space-between;gap:var(--space-sm);font-size:var(--font-size-md);color:var(--color-text-secondary)}.energie__valeur{font-weight:var(--font-weight-semibold);color:var(--color-text);font-variant-numeric:tabular-nums}.energie__piste{display:block;height:8px;margin-top:var(--space-xs);overflow:hidden;background:var(--color-border);border-radius:var(--radius-full)}.energie__part{display:block;height:100%;border-radius:var(--radius-full)}.energie__part--depense{background:var(--color-text-placeholder)}.energie__part--cible{background:var(--color-primary)}.conseil{padding:var(--space-md);margin-top:var(--space-lg);font-size:var(--font-size-md);line-height:1.5;color:var(--color-text);background:var(--color-surface-hover);border-radius:var(--radius-md)}.conseil .icon--inline{color:var(--color-success)}.conseil--attention .icon--inline{color:var(--color-warning)}.cible__kcal{display:flex;align-items:baseline;gap:var(--space-sm);margin-top:var(--space-sm)}.cible__valeur{font-size:var(--font-size-hero)}.cible__unite{font-size:var(--font-size-md);color:var(--color-text-secondary)}.cible__barre{margin-top:var(--space-md);height:8px}.cibles{display:flex;flex-direction:column;gap:var(--space-sm);padding:0;margin:var(--space-md) 0 0;list-style:none}.cibles__ligne{display:grid;grid-template-columns:10px 1fr auto auto;gap:var(--space-sm);align-items:baseline;font-size:var(--font-size-md)}.cibles__puce{width:10px;height:10px;border-radius:var(--radius-full)}.cibles__puce--proteins{background:var(--color-nutrient-proteins)}.cibles__puce--carbs{background:var(--color-nutrient-carbs)}.cibles__puce--fats{background:var(--color-nutrient-fats)}.cibles__part{min-width:3.5em;text-align:right;color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.cibles__grammes{min-width:5em;text-align:right;font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums}.cibles__grammes small{font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);color:var(--color-text-secondary)}.lien-discret{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-primary-text)}.semaine-points{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-xs);padding:0;margin:var(--space-md) 0 0;list-style:none}.semaine-points__jour{display:flex;flex-direction:column;gap:var(--space-xs);align-items:center;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.pastille{display:grid;place-items:center;width:30px;height:30px;border-radius:var(--radius-full)}.pastille--tenu{color:var(--color-surface);background:var(--color-success)}.pastille--rate{border:2px solid var(--color-text-placeholder)}.pastille--encours{background:var(--color-surface-hover);border:2px dashed var(--color-primary)}.pastille--avenir{background:var(--color-surface-hover)}.regularite{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-md);padding-top:var(--space-md);margin-top:var(--space-lg);border-top:1px solid var(--color-border)}.regularite__stat{display:flex;flex-direction:column;gap:2px}.regularite__stat b{font-size:var(--font-size-xl);color:var(--color-primary-text)}.regularite__stat small{font-size:var(--font-size-sm);line-height:1.3;color:var(--color-text-secondary)}.mesures{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-md)}.mesure{display:flex;flex-direction:column;gap:var(--space-xs);align-items:flex-start}.mesure__label{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.mesure__valeur{font-size:var(--font-size-title)}.mesure__unite{font-size:var(--font-size-md);color:var(--color-text-secondary)}.mesure__zone{padding:2px var(--space-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-primary-text);background:var(--color-surface-hover);border-radius:var(--radius-full)}@media(width<=380px){.cap__mesures{grid-template-columns:repeat(2,1fr)}.cap__reperes{font-size:var(--font-size-xs)}}.reperes{display:flex;flex-direction:column;gap:var(--space-sm);padding:0;margin:var(--space-md) 0 0;list-style:none}.repere{display:grid;grid-template-columns:1fr auto auto;gap:var(--space-xs) var(--space-sm);align-items:baseline;padding-bottom:var(--space-sm);font-size:var(--font-size-md);border-bottom:1px solid var(--color-border)}.repere:last-child{padding-bottom:0;border-bottom:0}.repere__valeur{color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.repere__valeur b{color:var(--color-text)}.repere__source{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.reperes__notes{padding-top:var(--space-md);margin:var(--space-lg) 0 0;border-top:1px solid var(--color-border)}.reperes__notes dt{margin-top:var(--space-md);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text)}.reperes__notes dt:first-child{margin-top:0}.reperes__notes dd{margin:var(--space-xs) 0 0;font-size:var(--font-size-md);line-height:1.5;color:var(--color-text-secondary)}@media(max-width:360px){.repere{grid-template-columns:1fr auto}.repere__source{grid-column:1 / -1}}.icon-chip--accent{--rayon-color: var(--color-primary-text)}.settings-avatar{--rayon-color: var(--color-primary-text);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);line-height:1}.settings-group{margin-top:var(--space-sm)}.settings-group:first-child{margin-top:0}.session-entry,.session-resume{display:flex;gap:var(--space-md);align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.session-resume{border-color:var(--color-primary);box-shadow:var(--shadow-subtle)}.session-entry__body,.session-resume__body{display:flex;flex-direction:column;gap:2px;min-width:0}.session-entry__title,.session-resume__title{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.session-entry__lead,.session-resume__meta{margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.session-entry .button,.session-resume .button,.session-head__actions .button,.session-summary__actions .button,.session-scan .button{margin-top:0}.session-entry__action,.session-resume__action{flex:none}@media(max-width:420px){.session-entry{flex-direction:column;align-items:stretch}.session-entry__action{width:100%}}.session-stores{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-sm)}.session-conflict{display:flex;flex-direction:column;gap:var(--space-sm);margin-top:var(--space-md)}.screen.screen--session{padding-bottom:calc(var(--reserve-pied) + 96px)}.session-head{position:sticky;top:calc(var(--header-height) + var(--safe-top));z-index:8;display:flex;flex-direction:column;gap:var(--space-sm);margin:calc(-1 * var(--space-lg)) calc(-1 * var(--space-lg)) 0;padding:var(--space-md) var(--space-lg);background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-subtle)}.session-head__top{display:flex;gap:var(--space-md);align-items:baseline;justify-content:space-between}.session-head__store{display:flex;flex-direction:column;gap:2px;min-width:0}.session-head__name{margin:0;overflow:hidden;font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);text-overflow:ellipsis;white-space:nowrap}.session-head__count{margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.session-head__total{flex:none;font-size:var(--font-size-title);font-variant-numeric:tabular-nums}.session-head__actions{display:flex;gap:var(--space-sm)}.session-head__actions .button{flex:1}.session-progress{display:flex;flex-direction:column;gap:var(--space-xs)}.session-progress__track{height:var(--space-sm);overflow:hidden;background:var(--color-surface-pressed);border-radius:var(--radius-full)}.session-progress__bar{display:block;height:100%;background:var(--color-success);border-radius:var(--radius-full);transition:width var(--duration-normal) var(--easing-standard)}.session-progress__label{margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.session-remaining{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.session-remaining__summary{display:flex;align-items:center;min-height:var(--control-height-lg);padding:0 var(--space-lg);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);cursor:pointer;list-style:none}.session-remaining__summary::-webkit-details-marker{display:none}.session-remaining__summary:after{margin-left:auto;content:"▾";transition:transform var(--duration-fast) var(--easing-standard)}.session-remaining[open] .session-remaining__summary:after{transform:rotate(180deg)}.session-remaining__list{margin:0;padding:0;list-style:none;border-top:1px solid var(--color-border)}.session-remaining__row{display:flex;gap:var(--space-md);align-items:center;justify-content:space-between;min-height:var(--control-height-lg);padding:var(--space-xs) var(--space-lg)}.session-remaining__row+.session-remaining__row{border-top:1px solid var(--color-border)}.session-remaining__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-remaining__quantity{flex:none;font-size:var(--font-size-md);color:var(--color-text-secondary)}.session-done{margin:0}.session-cart{overflow:clip;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.session-cart__title{margin:0;padding:var(--space-sm) var(--space-lg);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);background:var(--color-surface-hover);border-bottom:1px solid var(--color-border)}.session-cart__empty{margin:0;padding:var(--space-lg);color:var(--color-text-secondary)}.session-cart__list{margin:0;padding:0;list-style:none}.session-cart__list>li+li{border-top:1px solid var(--color-border)}.session-line{display:flex;gap:var(--space-md);align-items:center;width:100%;min-height:56px;padding:var(--space-sm) var(--space-lg);font:inherit;color:inherit;text-align:left;background:transparent;border:0}.session-line:active{background:var(--color-surface-pressed)}.session-line__body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.session-line__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-line__meta{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-sm);align-items:center;font-size:var(--font-size-md);color:var(--color-text-secondary)}.session-line__price{flex:none;font-variant-numeric:tabular-nums}.session-line__price--missing{font-size:var(--font-size-md);color:var(--color-warning)}.session-line__chevron{flex:none;font-size:var(--font-size-xl);color:var(--color-text-placeholder)}.session-abandon{align-self:center;color:var(--color-error)}.session-scan{position:fixed;right:0;bottom:var(--above-tabbar);left:0;z-index:15;display:flex;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:var(--color-surface);border-top:1px solid var(--color-border);box-shadow:var(--shadow-normal)}.session-scan__main{flex:1;min-height:60px;font-size:var(--font-size-xl)}.session-scan__manual{flex:none;min-width:96px}@media(min-width:720px){.session-scan{right:auto;left:50%;width:720px;transform:translate(-50%);border-radius:var(--radius-lg) var(--radius-lg) 0 0}}.session-source{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:center;margin:0 0 var(--space-sm)}.session-match{margin:0 0 var(--space-md)}.session-observed{margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.session-remove{margin-top:var(--space-xl)}.session-summary__list{margin:var(--space-md) 0;padding-left:var(--space-lg)}.session-summary__list li+li{margin-top:var(--space-xs)}.session-summary__actions{display:flex;gap:var(--space-sm);margin-top:var(--space-lg)}.session-summary__actions .button{flex:1;display:inline-flex;align-items:center;justify-content:center}.session-scan{padding-bottom:calc(var(--space-md) + var(--scan-overlap))}.screen.screen--shopping{padding-bottom:calc(var(--reserve-pied) + 104px)}.shopping-head{display:flex;gap:var(--space-md);align-items:center;justify-content:space-between;margin:0}.shopping-head__dates{font-size:var(--font-size-md);color:var(--color-text-secondary)}.shopping-head__refresh{min-height:var(--control-height-lg);padding:0 var(--space-md);font-size:var(--font-size-md);color:var(--color-primary-text);background:transparent;border:0;border-radius:var(--radius-md)}.shopping-head__refresh:active{background:var(--color-surface-pressed)}.shopping-head__refresh:disabled{color:var(--color-text-disabled);cursor:default}.shopping-tools{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.chip-toggle{display:inline-flex;gap:var(--space-xs);align-items:center;min-height:var(--control-height-lg);padding:0 var(--space-lg);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);transition:background var(--duration-fast) var(--easing-standard),color var(--duration-fast) var(--easing-standard)}.chip-toggle--on{color:var(--color-on-primary);background:var(--color-primary);border-color:var(--color-primary)}.shopping-note{margin:0;font-size:var(--font-size-md);color:var(--color-warning)}.pantry-hint{display:flex;gap:var(--space-md);align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);background:var(--color-surface);border:1px solid var(--color-success);border-radius:var(--radius-lg)}.pantry-hint__text{margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.pantry-hint .button{flex:none;margin-top:0}.screen--shopping .shopping-section{overflow:clip}.screen--shopping .shopping-section__header{padding:0}.shopping-section__toggle{display:flex;gap:var(--space-sm);align-items:center;width:100%;min-height:var(--control-height-lg);padding:0 var(--space-lg);font:inherit;color:inherit;text-align:left;background:transparent;border:0}.shopping-section__toggle:active{background:var(--color-surface-pressed)}.shopping-section__chevron{display:grid;place-items:center;flex:none;color:var(--color-text-placeholder)}.shopping-section__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shopping-section__count{flex:none;font-variant-numeric:tabular-nums;text-transform:none;letter-spacing:0;color:var(--color-text-placeholder)}.shopping-row{display:flex;align-items:stretch}.screen--shopping .shopping-row__label{flex:1;min-width:0;padding-right:var(--space-sm)}.shopping-row__detail{display:grid;place-items:center;flex:none;width:var(--control-height-lg);color:var(--color-text-placeholder);background:transparent;border:0}.shopping-row--checked .icon-chip{color:var(--color-text-disabled);background:transparent}.screen--store .shopping-row__label .icon-chip{width:34px;height:34px}.shopping-row__detail:active{background:var(--color-surface-pressed)}.screen--shopping .shopping-row__meta{flex-wrap:wrap;gap:var(--space-xs) var(--space-sm)}.shopping-row__cost.shopping-row__cost--missing{font-size:var(--font-size-md);color:var(--color-warning)}.badge.badge--partial{color:var(--color-text-secondary);background:transparent;border:1px solid var(--color-border-hover)}.screen--store .shopping-row__label{min-height:72px}.screen--store .shopping-row__checkbox{width:32px;height:32px}.screen--store .shopping-row__name{font-size:var(--font-size-xl);font-weight:var(--font-weight-medium)}.screen--store .shopping-row__meta,.screen--store .shopping-row__cost{font-size:var(--font-size-lg)}.screen--store .shopping-row__detail{width:56px}.screen--shopping .shopping-footer{flex-direction:column;gap:var(--space-xs);align-items:stretch}.shopping-footer__row{display:flex;gap:var(--space-lg);align-items:center;justify-content:space-between}.shopping-footer__label{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary)}.screen--shopping .shopping-footer__amount{line-height:1.1}.shopping-footer__actions{display:flex;gap:var(--space-xs);align-items:center;flex:none}.shopping-footer__more.icon-button{font-size:var(--font-size-xl)}.shopping-footer__error,.shopping-footer__flash{margin:0;font-size:var(--font-size-md)}.shopping-footer__error{color:var(--color-error)}.shopping-footer__flash{color:var(--color-success)}.action-list{margin:0;padding:0;list-style:none}.action-list>li+li{border-top:1px solid var(--color-border)}.action-list__item{display:flex;gap:var(--space-md);align-items:center;width:100%;min-height:56px;padding:var(--space-sm) var(--space-xs);font:inherit;color:inherit;text-align:left;background:transparent;border:0}.action-list__item:active{background:var(--color-surface-pressed)}.line-detail__section{display:flex;flex-direction:column;gap:var(--space-sm)}.line-detail__title{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.line-detail__links{display:flex;gap:var(--space-md);align-items:center;margin:0}.line-detail__link{color:var(--color-primary-text)}.line-detail__empty{margin:0;color:var(--color-text-secondary)}.cost-history__current{display:flex;flex-direction:column;gap:var(--space-xs);margin:0}.cost-history__amount{font-size:var(--font-size-title);font-variant-numeric:tabular-nums}.cost-history__warning{font-size:var(--font-size-md);color:var(--color-warning)}.cost-history__done{margin:0;font-size:var(--font-size-md);color:var(--color-success)}.cost-history__tag{font-size:var(--font-size-md);font-weight:var(--font-weight-regular);color:var(--color-text-secondary)}.cost-history__up{color:var(--color-warning);font-variant-numeric:tabular-nums}.cost-history__down{color:var(--color-success);font-variant-numeric:tabular-nums}.card.progression{padding:var(--space-md)}.progression__haut{display:flex;gap:var(--space-sm);align-items:baseline;justify-content:space-between;margin-bottom:var(--space-sm)}.progression__gauche{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold)}.progression__gauche .chiffre{font-size:var(--font-size-xl)}.progression__droite{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums;color:var(--color-text-secondary);white-space:nowrap}.progression__piste{display:block;height:8px;overflow:hidden;background:var(--color-border);border-radius:var(--radius-full)}.progression__part{display:block;height:100%;background:var(--color-success);border-radius:var(--radius-full);transition:width var(--duration-normal) var(--easing-standard)}.progression__note{margin-top:var(--space-xs);font-size:var(--font-size-sm);color:var(--color-text-secondary)}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--color-primary: #5c6b30;--color-primary-hover: #4c5928;--color-primary-pressed: #3d4820;--color-primary-disabled: #cfcdba;--color-on-primary: #ffffff;--color-primary-text: #4c5928;--color-link: #4c5928;--color-secondary: #b45309;--color-secondary-hover: #92400e;--color-secondary-pressed: #7c2d12;--color-background: #f5f7f2;--color-surface: #ffffff;--color-surface-hover: #eff2ee;--color-surface-pressed: #e4e9e2;--color-text: #1e2a23;--color-text-secondary: #5c6b62;--color-text-disabled: #b6c0b9;--color-text-placeholder: #7d8c83;--color-border: #e4e9e2;--color-border-hover: #c9d6cd;--color-border-focus: #7d8c52;--color-accent: #b45309;--color-error: #c0342b;--color-error-hover: #9f2a22;--color-success: #35734f;--color-warning: #b45309;--color-warning-pale: #fffdf6;--color-warning-border: #ead9ae;--color-warning-ink: #5c5340;--color-warning-strong: #8a6a2b;--color-echeance-urgent-pale: #fbe9ef;--color-echeance-urgent-ink: #b81f4d;--color-success-pale: #e4f0e8;--color-zone-safe: #8fc7a6;--color-zone-caution: #efc876;--color-zone-risk: #e79ab0;--color-overlay: rgb(0 0 0 / 45%);--shadow-color: 22 26 13;--shadow-subtle: 0 1px 2px rgb(var(--shadow-color) / 6%);--shadow-normal: 0 2px 8px rgb(var(--shadow-color) / 12%);--shadow-elevated: 0 8px 24px rgb(var(--shadow-color) / 18%);--color-source-ciqual: #15803d;--color-source-off: #1d4ed8;--color-source-manual: #c2410c;--color-source-lidl: #c2410c;--color-nutrient-proteins: #d6456e;--color-nutrient-proteins-ink: #c92c58;--color-nutrient-proteins-pale: #f9e9ed;--color-nutrient-carbs: #e8a33d;--color-nutrient-carbs-ink: #996212;--color-nutrient-carbs-pale: #f9f3e9;--color-nutrient-fats: #2f94a8;--color-nutrient-fats-ink: #267686;--color-nutrient-fats-pale: #e9f6f9;--color-nutrient-energy: #6b7d3a;--color-nutrient-energy-ink: #4c5928;--color-nutrient-energy-pale: #f3f6ec;--color-nutrient-sugars: #b84f8f;--color-nutrient-sugars-ink: #8e3b6b;--color-nutrient-sugars-pale: #f7ebf2;--color-nutrient-saturated: #d1553c;--color-nutrient-saturated-ink: #b83a22;--color-nutrient-saturated-pale: #f9ebe9;--color-nutrient-fiber: #4e9c5e;--color-nutrient-fiber-ink: #35734f;--color-nutrient-fiber-pale: #ecf6ee;--color-nutrient-salt: #7145a7;--color-nutrient-salt-ink: #6a3ba0;--color-nutrient-salt-pale: #f0ebf7;--color-toast-bg: #242b18;--font-family: "Instrument Sans Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, Helvetica, Arial, sans-serif;--font-family-display: "Bricolage Grotesque Variable", "Instrument Sans Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, sans-serif;--font-size-xs: .625rem;--font-size-sm: .6875rem;--font-size-md: .8125rem;--font-size-lg: .9375rem;--font-size-xl: 1.125rem;--font-size-title: 1.375rem;--font-size-hero: 1.625rem;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 24px;--space-xxl: 32px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 18px;--radius-xxl: 24px;--radius-full: 9999px;--duration-fast: .15s;--duration-normal: .25s;--duration-slow: .4s;--easing-standard: cubic-bezier(.33, 1, .68, 1);--easing-enter: cubic-bezier(.25, .46, .45, .94);--easing-exit: cubic-bezier(.55, .06, .68, .19);--control-height-sm: 28px;--control-height-md: 36px;--control-height-lg: 44px;--header-height: 56px;--tabbar-height: 56px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--app-height: 100dvh;--viewport-drift: 0px}@media(display-mode:standalone){:root{--app-height: 100vh;--viewport-drift: calc(100dvh - 100vh) }}:root{--above-tabbar: calc(var(--tabbar-height) + var(--safe-bottom) + var(--viewport-drift))}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--color-primary: #a8bd66;--color-primary-hover: #bccf80;--color-primary-pressed: #8fa356;--color-primary-disabled: #3f4630;--color-on-primary: #151a0c;--color-primary-text: #b8cc78;--color-link: #b8cc78;--color-secondary: #f0a868;--color-secondary-hover: #f6c091;--color-secondary-pressed: #d98c4a;--color-background: #11150b;--color-surface: #1c2113;--color-surface-hover: #272d1b;--color-surface-pressed: #343b26;--color-text: #eef1e3;--color-text-secondary: #a7ae91;--color-text-disabled: #7b8168;--color-text-placeholder: #848a6d;--color-border: #333a24;--color-border-hover: #464e33;--color-border-focus: #b8cc78;--color-accent: #f0a868;--color-error: #f08a80;--color-error-hover: #f7b0a8;--color-success: #7dd68f;--color-warning: #f2c14e;--color-warning-pale: #2a2617;--color-warning-border: #4d452a;--color-warning-ink: #ded6bd;--color-warning-strong: #f2c14e;--color-echeance-urgent-pale: #3a1f28;--color-echeance-urgent-ink: #f5a3bd;--color-success-pale: #1b3621;--color-zone-safe: #3f6b52;--color-zone-caution: #6e5a2c;--color-zone-risk: #6d3b4c;--color-nutrient-proteins-ink: #dc5e82;--color-nutrient-proteins-pale: #41101e;--color-nutrient-carbs-ink: #e8a33d;--color-nutrient-carbs-pale: #412e10;--color-nutrient-fats-ink: #36a9c0;--color-nutrient-fats-pale: #123840;--color-nutrient-energy-ink: #8fa74d;--color-nutrient-energy-pale: #30381a;--color-nutrient-sugars-ink: #c46ea3;--color-nutrient-sugars-pale: #3a172d;--color-nutrient-saturated-ink: #d76c57;--color-nutrient-saturated-pale: #411910;--color-nutrient-fiber-ink: #55aa66;--color-nutrient-fiber-pale: #1b3621;--color-nutrient-salt-ink: #9b77c7;--color-nutrient-salt-pale: #27183a;--shadow-color: 0 0 0;--shadow-subtle: 0 1px 2px rgb(var(--shadow-color) / 35%);--shadow-normal: 0 2px 8px rgb(var(--shadow-color) / 50%);--shadow-elevated: 0 8px 24px rgb(var(--shadow-color) / 65%)}}:root[data-theme=dark]{--color-primary: #a8bd66;--color-primary-hover: #bccf80;--color-primary-pressed: #8fa356;--color-primary-disabled: #3f4630;--color-on-primary: #151a0c;--color-primary-text: #b8cc78;--color-link: #b8cc78;--color-secondary: #f0a868;--color-secondary-hover: #f6c091;--color-secondary-pressed: #d98c4a;--color-background: #11150b;--color-surface: #1c2113;--color-surface-hover: #272d1b;--color-surface-pressed: #343b26;--color-text: #eef1e3;--color-text-secondary: #a7ae91;--color-text-disabled: #7b8168;--color-text-placeholder: #848a6d;--color-border: #333a24;--color-border-hover: #464e33;--color-border-focus: #b8cc78;--color-accent: #f0a868;--color-error: #f08a80;--color-error-hover: #f7b0a8;--color-success: #7dd68f;--color-warning: #f2c14e;--color-warning-pale: #2a2617;--color-warning-border: #4d452a;--color-warning-ink: #ded6bd;--color-warning-strong: #f2c14e;--color-echeance-urgent-pale: #3a1f28;--color-echeance-urgent-ink: #f5a3bd;--color-success-pale: #1b3621;--color-zone-safe: #3f6b52;--color-zone-caution: #6e5a2c;--color-zone-risk: #6d3b4c;--color-nutrient-proteins-ink: #dc5e82;--color-nutrient-proteins-pale: #41101e;--color-nutrient-carbs-ink: #e8a33d;--color-nutrient-carbs-pale: #412e10;--color-nutrient-fats-ink: #36a9c0;--color-nutrient-fats-pale: #123840;--color-nutrient-energy-ink: #8fa74d;--color-nutrient-energy-pale: #30381a;--color-nutrient-sugars-ink: #c46ea3;--color-nutrient-sugars-pale: #3a172d;--color-nutrient-saturated-ink: #d76c57;--color-nutrient-saturated-pale: #411910;--color-nutrient-fiber-ink: #55aa66;--color-nutrient-fiber-pale: #1b3621;--color-nutrient-salt-ink: #9b77c7;--color-nutrient-salt-pale: #27183a;--shadow-color: 0 0 0;--shadow-subtle: 0 1px 2px rgb(var(--shadow-color) / 35%);--shadow-normal: 0 2px 8px rgb(var(--shadow-color) / 50%);--shadow-elevated: 0 8px 24px rgb(var(--shadow-color) / 65%)}.theme-en-bascule,.theme-en-bascule *,.theme-en-bascule *:before,.theme-en-bascule *:after{transition:none!important}*,*:before,*:after{box-sizing:border-box}html{font-size:16px;-webkit-text-size-adjust:100%;touch-action:pan-x pan-y}[data-allow-gestures]{touch-action:none}@media(min-width:768px){html{font-size:13px}}body{margin:0;font-family:var(--font-family);font-size:var(--font-size-lg);line-height:1.5;color:var(--color-text);background:var(--color-background);overscroll-behavior-y:none;-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}a{color:var(--color-link)}a:active{opacity:.7}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.app{display:flex;flex-direction:column;min-height:var(--app-height)}.app-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);height:calc(var(--header-height) + var(--safe-top));padding:var(--safe-top) var(--space-lg) 0;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.app-header--effacee{background:var(--color-background);border-bottom-color:transparent}.app-header--effacee .app-header__title{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.app-header__title{margin:0;font-family:var(--font-family-display);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);letter-spacing:-.01em}.hero{display:flex;flex-direction:column;gap:2px;padding:var(--space-xs) var(--space-lg) 0;margin:0 auto;max-width:720px}.hero__kicker{font-size:var(--font-size-md);color:var(--color-text-secondary)}.hero__title{margin:0;font-family:var(--font-family-display);font-size:var(--font-size-hero);font-weight:var(--font-weight-extrabold);line-height:1.1;letter-spacing:-.015em}.app-header__actions{display:flex;gap:var(--space-xs);align-items:center}.lien-surface{color:inherit;text-decoration:none}.icon-button{display:grid;place-items:center;width:var(--control-height-lg);height:var(--control-height-lg);font-size:var(--font-size-lg);color:var(--color-text);text-decoration:none;background:transparent;border:0;border-radius:var(--radius-full);transition:background var(--duration-fast) var(--easing-standard)}.icon-button:hover{background:var(--color-surface-hover)}.icon-button:active{background:var(--color-surface-pressed)}.avatar{display:grid;place-items:center;flex:none;width:34px;height:34px;margin-left:var(--space-xs);font-family:var(--font-family-display);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);line-height:1;color:#fff;text-decoration:none;background:linear-gradient(135deg,var(--color-nutrient-carbs-ink),var(--color-nutrient-proteins-ink));border-radius:var(--radius-full)}.app-main{flex:1;padding-bottom:var(--above-tabbar)}.screen{display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-lg);margin:0 auto;max-width:720px}.card{padding:var(--space-lg);background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-subtle)}.card__title{margin:0 0 var(--space-sm);font-family:var(--font-family-display);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold)}.card__lead{margin:0;color:var(--color-text-secondary)}.card__list{margin:var(--space-md) 0 0;padding-left:var(--space-lg);color:var(--color-text-secondary)}.card__list li+li{margin-top:var(--space-xs)}.kv{display:grid;grid-template-columns:auto 1fr;gap:var(--space-xs) var(--space-lg);margin:var(--space-md) 0 0}.kv dt{color:var(--color-text-secondary)}.kv dd{margin:0;font-variant-numeric:tabular-nums;text-align:right}.status{margin:0;font-weight:var(--font-weight-medium)}.status--ok{color:var(--color-success)}.status--error{color:var(--color-error)}.tabbar{position:fixed;right:0;bottom:var(--viewport-drift);left:0;z-index:20;display:grid;grid-template-columns:1fr 1fr 76px 1fr 1fr;height:calc(var(--tabbar-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:var(--color-surface);border-top:1px solid var(--color-border)}.tabbar:after{content:"";position:absolute;top:100%;right:0;left:0;height:120px;background:var(--color-surface)}.tabbar__item{display:flex;flex-direction:column;gap:2px;align-items:center;justify-content:center;color:var(--color-text-secondary);text-decoration:none;transition:color var(--duration-fast) var(--easing-standard)}.tabbar__item--active{color:var(--color-primary-text)}.tabbar__item--active .tabbar__label:after{content:"";display:block;width:4px;height:4px;margin:2px auto 0;background:currentcolor;border-radius:var(--radius-full)}.tabbar__icon{display:grid;place-items:center;height:24px}.tabbar__label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}@media(max-width:340px){.tabbar__label{display:none}}:root{--scan-overlap: 20px;--reserve-pied: calc(var(--space-lg) + var(--scan-overlap))}.tabbar__scan{display:grid;place-items:center;width:56px;height:56px;margin:calc(-1 * var(--scan-overlap)) auto 0;color:var(--color-on-primary);background:var(--color-primary);border:0;border-radius:var(--radius-full);box-shadow:0 8px 18px rgb(var(--shadow-color) / 35%);transition:background var(--duration-fast) var(--easing-standard),transform var(--duration-fast) var(--easing-standard)}.tabbar__scan:active{background:var(--color-primary-pressed);transform:scale(.94)}.tabbar__scan--active{box-shadow:0 0 0 3px var(--color-background),0 0 0 5px var(--color-primary),0 8px 18px rgb(var(--shadow-color) / 35%)}.button{display:inline-flex;gap:var(--space-sm);align-items:center;justify-content:center;text-align:center;text-decoration:none;min-height:var(--control-height-lg);padding:0 var(--space-lg);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);border:1px solid transparent;border-radius:var(--radius-lg);transition:background var(--duration-fast) var(--easing-standard),border-color var(--duration-fast) var(--easing-standard)}.button--primary{color:var(--color-on-primary);background:var(--color-primary)}.button--primary:active{background:var(--color-primary-pressed)}.button--secondary{color:var(--color-primary-text);background:transparent;border-color:var(--color-border)}.card>.button{margin-top:var(--space-md)}.button--secondary:active{background:var(--color-surface-pressed)}.week-picker{display:grid;grid-template-columns:var(--control-height-lg) 1fr var(--control-height-lg);align-items:center;padding:var(--space-xs);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.week-picker__arrow{height:var(--control-height-lg);font-size:var(--font-size-xl);color:var(--color-text-secondary);background:transparent;border:0;border-radius:var(--radius-md)}.week-picker__arrow:active{background:var(--color-surface-pressed)}.week-picker__label{display:flex;flex-direction:column;gap:1px;align-items:center;padding:var(--space-xs);background:transparent;border:0;border-radius:var(--radius-md)}.week-picker__label:disabled{cursor:default;opacity:1}.week-picker__week{font-weight:var(--font-weight-semibold)}.week-picker__year{font-size:var(--font-size-md);color:var(--color-text-secondary)}.shopping-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:clip}.shopping-section__header{position:sticky;top:calc(var(--header-height) + var(--safe-top));z-index:5;margin:0;padding:var(--space-sm) var(--space-lg);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);background:var(--color-surface-hover);border-bottom:1px solid var(--color-border)}.shopping-list{margin:0;padding:0;list-style:none}.shopping-row+.shopping-row{border-top:1px solid var(--color-border)}.shopping-row__label{display:flex;gap:var(--space-md);align-items:center;min-height:56px;padding:var(--space-sm) var(--space-lg);cursor:pointer}.shopping-row__checkbox{flex:none;width:24px;height:24px;accent-color:var(--color-primary)}.shopping-row__body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.shopping-row__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shopping-row__meta{display:flex;gap:var(--space-sm);align-items:center;font-size:var(--font-size-md);color:var(--color-text-secondary)}.shopping-row__cost{flex:none;font-variant-numeric:tabular-nums;color:var(--color-text-secondary)}.shopping-row--checked .shopping-row__name{color:var(--color-text-secondary);text-decoration:line-through}.shopping-row--checked{background:var(--color-surface-hover)}.badge{display:inline-flex;align-items:center;gap:3px;padding:2px var(--space-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);border-radius:var(--radius-full);white-space:nowrap}.badge--pantry{color:var(--color-on-primary);background:var(--color-success)}.shopping-footer{position:fixed;right:0;bottom:var(--above-tabbar);left:0;z-index:15;display:flex;gap:var(--space-lg);align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);background:var(--color-surface);border-top:1px solid var(--color-border);box-shadow:var(--shadow-normal)}.shopping-footer__totals{display:flex;flex-direction:column;min-width:0}.shopping-footer__amount{font-size:var(--font-size-xl);font-variant-numeric:tabular-nums}.shopping-footer__detail{font-size:var(--font-size-md);color:var(--color-text-secondary)}@media(min-width:720px){.shopping-footer{right:auto;left:50%;width:720px;transform:translate(-50%);border-radius:var(--radius-lg) var(--radius-lg) 0 0}}.skeleton-row{display:flex;gap:var(--space-md);align-items:center;padding:var(--space-sm) 0}.skeleton{background:var(--color-surface-hover);border-radius:var(--radius-sm);animation:skeleton-pulse 1.4s var(--easing-standard) infinite}.skeleton--box{flex:none;width:24px;height:24px}.skeleton--line{height:14px;flex:1}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.45}}.search-field{width:100%;min-height:var(--control-height-lg);padding:0 var(--space-md);font:inherit;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.search-field::placeholder{color:var(--color-text-placeholder)}.search-field:focus{border-color:var(--color-border-focus);outline:none}.list-count{margin:0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.text-error{color:var(--color-error)}.row-list{margin:0;padding:0;list-style:none;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.row-list--flush{background:transparent;border:0;border-radius:0}.row+.row,.row-list>li+li{border-top:1px solid var(--color-border)}.row__link,.row--static{display:flex;gap:var(--space-md);align-items:center;min-height:56px;padding:var(--space-sm) var(--space-lg);color:inherit;text-decoration:none}.row__link:active{background:var(--color-surface-pressed)}.row__body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.row__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row__meta{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:center;font-size:var(--font-size-md);color:var(--color-text-secondary)}.row__value{flex:none;font-variant-numeric:tabular-nums;color:var(--color-text-secondary)}.row__chevron{flex:none;font-size:var(--font-size-xl);color:var(--color-text-placeholder)}.badge--source{color:#fff;font-weight:var(--font-weight-medium)}.badge--ciqual{background:var(--color-source-ciqual)}.badge--openfoodfacts{background:var(--color-source-off)}.badge--manual,.badge--lidl{background:var(--color-source-manual)}.badge--season{color:#fff;background:var(--color-success)}.section-header{margin:0;padding:var(--space-sm) var(--space-lg);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);background:var(--color-surface-hover);border-bottom:1px solid var(--color-border)}.section-header__hint{text-transform:none;letter-spacing:0;font-weight:var(--font-weight-regular)}.section-header--soon{color:var(--color-error)}.section-header--watch{color:var(--color-warning)}.urgency-dot{flex:none;width:8px;height:8px;border-radius:var(--radius-full);background:var(--color-text-placeholder)}.urgency-dot--soon{background:var(--color-error)}.urgency-dot--watch{background:var(--color-warning)}.card--flush{padding:0;overflow:hidden}.card__title--padded{padding:var(--space-lg) var(--space-lg) var(--space-sm);margin:0}.kv__pair{display:contents}.note{margin:var(--space-md) 0 0;font-size:var(--font-size-md);color:var(--color-text-secondary)}.instructions{margin:0;white-space:pre-wrap}.chips{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-md)}.chip{padding:2px var(--space-sm);font-size:var(--font-size-md);border:1px solid;border-radius:var(--radius-full)}.table-scroll{overflow-x:auto;margin-top:var(--space-md)}.nutrition-table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.nutrition-table th,.nutrition-table td{padding:var(--space-xs) var(--space-sm);text-align:right;white-space:nowrap}.nutrition-table thead th{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);border-bottom:1px solid var(--color-border)}.nutrition-table thead th:first-child{text-align:left}.nutrition-table tbody th{text-align:left;font-weight:var(--font-weight-regular);color:var(--color-text-secondary)}.nutrient-label{display:flex;align-items:center;gap:var(--space-sm)}.nutrient-label__icon{display:grid;place-items:center;flex:none;width:28px;height:28px;border-radius:var(--radius-full)}.nutrient-label__icon--kcal{color:var(--color-nutrient-energy-ink);background:var(--color-nutrient-energy-pale)}.nutrient-label__icon--proteins{color:var(--color-nutrient-proteins-ink);background:var(--color-nutrient-proteins-pale)}.nutrient-label__icon--carbs{color:var(--color-nutrient-carbs-ink);background:var(--color-nutrient-carbs-pale)}.nutrient-label__icon--sugars{color:var(--color-nutrient-sugars-ink);background:var(--color-nutrient-sugars-pale)}.nutrient-label__icon--fats{color:var(--color-nutrient-fats-ink);background:var(--color-nutrient-fats-pale)}.nutrient-label__icon--saturatedFats{color:var(--color-nutrient-saturated-ink);background:var(--color-nutrient-saturated-pale)}.nutrient-label__icon--fiber{color:var(--color-nutrient-fiber-ink);background:var(--color-nutrient-fiber-pale)}.nutrient-label__icon--salt{color:var(--color-nutrient-salt-ink);background:var(--color-nutrient-salt-pale)}.nutrient-label--sub{padding-left:var(--space-md);font-style:italic}.nutrient-label--sub .nutrient-label__icon{width:24px;height:24px}.nutrition-table__part{width:3.5rem;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.nutrition-table .unit{color:var(--color-text-secondary)}.day-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-xs)}.day-strip__day{display:flex;flex-direction:column;gap:2px;align-items:center;padding:var(--space-sm) 0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.day-strip__day--active{color:var(--color-on-primary);background:var(--color-primary);border-color:var(--color-primary)}.day-strip__name{font-size:var(--font-size-xs);text-transform:uppercase}.day-strip__date{font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums}.day-strip__dot{width:4px;height:4px;border-radius:var(--radius-full);background:transparent}.day-strip__dot--on{background:currentColor}.slot-empty{margin:0;padding:0 var(--space-lg) var(--space-lg);color:var(--color-text-placeholder)}.app-header{display:grid;grid-template-columns:var(--control-height-lg) 1fr auto}.app-header__actions{grid-column:3}.icon-button--spacer{pointer-events:none}.login{display:grid;place-items:center;min-height:var(--app-height);padding:var(--space-lg);padding-top:calc(var(--space-lg) + var(--safe-top))}.login__card{display:flex;flex-direction:column;gap:var(--space-md);width:100%;max-width:360px}.login__logo{display:block;width:72px;height:72px;margin-bottom:calc(-1 * var(--space-xs))}.login__title{margin:0;font-size:var(--font-size-title);font-weight:var(--font-weight-semibold);letter-spacing:-.01em}.login__field{margin-top:var(--space-sm)}.login__submit{width:100%}.activity-dot--create{background:var(--color-success)}.activity-dot--update{background:var(--color-primary)}.activity-dot--delete{background:var(--color-error)}.row__title strong{font-weight:var(--font-weight-semibold)}.row--static .row__title{overflow:visible;white-space:normal}.segmented{display:flex;gap:var(--space-xs);padding:var(--space-xs);background:var(--color-surface-hover);border-radius:var(--radius-md)}.segmented__tab{flex:1;min-height:var(--control-height-lg);font-size:var(--font-size-lg);color:var(--color-text-secondary);background:transparent;border:0;border-radius:var(--radius-sm)}.segmented__tab--active{color:var(--color-text);background:var(--color-surface);font-weight:var(--font-weight-semibold);box-shadow:var(--shadow-subtle)}.shopping-footer{padding-bottom:calc(var(--space-md) + var(--scan-overlap))}.icon{flex:none;display:block}.icon--inline{display:inline-block;vertical-align:-.16em}.icon-chip{display:grid;place-items:center;flex:none;width:36px;height:36px;color:var(--rayon-color, var(--color-text-secondary));background:color-mix(in srgb,var(--rayon-color, var(--color-text-secondary)) 12%,transparent);border-radius:var(--radius-md)}.icon-chip--sm{width:28px;height:28px;border-radius:var(--radius-sm)}.row--done .icon-chip,.shopping-item--checked .icon-chip{color:var(--color-text-disabled);background:transparent}[data-rayon=fruits-legumes]{--rayon-color: #16a34a}[data-rayon=boulangerie]{--rayon-color: #b45309}[data-rayon=boucherie]{--rayon-color: #dc2626}[data-rayon=poissonnerie]{--rayon-color: #0d9488}[data-rayon=produits-laitiers]{--rayon-color: #7c3aed}[data-rayon=frais]{--rayon-color: #4f46e5}[data-rayon=boissons]{--rayon-color: #2563eb}[data-rayon=surgeles]{--rayon-color: #0891b2}[data-rayon=epicerie]{--rayon-color: #ea580c}[data-rayon=snacks-confiseries]{--rayon-color: #db2777}[data-rayon=autre]{--rayon-color: #64748b}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) [data-rayon=fruits-legumes]{--rayon-color: #4ade80}:root:not([data-theme=light]) [data-rayon=boulangerie]{--rayon-color: #fbbf24}:root:not([data-theme=light]) [data-rayon=boucherie]{--rayon-color: #f87171}:root:not([data-theme=light]) [data-rayon=poissonnerie]{--rayon-color: #2dd4bf}:root:not([data-theme=light]) [data-rayon=produits-laitiers]{--rayon-color: #a78bfa}:root:not([data-theme=light]) [data-rayon=frais]{--rayon-color: #818cf8}:root:not([data-theme=light]) [data-rayon=boissons]{--rayon-color: #60a5fa}:root:not([data-theme=light]) [data-rayon=surgeles]{--rayon-color: #22d3ee}:root:not([data-theme=light]) [data-rayon=epicerie]{--rayon-color: #fb923c}:root:not([data-theme=light]) [data-rayon=snacks-confiseries]{--rayon-color: #f472b6}:root:not([data-theme=light]) [data-rayon=autre]{--rayon-color: #94a3b8}}:root[data-theme=dark] [data-rayon=fruits-legumes]{--rayon-color: #4ade80}:root[data-theme=dark] [data-rayon=boulangerie]{--rayon-color: #fbbf24}:root[data-theme=dark] [data-rayon=boucherie]{--rayon-color: #f87171}:root[data-theme=dark] [data-rayon=poissonnerie]{--rayon-color: #2dd4bf}:root[data-theme=dark] [data-rayon=produits-laitiers]{--rayon-color: #a78bfa}:root[data-theme=dark] [data-rayon=frais]{--rayon-color: #818cf8}:root[data-theme=dark] [data-rayon=boissons]{--rayon-color: #60a5fa}:root[data-theme=dark] [data-rayon=surgeles]{--rayon-color: #22d3ee}:root[data-theme=dark] [data-rayon=epicerie]{--rayon-color: #fb923c}:root[data-theme=dark] [data-rayon=snacks-confiseries]{--rayon-color: #f472b6}:root[data-theme=dark] [data-rayon=autre]{--rayon-color: #94a3b8}[data-rayon][data-rayon-custom]{--rayon-color: var(--rayon-base)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) [data-rayon][data-rayon-custom]{--rayon-color: color-mix(in srgb, var(--rayon-base) 68%, white)}}:root[data-theme=dark] [data-rayon][data-rayon-custom]{--rayon-color: color-mix(in srgb, var(--rayon-base) 68%, white)}.icon-gallery__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:var(--space-sm)}.icon-gallery__cell{display:flex;flex-direction:column;gap:var(--space-xs);align-items:center;padding:var(--space-sm) var(--space-xs);text-align:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.icon-gallery__name{font-size:var(--font-size-xs);color:var(--color-text-secondary);overflow-wrap:anywhere}.icon-gallery__count{font-variant-numeric:tabular-nums;color:var(--color-text-secondary)}
