/* Apron & Olive V7.9 barcode integration */
.ao-barcode-trigger{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:44px;height:44px;min-width:44px;border:1px solid currentColor;border-radius:12px;background:transparent;color:inherit;cursor:pointer;opacity:.85;transition:opacity .15s,background .15s}
.ao-barcode-trigger:hover,.ao-barcode-trigger:focus-visible{opacity:1;background:rgba(178,139,82,.1)}
.ao-barcode-inline{display:flex;align-items:center;gap:9px;min-width:0}
.ao-barcode-inline > .ingredient-autocomplete-container, .ao-barcode-inline > label{flex:1;min-width:0}
.ao-barcode-inline > label input{width:100%}
.ao-barcode-backdrop{position:fixed;inset:0;z-index:2147483600;background:rgba(18,15,12,.72);display:flex;align-items:center;justify-content:center;padding:14px;overflow-y:auto}
.ao-barcode-dialog{box-sizing:border-box;width:min(100%,510px);max-height:min(92dvh,850px);overflow:auto;background:var(--card,#faf6ef);color:var(--text,#2c241c);border:1px solid rgba(169,132,79,.35);border-radius:20px;padding:22px;box-shadow:0 24px 90px rgba(0,0,0,.25)}
.ao-barcode-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.ao-barcode-header h2{margin:0;font-size:1.35rem}.ao-barcode-close{width:44px;height:44px;min-width:44px;font-size:28px;border:0;background:transparent;color:inherit;cursor:pointer}.ao-barcode-dialog p{line-height:1.5}
.ao-barcode-video{position:relative;background:#181818;border-radius:14px;overflow:hidden;aspect-ratio:16/9;margin:15px 0}.ao-barcode-video video{width:100%;height:100%;object-fit:cover}.ao-barcode-reticle{position:absolute;inset:22% 15%;border:2px solid #e4c38a;border-radius:9px;pointer-events:none}
.ao-barcode-camera{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:44px}.ao-barcode-form{margin-top:20px}.ao-barcode-form label,.ao-barcode-dialog [data-result] label{display:block;font-weight:600;margin:0 0 8px}.ao-barcode-form>div{display:flex;gap:8px}.ao-barcode-form input,.ao-barcode-dialog [data-result] input{width:100%;min-width:0;box-sizing:border-box;padding:11px;border-radius:9px;border:1px solid #b8a990;background:transparent;color:inherit;font-size:16px}.ao-barcode-form button{flex-shrink:0}.ao-barcode-status{min-height:20px;font-size:.9rem}.ao-barcode-product{display:flex;align-items:center;gap:12px;padding:10px 0 18px}.ao-barcode-product img{width:80px;height:80px;object-fit:contain;border-radius:9px}.ao-barcode-product p{margin:4px 0}.ao-barcode-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.ao-barcode-actions button{min-height:44px}.ao-barcode-open{overflow:hidden}
@media(max-width:480px){.ao-barcode-dialog{padding:16px}.ao-barcode-form>div{flex-wrap:wrap}.ao-barcode-form button{width:100%}}

/* V7.9.1: Search actions anchored to the input's trailing edge. */
.ao-barcode-inline:has(> .ingredient-autocomplete-container){position:relative;display:block;width:100%;min-width:0}
.ao-barcode-inline:has(> .ingredient-autocomplete-container) > .ingredient-autocomplete-container{width:100%;min-width:0}
.ao-barcode-inline:has(> .ingredient-autocomplete-container) .ingredient-autocomplete-input-wrap{width:100%}
.ao-barcode-inline:has(> .ingredient-autocomplete-container) .ingredient-autocomplete-input-wrap input{width:100%;padding-right:104px;box-sizing:border-box}
.ao-barcode-inline:has(> .ingredient-autocomplete-container) .autocomplete-add-btn{position:absolute;right:54px;top:50%;transform:translateY(-50%);width:44px;height:44px;min-width:44px;min-height:44px;padding:0;z-index:2;border-radius:10px}
.ao-barcode-inline:has(> .ingredient-autocomplete-container) .autocomplete-add-btn:hover{transform:translateY(-50%)}
.ao-barcode-inline:has(> .ingredient-autocomplete-container) > .ao-barcode-trigger{position:absolute;right:6px;top:50%;transform:translateY(-50%);z-index:2;width:44px;height:44px;border:0;border-radius:10px;color:var(--gold,#b28b52);opacity:1}
.ao-barcode-inline:has(> .ingredient-autocomplete-container) > .ao-barcode-trigger:focus-visible,.ao-barcode-inline:has(> .ingredient-autocomplete-container) .autocomplete-add-btn:focus-visible{outline:2px solid var(--gold,#b28b52);outline-offset:1px}
/* Quiet, decorative preview animation; camera remains off until the user taps Start. */
.ao-barcode-video.ao-barcode-idle{background:radial-gradient(ellipse at 50% 40%,#33302b 0%,#1c1b1a 65%,#151413 100%)}
.ao-barcode-video.ao-barcode-idle::before{content:"";position:absolute;z-index:1;left:15%;right:15%;top:22%;height:2px;background:linear-gradient(90deg,transparent,rgba(229,192,125,.85),transparent);box-shadow:0 0 14px rgba(229,192,125,.55);animation:ao-barcode-idle-sweep 3.4s ease-in-out infinite alternate;pointer-events:none}
.ao-barcode-video.ao-barcode-idle::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 13px,rgba(229,192,125,.025) 14px 15px);pointer-events:none}
.ao-barcode-video.ao-barcode-idle .ao-barcode-reticle{border-color:#d9b67a;box-shadow:0 0 18px rgba(213,169,95,.10)}
@keyframes ao-barcode-idle-sweep{from{top:24%;opacity:.5}to{top:74%;opacity:1}}
@media(prefers-reduced-motion:reduce){.ao-barcode-video.ao-barcode-idle::before{animation:none;top:50%}}
