.food-banner {
  width: 100%;
  height: 132px;
  object-fit: cover;
  border-radius: 22px;
  display: block;
  margin: 4px 0 10px;
  box-shadow: var(--shadow);
}
.auth-gate { min-height:100vh; display:grid; place-items:center; padding:24px; background:linear-gradient(155deg,#173f35,#0d2720); }
.page-loader { position:fixed; z-index:100; inset:0 0 auto; height:4px; opacity:0; pointer-events:none; overflow:hidden; transition:opacity .18s; background:rgba(215,239,102,.2); }
.page-loader.active { opacity:1; }
.page-loader i { display:block; width:38%; height:100%; background:var(--lime); box-shadow:0 0 14px var(--lime); animation:loading-slide 1s ease-in-out infinite; }
@keyframes loading-slide { from { transform:translateX(-110%); } to { transform:translateX(365%); } }
button { transition:transform .12s ease,box-shadow .16s ease,filter .16s ease,opacity .16s ease; }
button:active,button.pressed { transform:scale(.97); filter:brightness(1.06); box-shadow:0 0 0 4px rgba(215,239,102,.3); }
button.busy { position:relative; color:transparent!important; pointer-events:none; }
button.busy::after { content:""; position:absolute; width:18px; height:18px; inset:50% auto auto 50%; margin:-9px; border:2px solid currentColor; border-top-color:transparent; border-radius:50%; color:var(--green); animation:button-spin .7s linear infinite; }
@keyframes button-spin { to { transform:rotate(360deg); } }
.auth-gate.hidden { display:none; }
.hidden { display:none!important; }
.auth-card { width:min(420px,100%); background:#fff; border-radius:26px; padding:28px; box-shadow:0 28px 70px rgba(0,0,0,.25); }
.auth-card img { width:190px; height:auto; margin-bottom:24px; }
.auth-card h1 { margin:5px 0 8px; }
.auth-card p { color:var(--muted); line-height:1.45; }
.auth-card label { display:block; font-size:.8rem; font-weight:700; margin:15px 0; }
.auth-card input { display:block; width:100%; border:1px solid var(--line); border-radius:12px; padding:13px; margin-top:6px; background:#f8faf8; }
.auth-card button+button { margin-top:9px; }
.auth-message { min-height:22px; font-size:.82rem; text-align:center; }
.auth-message:not(:empty) { padding:9px 11px; border-radius:11px; background:#f1f5f2; color:var(--green); }
.onboarding-sheet { max-width:560px; }
.onboarding-details { margin:14px 0; padding:12px 14px; border:1px solid var(--line); border-radius:14px; background:#f8faf8; }
.onboarding-details summary { cursor:pointer; color:var(--green); font-size:.8rem; font-weight:800; }
.onboarding-details label { margin-bottom:0; }
#signUpDialog .sheet,#onboardingDialog .sheet { max-height:min(760px,92vh); overflow:auto; }
.app-shell.auth-pending { display:none; }
.top-actions { display:flex; align-items:center; gap:10px; }
.identity { text-align:right; max-width:150px; border:0; background:transparent; padding:6px 8px; color:inherit; border-radius:12px; }
.identity:not(:disabled) { cursor:pointer; background:#e9efeb; }
.identity:not(:disabled)::after { content:'⌄'; margin-left:5px; color:var(--green); font-weight:800; }
.identity small,.identity strong { display:block; }
.identity small { color:var(--muted); font-size:.65rem; }
.identity strong { font-size:.8rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.profile-list { display:grid; gap:9px; margin-top:14px; }
.profile-option { width:100%; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px; border:1px solid var(--line); border-radius:15px; background:#fff; color:inherit; text-align:left; }
.profile-option.active { border-color:var(--green); background:#f1f6f3; }
.profile-option strong,.profile-option small { display:block; }
.profile-option small { color:var(--muted); margin-top:3px; }
.profile-option span:last-child { color:var(--green); font-weight:800; }
.logout-button { margin-top:10px; }
.remove-food, .edit-food {
  border: 0;
  background: #f3f6f2;
  color: #7e8984;
  border-radius: 9px;
  width: 34px;
  height: 34px;
  font-size: 1rem;
}
.food-row {
  grid-template-columns: minmax(0,1fr) auto auto auto;
  align-items: center;
}
.food-row.meal-total {
  grid-template-columns: 1fr auto;
  font-weight: 700;
}
.meal-head { flex-wrap:wrap; gap:7px; }
.meal-head h3 { margin-right:auto; }
.calculate-meal,.suggest-meal,.meal-action { border:1px solid var(--line); background:#f3f6f2; color:var(--green); border-radius:9px; padding:7px 9px; font-size:.7rem; font-weight:800; }
.suggest-meal { background:var(--green); border-color:var(--green); color:#fff; }
.meal-action.danger { color:#9b3028; background:#fff6f5; }
.metadata-filter { margin:-4px 0 12px; }
.metadata-filter.active-filter { background:var(--green); color:#fff; border-color:var(--green); }
.product-manage { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; }
.product-manage > div { grid-column:2; }
.product-manage > b { grid-column:3; }
.product-manage .edit-product-meta { grid-column:2/-1; border:0; border-radius:9px; padding:8px 10px; background:#eef4ef; color:var(--green); font-size:.72rem; font-weight:800; }
.missing-meta { color:#a85a22!important; }
.complete-meta { color:#47752e!important; }
.meal-slot-fields { border:1px solid var(--line); border-radius:14px; padding:10px 12px; margin:14px 0; }
.meal-slot-fields legend { color:var(--muted); font-size:.75rem; font-weight:800; padding:0 5px; }
.meal-slot-fields label { display:inline-flex; align-items:center; gap:5px; margin:7px 12px 7px 0; }
.meal-slot-fields input,.exclude-product input { width:auto!important; margin:0!important; }
.exclude-product { display:flex!important; align-items:center; gap:8px; }
.suggestion-options { display:grid; gap:10px; }
.suggestion-card { border:1px solid var(--line); border-radius:16px; padding:14px; background:#f8faf8; }
.suggestion-card span,.suggestion-card strong { display:block; }
.suggestion-card span { color:var(--muted); font-size:.68rem; font-weight:800; text-transform:uppercase; letter-spacing:.08em; }
.suggestion-card strong { margin-top:4px; font-size:.88rem; }
.suggestion-card ul { margin:10px 0; padding-left:18px; color:var(--muted); font-size:.78rem; }
.suggestion-card p { font-size:.76rem; color:var(--muted); }
.suggestion-card p b { color:var(--green); }
.product-item img { width: 52px; height: 52px; border-radius: 11px; object-fit: contain; background: #f3f6f2; }
.camera-button { cursor: pointer; }
.camera-button strong,.camera-button small { display:block; }
.camera-button input { position:absolute; width:1px; height:1px; opacity:0; }
.scan-product { display:grid; grid-template-columns:auto 1fr; gap:12px; align-items:center; margin:16px 0; padding:12px; border:1px solid var(--line); border-radius:14px; }
.scan-product img { width:64px; height:64px; object-fit:contain; border-radius:10px; }
.scan-product span,.scan-product strong,.scan-product small { display:block; }
.scan-product span { color:var(--muted); font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; }
.scan-product small,.scan-error { color:var(--muted); }
.scan-status { color:var(--green); text-align:center; font-weight:700; padding:8px 0; }
.product-actions { display:grid; grid-template-columns:1fr 1fr; gap:9px; margin:0 0 14px; }
.product-search-status { min-height:24px; color:var(--muted); font-size:.8rem; padding:0 3px 7px; }
.product-search-status button { border:0; background:transparent; color:var(--green); font-weight:800; text-decoration:underline; padding:0; }
.live-scan-button { width:100%; border:0; color:var(--green); }
.live-scan-button strong,.live-scan-button small { display:block; }
.photo-fallback { border:1px solid var(--line); border-radius:12px; padding:12px; text-align:center; color:var(--green); }
.photo-fallback input { margin-top:8px!important; }
.camera-preview { display:none; position:relative; overflow:hidden; border-radius:14px; background:#07120f; aspect-ratio:4/3; margin:14px 0; }
.camera-preview.active { display:block; }
.camera-preview video { width:100%; height:100%; object-fit:cover; }
.scan-guide { position:absolute; left:10%; right:10%; top:36%; height:28%; border:3px solid var(--lime); border-radius:10px; box-shadow:0 0 0 999px rgba(0,0,0,.28); }
@media(max-width:390px) { .product-actions { grid-template-columns:1fr; } }
.profile-entry { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; align-items:stretch; }
.profile-entry .profile-option { min-width:0; }
.complimentary-button { border:1px solid var(--line); border-radius:13px; padding:9px 11px; background:#fff; color:var(--green); font-size:.7rem; font-weight:800; }
.complimentary-button.active { background:#e8f3c2; color:#294014; border-color:#cfe57d; }
.complimentary-button:disabled { opacity:1; }
.day-summary-copy {
  min-width: 0;
}
.kcal-progress { --p: 0; width: 112px; height: 112px; margin-top: 10px; border-radius: 50%; background: conic-gradient(var(--lime) calc(var(--p)*1%),rgba(255,255,255,.15) 0); display: grid; place-items: center; }
.kcal-progress > div { width: 84px; height: 84px; border-radius: 50%; background: var(--green); display: grid; place-content: center; text-align: center; }
.daily-summary .kcal-progress strong { display: block; font-size: 1.45rem; line-height: 1.05; letter-spacing: -.04em; }
.daily-summary .kcal-progress small { color: #bdd0c9; font-size: .72rem; }
.kcal-goal-label { width: 112px; margin-top: 7px; color: #bdd0c9; font-size: .72rem; text-align: center; }
.kcal-goal-label b { color: #fff; }
.day-summary-side { display: grid; justify-items: end; gap: 16px; }
.remaining-kcal { text-align: right; padding: 10px 13px; border-radius: 14px; background: rgba(255,255,255,.1); }
.remaining-kcal strong,.remaining-kcal small { display: block; }
.remaining-kcal strong { font-size: 1.45rem; }
.remaining-kcal small { color: #bdd0c9; font-size: .72rem; }
.remaining-kcal.over strong { color: var(--orange); }
.meal-target-editor {
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  margin: 18px 0 4px;
  padding: 18px 0 4px;
}
.macro-target-editor { border-top:1px solid var(--line); margin-top:18px; padding-top:18px; }
.macro-percent-grid label > div { position:relative; }
.macro-percent-grid label > div span { position:absolute; right:10px; top:50%; transform:translateY(-50%); color:var(--muted); }
.macro-percent-grid input { padding-right:28px!important; }
.macro-percent-grid small { display:block; color:var(--green); margin-top:5px; font-size:.72rem; }
#macroPercentTotal { border-radius:999px; padding:6px 10px; background:#f1f5f2; color:var(--muted); white-space:nowrap; }
#macroPercentTotal.valid { background:#e8f3c2; color:#294014; }
#macroPercentTotal.invalid { background:#fff0e2; color:#9b4e16; }
.macro-percent-input.invalid { border-color:#c56723!important; }
.planning-toolbar { display:grid; gap:9px; margin-bottom:12px; }
.planning-weeks { display:flex; gap:7px; overflow:auto; scrollbar-width:none; }
.week-chip { min-width:52px; border:1px solid var(--line); border-radius:12px; padding:10px 8px; background:#fff; color:var(--muted); font-weight:800; }
.week-chip.active { background:var(--green); border-color:var(--green); color:#fff; }
.planning-toolbar > .secondary { width:100%; }
.editor-title { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:8px; }
.editor-title strong { display:block; margin-top:3px; font-size:.9rem; }
.editor-title .compact { padding:8px 11px; border-radius:10px; font-size:.75rem; }
.field-help { display:block; color:var(--muted); font-size:.72rem; line-height:1.45; margin:5px 0 12px; }
.meal-percent-grid label > div { position:relative; }
.meal-percent-grid label > div span { position:absolute; right:12px; top:50%; transform:translateY(-50%); color:var(--muted); }
.meal-percent-grid input { padding-right:32px!important; }
.meal-percent-grid small { display:block; color:var(--green); margin-top:5px; font-size:.72rem; }
#mealPercentTotal { border-radius:999px; padding:6px 10px; background:#f1f5f2; color:var(--muted); white-space:nowrap; }
#mealPercentTotal.valid { background:#e8f3c2; color:#294014; }
#mealPercentTotal.invalid { background:#fff0e2; color:#9b4e16; }
.meal-percent-input.invalid { border-color:#c56723!important; }
.copy-settings { border:1px solid var(--line); border-radius:14px; padding:12px 14px; margin:14px 0; background:#f8faf8; }
.copy-settings summary { cursor:pointer; font-size:.82rem; font-weight:800; color:var(--green); }
.copy-day-options { display:grid; grid-template-columns:repeat(6,1fr); gap:6px; margin-top:10px; }
.copy-day-options label { margin:0; }
.copy-day-options input { position:absolute; opacity:0; pointer-events:none; }
.copy-day-options span { display:grid; place-items:center; height:38px; border:1px solid var(--line); border-radius:10px; background:#fff; color:var(--muted); }
.copy-day-options input:checked + span { background:var(--green); color:#fff; border-color:var(--green); }
.intensity-editor { border-top:1px solid var(--line); margin-top:18px; padding-top:18px; }
.day-type-row { display:grid; grid-template-columns:1fr 145px 125px; gap:8px; margin:8px 0; }
.day-type-row > input,.day-type-row label { margin:0!important; }
.day-type-row label { position:relative; }
.day-type-row label span { position:absolute; right:11px; top:50%; transform:translateY(-50%); color:var(--muted); font-weight:400; }
.day-type-row label input { margin-top:0!important; padding-right:43px!important; }
.day-type-row input[readonly] { color:var(--ink); background:#f1f5f2; }
.calculation-note { display:grid; gap:4px; margin:10px 0 2px; padding:12px 14px; border-radius:13px; background:#eef4ef; color:var(--green); }
.calculation-note strong { font-size:.78rem; }
.calculation-note span { color:var(--muted); font-size:.72rem; line-height:1.45; }
#editKcal[readonly],#editDeficit[readonly],#editBurn[readonly] { background:#f1f5f2; color:var(--green); font-weight:800; }
.meal-allocation { display:grid; grid-template-columns:repeat(6,1fr); gap:5px; margin-top:8px; }
.meal-allocation span { background:#eef4ef; border-radius:9px; padding:7px 3px; color:var(--muted); font-size:.62rem; text-align:center; }
.meal-allocation b { display:block; color:var(--green); font-size:.72rem; margin-bottom:2px; }
.day-card .targets b { white-space:normal; font-size:.7rem; line-height:1.2; }
.day-actions { grid-template-columns: 1fr auto auto; }
@media(max-width:620px) {
  .daily-summary { align-items: center; gap: 14px; }
  .kcal-progress { width: 108px; height: 108px; }
  .kcal-progress > div { width: 80px; height: 80px; }
  .kcal-goal-label { width: 108px; }
}
@media(max-width:390px) {
  .daily-summary { padding: 16px; }
  .kcal-progress { width: 98px; height: 98px; }
  .kcal-progress > div { width: 72px; height: 72px; }
  .daily-summary .kcal-progress strong { font-size: 1.3rem; }
  .kcal-goal-label { width: 98px; }
  .mini-ring { width: 48px; height: 48px; }
  .mini-ring div { width: 37px; height: 37px; }
  .copy-day-options { grid-template-columns:repeat(3,1fr); }
  .day-type-row { grid-template-columns:1fr 1fr; }
  .day-type-row > .type-name { grid-column:1/-1; }
}
.brand-heading img {
  display: block;
  width: 154px;
  height: auto;
  margin-bottom: 2px;
}
.brand-heading h1 {
  margin-top: 0;
}
@media(max-width:370px) {
  .brand-heading img { width: 138px; }
}
