/* Shared mobile card geometry for Django and Vue. */
.source-mobile-dish { min-width: 0; border-radius: 16px; background: #fff; box-shadow: var(--shadow-card); }
.source-mobile-dish--rail { display: flex; flex: 0 0 min(60vw, 224px); flex-direction: column; padding: 8px; scroll-snap-align: start; }
.source-mobile-dish--row { display: flex; min-height: 144px; gap: 12px; padding: 12px; }
.source-mobile-dish__media { position: relative; flex-shrink: 0; overflow: hidden; border-radius: 12px; background: var(--color-surface); }
.source-mobile-dish--rail .source-mobile-dish__media { width: 100%; aspect-ratio: 4 / 3; }
.source-mobile-dish--row .source-mobile-dish__media { width: 120px; height: 120px; }
.source-mobile-dish__image { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; border: 0; background: transparent; }
.source-mobile-dish__image:focus-visible { outline: 2px solid var(--primary-color); outline-offset: -4px; }
.source-mobile-dish__image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.source-mobile-dish__placeholder { display: grid; width: 100%; height: 100%; place-items: center; color: var(--color-muted-soft); font-size: 32px; }
.source-mobile-dish__unavailable { position: absolute; inset: 0; background: rgb(255 255 255 / 60%); }
.source-mobile-dish__labels { position: absolute; top: 8px; left: 8px; right: 54px; display: flex; flex-direction: column; align-items: flex-start; gap: 4px; pointer-events: none; }
.source-mobile-dish--row .source-mobile-dish__labels { right: 8px; }
.source-mobile-dish__labels span { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; border-radius: 6px; padding: 4px 6px; color: white; font-size: 10px; font-weight: 800; line-height: 1; }
.source-mobile-dish__discount { background: var(--color-label-sale); }
.source-mobile-dish__badge--hit { background: var(--color-label-hit); }
.source-mobile-dish__badge--new { background: var(--color-label-new); }
.source-mobile-dish__badge--bestseller { background: var(--color-label-best); }
.source-mobile-dish__badge--promo { background: var(--color-label-sale); }
.source-mobile-dish__heart, .source-mobile-dish__add { position: absolute; display: flex; align-items: center; justify-content: center; border: 0; background: rgb(255 255 255 / 95%); color: var(--color-ink); box-shadow: var(--shadow-card); }
.source-mobile-dish__heart { top: 8px; right: 8px; min-width: 38px; height: 38px; gap: 3px; border-radius: 24px; padding: 0 7px; font-size: 11px; font-weight: 700; }
.source-mobile-dish__heart-filled { color: #c32326; fill: currentColor; }
.source-mobile-dish__add { right: 8px; bottom: 8px; width: 32px; height: 32px; border-radius: 50%; }
.source-mobile-dish__add::after { position: absolute; inset: -6px; content: ''; }
.source-mobile-dish__add:disabled { color: var(--color-muted-soft); cursor: default; }
.source-mobile-dish__copy { display: flex; min-width: 0; flex-direction: column; }
.source-mobile-dish__copy--link { cursor: pointer; }
.source-mobile-dish__copy--link:focus-visible { outline: 2px solid var(--primary-color); outline-offset: 2px; }
.source-mobile-dish--rail .source-mobile-dish__copy { padding-top: 8px; }
.source-mobile-dish--row .source-mobile-dish__copy { flex: 1; }
.source-mobile-dish__prices { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; }
.source-mobile-dish--row .source-mobile-dish__prices { margin-top: auto; }
.source-mobile-dish__prices strong { color: var(--color-ink); font-size: 16px; font-weight: 800; }
.source-mobile-dish__prices strong.source-mobile-dish__sale { color: var(--color-label-sale); }
.source-mobile-dish__prices del { color: var(--color-muted); font-size: 16px; font-weight: 400; }
.source-mobile-dish__title { display: -webkit-box; overflow: hidden; padding: 0; border: 0; margin-top: 2px; background: transparent; color: var(--color-ink); font-size: 14px; font-weight: 700; line-height: 1.4; text-align: left; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.source-mobile-dish--row .source-mobile-dish__title { margin-top: 0; font-size: 15px; font-weight: 700; }
.source-mobile-dish__description { display: -webkit-box; overflow: hidden; margin: 2px 0 0; color: var(--color-muted); font-size: 13px; line-height: 1.35; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.source-mobile-dish__allergens { min-width: 0; overflow: hidden; margin: 4px 0 0; color: var(--color-muted); font-size: 12px; line-height: 18px; text-overflow: ellipsis; white-space: nowrap; }
.source-mobile-dish__allergens strong { font-weight: 600; }
.source-mobile-dish__likes { display: flex; align-items: center; gap: 3px; margin-top: 4px; color: var(--color-muted); font-size: 12px; }
.source-mobile-dish__stock { margin-top: 2px; color: var(--color-danger); font-size: 12px; font-weight: 700; }
@media (prefers-reduced-motion: reduce) { .source-mobile-dish * { transition: none !important; } }
[data-theme="dark"] .source-mobile-dish { background: #1c1c1e; }
[data-theme="dark"] .source-mobile-dish__heart, [data-theme="dark"] .source-mobile-dish__add { background: #343439; color: var(--color-ink); }

.source-mobile-dish{box-sizing:border-box;font:400 16px/1.5 EcommerceManrope,system-ui,sans-serif;}

.source-mobile-dish__allergen-anchor{position:absolute;left:8px;bottom:8px;z-index:2;}
.ec-server-allergen{display:flex;align-items:center;gap:4px;min-height:26px;padding:4px 6px;border:0;border-radius:8px;background:var(--body-color,#fff);color:var(--color-ink,#19191c);font:700 11px/16px EcommerceManrope,system-ui,sans-serif;}
