// ============================================================================= // Styles specific to CookingSessionPage — colocated next to // CookingSessionPage.tsx since nothing else uses these classes. // // Layout: a fixed page shell (header + subtitle + tab bar), then one of two // tab panels. The "Recettes" panel is a plain scrolling list; the "Plan" // panel (`.cooking-plan`) is itself a flex column — a pinned stepper and // meta line on top, a pinned prev/next bar at the bottom, and the current // phase scrolling in between so the nav is always reachable. // // Every value goes through a `var(--token)` from _theme.scss; light/dark is // handled entirely by those tokens being redefined, nothing here branches // on the theme. // ============================================================================= .cooking-session-page { height: 100%; display: flex; flex-direction: column; &__header { flex-shrink: 0; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--space-md); margin-bottom: var(--space-sm); } &__subtitle { flex-shrink: 0; margin: 0 0 var(--space-md); color: var(--color-text-muted); font-size: var(--font-size-md); } &__status { color: var(--color-text-muted); font-size: var(--font-size-md); } &__status--error { color: var(--color-error); } // --- Tab bar --------------------------------------------------------------- // Same underline-tab language as the recipe catalog's `.recipe-tabs` // (features/recipes/recipes.scss): scrolls within itself rather than // widening the page (global.scss forbids a horizontal body scroll). &__tabs { flex-shrink: 0; display: flex; gap: var(--space-xs); overflow-x: auto; border-bottom: 1px solid var(--color-border); margin-bottom: var(--space-md); } &__tab { appearance: none; flex-shrink: 0; padding: var(--space-sm) var(--space-md); font-family: var(--font-display); font-size: var(--font-size-sm); font-weight: 700; letter-spacing: 0.02em; color: var(--color-text-muted); background: none; border: none; border-bottom: 2.5px solid transparent; cursor: pointer; transition: color 0.15s ease, border-color 0.15s ease; &:hover { color: var(--color-text); } &.active { color: var(--color-primary); border-color: var(--color-primary); } } } // --- "Recettes" tab --------------------------------------------------------- // The week's planned recipes as a flat list — name and its own portion // count on an always-visible summary row; clicking one unfolds its full // detail inline underneath (fetched on demand, see `RecipesTab`/`&__detail` // below) instead of navigating to the recipe's own page. .cooking-recipes { flex: 1; min-height: 0; overflow-y: auto; list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-xs); // The card: background/radius/shadow live here (not on `&__row` below) so // the summary row and, once unfolded, the detail panel read as one block // instead of two stacked cards. &__item { display: flex; flex-direction: column; background: var(--color-surface); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); // Keeps the detail panel's own edges (see `&__detail` below) inside the // card's rounded corners instead of poking past them. overflow: hidden; } // The always-visible clickable summary — a real `