/* ============================================================
   DESIGN SYSTEM — Mein Rezeptbuch
   Style:   Electric Pop Editorial / Neo-Brutalist Zine
   Font:    Manrope + Material Symbols
   Shadows: Hard offset (neo-shadow), no soft blur
   ============================================================ */

@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url('fonts/manrope-latin-ext.woff2') format('woff2');
  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: 'Manrope';
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url('fonts/manrope-latin.woff2') format('woff2');
  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: 'Material Symbols Outlined';
  font-style: normal;
  font-weight: 100 700;
  font-display: swap;
  src: url('fonts/material-symbols-outlined.woff2') format('woff2');
}
.material-symbols-outlined {
  font-family: 'Material Symbols Outlined';
  font-weight: normal;
  font-style: normal;
  font-size: 24px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  -webkit-font-feature-settings: 'liga';
  -webkit-font-smoothing: antialiased;
}

:root {
  --header-h:     60px;
  --footer-h:     57px;

  /* Electric Pop palette */
  --primary-pink:      #FF8ACD;
  --hero-purple:       #D1C4FF;
  --section-pink:      #FFC6E7;
  --section-cyan:      #B3F6FF;
  --accent-green:      #76F7AE;
  --accent-yellow:     #FFE959;
  --accent-orange:     #FFB347;
  --accent-purple:     #C69EFF;
  --accent-blue:       #8AF1FF;
  --card-subtle-red:   #FFEBEE;
  --card-subtle-blue:  #E3F2FD;
  --card-subtle-green: #F1F8E9;

  --black: #000000;
  --white: #FFFFFF;
  --fg:    #000000;
  --fg-muted: rgba(0,0,0,0.5);

  /* Neo-shadows (hard offset, no blur) */
  --neo-shadow:    6px 6px 0px 0px #000;
  --neo-shadow-sm: 4px 4px 0px 0px #000;

  /* Borders */
  --border:    3px solid #000;
  --border-sm: 2px solid #000;

  /* Radii */
  --radius-card: 40px;
  --radius-img:  30px;
  --radius-pill: 9999px;
  --radius-md:   24px;
  --radius-sm:    8px;

  /* Transitions */
  --t: 100ms ease;
}

/* ===== LOADING OVERLAY ===== */
.app-loading {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: var(--hero-purple);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity 0.4s ease;
}
.app-loading-hidden { opacity: 0; pointer-events: none; }

.app-loading-burger {
  width: 96px;
  height: 96px;
  object-fit: contain;
  animation: burger-spin 1s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
  filter: drop-shadow(4px 4px 0 rgba(0,0,0,0.2));
}

@keyframes burger-spin {
  0%   { transform: rotate(0deg) scale(1); }
  25%  { transform: rotate(90deg) scale(1.08); }
  50%  { transform: rotate(180deg) scale(1); }
  75%  { transform: rotate(270deg) scale(1.08); }
  100% { transform: rotate(360deg) scale(1); }
}

/* Inline burger spinner — used inside buttons during async actions */
.btn-burger-spinner {
  width: 20px;
  height: 20px;
  object-fit: contain;
  animation: burger-spin 0.9s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
  vertical-align: middle;
  flex-shrink: 0;
}

/* ===== DECORATIVE FOOD ASSETS ===== */
.deco-img {
  position: absolute;
  pointer-events: none;
  user-select: none;
  z-index: 0;
}
@media (max-width: 768px) {
  .deco-img { display: none; }
}

/* ── Milkshake — parallax via JS ── */
.deco-milkshake {
  width: 80px;
  /* Default: right of search bar / filter area in the lower half of the hero */
  bottom: 32px;
  right: 72px;
  transform: rotate(10deg);
  will-change: transform;
  filter: drop-shadow(3px 3px 0 rgba(0,0,0,0.12));
  z-index: 2;
}
/* On detail hero: behind content, right of action buttons, at rating height */
.detail-hero-section .deco-milkshake {
  bottom: auto;
  right: auto;
  top: 205px;
  left: 40%;
  z-index: 0;
  opacity: 0.85;
}

/* ── Spaghetti — gentle floating bob ── */
.deco-spaghetti {
  width: 120px;
  bottom: 16px;
  left: 10%;
  animation: deco-bob 3.8s ease-in-out infinite;
  filter: drop-shadow(3px 3px 0 rgba(0,0,0,0.12));
}
@keyframes deco-bob {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-14px); }
}

/* ── Burger — starts tilted, rotates upright when parent section is hovered ── */
.deco-burger {
  width: 100px;
  bottom: -32px; /* lower third bleeds below the section border */
  right: 18%;
  transform: rotate(-15deg);
  transition: transform 0.6s ease;
  filter: drop-shadow(3px 3px 0 rgba(0,0,0,0.12));
}
/* Detail page burger: bottom-right of content section */
.detail-content-section .deco-burger {
  top: auto;
  bottom: 56px;
  right: 56px;
}

/* Trigger on section hover, not the image itself */
.section-recipes:hover .deco-burger,
.detail-content-section:hover .deco-burger,
.settings-hero:hover .deco-burger {
  transform: rotate(12deg);
}

/* ── Collections grid: burger at dividing line, milkshake lower-right ── */
.section-collections-grid .deco-burger {
  bottom: auto;
  top: -48px;
  right: 26%;
  transform: rotate(-18deg);
  width: 90px;
}
.section-collections-grid:hover .deco-burger { transform: rotate(12deg); }
.section-collections-grid .deco-milkshake {
  top: auto;
  bottom: 48px;
  right: auto;
  left: 56px;
  transform: rotate(8deg);
  width: 80px;
}

/* ── Collection detail recipes: spaghetti lower-right ── */
.section-collection-detail-recipes .deco-spaghetti {
  left: auto;
  right: 56px;
  top: auto;
  bottom: 48px;
  width: 100px;
  animation: deco-bob 3.8s ease-in-out infinite;
}

/* ── Form main: milkshake lower-right ── */
.form-main .deco-milkshake {
  top: auto;
  bottom: 48px;
  right: 56px;
  transform: rotate(-8deg);
  width: 90px;
}

/* ── Settings hero ── */
.settings-hero .deco-burger {
  bottom: auto;
  right: 64px;
  top: 50%;
  transform: translateY(-50%) rotate(-18deg);
  width: 88px;
}

/* ── Shopping content: spaghetti lower-left above footer ── */
.shopping-content .deco-spaghetti {
  left: 48px;
  right: auto;
  bottom: 40px;
  top: auto;
  width: 100px;
  animation: deco-bob 3.8s ease-in-out infinite;
}

/* ===== RESET ===== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

body {
  font-family: 'Manrope', sans-serif;
  font-size: 14px;
  background: #F7F7EE;
  color: var(--fg);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
}


.material-symbols-outlined {
  font-variation-settings: 'FILL' 0, 'wght' 700, 'GRAD' 0, 'opsz' 24;
  font-size: 20px;
  line-height: 1;
  vertical-align: middle;
}

/* ===== HEADER ===== */
header {
  position: fixed;
  top: 0; left: 0; right: 0;
  height: calc(var(--header-h) + env(safe-area-inset-top));
  background: var(--primary-pink);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: env(safe-area-inset-top) 16px 0;
  z-index: 100;
  border-bottom: var(--border);
  gap: 12px;
}

.header-left {
  display: flex;
  align-items: center;
  gap: 32px;
  min-width: 0;
}

.header-brand {
  font-size: 1rem;
  font-weight: 800;
  color: var(--black);
  cursor: pointer;
  letter-spacing: -0.5px;
  text-transform: uppercase;
  white-space: nowrap;
  transition: opacity var(--t);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 8px;
}
.header-brand:hover { opacity: 0.7; }
.header-brand-icon {
  width: 28px;
  height: 28px;
  border-radius: 6px;
  display: block;
  flex-shrink: 0;
}

.header-right {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

/* Header buttons — icon circles on mobile, pill with text on desktop */
.header-btn {
  height: 44px;
  border: var(--border);
  border-radius: var(--radius-pill);
  font-family: 'Manrope', sans-serif;
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t);
  white-space: nowrap;
  /* Mobile: icon-only circle */
  width: 44px;
  padding: 0;
}
.header-btn:hover { transform: translate(-2px, -2px); box-shadow: var(--neo-shadow-sm); }
.header-btn .material-symbols-outlined { font-size: 18px; flex-shrink: 0; }
.header-btn .header-btn-label { display: none; }

.header-btn-cart { background: var(--white); color: var(--black); }
.header-btn-dark { background: var(--white); color: var(--black); }
.header-btn-add  { background: var(--primary-pink); color: var(--black); }

/* Desktop: expand to pill with text */
@media (min-width: 769px) {
  header { padding: env(safe-area-inset-top) 24px 0; }
  .header-btn { width: auto; padding: 0 18px; gap: 6px; }
  .header-btn .header-btn-label { display: inline; }
}

.btn-icon {
  width: 36px;
  height: 36px;
  background: var(--white);
  border: var(--border);
  border-radius: var(--radius-pill);
  color: var(--black);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t);
  flex-shrink: 0;
}
.btn-icon:hover { transform: translate(-2px, -2px); box-shadow: var(--neo-shadow-sm); }
.btn-icon .material-symbols-outlined { font-size: 18px; }

.header-desktop-nav,
.header-nav {
  display: flex;
  gap: 24px;
}

.header-nav-link {
  font-size: 0.8rem;
  font-weight: 800;
  color: var(--black);
  cursor: pointer;
  text-decoration: none;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  transition: opacity var(--t);
  padding-bottom: 2px;
  white-space: nowrap;
}
.header-nav-link:hover { border-bottom: 2px solid rgba(0,0,0,0.35); }
.header-nav-link.active { border-bottom: var(--border); color: var(--black); }

/* ===== SIDEBAR — hidden in new design ===== */
.sidebar { display: none !important; }

/* ===== MAIN CONTENT ===== */
.main-content {
  margin-left: 0;
  padding-top: calc(var(--header-h) + env(safe-area-inset-top));
  min-height: 100vh;
}

.view {
  max-width: 1200px;
  margin: 0 auto;
  padding: 36px 32px;
}

/* List, collections, detail, form and settings views are full-bleed section-based layouts */
#view-list,
#view-collections,
#view-collection-detail,
#view-detail,
#view-form,
#view-settings,
#view-shopping,
#view-impressum,
#view-datenschutz {
  max-width: none;
  padding: 0;
}

#view-collections,
#view-collection-detail,
#view-detail,
#view-settings,
#view-shopping,
#view-impressum,
#view-datenschutz {
  display: flex;
  flex-direction: column;
  min-height: calc(100vh - var(--header-h) - env(safe-area-inset-top) - var(--footer-h));
}
#view-collections .section-collections-grid,
#view-detail .detail-content-section,
#view-settings .settings-content,
#view-shopping .shopping-content,
#view-impressum .impressum-content,
#view-datenschutz .impressum-content {
  flex: 1;
}

/* ===== HERO SECTION (list view) ===== */
.view-hero {
  background: var(--hero-purple);
  border-bottom: var(--border);
  padding: 64px 32px 40px;
  position: relative;
  overflow: visible;
  text-align: center;
}
.view-hero > *:not(.view-hero-grid-pattern):not(.deco-img) {
  position: relative;
  z-index: 1;
}

.view-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(to right, rgba(255,255,255,0.20) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255,255,255,0.20) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
  opacity: 0.5;
}

.view-hero-inner {
  max-width: 1200px;
  margin: 0 auto;
  position: relative;
  z-index: 1;
}

.display-heading {
  font-size: clamp(2.5rem, 6vw, 5.5rem);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.03em;
  line-height: 1;
  color: var(--black);
  margin-bottom: 32px;
  white-space: nowrap;
}

.display-heading .accent { color: var(--primary-pink); }

/* ===== SECTION WRAPPER (own recipes) ===== */
.section-recipes {
  background: var(--section-pink);
  border-bottom: var(--border);
  padding: 32px;
  position: relative;
  overflow: visible;
  z-index: 1; /* lets the burger bleed over the community section below */
}

.section-recipes::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(to right, rgba(255,255,255,0.20) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255,255,255,0.20) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
}

.section-recipes-inner {
  max-width: 1200px;
  margin: 0 auto;
  position: relative;
  z-index: 1;
}

/* ===== SECTION WRAPPER (community recipes) ===== */
.section-community {
  background: var(--section-cyan);
  border-top: var(--border);
  padding: 32px;
  position: relative;
  overflow: visible;
}

.section-community::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(to right, rgba(255,255,255,0.20) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255,255,255,0.20) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
}

.section-community-inner {
  max-width: 1200px;
  margin: 0 auto;
  position: relative;
  z-index: 1;
}

.community-count-label {
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: rgba(0,0,0,0.45);
  display: block;
  margin-top: 2px;
}

.community-load-more-wrap {
  display: flex;
  justify-content: center;
  margin-top: 40px;
}

/* btn-load-more: ghost tier with larger padding */
.btn-load-more { padding: 14px 48px; font-size: 1rem; }

/* Cook mode grid pattern override */
.cook-grid-pattern {
  position: fixed !important;
}

/* Reusable grid pattern overlay div */
.view-hero-grid-pattern {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(to right, rgba(255,255,255,0.20) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255,255,255,0.20) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
  z-index: 0;
}

/* Collections hero section */
.collections-hero {
  background: var(--hero-purple);
  border-bottom: var(--border);
  padding: 48px 32px 36px;
  position: relative;
  overflow: hidden;
}
.collections-hero > *:not(.view-hero-grid-pattern):not(.deco-img) {
  position: relative;
  z-index: 1;
}
.collections-hero-inner {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
}
.collections-hero-title-block {
  display: flex;
  align-items: flex-end;
  gap: 24px;
}
.collections-hero-title-block .display-heading,
.settings-hero-inner .display-heading,
.shopping-hero-inner .display-heading {
  margin-bottom: 0;
  font-size: clamp(1.75rem, 4vw, 3rem);
  white-space: normal;
}
.collections-hero-count {
  padding-bottom: 6px;
}
.collections-count-num {
  font-size: 2.5rem;
  font-weight: 800;
  line-height: 1;
  letter-spacing: -0.03em;
  display: block;
}
.collections-count-label {
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: rgba(0,0,0,0.45);
  display: block;
}
.collections-hero-btn {
  flex-shrink: 0;
  margin-bottom: 4px;
}

/* Collections grid section */
.section-collections-grid {
  background: var(--section-pink);
  padding: 36px 32px;
  position: relative;
  overflow: visible;
}
.section-collections-grid::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(to right, rgba(255,255,255,0.20) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255,255,255,0.20) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
}

/* Section recipes header */
.section-recipes-header {
  max-width: 1200px;
  margin: 0 auto 24px;
  position: relative;
  z-index: 1;
  padding-bottom: 12px;
  border-bottom: var(--border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

/* Search icon in search bar */
.search-icon {
  position: absolute;
  left: 16px;
  color: rgba(0,0,0,0.4);
  font-size: 18px;
  pointer-events: none;
}

.section-heading-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 24px;
  padding-bottom: 12px;
  border-bottom: var(--border);
}

.section-heading {
  font-size: 1.75rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.02em;
  color: var(--black);
}

/* ===== BUTTONS ===== */
.btn-primary {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--primary-pink);
  color: var(--black);
  border: var(--border);
  padding: 10px 20px;
  border-radius: var(--radius-pill);
  font-family: 'Manrope', sans-serif;
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  cursor: pointer;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t);
}
.btn-primary:hover { transform: translate(-2px, -2px); box-shadow: var(--neo-shadow-sm); }
.btn-primary .material-symbols-outlined { font-size: 18px; }

.btn-secondary {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--white);
  color: var(--black);
  border: var(--border);
  padding: 10px 20px;
  border-radius: var(--radius-pill);
  font-family: 'Manrope', sans-serif;
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  cursor: pointer;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t);
}
.btn-secondary:hover { transform: translate(-2px, -2px); box-shadow: var(--neo-shadow-sm); }

.btn-danger {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--card-subtle-red);
  color: var(--black);
  border: var(--border);
  padding: 10px 20px;
  border-radius: var(--radius-pill);
  font-family: 'Manrope', sans-serif;
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  cursor: pointer;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t);
}
.btn-danger:hover { transform: translate(-2px, -2px); box-shadow: var(--neo-shadow-sm); }

/* btn-black is deprecated — use btn-danger */
.btn-black { background: var(--card-subtle-red); color: var(--black); border: var(--border); }
.btn-black:hover { transform: translate(-2px,-2px); box-shadow: var(--neo-shadow-sm); }

/* btn-back is deprecated — use btn-secondary */
.btn-back { margin-bottom: 24px; }

.btn-sm { padding: 7px 14px; font-size: 0.75rem; }
.btn-sm .material-symbols-outlined { font-size: 16px; }

/* ===== GHOST BUTTON ===== */
.btn-ghost {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: transparent;
  color: rgba(0,0,0,0.45);
  border: 2px solid rgba(0,0,0,0.2);
  padding: 10px 20px;
  border-radius: var(--radius-pill);
  font-family: 'Manrope', sans-serif;
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  cursor: pointer;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t), color var(--t), border-color var(--t);
}
.btn-ghost:hover {
  color: var(--black);
  border-color: rgba(0,0,0,0.5);
  transform: translate(-2px,-2px);
  box-shadow: 2px 2px 0 0 rgba(0,0,0,0.25);
}
.btn-ghost .material-symbols-outlined { font-size: 18px; }

/* ===== SEARCH BAR ===== */
.search-bar {
  position: relative;
  display: flex;
  align-items: center;
  width: 100%;
  max-width: 768px;
  margin: 0 auto 28px;
  background: var(--white);
  border: var(--border);
  border-radius: 9999px;
  box-shadow: 2px 2px 0 0 #000;
  overflow: hidden;
  transition: box-shadow var(--t);
}

.search-bar:focus-within { box-shadow: 4px 4px 0 0 var(--primary-pink); }

.search-bar input::placeholder { color: rgba(0,0,0,0.35); font-weight: 600; }

.search-icon-right {
  padding-right: 20px;
  color: var(--black);
  font-size: 26px;
  pointer-events: none;
  flex-shrink: 0;
}

/* Category filters inside hero: centered, wrapping */
.view-hero .category-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: center;
  max-width: 900px;
  margin: 0 auto;
}

/* ===== SORT SELECT ===== */
.sort-select-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
}
.sort-select {
  appearance: none;
  -webkit-appearance: none;
  background: var(--white);
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  padding: 7px 32px 7px 16px;
  font-family: 'Manrope', sans-serif;
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--black);
  cursor: pointer;
  box-shadow: none;
  outline: none;
}
.sort-select:focus { box-shadow: 4px 4px 0 0 var(--primary-pink); }
.sort-select-arrow {
  position: absolute;
  right: 8px;
  font-size: 16px;
  pointer-events: none;
  color: var(--black);
}

.btn-cart {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  border-radius: var(--radius-pill);
  border: var(--border);
  background: var(--white);
  box-shadow: none;
  color: var(--black);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: transform var(--t), box-shadow var(--t);
}
.btn-cart:hover { transform: translate(-2px,-2px); box-shadow: var(--neo-shadow-sm); }

/* ===== CATEGORY FILTER CHIPS ===== */
.category-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 0;
}

/* Chip color rotation — palette colors only (no orange) */
.chip-color-0 { background: #76F7AE; } /* Decorative Green  Tone 50 */
.chip-color-1 { background: #FFE959; } /* Decorative Yellow Tone 50 */
.chip-color-2 { background: #FF8ACD; } /* Primary Pink      Tone 50 */
.chip-color-3 { background: #B37DFF; } /* Decorative Purple Tone 50 */
.chip-color-4 { background: #8AF1FF; } /* Decorative Blue   Tone 50 */
.chip-color-5 { background: #FFD6E7; } /* Decorative Pink   Tone 70 */

/* Container card palette — same subtle tones as recipe cards */
.card-bg-0 { background: var(--card-subtle-blue)  !important; }
.card-bg-1 { background: var(--card-subtle-red)   !important; }
.card-bg-2 { background: var(--card-subtle-green) !important; }
.card-bg-3 { background: var(--card-subtle-blue)  !important; }
.card-bg-4 { background: var(--card-subtle-red)   !important; }
.card-bg-5 { background: var(--card-subtle-green) !important; }

/* ================================================================
   CHIP SYSTEM
   Three roles × two sizes — always combine role + size as needed.

   Filter chip  (cat-chip, star-chip)         — toggle, white bg at rest
   Label chip   (card-thumb-tag, card-cat-chip) — display only, permanent shadow
   Action chip  (detail-cat-tag, detail-collection-tag) — clickable, lifts on hover

   Default size: padding 6px 14px / font 0.72rem
   Small size:   padding 4px 10px / font 0.65rem  (–sm modifier)
   ================================================================ */

/* ── Filter chips ── */
.cat-chip,
.star-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 6px 14px;
  border-radius: var(--radius-pill);
  border: var(--border-sm);
  background: var(--white);
  color: var(--black);
  font-family: 'Manrope', sans-serif;
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  cursor: pointer;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t);
  white-space: nowrap;
}
.cat-chip:hover,
.star-chip:hover { transform: translate(-2px,-2px); box-shadow: 2px 2px 0 0 #000; }
.cat-chip.active,
.star-chip.active { background: var(--black) !important; color: var(--white); box-shadow: 2px 2px 0 0 #000; }
.star-chip.active .material-symbols-outlined { color: var(--white); }
.star-chip .material-symbols-outlined { font-size: 14px; font-variation-settings: 'FILL' 1; }

.filter-separator {
  display: inline-block;
  width: 3px;
  height: 20px;
  background: rgba(0,0,0,0.2);
  margin: 0 4px;
  align-self: center;
  flex-shrink: 0;
}

/* ── "Mehr" filter button ── */
.cat-mehr-btn {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  background: var(--white);
}
.cat-mehr-btn-active {
  background: var(--accent-yellow) !important;
}

/* ── "Mehr" category filter popover ── */
.cat-mehr-popover {
  position: absolute;
  z-index: 300;
  background: rgba(255, 255, 255, 0.55);
  backdrop-filter: blur(16px) saturate(1.6);
  -webkit-backdrop-filter: blur(16px) saturate(1.6);
  border: 1.5px solid rgba(255, 255, 255, 0.65);
  border-radius: var(--radius-md);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
  padding: 14px;
  width: min(400px, calc(100vw - 32px));
  max-height: 60vh;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.cat-mehr-group {
  display: flex;
  flex-direction: column;
  gap: 7px;
}
.cat-mehr-group-label {
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(0,0,0,0.35);
}
.cat-mehr-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

/* ── Form category picker ── */
.category-picker {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-top: 4px;
}
.category-picker-group {
  display: flex;
  flex-direction: column;
  gap: 7px;
}
.category-picker-group-label {
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(0,0,0,0.4);
}
.category-picker-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
/* Selectable form chip — same shape as filter chips but slightly smaller */
.cat-chip-select {
  display: inline-flex;
  align-items: center;
  padding: 4px 11px;
  border-radius: var(--radius-pill);
  border: var(--border-sm);
  color: var(--black);
  font-family: 'Manrope', sans-serif;
  font-size: 0.68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  cursor: pointer;
  white-space: nowrap;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t), background var(--t), color var(--t);
}
.cat-chip-select:hover {
  transform: translate(-2px, -2px);
  box-shadow: 2px 2px 0 0 #000;
}
.cat-chip-select.selected {
  background: var(--black) !important;
  color: var(--white);
  border-color: var(--black);
  box-shadow: 2px 2px 0 0 #000;
}
.cat-chip-select.selected:hover {
  transform: translate(-2px, -2px);
}

/* ===== RECIPE GRID ===== */
.recipe-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 24px;
  max-width: 1200px;
  margin: 0 auto;
  position: relative;
  z-index: 1;
}

/* ===== RECIPE CARD — desktop: vertical card with inner image ===== */
.recipe-card {
  border-radius: var(--radius-card);
  cursor: pointer;
  border: var(--border);
  box-shadow: var(--neo-shadow-sm);
  display: flex;
  flex-direction: column;
  position: relative;
  transition: transform var(--t), box-shadow var(--t);
  overflow: visible;
  padding: 24px;
  background: var(--card-subtle-blue);
}
.recipe-card:hover { transform: translate(-3px, -3px); box-shadow: var(--neo-shadow); }

/* Cycling backgrounds */
.recipe-card:nth-child(3n+1) { background: var(--card-subtle-blue); }
.recipe-card:nth-child(3n+2) { background: var(--card-subtle-red); }
.recipe-card:nth-child(3n)   { background: var(--card-subtle-green); }

/* Inner image container — bordered rounded box inside card padding */
.card-img-wrap {
  border: var(--border-sm);
  border-radius: 30px;
  overflow: hidden;
  height: 200px;
  position: relative;
  margin-bottom: 20px;
  background: rgba(0,0,0,0.04);
  flex-shrink: 0;
}
.card-img-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Category tag: top-left of image (desktop) — color set by chip-color-N class */
/* Chip overlay container — top-left of image, wraps to next line if needed */
.card-thumb-tags {
  position: absolute;
  top: 10px;
  left: 10px;
  right: 10px;
  display: flex;
  flex-wrap: wrap;
  gap: 4px 6px;
}

/* ── Label chips (display only) ── */
.card-thumb-tag {
  display: inline-flex;
  align-items: center;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  padding: 4px 10px;
  font-size: 0.65rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--black);
  white-space: nowrap;
  box-shadow: 1px 1px 0 0 #000;
}

/* Card body — below image */
.card-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
}

.recipe-card h3 {
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--black);
  text-transform: uppercase;
  letter-spacing: -0.02em;
  line-height: 1.1;
  margin-bottom: 8px;
}

/* Category chips row inside card body */
.card-cats {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-bottom: 10px;
}
.card-cat-chip {
  display: inline-flex;
  align-items: center;
  font-size: 0.62rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 3px 8px;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  white-space: nowrap;
  box-shadow: 1px 1px 0 0 #000;
}

.card-meta {
  display: flex;
  flex-direction: column;
  gap: 3px;
  font-size: 0.68rem;
  font-weight: 800;
  color: rgba(0,0,0,0.55);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 12px;
}

/* Footer: stars + bookmark */
.card-footer {
  margin-top: auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.card-icon-btns {
  display: flex;
  align-items: center;
  gap: 4px;
}

/* ===== CARD RATING ===== */
.card-rating {
  display: flex;
  gap: 1px;
  align-items: center;
}
.card-star {
  font-size: 14px;
  color: rgba(0,0,0,0.18);
}
.card-star.card-star-filled { color: var(--black); }

/* ===== PRIVATE BADGE (card) ===== */
.card-private-badge {
  position: absolute;
  bottom: 10px;
  right: 10px;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--accent-yellow);
  border: var(--border-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
  box-shadow: 1px 1px 0 0 #000;
}
.card-private-badge .material-symbols-outlined {
  font-size: 14px;
  color: var(--black);
}
.card-tm-badge {
  position: absolute;
  bottom: 10px;
  left: 10px;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: #fff;
  border: var(--border-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
  box-shadow: 1px 1px 0 0 #000;
}
.card-tm-badge .material-symbols-outlined {
  font-size: 14px;
  color: var(--black);
}
.card-private-badge::after {
  content: 'Nur für dich sichtbar';
  position: absolute;
  bottom: calc(100% + 6px);
  right: 0;
  background: var(--accent-yellow);
  color: var(--black);
  font-family: inherit;
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  white-space: nowrap;
  padding: 5px 10px;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  box-shadow: 2px 2px 0 0 #000;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.15s;
  z-index: 1000;
}
.card-private-badge:hover::after {
  opacity: 1;
}

.card-tm-badge::after {
  content: 'Thermomix-Version verfügbar';
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  background: var(--accent-yellow);
  color: var(--black);
  font-family: inherit;
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  white-space: nowrap;
  padding: 5px 10px;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  box-shadow: 2px 2px 0 0 #000;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.15s;
  z-index: 1000;
}
.card-tm-badge:hover::after {
  opacity: 1;
}

/* ===== CARD COLLECTION BUTTON ===== */
.card-collection-btn {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--white);
  border: var(--border-sm);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t);
  padding: 0;
  flex-shrink: 0;
}
.card-collection-btn { position: relative; }
.card-collection-btn:hover { transform: translate(-1px,-1px); box-shadow: 2px 2px 0 0 #000; }
.card-collection-btn .material-symbols-outlined { font-size: 16px; color: var(--black); }
.card-collection-btn::after {
  content: 'Zur Sammlung hinzufügen';
  position: absolute;
  top: 50%;
  right: calc(100% + 10px);
  transform: translateY(-50%);
  background: var(--accent-yellow);
  color: var(--black);
  font-family: inherit;
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  white-space: nowrap;
  padding: 5px 10px;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  box-shadow: 2px 2px 0 0 #000;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.15s;
  z-index: 1000;
}
.card-collection-btn:hover::after {
  opacity: 1;
}

.card-shopping-btn {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--white);
  border: var(--border-sm);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t);
  padding: 0;
  flex-shrink: 0;
  position: relative;
}
.card-shopping-btn:hover { transform: translate(-1px,-1px); box-shadow: 2px 2px 0 0 #000; }
.card-shopping-btn .material-symbols-outlined { font-size: 16px; color: var(--black); }
.card-shopping-btn::after {
  content: 'Zur Einkaufsliste';
  position: absolute;
  top: 50%;
  right: calc(100% + 10px);
  transform: translateY(-50%);
  background: var(--accent-yellow);
  color: var(--black);
  font-family: inherit;
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  white-space: nowrap;
  padding: 5px 10px;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  box-shadow: 2px 2px 0 0 #000;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.15s;
  z-index: 1000;
}
.card-shopping-btn:hover::after { opacity: 1; }

@media (max-width: 768px) {
  .card-shopping-btn { width: 40px; height: 40px; }
  .card-shopping-btn .material-symbols-outlined { font-size: 16px; }
}

/* ===== SELECTION MODE ===== */
.recipe-card.card-selected { outline: none; }

.card-select-check {
  position: absolute;
  top: 20px;
  left: 20px;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: var(--border-sm);
  background: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 3;
  box-shadow: 2px 2px 0 0 #000;
  opacity: 0;
  transition: opacity var(--t), background var(--t);
}
.card-selectable .card-select-check { opacity: 1; }
.card-select-visible { opacity: 1 !important; background: var(--black) !important; }
.card-select-check .material-symbols-outlined {
  font-size: 14px;
  color: var(--white);
  font-variation-settings: 'FILL' 1, 'wght' 700;
}

/* ===== MOBILE CARD — horizontal layout ===== */
@media (max-width: 768px) {
  .recipe-card {
    flex-direction: row;
    padding: 16px;
    gap: 14px;
    border-radius: 32px;
    align-items: flex-start;
  }
  .card-img-wrap {
    width: 110px;
    height: 110px;
    flex-shrink: 0;
    border-radius: 18px;
    margin-bottom: 0;
  }
  .card-thumb-tags {
    top: 6px;
    left: 6px;
    right: 6px;
    gap: 3px 4px;
  }
  .card-thumb-tag:nth-child(n+3) {
    display: none;
  }
  .card-thumb-tag {
    font-size: 0.58rem;
    padding: 2px 7px;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .recipe-card h3 {
    font-size: 0.85rem;
    margin-bottom: 4px;
    padding-right: 22px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .card-meta { flex-direction: column; gap: 2px; margin-bottom: 8px; }
  .card-private-badge { bottom: 8px; right: 8px; width: 26px; height: 26px; }
  .card-private-badge .material-symbols-outlined { font-size: 12px; }
  .card-select-check { top: 16px; left: 130px; width: 36px; height: 36px; }
  .card-select-check .material-symbols-outlined { font-size: 14px; }
  .card-collection-btn { width: 40px; height: 40px; }
  .card-collection-btn .material-symbols-outlined { font-size: 16px; }
  .card-star { font-size: 12px; }
}

/* Push float bar above selection bar when both are visible */
.selection-bar-open .detail-float-bar {
  bottom: calc(56px + env(safe-area-inset-bottom));
}
@media (max-width: 768px) {
  .selection-bar-open .detail-float-bar {
    bottom: calc(64px + env(safe-area-inset-bottom) + 56px);
  }
}

/* Selection bar */
.selection-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--black);
  color: var(--white);
  padding: 12px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  z-index: 50;
  border-top: var(--border);
}
.selection-bar-count {
  font-size: 0.875rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.selection-bar-actions { display: flex; gap: 8px; }
.selection-bar .btn-secondary {
  background: rgba(255,255,255,0.15);
  border-color: rgba(255,255,255,0.4);
  color: var(--white);
}
.selection-bar .btn-secondary:hover { background: rgba(255,255,255,0.25); }
.selection-bar .btn-primary:disabled { opacity: 0.35; cursor: not-allowed; }
.selection-bar .btn-danger {
  background: rgba(211, 47, 47, 0.25);
  border-color: rgba(211, 47, 47, 0.6);
  color: #ff8a80;
}
.selection-bar .btn-danger:hover { background: rgba(211, 47, 47, 0.4); transform: none; box-shadow: none; }
.selection-bar .btn-danger:disabled { opacity: 0.35; cursor: not-allowed; }

@media (max-width: 768px) {
  .selection-bar { bottom: calc(64px + env(safe-area-inset-bottom)); }
}

/* ===== SETTINGS VIEW ===== */
.settings-hero {
  background: var(--hero-purple);
  padding: 48px 32px 36px;
  position: relative;
  overflow: hidden;
  border-bottom: var(--border);
}
.settings-hero > *:not(.view-hero-grid-pattern):not(.deco-img) { position: relative; z-index: 1; }
.settings-hero-inner {
  max-width: 1200px;
  margin: 0 auto;
}
.settings-content {
  background: var(--section-pink);
  padding: 32px;
  position: relative;
  overflow: hidden;
}
.settings-content-inner {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 20px;
  align-items: flex-start;
  position: relative;
  z-index: 1;
}
.settings-content::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(to right, rgba(255,255,255,0.20) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255,255,255,0.20) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
}
.settings-card {
  background: var(--white);
  border: var(--border);
  border-radius: var(--radius-card);
  padding: 24px;
  box-shadow: var(--neo-shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 16px;
  flex: 1;
  min-width: 220px;
  position: relative;
  z-index: 1;
}
.settings-card-header {
  display: flex;
  align-items: center;
  gap: 10px;
}
.settings-card-header .material-symbols-outlined { font-size: 22px; }
.settings-card-title {
  font-size: 1rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.01em;
  margin: 0;
}
.settings-card-desc {
  font-size: 0.82rem;
  color: rgba(0,0,0,0.55);
  margin: 0;
  line-height: 1.5;
}

/* TM model selector */
.tm-model-selector {
  display: flex;
  gap: 0;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  overflow: hidden;
  align-self: flex-start;
  max-width: 100%;
}
.tm-model-btn {
  padding: 8px 20px;
  font-family: inherit;
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  cursor: pointer;
  border: none;
  background: var(--white);
  color: var(--black);
  transition: background var(--t), color var(--t);
  box-shadow: none;
  flex: 1;
  white-space: nowrap;
  min-width: 0;
}
.tm-model-btn + .tm-model-btn { border-left: var(--border-sm); }
.tm-model-btn:hover { background: rgba(0,0,0,0.05); transform: none; box-shadow: none; }
.tm-model-active {
  background: var(--primary-pink) !important;
  color: var(--black) !important;
}
.settings-account-actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.ms-connected-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(118, 247, 174, 0.3);
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  padding: 5px 12px 5px 8px;
  font-size: 0.75rem;
  font-weight: 700;
  align-self: flex-start;
}
.ms-connected-badge .material-symbols-outlined {
  font-size: 16px;
  color: #16a34a;
  font-variation-settings: 'FILL' 1;
}
.settings-input-row {
  display: flex;
  gap: 8px;
  align-items: center;
}
.settings-input {
  flex: 1;
  font-size: 0.85rem;
  padding: 8px 14px;
}
@media (max-width: 768px) {
  .settings-hero { padding: 28px 16px 24px; }
  .settings-content { padding: 20px 16px; }
  .settings-card { min-width: 0; flex: 1 1 100%; }
  .tm-model-selector { align-self: stretch; width: 100%; }
  .tm-model-btn { padding: 8px 6px; font-size: 0.75rem; min-width: 0; }
  .settings-input-row { flex-direction: column; align-items: stretch; }
  .settings-input-row .btn-primary { align-self: flex-start; }
}

/* ===== FOOTER ===== */
.app-footer {
  background: var(--black);
  color: var(--white);
  border-top: var(--border);
  padding: 20px 32px;
  display: flex;
  align-items: center;
  gap: 20px;
}
.app-footer-title {
  font-size: 0.75rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.1em;
}
.app-footer-link {
  background: none;
  border: none;
  color: rgba(255,255,255,0.5);
  font-family: inherit;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  cursor: pointer;
  padding: 0;
  transition: color 0.15s;
}
.app-footer-link:hover { color: var(--white); }
@media (max-width: 768px) {
  .app-footer { padding: 16px 20px; }
}

/* ===== LOGIN LEGAL BAR ===== */
.login-legal-bar {
  display: flex;
  justify-content: center;
  margin-top: auto;
  padding-top: 24px;
}
.login-legal-link {
  background: none;
  border: none;
  font-family: inherit;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(0,0,0,0.35);
  cursor: pointer;
  padding: 0;
  transition: color 0.15s;
}
.login-legal-link:hover { color: rgba(0,0,0,0.7); }
.login-legal-sep {
  color: rgba(0,0,0,0.25);
  font-size: 0.75rem;
  margin: 0 8px;
}

/* ===== IMPRESSUM VIEW ===== */
.impressum-hero {
  background: var(--hero-purple);
  border-bottom: var(--border);
  padding: 48px 32px 36px;
  position: relative;
  overflow: hidden;
  flex-shrink: 0;
}
.impressum-hero > *:not(.view-hero-grid-pattern):not(.deco-img) { position: relative; z-index: 1; }
.impressum-hero-inner {
  max-width: 1200px;
  margin: 0 auto;
}
.impressum-hero-inner .display-heading {
  margin-bottom: 0;
  font-size: clamp(1.75rem, 4vw, 3rem);
  white-space: normal;
}
.impressum-content {
  background: var(--section-pink);
  padding: 32px 32px 120px;
  position: relative;
}
.impressum-content::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: linear-gradient(rgba(255,255,255,0.20) 1px, transparent 1px),
                    linear-gradient(90deg, rgba(255,255,255,0.20) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
}
.impressum-content-inner {
  max-width: 1200px;
  margin: 0 auto;
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 32px;
}
.impressum-block {
  background: var(--white);
  border: var(--border);
  border-radius: var(--radius-card);
  padding: 28px 32px;
  box-shadow: var(--neo-shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.impressum-block p {
  font-size: 0.9rem;
  line-height: 1.65;
  margin: 0;
  color: rgba(0,0,0,0.75);
}
.impressum-block p strong { color: var(--black); }
.impressum-list {
  margin: 0;
  padding-left: 20px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.impressum-list li {
  font-size: 0.9rem;
  line-height: 1.65;
  color: rgba(0,0,0,0.75);
}
.impressum-meta {
  font-size: 0.75rem !important;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(0,0,0,0.4) !important;
}
.impressum-section-title {
  font-size: 0.9rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.01em;
  margin: 0;
}
.impressum-float-bar {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  z-index: 96;
  display: flex;
}

@media (max-width: 768px) {
  .impressum-float-bar {
    bottom: calc(64px + env(safe-area-inset-bottom) + 16px);
    left: 20px;
    right: auto;
  }
  .impressum-float-bar .detail-float-back {
    pointer-events: all;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    padding: 0;
    font-size: 0;
    gap: 0;
    cursor: pointer;
    border: var(--border);
    border-radius: 50%;
    background: var(--white);
    color: var(--black);
    box-shadow: none;
    transition: transform var(--t), box-shadow var(--t);
  }
  .impressum-float-bar .detail-float-back:active { opacity: 0.7; }
  .impressum-float-bar .detail-float-back .material-symbols-outlined { font-size: 28px; }
}

@media (min-width: 769px) {
  .impressum-float-bar {
    bottom: 32px;
    padding: 0 40px;
  }
  .impressum-float-bar .detail-float-back {
    pointer-events: all;
  }
}
@media (max-width: 768px) {
  .impressum-hero { padding: 28px 16px 24px; }
  .impressum-content { padding: 20px 16px 100px; }
  .impressum-block { padding: 20px; border-radius: var(--radius-md); }
}

/* ===== EMPTY MESSAGE ===== */
.empty-message {
  text-align: center;
  color: var(--fg-muted);
  font-size: 0.875rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-top: 80px;
  line-height: 2;
  max-width: 1200px;
  margin-left: auto;
  margin-right: auto;
  position: relative;
  z-index: 1;
}

/* ===== FORM ===== */

/* ── Form hero (sticky) ── */
.form-hero {
  background: var(--hero-purple);
  border-bottom: var(--border);
  padding: 16px 32px;
  position: sticky;
  top: calc(var(--header-h) + env(safe-area-inset-top));
  z-index: 99;
  overflow: visible;
}
.form-hero > *:not(.view-hero-grid-pattern):not(.deco-img) { position: relative; z-index: 1; }
.form-hero-inner {
  max-width: 1400px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.form-hero-title {
  font-size: clamp(1.5rem, 3vw, 2.25rem);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.02em;
  margin: 0;
}
.form-hero-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}

/* ── Private lock toggle in hero ── */
.form-private-toggle {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  align-self: center;
  padding: 10px;
  background: var(--white);
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  box-shadow: none;
  cursor: pointer;
  transition: transform var(--t), box-shadow var(--t), background var(--t);
  flex-shrink: 0;
  margin: 0; /* override global label margin */
}
.form-private-toggle:hover { transform: translate(-2px,-2px); box-shadow: var(--neo-shadow-sm); }
.form-private-toggle .private-checkbox { display: none; }
.form-private-icon {
  font-size: 20px;
  font-variation-settings: 'FILL' 0, 'wght' 700;
  color: rgba(0,0,0,0.45);
  transition: color var(--t);
  pointer-events: none;
  line-height: 1;
}
/* Default: show open lock, hide closed */
.form-private-toggle .form-lock-closed { display: none !important; }
.form-private-toggle .form-lock-open   { display: inline-block !important; }
/* When checked: pink bg, show closed lock, hide open */
.form-private-toggle:has(.private-checkbox:checked) { background: var(--primary-pink); }
.form-private-toggle:has(.private-checkbox:checked) .form-lock-open   { display: none !important; }
.form-private-toggle:has(.private-checkbox:checked) .form-lock-closed {
  display: inline-block !important;
  color: var(--black);
  font-variation-settings: 'FILL' 1, 'wght' 700;
}
/* Tooltip base */
.form-private-tooltip {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  background: var(--accent-yellow);
  color: var(--black);
  font-family: inherit;
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  white-space: nowrap;
  padding: 5px 10px;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  box-shadow: 2px 2px 0 0 #000;
  pointer-events: none;
  opacity: 0;
  transform: translateY(-4px);
  transition: opacity 0.15s, transform 0.15s;
  z-index: 200;
}
.form-private-tooltip::after { display: none; }
/* Show "öffentlich" tooltip on hover when unchecked */
.form-private-toggle:hover .form-private-tooltip-open { opacity: 1; transform: translateY(0); }
/* Show "privat" tooltip on hover when checked */
.form-private-toggle:has(.private-checkbox:checked):hover .form-private-tooltip-open  { opacity: 0; transform: translateY(-4px); }
.form-private-toggle:has(.private-checkbox:checked):hover .form-private-tooltip-closed { opacity: 1; transform: translateY(0); }

/* ── Import card ── */
.form-card-import { background: var(--card-subtle-blue); }
.btn-scan { margin-top: 4px; }

/* ── Form main (cyan bg) ── */
.form-main {
  background: var(--section-cyan);
  padding: 40px 32px calc(40px + 80px);
  position: relative;
  overflow: visible;
}
@media (max-width: 768px) {
  .form-main { padding: 24px 16px calc(24px + 80px); }
}
.form-main > *:not(.view-hero-grid-pattern):not(.deco-img) { position: relative; z-index: 1; }

/* ── Form grid: 7/5 columns ── */
.form-grid {
  max-width: 1400px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
  position: relative;
  z-index: 1;
}
@media (min-width: 900px) {
  .form-grid { grid-template-columns: 7fr 5fr; gap: 32px; }
}

.form-fields-col,
.form-sidebar-col {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

/* Make the form itself a flex column so gap applies between cards */
#recipe-form {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

/* ── Form card ── */
.form-card {
  background: var(--white);
  border: var(--border);
  border-radius: var(--radius-card);
  padding: 24px 28px;
  box-shadow: 2px 2px 0 0 #000;
}
.form-card-tips { background: var(--section-pink); }
.form-card-scan { background: var(--accent-purple); }

.form-card-label {
  display: block;
  font-size: 0.65rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(0,0,0,0.5);
  margin-bottom: 10px;
  margin-top: 0;
}
/* Stacked labels inside combined cards get top spacing */
.form-card .form-card-label + * + .form-card-label,
.form-card p + .form-card-label,
.form-card input + .form-card-label,
.form-card textarea + .form-card-label,
.form-card .form-time-grid + .form-card-label {
  margin-top: 20px;
}
.form-hint {
  font-size: 0.68rem;
  font-weight: 700;
  color: rgba(0,0,0,0.35);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-top: 8px;
}

/* ── Form card heading (tips/scan) ── */
.form-card-heading {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 1rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.01em;
  margin: 0 0 16px;
}
.form-card-heading .material-symbols-outlined { font-size: 20px; }

/* ── Tips list ── */
.form-tips-list {
  list-style: none;
  padding: 0; margin: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.form-tips-list li {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.form-tip-dot {
  flex-shrink: 0;
  width: 18px; height: 18px;
  border: var(--border-sm);
  margin-top: 2px;
}
.form-tips-list p {
  font-size: 0.82rem;
  font-weight: 700;
  color: rgba(0,0,0,0.65);
  line-height: 1.45;
  margin: 0;
}

/* ── Scan card desc ── */
.form-scan-desc {
  font-size: 0.82rem;
  font-weight: 700;
  color: rgba(0,0,0,0.65);
  line-height: 1.45;
  margin: 0 0 16px;
}

/* ── Textarea inside form cards: slightly tighter radius ── */
.form-input-textarea {
  border-radius: 16px;
}

/* ── Time grid: 3 columns ── */
.form-time-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 12px;
  margin-top: 20px;
}
@media (max-width: 480px) {
  .form-time-grid { grid-template-columns: 1fr 1fr; }
}
.form-time-grid .form-card-label { margin-bottom: 8px; margin-top: 0; }

/* ── Form rating stars ── */
.form-rating {
  display: flex;
  gap: 4px;
  margin-top: 4px;
}
.form-star {
  font-size: 28px;
  color: rgba(0,0,0,0.15);
  cursor: pointer;
  transition: color 0.1s, transform 0.1s;
  user-select: none;
}
.form-star.form-star-filled { color: var(--primary-pink); }
.form-star:hover { transform: scale(1.15); }

/* ── Save button (bottom of fields col) ── */
.form-save-btn {
  width: 100%;
  justify-content: center;
  height: 56px;
  font-size: 0.9rem;
}

label {
  display: block;
  font-size: 0.68rem;
  font-weight: 800;
  color: rgba(0,0,0,0.5);
  margin-bottom: 6px;
  margin-top: 20px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

input[type="text"],
input[type="number"],
input[type="email"],
input[type="password"],
input[type="url"],
textarea {
  width: 100%;
  padding: 12px 16px;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  font-family: 'Manrope', sans-serif;
  font-size: 0.875rem;
  font-weight: 700;
  background: var(--white);
  color: var(--black);
  box-shadow: none;
  transition: box-shadow var(--t);
  line-height: 1.5;
  outline: none;
}
textarea {
  border-radius: var(--radius-md);
  resize: vertical;
}
input:focus, textarea:focus { box-shadow: 2px 2px 0 0 var(--primary-pink); }
input::placeholder, textarea::placeholder { color: rgba(0,0,0,0.3); font-weight: 600; }

/* Search input: transparent inside the pill wrapper — must come after global input rule */
.search-bar input[type="text"] {
  flex: 1;
  width: auto;
  padding: 16px 8px 16px 28px;
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  font-size: 1rem;
}
.search-bar input[type="text"]:focus { box-shadow: none; }


/* Image upload */
.image-upload-area {
  width: 100%;
  border: 3px dashed rgba(0,0,0,0.35);
  border-radius: var(--radius-md);
  background: var(--card-subtle-green);
  cursor: pointer;
  overflow: hidden;
  transition: border-color var(--t), background var(--t);
  min-height: 160px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.image-upload-area:hover { border-color: var(--primary-pink); background: rgba(255,138,205,0.12); }
.image-upload-area.has-image { border-style: solid; border-color: var(--black); min-height: unset; background: var(--white); }

#upload-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 32px 28px;
  color: rgba(0,0,0,0.55);
  font-size: 0.82rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  pointer-events: none;
  text-align: center;
}
.upload-icon { font-size: 48px; color: rgba(0,0,0,0.3); margin-bottom: 4px; font-variation-settings: 'FILL' 1; }
.upload-hint { font-size: 0.68rem; color: rgba(0,0,0,0.35); font-weight: 600; text-transform: none; letter-spacing: 0; }
.upload-format-badges {
  display: flex;
  gap: 6px;
  margin-top: 4px;
}
.upload-badge {
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 3px 8px;
  border: var(--border-sm);
  box-shadow: 2px 2px 0 0 #000;
}
.badge-green  { background: var(--accent-green); }
.badge-yellow { background: var(--accent-yellow); }
.badge-blue   { background: var(--accent-blue); }

#image-preview {
  width: 100%;
  max-height: 280px;
  object-fit: cover;
  display: block;
}

/* btn-remove-image: ghost tier, layout only */
.btn-remove-image { margin-top: 8px; }

/* Form steps (add recipe form) */
.step-item { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 10px; }
.step-number {
  flex-shrink: 0;
  min-width: 28px;
  height: 28px;
  padding: 0 8px;
  background: var(--primary-pink);
  color: var(--black);
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  font-size: 0.72rem;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 10px;
  letter-spacing: 0.02em;
}
.step-textarea { flex: 1; }
.step-remove {
  flex-shrink: 0;
  background: none;
  border: var(--border);
  border-radius: var(--radius-pill);
  color: rgba(0,0,0,0.45);
  font-size: 0;
  line-height: 1;
  cursor: pointer;
  padding: 5px;
  margin-top: 8px;
  transition: transform var(--t), box-shadow var(--t), color var(--t);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: none;
}
.step-remove .material-symbols-outlined { font-size: 16px; }
.step-remove:hover { transform: translate(-1px,-1px); box-shadow: 2px 2px 0 0 #000; color: var(--black); }

/* btn-add-step: secondary tier, layout only */
.btn-add-step { margin-top: 4px; }

.form-buttons {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  margin-top: 28px;
  padding-top: 20px;
  border-top: var(--border);
}

.label-hint {
  font-size: 0.68rem;
  font-weight: 600;
  color: rgba(0,0,0,0.4);
  text-transform: none;
  letter-spacing: 0;
}

/* ===== URL IMPORT ===== */
.import-row { display: flex; gap: 8px; margin-top: 12px; align-items: center; }
.import-row input[type="url"] {
  flex: 1;
  background: var(--white);
  margin-top: 0;
  box-shadow: 2px 2px 0 0 #000;
  border-radius: var(--radius-pill);
}

.btn-import {
  white-space: nowrap;
  flex-shrink: 0;
}
.btn-import:disabled { opacity: 0.5; cursor: not-allowed; }


.btn-scan { width: 100%; justify-content: center; }
.btn-scan:disabled { opacity: 0.5; cursor: not-allowed; }

.import-status {
  font-size: 0.775rem;
  margin-top: 8px;
  min-height: 18px;
  font-weight: 700;
  text-transform: uppercase;
  color: transparent;
}
.import-status.loading { color: rgba(0,0,0,0.6); }
.import-status.success { color: #16A34A; }
.import-status.error   { color: #DC2626; }


/* ===== PRIVATE TOGGLE (form) ===== */
.private-toggle-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 0;
}
.private-toggle-label {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 0.875rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--black);
  cursor: pointer;
  margin: 0;
}
.private-toggle-label .material-symbols-outlined {
  font-size: 18px;
  color: rgba(0,0,0,0.5);
  font-variation-settings: 'FILL' 1, 'wght' 700;
}
.private-toggle-hint {
  font-size: 0.7rem;
  color: rgba(0,0,0,0.4);
  font-weight: 600;
}
.private-checkbox {
  width: 18px !important;
  height: 18px !important;
  accent-color: var(--primary-pink);
  cursor: pointer;
  flex-shrink: 0;
}

/* ===== DETAIL VIEW ===== */
/* =====================================================
   DETAIL VIEW — Electric Pop Editorial layout
   ===================================================== */

/* ── Hero section ── */
.detail-hero-section {
  display: flex;
  flex-direction: column;
  background: var(--hero-purple);
  border-bottom: var(--border);
  overflow: visible;
  position: relative;
}
@media (min-width: 769px) {
  .detail-hero-section { flex-direction: row; }
}

.detail-hero-left {
  flex: 1;
  padding: 32px 32px 28px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 18px;
  position: relative;
  z-index: 1;
}
@media (min-width: 769px) {
  .detail-hero-left { width: 50%; flex: none; padding: 48px 56px 40px; gap: 20px; }
}

.detail-hero-right {
  min-height: 220px;
  max-height: 240px;
  position: relative;
  overflow: hidden;
  border-top: var(--border);
}
@media (min-width: 769px) {
  .detail-hero-right {
    position: absolute;
    top: 0; right: 0; bottom: 0;
    width: 50%;
    min-height: unset;
    max-height: unset;
    border-top: none;
    border-left: var(--border);
  }
}
.detail-hero-right img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* ── Floating action bar ── */
.detail-float-bar {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  z-index: 96;
  display: flex;
  pointer-events: none; /* children re-enable */
}

/* Mobile: FAB buttons instead of full-width bar */
@media (max-width: 768px) {
  .detail-float-bar {
    bottom: calc(64px + env(safe-area-inset-bottom) + 16px);
    left: 20px;
    right: 20px;
    justify-content: space-between;
  }
  .detail-float-right {
    display: flex;
  }
  .detail-float-back,
  .detail-float-cook {
    pointer-events: all;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    padding: 0;
    font-size: 0;
    gap: 0;
    cursor: pointer;
    border: var(--border);
    border-radius: 50%;
    box-shadow: none;
    transition: transform var(--t), box-shadow var(--t);
  }
  .detail-float-back:active,
  .detail-float-cook:active { opacity: 0.7; }
  .detail-float-back {
    background: var(--white);
    color: var(--black);
  }
  .detail-float-cook {
    background: var(--primary-pink);
    color: var(--black);
  }
  .detail-float-back .material-symbols-outlined,
  .detail-float-cook .material-symbols-outlined { font-size: 28px; }
}

/* Desktop: two floating pill buttons in opposite corners */
@media (min-width: 769px) {
  .detail-float-bar {
    bottom: 32px;
    justify-content: space-between;
    padding: 0 40px;
  }
  .detail-float-right {
    display: flex;
    gap: 12px;
  }
  .detail-float-back,
  .detail-float-cook {
    pointer-events: all;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 48px;
    padding: 0 24px 0 16px;
    font-family: inherit;
    font-size: 0.8rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    cursor: pointer;
    border: var(--border);
    border-radius: var(--radius-pill);
    box-shadow: none;
    transition: transform var(--t), box-shadow var(--t);
  }
  .detail-float-back:hover,
  .detail-float-cook:hover { transform: translate(-2px,-2px); box-shadow: var(--neo-shadow-sm); }
  .detail-float-back {
    background: var(--white);
    color: var(--black);
    padding: 0 20px 0 14px;
  }
  .detail-float-cook {
    background: var(--primary-pink);
    color: var(--black);
  }
  .detail-float-back .material-symbols-outlined,
  .detail-float-cook .material-symbols-outlined { font-size: 18px; }
}

/* ── Category chips + private badge ── */
.detail-cats-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}
.detail-cats {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
/* ── Action chips (default size) ── */
.detail-cat-tag {
  display: inline-flex;
  align-items: center;
  font-size: 0.72rem;
  font-weight: 800;
  color: var(--black);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 6px 14px;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  box-shadow: none;
  cursor: pointer;
  transition: transform var(--t), box-shadow var(--t);
}
.detail-cat-tag:hover { transform: translate(-2px, -2px); box-shadow: 2px 2px 0 0 #000; }

.detail-private-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: var(--accent-yellow);
  color: var(--black);
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  font-size: 0.65rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 4px 10px;
  box-shadow: 2px 2px 0 0 #000;
}
.detail-private-badge .material-symbols-outlined {
  font-size: 12px;
  font-variation-settings: 'FILL' 1, 'wght' 700;
}

/* ── Title ── */
.detail-title {
  font-size: clamp(1.75rem, 4vw, 3rem);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.03em;
  line-height: 0.92;
  color: var(--black);
}

/* ── Meta row: time pills + servings ── */
.detail-meta-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
}
.detail-info-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.detail-meta-pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: var(--border);
  border-radius: var(--radius-pill);
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 9px 16px;
  box-shadow: 2px 2px 0 0 #000;
  white-space: nowrap;
}
.detail-meta-pill .material-symbols-outlined { font-size: 16px; }
.detail-meta-pill-blue  { background: var(--card-subtle-blue); }
.detail-meta-pill-green { background: var(--card-subtle-green); }

/* Servings adjuster */
.servings-adjuster {
  display: flex;
  align-items: stretch;
  background: var(--section-pink);
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  box-shadow: none;
  overflow: hidden;
  height: 40px;
}
.servings-adjuster button {
  background: var(--primary-pink);
  border: none;
  width: 40px;
  font-size: 1.2rem;
  font-weight: 800;
  cursor: pointer;
  color: var(--black);
  transition: background var(--t);
  font-family: 'Manrope', sans-serif;
}
.servings-adjuster button:hover { background: #ff6db8; }
.servings-adjuster button:first-child { border-right: var(--border-sm); }
.servings-adjuster button:last-child  { border-left: var(--border-sm); }
.servings-adjuster-inner {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 0 12px;
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  white-space: nowrap;
}
.servings-adjuster-inner .material-symbols-outlined { font-size: 16px; }

/* ── Rating row ── */
.detail-rating-row {
  display: flex;
  align-items: center;
  gap: 14px;
}
.detail-rating-label {
  font-size: 0.68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(0,0,0,0.45);
  white-space: nowrap;
}

/* ── Action buttons ── */
.detail-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
/* detail-btn: layout-only size class, combine with btn-secondary/danger/primary */
.detail-btn { height: 44px; padding: 0 18px; font-size: 0.75rem; }

/* ── Collections in hero ── */
.detail-collections-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}
.detail-collection-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
/* ── Action chips (sm size) ── */
.detail-collection-tag {
  display: inline-flex;
  align-items: center;
  color: var(--black);
  font-size: 0.65rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 4px 10px;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  box-shadow: none;
  cursor: pointer;
  transition: transform var(--t), box-shadow var(--t);
}
.detail-collection-tag:hover { transform: translate(-2px, -2px); box-shadow: 2px 2px 0 0 #000; }
.detail-manage-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  background: var(--white);
  border: var(--border-sm);
  border-radius: 50%;
  color: var(--black);
  cursor: pointer;
  box-shadow: none;
  flex-shrink: 0;
  transition: transform var(--t), box-shadow var(--t);
}
.detail-manage-btn:hover { transform: translate(-2px,-2px); box-shadow: 2px 2px 0 0 #000; }
.detail-manage-btn .material-symbols-outlined { font-size: 16px; }

/* ── TM model select popover ── */
.tm-model-select-popover {
  position: absolute;
  z-index: 300;
  background: rgba(255,255,255,0.45);
  backdrop-filter: blur(12px) saturate(1.4);
  -webkit-backdrop-filter: blur(12px) saturate(1.4);
  border: 1.5px solid rgba(255,255,255,0.6);
  border-radius: var(--radius-pill);
  box-shadow: 0 4px 16px rgba(0,0,0,0.13);
  padding: 6px;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 4px;
}
.tm-model-select-label {
  font-size: 0.65rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: rgba(0,0,0,0.45);
  white-space: nowrap;
  padding: 0 6px;
}
.tm-model-select-btn {
  padding: 5px 14px;
  font-family: inherit;
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  cursor: pointer;
  border: 1.5px solid rgba(0,0,0,0.12);
  border-radius: var(--radius-pill);
  background: rgba(255,255,255,0.95);
  color: var(--black);
  box-shadow: none;
  transition: background var(--t), border-color var(--t), transform var(--t);
}
.tm-model-select-btn:hover { background: rgba(0,0,0,0.07); border-color: rgba(0,0,0,0.25); transform: scale(1.05); box-shadow: none; }

/* ── Collection tag popover ── */
.collection-tag-popover {
  position: absolute;
  z-index: 200;
  background: rgba(255,255,255,0.45);
  backdrop-filter: blur(12px) saturate(1.4);
  -webkit-backdrop-filter: blur(12px) saturate(1.4);
  border: 1.5px solid rgba(255,255,255,0.6);
  border-radius: var(--radius-pill);
  box-shadow: 0 4px 16px rgba(0,0,0,0.13);
  padding: 6px;
  display: flex;
  flex-direction: row;
  gap: 4px;
}
.collection-tag-popover-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: rgba(255,255,255,0.95);
  border: 1.5px solid rgba(0,0,0,0.12);
  border-radius: 50%;
  cursor: pointer;
  transition: background var(--t), border-color var(--t), transform var(--t);
  color: var(--black);
}
.collection-tag-popover-btn:hover {
  background: rgba(0,0,0,0.07);
  border-color: rgba(0,0,0,0.25);
  transform: scale(1.08);
}
.collection-tag-popover-btn .material-symbols-outlined { font-size: 16px; }
.collection-tag-popover-btn-danger { color: #c0392b; }
.collection-tag-popover-btn-danger:hover { background: rgba(192,57,43,0.08); border-color: rgba(192,57,43,0.3); }

/* Popover button tooltips */
.collection-tag-popover-btn::after {
  position: absolute;
  bottom: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%);
  background: var(--accent-yellow);
  color: var(--black);
  font-family: inherit;
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  white-space: nowrap;
  padding: 5px 10px;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  box-shadow: 2px 2px 0 0 #000;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.15s;
  z-index: 300;
}
#btn-popover-goto::after    { content: 'Zur Sammlung'; }
#btn-popover-remove::after  { content: 'Entfernen'; }
#btn-cat-popover-filter::after { content: 'Nach Kategorie filtern'; }
#btn-cat-popover-remove::after { content: 'Kategorie entfernen'; }
#collection-edit-popover { position: fixed; z-index: 400; }
#btn-col-edit-select::after { content: 'Auswählen'; }
#btn-col-edit-rename::after { content: 'Umbenennen'; }
#btn-col-edit-delete::after { content: 'Löschen'; }
.collection-tag-popover-btn:hover::after { opacity: 1; }

/* ── Source ── */
.detail-source {
  font-size: 0.7rem;
  font-weight: 700;
  color: rgba(0,0,0,0.45);
  word-break: break-word;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.detail-source a { color: var(--black); text-decoration: underline; }

/* ── Content section: cyan bg, 2-col grid ── */
.detail-content-section {
  background: var(--section-cyan);
  border-top: var(--border);
  padding: 32px 20px calc(32px + 52px + 64px + env(safe-area-inset-bottom));
  position: relative;
  overflow-x: hidden;
  overflow-y: visible;
}
@media (min-width: 769px) {
  .detail-content-section { padding: 48px 40px calc(48px + 80px); }
}

.detail-content-grid {
  max-width: 1400px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr;
  gap: 32px;
  position: relative;
  z-index: 1;
}
@media (min-width: 769px) {
  .detail-content-grid { grid-template-columns: 4fr 8fr; gap: 48px; }
}

.detail-content-left {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

/* Section headings */
.detail-section-heading {
  font-size: 1.5rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.02em;
  color: var(--black);
  border-bottom: var(--border);
  padding-bottom: 8px;
  margin-bottom: 16px;
}
@media (min-width: 769px) {
  .detail-section-heading { font-size: 2rem; }
}

/* ── Steps heading row (heading + TM tab toggle) ── */
.steps-heading-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px 12px;
  border-bottom: var(--border);
  padding-bottom: 8px;
  margin-bottom: 16px;
}
.steps-heading-row .detail-section-heading {
  border-bottom: none;
  padding-bottom: 0;
  margin-bottom: 0;
}

/* ── TM tab row (toggle + ⋮ button grouped right) ── */
.tm-tab-row {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}

/* ── TM actions ⋮ trigger button ── */
.btn-tm-actions {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
}
.btn-tm-actions .material-symbols-outlined { font-size: 18px; }

/* ── TM popover tooltip labels ── */
#btn-tm-popover-edit::after   { content: 'Bearbeiten'; }
#btn-tm-popover-delete::after { content: 'Löschen'; }

/* ── Edit TM steps modal ── */
.modal-card-tm-edit {
  width: min(780px, 96vw);
  max-height: 90vh;
  display: flex;
  flex-direction: column;
}
.modal-body-tm-edit {
  flex: 1;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 20px 24px 8px;
}

/* ── Structured TM step card ── */
.tm-edit-step-card {
  border: var(--border-sm);
  border-radius: var(--radius-md);
  padding: 18px;
  background: var(--white);
  display: flex;
  flex-direction: column;
  gap: 12px;
  transition: border-color var(--t), background var(--t);
}
.tm-edit-step-card[data-type="manual"] {
  border-color: rgba(255, 233, 89, 0.7);
  background: rgba(255, 233, 89, 0.07);
}

/* Card header: step number + type toggle + delete */
.tm-step-card-header {
  display: flex;
  align-items: center;
  gap: 10px;
}
.tm-edit-step-num {
  min-width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--black);
  color: #fff;
  font-size: 0.65rem;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  letter-spacing: 0.02em;
}

/* Type toggle */
.tm-step-type-toggle {
  flex: 1;
  display: flex;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  overflow: hidden;
  height: 38px;
}
.tm-type-btn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  font-family: inherit;
  font-size: 0.7rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  cursor: pointer;
  border: none;
  background: transparent;
  color: rgba(0,0,0,0.38);
  transition: background var(--t), color var(--t);
  white-space: nowrap;
}
.tm-type-btn .material-symbols-outlined { font-size: 14px; }
.tm-type-btn + .tm-type-btn { border-left: var(--border-sm); }
.tm-type-btn:hover { background: rgba(0,0,0,0.04); color: var(--black); transform: none; box-shadow: none; }
/* Active: machine = black, manual = yellow */
.tm-edit-step-card[data-type="machine"] .tm-type-active {
  background: var(--black) !important;
  color: #fff !important;
}
.tm-edit-step-card[data-type="manual"] .tm-type-active {
  background: var(--accent-yellow) !important;
  color: var(--black) !important;
}

/* Delete button */
.tm-edit-remove-btn {
  width: 30px;
  height: 30px;
  flex-shrink: 0;
  opacity: 0.4;
  transition: opacity var(--t), transform var(--t), box-shadow var(--t);
}
.tm-edit-remove-btn:hover { opacity: 1; }
.tm-edit-remove-btn .material-symbols-outlined { font-size: 16px; }

/* Description textarea */
.tm-edit-textarea {
  font-family: inherit;
  font-size: 0.88rem;
  line-height: 1.55;
  padding: 10px 12px;
  border: var(--border-sm);
  border-radius: var(--radius-sm);
  background: var(--white);
  resize: vertical;
  min-height: 64px;
  outline: none;
  transition: border-color var(--t), box-shadow var(--t);
  width: 100%;
  box-sizing: border-box;
}
.tm-edit-textarea:focus {
  border-color: var(--primary-pink);
  box-shadow: 2px 2px 0 0 var(--primary-pink);
}

/* Machine params section */
.tm-step-machine-section {
  background: rgba(179, 246, 255, 0.3);
  border: 1.5px solid rgba(0, 0, 0, 0.07);
  border-radius: var(--radius-sm);
  padding: 14px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

/* 3-column params grid: Dauer | Temperatur | Linkslauf */
.tm-params-grid {
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  gap: 12px;
  align-items: start;
}
.tm-param-block {
  display: flex;
  flex-direction: column;
  gap: 7px;
}
.tm-param-block-label {
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: rgba(0,0,0,0.4);
}

/* Dauer row */
.tm-dauer-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.tm-dauer-input, .tm-temp-input {
  width: 58px;
  font-family: inherit;
  font-size: 0.9rem;
  font-weight: 700;
  padding: 6px 8px;
  border: var(--border-sm);
  border-radius: var(--radius-sm);
  text-align: center;
  background: #fff;
  outline: none;
  transition: box-shadow var(--t);
}
.tm-dauer-input:focus, .tm-temp-input:focus { box-shadow: 2px 2px 0 0 var(--primary-pink); }
.tm-unit-toggle {
  display: flex;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  overflow: hidden;
  height: 32px;
}
.tm-unit-btn {
  padding: 0 9px;
  font-family: inherit;
  font-size: 0.62rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  cursor: pointer;
  border: none;
  background: transparent;
  color: rgba(0,0,0,0.45);
  transition: background var(--t), color var(--t);
}
.tm-unit-btn + .tm-unit-btn { border-left: var(--border-sm); }
.tm-unit-btn:hover { background: rgba(0,0,0,0.05); transform: none; box-shadow: none; }
.tm-unit-active { background: var(--black) !important; color: #fff !important; }

/* Temp row */
.tm-temp-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.tm-temp-unit { font-size: 0.78rem; font-weight: 800; }
.tm-varoma-btn {
  padding: 5px 11px;
  font-family: inherit;
  font-size: 0.65rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  cursor: pointer;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  background: #fff;
  transition: background var(--t), box-shadow var(--t), transform var(--t);
  box-shadow: none;
}
.tm-varoma-btn:hover { transform: translate(-1px,-1px); box-shadow: 2px 2px 0 0 #000; }
.tm-varoma-active { background: var(--accent-blue) !important; box-shadow: 2px 2px 0 0 #000 !important; }

/* Linkslauf */
.tm-linkslauf-row { align-items: start; }
.tm-linkslauf-label {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 0.75rem;
  font-weight: 700;
  cursor: pointer;
  padding-top: 2px;
}
.tm-linkslauf-check { width: 15px; height: 15px; cursor: pointer; accent-color: var(--primary-pink); flex-shrink: 0; }

/* Stufe section */
.tm-stufe-section {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.tm-stufe-row { display: flex; flex-wrap: wrap; gap: 5px; }
.tm-stufe-btn {
  min-width: 36px;
  height: 36px;
  padding: 0 10px;
  font-family: inherit;
  font-size: 0.75rem;
  font-weight: 800;
  cursor: pointer;
  border: var(--border-sm);
  border-radius: var(--radius-sm);
  background: #fff;
  color: var(--black);
  transition: transform var(--t), box-shadow var(--t), background var(--t);
  text-align: center;
  box-shadow: none;
}
.tm-stufe-btn:hover { transform: translate(-1px,-1px); box-shadow: 2px 2px 0 0 #000; }
.tm-stufe-active { background: var(--primary-pink) !important; box-shadow: 2px 2px 0 0 #000 !important; }

/* Turbo preset row */
.tm-turbo-row {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

/* Add step button */
.tm-edit-add-btn {
  width: 100%;
  justify-content: center;
  border: var(--border-sm);
  border-style: dashed;
  border-radius: var(--radius-sm);
  padding: 10px;
  font-size: 0.78rem;
}
.tm-edit-add-btn:hover {
  background: rgba(0,0,0,0.04);
  transform: none;
  box-shadow: none;
}
.tm-edit-step-row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
}

/* Mobile: collapse 3-col grid to 2-col */
@media (max-width: 520px) {
  .tm-params-grid { grid-template-columns: 1fr 1fr; }
  .tm-linkslauf-row { grid-column: 1 / -1; }
}

/* ── Thermomix tab toggle ── */
.tm-tab-toggle {
  display: flex;
  gap: 0;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  overflow: hidden;
  flex-shrink: 0;
}
.tm-tab-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 5px 12px;
  font-family: inherit;
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  cursor: pointer;
  border: none;
  background: var(--white);
  color: var(--black);
  transition: background var(--t), color var(--t);
}
.tm-tab-btn + .tm-tab-btn {
  border-left: var(--border-sm);
}
.tm-tab-active {
  background: var(--primary-pink);
  color: var(--black);
}

/* ── Thermomix step params line ── */
/* ── TM step param chips ── */
.tm-params-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 10px;
}
.tm-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  font-size: 0.68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--black);
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  box-shadow: 1px 1px 0 0 #000;
  white-space: nowrap;
}
.tm-chip .material-symbols-outlined {
  font-size: 14px;
}
.tm-chip-time  { background: var(--accent-blue); }
.tm-chip-temp  { background: #FFAD8A; }
.tm-chip-speed { background: var(--accent-yellow); }
.tm-chip-mode  { background: var(--accent-purple); color: var(--black); }

/* Legacy single-line fallback */
.step-tm-params {
  display: block;
  margin-top: 6px;
  font-size: 0.75rem;
  font-weight: 800;
  color: var(--black);
  background: var(--accent-yellow);
  border: var(--border-sm);
  border-radius: var(--radius-sm);
  padding: 3px 8px;
  letter-spacing: 0.02em;
}

/* ── Manual step (⚠️) ── */
.step-entry-manual .step-card {
  background: #fff9e6;
  border-color: #e6c700;
}


/* ── Ingredient reset button ── */
.ingredients-reset-btn {
  display: none;
  align-items: center;
  gap: 5px;
  background: none;
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  font-family: 'Manrope', sans-serif;
  font-size: 0.65rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: rgba(0,0,0,0.45);
  cursor: pointer;
  padding: 4px 10px 4px 8px;
  transition: color var(--t), border-color var(--t);
}
.ingredients-reset-btn:hover { color: var(--black); border-color: var(--black); }
.ingredients-reset-btn .material-symbols-outlined { font-size: 14px; }

/* ── Ingredients card controls (scaler + reset, inside card at top) ── */
.ingredients-card-controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 14px;
  margin-bottom: 4px;
  border-bottom: var(--border-sm);
}
.ingredients-card-controls:empty { display: none; }

/* ── Ingredients card ── */
.ingredients-card {
  position: relative;
  background: var(--white);
  border: var(--border);
  border-radius: var(--radius-card);
  padding: 28px;
  box-shadow: 2px 2px 0 0 #000;
}
#detail-ingredients { list-style: none; padding: 0; margin: 0; }

.ingredient-item {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 10px 0;
  border-bottom: 2px solid rgba(0,0,0,0.07);
  cursor: pointer;
}
.ingredient-item:last-child { border-bottom: none; }

.ingredient-check {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border: var(--border);
  border-radius: var(--radius-sm);
  background: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background var(--t);
}
.ingredient-item:hover .ingredient-check { background: rgba(255,138,205,0.2); }
.ingredient-item.ingredient-checked .ingredient-check { background: var(--primary-pink); }
.ingredient-check .check-icon {
  font-size: 16px;
  font-variation-settings: 'FILL' 1, 'wght' 700;
  color: var(--black);
  opacity: 0;
  transition: opacity var(--t);
}
.ingredient-item.ingredient-checked .ingredient-check .check-icon { opacity: 1; }

.ingredient-text {
  flex: 1;
  font-size: 0.875rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  line-height: 1.4;
  transition: opacity var(--t), text-decoration var(--t);
}
.ingredient-item.ingredient-checked .ingredient-text {
  text-decoration: line-through;
  opacity: 0.35;
}

.ingredients-section-header {
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: rgba(0,0,0,0.4);
  padding-top: 16px;
  padding-bottom: 6px;
  list-style: none;
  border-bottom: none !important;
  cursor: default;
}
.ingredients-section-header:first-child { padding-top: 0; }

/* ── Notes card ── */
.detail-notes-card {
  background: var(--section-pink);
  border: var(--border);
  border-radius: var(--radius-card);
  padding: 28px;
  box-shadow: 2px 2px 0 0 #000;
}
.notes-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 1rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.01em;
  margin-bottom: 12px;
}
.notes-title .material-symbols-outlined {
  font-size: 20px;
  font-variation-settings: 'FILL' 1, 'wght' 700;
}
.detail-notes-card p {
  font-size: 0.875rem;
  line-height: 1.7;
  font-weight: 700;
  color: rgba(0,0,0,0.75);
  font-style: italic;
}

/* ── Steps timeline ── */
.detail-content-right { display: flex; flex-direction: column; min-width: 0; }

.detail-steps-list {
  display: flex;
  flex-direction: column;
}

.step-entry {
  position: relative;
  padding-left: 52px;
  padding-bottom: 32px;
  border-left: var(--border);
  margin-left: 20px;
}
.step-entry:last-child {
  padding-bottom: 4px;
  border-left-color: transparent;
}

.step-num {
  position: absolute;
  left: -22px;
  top: 0;
  width: 40px;
  height: 40px;
  border: var(--border);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  font-weight: 800;
  box-shadow: 2px 2px 0 0 #000;
  z-index: 1;
  flex-shrink: 0;
}

.step-card {
  background: var(--white);
  border: var(--border);
  border-radius: 20px;
  padding: 16px 20px;
  box-shadow: 2px 2px 0 0 #000;
  margin-left: 8px;
}

.step-headline {
  font-size: 0.875rem;
  font-weight: 800;
  color: var(--black);
  line-height: 1.5;
  margin: 0 0 4px;
}

.step-text {
  font-size: 0.875rem;
  font-weight: 500;
  color: rgba(0,0,0,0.65);
  line-height: 1.7;
  margin: 0;
}

/* ===== STAR RATING (interactive) ===== */
.star-rating-interactive {
  display: flex;
  gap: 2px;
  align-items: center;
}
.star-icon {
  font-size: 28px;
  font-variation-settings: 'FILL' 1, 'wght' 700, 'GRAD' 0, 'opsz' 24;
  color: rgba(0,0,0,0.18);
  cursor: pointer;
  transition: color 80ms ease, transform 80ms ease;
  user-select: none;
}
.star-icon:hover, .star-icon.star-hover { transform: scale(1.15); }
.star-icon.star-filled { color: var(--primary-pink); }

/* ===== COOK MODE OVERLAY ===== */
/* ============================================================
   COOK MODE — redesigned
   ============================================================ */

#view-cook {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 200;
  background: var(--hero-purple);
  color: var(--black);
  flex-direction: column;
}
#view-cook::before {
  content: '';
  position: fixed;
  inset: 0;
  background-image:
    linear-gradient(to right, rgba(255,255,255,0.20) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255,255,255,0.20) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
  z-index: 0;
}

/* ---- Header ---- */
.cook-header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 24px;
  padding-top: calc(14px + env(safe-area-inset-top));
  flex-shrink: 0;
  position: relative;
  z-index: 2;
  border-bottom: var(--border);
  background: var(--hero-purple);
}

.cook-exit-btn {
  flex-shrink: 0;
  background: var(--white);
  border: var(--border);
  border-radius: var(--radius-pill);
  color: var(--black);
  font-family: 'Manrope', sans-serif;
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 8px 16px;
  display: flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t);
}
.cook-exit-btn:hover { transform: translate(-2px,-2px); box-shadow: var(--neo-shadow-sm); }
.cook-exit-btn .material-symbols-outlined { font-size: 16px; }

.cook-counter {
  flex: 1;
  text-align: center;
  font-size: 0.75rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(0,0,0,0.5);
}

.cook-header-right {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}

/* Ingredients toggle — mobile only (hidden on desktop) */
.cook-ing-toggle-btn {
  display: none;
  align-items: center;
  gap: 6px;
  background: var(--white);
  border: var(--border);
  border-radius: var(--radius-pill);
  color: var(--black);
  font-family: 'Manrope', sans-serif;
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 8px 14px;
  cursor: pointer;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t);
}
.cook-ing-toggle-btn:hover { transform: translate(-2px,-2px); box-shadow: var(--neo-shadow-sm); }
.cook-ing-toggle-btn .material-symbols-outlined { font-size: 16px; }

/* Servings adjuster */
.cook-servings-adjuster {
  display: flex;
  align-items: center;
  border: var(--border);
  border-radius: var(--radius-pill);
  background: var(--white);
  box-shadow: none;
  overflow: hidden;
  flex-shrink: 0;
}
.cook-servings-adjuster button {
  width: 34px;
  height: 36px;
  background: none;
  border: none;
  cursor: pointer;
  font-size: 1.1rem;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background var(--t);
}
.cook-servings-adjuster button:first-child { border-right: var(--border); }
.cook-servings-adjuster button:last-child  { border-left: var(--border); }
.cook-servings-adjuster button:hover { background: rgba(0,0,0,0.06); }
.cook-servings-val {
  padding: 0 10px;
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 0.82rem;
  font-weight: 800;
}
.cook-servings-val .material-symbols-outlined { font-size: 15px; }

/* ---- Main layout: sidebar + content ---- */
.cook-main {
  flex: 1;
  display: flex;
  overflow: hidden;
  position: relative;
}

/* ---- Ingredients sidebar ---- */
.cook-sidebar {
  width: 280px;
  flex-shrink: 0;
  background: var(--white);
  border-right: var(--border);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.cook-sidebar-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px 12px;
  border-bottom: var(--border-sm);
  flex-shrink: 0;
}

.cook-sidebar-label {
  font-size: 0.65rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: rgba(0,0,0,0.45);
}

.cook-sidebar-reset {
  background: none;
  border: none;
  cursor: pointer;
  color: rgba(0,0,0,0.35);
  display: flex;
  align-items: center;
  padding: 4px;
  border-radius: 4px;
  transition: color var(--t), background var(--t);
}
.cook-sidebar-reset:hover { color: var(--black); background: rgba(0,0,0,0.06); }
.cook-sidebar-reset .material-symbols-outlined { font-size: 18px; }

#cook-ing-list {
  list-style: none;
  padding: 12px 0;
  margin: 0;
  overflow-y: auto;
  flex: 1;
}
#cook-ing-list li {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--black);
  padding: 9px 20px;
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  transition: background var(--t), opacity var(--t);
  user-select: none;
}
#cook-ing-list li:hover { background: rgba(0,0,0,0.04); }
#cook-ing-list li::before {
  content: '';
  width: 9px;
  height: 9px;
  min-width: 9px;
  background: var(--primary-pink);
  border: var(--border-sm);
  border-radius: 50%;
  transition: background var(--t), border-color var(--t);
}
#cook-ing-list li.ing-checked {
  opacity: 0.38;
  text-decoration: line-through;
}
#cook-ing-list li.ing-checked::before {
  background: rgba(0,0,0,0.2);
  border-color: rgba(0,0,0,0.2);
}
#cook-ing-list li.cook-section-header {
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: rgba(0,0,0,0.38);
  padding-top: 16px;
  padding-bottom: 4px;
  cursor: default;
}
#cook-ing-list li.cook-section-header::before { display: none; }
#cook-ing-list li.cook-section-header:first-child { padding-top: 6px; }
#cook-ing-list li.cook-section-header:hover { background: none; }

/* ---- Step content column ---- */
.cook-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

/* Recipe name pill */
.cook-recipe-pill {
  display: flex;
  justify-content: center;
  padding: 16px 24px 0;
  flex-shrink: 0;
}
.cook-recipe-pill span {
  background: var(--black);
  color: var(--white);
  border: var(--border);
  padding: 5px 18px;
  border-radius: var(--radius-pill);
  font-size: 0.68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  box-shadow: var(--neo-shadow-sm);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}

/* Step body */
.cook-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  padding: 28px 32px 20px;
  overflow-y: auto;
  gap: 18px;
}

/* Step card */
.cook-step-card {
  background: var(--white);
  border: var(--border);
  border-radius: var(--radius-card);
  padding: 36px;
  box-shadow: var(--neo-shadow);
  width: 100%;
  max-width: 580px;
}

.cook-step-num {
  font-size: clamp(64px, 14vw, 96px);
  font-weight: 800;
  line-height: 0.85;
  margin-bottom: 18px;
  letter-spacing: -0.04em;
  transition: color 250ms ease;
}

.cook-step-title {
  font-size: 1rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.01em;
  color: var(--black);
  margin: 0 0 8px;
  padding: 4px 12px;
  background: var(--accent-yellow);
  border: var(--border-sm);
  border-radius: var(--radius-pill);
  display: inline-block;
}
.cook-step-text {
  font-size: 1.1rem;
  line-height: 1.75;
  color: var(--black);
  font-weight: 700;
}
.cook-step-card .tm-params-row {
  margin-top: 16px;
  gap: 8px;
}
.cook-step-card .tm-chip {
  font-size: 0.78rem;
  padding: 6px 14px;
  gap: 6px;
}
.cook-step-card .tm-chip .material-symbols-outlined {
  font-size: 16px;
}

/* Tip card */
.cook-tip-card {
  background: var(--primary-pink);
  border: var(--border);
  border-radius: var(--radius-md);
  padding: 14px 18px;
  box-shadow: var(--neo-shadow-sm);
  width: 100%;
  max-width: 580px;
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
.cook-tip-icon { font-size: 1.25rem; flex-shrink: 0; }
.cook-tip-text {
  font-size: 0.85rem;
  font-weight: 700;
  line-height: 1.5;
  color: var(--black);
}

/* Progress */
.cook-progress-section {
  padding: 0 32px 12px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex-shrink: 0;
}
.cook-progress-dots {
  display: flex;
  justify-content: center;
  gap: 7px;
  flex-wrap: wrap;
}
.cook-progress-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: 2px solid var(--black);
  background: rgba(255,255,255,0.5);
  transition: background 200ms;
}
.cook-progress-dot.done    { background: var(--primary-pink); }
.cook-progress-dot.current { background: var(--black); }
.cook-progress-track {
  height: 14px;
  background: rgba(255,255,255,0.5);
  border: var(--border);
  border-radius: var(--radius-pill);
  overflow: hidden;
}
.cook-progress-fill {
  height: 100%;
  background: var(--primary-pink);
  border-radius: var(--radius-pill);
  transition: width 300ms ease;
}

/* Navigation */
.cook-nav {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-top: var(--border);
  flex-shrink: 0;
}
.cook-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 20px;
  padding-bottom: calc(20px + env(safe-area-inset-bottom));
  border: none;
  font-family: 'Manrope', sans-serif;
  font-size: 0.78rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  cursor: pointer;
  min-height: 60px;
  transition: background var(--t), opacity var(--t);
}
.cook-btn .material-symbols-outlined { font-size: 20px; }
.cook-btn:disabled { opacity: 0.25; cursor: not-allowed; }
.cook-btn-prev {
  background: var(--white);
  color: var(--black);
  border-right: var(--border);
}
.cook-btn-prev:hover:not(:disabled) { background: rgba(0,0,0,0.05); }
.cook-btn-next {
  background: var(--primary-pink);
  color: var(--black);
}
.cook-btn-next:hover:not(:disabled) { background: #ff9ed5; }

/* ---- Mobile: bottom sheet for ingredients ---- */
.cook-sheet-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.4);
  z-index: 19;
}
#view-cook.cook-ing-open .cook-sheet-overlay {
  display: block;
}
/* On mobile, sidebar transforms into a bottom sheet */

/* Cook mode: start cooking button */
.btn-cook {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--primary-pink);
  color: var(--black);
  border: var(--border);
  padding: 10px 20px;
  border-radius: var(--radius-pill);
  font-family: 'Manrope', sans-serif;
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  cursor: pointer;
  box-shadow: var(--neo-shadow-sm);
  transition: transform var(--t), box-shadow var(--t);
}
.btn-cook:hover { transform: translate(2px, 2px); box-shadow: none; }
.btn-cook .material-symbols-outlined { font-size: 18px; }

/* ===== LOGIN OVERLAY ===== */
#view-login {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 300;
  background: var(--hero-purple);
  animation: loginFadeIn 280ms ease-out both;
}
@keyframes loginFadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) { #view-login { animation: none; } }

/* Split layout */
.login-split {
  display: flex;
  height: 100%;
  width: 100%;
}

/* Brand panel (left) */
.login-brand {
  flex: 1;
  background: var(--hero-purple);
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 48px 48px 56px;
}
.login-brand > *:not(.view-hero-grid-pattern):not(.login-deco) {
  position: relative;
  z-index: 1;
}
.login-brand-inner { position: relative; z-index: 1; }

.login-brand-title {
  font-size: clamp(4rem, 9vw, 7rem);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.04em;
  line-height: 0.88;
  color: var(--black);
  margin-bottom: 20px;
}
.login-brand-tagline {
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: rgba(0,0,0,0.4);
}

/* Decorative milkshake in brand panel */
.login-deco {
  position: absolute;
  width: 200px;
  top: 48px;
  right: 32px;
  transform: rotate(10deg);
  z-index: 0;
  pointer-events: none;
  opacity: 0.9;
}

/* Form panel (right) */
.login-form-panel {
  width: 400px;
  flex-shrink: 0;
  background: var(--white);
  border-left: var(--border);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 56px 48px 24px;
  overflow-y: auto;
  animation: loginFormSlide 350ms cubic-bezier(0.22, 1, 0.36, 1) both;
  animation-delay: 80ms;
}
@keyframes loginFormSlide {
  from { opacity: 0; transform: translateX(20px); }
  to   { opacity: 1; transform: translateX(0); }
}

.login-form-inner {
  width: 100%;
}

.login-form-heading {
  font-size: 2rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.03em;
  line-height: 1.05;
  color: var(--black);
  margin-bottom: 6px;
}
.login-form-sub {
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: rgba(0,0,0,0.38);
  margin-bottom: 32px;
}

/* Form fields */
#view-login label {
  display: block;
  font-size: 0.68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(0,0,0,0.5);
  margin-bottom: 6px;
  margin-top: 20px;
}
#view-login label:first-of-type { margin-top: 0; }

.password-field { position: relative; display: flex; align-items: center; }
.password-field input { width: 100%; padding-right: 44px; }
.password-toggle {
  position: absolute;
  right: 10px;
  background: none;
  border: none;
  color: rgba(0,0,0,0.4);
  cursor: pointer;
  padding: 4px;
  display: flex;
  align-items: center;
  min-width: 32px;
  min-height: 32px;
}
.password-toggle .material-symbols-outlined { font-size: 18px; }

.login-error {
  display: none;
  align-items: center;
  gap: 7px;
  font-size: 0.75rem;
  color: #DC2626;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin-top: 16px;
  padding: 10px 14px;
  background: var(--card-subtle-red);
  border: var(--border);
}
.login-error.visible { display: flex; }
.login-error .material-symbols-outlined { font-size: 16px; flex-shrink: 0; }

#view-login input[type="email"],
#view-login input[type="password"],
#view-login input[type="text"] { min-height: 48px; font-size: 1rem; }

.login-submit {
  width: 100%;
  justify-content: center;
  padding: 14px;
  margin-top: 28px;
  font-size: 0.875rem;
  min-height: 52px;
}

/* Social sign-in button */
.btn-social-google {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  padding: 12px 16px;
  background: #fff;
  border: var(--border);
  border-radius: var(--radius-pill);
  font-family: inherit;
  font-size: 0.82rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t);
  margin-top: 4px;
}
.btn-social-google:hover {
  transform: translate(-2px, -2px);
  box-shadow: var(--neo-shadow-sm);
}

/* "oder" divider */
.login-divider {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 20px 0 4px;
  color: rgba(0,0,0,0.35);
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.login-divider::before,
.login-divider::after {
  content: '';
  flex: 1;
  height: 2px;
  background: rgba(0,0,0,0.1);
}

/* Mode toggle link */
.login-mode-toggle {
  text-align: center;
  font-size: 0.75rem;
  font-weight: 700;
  color: rgba(0,0,0,0.45);
  margin-top: 20px;
}
.login-mode-toggle button {
  background: none;
  border: none;
  padding: 0;
  font: inherit;
  font-weight: 800;
  color: #000;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.login-mode-toggle button:hover { opacity: 0.6; }

/* Email confirmation panel */
.login-confirm-icon {
  margin-bottom: 20px;
}
.login-confirm-icon .material-symbols-outlined {
  font-size: 52px;
  font-variation-settings: 'FILL' 1;
  color: var(--primary-pink);
}
.login-confirm-text {
  font-size: 0.875rem;
  line-height: 1.6;
  color: rgba(0,0,0,0.6);
  margin-bottom: 28px;
}

/* ===== BOTTOM NAV (mobile only) ===== */
.bottom-nav {
  display: none;
  position: fixed;
  bottom: 0; left: 0; right: 0;
  height: calc(64px + env(safe-area-inset-bottom));
  background: var(--white);
  border-top: var(--border);
  z-index: 95;
  align-items: stretch;
  padding-bottom: env(safe-area-inset-bottom);
}

.bottom-nav-item {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  font-size: 0.65rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: rgba(0,0,0,0.35);
  text-decoration: none;
  cursor: pointer;
  border-right: 2px solid rgba(0,0,0,0.08);
  -webkit-tap-highlight-color: transparent;
  transition: color var(--t);
}
.bottom-nav-item:last-child { border-right: none; }
.bottom-nav-item .material-symbols-outlined { font-size: 22px; }
.bottom-nav-item.active { color: var(--primary-pink); }
.bottom-nav-item.active .material-symbols-outlined { font-variation-settings: 'FILL' 1, 'wght' 700; }

/* ===== COLLECTIONS VIEW ===== */
.collections-grid {
  max-width: 1200px;
  margin: 0 auto;
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 20px;
}
.collections-empty-msg {
  max-width: 1200px;
  margin: 16px auto 0;
  position: relative;
  z-index: 1;
}

/* Collection card — vertical layout with colored top */
.collection-card {
  background: var(--white);
  border: var(--border);
  border-radius: var(--radius-md);
  overflow: visible;
  display: flex;
  flex-direction: column;
  cursor: pointer;
  box-shadow: var(--neo-shadow-sm);
  transition: transform var(--t), box-shadow var(--t);
}
.collection-card:hover { transform: translate(-3px,-3px); box-shadow: var(--neo-shadow); }

.collection-card-top {
  padding: 28px 20px 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-bottom: var(--border);
  border-radius: calc(var(--radius-md) - 3px) calc(var(--radius-md) - 3px) 0 0;
}
.collection-card-top .material-symbols-outlined {
  font-size: 44px;
  color: var(--black);
  font-variation-settings: 'FILL' 1;
}

.collection-card-bottom {
  padding: 14px 16px 12px;
  flex: 1;
  position: relative;
}
.collection-card-bottom h3 {
  font-size: 0.82rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--black);
  margin: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding-right: 84px;
}
.collection-card-bottom p {
  font-size: 0.7rem;
  font-weight: 700;
  color: rgba(0,0,0,0.45);
}

.collection-card-actions {
  position: absolute;
  bottom: 12px;
  right: 12px;
  display: flex;
  gap: 4px;
}
.collection-card-action-btn {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--white);
  border: var(--border-sm);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t);
  padding: 0;
  flex-shrink: 0;
}
.collection-card-action-btn:hover { transform: translate(-1px,-1px); box-shadow: 2px 2px 0 0 #000; }
.collection-card-action-btn .material-symbols-outlined { font-size: 16px; color: var(--black); }
.collection-card-action-btn.collection-card-delete:hover .material-symbols-outlined { color: #DC2626; }


/* ===== COLLECTION DETAIL VIEW ===== */
.collection-detail-hero {
  background: var(--hero-purple);
  border-bottom: var(--border);
  padding: 20px 48px 22px;
  position: relative;
  overflow: hidden;
  flex-shrink: 0;
}
.collection-detail-hero > *:not(.view-hero-grid-pattern):not(.deco-img) {
  position: relative;
  z-index: 1;
}
.collection-detail-hero-inner {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 14px;
}


.collection-detail-hero-main {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}
.collection-detail-hero-main .display-heading {
  margin-bottom: 0;
  font-size: clamp(1.75rem, 4vw, 3rem);
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.collection-detail-hero-actions {
  display: flex;
  gap: 8px;
  flex-shrink: 0;
}

.collection-detail-count {
  font-size: 0.82rem;
  font-weight: 700;
  color: rgba(0,0,0,0.45);
  margin: 0;
}

.section-collection-detail-recipes {
  background: var(--section-cyan);
  padding: 36px 32px calc(36px + 80px);
  flex: 1;
  position: relative;
  overflow: visible;
}
.section-collection-detail-recipes::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(255,255,255,0.20) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.20) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
  z-index: 0;
}
/* Recipe cards inside collection detail: clip to border-radius (no CSS ::after tooltips here) */
#view-collection-detail .recipe-card {
  overflow: hidden;
}

/* Remove-from-collection button on cards inside collection detail */
.card-remove-from-collection {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--white);
  border: var(--border-sm);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
  box-shadow: 2px 2px 0 0 #000;
  transition: transform var(--t), box-shadow var(--t);
  padding: 0;
  flex-shrink: 0;
}
.card-remove-from-collection:hover { transform: translate(1px,1px); box-shadow: none; }
.card-remove-from-collection .material-symbols-outlined { font-size: 16px; color: var(--black); }

/* Floating back bar for collection detail */
.collection-detail-float-bar {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  z-index: 96;
  display: flex;
  pointer-events: none;
}

@media (max-width: 768px) {
  .collection-detail-float-bar {
    bottom: calc(64px + env(safe-area-inset-bottom) + 16px);
    left: 20px;
    right: auto;
    pointer-events: none;
  }
  .collection-detail-float-bar .detail-float-back {
    pointer-events: all;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    padding: 0;
    font-size: 0;
    gap: 0;
    cursor: pointer;
    border: var(--border);
    border-radius: 50%;
    background: var(--white);
    color: var(--black);
    box-shadow: none;
    transition: transform var(--t), box-shadow var(--t);
  }
  .collection-detail-float-bar .detail-float-back:active { opacity: 0.7; }
  .collection-detail-float-bar .detail-float-back .material-symbols-outlined { font-size: 28px; }
  .section-collection-detail-recipes { padding: 24px 20px; }
}

@media (min-width: 769px) {
  .collection-detail-float-bar {
    bottom: 32px;
    padding: 0 40px;
    gap: 12px;
  }
  .collection-detail-float-bar .detail-float-back {
    pointer-events: all;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 48px;
    padding: 0 20px 0 14px;
    font-family: 'Manrope', sans-serif;
    font-size: 0.8rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    cursor: pointer;
    background: var(--white);
    color: var(--black);
    border: var(--border);
    border-radius: var(--radius-pill);
    box-shadow: none;
    transition: transform var(--t), box-shadow var(--t);
  }
  .collection-detail-float-bar .detail-float-back:hover { transform: translate(-2px,-2px); box-shadow: var(--neo-shadow-sm); }
  .collection-detail-float-bar .detail-float-back .material-symbols-outlined { font-size: 18px; }
}

@media (max-width: 768px) {
  .collection-detail-hero { padding: 28px 16px 24px; }
  .collection-detail-hero-actions { gap: 6px; }
  .card-remove-from-collection { width: 30px; height: 30px; }
  .card-remove-from-collection .material-symbols-outlined { font-size: 14px; }
}

/* ===== SHOPPING LIST MODAL ===== */
.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 200;
  padding: 20px;
  animation: modalBgIn 180ms ease-out both;
}
@keyframes modalBgIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.modal-card {
  background: var(--white);
  border: var(--border);
  border-radius: var(--radius-card);
  width: 100%;
  max-width: 520px;
  max-height: 82vh;
  display: flex;
  flex-direction: column;
  box-shadow: var(--neo-shadow);
  overflow: hidden;
  animation: modalCardIn 240ms cubic-bezier(0.34, 1.2, 0.64, 1) both;
  animation-delay: 30ms;
}
.modal-card-sm { max-width: 400px; }
.modal-confirm-body { padding: 20px 24px; }
.modal-confirm-text { font-size: 0.88rem; font-weight: 700; color: var(--black); line-height: 1.5; }
.modal-field-group { display: flex; flex-direction: column; gap: 6px; margin-bottom: 12px; }
.modal-field-group:last-child { margin-bottom: 0; }
.modal-field-label { font-size: 0.75rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; }
.modal-inline-error { font-size: 0.78rem; font-weight: 700; color: #c0392b; margin: 4px 0 0; }
@keyframes modalCardIn {
  from { opacity: 0; transform: scale(0.93) translateY(10px); }
  to   { opacity: 1; transform: scale(1) translateY(0); }
}

.modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 24px 14px;
  border-bottom: var(--border);
  background: var(--hero-purple);
  flex-shrink: 0;
}
.modal-header h3 {
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.modal-body { flex: 1; overflow-y: auto; }

.modal-footer {
  padding: 14px 24px 16px;
  border-top: var(--border);
  display: flex;
  flex-direction: column;
  gap: 10px;
  flex-shrink: 0;
}

.todo-list-row { display: flex; align-items: center; gap: 10px; }
.todo-list-label {
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: rgba(0,0,0,0.5);
  white-space: nowrap;
  flex-shrink: 0;
}
.todo-list-input {
  flex: 1;
  padding: 9px 12px;
  font-size: 0.875rem;
  border: var(--border);
  border-radius: var(--radius-sm);
  background: var(--white);
  font-family: 'Manrope', sans-serif;
  font-weight: 700;
  color: var(--black);
  outline: none;
  box-shadow: var(--neo-shadow-sm);
}
.todo-list-input:focus { box-shadow: 4px 4px 0 0 var(--primary-pink); }
.modal-footer-actions { display: flex; gap: 8px; justify-content: flex-end; }

/* Shopping modal recipe rows */
.shopping-recipes { padding: 8px 24px 4px; }
.shopping-recipe-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 0;
  border-bottom: 2px solid rgba(0,0,0,0.08);
  gap: 12px;
}
.shopping-recipe-row:last-child { border-bottom: none; }
.shopping-recipe-name {
  font-size: 0.875rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.shopping-servings {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
}
.shopping-servings button {
  width: 28px;
  height: 28px;
  border: var(--border);
  background: var(--white);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 2px 2px 0 0 #000;
  transition: transform var(--t), box-shadow var(--t);
}
.shopping-servings button:hover { transform: translate(1px,1px); box-shadow: none; }
.shopping-servings button .material-symbols-outlined { font-size: 15px; }
.shopping-servings > span {
  font-size: 0.78rem;
  font-weight: 800;
  color: rgba(0,0,0,0.6);
  min-width: 60px;
  text-align: center;
  text-transform: uppercase;
}

.shopping-section-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(0,0,0,0.4);
  padding: 14px 24px 8px;
  border-top: 2px solid rgba(0,0,0,0.08);
}
.shopping-section-label .material-symbols-outlined { font-size: 15px; }

.shopping-ing-list {
  list-style: none;
  padding: 0 24px 16px;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.shopping-ing-list li {
  font-size: 0.875rem;
  font-weight: 700;
  color: var(--black);
  padding: 7px 12px;
  background: var(--hero-purple);
  border: var(--border-sm);
  line-height: 1.4;
}
.shopping-ing-empty {
  color: rgba(0,0,0,0.4);
  background: transparent !important;
  border: none !important;
}

/* ===== SHOPPING LIST VIEW ===== */

/* Hero — mirrors .settings-hero exactly */
.shopping-hero {
  background: var(--hero-purple);
  padding: 48px 32px 36px;
  position: relative;
  overflow: hidden;
  border-bottom: var(--border);
}
.shopping-hero > *:not(.view-hero-grid-pattern):not(.deco-img) { position: relative; z-index: 1; }
.shopping-hero-inner {
  max-width: 1200px;
  margin: 0 auto;
}

/* Content section — mirrors .settings-content but uses accent-green background */
.shopping-content {
  background: var(--section-pink);
  padding: 32px;
  position: relative;
  overflow: visible;
}
.shopping-content::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(to right, rgba(255,255,255,0.20) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255,255,255,0.20) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
}

/* Sidebar + main grid */
.shopping-content-grid {
  max-width: 1200px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: 24px;
  align-items: start;
  position: relative;
  z-index: 1;
}

/* LEFT SIDEBAR */
.shopping-sidebar {
  display: flex;
  flex-direction: column;
  gap: 16px;
  position: sticky;
  top: calc(var(--header-h) + 24px);
}

.shopping-sidebar-card {
  background: var(--white);
  border: var(--border);
  border-radius: var(--radius-card);
  padding: 20px;
  box-shadow: var(--neo-shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.shopping-sidebar-card-header {
  display: flex;
  align-items: center;
  gap: 8px;
}
.shopping-sidebar-card-header .material-symbols-outlined { font-size: 20px; }
.shopping-sidebar-card-title {
  font-size: 0.78rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0;
}

.shopping-sidebar-card .btn-primary,
.shopping-sidebar-card .btn-secondary,
.shopping-sidebar-card .btn-ghost { width: 100%; justify-content: center; }

/* Inline add row at the top of the list */
.shopping-inline-add {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-bottom: 4px;
}
.shopping-inline-add input { flex: 1; min-width: 0; }
.shopping-inline-add-btn {
  flex-shrink: 0;
  width: 42px;
  height: 42px;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-pill);
}

/* MAIN LIST AREA */
.shopping-main {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
}

.shopping-main-header {
  padding-bottom: 12px;
  border-bottom: var(--border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px;
  min-height: 38px; /* stable height prevents layout jump between modes */
}

.shopping-select-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  justify-content: flex-end;
}

/* Selection mode items */
.shopping-item-selectable {
  cursor: pointer;
  user-select: none;
}
.shopping-item-selectable:hover {
  transform: translate(-2px, -2px);
  box-shadow: var(--neo-shadow);
}
.shopping-item-bulk-selected {
  background: var(--card-subtle-blue);
}
.shopping-item-select-check {
  width: 26px;
  height: 26px;
  min-width: 26px;
  border: var(--border);
  border-radius: var(--radius-sm);
  background: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background 0.1s;
}
.shopping-item-select-check-on {
  background: var(--black);
  color: var(--white);
}
.shopping-item-select-check .material-symbols-outlined {
  font-size: 14px;
  font-variation-settings: 'FILL' 1;
}

.shopping-count {
  font-size: 0.75rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: rgba(0,0,0,0.45);
}

/* LIST ITEMS */
.shopping-items-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.shopping-item {
  display: flex;
  align-items: center;
  gap: 12px;
  background: var(--white);
  border: var(--border);
  border-radius: var(--radius-pill);
  padding: 10px 14px 10px 12px;
  box-shadow: var(--neo-shadow-sm);
  transition: transform 0.12s, box-shadow 0.12s, opacity 0.2s;
}
.shopping-item:hover {
  transform: translate(-2px, -2px);
  box-shadow: var(--neo-shadow);
}
.shopping-item-checked {
  opacity: 0.42;
}
.shopping-item-checked .shopping-item-title {
  text-decoration: line-through;
  color: rgba(0,0,0,0.5);
}

.shopping-item-checkbox {
  width: 26px;
  height: 26px;
  min-width: 26px;
  border: var(--border);
  border-radius: var(--radius-sm);
  background: white;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: none;
  transition: background 0.12s, transform 0.1s;
  padding: 0;
}
.shopping-item-checkbox:hover {
  transform: translate(-1px, -1px);
  box-shadow: 2px 2px 0 0 #000;
}
.shopping-item-checked .shopping-item-checkbox {
  background: var(--accent-green);
}
.shopping-item-checkbox .material-symbols-outlined {
  font-size: 14px;
  font-variation-settings: 'FILL' 1;
}

.shopping-item-title {
  flex: 1;
  min-width: 0;
  overflow-wrap: break-word;
  word-break: break-word;
  font-size: 0.9rem;
  font-weight: 700;
  line-height: 1.3;
}

.shopping-item-delete {
  width: 28px;
  height: 28px;
  min-width: 28px;
  border: none;
  background: transparent;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(0,0,0,0.28);
  border-radius: 50%;
  transition: color 0.12s, background 0.12s;
  padding: 0;
}
.shopping-item-delete:hover {
  color: #c0392b;
  background: rgba(192, 57, 43, 0.08);
}
.shopping-item-delete .material-symbols-outlined { font-size: 16px; }

/* EMPTY STATE */
.shopping-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 60px 24px;
  gap: 10px;
}
.shopping-empty-icon {
  font-size: 48px;
  opacity: 0.22;
}
.shopping-empty-text {
  font-weight: 800;
  font-size: 1rem;
  text-transform: uppercase;
  letter-spacing: -0.02em;
  margin: 0;
}
.shopping-empty-sub {
  font-size: 0.82rem;
  color: rgba(0,0,0,0.48);
  max-width: 280px;
  line-height: 1.55;
  margin: 0;
}

/* Mobile: stack sidebar above list */
@media (max-width: 768px) {
  .shopping-hero { padding: 28px 16px 24px; }
  .shopping-content { padding: 20px 16px; }
  .shopping-content-grid {
    grid-template-columns: 1fr;
  }
  .shopping-sidebar {
    position: static;
  }
}

/* ===== COLLECTION MANAGER MODAL ===== */
.collection-check-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 24px;
  cursor: pointer;
  font-size: 0.875rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--black);
  border-bottom: 2px solid rgba(0,0,0,0.08);
  transition: background var(--t);
}
.collection-check-row:last-child { border-bottom: none; }
.collection-check-row:hover { background: rgba(209,196,255,0.3); }
.collection-check-row input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--primary-pink); flex-shrink: 0; }
.collection-check-row .material-symbols-outlined {
  font-size: 18px;
  color: var(--primary-pink);
  font-variation-settings: 'FILL' 1, 'wght' 700;
}
.collection-manager-empty { padding: 24px; text-align: center; color: rgba(0,0,0,0.4); font-size: 0.875rem; font-weight: 700; }

/* ===== iOS INSTALL BANNER ===== */
.ios-install-banner {
  position: fixed;
  bottom: calc(80px + env(safe-area-inset-bottom));
  left: 12px;
  right: 12px;
  background: var(--black);
  color: var(--white);
  border: var(--border);
  border-radius: var(--radius-md);
  padding: 14px 16px;
  display: flex;
  align-items: center;
  gap: 12px;
  z-index: 150;
  box-shadow: var(--neo-shadow);
  animation: bannerSlideUp 300ms ease-out both;
}
@keyframes bannerSlideUp {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}
.ios-banner-icon {
  font-size: 24px;
  color: var(--primary-pink);
  flex-shrink: 0;
  font-variation-settings: 'FILL' 1, 'wght' 700;
}
.ios-install-banner p {
  flex: 1;
  font-size: 0.8rem;
  font-weight: 700;
  line-height: 1.45;
  color: rgba(255,255,255,0.85);
  margin: 0;
}
.ios-install-banner strong { color: var(--white); }
.ios-banner-dismiss {
  flex-shrink: 0;
  background: rgba(255,255,255,0.1);
  border: 2px solid rgba(255,255,255,0.3);
  border-radius: var(--radius-sm);
  width: 30px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: rgba(255,255,255,0.6);
}
.ios-banner-dismiss .material-symbols-outlined { font-size: 16px; }

/* ===== MOBILE BREAKPOINT ===== */
@media (max-width: 768px) {
  /* Prevent iOS auto-zoom on input focus — requires font-size >= 16px */
  input[type="text"],
  input[type="number"],
  input[type="email"],
  input[type="password"],
  input[type="url"],
  textarea,
  select { font-size: 1rem !important; }

  /* Suppress all ::after tooltips — no hover on touch */
  .card-private-badge::after,
  .card-tm-badge::after,
  .card-collection-btn::after,
  .card-shopping-btn::after,
  .collection-tag-popover-btn::after,
  #btn-popover-goto::after,
  #btn-popover-remove::after,
  #btn-cat-popover-filter::after,
  #btn-cat-popover-remove::after,
  #btn-tm-popover-edit::after,
  #btn-tm-popover-delete::after { display: none; }

  /* Hide desktop nav on mobile */
  .header-desktop-nav,
  .header-nav { display: none; }

  /* Add bottom nav padding */
  .main-content { padding-bottom: calc(72px + env(safe-area-inset-bottom)); }

  /* Tighter view padding */
  .view { padding: 20px 16px; }

  /* Show bottom nav */
  .bottom-nav { display: flex; }

  /* Recipe grid: single column — minmax(0,1fr) prevents grid items from overflowing their track */
  .recipe-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
  }

  /* Hero tighter on mobile */
  .view-hero { padding: 28px 16px 20px; text-align: left; }
  .display-heading { font-size: clamp(1.9rem, 9vw, 2.8rem); white-space: normal; }
  .search-bar { margin-bottom: 20px; }
  .search-bar input[type="text"] { padding: 14px 8px 14px 18px; font-size: 1rem; }
  .search-icon-right { font-size: 20px; padding-right: 14px; }
  /* Chips: horizontally scrollable on mobile */
  .view-hero .category-filters {
    flex-wrap: nowrap;
    justify-content: flex-start;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    max-width: none;
    padding-bottom: 4px;
  }
  .view-hero .category-filters::-webkit-scrollbar { display: none; }
  .cat-chip { flex-shrink: 0; }

  /* Detail view */
  .detail-title-block { flex-direction: column; align-items: flex-start; gap: 12px; }
  .detail-title-block h2 { margin-bottom: 10px; }
  .detail-actions { flex-wrap: wrap; }
  .detail-sections { grid-template-columns: 1fr; }

  /* Form */
  .form-card { padding: 18px 20px; border-radius: var(--radius-md); }
  .form-hero { padding: 12px 16px; }
  .form-hero-title { font-size: 1.25rem; }
  .form-hero-actions .btn-secondary { display: inline-flex; }
  .import-row { flex-direction: column; }
  .btn-import { width: 100%; justify-content: center; }

  /* Cook mode — mobile: compact header, icon-only buttons */
  .cook-header { padding: 10px 12px; padding-top: calc(10px + env(safe-area-inset-top)); gap: 8px; }
  .cook-exit-btn { padding: 8px; font-size: 0; gap: 0; }
  .cook-exit-btn .material-symbols-outlined { font-size: 18px; }
  .cook-ing-toggle-btn { display: inline-flex; padding: 8px; font-size: 0; gap: 0; }
  .cook-ing-toggle-btn .material-symbols-outlined { font-size: 18px; }
  .cook-sidebar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    width: auto;
    max-height: 55vh;
    border-right: none;
    border-top: var(--border);
    border-radius: var(--radius-card) var(--radius-card) 0 0;
    box-shadow: 0 -4px 0 0 #000;
    z-index: 20;
    transform: translateY(100%);
    transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1);
  }
  #view-cook.cook-ing-open .cook-sidebar {
    transform: translateY(0);
  }
  .cook-body { padding: 20px 20px 16px; }
  .cook-step-card { padding: 24px; }
  .cook-step-card { border-radius: var(--radius-md); }
  .cook-progress-section { padding: 0 20px 8px; }
  .cook-recipe-pill { padding: 12px 20px 0; }

  /* Collections */
  .collections-hero { padding: 28px 16px 24px; }
  .collections-hero-inner { flex-direction: column; align-items: flex-start; gap: 16px; }
  .collections-hero-title-block { flex-direction: column; align-items: flex-start; gap: 8px; }
  .collections-hero-btn { align-self: flex-start; }
  .section-collections-grid { padding: 24px 20px; overflow-x: hidden; }
  .collections-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 14px; }

  /* Login — stacked layout on mobile */
  .login-split { flex-direction: column; }
  .login-brand {
    flex: 0 0 auto;
    min-height: 200px;
    padding: 32px 24px 28px;
    justify-content: flex-end;
  }
  .login-brand-title { font-size: clamp(2.8rem, 14vw, 4.5rem); margin-bottom: 12px; }
  .login-deco { width: 110px; top: 16px; right: 16px; }
  .login-form-panel {
    width: 100%;
    flex: 1;
    border-left: none;
    border-top: var(--border);
    padding: 32px 24px 40px;
    animation: none;
    align-items: flex-start;
  }
  .login-form-heading { font-size: 1.5rem; }
  .login-form-sub { margin-bottom: 24px; }

  /* Display heading smaller on mobile */
  .display-heading { font-size: clamp(2rem, 12vw, 3rem); }

  /* Hero section */
  .view-hero { padding: 32px 20px 24px; }
  .section-recipes { padding: 24px 20px; }
  .section-community { padding: 24px 20px; }
}

/* ═══════════════════════════════════════════
   TOAST NOTIFICATIONS
   ═══════════════════════════════════════════ */
.toast-container {
  position: fixed;
  bottom: 24px;
  right: 24px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  z-index: 500;
  pointer-events: none;
}

.toast {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px 12px 16px;
  border-radius: var(--radius-md);
  border: var(--border);
  box-shadow: var(--neo-shadow-sm);
  width: 320px;
  pointer-events: all;
  animation: toastInRight 280ms cubic-bezier(0.34, 1.56, 0.64, 1) both;
}
.toast.toast-out {
  animation: toastOutRight 280ms ease-in both;
}

.toast-success { background: var(--accent-green); }
.toast-error   { background: #FFB3B3; }
.toast-warning { background: var(--accent-yellow); }

.toast-icon {
  font-size: 20px;
  flex-shrink: 0;
  margin-top: 1px;
  font-variation-settings: 'FILL' 1;
}

.toast-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.toast-message {
  font-weight: 700;
  font-size: 0.82rem;
  line-height: 1.3;
}

.toast-detail {
  font-size: 0.72rem;
  opacity: 0.65;
  line-height: 1.3;
  word-break: break-word;
}

.toast-close {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: inherit;
  display: flex;
  align-items: center;
  flex-shrink: 0;
  opacity: 0.55;
  transition: opacity var(--t);
}
.toast-close:hover { opacity: 1; }
.toast-close .material-symbols-outlined { font-size: 18px; }

@keyframes toastInRight {
  from { transform: translateX(120%); opacity: 0; }
  to   { transform: translateX(0);    opacity: 1; }
}
@keyframes toastOutRight {
  from { transform: translateX(0);    opacity: 1; }
  to   { transform: translateX(120%); opacity: 0; }
}
@keyframes toastInUp {
  from { transform: translateY(40px); opacity: 0; }
  to   { transform: translateY(0);    opacity: 1; }
}
@keyframes toastOutDown {
  from { transform: translateY(0);    opacity: 1; }
  to   { transform: translateY(40px); opacity: 0; }
}

@media (max-width: 768px) {
  .toast-container {
    bottom: calc(64px + env(safe-area-inset-bottom) + 12px);
    right: 12px;
    left: 12px;
  }
  .toast {
    width: 100%;
    animation: toastInUp 280ms cubic-bezier(0.34, 1.56, 0.64, 1) both;
  }
  .toast.toast-out {
    animation: toastOutDown 280ms ease-in both;
  }
}

/* ═══════════════════════════════════════════
   PRINT / PDF EXPORT
   ═══════════════════════════════════════════ */
@media print {
  /* Hide everything except the active detail view */
  .app-sidebar,
  .bottom-nav,
  .app-header,
  .app-footer,
  .detail-float-bar,
  .detail-actions,
  .detail-manage-btn,
  .detail-collections-row,
  .servings-adjuster,
  #ingredients-reset-btn,
  .deco-img,
  .view-hero-grid-pattern,
  .ios-install-banner,
  #loading-overlay,
  .toast-container,
  .modal-overlay {
    display: none !important;
  }

  /* Show only the detail view, reset layout */
  body, html { margin: 0; padding: 0; background: #fff; }
  .app-shell { display: block; }
  .main-content { margin-left: 0 !important; }

  #view-detail {
    display: block !important;
  }

  /* Hero section: plain white, no grid, no big padding */
  .detail-hero-section {
    background: #fff !important;
    display: flex;
    flex-direction: row;
    gap: 24px;
    padding: 24px 0 16px;
    border-bottom: 2px solid #000;
    page-break-inside: avoid;
  }

  .detail-hero-left { flex: 1; }

  /* Image: fixed size, right side */
  .detail-hero-right {
    display: block !important;
    flex-shrink: 0;
    width: 180px;
  }
  .detail-hero-right img {
    width: 180px;
    height: 180px;
    object-fit: cover;
    border: 2px solid #000;
    border-radius: 12px;
  }

  /* Title */
  .detail-title {
    font-size: 22pt;
    margin: 4px 0 8px;
    text-transform: uppercase;
    letter-spacing: -0.02em;
  }

  /* Category chips: strip color, keep shape */
  .chip {
    background: #eee !important;
    box-shadow: none !important;
    border: 1px solid #000 !important;
  }

  /* Info pills */
  .info-pill {
    background: #eee !important;
    box-shadow: none !important;
    border: 1px solid #000 !important;
  }

  /* Stars */
  .star-rating-interactive { pointer-events: none; }

  /* Content section: no background colour, no shadows */
  .detail-content-section {
    background: #fff !important;
    padding: 16px 0 0;
  }

  .detail-content-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px;
  }

  /* Cards: simple bordered boxes */
  .ingredients-card,
  .detail-notes-card {
    background: #fff !important;
    box-shadow: none !important;
    border: 1px solid #ccc !important;
    border-radius: 8px !important;
    padding: 12px 16px !important;
  }

  /* Section headings */
  .detail-section-heading {
    font-size: 13pt;
    margin-bottom: 8px;
  }

  /* Steps */
  .step-item {
    box-shadow: none !important;
    border: 1px solid #ddd !important;
    background: #fff !important;
    page-break-inside: avoid;
  }

  /* Private badge */
  .detail-private-badge {
    background: #eee !important;
    box-shadow: none !important;
  }

  /* Source link */
  .detail-source { font-size: 8pt; color: #666; }

  /* Ensure page doesn't cut steps awkwardly */
  .detail-steps-list { page-break-inside: auto; }
  .step-item { page-break-inside: avoid; }
}

/* ═══════════════════════════════════════════
   MOBILE UX REWORK — NEW COMPONENTS
   ═══════════════════════════════════════════ */

/* Suppress FAB transitions during view switches so they appear/disappear instantly */
.fab-no-transition { transition: none !important; }

/* ── FAB (Floating Action Button) — Add Recipe ── */
.fab-add {
  display: none; /* Desktop: hidden; JS shows it on mobile list view */
}
@media (max-width: 768px) {
  .fab-add {
    position: fixed;
    bottom: calc(64px + env(safe-area-inset-bottom) + 16px);
    right: 20px;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: var(--primary-pink);
    color: var(--black);
    border: var(--border);
    box-shadow: none;
    z-index: 94;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: transform var(--t), box-shadow var(--t), opacity var(--t);
    -webkit-tap-highlight-color: transparent;
  }
  .fab-add:hover { transform: translate(-2px, -2px); box-shadow: var(--neo-shadow-sm); }
  .fab-add .material-symbols-outlined { font-size: 28px; font-variation-settings: 'FILL' 1, 'wght' 900, 'GRAD' 0, 'opsz' 24; }
  .fab-add.fab-hidden {
    opacity: 0;
    pointer-events: none;
    transform: scale(0.85) translateY(8px);
  }
}

/* ── Floating pill — Neue Sammlung ── */
.fab-new-collection {
  /* Desktop: fixed pill matching Koch-Modus style */
  position: fixed;
  bottom: 32px;
  right: 40px;
  z-index: 94;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 48px;
  padding: 0 24px 0 16px;
  background: var(--primary-pink);
  color: var(--black);
  border: var(--border);
  border-radius: var(--radius-pill);
  font-family: 'Manrope', sans-serif;
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  cursor: pointer;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t), opacity var(--t);
}
.fab-new-collection:hover { transform: translate(-2px,-2px); box-shadow: var(--neo-shadow-sm); }
.fab-new-collection .material-symbols-outlined { font-size: 20px; font-variation-settings: 'FILL' 1, 'wght' 900, 'GRAD' 0, 'opsz' 24; }
.fab-new-collection.fab-hidden { opacity: 0; pointer-events: none; }

@media (max-width: 768px) {
  .fab-new-collection {
    /* Mobile: circle FAB above bottom nav, same as fab-add */
    bottom: calc(64px + env(safe-area-inset-bottom) + 16px);
    right: 20px;
    width: 56px;
    height: 56px;
    padding: 0;
    border-radius: 50%;
    justify-content: center;
    box-shadow: none;
    font-size: 0;        /* hide text */
    gap: 0;
  }
  .fab-new-collection .material-symbols-outlined { font-size: 28px; font-variation-settings: 'FILL' 1, 'wght' 900, 'GRAD' 0, 'opsz' 24; }
  .fab-new-collection:hover { transform: translate(-2px,-2px); box-shadow: var(--neo-shadow-sm); }
  .fab-new-collection.fab-hidden { transform: scale(0.85) translateY(8px); }
}

/* ── Floating Bearbeiten button (collection-detail view) ── */
.fab-collection-edit {
  /* Desktop: fixed pill matching Koch-Modus / Neue Sammlung style */
  position: fixed;
  bottom: 32px;
  right: 40px;
  z-index: 94;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 48px;
  padding: 0 24px 0 16px;
  background: var(--primary-pink);
  color: var(--black);
  border: var(--border);
  border-radius: var(--radius-pill);
  font-family: 'Manrope', sans-serif;
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  cursor: pointer;
  box-shadow: none;
  transition: transform var(--t), box-shadow var(--t), opacity var(--t);
}
.fab-collection-edit:hover { transform: translate(-2px,-2px); box-shadow: var(--neo-shadow-sm); }
.fab-collection-edit .material-symbols-outlined { font-size: 20px; }
.fab-collection-edit.fab-hidden { opacity: 0; pointer-events: none; }

@media (max-width: 768px) {
  .fab-collection-edit {
    bottom: calc(64px + env(safe-area-inset-bottom) + 16px);
    right: 20px;
    width: 56px;
    height: 56px;
    padding: 0;
    border-radius: 50%;
    justify-content: center;
    box-shadow: none;
    font-size: 0;
    gap: 0;
  }
  .fab-collection-edit .material-symbols-outlined { font-size: 28px; }
  .fab-collection-edit:hover { transform: translate(-2px,-2px); box-shadow: var(--neo-shadow-sm); }
  .fab-collection-edit.fab-hidden { transform: scale(0.85) translateY(8px); }
}

/* ── View transition animations (mobile only) ── */
@media (max-width: 768px) {
  .view-enter-forward { animation: mobileSlideInRight 220ms cubic-bezier(0.4, 0, 0.2, 1) both; }
  .view-enter-back    { animation: mobileSlideInLeft  220ms cubic-bezier(0.4, 0, 0.2, 1) both; }
}
@keyframes mobileSlideInRight {
  from { opacity: 0; transform: translateX(32px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes mobileSlideInLeft {
  from { opacity: 0; transform: translateX(-32px); }
  to   { opacity: 1; transform: translateX(0); }
}
@media (prefers-reduced-motion: reduce) {
  .view-enter-forward,
  .view-enter-back { animation: none; }
}

/* ── Detail view: mobile action overflow ── */
.detail-more-btn {
  display: none; /* Only shown on mobile */
}
@media (max-width: 768px) {
  /* Compact the action buttons on mobile into a scrollable row */
  .detail-actions {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 2px;
  }
  .detail-actions::-webkit-scrollbar { display: none; }
  .detail-btn {
    height: 40px;
    padding: 0 12px;
    font-size: 0.72rem;
    white-space: nowrap;
    flex-shrink: 0;
  }
  /* "..." more button visible on mobile */
  .detail-more-btn {
    display: flex;
    flex-shrink: 0;
    width: 40px;
    height: 40px;
  }
  /* Overflow actions hidden from main row on mobile (shown in popover) */
  .detail-action-overflow { display: none !important; }
}

/* Detail more popover */
.detail-more-popover {
  position: fixed;
  background: rgba(255, 255, 255, 0.55);
  backdrop-filter: blur(16px) saturate(1.6);
  -webkit-backdrop-filter: blur(16px) saturate(1.6);
  border: 1.5px solid rgba(255, 255, 255, 0.65);
  border-radius: var(--radius-md);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
  padding: 8px;
  z-index: 400;
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 180px;
}
.detail-more-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border: 1.5px solid rgba(0, 0, 0, 0.1);
  border-radius: var(--radius-sm);
  background: rgba(255, 255, 255, 0.95);
  font-family: 'Manrope', sans-serif;
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  cursor: pointer;
  transition: background var(--t), border-color var(--t), transform var(--t);
  -webkit-tap-highlight-color: transparent;
}
.detail-more-item:hover {
  background: rgba(0, 0, 0, 0.06);
  border-color: rgba(0, 0, 0, 0.2);
  transform: scale(1.02);
}
.detail-more-item .material-symbols-outlined { font-size: 18px; }

/* ── Cook mode: swipe hint ── */
.cook-swipe-hint {
  position: absolute;
  bottom: 100px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(0, 0, 0, 0.55);
  color: var(--white);
  border-radius: var(--radius-pill);
  padding: 8px 16px;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.4s ease;
  z-index: 5;
  /* Hidden by default — JS sets display:flex and adds .hint-visible */
  display: none;
}
.cook-swipe-hint.hint-visible { opacity: 1; }
.cook-swipe-hint .material-symbols-outlined { font-size: 16px; }
@media (min-width: 769px) {
  .cook-swipe-hint { display: none !important; }
}

/* ── Cook mode: drag handle on ingredient sheet ── */
.cook-drag-handle {
  display: none;
  width: 36px;
  height: 4px;
  background: rgba(0, 0, 0, 0.2);
  border-radius: 2px;
  margin: 10px auto 0;
  flex-shrink: 0;
}
@media (max-width: 768px) {
  .cook-drag-handle { display: block; }
  .cook-sidebar-header { padding-top: 8px; }
}
