/* Dinh dưỡng AI — kiểu dáng RIÊNG của công cụ, đã thu gọn vào lớp bọc .nv.
 *
 * Nguồn: assets/styles.css của gói NutriVision V4
 * (viec-dang-lam/nutrivision/ari-nutrivision-ai-v4-mobile-audited/NUTRIVISION_APP/).
 * KHÔNG viết lại — chỉ thu gọn, theo đúng PHASE-0 §5.2:
 *
 *   1. mọi biến --x khai trong :root đổi tên thành --nv-x. Quan trọng nhất là --line:
 *      tools.css dùng --line cho viền thanh điều hướng và viền thẻ của cả khu công cụ;
 *      để nguyên tên là trang này đổi màu viền của chính nó và trông lạc khỏi web.
 *   2. :root / html / body  ->  .nv      ( * -> .nv, .nv * )
 *   3. mọi bộ chọn khác     ->  .nv <bộ chọn>
 *   4. bên trong @media cũng vậy.
 *
 * Nhờ vậy tệp này KHÔNG đụng được tới một pixel nào ngoài <div id="app" class="nv">.
 * tools.css không bị sửa một dòng nào.
 *
 * SINH RA BẰNG MÁY — đừng sửa tay. Sửa gói xong thì chạy lại:
 *   python viec-dang-lam/nutrivision/thu-css.py \
 *     viec-dang-lam/nutrivision/ari-nutrivision-ai-v4-mobile-audited/NUTRIVISION_APP/assets/styles.css \
 *     ari-yoga/tools/dinhduong.css
 * rồi chép lại khối ghi chú này lên đầu.
 *
 * Bản này sinh lại 23/09/2026 từ styles.css ĐÃ VÁ phần điện thoại (cỡ chữ ô nhập
 * 16px chống iPhone tự phóng to, [hidden] thật sự ẩn, vùng bấm 44px, tai thỏ).
 * Mã ?v= của tệp này do build-tools.py tự gắn khi dựng trang.
 */
.nv{--nv-bg:#f4f0e9;--nv-paper:#fffefa;--nv-ink:#161616;--nv-muted:#6e6860;--nv-line:#ded7cd;--nv-brand:#7d493e;--nv-brand2:#a96755;--nv-soft:#eee4dc;--nv-good:#3f684d;--nv-warn:#9c6929;--nv-danger:#9d3f39;--nv-shadow:0 18px 50px rgba(48,35,25,.08);--nv-r:26px}
.nv, .nv *{box-sizing:border-box}.nv{background:var(--nv-bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--nv-ink)}.nv{margin:0;background:radial-gradient(circle at 92% 0,#eadbd0 0,transparent 30rem),var(--nv-bg)}.nv button, .nv input, .nv textarea{font:inherit}.nv .shell{width:min(920px,100%);margin:auto;padding:18px 15px 70px}.nv .hero{padding:8px 4px 24px}.nv .back{display:inline-block;color:var(--nv-muted);text-decoration:none;margin-bottom:24px}.nv .eyebrow{font-size:.71rem;font-weight:900;letter-spacing:.15em;color:var(--nv-brand);margin-bottom:8px}.nv .hero h1{font-size:clamp(2.4rem,9vw,5rem);line-height:.92;letter-spacing:-.055em;margin:0}.nv .hero h1 span{color:var(--nv-brand)}.nv .hero p{max-width:720px;line-height:1.65;color:var(--nv-muted);font-size:1rem}.nv .mode-strip{display:grid;grid-template-columns:repeat(8,minmax(125px,1fr));gap:8px;overflow-x:auto;padding:4px 0 12px;scrollbar-width:none}.nv .mode{min-width:125px;border:1px solid var(--nv-line);background:#f8f5f0;border-radius:17px;padding:12px 10px;text-align:left;color:var(--nv-ink);cursor:pointer}.nv .mode span, .nv .mode small{display:block}.nv .mode span{font-weight:850;margin-top:6px}.nv .mode small{font-size:.7rem;color:var(--nv-muted);margin-top:2px}.nv .mode.active{background:var(--nv-ink);color:#fff;border-color:var(--nv-ink)}.nv .mode.active small{color:#ddd}.nv .work-card, .nv .progress-card, .nv .error-card, .nv .results, .nv .history-card{background:rgba(255,254,250,.92);border:1px solid var(--nv-line);box-shadow:var(--nv-shadow);border-radius:var(--nv-r)}.nv .work-card{padding:18px}.nv .mode-panel{display:none}.nv .mode-panel.active{display:block}.nv .panel-head, .nv .result-head, .nv .section-row, .nv .progress-top{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.nv .panel-head h2, .nv .result-head h2{margin:0;font-size:1.45rem;letter-spacing:-.025em}.nv .badge, .nv .evidence-badge{padding:8px 10px;border-radius:999px;background:var(--nv-soft);color:var(--nv-brand);font-size:.72rem;font-weight:850;white-space:nowrap}.nv .badge.good{background:#e8f1e9;color:var(--nv-good)}.nv label{display:block;font-size:.78rem;color:var(--nv-muted);font-weight:700;margin-top:12px}.nv input, .nv textarea{width:100%;border:1px solid var(--nv-line);border-radius:14px;background:#fff;padding:13px 14px;color:var(--nv-ink);outline:none;margin-top:6px}.nv input:focus, .nv textarea:focus{border-color:#b58678;box-shadow:0 0 0 3px rgba(181,134,120,.14)}.nv textarea{resize:vertical;line-height:1.5}.nv .dropzone{height:320px;border:1.5px dashed #c9b9ab;border-radius:22px;background:#f7f3ee;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden;cursor:pointer;text-align:center;padding:22px}.nv .dropzone input, .nv .mini-drop input{position:absolute;inset:0;opacity:0;cursor:pointer;margin:0}.nv .dropzone>span{font-size:2.2rem}.nv .dropzone strong{color:var(--nv-ink);margin-top:8px}.nv .dropzone small{margin-top:5px}.nv .dropzone img, .nv .mini-drop img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:none}.nv .dropzone.has-image img, .nv .mini-drop.has-image img{display:block}.nv .photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}.nv .photo-grid.two{grid-template-columns:1fr 1fr}.nv .mini-drop{height:180px;border:1.5px dashed #c9b9ab;border-radius:18px;background:#f7f3ee;display:grid;place-items:center;text-align:center;position:relative;overflow:hidden;color:var(--nv-muted);margin:0}.nv .context-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.nv .primary, .nv .secondary{border:0;border-radius:15px;min-height:50px;padding:0 17px;font-weight:850;cursor:pointer}.nv .primary{background:linear-gradient(135deg,var(--nv-brand),var(--nv-brand2));color:#fff;box-shadow:0 10px 22px rgba(125,73,62,.18);width:100%;margin-top:14px}.nv .primary.compact{width:auto;margin:0;white-space:nowrap}.nv .secondary{background:#f0ebe4;color:var(--nv-ink);border:1px solid var(--nv-line);margin-top:10px}.nv .primary:disabled{opacity:.42;box-shadow:none;cursor:not-allowed}.nv .helper{font-size:.82rem;line-height:1.55;color:var(--nv-muted)}.nv .barcode-box{display:flex;gap:8px;margin-top:14px}.nv .barcode-box input{margin:0}.nv .camera-box{margin-top:12px;border:1px solid var(--nv-line);border-radius:18px;padding:10px;background:#111;color:#fff}.nv .camera-box video{width:100%;max-height:340px;object-fit:cover;border-radius:12px}.nv .camera-box p{font-size:.8rem}.nv .progress-card, .nv .error-card, .nv .history-card{margin-top:14px;padding:16px}.nv .progress-top span{font-weight:900;color:var(--nv-brand)}.nv .track{height:8px;border-radius:99px;background:#ebe3da;margin:12px 0;overflow:hidden}.nv .track div{height:100%;width:0;background:var(--nv-brand);transition:width .3s}.nv .progress-card p{font-size:.8rem;color:var(--nv-muted);margin:0}.nv .error-card{color:var(--nv-danger);border-color:#eccbc7;background:#fff8f6}.nv .results{margin-top:16px;padding:17px}.nv .headline-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:10px;margin-top:12px}.nv .calorie-card, .nv .macro-card, .nv .evidence-card, .nv .note-card, .nv .source-card{border:1px solid var(--nv-line);border-radius:20px;background:#fff;padding:16px}.nv .calorie-card{text-align:center}.nv .calorie-card>span{font-size:clamp(4rem,14vw,7rem);font-weight:950;letter-spacing:-.07em;line-height:.9}.nv .calorie-card small{color:var(--nv-muted);margin-left:5px}.nv .calorie-card p{margin:9px 0 0;color:var(--nv-muted);font-size:.8rem}.nv .macro-card{display:grid;grid-template-columns:1fr 1fr;gap:8px}.nv .macro-card div{background:#f7f4ef;border-radius:14px;padding:12px}.nv .macro-card span{font-size:.72rem;color:var(--nv-muted);display:block}.nv .macro-card b{display:block;margin-top:4px}.nv .section-row{align-items:end;margin:24px 2px 10px}.nv .section-row h3{margin:0;font-size:1rem}.nv .section-row small{color:var(--nv-muted)}.nv .item-list{display:grid;gap:9px}.nv .food-item{border:1px solid var(--nv-line);border-radius:18px;background:#fff;padding:14px}.nv .food-top{display:grid;grid-template-columns:1fr auto;gap:10px}.nv .food-name{font-weight:900}.nv .food-sub, .nv .source-detail{font-size:.72rem;color:var(--nv-muted);margin-top:3px}.nv .food-kcal{font-weight:900}.nv .food-bottom{display:flex;align-items:center;gap:8px;margin-top:11px;flex-wrap:wrap}.nv .grams{width:90px;margin:0;padding:8px 9px}.nv .source-pill{font-size:.68rem;padding:6px 8px;border-radius:999px;background:#f1ece6;color:var(--nv-muted);margin-left:auto}.nv .uncertainty{font-size:.72rem;line-height:1.45;color:var(--nv-muted);margin-top:9px}.nv .micro-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.nv .micro{border:1px solid var(--nv-line);border-radius:16px;background:#fff;padding:12px}.nv .micro span{display:block;color:var(--nv-muted);font-size:.7rem}.nv .micro b{display:block;margin-top:4px}.nv .micro i{display:block;height:4px;background:#eee6de;border-radius:10px;margin-top:8px;overflow:hidden}.nv .micro i::after{content:"";display:block;height:100%;width:var(--pct);max-width:100%;background:var(--nv-brand);border-radius:inherit}.nv .evidence-card, .nv .note-card, .nv .source-card{margin-top:10px}.nv .evidence-card p, .nv .note-card p, .nv .source-card p{font-size:.8rem;line-height:1.5;color:var(--nv-muted)}.nv #evidenceMeter{height:9px;background:#eee7df;border-radius:99px;overflow:hidden;margin-top:12px}.nv #evidenceMeter i{display:block;height:100%;width:0;background:var(--nv-good);border-radius:inherit}.nv .chips{display:flex;gap:6px;flex-wrap:wrap}.nv .chip{padding:6px 8px;border-radius:999px;background:#f2ede7;font-size:.68rem;color:var(--nv-muted)}.nv .warnings{display:grid;gap:5px}.nv .warning{font-size:.73rem;background:#fff8ed;color:#84571d;border-radius:10px;padding:8px}.nv .result-actions{display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px;margin-top:12px}.nv .result-actions .primary, .nv .result-actions .secondary{margin:0}.nv .search-results{display:grid;gap:8px;margin-top:12px}.nv .search-item{border:1px solid var(--nv-line);border-radius:15px;padding:12px;background:#fff;display:grid;grid-template-columns:1fr auto;gap:10px}.nv .search-item h4{margin:0 0 5px;font-size:.9rem}.nv .search-item p{margin:0;color:var(--nv-muted);font-size:.72rem}.nv .search-item button{border:0;background:#eee8e0;border-radius:11px;font-weight:800;padding:8px 10px;cursor:pointer}.nv .recipe-summary{margin-top:16px;border-top:1px solid var(--nv-line);padding-top:14px}.nv .recipe-summary table{width:100%;border-collapse:collapse;font-size:.78rem}.nv .recipe-summary th, .nv .recipe-summary td{text-align:left;padding:8px 5px;border-bottom:1px solid #eee7df}.nv .text-btn{background:none;border:0;color:var(--nv-brand);font-weight:800;cursor:pointer}.nv .history-row{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-top:1px solid #eee7df;font-size:.8rem}.nv .history-row small{color:var(--nv-muted)}.nv footer{padding:30px 4px 0;color:var(--nv-muted);font-size:.78rem;line-height:1.55}.nv footer strong{color:var(--nv-ink)}
@media(max-width:700px){.nv .mode-strip{grid-template-columns:repeat(8,128px)}.nv .photo-grid{grid-template-columns:1fr 1fr}.nv .photo-grid .mini-drop:last-child{grid-column:1/-1}.nv .headline-grid{grid-template-columns:1fr}.nv .micro-grid{grid-template-columns:1fr 1fr}.nv .result-actions{grid-template-columns:1fr}.nv .context-grid{grid-template-columns:1fr}.nv .dropzone{height:260px}.nv .barcode-box{flex-direction:column}.nv .primary.compact{width:100%;min-height:48px}.nv .panel-head{align-items:flex-start}}
@media(prefers-reduced-motion:reduce){.nv, .nv *{scroll-behavior:auto!important;transition:none!important}}
.nv .correction-card{margin-top:12px;border:1px solid var(--nv-line);border-radius:18px;background:#fff;padding:13px}.nv .correction-card summary{cursor:pointer;font-weight:850;color:var(--nv-brand)}.nv .correction-row{display:grid;grid-template-columns:1fr 100px auto;gap:8px;align-items:end}.nv .correction-row input, .nv .correction-row button{margin-top:0}.nv .correction-row .secondary{margin:0}@media(max-width:600px){.nv .correction-row{grid-template-columns:1fr 90px}.nv .correction-row button{grid-column:1/-1}}
.nv .today-summary{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.nv .today-summary .stat{background:#f5f0ea;border-radius:14px;padding:10px 12px;font-size:.74rem}.nv .today-summary .stat b{display:block;font-size:1rem;margin-top:2px}
.nv .coach-banner, .nv .fun-tip, .nv .coach-card, .nv .smart-card{margin-top:16px;padding:14px 16px;border:1px solid rgba(40,70,55,.14);border-radius:16px;background:rgba(255,255,255,.62);line-height:1.55}.nv .guide-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.nv .guide-choice{padding:16px;text-align:left;border:1px solid rgba(40,70,55,.14);border-radius:16px;background:#fff;cursor:pointer}.nv .guide-choice b, .nv .guide-choice small{display:block}.nv .guide-choice small{margin-top:5px;opacity:.72}.nv .smart-question{padding:12px 0;border-top:1px solid rgba(0,0,0,.08)}.nv .smart-question:first-child{border-top:0}.nv .smart-question .q-options{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.nv .q-option{border:1px solid rgba(0,0,0,.16);background:#fff;border-radius:999px;padding:8px 12px;cursor:pointer}.nv .q-option.selected{outline:2px solid currentColor}.nv .coach-card{margin:18px 0}.nv .coach-card p{margin:6px 0}.nv .coach-card small{opacity:.7}@media(max-width:720px){.nv .guide-grid{grid-template-columns:1fr}}

/* ===== V4 mobile usability audit overrides ===== */
.nv{scroll-padding-top:max(12px,env(safe-area-inset-top));-webkit-text-size-adjust:100%}
.nv{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom)}
.nv .shell{padding-bottom:max(28px,calc(22px + env(safe-area-inset-bottom)))}
.nv .mode-strip{grid-template-columns:repeat(8,minmax(125px,1fr));scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain}
.nv .mode{scroll-snap-align:start;min-height:72px;touch-action:manipulation}
.nv button, .nv input, .nv textarea, .nv summary, .nv label.dropzone, .nv label.mini-drop{touch-action:manipulation}
.nv button:focus-visible, .nv input:focus-visible, .nv textarea:focus-visible, .nv summary:focus-visible, .nv .guide-choice:focus-visible, .nv .dropzone:focus-within, .nv .mini-drop:focus-within{outline:3px solid rgba(125,73,62,.32);outline-offset:2px}
.nv .primary, .nv .secondary, .nv .text-btn, .nv .guide-choice, .nv .q-option, .nv .mode{min-height:44px}
.nv .helper{font-size:.86rem;line-height:1.58}
.nv .accuracy-options{margin-top:12px;border:1px solid var(--nv-line);border-radius:16px;padding:0 13px;background:#fbf9f6}.nv .accuracy-options summary{cursor:pointer;min-height:48px;display:flex;align-items:center;justify-content:space-between;font-weight:850;color:var(--nv-brand)}.nv .accuracy-options summary small{font-weight:650;color:var(--nv-muted)}
.nv .photo-quality{min-height:0;margin-top:9px;padding:0;font-size:.82rem;line-height:1.45}.nv .photo-quality.good, .nv .photo-quality.warn, .nv .photo-quality.checking{padding:9px 11px;border-radius:12px}.nv .photo-quality.good{background:#eef6ef;color:#315f3e}.nv .photo-quality.warn{background:#fff6e8;color:#7b531d}.nv .photo-quality.checking{background:#f4f0eb;color:var(--nv-muted)}
.nv .guide-choice.featured{grid-column:1/-1;background:linear-gradient(135deg,#fff,#f6eee9);border-color:#d8bdb3}.nv .guide-choice.featured b{font-size:1.04rem}.nv .guide-choice{min-height:92px}
.nv .file-button{position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;width:100%}.nv .file-button input{position:absolute;inset:0;opacity:0;cursor:pointer;margin:0}
.nv .camera-box{position:relative}.nv .scan-guide{position:absolute;left:9%;right:9%;top:31%;height:34%;border:2px solid rgba(255,255,255,.82);border-radius:14px;pointer-events:none;box-shadow:0 0 0 999px rgba(0,0,0,.12)}
.nv .amount-card{margin-top:12px;border:1px solid var(--nv-line);border-radius:18px;background:#fff;padding:14px;display:flex;align-items:center;justify-content:space-between;gap:14px}.nv .amount-card p{margin:4px 0 0}.nv .amount-control{display:flex;align-items:center;gap:8px;min-width:130px}.nv .amount-control input{margin:0;width:96px;text-align:right;font-weight:850}.nv .amount-control span{font-weight:800;color:var(--nv-muted)}
.nv .track-toggle{margin-top:14px;padding:13px;border-radius:15px;background:#f7f3ee;border:1px solid var(--nv-line);display:grid;grid-template-columns:auto 1fr;gap:2px 9px;align-items:start;color:var(--nv-ink);cursor:pointer}.nv .track-toggle input{width:20px;height:20px;margin:1px 0 0}.nv .track-toggle span{font-weight:800}.nv .track-toggle small{grid-column:2;color:var(--nv-muted);line-height:1.4}.nv .compact-toggle{display:flex;margin:12px 0;align-items:center}.nv .compact-toggle input{width:20px}.nv .compact-toggle span{font-weight:750}
.nv .item-actions{display:flex;gap:12px;margin-top:8px}.nv .danger-lite{color:#9a443f}.nv .inline-label{display:flex;align-items:center;gap:7px;margin:0}.nv .inline-label span{font-size:.7rem;color:var(--nv-muted)}
.nv .install-card{margin-top:14px;padding:15px 16px;border:1px solid var(--nv-line);border-radius:18px;background:#fff;display:flex;justify-content:space-between;align-items:center;gap:12px;box-shadow:var(--nv-shadow)}.nv .install-card p{margin:5px 0 0}.nv .install-card .secondary{margin:0;white-space:nowrap}
.nv .history-value{text-align:right}.nv .history-value .text-btn{display:block;margin-left:auto;min-height:30px;padding:2px 0}
.nv .recipe-summary{border:1px solid var(--nv-line);border-radius:18px;background:#fff;padding:14px}.nv .recipe-head{display:flex;align-items:end;justify-content:space-between;gap:10px}.nv .recipe-head h3{margin:0}.nv .recipe-head label{margin:0;max-width:110px}.nv .recipe-head input{margin-top:4px}.nv .recipe-table{display:grid;gap:7px;margin-top:12px}.nv .recipe-row{display:grid;grid-template-columns:minmax(0,1fr) 100px 90px;gap:8px;align-items:center;padding:9px 0;border-top:1px solid #eee7df}.nv .recipe-row small{display:block;color:var(--nv-muted);font-size:.7rem;margin-top:3px}.nv .recipe-row label{display:flex;align-items:center;gap:4px;margin:0}.nv .recipe-row input{margin:0;padding:9px}.nv .recipe-row>span{text-align:right;font-weight:800;font-size:.78rem}
.nv .result-actions{grid-template-columns:1.7fr 1fr 1fr 1fr}
@media(max-width:700px){
  .nv .mode-strip{grid-template-columns:repeat(8,132px);margin-inline:-2px;padding-inline:2px}
  .nv .mode{min-width:132px}
  .nv .work-card, .nv .results, .nv .history-card{padding:15px;border-radius:20px}
  .nv .hero h1{font-size:clamp(2.25rem,12vw,4rem)}
  .nv .dropzone{height:min(64vw,300px);min-height:220px}
  .nv .photo-grid{grid-template-columns:1fr 1fr}.nv .photo-grid .mini-drop:last-child{grid-column:1/-1}.nv .mini-drop{height:150px}
  .nv .amount-card{align-items:flex-start;flex-direction:column}.nv .amount-control{width:100%}.nv .amount-control input{flex:1;width:auto}
  .nv .result-actions{grid-template-columns:1fr 1fr}.nv .result-actions .primary{grid-column:1/-1}
  .nv .recipe-row{grid-template-columns:1fr 82px}.nv .recipe-row>span{grid-column:1/-1;text-align:left;color:var(--nv-muted)}
  .nv .install-card{align-items:flex-start;flex-direction:column}.nv .install-card .secondary{width:100%}
}
@media(max-width:420px){.nv .result-actions{grid-template-columns:1fr}.nv .result-actions .primary{grid-column:auto}.nv .micro-grid{grid-template-columns:1fr 1fr}.nv .photo-grid.two{grid-template-columns:1fr}.nv .history-row{align-items:flex-start}.nv .history-value{min-width:88px}}

/* ===== Vá cho điện thoại — 23/09/2026 (vai trò camera + di động) ============
 * Phần này chỉ thêm, không sửa dòng nào ở trên, để dễ đối chiếu với bản gốc V4.
 * ========================================================================= */

/* 1. iPhone tự PHÓNG TO cả trang khi bạn chạm vào ô nhập có cỡ chữ dưới 16px.
 *    Các ô ở đây nằm trong <label> (cỡ .78rem ≈ 12px) và thừa hưởng cỡ chữ đó,
 *    nên Safari phóng to rồi không thu lại — trang lệch hẳn. Ép ô nhập >= 16px. */
.nv input, .nv textarea, .nv select{font-size:max(16px,1rem)}

/* 2. Khi thêm vào Màn hình chính, iPhone tai thỏ che mất mép trên. */
.nv .shell{padding-top:max(18px,env(safe-area-inset-top))}

/* 3. Ô báo tình trạng camera. Nằm NGOÀI khung camera nên vẫn đọc được khi khung ẩn
 *    — đây chính là chỗ bản gốc viết câu giải thích vào phần tử đang bị ẩn. */
.nv .camera-consent{margin-top:14px}
.nv .camera-note{margin:10px 0 0;padding:11px 13px;border-radius:13px;font-size:.86rem;
  line-height:1.5;background:#f4f0eb;color:var(--nv-muted);border:1px solid var(--nv-line)}
.nv .camera-note.warn{background:#fff6e8;color:#7b531d;border-color:#f0dcbc}
.nv .camera-note.ok{background:#eef6ef;color:#315f3e;border-color:#cfe4d4}

/* 4. Khung camera có chiều cao tối thiểu, để khung ngắm không dẹp lại lúc video
 *    chưa kịp có kích thước (hay gặp trên Android đời cũ). */
.nv .camera-box video{min-height:210px;background:#000}

/* 5. Chạm bằng ngón tay: mọi nút bấm >= 44px. Mấy nút dưới đây bản gốc bỏ sót. */
.nv .search-item button{min-height:44px;padding:8px 14px}
.nv .history-value .text-btn{min-height:44px;padding:0 2px}
.nv .correction-card summary{min-height:44px;display:flex;align-items:center}
.nv .recipe-row input, .nv .grams, .nv .amount-control input{min-height:44px}
.nv .item-actions{gap:16px}

/* 6. Máy nhỏ (iPhone SE, 360px): bảng dinh dưỡng và ô sửa đừng chen nhau. */
@media(max-width:380px){
  .nv .mode-strip{grid-template-columns:repeat(8,124px)}
  .nv .mode{min-width:124px}
  .nv .correction-row{grid-template-columns:1fr 84px}
  .nv .barcode-box{flex-direction:column}
  .nv .hero h1{font-size:clamp(2rem,10.5vw,3.4rem)}
  .nv .food-bottom{gap:10px}
  .nv .source-pill{margin-left:0}
}

/* 7. Liên kết quay lại: bản gốc cao 21px, ngón tay khó trúng. (Khi ráp vào web của
 *    cô Ari, chỗ này được thay bằng thanh menu chung — vẫn sửa để bản gốc chạy đúng.) */
.nv .back{display:inline-flex;align-items:center;min-height:44px;margin-bottom:14px}

/* 8. LỖI THẬT của bản gốc: ba khối dưới đây khai display:flex, mà luật của tác giả
 *    luôn thắng luật mặc định [hidden]{display:none} của trình duyệt. Hậu quả:
 *      · #resultAmountCard ("Bạn dùng bao nhiêu?") hiện cả ở kết quả BỮA ĂN, nơi
 *        nó không có ý nghĩa gì, kèm một ô trống ghi "serving";
 *      · #installCard vẫn mời "Thêm vào màn hình chính" cả khi đã thêm rồi;
 *      · #barcodePhotoFallback hiện sẵn ngay cả khi máy quét mã vạch được.
 *    Một dòng này trả lại đúng ý nghĩa của thuộc tính hidden cho cả trang. */
.nv [hidden]{display:none!important}

/* 9. Hàng tiêu đề của thẻ Lịch sử bị vỡ chữ ở khổ điện thoại.
 *    .section-row là flex "đẩy hai đầu", mà ở 375px thì "Lịch sử riêng tư trên thiết bị"
 *    đã chiếm gần hết chỗ, nên nút "Xóa tất cả" bị ép xuống hai dòng (đo được: tiêu đề
 *    cao 35px, nút cao 54px rộng 88px) — nhìn như chữ bị đứt đôi.
 *    Hai luật dưới đây: giữ chữ trong nút trên một dòng, và cho cả hàng xuống dòng tử tế
 *    khi vẫn không đủ chỗ. Không đụng tới .section-row của những thẻ khác về mặt bố cục,
 *    chỉ thêm khả năng xuống dòng. */
.nv .section-row{flex-wrap:wrap}
.nv .section-row .text-btn{white-space:nowrap}
