/* Новый вид: страница «Избранное» /izbrannoe/ — макет Дизайнера (~/zadachi/makety-izbrannoe/src/izb.css, раздел
   «страница Избранное»), поверх nv.css. Сердечко, счётчик и подтверждение — plugins/morrowgroup/izb.css. */
/* список рисует скрипт после ответа сервера: место под страницу занято сразу (иначе на ПК появление полосы прокрутки
   сдвигает всю раскладку вбок — CLS 0,31 на стенде 04.10) */
html{scrollbar-gutter:stable}
.iz{min-height:calc(100vh - 84px)}
.kroshki{display:flex;flex-wrap:wrap;gap:6px 10px;margin:0;padding:24px 0 0;list-style:none;font-size:13px;color:var(--t2)}
.kroshki li+li::before{content:"›";margin-right:10px;color:#9aa58f}
.kroshki a{text-decoration:none}
.iz-zag{display:flex;align-items:baseline;gap:16px;margin-top:14px}
.iz-h1{margin:0;font:900 44px/1 'RoadRadio',Arial,sans-serif;text-transform:uppercase}
.iz-sch{font-size:17px;color:var(--t2)}
.iz-zhdu{margin:28px 0 88px;font-size:16px;color:var(--t2)}
.iz-zhdu[hidden]{display:none}
.iz-setka{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:32px;align-items:start;margin:28px 0 88px}
.iz-pan{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;margin-bottom:18px}
.iz-sort{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.iz-sort>span{margin-right:4px;font-size:14px;color:var(--t2)}
.iz-vse{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 4px;border:0;background:none;color:var(--t2);font:500 15px/1 'Ubuntu',Arial,sans-serif;cursor:pointer}
.iz-vse .ik{width:18px;height:18px}
@media (hover:hover) and (pointer:fine){.iz-vse:hover{color:var(--t)}}
.iz-spis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}

.iz-pl{position:relative;display:flex;flex-direction:column;border:1px solid var(--lin);border-radius:20px;background:#fff;
  transition:opacity .2s ease-out,transform .2s var(--kriv),border-color .16s}
.iz-pl.uhodit{opacity:0;transform:scale(.97)}
.iz-pl__foto{position:relative;display:block;aspect-ratio:16/10;margin:8px 8px 0;border-radius:14px;overflow:hidden;background:var(--z-deep) center/cover no-repeat}
.iz-pl__foto::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(17,29,9,.6),rgba(17,29,9,0) 45%)}
.iz-pl__tel{display:flex;flex-direction:column;flex:1;padding:14px 16px 16px}
.iz-pl__bc{font:900 19px/1.1 'RoadRadio',Arial,sans-serif;text-transform:uppercase;text-decoration:none;color:var(--t)}
.iz-pl__blok{margin-top:6px;font:700 17px/1.3 'Ubuntu',Arial,sans-serif;color:var(--z-t);text-decoration:underline;text-decoration-color:rgba(79,122,18,.35);text-underline-offset:4px;align-self:flex-start}
.iz-pl .mgv-metro{display:flex;align-items:center;gap:8px;margin-top:6px;font-size:15px}
.iz-pl .mgv-metro span{color:var(--t2)}
.metro-i{flex:none;width:10px;height:10px;border-radius:50%;background:#9aa58f}
.iz-pl .zk__klass{position:absolute;z-index:1;left:12px;bottom:12px;display:flex;align-items:center;gap:8px;color:#fff;font:900 13px/1 'RoadRadio',Arial,sans-serif;letter-spacing:.04em;text-transform:uppercase}
.iz-pl .zk__klass b{display:inline-grid;place-items:center;min-width:30px;height:30px;padding:0 6px;border-radius:9px;background:var(--z);color:var(--t);font-size:14px}
.iz-fakty{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;margin:14px 0 0;padding:14px 0 0;border-top:1px solid var(--lin)}
.iz-fakty dt{font-size:13px;color:var(--t2)}
.iz-fakty dd{margin:2px 0 0;font:700 16px/1.25 'Ubuntu',Arial,sans-serif;font-variant-numeric:tabular-nums}
.iz-fakty .cena{grid-column:1/-1;display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:12px;background:var(--z-ochsv)}
.iz-fakty .cena dd{font-size:20px}
.iz-pl__niz{display:flex;gap:8px;margin-top:auto;padding-top:14px}
.iz .mgv-str{display:inline-flex;align-items:center;justify-content:center;flex:1;height:44px;padding:0 18px;border:1.5px solid var(--ramka);border-radius:10px;background:#fff;font:700 14px/1 'Ubuntu',Arial,sans-serif;color:var(--t);cursor:pointer;transition:border-color .16s,transform .12s var(--kriv)}
.iz .mgv-str:active{transform:scale(.97)}
.iz .mgv-str:focus-visible{outline:2px solid var(--z-t);outline-offset:2px}
@media (hover:hover) and (pointer:fine){.iz-pl:hover{border-color:#c9d8b4}.iz .mgv-str:hover{border-color:var(--t)}}
/* сердечко на фото плитки */
.izb.izb--foto{position:absolute;z-index:2;top:20px;right:20px;border:0;border-radius:50%;background:rgba(255,255,255,.94);box-shadow:0 4px 14px -6px rgba(9,14,6,.5)}
.izb.izb--foto[aria-pressed=true]{background:#fff}
/* блок сдан или снят */
.iz-pl--snyat .iz-pl__foto{background:#dfe3da}
.iz-pl--snyat .iz-pl__foto::after{display:none}
.iz-pl--snyat .iz-pl__bc{color:var(--t2)}
.iz-pl__snyat{margin:8px 0 0;font-size:15px;color:var(--t2)}

/* правая колонка — заявка по всему списку */
.iz-zayv{position:sticky;top:24px;display:flex;flex-direction:column;gap:16px;padding:24px;border-radius:24px;background:var(--shapka-okna);color:#fff}
.iz-zayv__zag{font:900 24px/1.08 'RoadRadio',Arial,sans-serif;text-transform:uppercase}
.iz-zayv__svod{display:grid;gap:10px;margin:0;padding:14px 0;border-top:1px solid rgba(255,255,255,.18);border-bottom:1px solid rgba(255,255,255,.18)}
.iz-zayv__svod div{display:flex;justify-content:space-between;gap:12px;font-size:15px}
.iz-zayv__svod dt{color:rgba(255,255,255,.75)}
.iz-zayv__svod dd{margin:0;font-weight:700;text-align:right;font-variant-numeric:tabular-nums}
.iz-zayv .knopka{width:100%}
.iz-zayv p{margin:0;font-size:14px;line-height:1.45;color:rgba(255,255,255,.82)}
.iz-hran{display:flex;gap:10px;align-items:flex-start;font-size:13px;line-height:1.45;color:var(--t2);margin-top:14px;padding:0 6px}
.iz-hran .ik{flex:none;width:18px;height:18px;margin-top:1px}
.iz-otdel{padding:0 6px;margin-top:10px;font-size:14px;color:var(--t2)}
.iz-otdel a{margin-left:6px;font-weight:700;color:var(--t);text-decoration:none}
.knopka[disabled]{opacity:.5;pointer-events:none}

/* нижняя полоса на телефоне */
.iz-niz{display:none}

/* пустое состояние */
.iz-pusto{display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;margin:28px 0 88px;padding:64px 24px;border-radius:24px;background:var(--z-ochsv)}
.iz-pusto__ik{display:grid;place-items:center;width:76px;height:76px;border-radius:50%;background:var(--z-sv);color:var(--z-t)}
.iz-pusto__ik .ik-s{width:34px;height:34px}
.iz-pusto h2{margin:0;font:900 28px/1.1 'RoadRadio',Arial,sans-serif;text-transform:uppercase}
.iz-pusto p{margin:0;max-width:52ch;font-size:17px;color:var(--t2)}
.iz-pusto .knopka{margin-top:8px}
.iz-pusto__gde{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:6px}
.iz-pusto__gde span{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 14px;border-radius:999px;background:#fff;border:1px solid var(--lin);font-size:14px}
.iz-pusto__gde .ik-s{width:16px;height:16px;color:var(--z-t)}

/* окно заявки по избранному: список блоков */
.okno__spis{margin:0;padding:4px 0;list-style:none;max-height:212px;overflow-y:auto;overscroll-behavior:contain;border:1.5px solid var(--lin);border-radius:14px}
.okno__spis li+li{border-top:1px solid var(--lin2)}
.okno__spis label{display:grid;grid-template-columns:52px minmax(0,1fr) auto;grid-template-areas:"i b e" "i s e";align-items:center;column-gap:12px;padding:8px 12px}
/* по списку — галочка «включить в заявку» у каждого блока (та же, что у плитки); вся строка — её подпись */
.okno__spis.s-galkami label{grid-template-columns:22px 52px minmax(0,1fr) auto;grid-template-areas:"c i b e" "c i s e";cursor:pointer;-webkit-tap-highlight-color:transparent}
.okno__spis input{grid-area:c;width:20px;height:20px;margin:0;accent-color:#4f7a12;cursor:pointer}
.okno__spis i{grid-area:i;display:block;width:52px;height:40px;border-radius:8px;background:var(--z-deep) center/cover no-repeat}
.okno__spis b{grid-area:b;align-self:end;font-size:15px;line-height:1.25}
.okno__spis span{grid-area:s;align-self:start;font-size:13px;color:var(--t2)}
.okno__spis em{grid-area:e;font-style:normal;font-weight:700;font-size:14px;white-space:nowrap}
.okno__spis li.is-off i,.okno__spis li.is-off b,.okno__spis li.is-off span,.okno__spis li.is-off em{opacity:.5}
.okno__niz{display:grid;gap:12px}
.okno__podsk{margin:0;font-size:14px;line-height:1.4;color:var(--t2);text-align:center}
.okno__podsk[hidden]{display:none}
#izb-okno .knopka[disabled]{pointer-events:auto;cursor:not-allowed;opacity:.55}
.okno__spis-zag{display:flex;justify-content:space-between;font-size:13px;font-weight:500;color:var(--t2)}
.okno__ok p{margin:0;font:400 15px/1.5 'Ubuntu',Arial,sans-serif;color:var(--t2)}
.okno__ok[hidden],.okno__forma[hidden]{display:none}
#izb-okno [data-osh=obshchee]:empty{display:none}

@media (max-width:1100px){.iz-setka{grid-template-columns:minmax(0,1fr) 300px;gap:24px}}
@media (max-width:900px){
  .iz-setka{grid-template-columns:minmax(0,1fr);margin-bottom:40px}
  .iz-setka>aside{display:none}
  .iz-niz{position:fixed;z-index:40;left:0;right:0;bottom:0;display:flex;gap:10px;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));background:#fff;border-top:1px solid var(--lin);box-shadow:0 -10px 24px -18px rgba(9,14,6,.45)}
  .iz-niz .knopka{flex:1;min-height:52px}
  .iz-niz.skryt{display:none}
  body.est-niz{padding-bottom:84px}
  body.est-niz .izb-tost{bottom:calc(84px + env(safe-area-inset-bottom,0px))}
}
@media (max-width:767px){
  .iz-h1{font-size:30px}
  .iz-zag{flex-direction:column;gap:4px;margin-top:10px}
  .iz-sch{font-size:15px}
  .iz-setka{margin-top:18px}
  .iz-pan{flex-wrap:nowrap;align-items:flex-start;flex-direction:column;gap:10px}
  .iz-sort{flex-wrap:nowrap;overflow-x:auto;width:calc(100% + 32px);margin:0 -16px;padding:0 16px 2px;scrollbar-width:none}
  .iz-sort::-webkit-scrollbar{display:none}
  .iz-sort>span{display:none}
  .iz-sort .chip{flex:none}
  .iz-spis{grid-template-columns:1fr;gap:14px}
  .iz-pl__foto{aspect-ratio:16/9}
  .iz-pusto{padding:44px 18px;margin-bottom:48px}
  .iz-pusto h2{font-size:24px}
  .iz-pusto p{font-size:16px}
}
/* телефон (и низкий экран планшета): окно — в видимой части экрана (панель Safari, safe-area, клавиатура — переменные
   из visualViewport, nv-izbrannoe.js), шапка ужата, список блоков компактный со своей прокруткой, кнопка отправки
   закреплена у нижнего края окна — видна без прокрутки (владелец 05.10, скрин iPhone) */
@media (max-width:767px),(max-width:900px) and (max-height:600px){
  #izb-okno[open]{display:flex;flex-direction:column;overflow:hidden;
    inset:calc(var(--vv-top,0px) + env(safe-area-inset-top,0px)) 0 calc(var(--vv-niz,0px) + env(safe-area-inset-bottom,0px));
    max-height:calc(var(--vv-h,100dvh) - 16px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}
  #izb-okno .okno__verh{flex:none;padding:14px 64px 12px 16px}
  #izb-okno .okno__zag{font-size:19px}
  #izb-okno .okno__pod{margin-top:4px;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #izb-okno .okno__zakr{top:10px;right:10px}
  /* строки сетки — по содержимому: иначе в низком окне сетка ужимает список (у прокручиваемого минимум 0) */
  #izb-okno .okno__forma{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;grid-auto-rows:max-content;align-content:start;gap:10px;padding:12px 16px 0;scroll-padding-bottom:96px}
  #izb-okno .okno__forma .soglasie{margin:0 0 14px}
  #izb-okno .okno__ok{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}
  #izb-okno .okno__niz{position:sticky;bottom:0;z-index:1;gap:8px;margin:0 -16px;padding:10px 16px 12px;background:#fff;box-shadow:0 -1px 0 var(--lin2)}
  #izb-okno .okno__spis{max-height:138px}
  #izb-okno .okno__spis label{grid-template-columns:40px minmax(0,1fr) auto;grid-template-areas:"i b b" "i s e";column-gap:10px;row-gap:2px;padding:8px 10px}
  #izb-okno .okno__spis.s-galkami label{grid-template-columns:22px 40px minmax(0,1fr) auto;grid-template-areas:"c i b b" "c i s e"}
  #izb-okno .okno__spis i{width:40px;height:32px}
  #izb-okno .okno__spis b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #izb-okno .okno__spis span{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #izb-okno .okno__spis em{font-size:13px}
}
.iz-setka[hidden],.iz-pusto[hidden]{display:none}

/* ── форма заявки, вариант А (выбор владельца 05.10.2026, ~/zadachi/izbrannoe-forma-varianty/) ── */
/* галочка «Включить в заявку» — только состав заявки, избранное не меняется */
.iz-poyasn{margin:-4px 0 18px;font-size:14px;line-height:1.4;color:var(--t2)}
.iz-vkl{display:flex;align-items:center;gap:10px;min-height:44px;margin:0 0 14px;padding:8px 12px;border-radius:10px;background:#eef4e4;color:#243614;
  font:500 14px/1.25 'Ubuntu',Arial,sans-serif;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .16s,color .16s}
.iz-vkl input{flex:none;width:20px;height:20px;margin:0;accent-color:#4f7a12;cursor:pointer}
.iz-vkl.is-off{background:#f4f5f1;color:#596350}
.iz-vkl:has(input:focus-visible){outline:2px solid #4f7a12;outline-offset:2px}
.iz-podsk{margin:0;font-size:14px;line-height:1.4}
.iz-podsk[hidden]{display:none}
.iz-zayv .knopka[disabled],.iz-niz .knopka[disabled]{pointer-events:auto;cursor:not-allowed}
.iz-zayv .knopka[aria-busy=true]{opacity:.7;cursor:progress}
/* компьютер: колонка-форма прилипает при прокрутке; имя и телефон прямо в ней */
@media (min-width:901px){
  .iz-setka>aside{position:sticky;top:24px;max-height:calc(100vh - 48px);overflow-y:auto;scrollbar-width:thin}
  .iz-zayv{position:static}
}
.iz-zayv__forma{display:grid;gap:14px;margin:0}
.iz-zayv__forma[hidden],.iz-zayv__ok[hidden]{display:none}
.iz-zayv__forma .pole>span{font-size:14px;font-weight:700;color:#fff}
.iz-zayv__forma .pole input{border-color:transparent}
.iz-zayv .osh{color:#ffc4b6}
.iz-zayv .pole [aria-invalid=true]{border-color:#ff9c86}
.iz-zayv p.iz-podsk{color:#fff}
.iz-zayv p.iz-zayv__sogl{font-size:12px;line-height:1.4;color:#dce5d3}
.iz-zayv__sogl a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.iz-zayv__ok{display:grid;gap:6px;font-size:15px;line-height:1.45;outline:0}
.iz-zayv__ok b{font-size:17px}
.iz-zayv__ok span{color:rgba(255,255,255,.82);font-size:14px}
.iz-zayv__esche{justify-self:start;margin-top:8px;padding:0;border:0;background:none;color:var(--z-tablo);font:500 15px/1.3 'Ubuntu',Arial,sans-serif;
  text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.iz-zayv__esche:focus-visible{outline:2px solid var(--z-tablo);outline-offset:3px}
.iz-zayv__esche[hidden]{display:none}
/* избранное опустело, пока колонка держит статус заявки: «пусто» — в левой части сетки, колонка на месте (Б4) */
.iz-setka--pusto .iz-pan,.iz-setka--pusto .iz-poyasn{display:none}
.iz-setka .iz-pusto{margin:0}
/* телефон: «N из M» в нижней кнопке; все сняты — подсказка под ней */
@media (max-width:900px){
  .iz-niz{flex-wrap:wrap}
  .iz-niz .iz-podsk{flex-basis:100%;text-align:center;font-size:13px;color:var(--t2)}
  body.est-niz.iz-nol{padding-bottom:112px}
  body.est-niz.iz-nol .izb-tost{bottom:calc(112px + env(safe-area-inset-bottom,0px))}
}
@media (max-width:767px){.iz-poyasn{font-size:13px;margin-bottom:14px}}
@media (prefers-reduced-motion:reduce){.iz-vkl{transition:none}}
