@import url('/meals/base.css');

.prototype-bar,.scenario-panel,.review-notes{display:none!important}
.page-shell{padding-top:26px}
.meal-tabs a{min-height:48px;padding:0 14px;display:inline-flex;align-items:center;border-bottom:2px solid transparent;color:var(--dim);font-weight:720;white-space:nowrap;text-decoration:none}
.meal-tabs a.active{color:var(--text);border-bottom-color:var(--accent)}
.loading-panel{margin-top:20px;color:var(--dim);min-height:180px;display:grid;place-items:center}
.priority-card{margin-bottom:12px}
.confirmed-plan-banner{margin:12px 0;padding:18px;border:1px solid rgba(89,214,156,.32);border-radius:var(--radius);background:linear-gradient(120deg,rgba(89,214,156,.09),var(--surface) 55%)}
.confirmed-plan-banner h2{margin-top:7px}.confirmed-plan-banner p{margin:6px 0 0}.confirmed-plan-banner .confirmed-summary{margin-top:14px}
.priority-card.tone-error{border-color:rgba(241,132,132,.35);background:linear-gradient(120deg,rgba(241,132,132,.1),rgba(17,21,28,.95) 50%)}
.priority-card.tone-success{border-color:rgba(89,214,156,.3);background:linear-gradient(120deg,rgba(89,214,156,.09),rgba(17,21,28,.95) 50%)}
.priority-card.tone-calm{border-color:var(--border);background:var(--surface)}
.priority-card .priority-actions{margin-top:10px}
.summary-card .progress-track div{width:var(--progress,0%)}
.meal-cell{cursor:default}.meal-cell.gap{border-color:rgba(241,132,132,.18);background:rgba(241,132,132,.04)}
.meal-cell.not_required{opacity:.65}.meal-cell strong{font-size:12px;line-height:1.35}.meal-cell .source{color:var(--muted);text-transform:none}
.child-row{display:flex;gap:4px;margin-top:auto}.child-chip{width:20px;height:20px;display:grid;place-items:center;border-radius:50%;font-size:9px;font-weight:850;background:var(--red-bg);color:var(--red)}
.child-chip.covered{background:var(--green-bg);color:var(--green)}.child-chip.not_required{background:rgba(154,165,179,.1);color:var(--dim)}
.section-heading{justify-content:space-between;margin-bottom:14px}.section-heading h2{font-size:25px}.section-heading p{margin:5px 0 0}
.strategy-card{color:var(--text)}.strategy-card.confirmed{border-color:rgba(89,214,156,.45)}
.strategy-card.superseded{opacity:.62}.strategy-card.superseded .strategy-letter{filter:grayscale(1)}
.strategy-card .button{margin-top:12px}.strategy-card .warning-chip{margin-left:auto}
.modal-hint{color:var(--dim);font-size:12px;line-height:1.45;margin:2px 2px 12px}
.wide-modal{width:min(860px,calc(100vw - 28px))}
.form-grid textarea{min-height:44px;padding:8px 10px;border:1px solid var(--border);border-radius:9px;background:var(--bg);color:var(--text);font:inherit;line-height:1.45;resize:vertical}
.form-grid label code{padding:1px 4px;border-radius:4px;background:var(--surface-3);color:var(--accent);font-size:10px}
.form-grid fieldset.segmented label{margin-right:18px}
.recipe-card .warning-text{color:var(--amber)}
.prep-checklist-panel{padding:18px}.prep-checklist-header{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--border)}.prep-checklist-header h3{margin-top:5px;font-size:17px}.prep-checklist{display:grid;gap:10px}.prep-step-card{width:100%;min-height:82px;display:grid;grid-template-columns:46px minmax(0,1fr) 132px;align-items:center;gap:14px;padding:14px 16px;text-align:left;color:var(--text);border:1px solid var(--border);border-radius:12px;background:linear-gradient(135deg,var(--surface-2),rgba(29,36,48,.72));cursor:pointer;transition:border-color .15s ease,background .15s ease,transform .15s ease}.prep-step-card:hover{transform:translateY(-1px);border-color:var(--border-strong);background:var(--surface-3)}.prep-step-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.prep-step-number{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;background:rgba(108,140,255,.13);color:var(--accent);font-size:12px;font-weight:850}.prep-step-copy{min-width:0;display:grid;gap:5px}.prep-step-copy strong{font-size:14px;line-height:1.35;color:var(--text)}.prep-step-copy small{color:var(--dim);font-size:11px;line-height:1.4}.prep-lane{width:max-content;padding:3px 7px;border-radius:999px;color:var(--accent);background:rgba(108,140,255,.1);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.prep-lane.oven{color:var(--amber);background:var(--amber-bg)}.prep-lane.stovetop{color:var(--peach);background:rgba(245,169,127,.11)}.prep-lane.finish{color:var(--green);background:var(--green-bg)}.prep-step-action{display:flex;align-items:center;justify-content:flex-end;gap:8px;color:var(--accent);white-space:nowrap}.prep-step-action i{width:30px;height:30px;display:grid;place-items:center;border:1px solid rgba(141,164,255,.38);border-radius:50%;font-size:18px;font-style:normal;background:rgba(108,140,255,.08)}.prep-step-action b{font-size:11px}.prep-step-card.checked{border-color:rgba(89,214,156,.38);background:linear-gradient(135deg,var(--green-bg),rgba(17,21,28,.92))}.prep-step-card.checked .prep-step-number,.prep-step-card.checked .prep-step-action i{color:var(--green);border-color:rgba(89,214,156,.4);background:var(--green-bg)}.prep-step-card.checked .prep-step-action{color:var(--green)}.prep-step-card.checked .prep-step-copy strong{color:#b8c8c0;text-decoration:line-through}
.data-list{display:grid;gap:8px}.data-row{display:grid;grid-template-columns:minmax(170px,1.5fr) repeat(3,minmax(90px,.7fr));gap:10px;align-items:center;padding:11px;border:1px solid var(--border);border-radius:9px;background:var(--surface-2)}
.data-row small,.data-row span{color:var(--dim)}.data-row .button{justify-self:end}
.data-row.grocery-row{grid-template-columns:minmax(150px,1.4fr) minmax(85px,.7fr) minmax(70px,.5fr) minmax(120px,.9fr) minmax(130px,auto)}
.danger-chip{display:inline-flex;align-items:center;white-space:nowrap;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:750;color:var(--red);background:var(--red-bg);border:1px solid rgba(241,132,132,.3)}
.grocery-row .success-chip{color:var(--green)}.grocery-row .warning-chip{color:var(--amber)}.grocery-row .danger-chip{color:var(--red)}
.grocery-row .success-chip,.grocery-row .warning-chip,.grocery-row .neutral-chip,.grocery-row .danger-chip{justify-self:start;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:inline-block;line-height:1.7}
.portion-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.portion-card{padding:13px;border:1px solid var(--border);border-radius:10px;background:var(--surface-2)}.portion-card h3{font-size:13px}.portion-card p{font-size:11px;margin:5px 0}.portion-card.expired{border-color:rgba(241,132,132,.4)}
.recipe-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.recipe-card{padding:15px;border:1px solid var(--border);border-radius:11px;background:var(--surface-2)}.recipe-card p{font-size:11px}.recipe-card.retired{opacity:.7;border-color:rgba(241,132,132,.3)}
.activity-event{display:grid;grid-template-columns:110px 1fr auto;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}.activity-event time,.activity-event small{color:var(--dim)}
.health-table{display:grid;gap:6px}.health-row{display:grid;grid-template-columns:1.4fr repeat(4,.7fr);gap:8px;align-items:center;padding:10px;border:1px solid var(--border);border-radius:8px}.health-row.header{border:0;color:var(--muted);font-size:10px;text-transform:uppercase}.health-status{font-size:11px}
.freshness-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}.freshness-card{padding:11px;border:1px solid var(--border);border-radius:8px}.freshness-card strong,.freshness-card small{display:block}.freshness-card small{margin-top:4px;color:var(--dim)}
.empty-state{padding:30px;text-align:center;color:var(--dim)}
.lock-overlay{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:18px;background:rgba(3,5,8,.88);backdrop-filter:blur(8px)}.lock-card{width:min(420px,100%);padding:24px;border:1px solid var(--border-strong);border-radius:16px;background:var(--surface);box-shadow:var(--shadow)}.lock-card h2{font-size:28px}.lock-card label{display:grid;gap:6px;margin:12px 0;color:var(--dim);font-size:12px}.lock-card input,.lock-card select{min-height:44px;padding:9px;border:1px solid var(--border);border-radius:9px;background:var(--bg);color:var(--text)}.error-text{color:var(--red);min-height:18px}
.preview-list{max-height:220px;overflow:auto;margin:12px 0;padding-left:20px;color:var(--dim)}.preview-list li{margin:6px 0}.warning-box{padding:10px;border:1px solid rgba(244,189,99,.28);border-radius:9px;background:var(--amber-bg);color:var(--amber);margin-top:10px}
.person-toggles button.refused,.choice-row button.refused{color:var(--red);border-color:rgba(241,132,132,.35);background:var(--red-bg)}
.person-toggles button,.choice-row button{cursor:pointer;border-radius:8px;color:var(--text);font-weight:700}
.learning-preview.neutral-preview{background:rgba(154,165,179,.09);color:var(--dim)}
.feedback-actions{justify-content:space-between;align-items:center;gap:10px}
.feedback-card .button.primary:disabled{opacity:.45;cursor:not-allowed}
.nanny-child{grid-template-columns:54px 1fr}.nanny-slots{display:grid;gap:5px}.nanny-slot{padding:8px;border:1px solid var(--border);border-radius:8px}.nanny-slot.gap{color:var(--red)}
@media(max-width:900px){.data-row,.data-row.grocery-row{grid-template-columns:1fr 1fr}.grocery-row .button{justify-self:start}.portion-grid,.recipe-grid,.freshness-grid{grid-template-columns:1fr 1fr}.health-row{grid-template-columns:1.3fr repeat(2,.7fr)}.health-row>*:nth-child(4),.health-row>*:nth-child(5){display:none}}
@media(max-width:600px){.portion-grid,.recipe-grid,.freshness-grid{grid-template-columns:1fr}.data-row,.data-row.grocery-row{grid-template-columns:1fr}.activity-event{grid-template-columns:1fr}.page-shell{width:calc(100% - 24px)}.header-actions{overflow:auto}.health-row{grid-template-columns:1fr 1fr}.health-row>*:nth-child(3){display:none}.prep-checklist-panel{padding:14px}.prep-checklist-header{align-items:flex-start;flex-direction:column}.prep-step-card{grid-template-columns:38px minmax(0,1fr);padding:13px;gap:11px}.prep-step-number{width:34px;height:34px}.prep-step-action{grid-column:2;justify-content:flex-start}.prep-step-action i{width:26px;height:26px}.prep-step-copy strong{font-size:13px}}
@media print{.lock-overlay{display:none!important}.nanny-child{color:#111}.nanny-slot{border-color:#aaa}}

/* ---- Coverage: an unplanned Fri-Sun slot is not a failure, so it must not read like one. ---- */
.meal-cell.unplanned{opacity:.72;border-style:dashed}
.meal-cell.unplanned strong{color:var(--muted)}
.child-chip.unplanned{background:rgba(154,165,179,.14);color:var(--dim)}
.legend-dot.unplanned{background:rgba(154,165,179,.5)}
/* The grid's own gaps filter, which the markup now drives instead of hiding cells one by one. */
.week-grid.filter-gaps .meal-cell:not([data-has-gap="true"]){display:none}
.button.ghost.active{color:var(--text);border-color:var(--accent);background:rgba(108,140,255,.14)}

/* ---- Freezer: use-by urgency was computed but never drawn, so a portion expiring today
   looked identical to one good for two months on the tab that exists to flag it. ---- */
.portion-card.use_today{border-color:rgba(241,132,132,.4);background:linear-gradient(140deg,rgba(241,132,132,.1),var(--surface-2) 60%)}
.portion-card.use_today .mini-label{color:var(--red)}
.portion-card.use_soon{border-color:rgba(240,185,110,.38)}
.portion-card.use_soon .mini-label{color:var(--amber)}
.portion-card.expired{background:linear-gradient(140deg,rgba(241,132,132,.14),var(--surface-2) 60%)}

/* ---- Prep run-sheet ---- */
.prep-checklist{list-style:none;margin:0;padding:0}
.prep-batch-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:6px;padding:0 2px 2px;border-bottom:1px solid var(--border);color:var(--dim);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.prep-batch-heading:first-child{margin-top:0}
.prep-batch-heading span{color:var(--muted);font-weight:700;letter-spacing:.02em;text-transform:none}
.prep-step-card[data-busy="true"]{opacity:.6;pointer-events:none}
.muted-count{color:var(--muted);font-weight:600}
.health-status.bad-status{color:var(--red);background:var(--red-bg)}

/* ---- The automation table's point is that computation and delivery fail separately, so
   Overall and Delivery are the last columns to go, not the first. ---- */
@media(max-width:900px){
  .health-row{grid-template-columns:1.4fr .8fr .8fr}
  .health-row>*:nth-child(2),.health-row>*:nth-child(3){display:none}
  .health-row>*:nth-child(4),.health-row>*:nth-child(5){display:flex}
}
@media(max-width:600px){
  .health-row{grid-template-columns:1.4fr .9fr}
  .health-row>*:nth-child(4){display:none}
  .health-row>*:nth-child(5){display:flex}
}

/* ---- Printing the nanny serve sheet printed the entire dashboard behind it. ---- */
@media print{
  .page-shell,.toast,.lock-overlay{display:none!important}
  dialog:not(#nannyDialog){display:none!important}
  #nannyDialog{position:static;display:block;max-width:none;width:auto;margin:0;padding:0;border:0;box-shadow:none;background:#fff;color:#111}
  #nannyDialog .modal-header button,#nannyDialog .modal-actions{display:none!important}
}

/* ---- Freezer: closed portions are history behind a disclosure, not cards in the grid. ---- */
.closed-portions{margin-top:16px;border-top:1px solid var(--border);padding-top:12px}
.closed-portions summary{cursor:pointer;color:var(--dim);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;list-style:none}
.closed-portions summary::-webkit-details-marker{display:none}
.closed-portions summary::before{content:'▸ ';color:var(--muted)}
.closed-portions[open] summary::before{content:'▾ '}
.closed-portions summary:hover{color:var(--text)}
.closed-portions .portion-grid{margin-top:12px}
.portion-card.closed{opacity:.6;border-style:dashed}
.portion-card.closed .mini-label{color:var(--muted)}
