/* ============================================================
   Jídelníček — vzhled aplikace
   Psáno „mobile first“: základní pravidla platí pro telefon,
   media queries přidávají to, co dává smysl na větší obrazovce.
   ============================================================ */

/* ---------- barvy a proměnné ---------- */
:root{
  --bg:#F6F5F0;
  --bg-blur:rgba(246,245,240,.86);
  --surface:#FFFFFF;
  --surface-2:#F9F9F4;
  --ink:#1E2A24;
  --muted:#6B7A72;
  --line:#E4E5DD;
  --line-strong:#D3D6CB;
  --accent:#2E6F4E;
  --accent-2:#3F8A63;
  --accent-ink:#FFFFFF;
  --accent-soft:#E7F1EA;
  --warn:#8E560C;
  --warn-bg:#FBF1E1;
  --danger:#A5352A;
  --danger-bg:#FBECE9;
  --shadow-sm:0 1px 2px rgba(30,42,36,.05), 0 1px 3px rgba(30,42,36,.05);
  --shadow-md:0 6px 20px rgba(30,42,36,.10);
  --shadow-lg:0 -6px 30px rgba(30,42,36,.16);
  --radius:14px;
  --radius-sm:10px;
  --tap:44px;
  --header-h:56px;
  --safe-b:env(safe-area-inset-bottom, 0px);
  color-scheme:light dark;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#101613;
    --bg-blur:rgba(16,22,19,.86);
    --surface:#18211D;
    --surface-2:#1E2925;
    --ink:#E7EDE9;
    --muted:#8FA097;
    --line:#2A3630;
    --line-strong:#38473F;
    --accent:#6FC694;
    --accent-2:#8AD5AA;
    --accent-ink:#08120C;
    --accent-soft:#1E2E26;
    --warn:#E3A860;
    --warn-bg:#2C2317;
    --danger:#EE8478;
    --danger-bg:#2E1B18;
    --shadow-sm:0 1px 2px rgba(0,0,0,.3);
    --shadow-md:0 6px 20px rgba(0,0,0,.4);
    --shadow-lg:0 -6px 30px rgba(0,0,0,.5);
  }
}
:root[data-theme="dark"]{
  --bg:#101613;
  --bg-blur:rgba(16,22,19,.86);
  --surface:#18211D;
  --surface-2:#1E2925;
  --ink:#E7EDE9;
  --muted:#8FA097;
  --line:#2A3630;
  --line-strong:#38473F;
  --accent:#6FC694;
  --accent-2:#8AD5AA;
  --accent-ink:#08120C;
  --accent-soft:#1E2E26;
  --warn:#E3A860;
  --warn-bg:#2C2317;
  --danger:#EE8478;
  --danger-bg:#2E1B18;
  --shadow-sm:0 1px 2px rgba(0,0,0,.3);
  --shadow-md:0 6px 20px rgba(0,0,0,.4);
  --shadow-lg:0 -6px 30px rgba(0,0,0,.5);
}

/* ---------- základ ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  min-height:100dvh;
  background:var(--bg);
  color:var(--ink);
  font:400 16px/1.55 "Instrument Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  -webkit-font-smoothing:antialiased;
  overflow-wrap:break-word;
  /* místo pro spodní navigaci na telefonu */
  padding-bottom:calc(68px + var(--safe-b));
}
h1,h2,h3,h4{font-family:"Bricolage Grotesque","Instrument Sans",system-ui,sans-serif; margin:0; text-wrap:balance; letter-spacing:-.01em}
p{margin:0 0 10px}
p:last-child{margin-bottom:0}
a{color:var(--accent)}
svg{flex:none}
::selection{background:var(--accent-soft); color:var(--ink)}

button{font:inherit; color:inherit; cursor:pointer; -webkit-tap-highlight-color:transparent}
input,select,textarea{
  font:inherit; font-size:16px; /* 16px = iOS nezvětší stránku při psaní */
  color:var(--ink); background:var(--surface);
  border:1px solid var(--line-strong); border-radius:var(--radius-sm);
  padding:11px 12px; width:100%; min-height:var(--tap);
}
input::placeholder{color:var(--muted); opacity:.8}
:focus-visible{outline:2px solid var(--accent); outline-offset:2px; border-radius:6px}
input:focus,select:focus{outline:2px solid var(--accent); outline-offset:0; border-color:transparent}

.wrap{max-width:900px; margin:0 auto; padding:14px 14px 40px}
.sr-only{position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0}

/* ---------- horní lišta ---------- */
.appbar-wrap{
  position:sticky; top:0; z-index:20;
  background:var(--bg-blur); backdrop-filter:saturate(1.4) blur(10px);
  border-bottom:1px solid var(--line);
  padding-top:env(safe-area-inset-top, 0px);
}
.appbar{
  max-width:900px; margin:0 auto; padding:8px 12px;
  display:flex; align-items:center; gap:10px; min-height:56px;
}
.brand{display:flex; align-items:center; gap:10px; min-width:0; text-decoration:none; color:inherit}
.brand-mark{
  flex:none; width:36px; height:36px; border-radius:11px;
  background:var(--accent-soft); display:grid; place-items:center; font-size:19px;
}
.brand-text{display:flex; flex-direction:column; min-width:0; line-height:1.15}
.brand-text strong{font-family:"Bricolage Grotesque",sans-serif; font-size:18px; font-weight:700}
.brand-text small{color:var(--muted); font-size:12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.appbar-actions{margin-left:auto; display:flex; align-items:center; gap:8px}

.icon-btn{
  flex:none; width:var(--tap); height:var(--tap); display:grid; place-items:center;
  background:transparent; border:1px solid transparent; border-radius:12px; color:var(--muted);
}
.icon-btn:hover{background:var(--surface); color:var(--ink); border-color:var(--line)}

/* uživatel v liště */
.userchip{
  display:flex; align-items:center; gap:8px;
  background:var(--surface); border:1px solid var(--line); border-radius:999px;
  padding:4px 4px 4px 12px; box-shadow:var(--shadow-sm); max-width:60vw;
}
.userchip-name{font-weight:600; font-size:14px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:14ch}
.userchip .credits{font-size:13px}
.credits{font-variant-numeric:tabular-nums; font-weight:700; color:var(--accent); white-space:nowrap}
.credits.low{color:var(--warn)}

/* ---------- záložky (nahoře na desktopu) ---------- */
.tabs{display:none}

/* ---------- spodní navigace (telefon) ---------- */
.tabbar{
  position:fixed; left:0; right:0; bottom:0; z-index:30;
  display:flex; justify-content:space-around; align-items:stretch;
  background:var(--bg-blur); backdrop-filter:saturate(1.4) blur(12px);
  border-top:1px solid var(--line); box-shadow:var(--shadow-lg);
  padding-bottom:var(--safe-b);
}
.tabbar button{
  flex:1 1 0; min-height:60px; padding:8px 4px 6px;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  background:none; border:none; color:var(--muted); font-size:11px; font-weight:600;
}
.tabbar button .dot{width:20px; height:3px; border-radius:3px; background:transparent; margin-bottom:-4px}
.tabbar button.on{color:var(--accent)}
.tabbar button.on .dot{background:var(--accent)}

/* ---------- navigace týdnem ---------- */
.weekbar{
  position:sticky; top:var(--header-h); z-index:10;
  display:flex; align-items:center; gap:8px;
  /* záporné okraje: rozmazané pozadí musí přesahovat přes odsazení .wrap */
  margin:0 -14px 14px; padding:8px 14px;
  background:var(--bg-blur); backdrop-filter:saturate(1.4) blur(10px);
}
.weekbar .wk-label{flex:1; min-width:0; text-align:center; line-height:1.2}
.weekbar .wk-label b{display:block; font-family:"Bricolage Grotesque",sans-serif; font-size:16px; font-weight:700}
.weekbar .wk-label span{display:block; color:var(--muted); font-size:12px}
.weekbar .nav-btn{
  flex:none; width:var(--tap); height:var(--tap); display:grid; place-items:center;
  background:var(--surface); border:1px solid var(--line); border-radius:12px;
  color:var(--ink); box-shadow:var(--shadow-sm);
}
.weekbar .nav-btn:hover{border-color:var(--accent); color:var(--accent)}

/* ---------- karta dne ---------- */
.day{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  box-shadow:var(--shadow-sm); margin-bottom:12px; overflow:hidden;
}
.day.today{border-color:var(--accent); box-shadow:0 0 0 1px var(--accent), var(--shadow-sm)}
.day.closed{opacity:.72}
.day-head{display:flex; align-items:center; gap:8px; padding:13px 15px 9px}
.day-name{font-family:"Bricolage Grotesque",sans-serif; font-weight:700; font-size:16px}
.day-date{color:var(--muted); font-size:13px; font-variant-numeric:tabular-nums}
.badge{
  margin-left:auto; flex:none; font-size:11px; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
  padding:3px 9px; border-radius:999px; background:var(--surface-2); color:var(--muted); border:1px solid var(--line);
}
.badge.today{background:var(--accent); color:var(--accent-ink); border-color:var(--accent)}
.day-soup{
  display:flex; gap:8px; align-items:flex-start;
  padding:0 15px 12px; color:var(--muted); font-size:14px;
}
.day-soup svg{margin-top:2px; opacity:.7}

.meals{list-style:none; margin:0; padding:0}
.meals li{border-top:1px solid var(--line)}
.meal{
  display:flex; align-items:center; gap:12px; width:100%; text-align:left;
  padding:12px 15px; min-height:60px;
  background:none; border:none; color:inherit;
}
button.meal:hover{background:var(--surface-2)}
button.meal:active{background:var(--accent-soft)}
.meal-no{
  flex:none; width:28px; height:28px; border-radius:50%;
  background:var(--surface-2); border:1px solid var(--line);
  color:var(--muted); font-weight:700; font-size:13px;
  display:grid; place-items:center; font-variant-numeric:tabular-nums;
}
.meal-body{flex:1; min-width:0}
.meal-name{display:block; font-size:15px; line-height:1.4}
.meal-hint{display:block; margin-top:2px; font-size:12px; font-weight:600; color:var(--accent)}
.meal-price{flex:none; font-variant-numeric:tabular-nums; color:var(--muted); font-size:14px; font-weight:600; white-space:nowrap}
.meal.mine{background:var(--accent-soft)}
.meal.mine .meal-no{background:var(--accent); border-color:var(--accent); color:var(--accent-ink)}
.meal.mine .meal-name{font-weight:600}
.meal.mine .meal-price{color:var(--accent)}

.day-foot{
  display:flex; flex-wrap:wrap; align-items:center; gap:10px;
  padding:11px 15px; border-top:1px solid var(--line); background:var(--surface-2);
  font-size:13px; color:var(--muted);
}
.day-foot .grow{flex:1; min-width:120px}
.day-empty{padding:4px 15px 16px; color:var(--muted); font-size:14px}

/* ---------- tlačítka ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  min-height:var(--tap); padding:10px 16px;
  background:var(--surface); color:var(--ink);
  border:1px solid var(--line-strong); border-radius:12px;
  font-size:15px; font-weight:600; text-decoration:none;
}
.btn:hover{border-color:var(--accent); color:var(--accent)}
.btn-p{background:var(--accent); border-color:var(--accent); color:var(--accent-ink)}
.btn-p:hover{background:var(--accent-2); border-color:var(--accent-2); color:var(--accent-ink)}
.btn-ghost{background:transparent; border-color:transparent; color:var(--muted)}
.btn-ghost:hover{background:var(--surface-2); border-color:var(--line)}
.btn-danger{color:var(--danger); border-color:var(--line-strong)}
.btn-danger:hover{border-color:var(--danger); background:var(--danger-bg); color:var(--danger)}
.btn-sm{min-height:36px; padding:6px 12px; font-size:13px; border-radius:10px}
.btn-block{width:100%}
.btn[disabled]{opacity:.5; cursor:not-allowed}
.btn[disabled]:hover{border-color:var(--line-strong); color:var(--ink); background:var(--surface)}

/* ---------- panely, formuláře, zprávy ---------- */
.panel{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  box-shadow:var(--shadow-sm); padding:16px; margin:0 0 14px;
}
.panel > h3{font-size:17px; margin-bottom:4px}
.panel > .sub{color:var(--muted); font-size:13px; margin-bottom:14px}
.section-title{font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); margin:20px 0 8px}
.section-title:first-child{margin-top:0}

.field{display:block; margin-bottom:12px}
.field > span{display:block; font-size:13px; font-weight:600; color:var(--muted); margin-bottom:5px}
.field-row{display:flex; gap:8px; align-items:flex-end}
.field-row .field{flex:1; margin-bottom:0}

.msg{
  display:flex; gap:9px; align-items:flex-start;
  padding:11px 13px; border-radius:12px; margin-bottom:12px; font-size:14px;
  border:1px solid transparent;
}
.msg.err{background:var(--danger-bg); color:var(--danger); border-color:color-mix(in srgb, var(--danger) 25%, transparent)}
.msg.ok{background:var(--accent-soft); color:var(--accent); border-color:color-mix(in srgb, var(--accent) 25%, transparent)}
.note{color:var(--muted); font-size:13px}
.empty{
  padding:26px 16px; text-align:center; color:var(--muted); font-size:14px;
}
.empty .big{display:block; font-size:30px; margin-bottom:8px; opacity:.75}
.pill{
  display:inline-block; background:var(--accent-soft); color:var(--accent);
  border-radius:999px; padding:2px 9px; font-size:12px; font-weight:700; white-space:nowrap;
}
.pill.grey{background:var(--surface-2); color:var(--muted); border:1px solid var(--line)}

/* souhrn týdne */
.summary{
  display:flex; flex-wrap:wrap; gap:10px 18px; align-items:center;
  background:var(--accent-soft); border:1px solid color-mix(in srgb, var(--accent) 22%, transparent);
  border-radius:var(--radius); padding:12px 15px; margin-bottom:14px;
}
.summary .s-item{display:flex; flex-direction:column; line-height:1.25}
.summary .s-item b{font-family:"Bricolage Grotesque",sans-serif; font-size:18px; font-variant-numeric:tabular-nums}
.summary .s-item span{font-size:12px; color:var(--muted)}

/* ---------- seznamy (náhrada tabulek na mobilu) ---------- */
.list{list-style:none; margin:0; padding:0}
.list > li{
  display:flex; align-items:center; gap:12px;
  padding:12px 0; border-top:1px solid var(--line);
}
.list > li:first-child{border-top:none; padding-top:2px}
.li-body{flex:1; min-width:0}
.li-title{display:block; font-size:15px; line-height:1.35}
.li-sub{display:block; font-size:12.5px; color:var(--muted); margin-top:2px}
.li-side{flex:none; display:flex; align-items:center; gap:8px}
.li-date{
  flex:none; width:52px; text-align:center; line-height:1.1;
  background:var(--surface-2); border:1px solid var(--line); border-radius:10px; padding:6px 2px;
}
.li-date b{display:block; font-size:15px; font-variant-numeric:tabular-nums}
.li-date span{display:block; font-size:11px; color:var(--muted); text-transform:uppercase}
.amount{font-variant-numeric:tabular-nums; font-weight:700; white-space:nowrap}

/* ---------- editor jídelníčku (správce) ---------- */
.ed-day{
  border:1px solid var(--line); border-radius:var(--radius); padding:12px; margin-bottom:12px;
  background:var(--surface-2);
}
.ed-day > h4{
  display:flex; align-items:baseline; gap:8px;
  font-size:15px; margin-bottom:10px;
}
.ed-day > h4 small{color:var(--muted); font-weight:400; font-variant-numeric:tabular-nums}
.ed-row{margin-bottom:8px}
.ed-row .iname{margin-bottom:6px}
.ed-row-b{display:flex; gap:8px; align-items:center}
.ed-price{position:relative; flex:1; max-width:150px}
.ed-price input{padding-right:38px; text-align:right; font-variant-numeric:tabular-nums}
.ed-price .unit{
  position:absolute; right:12px; top:50%; transform:translateY(-50%);
  color:var(--muted); font-size:13px; pointer-events:none;
}
.rm{
  flex:none; width:var(--tap); height:var(--tap); display:grid; place-items:center;
  background:var(--surface); border:1px solid var(--line-strong); border-radius:12px; color:var(--danger);
}
.rm:hover{background:var(--danger-bg); border-color:var(--danger)}
.save-bar{
  position:sticky; bottom:calc(76px + var(--safe-b)); z-index:9;
  display:flex; gap:10px; padding-top:4px;
}
.save-bar .btn{flex:1; box-shadow:var(--shadow-md)}

/* rychlé dobití kreditů */
.credit-row{display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:10px}
.credit-row .ed-price{max-width:120px}
.quick{display:flex; gap:6px; flex-wrap:wrap}
.quick button{
  min-height:36px; padding:5px 11px; border-radius:999px; font-size:13px; font-weight:600;
  background:var(--surface-2); border:1px solid var(--line); color:var(--ink);
}
.quick button:hover{border-color:var(--accent); color:var(--accent)}
.user-card{border-top:1px solid var(--line); padding:14px 0}
.user-card:first-child{border-top:none; padding-top:2px}
.user-head{display:flex; align-items:center; gap:10px}
.avatar{
  flex:none; width:38px; height:38px; border-radius:50%;
  background:var(--accent-soft); color:var(--accent);
  display:grid; place-items:center; font-weight:700; font-size:15px;
}

/* ---------- dialogy ---------- */
dialog{
  border:none; padding:0; background:transparent; color:var(--ink);
  width:100%; max-width:100%; max-height:100dvh; margin:auto auto 0;
}
dialog::backdrop{background:rgba(10,16,13,.5); backdrop-filter:blur(2px)}
.sheet{
  background:var(--surface); border:1px solid var(--line); border-bottom:none;
  border-radius:20px 20px 0 0; padding:20px 18px calc(20px + var(--safe-b));
  box-shadow:var(--shadow-lg);
}
.sheet-grip{width:38px; height:4px; border-radius:4px; background:var(--line-strong); margin:-6px auto 14px}
.sheet h3{font-size:19px; margin-bottom:4px}
.sheet .sub{color:var(--muted); font-size:13px; margin-bottom:16px}
.sheet-actions{display:flex; gap:10px; margin-top:16px}
.sheet-actions .btn{flex:1}
@media (prefers-reduced-motion: no-preference){
  dialog[open]{animation:sheet-in .22s cubic-bezier(.2,.8,.3,1)}
  @keyframes sheet-in{from{transform:translateY(14px); opacity:0}to{transform:none; opacity:1}}
}

/* ---------- toasty ---------- */
.toasts{
  position:fixed; left:0; right:0; bottom:calc(72px + var(--safe-b)); z-index:40;
  display:flex; flex-direction:column; align-items:center; gap:8px;
  padding:0 12px; pointer-events:none;
}
.toast{
  pointer-events:auto; max-width:560px; width:100%;
  display:flex; gap:10px; align-items:flex-start;
  background:var(--surface); border:1px solid var(--line); border-left:4px solid var(--accent);
  border-radius:12px; box-shadow:var(--shadow-md); padding:12px 14px; font-size:14px;
}
.toast.err{border-left-color:var(--danger); color:var(--danger)}
.toast.ok{border-left-color:var(--accent)}
@media (prefers-reduced-motion: no-preference){
  .toast{animation:toast-in .2s ease both}
  .toast.out{animation:toast-out .2s ease forwards}
  @keyframes toast-in{from{transform:translateY(10px); opacity:0}to{transform:none; opacity:1}}
  @keyframes toast-out{to{transform:translateY(6px); opacity:0}}
}

/* ---------- skeleton při načítání ---------- */
.skel{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:16px; margin-bottom:12px}
.skel-line{height:12px; border-radius:6px; background:var(--surface-2); margin-bottom:10px}
.skel-line:last-child{margin-bottom:0}
@media (prefers-reduced-motion: no-preference){
  .skel-line{animation:pulse 1.4s ease-in-out infinite}
  @keyframes pulse{0%,100%{opacity:1}50%{opacity:.45}}
}

/* ============================================================
   Tablet a větší telefon
   ============================================================ */
@media (min-width:600px){
  .wrap{padding:20px 20px 48px}
  .weekbar{margin:0 -20px 16px; padding:10px 20px}
  .day-head{padding:15px 18px 10px}
  .day-soup{padding:0 18px 14px}
  .meal{padding:13px 18px}
  .day-foot{padding:12px 18px}
  .panel{padding:20px}
  dialog{max-width:420px; margin:auto}
  .sheet{border:1px solid var(--line); border-radius:18px; padding:24px}
  .sheet-grip{display:none}
  .toasts{align-items:flex-end; padding:0 20px}
  .toast{width:auto; min-width:280px}
}

/* ============================================================
   Desktop — záložky nahoru, spodní lišta pryč
   ============================================================ */
@media (min-width:820px){
  body{padding-bottom:0; font-size:15px}
  .tabbar{display:none}
  .toasts{bottom:20px}
  .save-bar{bottom:16px}

  .appbar{padding:10px 16px; min-height:64px}
  .brand-mark{width:42px; height:42px; font-size:22px}
  .brand-text strong{font-size:20px}

  .tabs{
    display:flex; gap:6px; max-width:900px; margin:0 auto; padding:0 16px;
  }
  .tabs button{
    background:none; border:none; border-bottom:2px solid transparent;
    padding:8px 12px 12px; color:var(--muted); font-size:15px; font-weight:600;
    display:flex; align-items:center; gap:7px;
  }
  .tabs button:hover{color:var(--ink)}
  .tabs button.on{color:var(--accent); border-bottom-color:var(--accent)}

  .userchip-name{max-width:20ch}
  .weekbar .wk-label{text-align:left; padding-left:6px}
  .weekbar .wk-label b{font-size:18px}
}

/* ============================================================
   Nápověda pro správce: receptář a suroviny
   ============================================================ */
.seg{display:flex; gap:4px; background:var(--surface-2); border:1px solid var(--line); border-radius:12px; padding:4px; margin-bottom:12px}
.seg button{
  flex:1; min-height:38px; border:none; background:none; border-radius:9px;
  font-size:14px; font-weight:600; color:var(--muted);
}
.seg button.on{background:var(--surface); color:var(--accent); box-shadow:var(--shadow-sm)}

.rec-list{max-height:52vh; overflow-y:auto; margin:10px -4px; padding:0 4px}
.rec-item{
  display:flex; align-items:center; gap:10px; width:100%; text-align:left;
  padding:11px 12px; margin-bottom:6px; min-height:56px;
  background:var(--surface-2); border:1px solid var(--line); border-radius:12px; color:inherit;
}
.rec-item:hover{border-color:var(--accent)}
.rec-item .rec-body{flex:1; min-width:0}
.rec-item .rec-name{display:block; font-size:14.5px; font-weight:600}
.rec-item .rec-meta{display:block; font-size:12px; color:var(--muted); margin-top:2px}
.rec-item .rec-price{flex:none; font-variant-numeric:tabular-nums; font-size:13px; font-weight:700; color:var(--muted)}
.rec-empty{padding:18px; text-align:center; color:var(--muted); font-size:14px}

.ing-row{display:flex; gap:8px; align-items:center; margin-bottom:6px}
.ing-row .ing-name{flex:1; min-width:0}
.ing-row .ing-amount{width:84px; text-align:right; font-variant-numeric:tabular-nums}
.ing-row select{width:74px}

.shop-day{border-top:1px solid var(--line); padding:10px 0; font-size:14px}
.shop-day:first-child{border-top:none}
.shop-day b{font-family:"Bricolage Grotesque",sans-serif}
.shop-meal{display:flex; gap:8px; color:var(--muted); font-size:13px; margin-top:3px}
.shop-meal .cnt{flex:none; font-weight:700; color:var(--accent); font-variant-numeric:tabular-nums; min-width:32px}
.missing{color:var(--warn); font-weight:600}

/* tisk: na papír jde jen nákupní seznam */
@media print{
  .appbar-wrap, .tabbar, .toasts, .weekbar, .seg, dialog{display:none !important}
  body{background:#fff; color:#000; padding:0}
  .panel{border:none; box-shadow:none; padding:0; margin:0}
  .panel:not(.printable){display:none !important}
  .wrap{max-width:none; padding:0}
  .no-print{display:none !important}
}
