/* Слой «как в iOS» поверх платформы VM GEO (план P12, решение владельца 29.09.2026).
   Только токены --vm-* из platform.css; platform.css не правится. Порядок подключения:
   platform.css → agents.css → ios.css. Анимации выключаются при prefers-reduced-motion. */

/* --- Заголовки: обычный жирный шрифт, как в iOS (без капса) --------------------------- */
.page h1, .cand h1, .cand .page-head h1{font-family:var(--font); text-transform:none; letter-spacing:-.01em;
  font-weight:700; font-size:28px; line-height:34px; color:rgb(var(--vm-text-strong))}
@media(min-width:640px){ .page h1{font-size:34px; line-height:41px} }
.page-head{border-bottom:0; padding-bottom:4px}
.panel h2, .card h2{letter-spacing:-.01em}

/* --- Стеклянная шапка ------------------------------------------------------------------ */
.topbar{background:rgb(var(--vm-bg) / .72); -webkit-backdrop-filter:saturate(180%) blur(20px);
  backdrop-filter:saturate(180%) blur(20px); border-bottom:1px solid var(--vm-line)}

/* --- Карточки мягче ------------------------------------------------------------------- */
.panel, .card{box-shadow:0 1px 2px rgb(0 0 0 / .04)}

/* --- Боковое меню как в iPadOS --------------------------------------------------------- */
@media(min-width:1024px){
  .shell > .side{background:rgb(var(--vm-panel) / .6); -webkit-backdrop-filter:blur(20px); backdrop-filter:blur(20px)}
}

/* --- Нижняя панель вкладок: только телефон и планшет без бокового меню ----------------- */
.ios-tabbar{display:none}
@media(max-width:1023px){
  .ios-tabbar{position:fixed; left:0; right:0; bottom:0; z-index:35; display:grid; grid-auto-flow:column; grid-auto-columns:1fr;
    padding:4px 4px calc(4px + env(safe-area-inset-bottom)); background:rgb(var(--vm-panel) / .82);
    -webkit-backdrop-filter:saturate(180%) blur(20px); backdrop-filter:saturate(180%) blur(20px); border-top:1px solid var(--vm-line)}
  .ios-tab{position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px;
    min-height:50px; padding:0; border:0; background:none; font:inherit; font-size:10px; line-height:12px; font-weight:500;
    color:rgb(var(--vm-faint)); text-decoration:none; cursor:pointer}
  .ios-tab .i{width:24px; height:24px}
  .ios-tab.on{color:rgb(var(--vm-accent))}
  .ios-tab .ios-count{position:absolute; top:2px; left:calc(50% + 6px)}
  /* Меню «гамбургер» и плавающая кнопка сообщений заменяются вкладками. */
  .shell .menu-btn, .mw{display:none}
  .shell .topbar{padding-left:20px}
  .shell .main{padding-bottom:calc(60px + env(safe-area-inset-bottom))}
}
.ios-count{display:inline-flex; min-width:18px; height:18px; padding:0 5px; align-items:center; justify-content:center;
  border-radius:999px; background:rgb(var(--vm-accent)); color:rgb(var(--vm-invert-text)); font-size:11px; font-weight:600; line-height:18px}
.ios-count[hidden]{display:none}

/* --- Списки-группы, как «Настройки» iPhone -------------------------------------------- */
.ios-section-h{margin:0 16px 8px; font-size:12px; line-height:16px; text-transform:uppercase; letter-spacing:.05em; color:rgb(var(--vm-muted))}
.ios-list{display:flex; flex-direction:column; gap:0; margin-inline:0; margin-bottom:0; padding:0; border:1px solid var(--vm-line); border-radius:var(--r-card);
  background:rgb(var(--vm-panel)); overflow:hidden; list-style:none}
.ios-list > legend{float:left; width:100%; padding:12px 16px 8px; font-size:12px; line-height:16px; font-weight:500;
  text-transform:uppercase; letter-spacing:.05em; color:rgb(var(--vm-muted)); background:rgb(var(--vm-panel-soft))}
.ios-list > legend + *{clear:both}
.ios-row{position:relative; display:flex; align-items:center; gap:12px; min-height:52px; margin:0; padding:10px 16px;
  color:rgb(var(--vm-text)); text-decoration:none; font-size:16px; line-height:22px; font-weight:400; cursor:pointer;
  background:transparent; transition:background-color .15s}
.ios-row + .ios-row::before, .ios-list > legend + .ios-row::before{content:""; position:absolute; top:0; left:16px; right:0; border-top:1px solid var(--vm-line)}
.ios-list > legend + .ios-row::before{left:0}
.ios-row:hover{background:rgb(var(--vm-panel-soft) / .6)}
.ios-row-t{flex:1; min-width:0; display:flex; flex-direction:column}
.ios-row-t > b{font-weight:500; color:rgb(var(--vm-text-strong))}
.ios-row-t > small{font-size:13px; line-height:18px; color:rgb(var(--vm-muted))}
.ios-chev{flex:none; display:inline-flex; color:rgb(var(--vm-faint))}
.ios-ic{display:inline-flex; flex:none; width:32px; height:32px; align-items:center; justify-content:center; border-radius:9px;
  background:var(--vm-accent-bg); color:rgb(var(--vm-accent))}
/* Условие выполнено / решает человек (карточка ставки, P16). */
.ios-ic.is-good{background:var(--vm-good-bg); color:rgb(var(--vm-good))}
.ios-ic.is-quiet{background:rgb(var(--vm-panel-soft)); color:rgb(var(--vm-muted))}
/* Выбор варианта: радиокнопка и галочка скрыты, справа — галочка iOS. Поле остаётся
   доступным с клавиатуры и для экранного чтеца. */
.ios-row.pick > input{position:absolute; opacity:0; width:1px; height:1px; margin:0; pointer-events:none}
.ios-mark{flex:none; display:inline-flex; visibility:hidden; color:rgb(var(--vm-accent))}
.ios-row.pick:has(input:checked) .ios-mark{visibility:visible}
.ios-row.pick:has(input:checked){background:var(--vm-accent-bg)}
.ios-row.pick:has(input:checked) .ios-row-t, .ios-row.pick:has(input:checked) .ios-row-t > b{color:rgb(var(--vm-text-strong))}
.ios-row.pick:has(input:focus-visible){outline:2px solid rgb(var(--vm-accent)); outline-offset:-2px}
.ios-row.pick:has(input:disabled){cursor:default}

/* --- Переключатель --------------------------------------------------------------------- */
input.ios-switch{flex:none; appearance:none; -webkit-appearance:none; position:relative; width:51px; min-width:51px; height:31px; margin:0;
  border:0; border-radius:999px; background:rgb(var(--vm-faint-soft) / .5); transition:background-color .2s; cursor:pointer}
input.ios-switch::after{content:""; position:absolute; top:2px; left:2px; width:27px; height:27px; border-radius:999px;
  background:#fff; box-shadow:0 2px 4px rgb(0 0 0 / .2); transition:transform .2s}
input.ios-switch:checked{background:rgb(var(--vm-good))}
input.ios-switch:checked::after{transform:translateX(20px)}
input.ios-switch:disabled{opacity:.55; cursor:default}
input.ios-switch:focus-visible{outline:2px solid rgb(var(--vm-accent)); outline-offset:2px}

/* --- Окно снизу: подтверждения и короткие действия на телефоне ----------------------- */
@media(max-width:767px){
  dialog.card, dialog.ios-sheet{position:fixed; inset:auto 0 0 0; width:100%; max-width:none; margin:0;
    padding:28px 16px calc(16px + env(safe-area-inset-bottom)); border:0; border-radius:22px 22px 0 0;
    background:rgb(var(--vm-bg)); animation:iosup .3s cubic-bezier(.2,.8,.2,1) both}
  dialog.card::before, dialog.ios-sheet::before{content:""; position:absolute; top:8px; left:50%; width:36px; height:5px;
    margin-left:-18px; border-radius:999px; background:rgb(var(--vm-faint) / .45)}
  dialog.card .actions, dialog.ios-sheet .actions{flex-direction:column-reverse}
  dialog.card .actions > *, dialog.ios-sheet .actions > *{width:100%}
}
dialog::backdrop{background:rgb(0 0 0 / .35)}
@keyframes iosup{from{transform:translateY(100%)} to{transform:none}}

/* --- Кнопка действия закреплена внизу экрана на телефоне ------------------------------ */
@media(max-width:767px){
  .actions.ios-sticky{position:sticky; bottom:0; z-index:5; margin:0 -20px; padding:12px 20px calc(12px + env(safe-area-inset-bottom));
    background:rgb(var(--vm-panel) / .82); -webkit-backdrop-filter:saturate(180%) blur(20px); backdrop-filter:saturate(180%) blur(20px);
    border-top:1px solid var(--vm-line)}
}

/* --- Кабинет команды (I4): списки людей — списки-группы ------------------------------- */
.person-list{gap:0; border:1px solid var(--vm-line); border-radius:var(--r-card); background:rgb(var(--vm-panel)); overflow:hidden}
.person-row{position:relative; border:0; border-radius:0; background:transparent; padding:12px 16px}
.person-row + .person-row::before{content:""; position:absolute; top:0; left:68px; right:0; border-top:1px solid var(--vm-line)}
.person-row:hover{border-color:transparent; background:rgb(var(--vm-panel-soft) / .6)}
.person-row.is-ours{border-color:transparent}
.person-list .avatar{border-radius:999px}
.person-go{font-size:0; line-height:0}
.person-go::after{content:"\203A"; font-size:24px; line-height:24px; color:rgb(var(--vm-faint))}

/* --- Вкладки карточки — переключатель-сегменты ---------------------------------------- */
.ctabs{gap:2px; padding:2px; border-bottom:0; border-radius:var(--r-btn); background:rgb(var(--vm-panel-soft));
  width:max-content; max-width:100%}
.ctabs .tab{margin:0; padding:6px 14px; border:0; border-radius:9px; font-size:13px; line-height:20px; font-weight:500;
  color:rgb(var(--vm-text)); transition:background-color .15s, box-shadow .15s}
.ctabs .tab.on, .ctabs .tab[aria-selected="true"]{background:rgb(var(--vm-panel)); color:rgb(var(--vm-text-strong));
  box-shadow:0 1px 3px rgb(0 0 0 / .12)}

/* --- Поиск в стиле iOS ---------------------------------------------------------------- */
.queue-search input{border-color:transparent; background:rgb(var(--vm-panel-soft))}
.queue-search input:focus{border-color:var(--vm-accent-line); background:rgb(var(--vm-panel))}

/* --- Окно решения ---------------------------------------------------------------------- */
dialog.ios-sheet{max-width:480px}
dialog.ios-sheet > * + *{margin-top:12px}
.ios-danger .ios-row-t > b{color:rgb(var(--vm-bad))}
.ios-danger .ios-ic{background:var(--vm-bad-bg); color:rgb(var(--vm-bad))}

/* --- Встречи: месяц обычным жирным, фильтры — сегменты, встречи дня — одна группа ---- */
.cal-title{font-family:var(--font); text-transform:none; letter-spacing:-.01em; font-weight:700}
.ios-seg-links{display:inline-flex; flex-wrap:nowrap; max-width:100%; overflow-x:auto; scrollbar-width:none; gap:2px; padding:2px;
  border-radius:var(--r-btn); background:rgb(var(--vm-panel-soft))}
.ios-seg-links::-webkit-scrollbar{display:none}
.ios-seg-links .btn{flex:none; white-space:nowrap}
.ios-seg-links .btn{min-height:32px; border:0; border-radius:9px; background:transparent; box-shadow:none; color:rgb(var(--vm-text))}
.ios-seg-links .btn.btn-soft{background:rgb(var(--vm-panel)); color:rgb(var(--vm-text-strong)); box-shadow:0 1px 3px rgb(0 0 0 / .12)}
.agenda-day{gap:0}
.agenda-day > h3{margin-bottom:8px}
.agenda-day .meet{border-radius:0; border-top-width:0}
.agenda-day > h3 + .meet{border-top-width:1px; border-radius:var(--r-card) var(--r-card) 0 0}
.agenda-day .meet:last-child{border-radius:0 0 var(--r-card) var(--r-card)}
.agenda-day > h3 + .meet:last-child{border-radius:var(--r-card)}

/* --- Настройки: плитки разделов — один список-группа --------------------------------- */
.nav-tiles{display:flex; flex-direction:column; gap:0; border:1px solid var(--vm-line); border-radius:var(--r-card);
  background:rgb(var(--vm-panel)); overflow:hidden}
.nav-tiles .nav-tile{border:0; border-radius:0; box-shadow:none; background:transparent}
.nav-tiles .nav-tile + .nav-tile{border-top:1px solid var(--vm-line)}

/* --- Таблицы на телефоне — строки iOS: подпись слева, значение справа ---------------- */
@media(max-width:767px){
  .stack-on-phone td{min-height:40px; padding:8px 0; align-items:center}
  .stack-on-phone td + td{border-top:1px solid var(--vm-line-soft)}
  .stack-on-phone td[data-label]::before{font-size:13px; line-height:18px}
}

/* --- Выбор файла — кнопка в гамме платформы, а не системная серая -------------------- */
input[type="file"]::file-selector-button{margin-right:12px; padding:8px 14px; border:0; border-radius:var(--r-btn);
  background:var(--vm-accent-bg); color:rgb(var(--vm-accent)); font:inherit; font-size:14px; font-weight:500; cursor:pointer}

/* --- Интервью как мессенджер (P12 I8, решения владельца 30.09.2026) -------------------
   Шапка с блоком и прогрессом, лента всей переписки, поле ввода внизу. На телефоне экран
   занимает видимую область целиком (--iv-vh/--iv-top считает hiring.js по visualViewport),
   поэтому поле всегда над клавиатурой, а новый вопрос — прямо над полем. */
.chat-iv{display:flex; flex-direction:column; border:1px solid var(--vm-line); border-radius:var(--r-card);
  background:rgb(var(--vm-panel)); overflow:clip}
.iv-head{position:sticky; top:0; z-index:20; display:grid; grid-template-columns:auto minmax(0, 1fr) auto; align-items:center;
  gap:10px 12px; padding:12px 16px; background:rgb(var(--vm-panel) / .86); -webkit-backdrop-filter:saturate(180%) blur(20px);
  backdrop-filter:saturate(180%) blur(20px); border-bottom:1px solid var(--vm-line)}
.iv-head .v2-badge{width:36px; height:36px; border-radius:11px}
.iv-head-t{display:flex; flex-direction:column; min-width:0}
.cand .iv-head-t h1{margin:0; font-size:17px; line-height:22px; font-weight:600; letter-spacing:-.01em;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.iv-head-t span{font-size:13px; line-height:18px; color:rgb(var(--vm-muted))}
.iv-out{margin:0}
.iv-out .icon-btn{width:44px; height:44px; border:0; background:none; color:rgb(var(--vm-muted))}
.iv-path{grid-column:1 / -1; display:grid; grid-template-columns:repeat(10, minmax(0, 1fr)); gap:4px; margin:0; padding:0; list-style:none}
.iv-path .v2-dot{width:100%; height:4px; border:0; border-radius:2px; background:var(--vm-line)}
.iv-path .v2-dot.done{background:rgb(var(--vm-accent) / .45)}
.iv-path .v2-dot.now{background:rgb(var(--vm-accent)); box-shadow:none}
.iv-thread{display:flex; flex-direction:column; gap:12px; padding:16px}
.iv-thread > *, .iv-now > *{margin:0}
.iv-now{display:flex; flex-direction:column; gap:12px}
.iv-note{display:flex; align-items:center; justify-content:center; gap:6px; align-self:center; max-width:32em; text-align:center;
  font-size:12px; line-height:16px; color:rgb(var(--vm-faint))}
.iv-note .i-sm{flex:none; color:rgb(var(--vm-good))}
.iv-divider{display:flex; justify-content:center; padding-top:8px}
.iv-divider span{padding:4px 12px; border-radius:999px; background:rgb(var(--vm-panel-soft)); font-size:12px; line-height:16px;
  font-weight:600; color:rgb(var(--vm-muted))}
.iv-composer{position:sticky; bottom:0; z-index:20; display:flex; flex-direction:column; gap:8px; padding:12px 16px;
  background:rgb(var(--vm-panel) / .9); -webkit-backdrop-filter:saturate(180%) blur(20px); backdrop-filter:saturate(180%) blur(20px);
  border-top:1px solid var(--vm-line)}
.iv-composer > *{margin:0}
.iv-composer .form-feedback:empty{display:none}
.iv-input{display:flex; align-items:flex-end; gap:8px}
.iv-input textarea{flex:1; min-width:0; min-height:44px; max-height:40vh; resize:none; padding:10px 16px; border-radius:22px;
  line-height:22px; overflow-y:auto}
.iv-send{display:inline-flex; flex:none; align-items:center; justify-content:center; width:44px; height:44px; min-height:44px;
  padding:0; border-radius:999px}
.iv-input:has(textarea:placeholder-shown) .iv-send{opacity:.45}
.iv-opts{max-height:min(46vh, 360px); overflow-y:auto; overscroll-behavior:contain}
.iv-opts > legend{padding:10px 16px 8px; font-size:13px; line-height:18px; font-weight:500; text-transform:none; letter-spacing:0;
  color:rgb(var(--vm-muted)); background:none}
.iv-opts .ios-row{min-height:44px; padding-top:10px; padding-bottom:10px}
.iv-submit .i-sm{margin-left:4px}
/* Появление сообщений мягкое, как в iMessage (замечание владельца 30.09): проявление и лёгкий
   рост от аватара, без сдвига ленты; несколько сообщений подряд — по очереди. */
@keyframes ivpop{from{opacity:0; transform:scale(.94)} to{opacity:1; transform:none}}
@keyframes ivfade{from{opacity:0} to{opacity:1}}
.iv-now.v2-in, .iv-thread .v2-thinking.v2-in{animation:none}
.iv-now > *, .iv-thread .v2-thinking:not([hidden]), .iv-pop{animation:ivpop .42s cubic-bezier(.22,.61,.36,1) both; transform-origin:0 100%}
.iv-pop.me{transform-origin:100% 100%}
.iv-now > :nth-child(2){animation-delay:.14s}
.iv-now > :nth-child(3){animation-delay:.28s}
.iv-now > :nth-child(n+4){animation-delay:.42s}
.iv-thread .v2-saved{animation:ivfade .35s ease-out both}
@media(min-width:768px){ .iv-out{display:none} }
@media(max-width:767px){
  html:has(.chat-iv), html:has(.chat-iv) body{overflow:hidden; overscroll-behavior:none}
  .cand-col:has(.chat-iv){animation:none}
  .auth:has(.chat-iv) .cand-theme{display:none}
  .chat-iv{position:fixed; top:0; left:0; right:0; z-index:40; height:var(--iv-vh, 100dvh); transform:translateY(var(--iv-top, 0px));
    border:0; border-radius:0; background:rgb(var(--vm-bg))}
  .iv-head{position:static; padding:calc(8px + env(safe-area-inset-top)) 12px 10px 16px}
  .iv-thread{flex:1; min-height:0; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; padding:12px 12px 16px}
  .iv-thread .cmsg{max-width:88%}
  .iv-composer{position:static; padding:8px 12px calc(8px + env(safe-area-inset-bottom) + var(--iv-pill, 0px))}
}

/* --- Живой мессенджер (P13, решения владельца 30.09.2026) -----------------------------
   Строка статуса собеседника, подсказка о нерабочем времени, «печатает…», часики у
   отложенного сообщения; новые сообщения появляются мягко, как в интервью (I8). */
.cstatus{display:inline-flex; align-items:center; gap:6px; font-size:12px; line-height:16px; color:rgb(var(--vm-muted))}
.cstatus[hidden]{display:none}
.cstatus.on{color:rgb(var(--vm-good))}
.cstatus.on::before{content:""; flex:none; width:8px; height:8px; border-radius:999px; background:rgb(var(--vm-good))}
p.cstatus{margin:0 0 8px}
.chat-head .cstatus, .mw-title .cstatus{overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.composer-hint{display:flex; align-items:center; gap:8px; margin:0; padding:8px 16px 0; font-size:13px; line-height:18px;
  color:rgb(var(--vm-muted))}
.composer-hint[hidden]{display:none}
.composer-hint .i-sm{flex:none; color:rgb(var(--vm-accent))}
.ctyping[hidden]{display:none}
.ctyping .ctext{display:flex; align-items:center; gap:2px; color:rgb(var(--vm-muted))}
.ctyping:not([hidden]){animation:ivpop .42s cubic-bezier(.22,.61,.36,1) both; transform-origin:0 100%}
.cmsg.is-scheduled .cbubble{opacity:.72}
.cmsg.is-scheduled .ctime{display:inline-flex; align-items:center; gap:4px}
.ctime .i-sm{width:12px; height:12px}
.cthread .ctyping{margin-left:44px}  /* под аватаром собеседника, как его сообщения */

/* --- Анкета: резюме файлом или коротко (P15) — показывается выбранная часть ---------- */
.resume-part{display:flex; flex-direction:column; gap:8px}
@supports selector(:has(*)){
  .resume-form:has(input[name="resume_mode"][value="file"]:checked) [data-resume="short"],
  .resume-form:has(input[name="resume_mode"][value="short"]:checked) [data-resume="file"]{display:none}
}

.resume-text{margin:8px 0 0; white-space:pre-wrap; overflow-wrap:anywhere; font-size:14px; line-height:22px; color:rgb(var(--vm-text))}
.resume-box summary{cursor:pointer; font-weight:600}

/* Рекомендация системы в сводке (P15 R3): цветная точка, причины, напоминание «решает человек». */
.verdict{margin:0 0 12px; padding:12px 16px; border:1px solid var(--vm-line); border-radius:var(--r-field); background:rgb(var(--vm-panel-soft) / .6)}
.verdict > *{margin:0}
.verdict > * + *{margin-top:8px}
.verdict-t{display:flex; align-items:center; flex-wrap:wrap; gap:8px}
.verdict-dot{width:10px; height:10px; border-radius:999px; background:rgb(var(--vm-muted))}
.verdict-invite .verdict-dot{background:rgb(var(--vm-good))}
.verdict-talk .verdict-dot{background:rgb(var(--vm-accent))}
.verdict-not_recommended .verdict-dot{background:rgb(var(--vm-bad, 200 60 60))}

/* --- Масштаб на телефоне закреплён (замечание владельца 30.09.2026) ------------------
   iPhone сам приближает страницу, когда у поля ввода шрифт меньше 16 px, и отдаляет после
   ответа. Поля на телефоне — 16 px; экран интервью не масштабируется жестами, как мессенджер. */
@media (max-width:767px), (pointer:coarse){
  :root input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=file]), :root select, :root textarea{font-size:16px}
}
@media(max-width:767px){ .chat-iv{touch-action:pan-x pan-y} }

/* Кабинет без перезагрузок: после обновления на месте появление страницы не повторяется. */
.soft-nav .page-in{animation:none}

/* --- Плавное появление содержимого ---------------------------------------------------- */
.page-in, .cand-col{animation:iosfade .24s ease-out both}
@keyframes iosfade{from{opacity:0; transform:translateY(6px)} to{opacity:1; transform:none}}

@media (prefers-reduced-motion: reduce){
  .page-in, .cand-col, dialog.card, dialog.ios-sheet, .v2-in, .iv-now > *, .iv-pop, .iv-thread .v2-thinking, .iv-thread .v2-saved, .ctyping{animation:none}
  input.ios-switch, input.ios-switch::after, .ios-row{transition:none}
}

/* --- CRM (P17 C2) ---------------------------------------------------------------------
   Форма «Зафиксировать результат»: поля итога и выбранного следующего шага видны только
   под отмеченным пунктом. Без поддержки :has() видны все поля — форма всё равно работает. */
.crm-outcome-fields, .crm-choice-fields{padding:4px 16px 16px}
.crm-outcome-fields > label:first-child, .crm-choice-fields > label:first-child{margin-top:0}
@supports selector(:has(*)){
  .crm-outcome .crm-outcome-fields, .crm-choice .crm-choice-fields{display:none}
  .crm-outcome:has(> .ios-row input:checked) .crm-outcome-fields,
  .crm-choice:has(> .ios-row input:checked) .crm-choice-fields{display:block}
}
/* Лента общения в карточке компании: новые сверху, факт и итоги раздельно. */
.crm-timeline{list-style:none; margin:16px 0 0; padding:0}
.crm-timeline > li{padding:12px 0; border-top:1px solid var(--vm-line)}
.crm-timeline > li > p{margin:0}
.crm-timeline > li > p + p{margin-top:8px}
.crm-summary{white-space:pre-line}
.task-card{padding:12px 0; border-top:1px solid var(--vm-line)}
.task-card:first-of-type{border-top:0; padding-top:0}
.task-card > p{margin:0}
.task-card > p + p{margin-top:4px}
.crm-group + .crm-group{margin-top:12px}
.crm-group > .ios-list{margin-top:8px}
