.scan-entry-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.scan-entry-actions button{display:flex;align-items:center;gap:8px;border:1px solid #d9cfe5;border-radius:10px;background:#faf7fd;color:#51327b;padding:11px 15px;font:600 14px var(--font-sans);min-height:44px;cursor:pointer}.food-scan-dialog{width:min(580px,calc(100% - 24px));max-height:calc(100dvh - 24px);margin:auto;padding:24px;border:1px solid #d9cfe5;border-radius:20px;background:var(--surface,#fff);color:var(--ink,#221b2b);overflow:auto;box-sizing:border-box}.food-scan-dialog::backdrop{background:#1f162b99;backdrop-filter:blur(3px)}.scan-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.scan-head h2{font-size:26px;margin:7px 0 15px;line-height:1.2}.scan-eyebrow{font-size:11px;letter-spacing:.12em;color:#785990;font-weight:700}.food-scan-dialog button,.food-scan-dialog input,.food-scan-dialog select{font:inherit;box-sizing:border-box}.food-scan-dialog button{border:1px solid #d9cfe5;border-radius:10px;padding:10px 14px;min-height:44px;background:#fff;color:#51327b;cursor:pointer}.food-scan-dialog #scanClose{font-size:26px;padding:0;min-width:44px}.food-scan-dialog label{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:600;margin:12px 0}.food-scan-dialog label span{font-weight:400;color:#76687c}.food-scan-dialog input:not([type=checkbox]),.food-scan-dialog select{width:100%;min-width:0;padding:11px;border:1px solid #cfc4d9;border-radius:8px;min-height:44px;background:#fff;color:#221b2b;font-size:16px}.food-scan-dialog .scan-primary{background:#51327b;color:#fff;border:1px solid #51327b;font-weight:600}.scan-lead{font-size:16px;line-height:1.5;margin:0 0 18px}.scan-hint,.scan-source{font-size:13px;line-height:1.55;color:#706477}.scan-source a{color:#51327b}.scan-label-tip,.scan-portion{background:#f4eef9;border-radius:12px;padding:14px;margin:14px 0}.scan-label-tip p{font-size:14px;margin:7px 0 0;line-height:1.5}.scan-nutrients{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.scan-actions{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0 4px}.scan-actions>*{flex:1}.scan-upload{border:1px dashed #b7a2ca;border-radius:10px;padding:14px;cursor:pointer}.food-scan-dialog .scan-upload input{font-size:13px;background:transparent;color:inherit;border:0;padding:0}.scan-confirm{flex-direction:row!important;align-items:flex-start;font-weight:400!important;line-height:1.5}.scan-confirm input{width:20px;height:20px;flex:0 0 20px;margin:1px 7px 0 0;accent-color:#51327b}.scan-text pre{white-space:pre-wrap;max-height:200px;overflow:auto;font-size:12px}#scanStatus{font-size:14px;line-height:1.5}#scanStatus.is-error{color:#9b302c}#scanVideo{width:100%;max-height:260px;background:#211b27;border-radius:12px;object-fit:cover;margin-bottom:12px}.food-scan-dialog [hidden]{display:none!important}.food-scan-dialog button:disabled{opacity:.5;cursor:wait}.food-scan-dialog :focus-visible{outline:2px solid #785990;outline-offset:3px}@media(max-width:480px){.food-scan-dialog{padding:18px}.scan-head h2{font-size:23px}.scan-entry-actions{display:grid;grid-template-columns:1fr 1fr}.scan-entry-actions button{padding:10px;font-size:13px;justify-content:center}.scan-actions{flex-direction:column}}

.scan-photo-preview{margin:14px 0}.scan-photo-preview summary{cursor:pointer;color:#51327b;padding:8px 0}.scan-photo-preview img{display:block;width:100%;height:auto;max-height:360px;object-fit:contain;background:#fff;border:1px solid #ded6e5;border-radius:8px}

/* Phone scanners use the camera directly; keep uploads on desktop. */
@media (max-width:700px), (hover:none) and (pointer:coarse){.food-scan-dialog .scan-upload{display:none}}

.food-scan-dialog .scan-ingredient { min-width:0; margin:16px 0; padding:16px; border:1px solid #ded6e7; border-radius:12px; background:#faf8fc; }
.food-scan-dialog .scan-ingredient legend { font-size:13px; color:#655376; padding:0 6px; }
.food-scan-dialog .scan-ingredient label { margin-bottom:12px; }
.food-scan-dialog .scan-remove { font-size:13px; padding:8px 12px; }
.food-scan-dialog #scanSupplement { margin:8px 0 18px; }
.v2-item .supplement-ingredients { grid-column:1 / -1; min-width:0; text-align:left; padding-top:6px; border-top:1px solid var(--line); font-size:13px; }
.v2-item .supplement-ingredients summary { cursor:pointer; color:var(--c-bcaa); padding:8px 0; }
.v2-item .supplement-ingredients ul { list-style:none; padding:0; margin:4px 0 0; }
.v2-item .supplement-ingredients li { display:flex; justify-content:space-between; align-items:baseline; gap:16px; padding:8px 0; }
.v2-item .supplement-ingredients li span { min-width:0; overflow-wrap:anywhere; }
.v2-item .supplement-ingredients li strong { flex-shrink:0; font-weight:600; }
.v2-item .supplement-ingredients small { display:block; color:var(--ink-3); }
.food-scan-dialog .scan-read-notice { margin:0 0 16px; padding:14px; border:1px solid #dfcba4; background:#fff8ec; border-radius:10px; color:#58452b; }
.food-scan-dialog .scan-read-notice p { margin:0 0 10px; }

#scanCropCanvas{display:block;width:auto;height:auto;max-width:100%;max-height:55dvh;margin:0 auto;touch-action:none;cursor:crosshair;border-radius:8px;background:#211b2b}#scanCropEdges{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.scan-read-notice button{margin:4px 8px 0 0}

/* This frame matches the portion captured by captureLabel, including object-fit. */
.scan-camera-view{position:relative;overflow:hidden;border-radius:12px;background:#211b27;margin:12px 0}
.scan-camera-view #scanVideo{display:block;width:100%;height:auto;aspect-ratio:4/3;max-height:none;object-fit:cover;margin:0;border-radius:0}
.scan-camera-guide{position:absolute;inset:8%;border:2px solid #fff;border-radius:8px;box-shadow:0 0 0 1000px #15101a55;pointer-events:none}
.scan-read-notice ul{padding-left:20px;font-size:14px;line-height:1.5;overflow-wrap:anywhere}

.scan-label-summary{background:#f4eef9;border:1px solid #ded2ea;border-radius:12px;padding:14px 16px;margin:12px 0 18px;font-size:15px}
.scan-label-summary>strong{display:block;font-size:13px;color:#706477;margin-bottom:8px}
.scan-label-summary>div{display:flex;justify-content:space-between;gap:16px;padding:4px 0;color:#51327b}
.scan-label-summary b{white-space:nowrap}

.supplement-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:340px;overflow:auto;margin:16px 0}.supplement-results button{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;text-align:left;padding:14px;border:1px solid #ded4e9;border-radius:10px;background:#faf8fc;color:#4d2e78}.supplement-results small{flex-shrink:0;color:#71637d}.supplement-results span{overflow-wrap:anywhere}@media(max-width:600px){.supplement-results{grid-template-columns:1fr;max-height:40vh}}

.scan-label-details{border-top:1px solid #e2d9e8;margin-top:20px;padding-top:16px}.scan-label-details>summary{cursor:pointer;color:#51327b;font-weight:600;min-height:44px}.scan-label-details[open]>summary{margin-bottom:12px}.scan-label-summary small{display:block;font-size:12px;color:#766781}.scan-label-summary span{min-width:0;overflow-wrap:anywhere}

/* Keep the dose unit beside the number, never as separate flex label lines. */
.food-scan-dialog .scan-dose-inline{display:flex;align-items:center;gap:12px}.food-scan-dialog .scan-dose-inline input{width:110px;flex:0 1 110px}.food-scan-dialog .scan-amount-title{font-weight:600;color:inherit}.food-scan-dialog .scan-basis{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.scan-serving-needed{border:1px solid #ded2ea;border-radius:12px;padding:0 12px}.scan-label-summary>small{margin-top:8px}.scan-portion p:empty{display:none}.scan-portion p{font-size:14px;line-height:1.5;margin-bottom:0}

.meal-scan{flex:0 0 auto;min-height:44px;padding:8px 12px;border:1px solid #d9cfe5;border-radius:8px;background:#faf7fd;color:#51327b;font:600 13px var(--font-sans);cursor:pointer}.food-scan-dialog #scanTorch[aria-pressed="true"]{background:#fff0c2;border-color:#caa547;color:#55400c}.food-scan-dialog #scanTorch{min-height:44px}@media(max-width:600px){.meal-supplements .meal-header{flex-wrap:wrap;padding-block:10px}.meal-supplements .meal-header h3{flex-basis:100%}.meal-supplements .meal-plus,.meal-supplements .meal-scan{flex:1}}

/* Visual pack portions: the slider is the keyboard/screen-reader alternative to dragging. */
.scan-pack h3{font-size:1.3rem;margin:0 0 14px}.scan-pack-modes{display:flex;gap:8px;margin-bottom:20px}.scan-pack-modes button{flex:1;font-size:.95rem;padding:12px 8px}.scan-pack-modes [aria-pressed="true"]{background:#533580;color:white;border-color:#533580}
.scan-pack [hidden]{display:none!important}.pack-weight{display:flex!important;align-items:center;gap:12px;justify-content:space-between}.pack-weight input{max-width:140px}.pack-visual-row{display:flex;align-items:center;justify-content:center;gap:28px;padding:26px 0}.pack-bag{position:relative;isolation:isolate;overflow:hidden;width:150px;height:190px;flex-shrink:0;background:#f5f1e8;border:2px solid #bbaa8d;border-radius:18px 18px 32px 32px;touch-action:none;cursor:ns-resize;box-shadow:inset 0 10px 0 #e3d9c4}.pack-fill{position:absolute;bottom:0;width:100%;background:radial-gradient(ellipse at center,#d8b878 0 48%,transparent 52%) 0 0/45px 36px,#ebd5a9;z-index:-1}.pack-bag-caption{display:block;text-align:center;font-size:.65rem;letter-spacing:.12em;margin-top:58px;color:#382d1a}.pack-bag strong{display:block;text-align:center;font-size:1.8rem;color:#382d1a}.pack-handle{position:absolute;left:0;right:0;height:32px;text-align:center;background:#533580;color:#fff;border:2px solid white;border-radius:20px;pointer-events:none;max-height:32px}.pack-result{display:flex;flex-direction:column;gap:7px;min-width:0}.pack-result strong{font-size:1.25rem;color:#533580}.pack-result p{font-size:.85rem;max-width:150px;color:#706a79}.pack-range-label{position:relative}.pack-range-label output{float:right}.scan-pack input[type="range"]{padding:0;width:100%;height:40px;accent-color:#533580}.pack-shortcuts{display:flex;gap:8px}.pack-shortcuts button{flex:1;padding:10px 5px;font-size:.9rem}.pack-before{margin:18px 0}.pack-before summary,.pack-nutrition summary{cursor:pointer;color:#533580;padding:12px 0}.pack-nutrition{border-top:1px solid #e7e0ed;margin:20px 0}.pack-before output{font-size:.9rem}.scan-pack{margin-top:16px}
@media(max-width:400px){.pack-visual-row{gap:16px}.pack-bag{width:125px;height:170px}.pack-bag-caption{margin-top:48px}.pack-result strong{font-size:1.1rem}}
.scan-pack .pack-range-label{display:grid;grid-template-columns:1fr auto;gap:0!important}.scan-pack .pack-range-label input{grid-column:1/-1}.scan-pack .pack-range-label output{font-weight:700;color:#533580}.scan-pack .scan-hint{line-height:1.45;margin:10px 0}.scan-pack .pack-visual-row{padding:16px 0}.scan-pack .pack-before{margin:8px 0}.scan-pack .pack-before summary{padding:8px 0}.scan-pack + .scan-portion[hidden]{display:none!important}.pack-nutrition{margin:12px 0}.food-scan-dialog:has(.scan-pack) .scan-head h2{font-size:1.4rem}.food-scan-dialog:has(.scan-pack) .scan-actions{position:sticky;bottom:0;background:white;padding-top:10px;z-index:2}.food-scan-dialog:has(.scan-pack) #scanAgain{display:none}.pack-bag{border-radius:22px 22px 30px 30px}.pack-bag:before{content:'';position:absolute;top:8px;left:12px;right:12px;border-top:2px dashed #a28f6c;opacity:.7}
.food-scan-dialog .pack-weight{flex-direction:row;align-items:center;text-align:left}.food-scan-dialog .pack-weight input{flex:0 0 125px}.food-scan-dialog:has(.scan-pack) button:disabled{cursor:not-allowed}.scan-pack{margin-top:4px}.pack-visual-row .pack-result{align-self:center}
.scan-serving-quick{padding:12px;border:1px solid #ded2ea;border-radius:12px;margin:14px 0}.scan-serving-quick p{font-size:14px;line-height:1.5;margin:0 0 10px}.scan-serving-quick button{margin:4px;font-size:14px}.food-scan-dialog:has(#scanLabelSummary) .scan-head h2{font-size:25px}.food-scan-dialog:has(#scanLabelSummary) .scan-portion{margin-top:18px}.food-scan-dialog:has(#scanLabelSummary) .scan-dose-inline input{width:120px;flex-basis:120px}

.food-scan-dialog .supplement-scan-first{display:block;width:100%;margin:6px 0 12px;padding:14px;font-weight:600}

/* Pack estimates remain reachable alongside existing portion controls. */
.food-pack-button{flex-basis:100%;text-align:left;font-size:13px;min-height:36px}.sm-pack,.sm-new-pack,#mealPackPortion,#calcPackPortion{min-height:44px;font-size:14px}.sm-item{flex-wrap:wrap}.sm-item .sm-pack{white-space:nowrap}
@media(max-width:480px){.sm-item .nm{flex-basis:100%}.scan-pack h3{font-size:1.15rem}.food-scan-dialog:has(.scan-pack) .pack-visual-row{padding:10px 0}.food-scan-dialog:has(.scan-pack) .pack-bag{height:150px;width:115px}}
