:root{
  --bg:#F2F0EA; --surf:#FFFDF8; --surf2:#FAF8F2;
  --ink:#1A1D18; --soft:#6B7063; --faint:#9A9E92;
  --line:#E1DED3; --line2:#CFCBBE;
  --beet:#7B1F3B; --pump:#C06A12; --leaf:#4B6139;
  --r:10px; --sh:0 1px 2px rgba(26,29,24,.06), 0 6px 20px rgba(26,29,24,.05);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:'Manrope',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,.disp{font-family:'Bitter',Georgia,serif;font-weight:600;letter-spacing:-.01em}
button{font:inherit;color:inherit;touch-action:manipulation}
:focus-visible{outline:2px solid var(--beet);outline-offset:2px;border-radius:4px}
.hidden{display:none !important}

/* ---------- toolbar ---------- */
.bar{position:sticky;top:0;z-index:30;background:rgba(242,240,234,.88);
  -webkit-backdrop-filter:saturate(1.4) blur(12px);backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid var(--line)}
.bar-in{max-width:1120px;margin:0 auto;padding:10px max(16px,env(safe-area-inset-right)) 10px max(16px,env(safe-area-inset-left));display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.brand{font-family:'Bitter',serif;font-weight:700;font-size:16px;margin-right:4px;white-space:nowrap}
.brand span{color:var(--beet)}
.seg{display:flex;background:var(--surf2);border:1px solid var(--line2);border-radius:8px;padding:2px;gap:2px}
.seg button{border:none;background:none;padding:5px 14px;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;color:var(--soft)}
.seg button[aria-pressed="true"]{background:var(--surf);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.nav{display:flex;gap:4px;align-items:center}
.nav button,.ghost,.pill{background:var(--surf);border:1px solid var(--line2);border-radius:8px;
  padding:5px 11px;font-size:14px;font-weight:600;cursor:pointer}
.nav .arw{padding:5px 12px;font-size:17px;line-height:1}
input[type="date"]{background:var(--surf);border:1px solid var(--line2);border-radius:8px;
  padding:5px 9px;font:inherit;font-size:14px;color:var(--ink)}
.spacer{flex:1 1 auto}
.ib svg{display:none;width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}

/* ---------- strip ---------- */
.strip{max-width:1120px;margin:0 auto;padding:0 16px 10px;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}
.strip::-webkit-scrollbar{display:none}
.sc{flex:0 0 auto;background:var(--surf);border:1px solid var(--line);border-radius:9px;
  padding:6px 10px;cursor:pointer;text-align:center;min-width:56px;line-height:1.2}
.sc b{display:block;font-family:'Bitter',serif;font-size:17px;font-weight:600}
.sc i{display:block;font-style:normal;font-size:10.5px;color:var(--soft);text-transform:lowercase}
.sc[aria-pressed="true"]{background:var(--beet);border-color:var(--beet);color:#fff}
.sc[aria-pressed="true"] i{color:#E9CFD8}
.sc:disabled{opacity:.4;cursor:default}
.sc.dot{position:relative}
.sc.dot:after{content:"";position:absolute;top:4px;right:5px;width:5px;height:5px;border-radius:50%;background:var(--pump)}

/* ---------- layout ---------- */
main{max-width:1120px;margin:0 auto;
  padding:22px max(16px,env(safe-area-inset-right)) calc(90px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}
.period{margin-bottom:14px}
.period h1{margin:0 0 3px;font-size:27px;line-height:1.15}
.period .sub{color:var(--soft);font-size:14.5px}
.period .season{color:var(--leaf);font-size:13.5px;margin-top:6px;max-width:70ch}
.period .period-note{color:var(--pump)}
.kpi{margin:10px 0 0;font-size:14px;color:var(--soft)}
.kpi b{font-family:'Bitter',serif;font-size:16px;font-weight:600;color:var(--ink)}

/* --barh — высота шапки, её выставляет app.js */
.subnav{position:sticky;top:var(--barh,112px);z-index:20;display:flex;gap:6px;padding:10px 0;margin-bottom:6px;
  background:var(--bg);overflow-x:auto;scrollbar-width:none}
.subnav::-webkit-scrollbar{display:none}
.subnav a{flex:0 0 auto;text-decoration:none;color:var(--soft);background:var(--surf);border:1px solid var(--line);
  border-radius:20px;padding:5px 14px;font-size:14px;font-weight:600}
.subnav a[aria-current="true"]{color:var(--beet);border-color:var(--beet)}
section{scroll-margin-top:calc(var(--barh,112px) + 58px);margin-bottom:34px}
.shd{display:flex;align-items:baseline;gap:10px;margin:0 0 12px;padding-bottom:7px;border-bottom:1px solid var(--line)}
.shd h2{margin:0;font-size:20px}
.shd span{color:var(--faint);font-size:13.5px}
.lead{color:var(--soft);font-size:14px;max-width:70ch;margin:0 0 14px}
/* ссылка-кнопка внутри текста; ::after расширяет место для пальца, не сдвигая строку */
.dlink{position:relative;background:none;border:none;border-bottom:1px dashed var(--line2);padding:0;
  font:inherit;font-weight:600;color:var(--ink);cursor:pointer}
.dlink::after,.use::after{content:"";position:absolute;inset:-11px -8px}

/* ---------- meal cards (day) ---------- */
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(248px,1fr));gap:14px}
.mcard{background:var(--surf);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;
  cursor:pointer;text-align:left;padding:0;box-shadow:var(--sh);transition:transform .14s,box-shadow .14s}
.mcard .art{display:block;width:100%;aspect-ratio:16/10;position:relative;background:var(--surf2)}
.mcard .art svg,.mcard .art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.mcard .cbody{padding:11px 13px 13px}
.slot{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}
.mcard h3{margin:3px 0 5px;font-size:17px;line-height:1.25}
.mcard .nums{font-size:12.5px;color:var(--soft)}
.tagrow{display:flex;gap:5px;margin-top:8px;flex-wrap:wrap}
.tag{font-size:11px;font-weight:600;padding:2px 7px;border-radius:20px;background:var(--surf2);
  border:1px solid var(--line);color:var(--soft)}
.tag.t-time{color:var(--pump);border-color:#EBD8BF}
.tag.t-code{color:#fff;border:none}
.c-z{background:var(--leaf)} .c-o{background:var(--pump)} .c-p{background:var(--soft)} .c-u{background:var(--beet)}

/* ---------- week grid ---------- */
.wgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.dcard{background:var(--surf);border:1px solid var(--line);border-radius:var(--r);padding:12px 13px 8px;box-shadow:var(--sh)}
.dcard.today{border-color:var(--beet);box-shadow:0 0 0 2px rgba(123,31,59,.13)}
.dhead{display:flex;justify-content:space-between;align-items:baseline;gap:8px;
  padding-bottom:8px;margin-bottom:4px;border-bottom:1px solid var(--line)}
.dhead h3{margin:0;font-size:16px;cursor:pointer}
.dhead .tot{font-size:11.5px;color:var(--soft);text-align:right;line-height:1.35}
.mrow{display:flex;gap:9px;align-items:flex-start;padding:8px 0;border-bottom:1px dotted var(--line);
  cursor:pointer;background:none;border-left:none;border-right:none;border-top:none;width:100%;text-align:left}
.mrow:last-child{border-bottom:none}
.mrow .tag.t-code{flex:0 0 auto;margin-top:2px}
.mrow-t{font-size:14px;font-weight:600;line-height:1.3;margin:0}
.mrow-s{font-size:11.5px;color:var(--soft);margin:2px 0 0}

/* ---------- shopping ---------- */
.shop{columns:2;column-gap:28px}
@media(max-width:700px){.shop{columns:1}}
.grp{break-inside:avoid;margin:0 0 20px}
.grp h3{margin:0 0 6px;font-size:15px;color:var(--leaf);border-bottom:1px solid var(--line);padding-bottom:4px}
.grp ul{list-style:none;margin:0;padding:0}
.ing{display:grid;grid-template-columns:auto minmax(0,1fr) auto;column-gap:9px;align-items:start;padding:4px 0;font-size:14.5px}
.ing input{margin:4px 0 0;accent-color:var(--beet);width:16px;height:16px}
.ing label{cursor:pointer}
.ing input:checked ~ label{text-decoration:line-through;color:var(--faint)}
.ing .raw{display:block;color:var(--soft);font-size:12.5px}
.use{position:relative;background:none;border:none;padding:0;margin-top:2px;font-size:12.5px;color:var(--faint);
  border-bottom:1px dashed var(--line2);cursor:pointer;white-space:nowrap}
.exp{margin:0 0 18px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
#expBox{margin:10px 0 18px;max-width:74ch}
#expArea{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;
  background:var(--surf);border:1px solid var(--line);border-radius:var(--r);padding:12px;color:var(--ink);line-height:1.55}
.msg{font-size:13px;color:var(--leaf)}

/* ---------- recipes ---------- */
.rec{background:var(--surf);border:1px solid var(--line);border-radius:var(--r);
  padding:16px 18px;margin:0 0 12px;max-width:74ch;box-shadow:var(--sh)}
.rec h3{margin:0 0 4px;font-size:19px;display:flex;gap:9px;align-items:baseline;flex-wrap:wrap}
.rec .meta{font-size:13px;color:var(--soft);margin:0 0 3px}
.rec .compo{font-size:13px;color:var(--faint);margin:0 0 6px}
.rec > .ghost{margin-top:12px}
.ylab{font-family:'Bitter',serif;font-size:13px;font-weight:600;color:var(--leaf);margin:13px 0 5px}
.ings{list-style:none;margin:0;padding:0;font-size:14px}
.ings li{padding:4px 0;border-bottom:1px dotted var(--line);line-height:1.4}
.ings li:last-child{border-bottom:none}
.ings .q{font-weight:600}
.ings .alt,.wt .alt{color:var(--soft);font-size:12.5px}
.per{font-size:13px;color:var(--soft);margin:8px 0 0}
.steps{margin:12px 0 0;padding-left:20px;font-size:14.5px}
.steps li{margin-bottom:7px;line-height:1.5}
.tw{overflow-x:auto;margin:8px 0 0;-webkit-overflow-scrolling:touch}
.wt{border-collapse:collapse;width:100%;min-width:420px;font-size:13.5px;margin:0}
.wt th{font-family:'Bitter',serif;font-weight:600;color:var(--leaf);font-size:12px;
  text-align:left;padding:6px 8px;border-bottom:1px solid var(--line2);white-space:nowrap}
.wt td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.wt tr:last-child td{border-bottom:none}
.wt td:first-child{font-weight:600}
.wt td.q{color:var(--beet);font-weight:700;white-space:nowrap}
.wt td:nth-child(2),.wt td:nth-child(3){color:var(--soft);white-space:nowrap}
.rgrp{font-family:'Bitter',serif;font-size:15px;color:var(--leaf);margin:26px 0 10px;
  border-bottom:1px solid var(--line);padding-bottom:5px;max-width:74ch}
.stepper{display:inline-flex;align-items:center;gap:2px;background:var(--surf2);
  border:1px solid var(--line2);border-radius:8px;padding:2px;margin-left:auto}
.stepper button{border:none;background:none;width:26px;height:26px;border-radius:6px;cursor:pointer;font-weight:700}
.stepper span{min-width:74px;text-align:center;font-size:13px;font-weight:600}

/* ---------- prep ---------- */
.task{background:var(--surf);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin-bottom:12px;max-width:74ch;box-shadow:var(--sh)}
.task.accent{border-color:var(--pump)}
.task h3{margin:0 0 8px;font-size:17px}
.task ul{margin:0;padding-left:19px;font-size:14.5px}
.task li{margin-bottom:6px}
details{border:1px solid var(--line);border-radius:var(--r);padding:12px 16px;background:var(--surf);max-width:74ch;margin-bottom:12px}
summary{cursor:pointer;font-family:'Bitter',serif;font-weight:600;font-size:16px}
details[open] summary{margin-bottom:10px}
details p,details li{font-size:14.5px}
table{border-collapse:collapse;width:100%;font-size:13.5px;margin:8px 0 14px;max-width:74ch}
th,td{text-align:left;padding:6px 9px;border-bottom:1px solid var(--line);vertical-align:top}
th{font-family:'Bitter',serif;font-weight:600;color:var(--leaf)}

/* ---------- sheet & modal ---------- */
.ov{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center}
#sheet{z-index:62}   /* рецепт открывается поверх библиотеки */
.ov > .bd{position:absolute;inset:0;background:rgba(26,29,24,.42);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.ov .pn{position:relative;background:var(--bg);width:100%;max-width:760px;max-height:92vh;max-height:92dvh;
  overflow-y:auto;overscroll-behavior:contain;
  border-radius:16px 16px 0 0;padding:0 18px calc(40px + env(safe-area-inset-bottom));box-shadow:0 -8px 40px rgba(0,0,0,.2);
  animation:up .2s ease-out}
@keyframes up{from{transform:translateY(18px);opacity:.6}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.ov .pn{animation:none}}
@media(min-width:760px){
  .ov{align-items:center}
  .ov .pn{border-radius:16px;max-height:88vh;padding-bottom:26px}
}
.pnbar{position:sticky;top:0;background:var(--bg);padding:12px 0 10px;display:flex;align-items:center;gap:10px;z-index:2;border-bottom:1px solid var(--line);margin-bottom:14px}
.pnbar h2{margin:0;font-size:18px;flex:1 1 auto}
.x{background:var(--surf);border:1px solid var(--line2);border-radius:8px;width:32px;height:32px;cursor:pointer;font-size:17px;line-height:1;flex:0 0 auto}
.sheet-art{border-radius:var(--r);overflow:hidden;margin-bottom:14px;aspect-ratio:16/7;position:relative;background:var(--surf2)}
.sheet-art svg,.sheet-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.search{width:100%;padding:9px 12px;border:1px solid var(--line2);border-radius:9px;background:var(--surf);font:inherit;font-size:16px;margin-bottom:14px}
.libgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
#tt{position:fixed;z-index:70;max-width:320px;max-height:min(60vh,440px);overflow-y:auto;overscroll-behavior:contain;
  background:var(--surf);border:1px solid var(--line2);
  border-radius:var(--r);padding:11px 13px;font-size:13px;line-height:1.45;box-shadow:var(--sh)}
#tt h4{margin:0 0 6px;font-size:14px}
#tt ul{list-style:none;margin:0;padding:0}
#tt li{padding:4px 0;border-top:1px dotted var(--line)}
#tt li:first-child{border-top:none}
#tt .w{display:block;color:var(--soft);font-size:12px}
.ref h2{font-size:20px;margin:30px 0 9px;border-bottom:1px solid var(--line);padding-bottom:5px}
.ref h3{font-size:16px;margin:18px 0 6px}
.ref p,.ref li{font-size:15px}
.ref ol,.ref ul{padding-left:20px}
.ref li{margin-bottom:6px}
.ref a{color:var(--beet)}
.warn{border-left:3px solid var(--beet);padding-left:13px;font-size:14.5px}

/* ---------- наведение: только там, где есть мышь, иначе на телефоне «залипает» после касания ---------- */
@media (hover:hover){
  .nav button:hover,.ghost:hover{border-color:var(--soft)}
  .subnav a:hover{color:var(--ink);border-color:var(--soft)}
  .mcard:hover{transform:translateY(-2px);box-shadow:0 2px 4px rgba(26,29,24,.07),0 12px 28px rgba(26,29,24,.09)}
  .dhead h3:hover,.mrow:hover .mrow-t{color:var(--beet)}
  .use:hover{color:var(--beet);border-color:var(--beet)}
  .stepper button:hover{background:var(--surf)}
}

/* ---------- телефон ---------- */
@media(max-width:560px){
  /* шапка: одна строка кнопок и полоса дней */
  .bar-in{padding:8px max(12px,env(safe-area-inset-right)) 8px max(12px,env(safe-area-inset-left));gap:6px}
  .brand,.nav .arw,#datePick{display:none}
  .seg button,.nav button,.ghost{min-height:40px}
  .seg button{padding:5px 11px}
  .nav button{padding:5px 10px}
  .ib{width:40px;padding:0;display:inline-flex;align-items:center;justify-content:center}
  .ib svg{display:block}
  .ib span{display:none}
  .strip{padding:0 max(12px,env(safe-area-inset-right)) 8px max(12px,env(safe-area-inset-left))}
  .sc{min-height:46px}
  .strip[data-mode="day"]{display:grid;grid-template-columns:26px repeat(7,minmax(0,1fr)) 26px;gap:4px;overflow:visible}
  .strip[data-mode="day"] .sc{min-width:0;padding:6px 0}
  .strip[data-mode="day"] .sc b{font-size:16px}
  .strip[data-mode="day"] .sc[data-jump] i{display:none}

  main{padding:16px max(12px,env(safe-area-inset-right)) calc(76px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}
  .period h1{font-size:22px}
  section{scroll-margin-top:calc(var(--barh,110px) + 10px)}

  /* разделы — нижняя панель под большим пальцем */
  .subnav{position:fixed;top:auto;left:0;right:0;bottom:0;z-index:40;margin:0;padding:0 0 env(safe-area-inset-bottom);
    display:grid;grid-template-columns:repeat(4,1fr);gap:0;overflow:visible;background:var(--bg);border-top:1px solid var(--line)}
  .subnav a{display:flex;align-items:center;justify-content:center;min-height:52px;padding:0 2px;
    border:none;border-radius:0;background:none;font-size:13px}
  .subnav a[aria-current="true"]{color:var(--beet);box-shadow:inset 0 2px 0 var(--beet)}

  /* карточки блюд: миниатюра слева, чтобы четыре блюда помещались на экран */
  .mgrid,.libgrid{grid-template-columns:1fr;gap:10px}
  .mcard{display:grid;grid-template-columns:92px minmax(0,1fr);box-shadow:none}
  .mcard .art{aspect-ratio:auto;height:100%;min-height:92px}
  .mcard .cbody{padding:10px 12px}
  .mcard h3{font-size:16px}
  /* длинное время приготовления — в одну строку с многоточием, полностью оно есть в рецепте */
  .mcard .tagrow{flex-wrap:nowrap}
  .mcard .tag{flex:0 0 auto}
  .mcard .tag.t-time{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .dhead h3{padding:6px 0}

  .ing{padding:8px 0;font-size:15px}
  .ing input{width:22px;height:22px;margin:0}
  #expArea{font-size:16px}

  /* таблица весов помещается целиком: «Ваша порция» не уезжает за край */
  .rec{padding:14px}
  .rec .sheet-art{display:none}
  .wt{min-width:0;font-size:13px}
  .wt th{white-space:normal;vertical-align:bottom}
  .wt th,.wt td{padding:6px 5px}
  .wt td:nth-child(n+2){white-space:nowrap}
  .wt .alt{display:block;white-space:normal}
  .stepper button{width:40px;height:40px}
  .ov .pn{padding:0 14px calc(28px + env(safe-area-inset-bottom))}
  .x{width:40px;height:40px}
}
