/* Зефир — стиль продукта. Токены совпадают с design-kit/02-tokens/tokens.css */
:root{
  --paper:#FAF6F0; --surface:#FFF; --sunk:#F2ECE3;
  --ink:#16130F; --ink60:#6B6259; --ink30:#B5ADA3; --line:#E7DFD4;
  --brand:#5B3DF5; --brand-d:#4A2FD6; --tint:#EFEBFE; --mix:#5B1933;
  --warm:#FF6B35; --warm-t:#FFEDE5; --ok:#3F8F6B; --ok-t:#E7F3ED; --bad:#D6453C;
  --r-sm:10px; --r-md:18px; --r-lg:28px; --r-xl:36px;
  --sh1:0 2px 6px rgba(22,19,15,.05),0 1px 2px rgba(22,19,15,.03);
  --sh2:0 8px 24px rgba(22,19,15,.06),0 2px 6px rgba(22,19,15,.04);
  --sh3:0 20px 56px rgba(22,19,15,.09),0 4px 14px rgba(22,19,15,.05);
  --ease:cubic-bezier(.2,.8,.2,1);
  --disp:"Playfair Display",Georgia,"Times New Roman",serif;
  --ui:Onest,Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
}
@media (prefers-color-scheme:dark){:root{
  --paper:#121014; --surface:#1C1920; --sunk:#14121A;
  --ink:#F4F0EA; --ink60:#A29AA8; --ink30:#635C6B; --line:#2C2833;
  --brand:#8B72FF; --brand-d:#7A5FF5; --tint:#241C42; --mix:#C46A8E;
  --warm:#FF8757; --warm-t:#33201A; --ok:#57B189; --ok-t:#152A22; --bad:#FF6A60;
  --sh1:0 2px 6px rgba(0,0,0,.36); --sh2:0 8px 26px rgba(0,0,0,.42); --sh3:0 22px 58px rgba(0,0,0,.5);
}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.55 var(--ui);-webkit-font-smoothing:antialiased}
h1,h2,h3,p,figure,blockquote{margin:0}
a{color:inherit}
img{max-width:100%;display:block}
button,input,select{font:inherit}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}

.wrap{max-width:960px;margin:0 auto;padding:0 20px}
@media(min-width:900px){.wrap{padding:0 32px}}
/* Только вертикальные отступы. Сокращённая запись padding обнуляла боковые
   поля .wrap, и на всех экранах с парой классов «wrap sect» текст упирался
   в края телефона. Видно только на узком экране, поэтому и жило долго. */
.sect{padding-top:44px;padding-bottom:44px}
.center{text-align:center}
.muted{color:var(--ink30)}
.hint{font-size:13px;color:var(--ink30);line-height:1.5}
.empty{color:var(--ink30);padding:28px 0;text-align:center}

.hd{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:12px;
  padding:12px 20px;background:color-mix(in srgb,var(--paper) 88%,transparent);
  backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.logo{display:flex;align-items:center;gap:9px;font-weight:700;letter-spacing:.02em;text-decoration:none;white-space:nowrap}
.hd .btn{margin-left:auto}

.h1{font-family:var(--disp);font-weight:500;letter-spacing:-.025em;line-height:1.06;font-size:clamp(30px,6vw,54px)}
.h1.sm{font-size:clamp(26px,4.6vw,40px)}
.h2{font-family:var(--disp);font-weight:500;font-size:clamp(22px,3vw,30px);line-height:1.15}
.h3{font-size:18px;font-weight:600;letter-spacing:-.01em}
.kick{font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--brand)}
.lede{color:var(--ink60);font-size:clamp(15px,1.6vw,18px);line-height:1.6;max-width:60ch;margin-top:14px}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;
  padding:12px 20px;border:0;border-radius:999px;background:var(--brand);color:#fff;
  font-size:15px;font-weight:600;cursor:pointer;text-decoration:none;
  transition:background .18s var(--ease),transform .12s var(--ease)}
.btn:hover{background:var(--brand-d)}
.btn:active{transform:scale(.97)}
.btn.ghost{background:var(--surface);color:var(--ink);border:1px solid var(--line)}
.btn.ghost:hover{border-color:var(--ink30);background:var(--surface)}
.btn.sm{min-height:38px;padding:9px 16px;font-size:13.5px}
.btn.big{width:100%;min-height:52px;font-size:16px}
.icon-btn{background:none;border:0;color:var(--ink30);cursor:pointer;padding:10px;
  min-width:44px;min-height:44px;display:grid;place-items:center;border-radius:999px}
.icon-btn:hover{color:var(--bad);background:var(--sunk)}

.chips{display:flex;gap:8px;flex-wrap:wrap;list-style:none;padding:0;margin:14px 0 0}
.chip{font-size:13px;font-weight:500;color:var(--ink60);background:var(--surface);
  border:1px solid var(--line);border-radius:999px;padding:7px 14px}
.chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.chip.warm{color:var(--warm);background:var(--warm-t);border-color:color-mix(in srgb,var(--warm) 30%,transparent)}
.promises{margin-top:22px}

.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:24px;box-shadow:var(--sh1)}
.fld{display:block;margin-top:14px}
.fld>span{display:block;font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink30);margin-bottom:6px}
.fld input,.fld select{width:100%;min-height:46px;padding:12px 14px;border:1.5px solid var(--line);
  border-radius:var(--r-md);background:var(--sunk);color:var(--ink)}
.fld input:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 4px var(--tint);background:var(--surface)}
.row2{display:grid;gap:12px}
@media(min-width:560px){.row2{grid-template-columns:1fr 1fr}}
.create{margin-top:32px}
.create .btn{margin-top:20px}
.dt{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}
.dt summary{cursor:pointer;font-size:14px;font-weight:600;color:var(--brand);min-height:44px;display:flex;align-items:center}
.dt .btn{margin-top:16px}
.warn{background:var(--warm-t);border:1px solid color-mix(in srgb,var(--warm) 30%,transparent);
  color:var(--ink);border-radius:var(--r-md);padding:12px 14px;font-size:14px;line-height:1.5;margin-top:10px}
.check{display:flex;gap:12px;align-items:flex-start;margin-top:14px;cursor:pointer}
.check input{width:20px;height:20px;margin-top:3px;flex:none;accent-color:var(--brand)}
.check em{display:block;font-style:normal;font-size:13.5px;color:var(--ink60);line-height:1.5;margin-top:4px}
.check+.btn{margin-top:18px}

.ok{display:flex;gap:10px;align-items:center;background:var(--ok-t);color:var(--ok);
  border:1px solid color-mix(in srgb,var(--ok) 28%,transparent);border-radius:var(--r-md);
  padding:13px 16px;font-size:14px;font-weight:600;margin-top:18px}
.big-ok{align-items:flex-start}
.big-ok p{color:var(--ink60);font-weight:400;font-size:13.5px;margin-top:4px}

.hero{padding:40px 0 8px}
.cards{display:grid;gap:14px;margin-top:20px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.lcard{display:flex;gap:14px;align-items:center;padding:12px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-md);text-decoration:none;box-shadow:var(--sh1);
  transition:transform .18s var(--ease),box-shadow .18s var(--ease)}
.lcard:hover{transform:translateY(-3px);box-shadow:var(--sh2)}
.lcard-cover{width:56px;height:56px;border-radius:14px;flex:none}
.lcard-b{display:flex;flex-direction:column;gap:2px;min-width:0}
.lcard-b b{font-size:15px}
.lcard-b .muted{font-size:12.5px}

.c0{background:linear-gradient(140deg,#6B4BFF,#B14BE8 52%,#FF7A45)}
.c1{background:linear-gradient(140deg,#3F8F6B,#6B4BFF)}
.c2{background:linear-gradient(140deg,#FF7A45,#B14BE8)}
.c3{background:linear-gradient(140deg,#2E7CF6,#57B189)}
.c4{background:linear-gradient(140deg,#B14BE8,#FF9F45)}
.c5{background:linear-gradient(140deg,#5B3DF5,#2E7CF6 60%,#57B189)}

.cover{height:170px;position:relative;margin-bottom:18px}
.cover::after{content:"";position:absolute;inset:0;opacity:.4;
  background-image:radial-gradient(rgba(255,255,255,.2) 1px,transparent 1px);background-size:5px 5px}
.badge{position:absolute;left:20px;bottom:16px;z-index:2;display:inline-flex;align-items:center;gap:6px;
  background:rgba(255,255,255,.94);color:#16130F;border-radius:999px;padding:7px 13px;font-size:12.5px;font-weight:600}
.ghead .chips{margin-top:12px}
.note{background:var(--sunk);border-left:2px solid var(--brand);border-radius:0 var(--r-md) var(--r-md) 0;
  padding:13px 16px;font-size:14.5px;color:var(--ink60);line-height:1.55;margin-top:16px}

.grid{display:grid;gap:14px;padding-top:22px;padding-bottom:96px}
@media(min-width:640px){.grid{grid-template-columns:repeat(2,1fr);gap:18px}}
@media(min-width:1000px){.grid{grid-template-columns:repeat(3,1fr)}}

.icard{position:relative;display:flex;gap:12px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:12px;box-shadow:var(--sh1);
  transition:transform .18s var(--ease),box-shadow .18s var(--ease)}
@media(min-width:640px){.icard{flex-direction:column;padding:14px}}
.icard:hover{transform:translateY(-4px);box-shadow:var(--sh3)}
.icard.top{border-left:3px solid var(--brand)}
/* Занятое приглушаем фотографией, а не текстом: цену и название
   гость всё равно должен прочитать, иначе страдает контраст. */
.icard.taken .ph{opacity:.4;filter:grayscale(.7)}
.icard.taken .in,.icard.taken .pr{color:var(--ink60)}
.icard.taken .inote{display:none}
.icard.taken{background:var(--sunk)}
.icard.taken:hover{transform:none;box-shadow:var(--sh1)}
.icard.mine{border-color:color-mix(in srgb,var(--ok) 45%,transparent)}
.ph{width:88px;height:88px;flex:none;border-radius:14px;background:var(--sunk);overflow:hidden;
  display:grid;place-items:center}
@media(min-width:640px){.ph{width:100%;height:auto;aspect-ratio:4/5;border-radius:var(--r-md)}}
.ph img{width:100%;height:100%;object-fit:contain;padding:8%}
.ph-none{font-family:var(--disp);font-size:28px;color:var(--ink30)}
.ib{display:flex;flex-direction:column;min-width:0;flex:1}
@media(min-width:640px){.ib{margin-top:12px}}
.in{font-size:14.5px;font-weight:600;line-height:1.3;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.in a{text-decoration:none}
.in a:hover{text-decoration:underline}
.im{font-size:12px;color:var(--ink30);margin-top:3px}
.inote{font-size:12.5px;color:var(--ink60);background:var(--sunk);border-radius:10px;padding:7px 9px;margin-top:8px;line-height:1.45}
.ifoot{display:flex;align-items:center;gap:10px;margin-top:auto;padding-top:12px}
.pr{font-size:16px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.ifoot form{margin-left:auto}
.lock{margin-left:auto;display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--ok)}
.mine-tag{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--ok);margin-top:8px}

.statusbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;align-items:center;gap:12px;
  padding:12px 20px calc(12px + env(safe-area-inset-bottom));background:var(--surface);
  border-top:1px solid var(--line);font-size:13px}
.statusbar .bar{flex:1;height:6px;border-radius:999px;background:var(--sunk);overflow:hidden;min-width:60px}
.statusbar .bar i{display:block;height:100%;background:var(--ok);border-radius:999px}
.statusbar .muted{display:none}
@media(min-width:700px){.statusbar .muted{display:inline}}

.ohead{padding:26px 0 8px}
.share{margin-top:16px}
.copyrow{display:flex;gap:8px;margin-top:10px}
.copyrow input{flex:1;min-width:0;min-height:44px;padding:11px 14px;border:1px solid var(--line);
  border-radius:var(--r-md);background:var(--sunk);color:var(--ink60);font-size:13.5px}
.add{margin-top:16px}
.bmk{margin-top:16px}
.bmk p{margin-top:10px}
.list{padding:26px 0 60px}
.lhead{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.orow{display:flex;gap:12px;align-items:center;padding:11px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-md);margin-bottom:9px}
.oth{width:54px;height:54px;flex:none;border-radius:12px;background:var(--sunk);overflow:hidden;display:grid;place-items:center}
.oth img{width:100%;height:100%;object-fit:contain;padding:7%}
.ob{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.ob b{font-size:14px;line-height:1.3}
.ob .muted{font-size:12px}
.takenlab{font-size:12px;font-weight:600;color:var(--ok)}
.opr{font-size:14.5px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}

.ft{padding:34px 0 60px;color:var(--ink30);font-size:13px;border-top:1px solid var(--line);margin-top:34px}
.guest .ft{margin-bottom:60px}

@media (prefers-reduced-motion:reduce){*{transition-duration:.001ms!important;animation:none!important}
  .icard:hover,.lcard:hover{transform:none}}

/* ═══════════ Десктоп: логика маркетплейса ═══════════
   Широкий контейнер, липкая боковая панель с действиями,
   сетка карточек вместо строк. Плотность как у Ozon,
   но без его визуального шума. */

.wide{max-width:1560px;margin:0 auto;padding:0 20px}
@media(min-width:900px){.wide{padding:0 28px}}
@media(min-width:1440px){.wide{padding:0 40px}}

/* верхняя панель списка */
.obar{border-bottom:1px solid var(--line);background:var(--surface);padding:20px 0}
.obar-in{display:flex;flex-direction:column;gap:14px}
@media(min-width:900px){.obar-in{flex-direction:row;align-items:center;justify-content:space-between;gap:28px}}
.obar-t .muted{font-size:13.5px;margin-top:4px}
.obar-share{margin:0;max-width:520px;flex:1}
@media(min-width:900px){.obar-share{max-width:560px}}

/* две колонки */
.cols{display:grid;gap:20px;padding:20px 0 60px;align-items:start}
@media(min-width:1000px){.cols{grid-template-columns:340px minmax(0,1fr);gap:24px}}
@media(min-width:1440px){.cols{grid-template-columns:380px minmax(0,1fr);gap:32px}}
.side{display:flex;flex-direction:column;gap:14px;min-width:0}
@media(min-width:1000px){.side{position:sticky;top:74px;max-height:calc(100vh - 90px);overflow-y:auto;
  scrollbar-width:thin;padding-right:2px}}
.main{min-width:0}
.side .card{padding:20px}
.dcard{padding:0}
.dcard>summary{cursor:pointer;padding:18px 20px;list-style:none;display:flex;align-items:center;
  justify-content:space-between;min-height:44px}
.dcard>summary::after{content:"+";font-size:20px;color:var(--ink30);font-weight:400;line-height:1}
.dcard[open]>summary::after{content:"−"}
.dcard>summary::-webkit-details-marker{display:none}
.dcard>*:not(summary){padding:0 20px 20px}
.dcard form{padding:0 20px 20px}

/* сетка карточек */
.pgrid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}
@media(min-width:1440px){.pgrid{gap:16px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}
.pc{position:relative;display:flex;flex-direction:column;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;box-shadow:var(--sh1);
  transition:box-shadow .18s var(--ease),transform .18s var(--ease)}
.pc:hover{box-shadow:var(--sh2);transform:translateY(-2px)}
.pc-ph{position:relative;aspect-ratio:1;background:var(--sunk);display:grid;place-items:center;overflow:hidden}
.pc-ph img{width:100%;height:100%;object-fit:contain;padding:9%}
.pc-del{position:absolute;top:4px;right:4px;opacity:0;transition:opacity .16s var(--ease)}
.pc:hover .pc-del,.pc:focus-within .pc-del{opacity:1}
.pc-del .icon-btn{background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(6px)}
.pc-flag{position:absolute;top:8px;left:8px;font-size:10.5px;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;background:var(--brand);color:#fff;padding:4px 8px;border-radius:999px}
.pc-b{padding:12px;display:flex;flex-direction:column;gap:3px;flex:1}
.pc-pr{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.pc-t{font-size:13px;font-weight:500;line-height:1.32;color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pc-t a{text-decoration:none}
.pc-t a:hover{color:var(--brand)}
.pc-m{font-size:11.5px;color:var(--ink30)}
.pc-n{font-size:11.5px;color:var(--ink60);background:var(--sunk);border-radius:8px;padding:6px 8px;margin-top:4px;line-height:1.4}
.pc-taken{font-size:11.5px;font-weight:600;color:var(--ok);margin-top:auto;padding-top:6px}
.pc-free{font-size:11.5px;color:var(--ink30);margin-top:auto;padding-top:6px}
.empty-box{border:1px dashed var(--line);border-radius:var(--r-lg);padding:40px 20px;background:var(--surface)}
.lhead{display:flex;align-items:baseline;gap:10px;margin-bottom:14px}

/* пресеты даты */
.datepresets{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.datepresets .chip{cursor:pointer;font-size:12px;padding:6px 11px;min-height:36px;display:inline-flex;align-items:center}
.datepresets .chip:hover{border-color:var(--brand);color:var(--brand)}
#evHint{display:block;margin-top:6px;min-height:18px;color:var(--brand)}

/* гостевая сетка плотнее на больших экранах */
@media(min-width:1280px){.guest .grid{grid-template-columns:repeat(4,1fr)}}
@media(min-width:1600px){.guest .grid{grid-template-columns:repeat(5,1fr)}}

/* Плотность на десктопе: обложка ниже, медиа-область карточки квадратная.
   4:5 хороша для мобильной ленты, но на широком экране вытягивает карточки
   и на первый экран влезает вдвое меньше товара. */
@media(min-width:1000px){
  .cover{height:120px;margin-bottom:14px}
  .guest .ph{aspect-ratio:1}
  .guest .grid{gap:12px;padding-top:16px}
  .icard{padding:10px;border-radius:var(--r-md)}
  .icard .ib{margin-top:9px}
  .in{font-size:13.5px}
  .ifoot{padding-top:9px}
  .pr{font-size:16px}
  .ghead{padding-bottom:2px}
}
@media(min-width:1440px){.guest .grid{grid-template-columns:repeat(5,1fr)}}
@media(min-width:1760px){.guest .grid{grid-template-columns:repeat(6,1fr)}}

/* вложенные раскрывашки внутри карточки настроек */
.sub{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}
.sub>summary{cursor:pointer;font-size:13.5px;font-weight:600;color:var(--brand);
  min-height:38px;display:flex;align-items:center}
.steps{margin:8px 0 0;padding-left:20px;font-size:13px;color:var(--ink60);line-height:1.75}
.steps code{background:var(--sunk);padding:1px 6px;border-radius:5px;font-size:12px;
  font-family:ui-monospace,Menlo,monospace}

/* согласие на обработку данных */
.consent{align-items:flex-start;font-size:13.5px;line-height:1.5;margin-top:18px}
.consent a{color:var(--brand)}
.consent em{font-size:12.5px}
/* ═══════════ Складчина ═══════════
   Прогресс — главный элемент экрана, поэтому он крупный и стоит выше формы.
   Строка про нулевую комиссию видна без прокрутки: это обещание продукта,
   а не мелкий шрифт. */

/* компактная плашка на карточке товара у гостя */
.poolmini{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;padding:7px 9px;
  border-radius:10px;background:var(--tint);color:var(--brand);font-size:12px;font-weight:600;
  text-decoration:none;line-height:1.3}
.poolmini:hover{background:color-mix(in srgb,var(--brand) 16%,transparent)}
.poolmini-bar{flex:1 0 100%;height:4px;border-radius:999px;background:color-mix(in srgb,var(--brand) 18%,transparent);overflow:hidden}
.poolmini-bar b{display:block;height:100%;background:var(--brand);border-radius:999px}

/* строка складчины на карточке владельца */
.pc-pool{display:inline-flex;align-items:center;gap:5px;margin-top:auto;padding-top:6px;
  font-size:11.5px;font-weight:600;color:var(--brand);text-decoration:none}
.pc-pool:hover{text-decoration:underline}
.pc-poolf{margin-top:auto;padding-top:8px}
.pc-poolf .btn{width:100%;min-height:34px;font-size:12px;padding:7px 10px}

/* шапка экрана сбора */
.phead{padding-bottom:6px}
.prog{margin-top:22px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-md);padding:18px 20px;box-shadow:var(--sh1)}
.prog-top{display:flex;align-items:baseline;gap:8px}
.prog-top b{font-family:var(--disp);font-size:clamp(26px,4vw,38px);font-weight:500;
  letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.prog-top .muted{font-size:14px}
.prog-bar{height:10px;border-radius:999px;background:var(--sunk);overflow:hidden;margin-top:12px}
.prog-bar i{display:block;height:100%;border-radius:999px;
  background:linear-gradient(90deg,var(--brand),var(--warm));transition:width .5s var(--ease)}
.prog-bot{display:flex;gap:14px;flex-wrap:wrap;margin-top:9px;font-size:12.5px;font-weight:600}

.feeline{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;margin-top:14px;
  padding:12px 14px;border-radius:var(--r-md);background:var(--ok-t);color:var(--ok);font-size:13.5px}
.feeline b{font-size:14px}
.feeline span{color:var(--ink60);font-weight:400}

.modebox{background:var(--warm-t);border:1px solid color-mix(in srgb,var(--warm) 30%,transparent);
  border-radius:var(--r-md);padding:16px 18px;font-size:13.5px}
.modebox b{color:var(--warm)}
.modebox p{color:var(--ink60);margin-top:6px;line-height:1.5}

.sums{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.sums .chip{cursor:pointer;min-height:38px;display:inline-flex;align-items:center}
.sums .chip:hover{border-color:var(--brand);color:var(--brand)}
.sums .chip.on{background:var(--brand);color:#fff;border-color:var(--brand)}

.clist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.cline{display:grid;grid-template-columns:1fr auto;gap:2px 12px;align-items:baseline;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  padding:12px 14px;box-shadow:var(--sh1)}
.cline.mine{border-color:color-mix(in srgb,var(--ok) 45%,transparent)}
.cline-n{font-size:14px;font-weight:600}
.cline-s{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.cline-m{grid-column:1/-1;font-size:12.5px;color:var(--ink60)}
.cline-x{grid-column:1/-1;margin-top:6px}

/* показанный из кэша снимок при отсутствии связи */
body[data-stale] .hd::after{content:"нет связи, показан сохранённый вид";margin-left:auto;
  font-size:11.5px;color:var(--warm);font-weight:600}

/* ── карточка товара ── */
.ipage{padding:22px 0 60px}
.back{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;color:var(--ink30);
  text-decoration:none;min-height:44px}
.back:hover{color:var(--brand)}
.isplit{display:grid;gap:22px;margin-top:8px}
@media(min-width:800px){.isplit{grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:36px;align-items:start}}
.iph{aspect-ratio:1;background:var(--sunk);border-radius:var(--r-lg);display:grid;place-items:center;overflow:hidden}
.iph img{width:100%;height:100%;object-fit:contain;padding:8%}
.iinfo{min-width:0}
.pr.big{font-size:30px;font-weight:700;margin-top:14px;letter-spacing:-.02em}
.iacts{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}
.iacts .btn.big{width:auto;min-width:190px}
.lock.big{display:inline-flex;align-items:center;gap:9px;font-size:15px;font-weight:600;
  color:var(--ok);background:var(--ok-t);border-radius:var(--r-md);padding:13px 18px;margin:0}
.poem{margin-top:32px}
.poem .tones{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.poem .tones form{margin:0}
.poem .chip{cursor:pointer;min-height:44px;display:inline-flex;align-items:center}
.poem-text{font-family:var(--disp);font-size:clamp(17px,2.2vw,21px);line-height:1.6;
  background:var(--sunk);border-radius:var(--r-md);padding:22px 24px;margin-top:18px;
  border-left:3px solid var(--brand)}
.poem-acts{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px;align-items:center}
.poem-acts form{margin:0}

/* ── аккаунт ── */
.hd-acc{margin-left:auto;display:flex;align-items:center;gap:10px}
.hd-acc form{margin:0}
.hd .who{font-size:13px;color:var(--ink30);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;max-width:14ch}
@media(max-width:520px){.hd .who{display:none}}
.hello{padding:26px 0 4px}
.soon{display:flex;align-items:center;gap:14px;margin-top:14px;padding:14px 18px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  text-decoration:none;box-shadow:var(--sh1);transition:transform .18s var(--ease)}
.soon:hover{transform:translateY(-2px);box-shadow:var(--sh2)}
.soon-e{font-size:28px;line-height:1}
.soon b{display:block;font-size:15px}
.soon .muted{font-size:13px}
.soon-n{margin-left:auto;font-family:var(--disp);font-size:34px;line-height:1;color:var(--brand)}

/* ── гостя ведём за руку ── */
.gsub{max-width:52ch;margin-top:10px;font-size:15px}
.howto{display:flex;gap:10px;margin:20px 0 0;padding:0;list-style:none;flex-wrap:wrap}
.howto li{flex:1 1 190px;min-width:170px;padding:14px 16px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-md);counter-increment:howto;position:relative}
.howto li::before{content:counter(howto);position:absolute;top:11px;right:14px;
  font-family:var(--disp);font-size:24px;line-height:1;color:var(--brand);opacity:.42}
.howto b{display:block;font-size:15px;margin-bottom:2px}
.howto span{font-size:13px;color:var(--ink30);display:block;padding-right:22px}
.howto{counter-reset:howto}

.youhave{margin-top:18px;padding:12px 16px;border-radius:var(--r-md);
  background:color-mix(in srgb,var(--ok) 10%,transparent);
  border:1px solid color-mix(in srgb,var(--ok) 30%,transparent);font-size:14px}
.youhave a{font-weight:600}

.budget{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:18px}
.budget-l{font-size:13px;color:var(--ink30)}
/* Это не подписи, а кнопки: палец должен попадать без прицеливания.
   44 — минимум, ниже которого мимо промахивается каждый десятый. */
.budget .chip{text-decoration:none;min-height:44px;padding:0 16px;
  display:inline-flex;align-items:center}

.big-ok .next-t{margin:14px 0 6px;font-weight:600;font-size:14px}
.big-ok .next{margin:0;padding-left:20px;font-size:14px;color:var(--ink30)}
.big-ok .next li{margin:4px 0}
.big-ok .next-do{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0 0}

.selfmade{text-align:center;padding:56px 0 20px;border-top:1px solid var(--line);margin-top:44px}
.selfmade .lede{margin:10px auto 20px;max-width:46ch}
.selfmade .hint{margin-top:12px}

/* ── мои подарки ── */
.gifts{display:grid;gap:14px;margin-top:22px}
.gift{display:flex;gap:14px;padding:14px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh1)}
.gift.urgent{border-color:color-mix(in srgb,var(--warm) 55%,var(--line))}
.gift-ph{flex:0 0 84px;height:84px;border-radius:var(--r-md);overflow:hidden;
  background:var(--paper2,var(--paper));display:grid;place-items:center}
.gift-ph img{width:100%;height:100%;object-fit:cover}
.gift-ph .ph-none{font-size:30px}
.gift-b{flex:1;min-width:0}
.gift-for{font-size:12px;color:var(--ink30);margin:0}
.gift-t{font-size:16px;margin:3px 0 2px;line-height:1.25}
.gift-m{font-size:13px;color:var(--ink30);margin:0}
.gift-note{font-size:13px;margin:6px 0 0;color:var(--ink30);font-style:italic}
.gift-do{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.gift-do form{margin:0}
.gift-left{margin:8px 0 0;font-size:12px;color:var(--ink30)}
.gift-left.hot{color:var(--warm);font-weight:600}
@media(max-width:520px){
  .gift{flex-direction:column}
  .gift-ph{flex:0 0 auto;width:100%;height:150px}
}

/* На телефоне главное — подарки, а не объяснения. В полном виде три шага
   отъедали 246 px и уводили первую карточку ровно за нижний край экрана:
   гость листал целый экран, не увидев ни одного подарка. Сжимаем в строки. */
@media(max-width:560px){
  .cover{height:130px;margin-bottom:14px}
  .howto{flex-direction:column;gap:6px;margin-top:16px}
  /* Одной строкой, а не тремя колонками: заголовок и пояснение — части
     одной фразы, разносить их по флекс-ячейкам значит ломать её пополам. */
  .howto li{flex:none;min-width:0;display:block;padding:9px 13px;border-radius:var(--r-md)}
  .howto li::before{position:static;display:inline;margin-right:7px;font-size:15px;opacity:.55}
  .howto b{display:inline;font-size:14px}
  .howto span{display:inline;padding-right:0;font-size:13px;margin-left:.35em}
  .gsub{font-size:14.5px}
  .budget{margin-top:14px;gap:6px}
}

/* ── вопрос «что тебе подарить» ── */
.asktext{font-size:15px;line-height:1.5;padding:14px 16px;border-radius:var(--r-md);
  background:var(--paper2,var(--paper));border:1px solid var(--line);margin:0 0 14px;
  word-break:break-word}
.asks{display:grid;gap:10px;margin-top:22px}
.askrow{display:flex;align-items:center;gap:12px;padding:13px 16px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-lg)}
.askrow.done{border-color:color-mix(in srgb,var(--ok) 40%,var(--line))}
.askrow-e{font-size:24px;line-height:1}
.askrow-b{flex:1;min-width:0}
.askrow-b b{display:block;font-size:15px}
.askrow-b .muted{font-size:13px}

/* ── три ступени раскрытия ── */
.reveal{border:0;padding:0;margin:6px 0 0}
.reveal legend{font-size:13px;color:var(--ink30);padding:0;margin-bottom:8px}
.reveal .check{margin-bottom:8px}
.revealbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 14px;
  padding:12px 16px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-md);font-size:13.5px}
.revealbar .bar{flex:1;min-width:120px;height:6px;border-radius:999px;
  background:var(--line);overflow:hidden}
.revealbar .bar i{display:block;height:100%;background:var(--ok);border-radius:999px}
.revealbar .muted{font-size:12.5px;flex-basis:100%}
.orask{margin:14px 0 0;font-size:14.5px;color:var(--ink30)}
.orask a{font-weight:600;color:var(--brand)}

/* ── взгляд со стороны гостя ── */
.etq{margin:0 0 16px;padding:14px 16px;border-radius:var(--r-md);
  background:var(--surface);border:1px solid var(--line)}
.etq.warn{border-color:color-mix(in srgb,var(--warm) 45%,var(--line));
  background:color-mix(in srgb,var(--warm) 6%,var(--surface))}
.etq summary{cursor:pointer;display:flex;flex-wrap:wrap;align-items:baseline;
  gap:10px;min-height:28px;list-style:none}
.etq summary::-webkit-details-marker{display:none}
.etq summary::after{content:"▾";margin-left:auto;color:var(--ink30);font-size:13px}
.etq[open] summary::after{content:"▴"}
.etq summary b{font-size:14.5px}
.etq summary .muted{font-size:12.5px}
.etq-i{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.etq-i b{display:block;font-size:14px;margin-bottom:3px}
.etq-i.warn b{color:var(--warm)}
.etq-i p{margin:0;font-size:13.5px;color:var(--ink30);line-height:1.5}
.etq .hint{margin-top:12px}
