/* ─── Доска задач в стиле дизайн-кита v14 (board.js: renderTools/Box/Plan/Done)
   Фильтр-бар «показать», секции Ящичек/Запланировано/Сделано, карточка
   [тик · титул+мета · аватар-передача] на карандашной подложке с hatch-
   штриховкой цветом владельца (sk-tabbar). Анимируемое — transform/opacity. ─── */

/* ── колонка доски: как .page в ките (980px по центру) — на десктопе и
   планшете задачи не расползаются, а выступают симметрично над тап-баром ── */
.board-head, .tasks-wrap{max-width:980px;}
/* фикс line-height: Caveat-дата в подзаголовке доски иначе задирает строку
   (normal берёт максимум по шрифтам) и чипы прыгают при переключении вкладок */
.board-head p{line-height:1.45;}
/* лист 03: заголовок доски 24 (было 33.6=2.1rem), подпись 13 — скоупим к #board
   (класс .board-head общий с Шкафом/Календарём — их не трогаем) */
#board .board-head h2{font-size:1.5rem;}
#board .board-head p{font-size:13px;}

/* Карандашик держится правого края ТЕКСТА колонки, а не вьюпорта:
   50vw−470px = половина поля вокруг 980px-колонки + её внутренний паддинг 20px
   (границы текста = 940px). На узких экранах побеждает прежний отступ 14px;
   пузырь в flex-колонке выровнен по тому же правому краю (flex-end). */
.mascot{right:max(14px, calc(50vw - 470px));}

/* «разобрать ящичек» при пустом ящичке: на месте, но приглушена */
.sort-open.none{opacity:.55;}
.sort-open.none:hover{opacity:.8;}

/* архив: всё пыльно-серое, наведение/тап «сдувает пыль» */
#list-arch .task{filter:grayscale(.85); opacity:.75;}
#list-arch .task:hover{filter:none; opacity:1;}

/* ── фильтр-бар ── */
.tools{
  position:relative; padding:2px 0 4px;
  display:flex; gap:8px; align-items:center; flex-wrap:wrap;   /* лист 03: зазор чипов 8 */
}
.tools .lbl2{color:var(--pencil); font-size:.92rem; margin-right:2px;}
.f-members{display:contents;}                 /* чипы членов в общий флекс-поток */
.fchip{
  /* лист 03: фильтр-чип 32 (был 40; на телефоне 36). Капсула-подложка снята —
     выбор рисует карандашная петля .ring (fchipMount, board.js) */
  display:inline-flex; align-items:center; gap:6px; padding:4px 12px;
  min-height:32px; font-size:.9rem; font-family:inherit; position:relative;
  color:var(--graphite-soft); background:none; border:none; cursor:pointer;
  transition:transform .08s ease;
}
.fchip > *{position:relative;}
.fchip:hover{color:var(--graphite);}
.fchip.on{color:var(--graphite);}
/* Обведённое от руки слово: рамка прочерчивается при включении, гаснет мгновенно.
   Геометрию (r = h/4, вылет 4) и путь считает fchipRing в board.js по реальным
   размерам чипа — здесь только штрих и прорисовка. Размеры на самом SVG
   (width/height), а не в CSS: у SVG своё соотношение сторон из viewBox, и для
   absolute-replaced элемента height:auto побеждает `bottom`. */
.fchip .ring{
  position:absolute; left:-4px; top:-4px;
  max-width:none;              /* глобальный svg{max-width:100%} обрезал вылет */
  pointer-events:none; opacity:0;
}
.fchip .ring path{
  fill:none; stroke:var(--graphite-soft); stroke-width:1.5;   /* SPEC §1: вторичный штрих */
  stroke-linecap:round; stroke-linejoin:round;
  stroke-dasharray:var(--len); stroke-dashoffset:var(--len);
}
.fchip.on .ring{opacity:1;}
/* 500 мс — верх шкалы таймингов альбома: рука ведёт линию, а не щёлкает */
.fchip.on .ring path{animation:fchip-draw 500ms ease-out forwards;}
@keyframes fchip-draw{to{stroke-dashoffset:0;}}
.fchip b{font-weight:400; font-size:.88rem; min-width:12px; text-align:center;}
.fchip.tag{color:var(--red);}
.fchip .ava{width:24px; height:24px; margin-left:-3px; font-size:.8rem;}
.fchip .ic{width:16px; height:16px; flex:none;}   /* сорт-стрелка: line-иконка вместо глифа ⇅ — чип равной высоты, текст обычный Neucha */
.fchip.drop-hint{transform:scale(1.12);}     /* дроп-цель под пальцем (dnd.js) */

/* Фильтр-бар «Задач» (#tools) — горизонтальная карусель: крутится влево/вправо,
   а не переносит чипы на вторую строку. Чипы держат размер (→ уходят в прокрутку),
   скроллбар прячем, вертикальный padding — чтобы карандашные подложки и дроп-
   подсветка scale(1.12) не обрезались overflow'ом. «Календарь» (#cal-views) не трогаем. */
#tools{
  flex-wrap:nowrap; overflow-x:auto; overflow-y:hidden;
  /* горизонтальный padding расширяет клип-регион, чтобы карандашный вылет крайних
     чипов (pad 5, sk-tabbar.js) не резался overflow'ом; margin компенсирует —
     бар визуально на месте (чипы под заголовком), а лента бликует под края (full-bleed). */
  padding:6px 8px; margin:0 -8px;
  scrollbar-width:none; -webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;             /* свайп по бару не тянет всю страницу */
}
#tools::-webkit-scrollbar{display:none;}
#tools .fchip{flex:0 0 auto;}

/* подсказка бледным карандашом (подсказка темы и т.п.) */
.thint{color:var(--pencil); font-size:.82rem; margin:2px 2px 0;}

/* ── разделители и шапки секций ── */
.dsep{
  /* лист 03: разделитель секций — 16 сверху (секция↔секция), 8 снизу до шапки */
  border:none; height:2px; margin:16px 2px 8px;
  background-image:repeating-linear-gradient(90deg, var(--pencil-faint) 0 8px, transparent 8px 15px);
}
/* по нижней линии: заголовок секции (Caveat) и приписка (Neucha) — на общей
   baseline, чтобы разнокегльный/разношрифтовый текст не «плавал» по высоте */
.shead{display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin:0 2px 8px;}
.shead h5{
  /* лист 03: h5 секции Caveat 17 (было 27.2=1.7rem) */
  font-family:'Caveat',cursive; font-weight:700; font-size:17px;
  margin:0; line-height:1; color:var(--graphite);
}
.shead .noteh{color:var(--pencil); font-size:12px;}
.shead .cnt{
  /* лист 03: счётчик — лампа-круг 24 (был радиус-суп 10/13/9/12).
     align-self:center — кружок-бейдж центрируем к строке, пока текст по baseline */
  margin-left:auto; align-self:center; height:24px; min-width:24px; padding:0 7px;
  display:inline-flex; align-items:center; justify-content:center;
  color:var(--pencil); font-size:12px; background:#fff;
  border:1.6px solid var(--pencil-faint); border-radius:50%;
}
.shead .gbtn{
  /* лист 03: ghost-кнопка секции 32 R8 (была капсула --r-pill); align-self:center —
     фикс-высота кнопки центрируется к строке, а не «висит» на baseline текста */
  position:relative; align-self:center; height:32px; padding:0 12px; font-size:12px; font-family:inherit;
  color:var(--pencil); background:none; border:1.5px dashed var(--pencil);
  border-radius:8px; cursor:pointer;
}
.shead .gbtn:hover{color:var(--graphite); border-color:var(--graphite);}

/* заголовок группы внутри «Запланировано»: СЕГОДНЯ · ЗАВТРА · … */
.ghead{
  /* лист 03: подзаголовок группы 11 caps, разрядка 2.5 */
  display:flex; align-items:baseline; gap:10px; margin:16px 2px 8px;
  font-size:11px; letter-spacing:2.5px; text-transform:uppercase; color:var(--pencil);
}
.ghead i{font-style:normal; margin-left:auto; letter-spacing:.3px; text-transform:none; font-size:12px;}
/* лист 03: обычный поток — вертикальный ритм задают margin ghead/list
   (8 внутри группы, 16 между группами), а не grid-gap 2px (склеивало «СЕГОДНЯ») */
.plan-groups{display:block;}
.plan-groups > .ghead:first-child{margin-top:0;}   /* первая группа вплотную к шапке секции (8 даёт .shead) */

/* ── Ящичек как ОДИН ящик ───────────────────────────────────────────────
   Обводка (карандашная подложка skTabbar) — на контейнере .boxframe, её
   монтирует renderBox (board.js). Задачи внутри рамки не имеют: их держит
   только заливка — светлая бумажка на приглушённом крафте ящика. Владелец
   читается аватаром и подмесом его цвета в заливку строки (--box-tint,
   ставит mountTaskRow). */
.boxframe{position:relative; margin-bottom:2px;}
.boxframe > *:not(.sk-tabbar-bg){position:relative;}  /* контент поверх подложки */
.boxwrap{
  padding:12px;
  /* relative ОБЯЗАТЕЛЕН и здесь, не только от .boxframe: это offsetParent строк,
     а swipe.js кладёт подложку рельсы (.sw-under) именно в offsetParent — иначе
     она уедет во внешний слой и клип ниже её не поймает */
  position:relative;
  /* clip, а не hidden: режем только уехавшую по горизонтали строку со свайп-
     рельсой, а меню передачи (.amenu) обязано выпадать вниз за край ящика */
  overflow-x:clip; overflow-y:visible;
}
.boxwrap .list{gap:6px;}       /* внутри ящика бумажки лежат плотно */
.boxwrap .empty{padding:6px 4px; min-height:0;}
/* Стиль бумажки висит на КЛАССЕ строки, а не на `.boxwrap .task`: dnd клонирует
   строку в document.body (.drag-ghost) — селектор по предку там не сматчится и
   ghost уехал бы прозрачным. Переменные объявлены здесь же, по той же причине. */
.task.in-box{
  --box-scrap:#FCFAF2;         /* заливка строки-задачи */
  --box-tint:transparent;      /* подмес owner-цвета (ставит mountTaskRow) */
  min-height:44px; padding:6px 10px; border-radius:10px;
  background:linear-gradient(var(--box-tint), var(--box-tint)), var(--box-scrap);
}
.task.in-box:has(.tmeta), .task.in-box:has(.tsub){min-height:56px;}

/* ── списки и карточка задачи ── */
/* minmax(0,1fr): трек жмётся до контейнера, не до max-content. Без этого длинная
   nowrap-задача (.tsub) раздувает auto-трек грида → карточка шире вьюпорта →
   карандашная SVG-обводка монтируется на эту ширину и распирает документ
   (WebKit/iOS раздувает auto-трек агрессивнее Blink — «уехавшая» вёрстка в TMA). */
.list{display:grid; grid-template-columns:minmax(0,1fr); gap:12px; align-content:start;} /* зазор карточек 12: видимый ~8 после тени (shadowDy 2.5), по просьбе — вдвое просторнее */
.list .empty, .plan-groups .empty{
  color:var(--pencil); font-style:italic; font-size:.95rem;
  padding:10px 4px 6px; min-height:34px;
}
.task{
  /* лист 03: строка 48 (одна строка) / 64 (с метой·описанием, ниже :has); аватар 40 держит 48 */
  display:flex; align-items:center; gap:12px; padding:4px 12px;
  min-height:48px; position:relative; cursor:pointer; min-width:0;  /* грид-item жмётся, не раздувает трек под nowrap-контент */
  touch-action:pan-y;   /* горизонталь — свайп-жест (js/swipe.js), не скролл */
}
.task:has(.tmeta), .task:has(.tsub){min-height:64px;}   /* лист 03: строка с метой/описанием — 64 */
.task.dn{opacity:.62;}
.task.dn .ttl{text-decoration:line-through; color:var(--pencil);}
.task.is-past .ttl{color:var(--pencil);}
.task.drag-src{opacity:.45;}
.task > *{position:relative;}                 /* контент поверх sk-tabbar-bg */

/* ── свайп по карточке (touch, js/swipe.js): вправо ✓ · влево «на завтра».
   Подложка живёт в offsetParent строки; двигается только transform (§1). ── */
.task.swiping{z-index:40; will-change:transform;}  /* слой на время жеста: тик/рамка со squiggle не пересчитываются каждый кадр */
.task.sw-spring{transition:transform .18s ease;}
.sw-under{
  position:absolute; z-index:1; pointer-events:none;
  display:flex; align-items:center; justify-content:space-between;
  padding:0 16px;
}
.sw-under .sw-act{
  width:36px; height:36px; display:grid; place-items:center;
  border-radius:50%; font-size:1.15rem; line-height:1; color:#fff;
  opacity:0; transform:scale(.8);
}
.sw-under .sw-act svg{width:20px; height:20px;}   /* лист 03: line-иконка (📅→календарь) вместо эмодзи */
.sw-under.go-r .sw-act.r{
  opacity:calc(.35 + .65 * var(--p, 0));
  transform:scale(calc(.82 + .3 * var(--p, 0)));
  background:var(--green);
}

/* ── рельса частичного свайпа влево (iOS/Telegram): 3 кнопки под строкой справа.
   Строка отъезжает на −railW, обнажая рельсу; при открытии .sw-under.open делает
   кнопки кликабельными. .commit (длинный свайп) заливает «на завтра» поверх. ── */
.sw-rail{
  position:absolute; top:0; right:0; height:100%;
  display:flex; align-items:center; gap:8px; padding:0 12px;
  pointer-events:none;   /* кликабельно только когда открыто */
}
.sw-under.open .sw-rail{pointer-events:auto;}
.sw-btn{
  width:58px; height:calc(100% - 12px); min-height:44px; flex:none;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  border:none; border-radius:16px; padding:0; color:#fff; cursor:pointer;
  font-size:.64rem; line-height:1.05; text-align:center;
  opacity:calc(.2 + .8 * var(--p, 0)); transform:scale(calc(.85 + .15 * var(--p, 0)));
}
.sw-btn svg{width:20px; height:20px;}
.sw-btn.pin{background:var(--green);}
.sw-btn.remind{background:var(--ink-blue);}
.sw-btn.cal{background:var(--amber);}
.sw-tomorrow{
  position:absolute; inset:0; display:flex; align-items:center;
  justify-content:flex-end; gap:8px; padding:0 22px;
  color:#fff; background:var(--amber); font-weight:600; opacity:0;
}
.sw-tomorrow svg{width:22px; height:22px;}
.sw-under.commit .sw-tomorrow{opacity:1;}
.sw-under.commit .sw-rail{opacity:0;}
.task.sw-open{z-index:40;}
.task.sw-open .ttl{pointer-events:none;}   /* тап по видимой части строки закрывает рельсу, не открывает задачу */

/* ── Метка строки: слот слева ────────────────────────────────────────────────
   Кнопка завершения осталась (класс .tick), но пустой квадрат-рамка убран: он
   повторялся в каждой строке и ничего не сообщал. Теперь слот несёт ОДИН знак
   по приоритету (собирает tickMarkEl, board.js): ★ веха · ★ контур принадлежности
   пути · дата колонкой · тихая точка владельца. Ширина 32 фиксирована — знаки
   выстраиваются в колонку, строки не пляшут. Мишень тапа добирается padding'ом
   до 40 по закону касаний (SPEC §1). */
.tick{
  width:32px; min-height:40px; flex:none; position:relative;
  display:grid; place-items:center;
  background:none; border:none; cursor:pointer; padding:0;
}
/* галка — прямой ребёнок (`>`): descendant-селектор спрятал бы и svg подложки */
.tick > svg{width:20px; height:20px; display:none; position:relative; margin-top:-2px;}
.task.dn .tick > svg{display:block;}
.task.dn .tmk{display:none;}          /* сделанная: на месте метки стоит галка */

.tmk{display:grid; place-items:center; line-height:1;}
/* Веха — залитая звезда, её задача — та же звезда контуром: форма говорит
   «веха / её путь», а ЦВЕТ (ставит tickMarkEl, board.js) — какая именно веха,
   когда их на доске несколько. Картинку кладёт inline-стиль, здесь только
   геометрия: залитая крупнее контурной — глава пути читается первой. */
.tmk.ms, .tmk.msk{background:center/contain no-repeat;}
.tmk.ms{width:20px; height:20px;}
.tmk.msk{width:16px; height:16px;}
/* дата — отрывной листок: число и месяц колонкой, рукописным пером (Caveat) */
.tmk.dt{gap:0; color:var(--graphite-soft); font-family:'Caveat',cursive;}
.tmk.dt b{font-size:17px; font-weight:700; line-height:1;}
.tmk.dt i{font-size:12px; font-style:normal; line-height:1; color:var(--pencil);}
/* всё прочее — тихая точка цветом владельца: мишень есть, шума нет */
.tmk.dot{width:7px; height:7px; border-radius:50%; opacity:.85;}
.task.is-past .tmk.dt{color:var(--pencil);}

.tmain{min-width:0; flex:1;}
.ttl{font-size:15px; line-height:1.2; overflow-wrap:anywhere; color:var(--graphite);} /* лист 03: титул 15 (было 16.3) */
/* лист 03: веха — карандашная line-звезда (была текстовая ★); bg-image, чтобы
   рисовалась и внутри transform-анимируемой карты колоды (inline-SVG там пропадает) */
.ms-star{display:inline-block; width:15px; height:15px; vertical-align:-2px; margin-right:4px;
  background:center/contain no-repeat
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 1.8l1.9 3.85 4.25.62-3.07 3 .72 4.23-3.8-2-3.8 2 .72-4.23-3.07-3 4.25-.62Z' fill='none' stroke='%23DD9A2B' stroke-width='1.6' stroke-linejoin='round'/%3E%3C/svg%3E");}
.tsub{
  font-size:.85rem; color:var(--pencil); margin-top:1px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
/* ── плашка-превью ссылки (unfurlStrip, js/unfurl.js): картинка страницы + сайт
   + заголовок; золотой левый кант — родство с карточкой .unfurl (taskmodal.css).
   Без squiggle и анимаций — гасить под light-fx нечего (§1). */
.uf-strip{
  display:flex; align-items:center; gap:6px; min-width:0; max-width:100%;
  margin-top:3px; padding:2px 8px 2px 7px;
  border-left:2.5px solid var(--amber); border-radius:3px;
  background:var(--paper2);
  font-size:.8rem; line-height:1.3; text-decoration:none; color:var(--pencil);
}
.uf-sico{width:14px; height:14px; border-radius:3px; flex:none;}
/* картинка страницы: квадрат слева, по нему и кликают. Размер задан в CSS (не
   ждём загрузки) — строка не прыгает, когда картинка доедет. */
.uf-sthumb{
  width:52px; height:52px; flex:none; border-radius:5px; object-fit:cover;
  background:var(--paper); border:1.5px solid var(--pencil-faint);
}
/* с картинкой плашка дорастает до карточки: текст в столбик справа от неё */
.uf-strip.uf-haspic{padding:5px 8px 5px 6px; gap:8px;}
/* flex:1 — обёртка забирает остаток строки; без неё % -ширины внутри
   shrink-to-fit флекса схлопывали хост в «inst…» */
.uf-stx{display:flex; flex-direction:column; min-width:0; gap:1px; flex:1 1 auto;}
.uf-strip:not(.uf-haspic) .uf-stx{flex-direction:row; align-items:center; gap:6px;}
.uf-ssite{
  font-weight:700; color:var(--graphite);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.uf-strip:not(.uf-haspic) .uf-ssite{flex:none; max-width:min(160px, 50%);}
.uf-sttl{overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0;}
.uf-strip.uf-haspic .uf-sttl{     /* с картинкой заголовок дышит на две строки */
  white-space:normal; display:-webkit-box; -webkit-line-clamp:2;
  -webkit-box-orient:vertical; line-height:1.25;
}
.uf-sttl:empty{display:none;}
.task.dn .uf-strip{opacity:.55;}   /* у сделанной строки плашка гаснет вместе с ней */
.tmeta{display:flex; gap:6px; flex-wrap:wrap; margin-top:4px; align-items:center;}
.mchip{
  /* лист 03: срок/тег-чип 20 R5 (был радиус-суп 8/11/7/10) */
  height:20px; display:inline-flex; align-items:center; font-size:11px;
  color:var(--pencil); background:var(--paper);
  border:1.5px solid var(--pencil-faint); border-radius:5px;
  padding:0 7px; white-space:nowrap;
}
/* теги-чипы (chipsEl) и тихие бейджи (metaBadges) — в тот же вид */
.task .chip{
  /* тег-чип в стиле mchip «до сб»: единая сплошная светлая рамка, БЕЗ карандашного
     squiggle-::before — все чипы выглядят одинаково, без разнобоя */
  height:20px; display:inline-flex; align-items:center; font-size:11px;
  color:var(--pencil); background:var(--paper);
  border:1.5px solid var(--pencil-faint); border-radius:5px;
  padding:0 7px; cursor:pointer; white-space:nowrap;
}
.task .chip::before{display:none;}   /* гасим squiggle-контур из components.css (иначе двойная обводка) */
.task .chip.imp, .mchip.tagm{color:var(--red); border-color:#E8C4BB;}
.task .cmt{
  display:inline-flex; align-items:center; gap:3px;
  font-size:11px; color:var(--pencil);
}
.task .cmt svg{width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2;} /* лист 03: иконка меты 2/16 */

.towner{
  /* лист 03: кнопка-аватар 40 (мишень ≥40; было 36), ава-круг 32 */
  margin-left:auto; flex:none; width:40px; height:40px;
  display:grid; place-items:center; background:none; border:none;
  cursor:pointer; padding:0; border-radius:50%;
}
.towner .ava{width:32px; height:32px; font-size:1rem;}
.towner:hover{transform:scale(1.08);}

/* меню передачи (тап по аватару) */
.amenu{
  position:absolute; right:8px; top:calc(100% - 6px); z-index:60;
  padding:10px; display:grid; gap:7px; min-width:190px;
}
.task:has(.amenu){z-index:50;}
.amenu button{
  display:flex; align-items:center; gap:9px; font-size:.95rem; font-family:inherit;
  padding:4px 6px; border-radius:9px; text-align:left; position:relative;
  background:none; border:none; cursor:pointer; color:var(--graphite);
}
.amenu button:hover{background:var(--marker);}
.amenu .ava{width:24px; height:24px; font-size:.8rem;}
.amenu .off2{color:var(--pencil);}

@media (max-width:639px){
  .tools{gap:6px;}
  .fchip{padding:4px 10px; min-height:32px; font-size:.88rem;}   /* лист 03: чип 32 и на телефоне */
  .list{gap:12px;}   /* зазор карточек 12 и на телефоне */
}

@media (prefers-reduced-motion: reduce){
  .fchip, .towner{transition:none;}
  /* петля выбора не прорисовывается, а просто есть */
  .fchip.on .ring path{animation:none; stroke-dashoffset:0;}
}

/* ── лист напоминаний (swipe-рельса 🔔, js/task-rail.js): пресеты + datetime-local
   + активные напоминания. Нижний sheet на телефоне, по центру на десктопе. ── */
.rmd-back{
  position:fixed; inset:0; z-index:300; display:flex; align-items:flex-end;
  justify-content:center; background:rgba(20,18,15,.38);
}
.rmd-sheet{
  width:100%; max-width:460px; margin:0 8px 8px; padding:16px 16px 12px;
  background:var(--card,#FFFDF6); border-radius:20px 20px 14px 14px;
  box-shadow:0 -6px 30px rgba(0,0,0,.22);
  display:flex; flex-direction:column; gap:12px;
}
.rmd-head{font-weight:700; color:var(--graphite); font-size:1.02rem;}
.rmd-list{display:flex; flex-direction:column; gap:6px;}
.rmd-item{display:flex; align-items:center; gap:10px; padding:8px 12px;
  border-radius:12px; background:rgba(139,133,120,.12); color:var(--graphite);}
.rmd-item span{flex:1;}
.rmd-x{border:0; background:none; color:var(--pencil); font-size:1rem; cursor:pointer; padding:2px 6px;}
.rmd-presets{display:flex; flex-wrap:wrap; gap:8px;}
.rmd-preset{flex:1 1 40%; padding:10px 12px; border:2px solid var(--ink-blue);
  border-radius:14px; background:none; color:var(--ink-blue); font:inherit; font-size:15px; cursor:pointer;}
.rmd-custom{display:flex; gap:8px;}
.rmd-custom input{flex:1; min-width:0; padding:9px 10px; font:inherit; font-size:16px;  /* 16px: без авто-зума полей в Mini App (память ios-input-zoom) */
  border:2px solid var(--pencil); border-radius:12px; background:var(--card,#FFFDF6); color:var(--graphite);}
.rmd-go{padding:9px 14px; border:0; border-radius:12px; background:var(--ink-blue);
  color:#fff; font:inherit; font-size:15px; cursor:pointer;}
.rmd-close{margin-top:2px; padding:9px; border:0; border-radius:12px; background:none;
  color:var(--pencil); font:inherit; cursor:pointer;}
@media (min-width:560px){ .rmd-back{align-items:center;} }
