:root{
  --forest:#1a3a2a;--moss:#2d6a4f;--sage:#52b788;--mint:#b7e4c7;
  --cream:#f7f3ec;--paper:#fdfaf6;--tc:#c1440e;--tc-light:#fdf0ea;
  --gold:#e9a84c;--gold-light:#fdf6e7;--text:#1a2e22;--muted:#7a8c82;
  --border:#e0dbd0;--white:#fff;--blue:#3a7abf;--blue-light:#eef4fc;
  --purple:#7c5cbf;--purple-light:#f2eefb;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'DM Sans',sans-serif;background:var(--cream);color:var(--text);min-height:100vh}
header{background:var(--forest);padding:0 28px;display:flex;align-items:center;justify-content:space-between;height:66px;position:sticky;top:0;z-index:50;box-shadow:0 2px 20px rgba(0,0,0,.25)}
.logo-area{display:flex;align-items:center;gap:12px}
.logo-icon{width:38px;height:38px;background:var(--moss);border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:20px;overflow:hidden;flex-shrink:0}
.logo-icon img{width:100%;height:100%;object-fit:cover;border-radius:9px}
.logo-icon.has-img{background:transparent}
.logo-text h1{font-family:'Lora',serif;font-size:19px;color:#fff;font-weight:700}
.logo-text span{font-size:10px;color:rgba(255,255,255,.45);text-transform:uppercase;letter-spacing:.5px}
.hdr-stats{display:flex;gap:10px}
.stat-pill{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);border-radius:9px;padding:6px 13px;text-align:center}
.stat-pill strong{display:block;font-size:17px;color:var(--mint);font-family:'Lora',serif;line-height:1}
.stat-pill small{font-size:9px;color:rgba(255,255,255,.4);text-transform:uppercase;letter-spacing:.4px}
.user-badge{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.1);border-radius:20px;padding:6px 14px;cursor:pointer;border:1px solid rgba(255,255,255,.15)}
.user-badge span{color:#fff;font-size:13px;font-weight:500}
.user-avatar{width:28px;height:28px;background:var(--sage);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--forest)}
nav{background:var(--moss);display:flex;padding:0 14px;overflow-x:auto;gap:2px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.3) transparent}
.nav-tab{background:none;border:none;color:rgba(255,255,255,.6);padding:0 15px;height:46px;cursor:pointer;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:500;display:flex;align-items:center;gap:6px;border-bottom:3px solid transparent;transition:all .18s;white-space:nowrap}
.nav-tab:hover{color:rgba(255,255,255,.9)}
.nav-tab.active{color:#fff;border-bottom-color:var(--mint)}
.nbadge{background:var(--tc);color:#fff;font-size:10px;border-radius:10px;padding:1px 6px;font-weight:600}
main{width:100%;padding:22px 24px;box-sizing:border-box}
.tab-panel{display:none}
.tab-panel.active{display:block;animation:fadeIn .2s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.sec-hd{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px;gap:12px;flex-wrap:wrap}
.sec-hd h2{font-family:'Lora',serif;font-size:23px;color:var(--forest);font-weight:700;letter-spacing:-.4px}
.sec-hd p{font-size:13px;color:var(--muted);margin-top:3px}
.card{background:var(--white);border-radius:13px;padding:18px;margin-bottom:12px;box-shadow:0 1px 3px rgba(0,0,0,.06),0 4px 14px rgba(0,0,0,.04);border:1px solid rgba(0,0,0,.04)}
.card-lbl{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-bottom:12px}
.btn{border:none;border-radius:8px;padding:8px 15px;font-family:'DM Sans',sans-serif;font-size:13px;cursor:pointer;font-weight:500;transition:all .15s;display:inline-flex;align-items:center;gap:5px;line-height:1}
.btn-p{background:var(--moss);color:#fff}.btn-p:hover{background:var(--forest)}
.btn-s{background:#edf7f1;color:var(--moss);border:1.5px solid var(--mint)}
.btn-g{background:none;color:var(--muted);border:1.5px solid var(--border)}.btn-g:hover{border-color:#bbb;color:#555}
.btn-outline{background:#fff;color:var(--forest);border:1.5px solid var(--border)}.btn-outline:hover{border-color:var(--moss)}
.btn-gold{background:var(--gold-light);color:#8a5a00;border:1.5px solid #f0d090}
.btn-red{background:var(--tc-light);color:var(--tc);border:1.5px solid #f5c4ae}
.btn-blue{background:var(--blue-light);color:var(--blue);border:1.5px solid #c0d8f5}
.btn-purple{background:var(--purple-light);color:var(--purple);border:1.5px solid #c9bde8}
.btn-sm{padding:5px 10px;font-size:12px}
.btn-icon{background:none;border:none;cursor:pointer;font-size:15px;padding:3px 5px;border-radius:5px;color:var(--muted);transition:all .15s}
.btn-icon:hover{background:#f0ede8;color:var(--text)}
input,select,textarea{border:1.5px solid var(--border);border-radius:8px;padding:8px 10px;font-family:'DM Sans',sans-serif;font-size:13px;color:var(--text);background:#fff;transition:border-color .15s;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--sage)}
textarea{resize:vertical;min-height:68px}
.fl{display:block;font-size:10px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px}
.fg{display:flex;flex-direction:column;overflow:visible}
.fr{display:flex;gap:10px;margin-bottom:13px;flex-wrap:wrap;overflow:visible}
.fr .fg{flex:1;min-width:110px}
.fr .fg input,.fr .fg select,.fr .fg textarea{width:100%}
.divider{height:1px;background:var(--border);margin:12px 0}

/* MULTISELECT DROPDOWN */
.ms-wrap{position:relative;overflow:visible;z-index:10}
.ms-trigger{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;border:1.5px solid var(--border);border-radius:8px;cursor:pointer;background:#fff;font-size:13px;user-select:none;min-height:36px}
.ms-trigger:hover{border-color:var(--sage)}
.ms-trigger.open{border-color:var(--moss);border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom:1.5px solid var(--moss)}
.ms-placeholder{color:var(--muted)}
.ms-arrow{font-size:11px;color:var(--muted);transition:transform .15s}
.ms-trigger.open .ms-arrow{transform:rotate(180deg)}
.ms-inline-opts{border:1.5px solid var(--moss);border-top:none;border-radius:0 0 8px 8px;background:#fff;max-height:220px;overflow-y:auto;display:grid;grid-template-columns:1fr 1fr;gap:0;box-shadow:0 4px 12px rgba(0,0,0,.12);z-index:100}
.ms-inline-opts.single-col{grid-template-columns:1fr}
.ms-opt{display:flex;align-items:center;gap:6px;padding:4px 10px;cursor:pointer;font-size:12px}
.ms-opt:hover{background:var(--cream)}
.ms-opt input{accent-color:var(--forest);width:14px;height:14px;flex-shrink:0}
.ms-opt.allergen input{accent-color:#c0392b}
.ms-opt.allergen{color:#8b3a00}
.ms-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.ms-tag{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 8px;border-radius:12px;font-weight:500}
.ms-tag.dietary{background:#edf7f1;color:var(--forest);border:1px solid var(--mint)}
.ms-tag.allergen{background:#fdf0e8;color:#8b3a00;border:1px solid #f5c4ae}
.ms-tag.occasion{background:#e8f4ff;color:#2a6aad;border:1px solid #c3daf5}
.ms-tag.packaging{background:#f0ecfc;color:#5a2da0;border:1px solid #c9bde8}
.ms-tag.seasonal{background:#fef9e8;color:#7a6200;border:1px solid #e8d87a}
.ms-tag-x{cursor:pointer;opacity:.6;font-size:13px;line-height:1}
.admin-nav-item{padding:10px 16px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0ede8;display:flex;align-items:center;gap:9px;transition:background .12s;color:var(--text)}
.admin-nav-item:hover{background:var(--cream)}
.admin-nav-item.active{background:#edf7f1;border-left:3px solid var(--sage);font-weight:600;color:var(--forest)}
.admin-nav-item .admin-nav-count{margin-left:auto;background:#f0ede8;color:var(--muted);font-size:10px;border-radius:10px;padding:1px 7px;font-weight:600}
.admin-nav-item.active .admin-nav-count{background:var(--mint);color:var(--forest)}
.config-item-row{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid #f5f2ed}
.config-item-row:last-child{border-bottom:none}
.config-item-val{flex:1;font-size:13px;font-weight:500;color:var(--forest)}
.config-item-label{font-size:12px;color:var(--muted);flex:1}
.config-drag-handle{color:#ccc;cursor:grab;font-size:18px;padding:0 4px;user-select:none;line-height:1}
.config-drag-handle:active{cursor:grabbing}
.config-item-row.drag-over{background:#edf7f1;border-top:2px solid var(--sage)}
.config-item-row.dragging{opacity:.4}

/* ── Week selector strip ── */
.weeks-strip-wrap{display:flex;align-items:center;gap:10px;margin-bottom:12px;background:var(--white);border-radius:12px;padding:10px 14px;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.weeks-strip{display:flex;gap:8px;overflow-x:auto;flex:1;padding-bottom:2px;scrollbar-width:thin}
.weeks-strip::-webkit-scrollbar{height:4px}.weeks-strip::-webkit-scrollbar-thumb{background:#d0cbc4;border-radius:4px}
.wk-pill{flex-shrink:0;padding:8px 14px;border:1.5px solid var(--border);border-radius:10px;cursor:pointer;transition:all .15s;background:#fff;min-width:110px;text-align:center}
.wk-pill:hover{border-color:var(--sage);background:#f4faf6}
.wk-pill.active{border-color:var(--forest);background:#edf7f1;box-shadow:0 0 0 2px rgba(45,106,79,.12)}
.wk-pill-lbl{font-family:'Lora',serif;font-size:14px;font-weight:700;color:var(--forest);line-height:1.1}
.wk-pill-dates{font-size:9px;color:var(--muted);margin-top:2px;line-height:1.3}
.wk-pill-meals{font-size:11px;font-weight:600;color:var(--moss);margin-top:2px}
.wk-pill-arch{font-size:9px;background:#f5ead0;color:#a07030;border-radius:4px;padding:1px 5px;margin-top:3px;display:inline-block}
.wk-pill.archived-wk{opacity:.7}
/* ── Calendar grid ── */
.plan-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-top:4px}
.plan-cal-day{background:#fff;border:1.5px solid var(--border);border-radius:12px;padding:10px 8px;display:flex;flex-direction:column;gap:6px}
.plan-cal-day.today-col{border-color:var(--sage);background:#f4faf6}
.plan-cal-day-hd{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:2px}
.plan-cal-day-hd span:first-child{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--forest)}
.plan-cal-day-hd span:last-child{font-size:11px;font-weight:600;color:var(--muted)}
.today-col .plan-cal-day-hd span:last-child{color:var(--forest)}
/* Slot cards */
.pcal-slot{border-radius:8px;padding:7px 9px;border:1.5px dashed #ddd;cursor:pointer;transition:all .15s;position:relative;min-height:62px}
.pcal-slot-empty{display:flex;flex-direction:column;gap:3px;background:#fafafa}
.pcal-slot-empty:hover{border-style:solid;background:#f5f2ed}
.pcal-slot-empty.slot-drop-over{border-style:solid;border-color:var(--sage)!important;background:#edf7f1!important}
.pcal-slot-filled{border-style:solid;cursor:pointer}
.pcal-slot-filled:hover{filter:brightness(.97)}
.pcal-slot-filled.slot-drag-over{outline:2.5px dashed var(--forest);outline-offset:2px;filter:brightness(.93)}
.pcal-slot-lbl{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;display:block;margin-bottom:3px}
.pcal-slot-empty-hint{font-size:11px;color:#bbb;font-style:italic}
.pcal-session-name{font-size:12px;font-weight:700;color:var(--forest);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:3px}
.pcal-session-meta{font-size:10px;color:var(--muted);line-height:1.5}
.pcal-remove{position:absolute;top:4px;right:5px;background:none;border:none;cursor:pointer;font-size:12px;color:rgba(0,0,0,.25);padding:1px 3px;border-radius:4px;line-height:1}
.pcal-remove:hover{color:#c0392b;background:rgba(192,57,43,.1)}
/* Legacy meal pills (unscheduled) */
.plan-cal-meal{font-size:11px;border-radius:6px;padding:3px 7px;margin-bottom:3px;display:flex;justify-content:space-between;align-items:center;gap:4px}
.plan-cal-meal.has-stock{background:#edf7f1;color:var(--moss);border:1px solid #b7dfc8}
.plan-cal-meal.no-stock{background:var(--tc-light);color:var(--tc);border:1px solid #f5c4ae}
.plan-cal-meal.part-stock{background:#fff8e7;color:#8a5a00;border:1px solid #f5d89a}
.plan-cal-unscheduled{background:#f9f7f4;border:1.5px dashed var(--border);border-radius:10px;padding:10px 12px;margin-top:10px}
.wp-hd{background:var(--white);border-radius:13px;padding:16px 20px;margin-bottom:12px;box-shadow:0 1px 3px rgba(0,0,0,.06);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}
.wp-title{font-family:'Lora',serif;font-size:20px;color:var(--forest);font-weight:700}
.prog-bar-wrap{background:#e8ede9;border-radius:20px;height:5px;width:100px;overflow:hidden}
.prog-bar-fill{background:linear-gradient(90deg,var(--moss),var(--sage));height:100%;border-radius:20px;transition:width .5s}
.add-meal-box{transition:border-color .3s;background:var(--white);border-radius:13px;padding:10px 16px;border:2px dashed var(--border);display:flex;gap:9px;align-items:flex-end;flex-wrap:wrap}
.plan-tbl{background:var(--white);border-radius:13px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.plan-th{background:#f5f2ed;display:grid;grid-template-columns:2fr 80px 65px 75px 115px 85px 44px 90px 44px 28px;padding:9px 16px;font-size:9px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.7px;gap:6px}
.plan-row{display:grid;grid-template-columns:2fr 80px 65px 75px 115px 85px 44px 90px 44px 28px;padding:11px 16px;align-items:center;gap:6px;border-top:1px solid #f0ede8;font-size:13px}
.plan-row:hover{background:#fdfaf6}
.plan-total-row{background:#f0f7f3;display:grid;grid-template-columns:2fr 80px 65px 75px 115px 85px 44px 90px 44px 28px;padding:11px 16px;align-items:center;gap:6px;border-top:2px solid #d8ede3;font-size:13px;font-weight:700}
/* Calendar planner view */
.plan-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-top:12px}
.plan-cal-day{background:#fff;border:1.5px solid var(--border);border-radius:12px;min-height:160px;max-height:calc(100vh - 420px);padding:10px 8px;display:flex;flex-direction:column;gap:6px;transition:border-color .15s,background .15s;overflow:hidden}
.plan-cal-day.today-col{border-color:var(--sage);background:#f4faf6}
.plan-cal-day.cal-drop-over{border-color:var(--forest);background:#e8f5ee;border-style:dashed}
.plan-cal-day-hd{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;margin-bottom:2px;display:flex;justify-content:space-between;letter-spacing:.4px;flex-shrink:0}
.plan-cal-day.today-col .plan-cal-day-hd span:first-child{color:var(--forest)}
.pcal-sessions{display:flex;flex-direction:column;gap:5px;overflow-y:auto;padding-right:2px;flex-shrink:1}
.pcal-drop-zone{flex:1;min-height:48px;border-radius:8px;transition:background .15s,border-color .15s}
.plan-cal-day.cal-drop-over .pcal-drop-zone{background:#d4edda;border:1.5px dashed var(--forest)}
.pcal-session{position:relative;border-radius:8px;padding:6px 8px;padding-right:24px;cursor:pointer;transition:filter .1s;border:1.5px solid transparent}
.pcal-session:hover{filter:brightness(.96)}
.pcal-session.has-stock{background:#edf7f1;border-color:#b7dfc8}
.pcal-session.no-stock{background:#fef2f2;border-color:#f5c4ae}
.pcal-session.part-stock{background:#fff8e7;border-color:#f5d89a}
.pcal-session-num{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;opacity:.55;margin-bottom:2px}
.pcal-session-name{font-size:12px;font-weight:700;color:var(--forest);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:3px}
.pcal-session-meta{font-size:10px;color:var(--muted);display:flex;gap:5px;align-items:center;flex-wrap:wrap}
.pcal-remove{position:absolute;top:4px;right:5px;background:none;border:none;cursor:pointer;font-size:12px;color:rgba(0,0,0,.25);line-height:1;padding:2px;border-radius:4px}
.pcal-remove:hover{color:#c0392b;background:rgba(192,57,43,.1)}
.pcal-add-btn{width:100%;padding:6px;border:1.5px dashed var(--border);background:none;border-radius:7px;font-size:11px;color:var(--muted);cursor:pointer;font-weight:600;flex-shrink:0;transition:all .15s}
.pcal-add-btn:hover{border-color:var(--sage);color:var(--forest);background:#f4faf6}
.plan-cal-meal{font-size:11px;border-radius:6px;padding:3px 7px;margin-bottom:3px;display:flex;justify-content:space-between;align-items:center;gap:4px}
.plan-cal-meal.has-stock{background:#edf7f1;color:var(--moss);border:1px solid #b7dfc8}
.plan-cal-meal.no-stock{background:var(--tc-light);color:var(--tc);border:1px solid #f5c4ae}
.plan-cal-meal.part-stock{background:#fff8e7;color:#8a5a00;border:1px solid #f5d89a}
.plan-cal-unscheduled{background:#f9f7f4;border:1.5px dashed var(--border);border-radius:10px;padding:10px 12px;margin-top:10px}
.cook-day-card{background:#edf7f1;border:1px solid var(--mint);border-radius:9px;padding:9px 12px;min-width:130px;flex-shrink:0}
.schedule-scroll{display:flex;gap:9px;flex-wrap:wrap}

/* STOCK INDICATOR on recipe cards */
.stock-indicator{font-size:10px;font-weight:600;padding:2px 7px;border-radius:4px;display:inline-block;margin-bottom:5px}
.stock-full{background:#edf7f1;color:var(--moss)}
.stock-partial{background:#fdf6e7;color:#8a5a00}
.stock-none{background:#fdf0ea;color:var(--tc)}
/* recipe-card redesigned below */










.rc-note{font-size:10px;color:#7a6a50;background:var(--gold-light);border-radius:5px;padding:3px 6px;margin-bottom:5px;border-left:3px solid var(--gold)}



/* recipe grid — always 3 columns */


/* Category headers span all 3 cols */

.variant-tag{display:inline-block;background:var(--gold-light);color:#8a5a00;border-radius:20px;padding:1px 7px;font-size:10px;font-weight:600;margin-bottom:5px;border:1px solid #f0d090}
/* List view mode */









/* BARCODE */
.barcode-wrap{background:#fff;border:1.5px solid var(--border);border-radius:8px;padding:10px 14px;display:inline-block;text-align:center}
.barcode-bars{display:flex;gap:0;height:38px;align-items:flex-end;justify-content:center;margin-bottom:5px}
.barcode-text{font-size:10px;letter-spacing:2px;color:#333;font-family:monospace;margin-top:3px}
.batch-barcode-pill{display:inline-flex;align-items:center;gap:7px;background:var(--purple-light);border:1.5px solid #c9bde8;border-radius:8px;padding:5px 10px;font-family:monospace;font-size:12px;color:var(--purple);font-weight:700}

/* PREP LOG */
.prep-tbl{background:var(--white);border-radius:13px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.prep-th{background:#f5f2ed;display:grid;grid-template-columns:2fr 110px 1fr 70px 100px 100px 160px 90px;padding:9px 16px;font-size:9px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.7px;gap:8px}
.prep-row{display:grid;grid-template-columns:2fr 110px 1fr 70px 100px 100px 160px 90px;padding:11px 16px;align-items:center;gap:8px;border-top:1px solid #f0ede8;font-size:13px;transition:background .12s;cursor:pointer}
.prep-row:hover{background:#fdfaf6}
/* Production status badge on prep row */
.prod-status-full{display:inline-flex;align-items:center;gap:4px;background:#edf7f1;color:var(--moss);border:1px solid #b7dfc8;border-radius:20px;padding:3px 9px;font-size:11px;font-weight:700}
.prod-status-partial{display:inline-flex;align-items:center;gap:4px;background:#fff8e7;color:#8a5a00;border:1px solid #f5d89a;border-radius:20px;padding:3px 9px;font-size:11px;font-weight:700}
.prod-status-none{display:inline-flex;align-items:center;gap:4px;background:#fdf0ea;color:var(--tc);border:1px solid #f5c4ae;border-radius:20px;padding:3px 9px;font-size:11px;font-weight:700}
.bb-ok{background:#edf7f1;color:var(--moss);border:1px solid var(--mint)}
.bb-warn{background:var(--gold-light);color:#8a5a00;border:1px solid #f0d090}
.bb-exp{background:var(--tc-light);color:var(--tc);border:1px solid #f5c4ae}
.bb-badge{display:inline-block;border-radius:20px;padding:2px 8px;font-size:10px;font-weight:600}
.team-tag{background:#edf7f1;color:var(--moss);border:1.5px solid var(--mint);border-radius:20px;padding:4px 11px;font-size:12px;cursor:pointer;display:flex;align-items:center;gap:5px;font-family:'DM Sans',sans-serif}
.team-tag .rm{color:var(--tc);font-size:14px;cursor:pointer;margin-left:2px}

/* STOCK LOTS */
.stock-alert-bar{background:var(--tc-light);border:1px solid #f5c4ae;border-radius:11px;padding:12px 16px;margin-bottom:14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.stock-summary-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.ssc{border-radius:11px;padding:13px 16px}
.ssc strong{font-family:'Lora',serif;font-size:22px;font-weight:700;display:block;line-height:1.1}
.ssc span{font-size:11px;color:var(--muted)}
.lot-tbl{background:var(--white);border-radius:13px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.lot-th{background:#f5f2ed;display:grid;grid-template-columns:1.8fr 1fr 80px 60px 100px 100px 110px 90px 70px;padding:9px 16px;font-size:9px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.7px;gap:6px}
.lot-row{display:grid;grid-template-columns:1.8fr 1fr 80px 60px 100px 100px 110px 90px 70px;padding:10px 16px;align-items:center;gap:6px;border-top:1px solid #f0ede8;font-size:13px;transition:background .12s}
.lot-row:hover{background:#fdfaf6}
.lot-row.expiring{background:#fffbf0}
.lot-row.expired{background:#fff5f3;opacity:.75}
.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:4px}
/* STOCK GROUPED */
.stock-group{background:var(--white);border-radius:13px;margin-bottom:10px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.stock-group-hd{display:flex;align-items:center;gap:12px;padding:13px 18px;cursor:pointer;user-select:none;transition:background .12s}
.stock-group-hd:hover{background:#fafdf7}
.stock-group-name{font-family:'Lora',serif;font-size:15px;font-weight:700;color:var(--forest);flex:1}
.stock-group-total{font-family:'Lora',serif;font-size:16px;color:var(--moss);font-weight:700;min-width:90px;text-align:right}
.stock-group-body{display:none;border-top:1px solid #f0ede8}
.stock-group-body.open{display:block}
.lot-detail-hd{background:#f9f7f4;display:grid;grid-template-columns:1fr 85px 78px 85px 85px 105px 85px 70px;padding:7px 16px 7px 36px;font-size:9px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;gap:6px;border-bottom:1px solid #f0ede8}
.lot-detail-row{display:grid;grid-template-columns:1fr 85px 78px 85px 85px 105px 85px 70px;padding:9px 16px 9px 36px;align-items:center;gap:6px;border-bottom:1px solid #f5f5f0;font-size:12px}
.lot-detail-row:hover{background:#fdfaf6}
.lot-detail-row:last-child{border-bottom:none}
.lot-detail-row.lot-expired{opacity:.6;background:#fff8f7}
.lot-detail-row.lot-expiring{background:#fffdf5}
.mvmt-pill{display:inline-block;border-radius:20px;padding:2px 9px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}
.mvmt-used{background:#edf7f1;color:var(--moss);border:1px solid var(--mint)}
.mvmt-disposed{background:var(--tc-light);color:var(--tc);border:1px solid #f5c4ae}
.mvmt-market{background:var(--purple-light);color:var(--purple);border:1px solid #c9bde8}
.mvmt-produced{background:#edf7f1;color:var(--moss);border:1px solid var(--mint)}
.mvmt-distributed{background:var(--blue-light);color:var(--blue);border:1px solid #c0d8f5}
.mvmt-meal-disposed{background:var(--tc-light);color:var(--tc);border:1px solid #f5c4ae}
/* Prep modal sub-tabs */
.prep-tabs{display:flex;gap:0;margin-bottom:16px;border:1.5px solid var(--border);border-radius:10px;overflow-x:auto;overflow-y:hidden;flex-shrink:0;scrollbar-width:none}
.prep-tabs::-webkit-scrollbar{display:none}
.prep-tab-btn{flex:0 0 auto;padding:9px 10px;background:#fff;border:none;cursor:pointer;font-size:12px;font-weight:600;color:var(--muted);transition:all .15s;white-space:nowrap}
.prep-tab-btn.active{background:var(--forest);color:#fff}
.prep-tab-btn:not(:last-child){border-right:1.5px solid var(--border)}
.stock-sub-tab{padding:9px 20px;background:#fff;border:none;border-bottom:3px solid transparent;cursor:pointer;font-size:13px;font-weight:600;color:var(--muted);transition:all .15s;white-space:nowrap}
.stock-sub-tab.active{color:var(--forest);border-bottom-color:var(--forest);}

/* ── Unified Stock View ── */
.stock-alert-chips{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.stock-alert-chip{display:flex;align-items:center;gap:6px;padding:6px 14px;border-radius:20px;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;border:1.5px solid transparent}
.stock-alert-chip:hover{transform:translateY(-1px);box-shadow:0 3px 10px rgba(0,0,0,.06)}
.stock-alert-chip.sac-urgent{background:#fde8e8;color:var(--tc);border-color:#f5c4b8}
.stock-alert-chip.sac-warn{background:var(--gold-light);color:var(--gold);border-color:#f0d090}
.stock-alert-chip.sac-ok{background:#edf7f1;color:var(--forest);border-color:var(--mint)}
.stock-alert-chip.sac-info{background:#e8f0fc;color:#2a6aad;border-color:#b8d4f0}
.stock-alert-chip.active{box-shadow:0 0 0 2px currentColor}
.sac-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;border-radius:11px;font-size:11px;font-weight:700;padding:0 6px;color:#fff}
.sac-urgent .sac-count{background:var(--tc)}.sac-warn .sac-count{background:var(--gold)}.sac-ok .sac-count{background:var(--forest)}.sac-info .sac-count{background:#2a6aad}

.stock-filter-bar{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap;align-items:center}
.stock-filter-bar input[type="search"]{flex:1;min-width:200px;padding:9px 14px 9px 36px;border:1.5px solid var(--border);border-radius:10px;font-size:13px;font-family:'DM Sans',sans-serif;background:white url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%238a8578' viewBox='0 0 16 16'%3E%3Cpath d='M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85zm-5.242.156a5 5 0 1 1 0-10 5 5 0 0 1 0 10z'/%3E%3C/svg%3E") 12px center no-repeat;transition:border-color .2s}
.stock-filter-bar input[type="search"]:focus{outline:none;border-color:var(--moss)}
.stock-filter-sep{width:1px;height:28px;background:var(--border);margin:0 2px}
.stock-type-pill{padding:7px 14px;border-radius:20px;font-size:12px;font-weight:600;border:1.5px solid var(--border);background:#fff;cursor:pointer;transition:all .15s;color:var(--muted)}
.stock-type-pill:hover{border-color:var(--moss);color:var(--forest)}
.stock-type-pill.active{background:var(--forest);color:#fff;border-color:var(--forest)}
.stock-hide-exp-label{display:flex;align-items:center;gap:5px;font-size:12px;cursor:pointer;padding:6px 12px;border:1.5px solid var(--border);border-radius:20px;background:#fff;color:var(--muted);white-space:nowrap}
.stock-actions-row{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.stock-actions-row .btn{font-size:13px;padding:9px 18px}
.pill-ct{display:inline-block;font-size:10px;background:rgba(0,0,0,.08);border-radius:8px;padding:1px 6px;margin-left:3px;min-width:16px;text-align:center}
.stock-type-pill.active .pill-ct{background:rgba(255,255,255,.25)}
.sfr-inline-deduct{display:flex;gap:8px;padding:12px 18px;background:#edf7f1;border-top:1px solid var(--mint);align-items:center;flex-wrap:wrap}
.sfr-inline-deduct .sid-label{font-weight:600;color:var(--forest);white-space:nowrap;font-size:12px}
.sfr-inline-deduct input,.sfr-inline-deduct select{padding:7px 10px;border:1.5px solid var(--mint);border-radius:8px;font-size:12px;background:#fff;font-family:'DM Sans',sans-serif}
.sfr-inline-deduct input:focus,.sfr-inline-deduct select:focus{outline:none;border-color:var(--forest)}
.sfr-inline-deduct .btn{padding:7px 14px;font-size:12px}

/* Stock flat list rows */
.stock-flat-list{display:flex;flex-direction:column;gap:4px}
.stock-flat-row{display:grid;grid-template-columns:32px 2fr 80px 70px 120px 80px;align-items:center;gap:6px;padding:11px 16px;background:var(--white);border:1.5px solid var(--border);border-radius:12px;cursor:pointer;transition:all .15s}
.stock-flat-row:hover{border-color:var(--moss);box-shadow:0 2px 8px rgba(45,106,79,.05)}
.stock-flat-row.sfr-expanded{border-color:var(--moss);border-bottom-left-radius:0;border-bottom-right-radius:0;margin-bottom:0}
.sfr-dot{width:10px;height:10px;border-radius:50%;justify-self:center}
.sfr-name{font-weight:600;font-size:14px;display:flex;align-items:center;gap:8px;overflow:hidden}
.sfr-type-badge{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:2px 7px;border-radius:6px;flex-shrink:0}
.sfr-badge-meal{background:#e8f4e8;color:var(--moss);border:1px solid var(--mint)}
.sfr-badge-pkg{background:#f0ecfc;color:#5a2da0;border:1px solid #d5c8f0}
.sfr-qty{font-family:'Lora',serif;font-weight:700;font-size:16px;text-align:right;color:var(--forest)}
.sfr-unit{font-size:12px;color:var(--muted)}
.sfr-expiry{font-size:12px;font-weight:600;text-align:right;white-space:nowrap}
.sfr-exp-ok{color:var(--muted)}.sfr-exp-warn{color:var(--gold)}.sfr-exp-danger{color:var(--tc)}.sfr-exp-empty{color:#bbb;font-style:italic;font-weight:400}
.stock-flat-row.sfr-empty{opacity:.45}
.sfr-actions{display:flex;gap:4px;justify-content:flex-end}

/* Expanded detail panel */
.sfr-detail{background:#faf9f6;border:1.5px solid var(--moss);border-top:none;border-radius:0 0 12px 12px;margin-bottom:4px;overflow:hidden;animation:sfrSlide .2s ease}
@keyframes sfrSlide{from{max-height:0;opacity:0}to{max-height:600px;opacity:1}}
.sfr-lot-hd{display:grid;grid-template-columns:1.2fr 75px 60px 80px 100px 1fr 75px 60px;padding:7px 18px;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);background:#f5f2ed;border-bottom:1px solid var(--border);gap:6px}
.sfr-lot-row{display:grid;grid-template-columns:1.2fr 75px 60px 80px 100px 1fr 75px 60px;padding:9px 18px;font-size:12px;border-bottom:1px solid #f0ede8;align-items:center;gap:6px}
.sfr-lot-row:last-child{border-bottom:none}
.sfr-lot-row:hover{background:#fdfaf6}
.sfr-lot-rem{font-weight:700;text-align:right}
.sfr-lot-rem.rem-low{color:var(--tc)}.sfr-lot-rem.rem-ok{color:var(--moss)}.sfr-lot-rem.rem-zero{color:#bbb}
.sfr-summary{padding:8px 18px;background:#f5faf7;border-top:1px solid #e0ede5;display:flex;justify-content:space-between;font-size:12px;font-weight:600}

@media(max-width:768px){
  .stock-flat-row{grid-template-columns:28px 1fr 70px;gap:4px;padding:10px 12px}
  .sfr-unit,.sfr-expiry,.sfr-actions{display:none}
  .sfr-name{font-size:13px}.sfr-qty{font-size:14px}
  .sfr-lot-hd,.sfr-lot-row{grid-template-columns:1fr 65px 65px;font-size:11px}
  .sfr-lot-hd>:nth-child(n+4),.sfr-lot-row>:nth-child(n+4){display:none}
  .stock-filter-bar{gap:6px}.stock-alert-chips{gap:6px}
  .stock-alert-chip{padding:5px 10px;font-size:11px}
}
.prep-section{display:none}.prep-section.active{display:block}
/* Photo upload grid */
.photo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:8px}
.photo-slot{aspect-ratio:1;border:2px dashed var(--border);border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;background:#fafaf8;transition:all .15s;overflow:hidden;position:relative}
.photo-slot:hover{border-color:var(--sage);background:#f0f7f3}
.photo-slot img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;border-radius:8px}
.photo-slot .photo-rm{position:absolute;top:4px;right:4px;background:rgba(0,0,0,.55);color:#fff;border:none;border-radius:50%;width:20px;height:20px;cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center;z-index:2}
.photo-slot .photo-lbl{font-size:11px;color:var(--muted);margin-top:5px;text-align:center}
/* Recipe image grid */
.recipe-img-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}
.recipe-img-slot{aspect-ratio:4/3;border:2px dashed var(--border);border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;background:#fafaf8;transition:all .15s;overflow:hidden;position:relative;min-height:80px}
.recipe-img-slot:hover{border-color:var(--sage);background:#f0f7f3}
.recipe-img-slot img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;border-radius:7px}
.recipe-img-slot .rim-rm{position:absolute;top:4px;right:4px;background:rgba(0,0,0,.55);color:#fff;border:none;border-radius:50%;width:20px;height:20px;cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center;z-index:2}
.recipe-img-slot .rim-icon{font-size:20px}
.recipe-img-slot .rim-lbl{font-size:10px;color:var(--muted);margin-top:4px}
/* Video upload */
.video-upload-slot{border:2px dashed var(--border);border-radius:9px;padding:14px 18px;display:flex;align-items:center;gap:12px;cursor:pointer;background:#fafaf8;transition:all .15s;font-size:12px;color:var(--muted);margin-bottom:6px}
.video-upload-slot:hover{border-color:var(--sage);background:#f0f7f3}
.video-upload-slot.has-video{border-color:var(--mint);background:#f0f7f3;color:var(--forest)}
/* Recipe stock badge */
.rc-stock-badge{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:700;padding:2px 8px;border-radius:20px;margin-top:4px}
.rc-stock-badge.in-stock{background:#d4edda;color:#155724}
.rc-stock-badge.low-stock{background:#fff3cd;color:#856404}
.rc-stock-badge.no-stock{background:#f8d7da;color:#721c24}
/* stock-indicator used in renderRecipes */
.stock-indicator{display:inline-block;font-size:10px;font-weight:600;padding:2px 7px;border-radius:12px;margin:3px 0 2px}
.stock-full{background:#d4edda;color:#155724}
.stock-partial{background:#fff3cd;color:#856404}
.stock-none{background:#f8d7da;color:#721c24}
/* Week target badge in sidebar */
.wk-target{font-size:10px;color:var(--muted);margin-top:1px}
/* Archived week toggle */
.archived-toggle{font-size:11px;cursor:pointer;color:var(--muted);padding:4px 8px;border:none;background:none;text-decoration:underline}

.wk-archived-section{border-top:1px dashed var(--border);margin-top:8px;padding-top:8px}
/* Actual ingredient row in prep log */
.pl-ing-row{display:grid;grid-template-columns:2fr 80px 70px 100px 100px 1.4fr 28px;gap:6px;margin-bottom:5px;align-items:center}
.pl-ing-row input,.pl-ing-row select{padding:6px 8px;font-size:12px}
.hidden-log{display:none}
/* BATCH ENTRY ROWS */
.batch-row-hd{display:grid;padding:7px 12px;font-size:9px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;gap:6px;background:#f5f2ed;border-radius:8px;margin-bottom:4px}
.batch-row{display:grid;gap:6px;padding:7px 8px;align-items:center;border:1.5px solid var(--border);border-radius:9px;margin-bottom:5px;background:#fff;transition:border-color .12s}
.batch-row:hover{border-color:var(--sage)}
.batch-row input,.batch-row select{padding:6px 8px;font-size:12px}
.avail-badge{display:inline-block;background:#edf7f1;border:1px solid var(--mint);border-radius:6px;padding:3px 8px;font-size:11px;color:var(--moss);font-weight:600;white-space:nowrap}
.avail-badge.low{background:var(--gold-light);border-color:#f0d090;color:#8a5a00}
.avail-badge.zero{background:var(--tc-light);border-color:#f5c4ae;color:var(--tc)}

/* INGREDIENT CATALOGUE — compact table */
.ing-tbl-hd{background:#f5f2ed;display:grid;grid-template-columns:2.5fr 90px 90px 90px 80px 80px 120px 70px;padding:9px 16px;font-size:9px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.7px;gap:8px}
.ing-tbl-row{display:grid;grid-template-columns:2.5fr 90px 90px 90px 80px 80px 120px 70px;padding:9px 16px;align-items:center;gap:8px;border-top:1px solid #f0ede8;font-size:13px}
.ing-tbl-row:hover{background:#fdfaf6}
.ing-cat-hd{grid-column:1/-1;background:#f9f7ff;padding:5px 16px;font-size:10px;font-weight:700;color:var(--purple);text-transform:uppercase;letter-spacing:.8px;border-top:2px solid #e8e4f8}
.vendor-tag{display:inline-block;background:var(--blue-light);color:var(--blue);border-radius:20px;padding:2px 8px;font-size:11px;font-weight:500;border:1px solid #c0d8f5}
.cat-tag{display:inline-block;background:#f5f2ed;color:var(--muted);border-radius:20px;padding:2px 8px;font-size:11px}

/* ORDER SHEET */
.order-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
/* PO list */
.po-card{background:#fff;border:1.5px solid var(--border);border-radius:12px;padding:16px 20px;margin-bottom:10px;cursor:pointer;transition:all .15s;display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}
.po-card:hover{border-color:var(--sage);box-shadow:0 2px 8px rgba(0,0,0,.06)}
.po-card-left{display:flex;flex-direction:column;gap:4px}
.po-card-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.po-status-pill{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600;white-space:nowrap}
.po-draft{background:#f5f2ed;color:var(--muted)}
.po-sent{background:var(--blue-light);color:var(--blue)}
.po-partial{background:#fdf6e7;color:#c88a00}
.po-received{background:#edf7f1;color:var(--moss)}
/* PO detail line rows */
.po-line-row{display:grid;grid-template-columns:2fr 55px 70px 65px 70px 70px 75px 80px 65px 75px 1fr 26px;padding:8px 14px;align-items:center;gap:6px;border-top:1px solid #f0ede8;font-size:12px}
.po-line-row:nth-child(even){background:#fafaf8}
.po-line-row.manual-line{background:#f9f7ff}
.po-qty-input{width:72px;text-align:right;padding:4px 7px;font-size:13px;font-weight:700;border:1.5px solid var(--mint);border-radius:6px;color:var(--forest)}
.po-qty-input:focus{outline:none;border-color:var(--sage);box-shadow:0 0 0 2px rgba(82,183,136,.15)}
.sum-card{border-radius:11px;padding:13px 16px}
.sum-card strong{font-family:'Lora',serif;font-size:24px;font-weight:700;display:block;line-height:1.1}
.sum-card span{font-size:11px;color:var(--muted)}
.sum-card.alert{background:var(--tc-light);border:1px solid #f5c4ae}.sum-card.alert strong{color:var(--tc)}
.sum-card.ok{background:#edf7f1;border:1px solid var(--mint)}.sum-card.ok strong{color:var(--moss)}
.sum-card.total{background:#f5f2ed;border:1px solid #e8e2d8}.sum-card.total strong{color:var(--forest)}
.sum-card.cost{background:var(--blue-light);border:1px solid #c0d8f5}.sum-card.cost strong{color:var(--blue)}
.vendor-section{background:var(--white);border-radius:13px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.06);margin-bottom:12px}
.vendor-hd{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#f0f7f3;border-bottom:1px solid #e0ede5;cursor:pointer;user-select:none}
.vendor-hd h3{font-family:'Lora',serif;font-size:15px;color:var(--forest);font-weight:700;display:flex;align-items:center;gap:7px}
.vendor-total{font-family:'Lora',serif;font-size:15px;color:var(--moss);font-weight:700}
.order-thead{display:grid;grid-template-columns:2.5fr 1fr 1fr 1fr 1.2fr;padding:9px 16px;background:#f5f2ed;font-size:9px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.7px;gap:8px}
.order-row{display:grid;grid-template-columns:2.5fr 1fr 1fr 1fr 1.2fr;padding:10px 16px;align-items:center;gap:8px;border-top:1px solid #f0ede8;font-size:13px}
.order-row:hover{background:#fdfaf6}
.vendor-collapsed .vendor-body{display:none}
.oqty{display:inline-flex;align-items:center;gap:4px;font-weight:700;font-size:13px}
.oqty.buy{color:var(--tc)}.oqty.cov{color:var(--moss);font-weight:500;font-size:12px}

/* USERS */
.users-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.user-card{background:var(--white);border-radius:13px;padding:18px;box-shadow:0 1px 3px rgba(0,0,0,.06);display:flex;gap:14px;align-items:center}
.user-av-lg{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;color:#fff;flex-shrink:0}
.user-info{flex:1}
.user-name{font-family:'Lora',serif;font-size:15px;font-weight:700;color:var(--forest)}
.user-role{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.user-email{font-size:12px;color:var(--muted);margin-top:2px}
.role-pill{display:inline-block;border-radius:20px;padding:2px 9px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin-top:5px}
.role-admin{background:#fdf0ea;color:var(--tc)}
.role-chef{background:#edf7f1;color:var(--moss)}
.role-sous{background:var(--blue-light);color:var(--blue)}
.role-vol{background:#f5f2ed;color:var(--muted)}

/* MODALS */
.modal-overlay{position:fixed;inset:0;background:rgba(15,30,20,.55);display:flex;align-items:center;justify-content:center;z-index:100;padding:14px;backdrop-filter:blur(3px)}
.modal-box{background:var(--paper);border-radius:17px;padding:26px 28px;max-width:700px;width:100%;max-height:92vh;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.25);animation:mIn .22s ease;display:flex;flex-direction:column}
.modal-box.sm{max-width:450px}.modal-box.md{max-width:560px}.modal-box.lg{max-width:780px}
@keyframes mIn{from{opacity:0;transform:scale(.96) translateY(12px)}to{opacity:1;transform:none}}
.modal-box h3{font-family:'Lora',serif;font-size:20px;margin-bottom:18px;color:var(--forest)}
.modal-acts{display:flex;justify-content:flex-end;gap:9px;padding-top:14px;margin-top:14px;border-top:1px solid var(--border);flex-shrink:0}
.modal-tabs{display:flex;gap:4px;margin-bottom:18px;background:#f5f2ed;border-radius:9px;padding:4px}
.modal-tab{background:none;border:none;cursor:pointer;padding:7px 13px;border-radius:7px;font-family:'DM Sans',sans-serif;font-size:13px;color:var(--muted);font-weight:500;transition:all .15s}
.modal-tab.active{background:#fff;color:var(--forest);box-shadow:0 1px 4px rgba(0,0,0,.1)}
.modal-scroll{flex:1;overflow-y:auto;overflow-x:visible;padding:2px;min-height:0}
.modal-section{display:none}.modal-section.active{display:block;overflow:visible}
.recipe-section-hd{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.8px;color:var(--forest);border-bottom:1.5px solid var(--mint);padding-bottom:5px;margin:16px 0 10px;opacity:.8}
.ing-row{display:flex;gap:7px;margin-bottom:7px;align-items:center}
.ing-row input:first-child{flex:3}.ing-row input:nth-child(2){flex:1;min-width:0}
.ing-row input.cost-in{flex:1;min-width:0}.ing-row select{flex:1;min-width:0}
.dup-notice{background:var(--gold-light);border:1px solid #f0d090;border-radius:9px;padding:11px 14px;font-size:13px;color:#8a5a00;margin-bottom:14px;display:flex;gap:8px}
.info-box{background:var(--blue-light);border:1px solid #c0d8f5;border-radius:9px;padding:11px 14px;font-size:13px;color:var(--blue);margin-bottom:14px}

/* PICK SHEET */
.pick-section{border:1px solid var(--border);border-radius:10px;margin-bottom:12px;overflow:hidden}
.pick-day-hd{background:var(--forest);color:#fff;padding:11px 16px;font-family:'Lora',serif;font-size:15px;font-weight:700}
.pick-meal-hd{background:#f5f2ed;padding:9px 16px;font-weight:600;font-size:13px;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--border)}
.pick-row{display:grid;grid-template-columns:2fr 80px 50px 100px;padding:9px 16px;align-items:center;border-top:1px solid #f5f5f0;font-size:13px}
.pick-row:hover{background:#fdfaf6}
.pick-checkbox{width:20px;height:20px;border:2px solid var(--border);border-radius:4px;flex-shrink:0;cursor:pointer}

/* EXPORT */
.export-actions{display:flex;gap:8px;flex-wrap:wrap}

/* TOAST */
#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(60px);background:var(--forest);color:#fff;padding:10px 20px;border-radius:20px;font-size:13px;font-weight:500;z-index:999;transition:transform .3s cubic-bezier(.34,1.56,.64,1);white-space:nowrap;box-shadow:0 8px 28px rgba(0,0,0,.2)}
#toast.show{transform:translateX(-50%) translateY(0)}
#toast.toast-warn{background:#c88a00}
#toast.toast-err{background:#c0392b}
.empty-state{background:var(--white);border-radius:13px;padding:40px;text-align:center;color:var(--muted);font-size:14px;border:2px dashed var(--border)}
.wk-check{display:flex;align-items:center;gap:5px;padding:5px 10px;border:1.5px solid var(--border);border-radius:7px;cursor:pointer;font-size:13px;transition:all .15s;user-select:none;background:#fff}
.wk-check.sel{background:#edf7f1;border-color:var(--sage);color:var(--moss);font-weight:600}
.wk-check.wk-conflict{border-color:#f5c96e;background:#fffcf0}
.wk-check.wk-disabled{opacity:.6;cursor:not-allowed;pointer-events:none}
/* ── LOGIN SCREEN ── */
#login-screen{position:fixed;inset:0;background:var(--forest);z-index:9999;display:flex;align-items:center;justify-content:center}
.login-box{background:var(--paper);border-radius:18px;padding:32px 36px;width:100%;max-width:460px;box-shadow:0 24px 80px rgba(0,0,0,.45)}
.login-logo{display:flex;align-items:center;gap:12px;margin-bottom:24px}
.login-logo-icon{width:42px;height:42px;background:var(--moss);border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;overflow:hidden;flex-shrink:0}
.login-logo-icon img{width:100%;height:100%;object-fit:cover;border-radius:10px}
.login-logo h2{font-family:'Lora',serif;font-size:20px;color:var(--forest);font-weight:700;margin:0}
.login-logo small{font-size:10px;color:var(--muted);display:block}
.login-user-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:7px;margin-bottom:18px}
.login-user-btn{background:#f5f2ed;border:2px solid var(--border);border-radius:11px;padding:11px 7px;cursor:pointer;text-align:center;transition:all .15s;display:flex;flex-direction:column;align-items:center;gap:5px}
.login-user-btn:hover{border-color:var(--sage);background:#edf7f1}
.login-user-btn.selected{border-color:var(--moss);background:#edf7f1;box-shadow:0 0 0 3px rgba(82,183,136,.22)}
.login-user-av{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff;margin:0 auto}
.login-user-name{font-size:11px;font-weight:600;color:var(--forest);line-height:1.2}
.login-user-role{font-size:10px;color:var(--muted)}
.pin-dots{display:flex;gap:10px;justify-content:center;margin:12px 0 6px}
.pin-dot{width:13px;height:13px;border-radius:50%;border:2px solid var(--border);background:#fff;transition:all .15s}
.pin-dot.filled{background:var(--moss);border-color:var(--moss)}
.pin-dot.error{background:var(--tc);border-color:var(--tc)}
.pin-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:8px}
.pin-key{background:#f5f2ed;border:1.5px solid var(--border);border-radius:10px;padding:13px;font-size:17px;font-weight:600;cursor:pointer;text-align:center;color:var(--forest);transition:all .12s;user-select:none}
.pin-key:hover{background:#edf7f1;border-color:var(--sage)}
.pin-key:active{transform:scale(.95)}
.pin-key.wide{grid-column:span 2}
.pin-error{color:var(--tc);font-size:12px;text-align:center;min-height:16px;margin-top:4px}
/* ── AUDIT LOG ── */
.audit-row{display:grid;grid-template-columns:120px 110px 1fr;gap:10px;align-items:start;padding:8px 14px;border-bottom:1px solid var(--border);font-size:12px}
.audit-row:hover{background:#fdfaf6}
.audit-pill{display:inline-block;padding:2px 7px;border-radius:8px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}
/* ── ROLE BADGES ── */
.role-badge-manager{background:#e8f4ff;color:#2a6aad}
/* ── LOCK ICON on restricted buttons ── */
.perm-hidden{display:none!important}
/* ── LOGOUT ── */
#logout-btn{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);border-radius:8px;color:rgba(255,255,255,.7);font-size:11px;padding:4px 10px;cursor:pointer;margin-left:6px;transition:all .15s}
#logout-btn:hover{background:rgba(255,255,255,.22);color:#fff}
@media print{
  body>*:not(#print-area){display:none!important}
  #print-area{display:block!important;position:absolute;top:0;left:0;width:100%;min-height:100%;background:#fff;z-index:99999;padding:0}
  #print-area,#print-area *{visibility:visible!important;overflow:visible!important}
  #print-area .no-print{display:none!important}
}

/* Recipe status filter pills */
.rsf-btn{padding:5px 12px;border-radius:20px;border:1.5px solid var(--border);background:#fff;font-size:12px;font-weight:600;cursor:pointer;color:var(--muted);transition:all .15s}
.rsf-btn:hover{border-color:var(--sage);color:var(--forest)}
.rsf-btn.active{border-color:var(--forest);background:var(--forest);color:#fff}
/* Recipe status badge colours on cards */
.rstat-draft{background:#f5f2ed;color:var(--muted);border:1px solid var(--border)}
.rstat-development{background:#e8f0ff;color:#2a4aad;border:1px solid #b3c6f5}
.rstat-inactive{background:#fff3e0;color:#a05000;border:1px solid #f5c880}
.rstat-archived{background:#f0f0f0;color:#777;border:1px solid #ccc}

/* ── Recipe Library Redesign ─────────────────────────────────────────────── */
/* ── Recipe Library ─────────────────────────────────────────────────────── */
#recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.recipe-grid-group{display:contents}
.recipe-cat-hd{grid-column:1/-1;padding:10px 0 6px;border-bottom:2px solid var(--border);margin-top:16px;display:flex;align-items:center;gap:8px}
.recipe-cat-hd span{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:1.5px;color:var(--muted)}
.recipe-card{background:#fff;border-radius:16px;overflow:hidden;cursor:pointer;border:1.5px solid var(--border);transition:box-shadow .2s,transform .2s,border-color .2s;box-shadow:0 2px 8px rgba(0,0,0,.06);display:flex;flex-direction:column;position:relative}
.recipe-card:hover{border-color:var(--sage);box-shadow:0 10px 32px rgba(45,106,79,.15);transform:translateY(-3px)}
.recipe-card--hidden{opacity:.75}
.variant-card{margin-left:20px;border-left:3px solid var(--sage)}
.rc-img-wrap{width:100%;height:160px;background:linear-gradient(135deg,#eae5dc 0%,#f5f2ed 100%);overflow:hidden;flex-shrink:0;position:relative}
.rc-img-wrap img{width:100%;height:100%;object-fit:cover;transition:transform .35s}
.recipe-card:hover .rc-img-wrap img{transform:scale(1.04)}
.rc-img-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:40px}
.rc-img-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,rgba(0,0,0,.45) 0%,transparent 55%);display:flex;align-items:flex-start;justify-content:flex-end;padding:8px;gap:4px;opacity:0;transition:opacity .2s}
.recipe-card:hover .rc-img-overlay{opacity:1}
.rc-overlay-btn{background:rgba(255,255,255,.9);border:none;border-radius:7px;width:28px;height:28px;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
.rc-overlay-btn:hover{background:#fff}
.rc-status-badge-wrap{position:absolute;top:8px;left:8px}
.rc-status-badge{font-size:9px;font-weight:800;padding:2px 8px;border-radius:20px;text-transform:uppercase;letter-spacing:.5px}
.rc-seasonal{position:absolute;bottom:8px;right:10px;font-size:18px}
.rc-variant-tag{font-size:8px;font-weight:800;background:#f0f4e8;color:#5a7a2e;border:1px solid #c5d9a0;border-radius:10px;padding:1px 6px;vertical-align:middle;letter-spacing:.5px}
.rc-body{padding:14px 16px;display:flex;flex-direction:column;gap:7px;flex:1}
.rc-name-row{display:flex;align-items:flex-start;gap:7px}
.rc-stock-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:5px}
.rc-stock-full{background:#2d9e6a}.rc-stock-partial{background:#e8a21a}.rc-stock-none{background:#d44}
.rc-name{font-family:'Lora',serif;font-size:15px;font-weight:700;color:var(--forest);line-height:1.3;flex:1}
.rc-sub-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rc-sku{font-family:monospace;font-size:9px;font-weight:700;color:var(--muted);background:#f0ede8;padding:1px 6px;border-radius:6px}
.rc-chef{font-size:10px;color:var(--muted)}
.rc-parent{font-size:10px;color:var(--muted)}
.rc-stats-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rc-stat{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:3px}
.rc-stat b{color:var(--forest);font-weight:700}
.rc-time-detail{font-size:10px;color:#aaa}
.rc-tags-row{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.rc-diet-pill{font-size:9px;font-weight:700;padding:2px 8px;border-radius:20px;background:#edf7f1;color:var(--moss);border:1px solid #c2e4d3;white-space:nowrap}
.rc-diet-more{background:#f0ede8;color:var(--muted);border-color:var(--border)}
.rc-allergen-tag{font-size:9px;font-weight:700;padding:2px 8px;border-radius:20px;background:#fdf0e8;color:#b84000;border:1px solid #f5c4ae;white-space:nowrap}
.rc-footer{margin-top:auto;padding-top:10px;border-top:1px solid #f0ede8;display:flex;justify-content:space-between;align-items:flex-end;gap:8px}
.rc-cost-block{display:flex;align-items:baseline;gap:5px}
.rc-cost-total{font-family:'Lora',serif;font-size:16px;font-weight:700;color:var(--moss)}
.rc-cost-sep{color:var(--border);font-size:12px}
.rc-cost-per{font-size:11px;color:var(--muted)}
.rc-cost-per small{font-size:9px}
.rc-rrp{font-size:10px;color:var(--moss);font-weight:600;background:#edf7f1;padding:1px 6px;border-radius:10px;margin-left:4px}
.rc-ing-chips{display:flex;flex-wrap:wrap;gap:3px;justify-content:flex-end}
.ing-chip{background:#f5f2ed;color:var(--muted);border-radius:20px;padding:2px 7px;font-size:9px;font-weight:500}
.ing-chip.more{background:#ede9e2}
#recipe-grid.list-mode{grid-template-columns:1fr;gap:5px}
#recipe-grid.list-mode .recipe-card{flex-direction:row;border-radius:10px;min-height:0;align-items:center}
#recipe-grid.list-mode .rc-img-wrap{width:72px;height:72px;flex-shrink:0;border-radius:10px 0 0 10px;overflow:hidden}
#recipe-grid.list-mode .rc-body{padding:12px 16px;flex-direction:row;align-items:center;gap:0;flex-wrap:nowrap;flex:1}
#recipe-grid.list-mode .rc-name-row{flex:1;min-width:140px;align-items:center}
#recipe-grid.list-mode .rc-name{font-size:15px;font-weight:700}
#recipe-grid.list-mode .rc-sub-row{display:none}
#recipe-grid.list-mode .rc-stats-row{flex:2;min-width:200px;flex-wrap:nowrap;gap:14px;padding:0 16px}
#recipe-grid.list-mode .rc-time-detail{display:none}
#recipe-grid.list-mode .rc-tags-row{display:none}
#recipe-grid.list-mode .rc-ing-chips{display:none}
#recipe-grid.list-mode .rc-seasonal{display:none}
#recipe-grid.list-mode .rc-status-badge-wrap{position:static;display:inline-flex;margin-left:7px}
#recipe-grid.list-mode .rc-footer{border:none;padding:0;flex-shrink:0;gap:10px;margin-left:auto;align-items:center}
#recipe-grid.list-mode .rc-img-overlay{display:none}
#recipe-grid.list-mode .rc-list-acts{display:flex!important;gap:4px;margin-left:10px;flex-shrink:0}
#recipe-grid.list-mode .recipe-cat-hd{margin-top:4px}

/* ── Recipe Carousel ── */
.recipe-carousel-wrap{background:#fff;border-radius:14px;border:1.5px solid var(--border);padding:14px 16px;margin-bottom:11px;overflow:hidden}
.recipe-carousel-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.recipe-carousel{display:flex;gap:10px;overflow-x:auto;scroll-behavior:smooth;padding-bottom:6px;scrollbar-width:none}
.recipe-carousel::-webkit-scrollbar{display:none}
.carousel-nav{width:28px;height:28px;border-radius:50%;border:1.5px solid var(--border);background:#fff;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--forest);font-weight:700;transition:all .15s;line-height:1}
.carousel-nav:hover{border-color:var(--forest);background:var(--forest);color:#fff}
.rc-carousel-card{min-width:150px;max-width:150px;border:1.5px solid var(--border);border-radius:12px;background:var(--cream);cursor:pointer;padding:11px 12px;display:flex;flex-direction:column;gap:6px;transition:all .15s;position:relative;flex-shrink:0}
.rc-carousel-card:hover{border-color:var(--sage);box-shadow:0 4px 16px rgba(45,106,79,.12);transform:translateY(-2px)}
.rc-carousel-card.already-added{border-color:var(--sage);background:#f0f7f3}
.rc-cc-thumb{width:100%;height:70px;border-radius:8px;overflow:hidden;background:linear-gradient(135deg,#eae5dc,#f5f2ed);display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}
.rc-cc-thumb img{width:100%;height:100%;object-fit:cover}
.rc-cc-name{font-size:12px;font-weight:700;color:var(--forest);line-height:1.3;font-family:'Lora',serif}
.rc-cc-meta{display:flex;align-items:center;justify-content:space-between;gap:4px}
.rc-cc-cost{font-size:11px;font-weight:700;color:var(--moss)}
.rc-cc-stock{font-size:11px}
.rc-cc-servings{font-size:10px;color:var(--muted)}
.rc-cc-add{width:100%;padding:5px 0;border:none;border-radius:7px;background:var(--forest);color:#fff;font-size:11px;font-weight:700;cursor:pointer;font-family:'DM Sans',sans-serif;transition:background .15s}
.rc-cc-add:hover{background:var(--moss)}
.rc-cc-badge{position:absolute;top:7px;right:7px;background:var(--moss);color:#fff;font-size:8px;font-weight:800;padding:1px 6px;border-radius:20px}

/* ── KPI Dashboard ── */
.kpi-summary-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin-bottom:16px}
.kpi-summary-card{background:#fff;border:1.5px solid var(--border);border-radius:14px;padding:16px 14px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px}
.kpi-sc-icon{font-size:22px;margin-bottom:2px}
.kpi-sc-val{font-family:'Lora',serif;font-size:26px;font-weight:700;line-height:1}
.kpi-sc-label{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.kpi-sc-sub{font-size:10px;color:var(--muted)}
.kpi-banner-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-bottom:16px}
.kpi-banner{background:#fff;border:1.5px solid var(--border);border-radius:14px;padding:16px 18px}
.kpi-banner-label{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px}
.kpi-banner-val{font-family:'Lora',serif;font-size:32px;font-weight:700;line-height:1}
.kpi-banner-sub{font-size:11px;color:var(--muted);margin-top:2px}
.kpi-section{background:#fff;border:1.5px solid var(--border);border-radius:14px;padding:18px 20px;margin-bottom:14px}
.kpi-section-title{font-family:'Lora',serif;font-size:16px;font-weight:700;color:var(--forest);margin-bottom:14px}
.kpi-table-wrap{overflow-x:auto}
.kpi-table{width:100%;border-collapse:collapse;font-size:12px}
.kpi-table th{text-align:left;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);padding:6px 10px;border-bottom:2px solid var(--border);white-space:nowrap}
.kpi-table td{padding:10px 10px;border-bottom:1px solid #f5f2ed;vertical-align:middle}
.kpi-table tbody tr:last-child td{border-bottom:none}
.kpi-table tbody tr:hover td{background:#fafaf8}
.kpi-num{text-align:right!important;font-variant-numeric:tabular-nums;white-space:nowrap}
.kpi-em{font-family:'Lora',serif;font-weight:700;color:var(--forest)}
.kpi-dist{color:#2a6aad;font-weight:600}
.kpi-disposed{color:#c1440e}
.kpi-pct-pill{font-size:10px;font-weight:700;padding:2px 8px;border-radius:20px;display:inline-block}
.kpi-u{font-size:9px;font-weight:700;background:#e8f0ff;color:#2a4aad;border-radius:10px;padding:1px 5px;margin-right:3px}
.kpi-week-row td,.kpi-cat-row td{white-space:nowrap}
.kpi-variety-cell{display:inline-block;padding:3px 8px;border-radius:20px;font-size:11px;font-weight:700;white-space:nowrap}

/* AI Suggest Recipe rule pills */
.suggest-rule-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1.5px solid var(--border);border-radius:20px;cursor:pointer;font-size:12.5px;font-weight:500;background:#fff;transition:all .15s;user-select:none}
.suggest-rule-pill:hover{border-color:var(--forest);background:#f0f7f2}
.suggest-rule-pill input{accent-color:var(--forest);width:13px;height:13px;cursor:pointer}
.suggest-rule-pill:has(input:checked){background:var(--forest);color:#fff;border-color:var(--forest)}

/* ── Drag & Drop — Recipe Carousel to Schedule ── */
.rc-carousel-card[draggable="true"] { cursor: grab; }
.rc-carousel-card[draggable="true"]:active { cursor: grabbing; }
.rc-carousel-card[draggable="true"]::after {
  content: '⋮⋮';
  position:absolute;top:6px;right:6px;
  font-size:10px;color:rgba(0,0,0,.2);
  pointer-events:none;
}
.schedule-scroll { position:relative; min-height:54px; transition:background .2s, border .2s; }
.schedule-scroll.drop-active {
  background: #f0f7f3;
  border: 2px dashed var(--sage);
  border-radius: 10px;
}
.schedule-scroll.drop-over {
  background: #e2f4ea;
  border-color: var(--forest);
}
.drop-hint-overlay {
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:10;
}
.drop-hint-inner {
  background: var(--forest);color:#fff;
  border-radius:20px;padding:8px 20px;
  font-size:13px;font-weight:700;
  box-shadow:0 2px 12px rgba(26,58,42,.3);
  animation: drop-pulse .8s ease-in-out infinite alternate;
}
@keyframes drop-pulse { from{opacity:.8;transform:scale(.97)} to{opacity:1;transform:scale(1.02)} }

@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:.6} }

#my-tasks-fab { print-color-adjust: exact; }
@media print { #my-tasks-fab { display:none !important; } }

/* ── AI Chat ───────────────────────────────────────────────────────────── */
.ai-msg {
  max-width: 85%;
  padding: 10px 14px;
  border-radius: 14px;
  font-size: 14px;
  line-height: 1.5;
  word-wrap: break-word;
}
.ai-msg-user {
  align-self: flex-end;
  background: var(--forest);
  color: #fff;
  border-bottom-right-radius: 4px;
}
.ai-msg-assistant {
  align-self: flex-start;
  background: #fff;
  color: var(--text);
  border: 1px solid var(--border);
  border-bottom-left-radius: 4px;
  box-shadow: 0 1px 3px rgba(0,0,0,.05);
}
.ai-typing .ai-dots span {
  animation: aiBounce .6s infinite;
  display: inline-block;
  font-size: 20px;
  line-height: 1;
}
.ai-typing .ai-dots span:nth-child(2) { animation-delay: .15s; }
.ai-typing .ai-dots span:nth-child(3) { animation-delay: .3s; }
@keyframes aiBounce {
  0%, 80%, 100% { transform: translateY(0); }
  40% { transform: translateY(-5px); }
}
#ai-input:focus { border-color: #7c3aed; }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:.4} }
@media print { #fab-container, #ai-chat-modal { display:none !important; } }
@media (max-width: 500px) {
  #ai-chat-modal > div { width: 100vw !important; height: 100vh !important; border-radius: 0 !important; }
}
