/* Iedere bevestigingsbalk in een invoerscherm blijft bereikbaar. */
dialog .dialog-body:has(.dialog-actions){padding-bottom:116px}
dialog .dialog-actions{position:fixed;z-index:45;left:50%;bottom:calc(24px + var(--browser-bottom));width:min(calc(100dvw - 24px),520px);margin:0;padding:11px 12px max(11px,env(safe-area-inset-bottom));transform:translateX(-50%);border:1px solid var(--line);border-radius:17px;background:rgba(255,255,255,.98);box-shadow:0 14px 35px rgba(24,57,49,.2)}
dialog .dialog-actions .primary{box-shadow:none}

/* Alleen bij de fotoschatting volgt de bevestiging na alle herkende producten. */
#photoMealDialog .dialog-body:has(.dialog-actions){padding-bottom:22px}
#photoMealDialog .dialog-actions{position:static;left:auto;bottom:auto;width:auto;margin:18px 0 0;padding:0 0 max(2px,env(safe-area-inset-bottom));transform:none;border:0;border-radius:0;background:transparent;box-shadow:none}

/* Scannerknoppen horen binnen het venster, zonder zwevende invoerbalk. */
#scannerDialog{max-height:calc(100dvh - 24px)}
#scannerDialog .scanner-wrap{height:clamp(150px,32dvh,260px)}
#scannerDialog .scanner-actions{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin-top:14px}
#scannerDialog .scanner-actions>button{width:100%;min-width:0;min-height:46px;white-space:normal}
#scannerRecovery>.link{display:block;width:100%;margin-top:6px;text-align:center;white-space:normal}
