/* ============================================================================
   Подписка на новости — TASK-006 / OPEN-086, шаг 2. Разметку формы даёт
   mu-plugin photographer-core (phc_ml_form_html), место — шорткод темы
   ph_subscribe, отправку в REST — subscribe.js.

   Язык тот же, что у поиска в шапке и cookie-панели: поле на нижней
   линейке, кнопка словом с чернильной заливкой, конструкция держится
   линейками — без карточек, теней и цвета. Заголовок блока в статье набран
   текстовой гарнитурой (продолжение материала), в подвале — аппаратом.
   ============================================================================ */

/* --- Общая форма ------------------------------------------------------------ */
.subscribe{
  font-family:var(--font-apparatus); font-size:var(--step-2); line-height:var(--lh-meta);
  color:var(--ink);
}
.subscribe__trap{ position:absolute; inline-size:1px; block-size:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.subscribe__label{
  display:block; margin-block-end:var(--space-1);
  font-size:var(--step-1); font-weight:var(--wght-meta); color:var(--ink-mute);
}
.subscribe__row{ display:flex; flex-wrap:wrap; align-items:flex-end; gap:var(--space-2) var(--space-3); }
.subscribe__input{
  flex:1 1 14rem; min-inline-size:0;
  font:inherit; color:var(--ink); background:var(--bg);
  border:0; border-block-end:1px solid var(--rule-strong); border-radius:0;
  padding:var(--space-2) 0;
}
.subscribe__input:hover{ border-block-end-color:var(--ink-mute); }
.subscribe__input:focus-visible{
  outline:2px solid var(--accent); outline-offset:3px;
  border-block-end:2px solid var(--ink); padding-block-end:calc(var(--space-2) - 1px);
}
.subscribe__input[aria-invalid="true"]{ border-block-end:2px solid var(--ink); padding-block-end:calc(var(--space-2) - 1px); }

.subscribe__button{
  font-family:var(--font-apparatus); font-size:var(--step-1); font-weight:var(--wght-meta);
  line-height:var(--lh-meta);
  min-block-size:2.5rem; padding:var(--space-2) var(--space-4);
  border:1px solid var(--ink); background:var(--ink); color:var(--bg); cursor:pointer;
}
.subscribe__button:hover{ background:var(--ink-soft); border-color:var(--ink-soft); }
.subscribe__button:active{ background:var(--ink); }
.subscribe__button[disabled]{ background:var(--bg-sunk); border-color:var(--rule-strong); color:var(--ink-mute); cursor:progress; }

.subscribe__consent{
  display:flex; align-items:flex-start; gap:var(--space-2);
  margin-block-start:var(--space-3); max-inline-size:34rem;
  font-size:var(--step-1); color:var(--ink-soft); cursor:pointer;
}
.subscribe__consent input{
  flex:none; inline-size:1rem; block-size:1rem; margin:.1rem 0 0;
  accent-color:var(--ink); cursor:pointer;
}
.subscribe__consent a{
  color:var(--ink); text-decoration-line:underline; text-decoration-color:var(--accent);
  text-decoration-thickness:.07em; text-underline-offset:.2em;
}
.subscribe__consent a:hover{ text-decoration-thickness:.12em; }
.subscribe__nowrap{ white-space:nowrap; }

/* Ответ: пустой — не занимает места; ошибка отмечена весом и словом, не цветом. */
.subscribe__status{ margin:var(--space-3) 0 0; font-size:var(--step-2); }
.subscribe__status:empty{ display:none; }
.subscribe__status[data-state="error"]{ font-weight:var(--wght-strong); }

/* Успех: вместо полей остаётся только ответ — больше делать нечего. */
.subscribe.is-done > :not(.subscribe__status){ display:none; }
.subscribe.is-done .subscribe__status{ margin-block-start:0; font-size:var(--step-3); font-family:var(--font-text); line-height:var(--lh-deck); max-inline-size:34rem; }

/* Сообщения страницы /subscribe (шорткод phc_subscribe). */
.subscribe__message{ font-family:var(--font-text); font-size:var(--step-3); line-height:var(--lh-deck); }
.subscribe--unsubscribe .subscribe__button{ margin-block-start:var(--space-2); }

/* --- Блок в конце статьи ------------------------------------------------------ */
.subscribe-box__title{ margin:0; }
.subscribe-box__lead{ margin:var(--space-1) 0 var(--space-4); color:var(--ink-soft); }

.subscribe-box--article{
  margin-block-start:var(--space-7); padding-block-start:var(--space-5);
  border-block-start:1px solid var(--rule-strong);
}
/* Статья кончается рекламным местом — у него своя нижняя линейка. Вторая линейка
   и 56 px поверх неё давали двойную отбивку (владелец 23.09.2026): делим одной. */
.wp-block-post-content:has(> .showcase:last-child) + .subscribe-box--article{
  margin-block-start:0; border-block-start:0;
}
.subscribe-box--article .subscribe-box__title{
  font-family:var(--font-text); font-size:var(--step-4); font-weight:var(--wght-head3);
  font-variation-settings:"opsz" var(--opsz-head3); line-height:var(--lh-tight);
  letter-spacing:-0.01em; text-wrap:balance;
}
.subscribe-box--article .subscribe-box__lead{
  font-family:var(--font-apparatus); font-size:var(--step-2); line-height:var(--lh-meta);
}

/* --- Подвал: текст слева, форма справа; на узком — столбцом ---------------- */
.subscribe-box--foot{
  display:grid; gap:var(--space-3) var(--space-6);
  padding-block-end:var(--space-5); margin-block-end:var(--space-4);
  border-block-end:1px solid var(--rule-soft);
}
.subscribe-box--foot .subscribe-box__title{
  font-family:var(--font-apparatus); font-size:var(--step-2); font-weight:var(--wght-strong);
  line-height:var(--lh-meta); color:var(--ink);
}
.subscribe-box--foot .subscribe-box__lead{ margin-block-end:0; }
@media (min-width:62rem){
  .subscribe-box--foot{ grid-template-columns:minmax(0, 20rem) minmax(0, 34rem); align-items:start; }
}
/* Подвал красит ссылки в ink-soft без подчёркивания — у согласия ссылка остаётся ссылкой. */
.foot .subscribe__consent a{ color:var(--ink); text-decoration:underline; }

/* --- Диалог по ссылке «Подписка на новости» ----------------------------------- */
.subscribe-dialog{
  box-sizing:border-box; inline-size:calc(100% - 2 * var(--space-4)); max-inline-size:34rem;
  max-block-size:calc(100% - 2 * var(--space-4)); overflow:auto;
  margin:auto; padding:var(--space-5);
  border:1px solid var(--rule-strong); background:var(--bg); color:var(--ink);
  font-family:var(--font-apparatus); font-size:var(--step-2); line-height:var(--lh-meta);
}
.subscribe-dialog::backdrop{ background:color-mix(in srgb, var(--ink) 55%, transparent); }
.subscribe-dialog__title{
  margin:0 var(--space-6) 0 0;
  font-family:var(--font-text); font-size:var(--step-4); font-weight:var(--wght-head3);
  font-variation-settings:"opsz" var(--opsz-head3); line-height:var(--lh-tight); letter-spacing:-0.01em;
}
.subscribe-dialog__close{
  position:absolute; inset-block-start:var(--space-3); inset-inline-end:var(--space-3);
  display:inline-flex; align-items:center; justify-content:center;
  inline-size:2.5rem; block-size:2.5rem; padding:0;
  border:0; background:none; color:var(--ink); cursor:pointer;
}
.subscribe-dialog__close:hover{ background:var(--bg-sunk); }
.subscribe-dialog__close svg{ inline-size:1.25rem; block-size:1.25rem; stroke:currentColor; stroke-width:1.5; fill:none; }

/* --- Узкий экран и грубый указатель ------------------------------------------ */
@media (max-width:35rem){
  .subscribe__button{ inline-size:100%; }
  .subscribe-dialog{ padding:var(--space-4); }
}
@media (pointer:coarse){
  .subscribe__input,
  .subscribe__button,
  .subscribe-dialog__close{ min-block-size:var(--tap-min); }
  .subscribe-dialog__close{ inline-size:var(--tap-min); }
}

@media print{
  .subscribe-box, .subscribe-dialog{ display:none !important; }
}
