
:root{color-scheme:light;--bg:#f5f6f8;--ink:#14213b;--muted:#758298;--line:#e7eaf0;--brand:#315dd9;--surface:#fff;--light:#eef3ff;--green:#17795d;--orange:#c77430}
*{box-sizing:border-box}body{margin:0;background:var(--bg);font:15px/1.45 system-ui,-apple-system,"Segoe UI",Arial,sans-serif;color:var(--ink)}button,input,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #a9bfff;outline-offset:2px}
.shell{max-width:900px;margin:0 auto;min-height:100vh;background:var(--bg)}.top{background:white;border-bottom:1px solid var(--line);padding:22px max(22px,calc((100% - 780px)/2));display:flex;justify-content:space-between;align-items:center;gap:15px}.brand{display:flex;align-items:center;gap:12px}.logo{width:40px;height:40px;border-radius:13px;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:23px;font-weight:800}.brand h1{font-size:20px;letter-spacing:-.7px;margin:0;line-height:1.08}.brand p{color:var(--muted);font-size:12px;margin:4px 0 0}.chip{font-size:11px;color:var(--green);border:1px solid #cbecdf;background:#ecf9f3;padding:6px 9px;border-radius:20px;white-space:nowrap}
.container{max-width:780px;margin:auto;padding:22px 22px 90px}.nav{display:flex;padding:5px;background:#e9edf4;border-radius:14px;gap:5px;margin-bottom:21px}.nav button{border:0;flex:1;padding:12px 14px;border-radius:10px;background:transparent;color:#61718c;font-weight:650}.nav button.active{background:#fff;color:var(--ink);box-shadow:0 1px 5px #182a5614}.weekbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:1.3px;color:var(--muted);font-weight:750}.weekbar h2{font-size:18px;margin:2px 0 0;letter-spacing:-.4px}.arrows{display:flex;gap:7px}.iconbtn{border:1px solid var(--line);border-radius:10px;background:white;color:#526179;width:37px;height:37px;font-size:20px}.days{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:20px}.day{border:1px solid var(--line);background:white;border-radius:13px;padding:13px 4px 12px;color:#67758c;text-align:center}.day strong{display:block;font-size:14px}.day span{font-size:11px}.day.selected{border-color:var(--brand);background:var(--light);color:#234abf;box-shadow:inset 0 0 0 1px #315dd9}.card{background:#fff;border:1px solid var(--line);border-radius:19px;padding:22px;box-shadow:0 3px 24px #14213b06;margin-bottom:14px}.card h3{font-size:17px;margin:0;letter-spacing:-.3px}.subtle{color:var(--muted);font-size:13px}.flex{display:flex;align-items:center;justify-content:space-between;gap:12px}.total{background:linear-gradient(130deg,#355ed8,#233d99);color:white;border-radius:19px;padding:23px 24px;display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:12px}.total small{color:#ccd8ff;display:block;font-size:12px}.total strong{display:block;font-size:32px;line-height:1.1;letter-spacing:-1px;margin-top:5px}.total .tag{padding:7px 11px;border:1px solid #ffffff45;border-radius:30px;font-size:12px;text-align:center}.dish{display:grid;grid-template-columns:1fr auto;gap:10px;padding:15px 0;border-top:1px solid var(--line)}.dish:first-of-type{border-top:0}.dish-name{font-size:14px;font-weight:700}.dish-details{font-size:12px;color:var(--muted);margin-top:3px}.carbs{font-size:17px;font-weight:750;color:#2444a7;text-align:right;white-space:nowrap}.carbs small{font-weight:500;color:var(--muted);font-size:11px;display:block}.tiny-note{font-size:12px;color:#687993;background:#f7f8fb;padding:12px;border-radius:9px;margin-top:12px}.sectionbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px}.pillbtn{border:1px solid #d2dcf6;background:#f4f7ff;color:#294da5;border-radius:9px;padding:8px 11px;font-size:12px;font-weight:700}.secondary{background:#fff;border:1px solid #dbe1ed;padding:12px 16px;border-radius:11px;color:#2d405f;font-weight:700}.primary{background:var(--brand);border:1px solid var(--brand);padding:13px 17px;border-radius:11px;color:white;font-weight:700}.full{width:100%}.upload{display:flex;gap:11px;align-items:center;justify-content:center;width:100%;border:1.5px dashed #c5d1e8;border-radius:12px;padding:22px 12px;color:#4e6698;text-align:center;background:#f8faff;font-weight:650;cursor:pointer}.upload input{display:none}.preview{display:none;width:100%;max-height:290px;object-fit:contain;background:#f6f7f9;border-radius:12px;margin-top:12px}.fieldlabel{font-size:12px;color:#5f6f89;font-weight:700;margin:17px 0 8px;display:block}.textinput,textarea{width:100%;border:1px solid #dce2ea;border-radius:10px;padding:12px;background:#fff;color:var(--ink)}textarea{resize:vertical;min-height:88px}.actions{display:flex;gap:9px;margin-top:14px;flex-wrap:wrap}.actions>*{flex:1}.hint{font-size:12px;color:#7b889b;margin-top:10px}.empty{text-align:center;padding:38px 20px}.empty h3{margin:10px 0 4px}.empty p{color:var(--muted)}.editrow{display:grid;grid-template-columns:minmax(0,2fr) minmax(66px,.7fr) minmax(78px,.85fr) auto;gap:8px;margin-top:10px;align-items:end}.editrow label{font-size:10px;color:#627089;font-weight:700}.editrow input{width:100%;padding:9px 7px;border-radius:8px;border:1px solid #dce2ea;font-size:13px;min-width:0}.editrow .delete{background:#fff2f2;color:#ba4545;border:1px solid #ffdadb;border-radius:8px;height:37px;width:35px}.overline{font-size:12px;font-weight:750;color:#607089;margin-bottom:6px}.footer{font-size:11px;color:#8e99a9;text-align:center;margin-top:23px}.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);border-radius:12px;color:#fff;background:#253554;padding:10px 16px;box-shadow:0 4px 17px #0003;display:none;z-index:10;font-size:13px}.hidden{display:none!important}
@media(min-width:700px){.container{padding-top:30px}.cols{display:grid;grid-template-columns:1.1fr .9fr;gap:14px;align-items:start}.cols>div{min-width:0}.total{margin-bottom:14px}}@media(max-width:390px){.container{padding:16px 13px 80px}.top{padding:16px}.card{padding:18px}.total{padding:21px}.day{padding:10px 2px}.editrow{grid-template-columns:minmax(0,2fr) 64px 72px 32px;gap:5px}.editrow input{padding:8px 4px}} 
#printArea{display:none}
@media print{ @page{size:A4 portrait;margin:14mm} body{background:white;color:#111;font:11px/1.35 Arial,sans-serif} .shell,.toast{display:none!important} #printArea{display:block!important} .printpage{break-after:page;page-break-after:always;min-height:260mm} .printpage:last-child{break-after:auto;page-break-after:auto} .printtitle{font-size:23px;font-weight:bold;margin:0 0 6px}.printsubtitle{font-size:11px;color:#555;margin:0 0 18px}.printday{margin-top:14px;break-inside:avoid;page-break-inside:avoid}.printday h2{font-size:14px;margin:0 0 6px;padding:7px 9px;background:#f2f4fa}.printday table{width:100%;border-collapse:collapse;table-layout:fixed}.printday td,.printday th{padding:6px 7px;border:1px solid #bdc4d2;text-align:left;vertical-align:top}.printday th{background:#f7f8fa}.printday td:nth-child(n+2),.printday th:nth-child(n+2){text-align:right}.printday .recipe{display:block;color:#555;font-size:9px}.printday .sumrow{font-weight:bold;background:#edf1fb} .printfoot{color:#555;font-size:9px;margin-top:13px}}


/* V1 corrigée : accessibilité et mise en page mobile */
button, label.upload{touch-action:manipulation}button{min-height:44px}.day{min-height:63px}.iconbtn{width:44px;height:44px}
.shell{max-width:980px}.container{max-width:850px}.top{padding-left:max(20px,calc((100% - 850px)/2));padding-right:max(20px,calc((100% - 850px)/2))}
.card{overflow-wrap:anywhere}.card-head{display:flex;justify-content:space-between;align-items:center;gap:14px}
.muted{font-size:12px;color:#62718d}.status{display:inline-flex;border-radius:100px;background:#eef2f9;color:#435778;padding:4px 9px;font-size:11px;font-weight:700}.warning{color:#a65b18;background:#fff4e5;border:1px solid #ffdfb4;border-radius:9px;padding:10px 12px;font-size:12px;margin-top:9px}.warning.inline{display:inline-block;margin:4px 0 0;padding:2px 7px}.positive{color:#11654b}.field{display:flex;flex-direction:column;gap:5px;margin:8px 0}.field input,.field select,.field textarea{width:100%;border:1px solid #d6dfea;border-radius:9px;padding:11px;font-size:15px;background:#fff;color:#14213b}.field>label{font-size:12px;font-weight:700;color:#5c6c87}.editcard{border:1px solid #e5e9ef;background:#fafbfe;border-radius:14px;padding:14px;margin:12px 0}.editgrid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.editgrid .span2{grid-column:1/-1}.editcard .edit-actions{display:flex;justify-content:space-between;align-items:center;margin-top:8px;gap:8px}.danger{border:1px solid #ffd7d7;background:#fff1f1;color:#aa2727;border-radius:9px;padding:10px 13px;font-weight:650}.buttons{display:flex;gap:8px;flex-wrap:wrap}.buttons>*{flex:1;min-width:115px}.topright{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:end}.total .tag{font-size:11px}.note-hidden{display:none!important} .photo-row{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}.photo-row img{max-width:100%}.tiny-note a{color:#315dd9}.source{font-size:11px;color:#60728a;margin-top:3px}.nav button{min-width:0}.small-btn{font-size:12px;padding:10px}.footerspace{margin-bottom:20px}.no-print{display:block}
@media(max-width:420px){.editcard{padding:11px}.editgrid{gap:7px}.chip{font-size:10px}.top{gap:8px}.brand h1{font-size:18px}.logo{width:36px;height:36px}.buttons>*{min-width:calc(50% - 8px)}.nav button{padding:12px 7px}}
@media print{.printpage{min-height:0;page-break-after:always;break-after:page}.printpage:last-child{page-break-after:auto;break-after:auto}.printday{break-inside:avoid-page;page-break-inside:avoid}.printday td,.printday th{padding:4px 5px}.printday h2{padding:5px 8px;margin:0 0 6px}.printsubtitle{margin-bottom:12px}.printday{margin-top:9px}.printfoot{font-size:8px}.printday .recipe{font-size:9px}}

.field input[type=checkbox]{width:20px;height:20px;margin:0 9px 0 0;vertical-align:middle;accent-color:#315dd9}.field:has(input[type=checkbox]) span:last-child{display:flex;align-items:center;min-height:38px}.field:has(input[type=checkbox]) .fieldlabel{font-size:12px;font-weight:700;color:#5c6c87}

@media print{
.printpage.printcompact .printday{margin-top:7px}.printpage.printcompact .printday h2{font-size:11px;padding:3px 5px;margin-bottom:3px}
.printpage.printcompact td,.printpage.printcompact th{padding:2px 3px;font-size:8px;line-height:1.13}.printpage.printcompact .recipe{font-size:7px;line-height:1.13}
.printpage.printultra .printtitle{font-size:16px;margin-bottom:3px}.printpage.printultra .printsubtitle{font-size:9px;margin-bottom:8px}
.printpage.printultra .printday{margin-top:5px}.printpage.printultra .printday h2{font-size:10px;padding:3px 4px;margin-bottom:2px}
.printpage.printultra td,.printpage.printultra th{padding:1px 2px;font-size:6px;line-height:1.08}.printpage.printultra .recipe{font-size:5.9px;line-height:1.08}.printpage.printultra .printfoot{font-size:7px;margin-top:5px}
}

/* Compact daily workflow, with week arrows around the date selector. */
.top{padding:4px 14px;min-height:44px;gap:8px}.brand{gap:0}.brand h1{font-size:17px;letter-spacing:-.4px}.topright{flex-wrap:nowrap;gap:6px}.topright .pillbtn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:4px 8px;text-decoration:none;border:0;background:transparent;font-size:12px}.topright .status{font-size:10px;padding:3px 6px}
.container{padding:10px 12px 24px}.nav{padding:3px;margin-bottom:10px;border-radius:10px}.nav button{padding:8px 6px;font-size:13px}
.date-navigation{display:flex;align-items:center;gap:4px;margin-bottom:8px}.date-navigation .iconbtn{flex:0 0 44px;padding:0;border-radius:9px}.date-navigation .days{flex:1;min-width:0;margin:0;gap:4px}.date-navigation .day{min-width:0;min-height:44px;padding:4px 1px;border-radius:8px}.date-navigation .day strong{font-size:12px}.date-navigation .day span{font-size:10px;white-space:nowrap}
.card{padding:14px;border-radius:13px;margin-bottom:10px}.sectionbar{margin-bottom:8px}.card h3{font-size:16px}.total{padding:12px 16px;border-radius:13px;margin-bottom:10px}.total strong{font-size:28px;margin-top:2px}.total small{font-size:11px}.dish{padding:11px 0}.tiny-note{padding:8px;font-size:11px;margin-top:8px}.footer{margin-top:14px}.preview{max-height:260px}
@media(min-width:700px){.top{padding-left:max(14px,calc((100% - 850px)/2));padding-right:max(14px,calc((100% - 850px)/2))}.container{padding:14px 20px 30px}.date-navigation{max-width:550px;margin-left:auto;margin-right:auto}}

.meal-total{align-items:center;min-height:54px;gap:12px}.meal-total #mealDate{font-size:18px;font-weight:700;letter-spacing:-.3px;margin:0}.meal-total #dayTotal{font-size:27px;white-space:nowrap;margin:0;text-align:right}
.compact-dish{grid-template-columns:minmax(0,1fr) 122px 58px;align-items:center;gap:7px;padding:9px 0;min-height:54px}.compact-dish .dish-name{display:flex;align-items:center;gap:2px;font-size:13px;line-height:1.25;min-width:0}.compact-dish .dish-name>span{min-width:0}.detail-toggle{flex:0 0 22px;width:22px;min-height:36px;border:0;background:transparent;padding:0;color:#70809a;font-size:20px}.detail-toggle[aria-expanded=true]{transform:rotate(180deg)}.dish-detail{grid-column:1/-1;font-size:12px;color:#758298;padding:1px 0 6px;line-height:1.4}.dish-factors{display:flex;align-items:center;justify-content:end;gap:3px;color:#69768b;font-size:11px;white-space:nowrap}.dish-factors label{display:flex;align-items:center;gap:2px}.dish-factors input{width:40px;min-width:0;height:36px;border:1px solid #e1e6ef;border-radius:6px;padding:3px 2px;text-align:center;font-size:12px;background:#fafbfe;color:#253554}.compact-dish .carbs{font-size:17px;white-space:nowrap}.glu-unit{font-size:11px;font-weight:600}.factor-times{font-size:11px}
@media(max-width:360px){.compact-dish{grid-template-columns:minmax(0,1fr) 112px 50px;gap:4px}.dish-factors input{width:36px}.compact-dish .carbs{font-size:16px}.meal-total #mealDate{font-size:16px}.meal-total #dayTotal{font-size:25px}}

/* One native portion picker per dish; no keyboard or saved menu change. */
.compact-dish{grid-template-columns:minmax(0,1fr) 66px 58px;gap:8px;padding:1px 0;min-height:46px}.compact-dish .dish-name{font-size:14px}.dish-title-toggle{display:flex;align-items:center;justify-content:space-between;gap:4px;width:100%;min-width:0;min-height:44px;padding:4px 0;border:0;background:transparent;text-align:left;font-size:14px;font-weight:700;line-height:1.25;color:inherit}.dish-title-toggle>span:first-child{min-width:0}.detail-chevron{font-size:16px;flex:0 0 14px;color:#8390a4}.dish-title-toggle[aria-expanded=true] .detail-chevron{transform:rotate(180deg)}.portion-select{width:66px;height:44px;padding:4px 3px;border:1px solid #dce4f2;border-radius:8px;background:#f4f7fc;color:#3154a1;font:16px system-ui;cursor:pointer}.portion-select:focus-visible,.dish-title-toggle:focus-visible{outline:3px solid #a9bfff;outline-offset:2px}.excluded-dish .dish-name,.excluded-dish .carbs{color:#8b94a3}.excluded-dish .portion-select{color:#8992a1;background:#f1f2f5;border-color:#e5e7ed}.excluded-dish{background:#fafbfc}.dish-detail{padding:4px 0 8px}
@media(max-width:360px){.compact-dish{grid-template-columns:minmax(0,1fr) 62px 50px;gap:6px}.portion-select{width:62px}.compact-dish .dish-name,.dish-title-toggle{font-size:13px}}

/* Smaller picker, with the full-portion calculation alongside it. */
.compact-dish{grid-template-columns:minmax(0,1fr) 55px 55px;gap:6px;min-height:44px}.dish-main{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px;min-width:0}.portion-calculation{white-space:nowrap;color:#788497;font-size:11px;letter-spacing:-.25px}.portion-select{width:55px;height:32px;padding:2px 1px;font-size:14px;border-radius:6px;background:#f1f3f6;color:#52627c;border-color:#e0e4eb}.compact-dish .carbs{font-size:16px}.dish-title-toggle{min-height:38px;font-size:13px}.compact-dish .dish-name{font-size:13px}
@media(max-width:380px){.dish-main{grid-template-columns:minmax(0,1fr);gap:0}.portion-calculation{padding-bottom:4px}.compact-dish{grid-template-columns:minmax(0,1fr) 55px 50px;gap:5px}}

/* A pie icon presents the selected portion; the native select remains accessible. */
.compact-dish{grid-template-columns:minmax(0,1fr) 40px 55px;gap:6px}.portion-circle{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:44px}.portion-pie{display:block;width:27px;height:27px;border:1px solid #d5deec;border-radius:50%;background:conic-gradient(#315dd9 0deg var(--portion-angle),#e2e6ed var(--portion-angle) 360deg);pointer-events:none}.portion-circle .portion-select{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;font-size:16px}.portion-circle:focus-within .portion-pie{outline:3px solid #a9bfff;outline-offset:3px}.dish-title-toggle{justify-content:flex-start;align-items:center;gap:5px}.detail-chevron{display:flex;align-items:center;justify-content:center;align-self:center;flex:0 0 12px;font-size:20px;line-height:1}.dish-title-toggle[aria-expanded=true] .detail-chevron{transform:rotate(90deg)}.dish-title-toggle>span:last-child{min-width:0}
@media(max-width:380px){.compact-dish{grid-template-columns:minmax(0,1fr) 40px 50px;gap:5px}}

/* Tap once to cycle the portion; keep the whole 40 by 44 area clickable. */
button.portion-circle{border:0;padding:0;background:transparent;border-radius:8px;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button.portion-circle:focus-visible{outline:3px solid #a9bfff;outline-offset:1px}button.portion-circle:active .portion-pie{transform:scale(.91)}

#portionStatus{margin:7px 0 0;font-size:11px}.portion-error{color:#a23b30!important}

.photo-media{position:relative}.photo-delete{position:absolute;top:8px;right:8px;width:36px;height:36px;min-height:36px;padding:0;display:flex;align-items:center;justify-content:center;border:1px solid #e3d8d8;border-radius:50%;background:#fffffff2;color:#ad3636;box-shadow:0 1px 5px #0002}.photo-comment{font-size:13px;color:#425474;margin:8px 0;white-space:pre-wrap}.photo-analysis{background:#f5f7fb;border:1px solid #e5e9f1;border-radius:9px;padding:10px;margin:8px 0 12px}.photo-analysis h4{margin:0 0 6px;font-size:12px}.photo-analysis p{margin:0;font-size:12px;white-space:pre-wrap;line-height:1.45}button:disabled{opacity:.55;cursor:wait}

.photo-media .preview{margin-top:0}

.photo-difference{display:flex;align-items:center;gap:8px;margin-top:8px}.photo-difference span{flex:1}.photo-difference button{flex-shrink:0;padding:5px 9px;font-size:12px}.photo-analysis small{display:block;margin-top:8px}

.photo-reset{border:0;background:none;color:var(--blue,#3154bd);padding:0 3px;font-size:16px;cursor:pointer}

.editor-compact.editcard{position:relative;display:grid;grid-template-columns:24px minmax(0,1fr);gap:5px;padding:9px 34px 9px 7px;margin:7px 0;background:white;border-radius:11px}.edit-content{min-width:0}.drag-handle{border:0;background:transparent;color:#8a94a7;font-size:24px;padding:0;touch-action:none;cursor:grab;align-self:stretch;user-select:none}.editor-title{display:flex;align-items:center;gap:3px}.editor-detail-toggle{border:0;background:none;color:#78849a;padding:2px 5px;font-size:23px;flex:none}.editor-detail-toggle[aria-expanded=true]{transform:rotate(90deg)}.editor-name{width:100%;min-width:0;border:1px solid transparent;border-radius:5px;padding:4px;font-size:15px;font-weight:650;color:#18263d;background:transparent}.editor-name:focus{border-color:#b1c2ed;outline:none}.editor-quantities{display:flex;align-items:center;gap:5px;margin:3px 0 0 25px;color:#8490a2;font-size:12px}.editor-quantities label{display:flex;align-items:center;gap:3px}.editor-quantities input{width:58px;min-width:0;font-size:13px;border:1px solid #e4e8ef;border-radius:5px;padding:4px 5px;background:#f6f7fa;color:#34435b}.editor-quantities input::-webkit-inner-spin-button{appearance:none}.editor-result{margin-left:auto;white-space:nowrap;color:#294eaa;font-size:15px;font-weight:700}.editor-delete{position:absolute;top:6px;right:5px;width:28px;height:28px;display:grid;place-items:center;background:#fff3f3;color:#c93939;border:0;border-radius:7px;cursor:pointer}.editor-details textarea{box-sizing:border-box;width:100%;margin:7px 0 0;padding:7px;font:inherit;font-size:12px;min-height:54px;border:1px solid #e4e8ef;border-radius:6px}.editor-dragging{box-shadow:0 3px 12px #30498926;border-color:#7799e5!important;background:#f2f6ff!important}.drag-handle:focus-visible,.editor-delete:focus-visible{outline:2px solid #3154bd;outline-offset:2px}@media(max-width:360px){.editor-quantities{gap:3px;margin-left:0}.editor-quantities input{width:49px}.editor-result{font-size:13px}}

.drag-handle,.drag-handle *{-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important;touch-action:none}.drag-handle{display:grid;place-items:center;min-height:44px;min-width:24px}.drag-handle svg{pointer-events:none}.editor-drag-active #editor,.editor-drag-active #editor *{-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important}.editor-drag-active .drag-handle{cursor:grabbing}

html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{touch-action:manipulation}.shell{width:100%}.container,.card,.edit-content{min-width:0}button,a,input,textarea,select{touch-action:manipulation}.drag-handle{touch-action:none}@media(max-width:700px){input,textarea,select,.editor-name,.editor-quantities input,.editor-details textarea,.field input,.field select,.field textarea,.editrow input{font-size:16px}.editor-quantities input{width:62px}.editor-details textarea{font-size:16px}.toast{max-width:calc(100vw - 24px);overflow-wrap:anywhere}.photo-difference span,.dish-name{overflow-wrap:anywhere}}@media(max-width:360px){.editor-quantities input{width:53px}}


/* Photo review stays inside the existing compact meal rows. */
.photo-changed .portion-calculation del,.photo-changed .carbs del{color:#b33b36;text-decoration-thickness:1.5px}.photo-replaced .dish-name{text-decoration:line-through;text-decoration-color:#b33b36}.photo-proposal,.photo-review-status{grid-column:1/-1;margin:0 0 6px 17px;font-size:12px;line-height:1.4}.photo-proposed-value{display:flex;gap:7px;justify-content:space-between;align-items:baseline;color:#b33b36;font-weight:650;overflow-wrap:anywhere}.photo-proposed-value strong{white-space:nowrap}.photo-review-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.photo-review-actions button{min-height:44px;padding:5px 11px;border:1px solid #dfe5ef;border-radius:8px;background:#fff;color:#52627c;font-size:13px;cursor:pointer}.photo-review-actions .photo-accept{background:#eef2ff;border-color:#b9c8ed;color:#3154bd;font-weight:650}.photo-review-actions button:focus-visible,.photo-review-status button:focus-visible{outline:3px solid #a9bfff;outline-offset:2px}.compact-dish:has(>.photo-review-status){row-gap:0}.photo-review-status{color:#7c8799;display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px;line-height:1.2;margin-top:-4px;margin-bottom:0}.photo-review-status button{border:0;background:transparent;color:#3154bd;font-size:12px;min-height:28px;min-width:44px;padding:2px 4px;line-height:1.2;cursor:pointer}.excluded-dish .portion-calculation{color:#9aa2af}.photo-proposal p{margin:0;color:#68778d}#photoGuideField{margin-top:10px}#mealComment{min-height:60px}#savedPhotoComment{display:none}.compact-dish{scroll-margin-top:16px}

.photo-add-pending .dish-name,.photo-add-pending .portion-calculation,.photo-add-pending .carbs{color:#b33b36}.photo-add-pending .portion-circle{opacity:.4;cursor:default}.photo-added.excluded-dish .dish-name,.photo-added.excluded-dish .portion-calculation,.photo-added.excluded-dish .carbs{color:#8b94a3}

.live-sync-status{min-height:16px;margin:0 0 10px;color:#758198;font-size:12px;line-height:1.4}.live-sync-status[data-state="live"]::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#459879;margin-right:6px}.live-sync-status[data-state="offline"],.live-sync-status[data-state="deferred"]{color:#996330}.meal-share{margin-top:16px;padding-top:14px;border-top:1px solid #e2e7ef}.meal-share>button{width:100%;min-height:44px}.meal-share .hint{margin:8px 0 0;font-size:12px}.meal-share .buttons{margin-top:10px;gap:8px}.meal-share a{min-height:44px;display:inline-flex;align-items:center;text-decoration:none}

.brand{gap:4px;flex-shrink:0}.pdf-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:0;border-radius:9px;background:transparent;color:#294da5;flex-shrink:0}.pdf-icon:hover{background:var(--light)}.pdf-icon:focus-visible{outline:2px solid var(--brand);outline-offset:2px}@media(max-width:360px){.top{flex-wrap:wrap}.topright{margin-left:auto}}

.pdf-viewer{position:fixed;inset:0;width:100%;max-width:none;height:100%;height:100dvh;max-height:none;margin:0;padding:0;border:0;background:#eef1f6;color:var(--ink);overflow:hidden}.pdf-viewer[open]{display:flex;flex-direction:column}.pdf-viewer::backdrop{background:#14213b99}.pdf-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:0 0 auto;padding:calc(10px + env(safe-area-inset-top)) 14px 10px;background:white;border-bottom:1px solid var(--line)}.pdf-toolbar h2{font-size:16px;margin:0}.pdf-actions{display:flex;align-items:center;gap:8px;margin-top:2px}.pdf-actions button,.pdf-actions a{display:inline-flex;align-items:center;min-height:44px;padding:5px 8px;color:#294da5;border:0;border-radius:8px;background:transparent;font-size:13px;text-decoration:none}.pdf-close{display:flex;align-items:center;gap:8px;min-height:44px;padding:8px 12px;color:#294da5;border:1px solid #d2dcf6;border-radius:10px;background:#f4f7ff;font-weight:700;flex-shrink:0}.pdf-close span{font-size:24px;line-height:1}.pdf-scroll{flex:1;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch;padding:12px 12px calc(12px + env(safe-area-inset-bottom));overscroll-behavior:contain}.pdf-pages{--page-width:min(900px,calc(100vw - 24px));min-width:100%;display:flex;flex-direction:column;align-items:center;gap:14px}.pdf-pages.zoomed{--page-width:min(1800px,calc((100vw - 24px)*2));align-items:flex-start}.pdf-page{width:var(--page-width);max-width:none;flex-shrink:0;margin:0;background:white;box-shadow:0 2px 10px #14213b15}.pdf-page canvas{display:block;width:100%;height:auto}.pdf-page figcaption{padding:6px 10px;color:#62718d;font-size:12px}.pdf-viewer #pdfStatus{margin:4px 0 12px;font-size:14px}.pdf-viewer #pdfStatus:empty{display:none}body.pdf-open{overflow:hidden} .pdf-toolbar button:focus-visible,.pdf-toolbar a:focus-visible{outline:2px solid var(--brand);outline-offset:2px}

.top{display:flex;flex-wrap:wrap}.top .brand{gap:4px}.top .topright{margin-left:auto;min-width:0}.cantine-mark{display:block;width:40px;height:40px;object-fit:contain;flex-shrink:0}.logo-reload{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;min-height:44px;flex-shrink:0;padding:0;background:transparent;border:0;border-radius:9px}.logo-reload:hover{background:var(--light)}.logo-reload:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.logo-reload:disabled{opacity:.5}

.topright .auth-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;min-height:44px;flex-shrink:0;padding:0;border:0;border-radius:9px;background:transparent;color:#294da5;text-decoration:none}.topright .auth-icon:hover{background:var(--light)}.topright .auth-icon:focus-visible{outline:2px solid var(--brand);outline-offset:2px}

.account-controls{position:relative}.header-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:30;width:230px;max-width:calc(100vw - 28px);padding:6px;background:var(--surface);border:1px solid var(--line);border-radius:13px;box-shadow:0 8px 28px #14213b1f}.header-menu button,.header-menu .menu-link{display:flex;align-items:center;gap:10px;min-height:44px;width:100%;padding:11px 12px;border:0;border-radius:8px;background:transparent;color:var(--ink);font:inherit;text-align:left;text-decoration:none}.header-menu button:hover,.header-menu .menu-link:hover{background:var(--light)}.header-menu button.active{background:var(--light);color:#294da5;font-weight:650}.header-menu .menu-link{margin-top:5px;border-top:1px solid var(--line);border-radius:0 0 8px 8px;color:#294da5}.header-menu .menu-link svg{width:20px;height:20px;flex-shrink:0}.header-menu button:focus-visible,.header-menu .menu-link:focus-visible{outline:2px solid var(--brand);outline-offset:0}

/* Meal photo and sharing stay next to the date; the conversation follows the dishes. */
#mealView.cols{display:block}.meal-photo-strip{position:relative;display:flex;align-items:flex-end;justify-content:center;gap:24px;margin:4px 0 8px}.meal-photo-strip .photo-media{flex:none}.photo-thumb{display:block;width:160px;height:126px;padding:0;overflow:hidden;border:1px solid #dbe2ed;border-radius:15px;background:#e9edf3;box-shadow:0 2px 7px #14213b0a}.photo-media .photo-thumb .preview{display:block;width:100%;height:100%;max-height:none;object-fit:cover;border-radius:0}.meal-photo-strip .photo-delete{top:4px;right:4px;z-index:2;width:30px;height:30px;min-height:30px}.meal-photo-strip .meal-share{position:absolute;right:0;bottom:0;width:44px;max-width:44px;border:0;margin:0;padding:0}.meal-share .whatsapp-share{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;width:auto;min-width:76px;min-height:72px;border:0;background:transparent;border-radius:12px;color:#178448;font-size:12px;font-weight:650}.whatsapp-share img{width:62px;height:50px}.whatsapp-share:disabled{cursor:default}.share-feedback:empty{display:none}.meal-photo-strip .share-feedback{font-size:11px}.meal-photo-viewer{padding:62px 12px 20px;width:min(94vw,900px);max-height:95dvh;overflow:auto;border:0;border-radius:16px;background:#f7f8fb}.meal-photo-viewer::backdrop{background:#132139c9}.meal-photo-viewer img{display:block;max-width:100%;max-height:78dvh;object-fit:contain;margin:auto}.photo-viewer-close{position:absolute;right:12px;top:10px;background:white;border:1px solid #dbe2ed;color:#294da5;border-radius:9px;padding:8px 12px}.photo-thumb:focus-visible,.whatsapp-share:focus-visible,.photo-viewer-close:focus-visible{outline:3px solid #a9bfff;outline-offset:3px}.photo-discussion-card{margin-top:14px}.photo-analysis{background:transparent;border:0;padding:0;margin:0}.photo-conversation{display:flex;flex-direction:column;gap:9px;max-height:none;overflow:visible;margin-bottom:10px;overscroll-behavior:auto}.photo-chat-message{padding:9px 12px;border-radius:13px;font-size:13px;line-height:1.45;max-width:92%;white-space:pre-wrap;overflow-wrap:anywhere}.chat-user{align-self:flex-end;background:#edf2ff;color:#294da5}.chat-assistant{align-self:flex-start;background:#f2f4f7;color:#52627c}#photoAnalysis{color:#78849a;font-size:12px;margin:5px 0 10px}#photoGuideField{margin:10px 0 6px}#mealComment{min-height:60px;resize:vertical}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#photoHint:not(:empty){display:block!important}.photo-replacement-line{border-left:2px solid #dce6fa}.photo-chat-message:last-child{scroll-margin:10px}

/* A camera occupies the same tile until a meal photo is available. */
.photo-thumb{display:grid;place-items:center;color:#667a9e}.photo-placeholder{grid-area:1/1;width:18px;height:18px}.photo-thumb:has(.preview[src]) .photo-placeholder{display:none}.photo-thumb .preview{grid-area:1/1}.photo-thumb:not(:has(.preview[src])){background:#eef2f9}.photo-thumb:not(:has(.preview[src])):hover{background:#e4ebf7}



/* Account notification settings */
#notificationMenu{display:flex;align-items:center;gap:10px}.notification-dialog{width:min(480px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;border:0;border-radius:22px;padding:24px;color:var(--ink,#202833);box-shadow:0 24px 80px #0003}.notification-dialog::backdrop{background:#17212b70}.notification-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.notification-heading h2{margin:0;font-size:24px}.notification-heading p{font-size:14px;color:#647078;margin:8px 0 20px}#notificationStatus[data-active=true]{color:#247b56}.notification-dialog fieldset{border:1px solid #e5e8eb;border-radius:14px;padding:14px;margin:20px 0}.notification-dialog legend{font-size:14px;font-weight:650;padding:0 6px}.notification-dialog label{display:flex;align-items:center;gap:12px;padding:12px 0;font-size:15px;cursor:pointer}.notification-dialog input[type=checkbox]{width:20px;height:20px;accent-color:#e36a57;flex-shrink:0}.notification-install{background:#fff4ed;border-radius:14px;padding:16px;font-size:14px}.notification-install ol{padding-left:20px;margin:12px 0 0}.notification-install li{margin:8px 0}.notification-dialog .buttons{display:flex;flex-wrap:wrap;gap:10px}.notification-dialog .buttons button{min-height:44px}.notification-dialog .hint{line-height:1.55}#notificationMessage:empty{display:none}@media(max-width:420px){.notification-dialog{padding:20px}.notification-dialog .buttons button{flex:1 1 auto}}

/* Compact status, thumbnail controls and conversation composer. */
.topright{flex-wrap:nowrap}.brand .live-sync-status{display:block;flex:none;width:9px;height:9px;min-height:0;margin:0 0 0 4px;padding:0;border-radius:50%;background:#d08a34;box-shadow:0 0 0 3px #d08a3412}.live-sync-status::before{display:none!important}.brand .live-sync-status[data-state="live"]{background:#459879;box-shadow:0 0 0 3px #45987912}
.photo-thumb{position:relative}.photo-media .photo-thumb .preview{margin:0}.photo-expand{display:none;position:absolute;right:5px;bottom:5px;padding:3px;width:25px;height:25px;color:white;background:#14213b66;border-radius:6px;pointer-events:none}.photo-thumb:has(.preview[src]) .photo-expand{display:block}
#photoAnalysis:empty{display:none}#photoGuideField.photo-composer{position:relative;display:block;margin:8px 0 0}#mealComment{display:block;min-height:44px;height:44px;max-height:144px;padding:10px 48px 10px 13px;border-radius:23px;line-height:22px;resize:none;overflow-y:hidden;background:#f8f9fc}.photo-send{position:absolute;right:6px;bottom:6px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;min-height:32px;border:0;border-radius:50%;padding:0;background:#315dd9;color:white}.photo-send:disabled,.photo-composer:has(textarea:placeholder-shown) .photo-send{background:#97a3b8}.photo-send:focus-visible{outline:3px solid #a9bfff;outline-offset:2px}

.meal-heading{position:relative;display:flex;align-items:center;gap:10px;margin-bottom:14px}.meal-heading .meal-total{flex:1;min-width:0;margin:0;padding:14px 17px;gap:8px}.meal-heading #mealDate{font-size:17px}.meal-heading #dayTotal{font-size:23px}.meal-heading .meal-share{flex:none;width:52px;max-width:52px;margin:0;padding:0;border:0}.meal-heading .whatsapp-share{min-width:52px;width:52px;min-height:52px;padding:0}.meal-heading .whatsapp-share img{width:52px;height:44px}.meal-heading .share-feedback{position:absolute;top:100%;right:0;max-width:220px;padding:6px 9px;background:#fff;box-shadow:0 2px 8px #14213b14;border-radius:8px;z-index:3}.meal-heading .share-feedback:empty{display:none}.meal-heading #shareFallback{position:absolute;right:0;top:calc(100% + 6px);z-index:4;min-width:160px;background:white;padding:6px;border-radius:9px}
.photo-loader{display:none;position:absolute;inset:0;z-index:1;place-items:center;background:#e8eef7cc;pointer-events:none}.photo-loader::after{content:"";width:29px;height:29px;border:3px solid #315dd933;border-top-color:#315dd9;border-radius:50%;animation:photo-spin .8s linear infinite}.photo-loading .photo-loader{display:grid}.photo-loading .photo-expand{display:none!important}@keyframes photo-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.photo-loader::after{animation:none;border-color:#315dd9;border-right-color:transparent}}@media(max-width:360px){.meal-heading{gap:7px}.meal-heading .meal-total{padding:12px 12px}.meal-heading #mealDate{font-size:15px}.meal-heading #dayTotal{font-size:21px}}
/* Header actions and distinct feedback for photo uploads and text corrections. */
.top{gap:12px}.top .brand{margin-right:auto}.meal-heading .meal-total{width:100%}.week-header-actions{display:flex;align-items:center;gap:10px}.week-header-actions .pdf-icon{margin:0}#dishes{position:relative}#dishes.dishes-loading::before{content:"";position:absolute;inset:0;z-index:3;background:#f7f9fd99;border-radius:10px}#dishes.dishes-loading::after{content:"";position:absolute;top:50%;left:50%;z-index:4;width:28px;height:28px;margin:-14px 0 0 -14px;border:3px solid #315dd930;border-top-color:#315dd9;border-radius:50%;animation:photo-spin .8s linear infinite}@media(prefers-reduced-motion:reduce){#dishes.dishes-loading::after{animation:none;border-right-color:transparent}}@media(max-width:360px){.top{gap:7px}.top .brand{gap:7px}}
/* Daily browsing uses the date banner; weekly editing retains its selector. */
#mealView{touch-action:pan-y pinch-zoom}.meal-heading{gap:4px}.meal-day-arrow{display:grid;place-items:center;flex:0 0 32px;width:32px;height:44px;min-height:44px;padding:0;border:0;border-radius:9px;background:transparent;color:#64748e;font-size:25px;line-height:1}.meal-day-arrow:disabled{opacity:.4}.meal-heading .meal-total{padding-left:12px;padding-right:12px}.meal-heading #mealDate{min-width:0;letter-spacing:-.4px}.meal-heading #dayTotal{flex:none}.meal-heading #mealDate{font-size:16px}@media(max-width:360px){.meal-heading{gap:2px}.meal-day-arrow{flex-basis:28px;width:28px}.meal-heading .meal-total{padding-left:10px;padding-right:10px}.meal-heading #mealDate{font-size:14px}.meal-heading #dayTotal{font-size:20px}}
/* Persistent daily chat input, including the iPhone home indicator and keyboard. */
.meal-composer-dock{display:none;position:fixed;left:50%;bottom:var(--meal-keyboard-offset,0px);transform:translateX(-50%);width:min(100%,850px);z-index:12;padding:8px max(12px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left));background:#f5f6f8;border-top:1px solid #e2e7ef;box-shadow:0 -3px 14px #14213b08}.meal-chat-docked .meal-composer-dock{display:block}.meal-keyboard-open .meal-composer-dock{padding-bottom:8px}#mealComposerDock #photoGuideField{margin:0}#mealComposerDock #mealComment{font-size:16px;background:#fff}.meal-chat-docked #mealView{padding-bottom:calc(var(--meal-composer-height,76px) + var(--meal-keyboard-offset,0px) + 12px)}.photo-discussion-card:has(#photoConversation:empty):has(#photoAnalysis:empty):has(#photoHint.hidden){display:none}.meal-chat-docked .toast{bottom:calc(var(--meal-composer-height,76px) + var(--meal-keyboard-offset,0px) + 10px);z-index:15}@media print{.meal-composer-dock{display:none!important}}
/* Persistent app header and daily date/total banner. */
.top{position:sticky;top:0;z-index:40;padding-top:calc(4px + env(safe-area-inset-top,0px));background:#fff}.meal-heading{position:sticky;top:var(--meal-header-height,calc(52px + env(safe-area-inset-top,0px)));z-index:20;background:var(--bg);padding:6px 0;margin-bottom:8px}.photo-thumb:not(:has(.preview[src])){width:72px;height:56px;border-radius:12px}html{scroll-padding-top:calc(var(--meal-header-height,52px) + 76px)}@media print{.top,.meal-heading{position:static}}

/* Quick guide, available from the home header for every visitor. */
.quick-guide-open{flex:none}.quick-guide-dialog{width:min(580px,calc(100vw - 28px));max-height:calc(100dvh - 40px);margin:auto;padding:0;border:0;border-radius:18px;background:#fff;color:var(--ink);box-shadow:0 20px 70px #14213b33;overflow:auto;overscroll-behavior:contain}.quick-guide-dialog::backdrop{background:#14213b88}.quick-guide-heading{position:sticky;top:0;z-index:1;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px 14px;border-bottom:1px solid var(--line);background:#fff}.quick-guide-heading h2{font-size:21px;line-height:1.25;margin:0}.quick-guide-heading p{font-size:13px;line-height:1.5;color:var(--muted);margin:5px 0 0}.quick-guide-heading .auth-icon{flex:none}.quick-guide-body{padding:6px 20px 22px}.quick-guide-steps{padding-left:25px;margin:0}.quick-guide-steps>li{padding:18px 0 18px 5px;border-bottom:1px solid var(--line)}.quick-guide-steps>li::marker{font-weight:750;color:var(--brand)}.quick-guide-body h3{font-size:15px;line-height:1.4;margin:0 0 6px}.quick-guide-body p{font-size:14px;line-height:1.65;margin:0}.quick-guide-portions{display:flex;align-items:center;justify-content:space-between;gap:6px;max-width:360px;margin:14px 0 0}.quick-guide-portion{display:flex;align-items:center;gap:5px;flex-direction:column;font-size:11px}.quick-guide-pie{display:block;width:22px;height:22px;border:1.5px solid var(--brand);border-radius:50%;background:conic-gradient(var(--brand) var(--guide-portion),#eef3ff 0)}.quick-guide-arrow{font-size:13px;color:var(--muted);align-self:flex-start;padding-top:3px}.quick-guide-note{background:var(--light);border-radius:12px;padding:14px;margin:18px 0 0}.quick-guide-note p{font-size:13px}html.quick-guide-active{overflow:hidden}@media(max-width:380px){.quick-guide-heading{padding:16px}.quick-guide-body{padding:4px 16px 18px}.quick-guide-portions{gap:3px}.quick-guide-arrow{font-size:11px}}@media print{.quick-guide-dialog,.quick-guide-open{display:none!important}}

#photoAnalysis { white-space: pre-line; }

/* Sync beside the title; sharing at the screen edge, level with the photo bottom. */
.brand-title{display:flex;align-items:center;gap:8px;white-space:nowrap}.brand-title .live-sync-status{margin:0}.meal-photo-strip .whatsapp-share{display:grid;place-items:center;width:44px;min-width:44px;height:44px;min-height:44px;padding:0;border-radius:10px}.meal-photo-strip .whatsapp-share img{width:30px;height:30px;object-fit:contain}.meal-photo-strip .whatsapp-share:disabled{opacity:.45}.meal-photo-strip .share-feedback{position:absolute;bottom:52px;right:0;width:min(220px,calc(100vw - 24px));margin:0;padding:8px 10px;background:#fff;border-radius:10px;box-shadow:0 2px 10px #14213b14;z-index:8}.meal-photo-strip #shareFallback{position:absolute;bottom:104px;right:0;width:min(220px,calc(100vw - 24px));margin:0;padding:8px;background:#fff;border-radius:10px;box-shadow:0 2px 10px #14213b14;z-index:9}


.photo-row-calculating{display:flex;align-items:center;gap:9px;color:#526784;font-size:14px}.photo-row-spinner{width:16px;height:16px;flex:0 0 16px;border:2px solid #dce4f5;border-top-color:#315ad7;border-radius:50%;animation:photo-row-spin .8s linear infinite}@keyframes photo-row-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.photo-row-spinner{animation:none}}

/* Illustrated meal tutorial inside the existing help dialog. */
.quick-guide-intro{padding:14px 0 6px}
.quick-guide-steps>li>p+p{margin-top:9px}
.quick-guide-example,.quick-guide-more{margin-top:14px;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.quick-guide-more summary{padding:12px;font-size:13px;font-weight:650;line-height:1.5;color:var(--brand);cursor:pointer}
.quick-guide-more summary:focus-visible,.quick-guide-example a:focus-visible{outline:3px solid var(--brand);outline-offset:-3px}
.quick-guide-example figure{margin:0;padding:14px 12px;text-align:center}
.quick-guide-example figure a{display:block;width:100%;max-width:290px;margin:0 auto}
.quick-guide-example img{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:10px}
.quick-guide-example figcaption{max-width:340px;margin:10px auto 0;font-size:12px;line-height:1.5;color:var(--muted)}
.quick-guide-more{margin-top:20px}
.quick-guide-more section{padding:4px 14px 16px}
.quick-guide-more section p{font-size:13px}

/* Keep confirmed meal changes compact; actions remain inside dish details. */
.dish-detail .dish-ingredients{margin:0 0 6px}
.dish-detail .photo-review-status{margin:5px 0 0;line-height:1.5;gap:4px 8px}
.dish-detail .photo-review-status button{min-height:36px}
.compact-dish.photo-replaced-confirmed .dish-name{text-decoration:line-through;text-decoration-color:currentColor}

/* Meal status palette; a quantity-only correction highlights the grams only. */
/* Badge Slate pour les grammes */
.portion-calculation .corrected-grams {
  background-color: #f1f5f9;
  color: #475569;
  padding: 1px 7px;
  border-radius: 6px;
  border: 1px solid #cbd5e1;
  font-size: 10px;
  font-weight: 600;
}

/* Barre verte pour les plats ajoutés */
.compact-dish.photo-added {
  border-left: 4px solid #10b981 !important;
  padding-left: 12px !important;
}
/* Suppression du violet forcé */
.photo-confirmed-replacement * {
  color: inherit !important;
}
.compact-dish.photo-confirmed-addition .dish-name,.compact-dish.photo-confirmed-addition .portion-calculation,.compact-dish.photo-confirmed-addition .carbs{color:#0f766e}
.compact-dish.photo-confirmed-absent .dish-name,.compact-dish.photo-confirmed-absent .portion-calculation,.compact-dish.photo-confirmed-absent .carbs,.compact-dish.photo-replaced-confirmed .dish-name,.compact-dish.photo-replaced-confirmed .portion-calculation,.compact-dish.photo-replaced-confirmed .carbs{color:#6b7280}
.photo-proposed-value,.photo-add-pending .dish-name,.photo-add-pending .portion-calculation,.photo-add-pending .carbs,.photo-proposal>p{color:#92400e}
.photo-changed .portion-calculation del,.photo-changed .carbs del{color:#6b7280}
.photo-replaced .dish-name{text-decoration-color:#6b7280}
.photo-proposal .portion-error,.portion-error{color:#b91c1c}

/* Keep the total and the requested one-decimal insulin calculation together. */
.meal-total{flex-wrap:wrap}
.meal-total .day-total-group{display:flex;align-items:baseline;justify-content:flex-end;gap:6px;white-space:nowrap;margin-left:auto}
.day-insulin{font-size:15px;font-weight:600;letter-spacing:-.2px}
.day-insulin[hidden]{display:none}
@media(max-width:360px){.day-insulin{font-size:13px}.meal-total .day-total-group{gap:4px}}

.photo-presentation-controls{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:6px 10px;margin:10px 0 0;color:#69798e;font-size:12px;line-height:1.4}
.photo-presentation-controls[hidden],.photo-presentation-controls button[hidden]{display:none}
.photo-presentation-controls button{padding:2px 0;min-height:28px;background:transparent;border:0;border-radius:3px;color:#315caa;font:inherit;text-decoration:underline;text-underline-offset:2px}
.photo-presentation-controls button:focus-visible{outline:2px solid #315caa;outline-offset:3px}
.photo-thumb.photo-correcting::before{content:"";position:absolute;z-index:3;top:7px;left:7px;width:17px;height:17px;border-radius:50%;border:3px solid #ffffffbd;border-top-color:#315cda;box-shadow:0 0 0 2px #ffffff9c;animation:photo-correcting-spin .9s linear infinite;pointer-events:none}
.photo-thumb .preview[data-presentation="corrected"]{object-fit:contain}
@keyframes photo-correcting-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.photo-thumb.photo-correcting::before{animation:none}}

/* Intermediate photo size: three quarters of the date banner width. */
.meal-photo-strip{--photo-side-inset:36px;--photo-share-size:32px}
.meal-photo-strip .photo-media:has(.preview[src]){width:calc((100% - 2 * var(--photo-side-inset)) * .75)}
.photo-thumb:has(.preview[src]){width:100%;height:auto;aspect-ratio:45 / 35.5}
.photo-media .photo-thumb:has(.preview[src]) .preview{position:absolute;inset:0}
.meal-photo-strip .meal-share{width:var(--photo-share-size);max-width:var(--photo-share-size)}
.meal-photo-strip .whatsapp-share{width:var(--photo-share-size);min-width:var(--photo-share-size)}
@media(max-width:360px){.meal-photo-strip{--photo-side-inset:30px;--photo-share-size:28px}.meal-photo-strip .whatsapp-share img{width:28px;height:28px}}

/* Ratio details keep dates private and do not block portion changes. */
button.day-insulin{appearance:none;min-height:0;padding:0;border:0;background:transparent;color:inherit;font-family:inherit;line-height:inherit;cursor:pointer}
button.day-insulin:focus-visible{outline:2px solid currentColor;outline-offset:4px}
.meal-ratio-dialog{width:min(420px,calc(100vw - 32px));max-height:85vh;overflow:auto;border:0;border-radius:18px;padding:22px;color:var(--ink,#17243c);box-sizing:border-box}
.meal-ratio-dialog::backdrop{background:#10244066}
.meal-ratio-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.meal-ratio-heading h2{font-size:19px;margin:0}
.meal-ratio-heading button{background:transparent;border:0;color:inherit;font-size:26px;padding:0 8px}
#mealRatioValue{font-size:18px;font-weight:600}
#mealRatioForm{margin-top:18px}
#mealRatioForm[hidden],#mealRatioCorrect[hidden]{display:none}
#mealRatioInput{display:block;width:100%;box-sizing:border-box;margin:8px 0 14px}
.meal-ratio-error{color:#b52f2f;font-size:14px;margin-bottom:0}
/* Admin Glooko action sits directly above WhatsApp. */
.meal-photo-strip .glooko-send{position:relative;display:grid;place-items:center;width:var(--photo-share-size);min-width:var(--photo-share-size);height:44px;min-height:44px;padding:0;border:0;background:transparent;border-radius:8px;margin:0 0 5px}.glooko-send img{width:100%;height:32px;object-fit:contain}.glooko-send:disabled{cursor:default;opacity:.45}.glooko-send.glooko-sent{opacity:1}.glooko-send-badge{position:absolute;right:-4px;top:-1px;font-size:11px;line-height:17px;min-width:17px;text-align:center;background:#167854;color:#fff;border-radius:50%;font-weight:750}.glooko-sending .glooko-send-badge{background:#315dd9}.glooko-send-status:empty{display:none}.meal-photo-strip .glooko-send-status{position:absolute;right:0;bottom:104px;width:min(240px,calc(100vw - 24px));margin:0;padding:8px 10px;background:#fff;color:#17795d;font-size:12px;box-shadow:0 2px 10px #14213b14;border-radius:10px;z-index:9}.meal-photo-strip .glooko-send-error{color:#a33434}.glooko-send:focus-visible{outline:3px solid #a9bfff;outline-offset:3px}.glooko-send-badge[hidden]{display:none}
.meal-photo-strip .glooko-send{width:64px;min-width:64px;right:calc(64px - var(--photo-share-size))}.glooko-send img{width:64px;height:32px}
.meal-photo-strip .glooko-send{background:#1a4a75;padding:5px;border-radius:9px}.glooko-send img{width:54px;height:30px}

/* Glooko XT app icon supplied by the administrator. */
.meal-photo-strip .glooko-send{width:44px;min-width:44px;right:calc((44px - var(--photo-share-size))/2);padding:0;background:transparent;border-radius:10px}.glooko-send img{width:32px;height:32px;border-radius:8px;object-fit:contain}

/* Date and four meal slots share the compact, sticky meal header. */
.meal-context-controls{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;flex:1}
.meal-date-control{position:relative;display:block;max-width:100%;min-height:27px;cursor:pointer;border-radius:5px;overflow:hidden}
.meal-date-control #mealDate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:16px;line-height:27px;color:inherit}
.meal-date-control::after{content:"⌄";position:absolute;right:0;top:2px;pointer-events:none;font-size:15px}
.meal-date-control input{position:absolute;inset:0;width:100%;height:100%;min-width:0;min-height:0;opacity:0;cursor:pointer;box-sizing:border-box}
.meal-date-control:focus-within{outline:2px solid white;outline-offset:2px}
.meal-context-controls #mealType{width:auto;max-width:100%;min-height:32px;margin:0;padding:2px 22px 2px 0;border:0;border-radius:4px;font-size:14px;font-weight:500;color:inherit;background:transparent;cursor:pointer}
.meal-context-controls #mealType option{color:#14213b;background:white}
.meal-context-controls #mealType:focus-visible{outline:2px solid white;outline-offset:2px}
.meal-heading .meal-total{flex-wrap:nowrap;min-height:78px;padding:9px 13px}
.meal-heading .day-total-group{flex-wrap:wrap;row-gap:0;max-width:45%}
.normal-meal-actions{margin:0 0 10px}.normal-meal-actions:has(.hidden){display:none}
.normal-meal-actions button{width:100%;font-size:13px;min-height:40px}
.personal-meal-dialog{width:min(600px,calc(100vw - 24px));max-height:88dvh;overflow:auto;box-sizing:border-box;border:0;border-radius:16px;padding:18px;color:var(--ink,#14213b);background:white}
.personal-meal-dialog::backdrop{background:#14213b88}
.personal-meal-heading{display:flex;align-items:center;gap:12px;justify-content:space-between;margin-bottom:16px}
.personal-meal-heading h2{font-size:17px;margin:0}.personal-meal-heading button{font-size:24px;min-width:44px;border:0;background:transparent}
.personal-meal-dialog>label{font-size:13px}.personal-meal-dialog>input{width:100%;box-sizing:border-box;margin:6px 0 10px}
.personal-food-results{display:grid;gap:4px;margin-bottom:12px;max-height:220px;overflow:auto}
.personal-food-results button{display:flex;flex-direction:column;text-align:left;align-items:flex-start;gap:4px;background:#f4f6fc;padding:10px;font-size:13px;min-height:48px}.personal-food-results small{color:#586b88}
.personal-food-row{display:grid;grid-template-columns:minmax(0,1fr) 76px 70px 36px;gap:6px;align-items:center;margin:10px 0}
.personal-food-row>input{grid-column:1/-2;min-width:0}.personal-food-row>label{display:flex;align-items:center;gap:3px;font-size:12px;grid-row:2}.personal-food-row>label:nth-child(2){grid-column:1/2;max-width:110px}.personal-food-row>label:nth-child(3){grid-column:2/4}.personal-food-row input{width:100%;min-width:0;box-sizing:border-box}.personal-food-row>button{grid-row:1;grid-column:4;font-size:22px;padding:0;border:0;background:transparent;min-height:44px}
#personalMealError{font-size:13px;color:#a33434}
@media(max-width:360px){.meal-heading .meal-total{padding:8px 10px}.meal-context-controls #mealType{font-size:13px}.meal-date-control #mealDate{font-size:14px}.meal-heading .day-total-group{max-width:40%}}

.normal-photos{display:flex;align-items:center;gap:8px;margin:0 0 12px;min-width:0}.normal-photos:has(.normal-photo-gallery.hidden):has(#addMealPhoto.hidden){display:none}.normal-photo-gallery{display:flex;gap:8px;overflow-x:auto;min-width:0;padding:2px}.normal-photo-gallery button{width:64px;height:58px;min-width:64px;padding:0;overflow:hidden;border:1px solid var(--line);border-radius:9px;background:white}.normal-photo-gallery img{width:100%;height:100%;object-fit:cover}.normal-photos>button{flex:none;font-size:13px;padding:7px 10px}#deleteGalleryPhoto{font-size:13px;margin-bottom:8px}

/* A single compact row for date, meal, carbohydrate total and insulin. */
.meal-heading .meal-total{display:grid;grid-template-columns:minmax(0,1fr) max-content minmax(0,1fr);align-items:center;gap:8px;min-height:62px;padding:10px 12px;flex-wrap:nowrap}
.meal-context-controls{display:contents}.meal-date-control{display:block;position:relative;border:0;background:transparent;color:inherit;padding:0 12px 0 0;text-align:left;min-width:0;min-height:40px;max-width:100%;border-radius:5px}
.meal-date-control #mealDate{padding:0;line-height:40px;font-size:14px;letter-spacing:-.4px}.meal-date-control::after{top:9px;font-size:13px}.meal-context-controls #mealType{appearance:none;-webkit-appearance:none;padding:0;text-align:center;text-align-last:center;justify-self:center;font:inherit;font-size:13px;font-weight:500;min-height:40px;width:auto;max-width:86px;background:transparent}.meal-heading .day-total-group{display:flex;flex-wrap:nowrap;gap:5px;max-width:none;margin-left:0;justify-self:end}.meal-heading #dayTotal{font-size:21px}.meal-heading .day-insulin{font-size:12px;white-space:nowrap}
.meal-calendar{border:0;border-radius:20px;width:min(350px,calc(100vw - 30px));max-height:85dvh;overflow:auto;padding:18px;color:var(--ink);background:#fff}.meal-calendar::backdrop{background:#14213b55}.calendar-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.calendar-heading h2{font-size:18px;text-transform:capitalize;margin:0}.calendar-heading button{border:0;background:transparent;color:var(--brand);font-size:27px;width:40px;padding:0}.calendar-weekdays,.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.calendar-weekdays{font-size:11px;color:var(--muted);text-align:center;margin-bottom:8px}.calendar-days button{border:0;border-radius:50%;background:transparent;min-height:38px;aspect-ratio:1;padding:0;font-size:15px;color:var(--ink)}.calendar-days .calendar-other-month{color:#9da5b3}.calendar-days button[aria-current="date"]{box-shadow:inset 0 0 0 1px var(--brand);color:var(--brand)}.calendar-days button[aria-pressed="true"]{background:var(--brand);color:white}.calendar-footer{display:flex;justify-content:space-between;gap:10px;margin-top:16px}.calendar-footer button{font-size:14px;padding:8px 14px}
@media(max-width:380px){.meal-heading .meal-total{gap:5px;padding:9px}.meal-date-control #mealDate{font-size:12px}.meal-context-controls #mealType{font-size:12px;max-width:77px}.meal-heading #dayTotal{font-size:18px}.meal-heading .day-insulin{font-size:11px}.meal-heading .day-total-group{gap:3px}}

.personal-food-row input[readonly]{background:#f5f6f8;border-color:transparent;color:var(--ink);cursor:default}

.meal-date-control::after{content:none}.meal-date-control{padding-right:0}.meal-date-control #mealDate{font-size:15px}.meal-context-controls #mealType{font-size:15px;max-width:102px}.meal-context-controls #mealType[aria-busy="true"]{opacity:1}
@media(max-width:380px){.meal-date-control #mealDate{font-size:13px}.meal-context-controls #mealType{font-size:14px;max-width:94px}}

.compact-dish.normal-quantity-dish{grid-template-columns:minmax(0,1fr) 55px}
@media(max-width:380px){.compact-dish.normal-quantity-dish{grid-template-columns:minmax(0,1fr) 50px}}

.meal-drag-handle{flex:0 0 20px;width:20px;min-height:44px;padding:0;border:0;background:transparent;color:#8996ac;font-size:21px;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}.meal-dragging{opacity:.65;background:#eef2ff;outline:1px solid #bdcbfa;border-radius:7px}.meal-drag-handle:focus-visible{outline:2px solid var(--brand);border-radius:4px}.meal-dragging .meal-drag-handle{cursor:grabbing}

.normal-meal-actions{display:flex;justify-content:center;margin:0}.meal-add-plus{border:0;background:transparent;color:var(--brand);font-size:32px;font-weight:400;line-height:1;min-width:44px;min-height:44px;padding:0}.normal-meal-actions:has(.hidden){display:none}.normal-quantity-dish[data-order-id]{position:relative;overflow:hidden;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:pointer}.normal-quantity-dish[data-order-id]>.dish-main,.normal-quantity-dish[data-order-id]>.carbs{background:#fff;position:relative;z-index:1;transform:translateX(var(--meal-swipe,0px));transition:transform .15s}.meal-swipe-delete{position:absolute;right:0;top:0;bottom:0;width:88px;min-height:44px;border:0;border-radius:0;background:#e54343;color:white;font-size:12px;font-weight:600;opacity:0;pointer-events:none}.meal-swipe-open>.meal-swipe-delete{opacity:1;pointer-events:auto}.meal-quantity-dialog{width:min(340px,calc(100vw - 28px));padding:20px}.meal-quantity-dialog label{display:grid;gap:8px;font-size:14px}.meal-quantity-dialog input{box-sizing:border-box;width:100%;padding:12px;font-size:20px;border:1px solid var(--line);border-radius:9px}.meal-quantity-dialog form>button{width:100%;margin-top:10px}.meal-quantity-dialog h2{font-size:18px}

.meal-food-card{position:relative}.meal-food-card:has(.meal-add-plus:not(.hidden)){padding-bottom:28px;margin-bottom:32px}.meal-food-card .normal-meal-actions{position:absolute;bottom:-24px;left:50%;transform:translateX(-50%);z-index:2}.meal-food-card .meal-add-plus{display:grid;place-items:center;width:48px;height:48px;min-width:48px;border:1px solid #294fca;border-radius:50%;background:linear-gradient(145deg,#416bea,#2949bd);color:white;font-size:36px;font-weight:700;line-height:1;font-family:Arial,sans-serif;padding:0;box-sizing:border-box;box-shadow:0 4px 10px #315dd930,0 0 0 5px var(--bg);transition:transform .15s,box-shadow .15s}.meal-food-card .meal-add-plus:active{transform:scale(.94)}.meal-food-card .meal-add-plus:focus-visible{outline-offset:6px}.meal-food-card .meal-add-plus.hidden{display:none}

.normal-quantity-dish{display:block;padding:0;min-height:0}.meal-swipe-surface{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) 55px;align-items:center;gap:6px;min-height:44px;padding:8px 0;background:white;transform:translateX(var(--meal-swipe,0px));transition:transform .15s}.normal-quantity-dish>.meal-swipe-delete{min-height:0;height:100%;max-height:100%;padding:0}.normal-quantity-dish.meal-dragging>.meal-swipe-surface{background:#eef2ff}@media(max-width:380px){.meal-swipe-surface{grid-template-columns:minmax(0,1fr) 50px;gap:5px}}

.meal-quantity-dialog select{box-sizing:border-box;width:100%;padding:10px;font:inherit;font-size:16px;border:1px solid var(--line);border-radius:9px;background:#f7f9fe;color:var(--ink)}.meal-quantity-dialog #mealQuantityModeField{margin:0}.meal-quantity-dialog #mealQuantityModeField[hidden]{display:none}

.meal-quantity-line{display:grid;grid-template-columns:minmax(76px,0.8fr) minmax(0,1.6fr);gap:10px;align-items:center}.meal-quantity-line>label{min-width:0}.meal-quantity-line input,.meal-quantity-line select{height:50px;margin:0;font-size:18px}.meal-quantity-line input{padding:10px 12px}.meal-quantity-line select{padding:10px 30px 10px 12px}.meal-quantity-line select:disabled{opacity:1;color:var(--ink);-webkit-text-fill-color:var(--ink)}

#personalMealDialog .meal-add-sources{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:6px 0 16px}#personalMealDialog .meal-add-sources button{border:1px solid var(--line);border-radius:12px;background:#f8f9fd;color:#425674;font-size:14px;font-weight:600;min-height:46px;padding:10px 8px}#personalMealDialog .meal-add-sources button[aria-pressed="true"]{background:#edf2ff;border-color:#b7c7f1;color:var(--brand)}#personalMealDialog .meal-add-source-panel[hidden]{display:none}#personalMealDialog .meal-add-source-panel>input{box-sizing:border-box;width:100%;margin:0 0 10px;font-size:16px}#personalMealDialog .meal-add-source-panel>label{display:block;font-size:13px;margin-bottom:7px;color:#61718c}.meal-add-library-choice{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:stretch}.meal-add-library-choice select{box-sizing:border-box;width:100%;min-width:0;border:1px solid var(--line);border-radius:10px;background:#f7f9fd;font:inherit;font-size:15px;padding:10px}.meal-add-library-choice button{font-size:14px;padding:10px 14px}.meal-add-manage{display:inline-block;font-size:12px;margin:10px 0 2px;color:#61718c}.meal-add-draft-title{font-size:13px;font-weight:600;color:#61718c;margin:16px 0 8px;padding-top:12px;border-top:1px solid var(--line)}.meal-add-footer>button{width:100%;margin-top:10px}.meal-add-footer>button[hidden],.meal-add-draft-title[hidden]{display:none}
