:root { color-scheme: dark; --bg:#333333; --panel:#000000; --muted:#94a3b8; --text:#e5e7eb; --line:#334155; --accent:#38bdf8; --bad:#f87171; --good:#34d399; }
* { box-sizing: border-box; }
body { margin:0; background:var(--bg); color:var(--text); font:14px/1.45 system-ui, -apple-system, Segoe UI, sans-serif; }
a { color:var(--accent); text-decoration:none; }
.topbar { display:flex; justify-content:space-between; gap:1rem; align-items:center; padding:1rem 1.25rem; border-bottom:1px solid var(--line); background:#020617; position:sticky; top:0; z-index:10; }
.topbar span { display:block; color:var(--muted); font-size:.85rem; margin-top:.2rem; }
nav { display:flex; gap:.75rem; align-items:center; flex-wrap:wrap; }
main { padding:1.25rem; max-width:1400px; margin:0 auto; }
.panel { background:var(--panel); border:1px solid var(--line); border-radius:16px; padding:1rem; margin-bottom:1rem; box-shadow:0 10px 30px rgba(0,0,0,.2); }
.narrow { max-width:520px; margin:2rem auto; }
.grid { display:grid; gap:1rem; }
.cards { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.two { grid-template-columns: repeat(auto-fit, minmax(360px, 1fr)); }
.card { background:#0b1220; border:1px solid var(--line); border-radius:14px; padding:1rem; }
.card .value { font-size:2rem; font-weight:700; }
.card .label { color:var(--muted); }
.muted { color:var(--muted); }
table { width:100%; border-collapse:collapse; }
th, td { text-align:left; border-bottom:1px solid var(--line); padding:.55rem; vertical-align:top; }
th { color:var(--muted); font-weight:600; }
label { display:grid; gap:.35rem; color:var(--muted); }
input, textarea, select, button { border-radius:10px; border:1px solid var(--line); background:#020617; color:var(--text); padding:.6rem .7rem; }
select, option, optgroup { background:#111111; color:var(--text); }
textarea { min-height:110px; resize:vertical; }
button { cursor:pointer; background:#172554; border-color:#1d4ed8; }
button:hover { filter:brightness(1.1); }
button.btn-danger { background:#7f1d1d; border-color:#dc2626; color:#fecaca; }
button.btn-danger:hover { background:#991b1b; filter:brightness(1.15); }
button.btn-icon { background:transparent; border-color:transparent; padding:.25rem .5rem; font-size:1.2rem; line-height:1; }
.padded { padding:1rem; }
.inline { display:inline; }
.stack { display:grid; gap:.75rem; }
.row { display:grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap:.75rem; }
.agent-grid { display:grid; gap:.5rem; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.checkbox { display:flex; align-items:flex-start; gap:.5rem; padding:.45rem .6rem; border:1px solid var(--line); border-radius:12px; background:#020617; }
.checkbox input { margin-top:.2rem; }
.status { padding:.15rem .45rem; border-radius:999px; background:#1e293b; color:#cbd5e1; }
.status.blocked, .status.failed, .status.rejected { background:#451a1a; color:#fecaca; }
.status.completed, .status.validated, .status.approved, .status.auto_approved { background:#052e1d; color:#bbf7d0; }
.status.pending, .status.submitted { background:#422006; color:#fed7aa; }
canvas { max-height:380px; }
.notice { padding:.7rem; background:#082f49; border:1px solid #075985; border-radius:10px; margin:.5rem 0; }
.error { padding:.7rem; background:#450a0a; border:1px solid #991b1b; border-radius:10px; margin:.5rem 0; }
.hidden { display:none !important; }
.chef-shell { display:grid; gap:1rem; }
.chef-header { display:flex; align-items:flex-end; justify-content:space-between; gap:1rem; flex-wrap:wrap; }
.chef-header h1 { margin:.1rem 0; font-size:2.4rem; }
.chef-audience { display:flex; align-items:end; gap:.75rem; flex-wrap:wrap; }
.inline-form { display:flex; gap:.5rem; align-items:end; flex-wrap:wrap; }
.inline-form input { min-width:150px; }
.chef-controls { display:grid; gap:1rem; }
.chef-actions { display:flex; gap:.75rem; flex-wrap:wrap; }
.chef-button-row { display:flex; gap:.6rem; flex-wrap:wrap; align-items:center; }
.chef-plan { display:grid; grid-template-columns:repeat(7, minmax(0, 1fr)); grid-auto-rows:1fr; gap:.65rem; }
.chef-day { background:var(--panel); border:1px solid var(--line); border-radius:8px; min-height:360px; min-width:0; padding:.65rem; display:grid; align-content:start; gap:.55rem; }
.chef-day-past { opacity:.5; background:#0b1220; }
.chef-day-past .chef-slot-add { background:#334155; border-color:#475569; color:#cbd5e1; }
.chef-day header { display:flex; justify-content:space-between; gap:.75rem; align-items:baseline; border-bottom:1px solid var(--line); padding-bottom:.5rem; }
.chef-day h2 { margin:0; font-size:.95rem; }
.chef-meals { display:grid; gap:.45rem; }
.chef-meal { display:flex; justify-content:space-between; gap:.35rem; align-items:flex-start; background:#020617; border:1px solid #1e293b; border-radius:8px; padding:.45rem; min-height:58px; min-width:0; }
.chef-meal-empty { align-items:center; border-style:dashed; background:#07111d; }
.chef-meal p { margin:.25rem 0 0; color:var(--muted); }
.chef-meal button { padding:.35rem .5rem; font-size:.8rem; }
.chef-meal-actions { display:flex; gap:.35rem; flex-wrap:wrap; justify-content:flex-end; }
.slot { display:inline-block; color:#facc15; font-size:.75rem; text-transform:uppercase; margin-right:.35rem; }
.chef-slot-add { width:32px; height:32px; padding:0; display:inline-grid; place-items:center; border-radius:999px; background:#047857; border-color:#10b981; color:#d1fae5; font-size:1.25rem; font-weight:700; line-height:1; flex-shrink:0; }
.chef-slot-add:hover { background:#059669; filter:brightness(1.08); }
.recipe-library-panel h2 { margin:.1rem 0; }
.recipe-library-header { display:flex; justify-content:space-between; gap:1rem; align-items:end; flex-wrap:wrap; }
.recipe-library-toolbar { display:flex; gap:.6rem; align-items:end; flex-wrap:wrap; }
.recipe-library-toolbar label { min-width:min(360px, 100%); }
.recipe-list { display:grid; gap:.6rem; margin-top:.75rem; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.recipe-card { display:grid; grid-template-columns:64px 1fr; gap:.85rem; align-items:center; width:100%; text-align:left; background:#08111f; border:1px solid #1f2f46; border-radius:14px; padding:.8rem; }
.recipe-card:hover { border-color:#38bdf8; transform:translateY(-1px); }
.recipe-card-thumb { width:64px; height:64px; border-radius:14px; overflow:hidden; display:grid; place-items:center; background:#162338; border:1px solid #27435f; color:#dbeafe; font-weight:700; font-size:1.25rem; }
.recipe-card-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
.recipe-card-copy { display:grid; gap:.2rem; min-width:0; }
.recipe-card-title { font-weight:700; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.recipe-card-subtitle { color:var(--muted); font-size:.88rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.recipe-thumb-fallback { display:grid; place-items:center; }
.chef-modal { position:fixed; inset:0; z-index:40; display:grid; place-items:center; padding:1.25rem; }
.chef-modal.hidden { display:none; }
#chef-confirm-modal { z-index:50; }
#chef-meal-modal-form label { display:block; margin-bottom:.75rem; }
#chef-meal-modal-form label input,
#chef-meal-modal-form label select,
#chef-meal-modal-form label textarea { width:100%; }
.meal-recipes-fieldset { border:1px solid #1f2f46; border-radius:14px; padding:1rem; margin:0; }
.meal-recipes-fieldset legend { padding:0 .5rem; color:var(--muted); font-size:.88rem; }
.meal-recipe-rows { display:grid; gap:.65rem; max-height:320px; overflow-y:auto; padding-right:.25rem; }
.meal-recipe-row { display:grid; grid-template-columns:minmax(0, 1fr) auto; gap:.6rem; align-items:start; background:#08111f; border:1px solid #1f2f46; border-radius:10px; padding:.65rem; }
.meal-recipe-row-fields { display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:.5rem; min-width:0; }
.meal-recipe-row-fields label { margin-bottom:0; font-size:.82rem; }
.meal-row-recipe { flex:1; min-width:0; }
.meal-row-title { flex:1; min-width:0; }
.meal-row-remove { flex-shrink:0; align-self:center; color:#f87171; }
.meal-row-remove:hover { color:#fca5a5; }
#chef-meal-add-recipe { margin-top:.5rem; font-size:.85rem; }
.btn-sm { padding:.35rem .65rem; font-size:.82rem; }
.meal-shopping-editor { grid-column:1 / -1; display:grid; gap:.5rem; padding-top:.15rem; }
.meal-shopping-editor textarea { min-height:58px; }
.ingredient-editor { display:grid; gap:.6rem; min-width:0; }
.ingredient-rows { display:grid; gap:.4rem; min-width:0; }
.ingredient-row { display:grid; grid-template-columns:minmax(48px, .5fr) minmax(56px, .55fr) minmax(130px, 1.25fr) minmax(100px, 1fr) minmax(120px, 1.15fr) auto; gap:.4rem; align-items:center; min-width:0; }
.ingredient-row input { min-width:0; }
.ingredient-row-remove { color:#f87171; }
.meal-recipe-icons { display:inline-flex; gap:.35rem; margin-left:.5rem; vertical-align:middle; }
.meal-recipe-icon { width:28px; height:28px; border-radius:8px; overflow:hidden; display:inline-grid; place-items:center; background:#162338; border:1px solid #27435f; font-size:.65rem; font-weight:700; color:#dbeafe; }
.meal-recipe-icon img { width:100%; height:100%; object-fit:cover; display:block; }
.meal-notes { margin:.25rem 0 0; font-size:.85rem; color:var(--muted); }
.meal-count { font-size:.8rem; }
.chef-meal-body { min-width:0; }
.chef-meal-body .status { display:inline-block; margin-left:.35rem; font-size:.72rem; }
.grocery-list { display:grid; gap:.4rem; }
.grocery-item { display:flex; gap:.6rem; align-items:center; padding:.45rem .6rem; border:1px solid #1f2f46; border-radius:10px; background:#08111f; }
.grocery-item:hover { border-color:#38bdf8; }
.grocery-item.purchased { opacity:.5; text-decoration:line-through; }
.grocery-item-name { flex:1; min-width:0; }
.grocery-item-qty { color:var(--muted); font-size:.85rem; margin-left:.35rem; }
.grocery-item-source { display:block; color:var(--muted); font-size:.78rem; line-height:1.3; margin-top:.1rem; }
.grocery-item-remove { flex-shrink:0; color:#f87171; background:transparent; border-color:transparent; padding:.15rem .4rem; font-size:.85rem; }
.grocery-item-remove:hover { color:#fca5a5; }
#chef-grocery-from-plan { font-size:.85rem; }
#chef-grocery-add-form { align-items:flex-end; }
.chef-modal-backdrop { position:absolute; inset:0; background:rgba(2, 6, 23, .72); backdrop-filter:blur(4px); }
.chef-modal-dialog { position:relative; width:min(960px, 100%); max-height:calc(100vh - 2.5rem); overflow:auto; margin:0; }
.chef-modal-header { display:flex; justify-content:space-between; gap:1rem; align-items:flex-start; margin-bottom:1rem; }
.chef-modal-header p { margin:0 0 .25rem; }
.chef-modal-header h2 { margin:0; font-size:1.8rem; }
.chef-modal-toolbar { display:flex; gap:.5rem; align-items:center; flex-wrap:wrap; justify-content:flex-end; }
.chef-modal-footer { display:flex; justify-content:space-between; align-items:center; gap:1rem; flex-wrap:wrap; }
.chef-search-toggles { display:flex; gap:.75rem; flex-wrap:wrap; }
.chef-toggle { display:flex; align-items:center; gap:.45rem; padding:.55rem .7rem; border:1px solid var(--line); border-radius:10px; background:#020617; color:var(--text); }
.chef-toggle input { margin:0; }
.chef-search-results { display:grid; gap:.85rem; margin-top:1rem; }
.recipe-search-card { display:grid; gap:.75rem; border:1px solid #1f2f46; border-radius:14px; padding:1rem; background:#08111f; }
.recipe-search-card-header { display:flex; justify-content:space-between; gap:1rem; align-items:flex-start; }
.recipe-search-card-header h3 { margin:0 0 .25rem; font-size:1.05rem; }
.recipe-search-card-header p { margin:0; }
.recipe-search-rating { text-align:right; white-space:nowrap; }
.recipe-search-thumb { width:100%; max-width:220px; border-radius:12px; overflow:hidden; border:1px solid #27435f; }
.recipe-search-thumb img { width:100%; height:160px; object-fit:cover; display:block; }
.recipe-search-list { margin:0; padding-left:1.1rem; color:var(--muted); display:grid; gap:.25rem; }
.recipe-search-notes { display:grid; gap:.25rem; }
.recipe-search-notes p { margin:0; }
.chef-button-row a { display:inline-flex; align-items:center; justify-content:center; min-height:40px; padding:.6rem .8rem; border-radius:10px; border:1px solid #27435f; background:#020617; color:var(--text); }
.chef-button-row a:hover { filter:brightness(1.08); }
.recipe-editor-hero { display:grid; grid-template-columns:minmax(220px, 260px) minmax(0, 1fr); gap:1rem; align-items:start; }
.recipe-thumb-panel { display:grid; gap:.75rem; }
.recipe-thumb-preview { min-height:220px; border-radius:16px; overflow:hidden; border:1px solid #27435f; background:#08111f; display:grid; place-items:center; }
.recipe-thumb-preview img { width:100%; height:220px; object-fit:cover; display:block; }
.recipe-thumb-preview-fallback { width:100%; height:220px; font-size:4rem; background:linear-gradient(145deg, #0f1f35, #162338); color:#dbeafe; }
.recipe-editor-main { display:grid; gap:.75rem; }
.recipe-source-row { display:grid; grid-template-columns:minmax(0, 1fr) auto; gap:.6rem; align-items:end; }
.recipe-source-row label { min-width:0; }
.recipe-editor-grid { display:grid; grid-template-columns:minmax(0, 1fr); gap:1rem; }
.recipe-editor-grid > label { min-width:0; }
#chef-recipe-fieldset { border:0; padding:0; margin:0; min-width:0; }
#chef-recipe-fieldset:disabled { opacity:.88; }
#chef-recipe-fieldset textarea[name="description"] { min-height:100px; }
#chef-recipe-fieldset textarea[name="ingredientsPaste"],
#chef-recipe-fieldset textarea[name="instructionsText"] { min-height:220px; }
#chef-recipe-fieldset textarea[name="originalText"],
#chef-recipe-fieldset textarea[name="extractedText"] { min-height:180px; font-family:ui-monospace, SFMono-Regular, Consolas, monospace; }
.scout-shell { display:grid; gap:1rem; }
.scout-header { display:flex; justify-content:space-between; gap:1rem; align-items:flex-end; flex-wrap:wrap; }
.scout-header h1 { margin:.1rem 0; font-size:2.2rem; }
.scout-header-actions { display:flex; gap:.75rem; align-items:end; flex-wrap:wrap; }
.scout-cards, .scout-panels { display:grid; gap:1rem; }
.scout-connection-panel, .scout-tabs-panel, .scout-panel { margin-bottom:0; }
.panel-header { display:flex; justify-content:space-between; gap:.75rem; align-items:flex-start; margin-bottom:.85rem; }
.panel-header h2, .panel-header h3 { margin:0; }
.scout-tab-bar { display:flex; gap:.55rem; flex-wrap:wrap; }
.scout-tab { background:#0b1220; border-color:#1f2f46; }
.scout-tab.active { background:#0f3a64; border-color:#38bdf8; color:#e0f2fe; }
.scout-form-block { padding:.9rem; border:1px solid #1f2f46; border-radius:12px; background:#08111f; margin-bottom:1rem; }
.scout-toggle { display:flex; align-items:center; gap:.5rem; padding:.55rem .7rem; border:1px solid var(--line); border-radius:10px; background:#020617; color:var(--text); }
.scout-toggle input { margin:0; }
.scout-toolbar { display:flex; gap:.5rem; flex-wrap:wrap; align-items:center; }
.scout-section { display:grid; gap:.75rem; }
.scout-status-card { display:grid; gap:.55rem; padding:.9rem 1rem; border:1px solid var(--line); border-radius:12px; background:#08111f; }
.scout-status-line { display:flex; gap:.55rem; flex-wrap:wrap; align-items:center; }
.scout-status-meta { display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:.75rem; }
.scout-status-meta div { display:grid; gap:.1rem; }
.scout-table-wrap { overflow:auto; border:1px solid var(--line); border-radius:12px; background:#020617; }
.scout-table { width:100%; min-width:900px; border-collapse:collapse; }
.scout-table th,
.scout-table td { text-align:left; border-bottom:1px solid var(--line); padding:.6rem; vertical-align:top; }
.scout-table th { color:var(--muted); font-weight:600; white-space:nowrap; }
.scout-table td strong { display:block; }
.scout-table td .muted { display:block; }
.scout-actions { display:flex; gap:.4rem; flex-wrap:wrap; }
.scout-actions button { padding:.35rem .6rem; font-size:.82rem; }
.scout-empty { padding:.85rem 1rem; color:var(--muted); background:#020617; border:1px dashed var(--line); border-radius:12px; }
.scout-document-list { margin-top:1rem; }
.scout-document-cards { display:grid; gap:.65rem; }
.scout-document-card { display:grid; gap:.45rem; padding:.8rem; border:1px solid #1f2f46; border-radius:10px; background:#08111f; }
.scout-document-meta { display:grid; gap:.25rem; color:var(--muted); }
.scout-modal-sections { display:grid; gap:1rem; }
.scout-price-history-sources { margin-bottom:.75rem; }
.scout-history-callout { display:grid; gap:.5rem; }
.scout-history-callout .muted { margin:0; }
.scout-history-source-list { display:flex; gap:.5rem; flex-wrap:wrap; }
.scout-link-button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:.45rem .7rem;
  border:1px solid #1f2f46;
  border-radius:6px;
  text-decoration:none;
  color:inherit;
  background:#08111f;
}
.scout-link-button:hover { background:#0d1a2d; }
#scout-exclusion-rule-form,
#scout-deal-form,
#scout-item-form,
#scout-document-form,
#scout-remove-form { display:grid; gap:.9rem; }
#scout-exclusion-rule-form .row,
#scout-deal-form .row,
#scout-item-form .row,
#scout-document-form .row,
#scout-remove-form .row { grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); }
#scout-exclusion-rule-form textarea,
#scout-deal-form textarea,
#scout-document-form textarea,
#scout-remove-form textarea { min-height:96px; }
.scout-form-actions { display:flex; gap:.5rem; flex-wrap:wrap; align-items:center; }
body.modal-open { overflow:hidden; }
@media (max-width: 860px) {
  .recipe-editor-hero { grid-template-columns:1fr; }
  .recipe-source-row { grid-template-columns:1fr; }
  .ingredient-row { grid-template-columns:1fr 1fr; }
  .ingredient-row input[name="name"],
  .ingredient-row input[name="rawText"] { grid-column:1 / -1; }
  .chef-modal { padding:.75rem; }
  .chef-modal-dialog { max-height:calc(100vh - 1.5rem); }
  .recipe-search-card-header { grid-template-columns:1fr; display:grid; }
  .recipe-search-rating { text-align:left; }
  .scout-header-actions { width:100%; }
  .scout-table { min-width:760px; }
}
