/* Модуль «Проектный менеджмент».

   Собственного стиля здесь нет: цвета, радиусы, тени и типографика берутся из
   общих токенов. Новыми являются только формы карточки и вкладки проекта,
   которых раньше в кабинете не было. */

/* Вкладки проекта. Подчинены глобальной навигации: мельче, ниже заголовка,
   матовые, без стекла — стекло остаётся за навигационным слоем. */
.pm-tabs {
  display: flex;
  gap: 4px;
  overflow-x: auto;
  scrollbar-width: none;
  padding: calc(var(--control-inset) - var(--surface-border));
  border: var(--surface-border) solid var(--hairline);
  border-radius: var(--r-control-group);
  background: var(--surface);
  box-shadow: var(--shadow-row);
}

.pm-tabs::-webkit-scrollbar {
  display: none;
}

.pm-tab {
  position: relative;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 38px;
  padding: 0 14px;
  border: 0;
  border-radius: var(--r-control);
  background: none;
  color: var(--ink-2);
  font-size: 13px;
  font-weight: 560;
  white-space: nowrap;
  cursor: pointer;
  transition:
    background-color var(--dur-fast) var(--ease-out),
    color var(--dur-fast) var(--ease-out),
    transform var(--dur-press) var(--ease-out);
}

.pm-tab::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: max(44px, 100%);
  height: max(44px, 100%);
  transform: translate(-50%, -50%);
}

.pm-tab:active {
  transform: scale(0.97);
}

.pm-tab[aria-selected="true"] {
  background: var(--accent-soft);
  color: var(--accent-ink);
  font-weight: 660;
}

.pm-soon {
  padding: 1px 6px;
  border-radius: var(--r-pill);
  background: var(--surface-sunken);
  color: var(--ink-3);
  font-size: 10px;
  font-weight: 600;
}

@media (hover: hover) and (pointer: fine) {
  .pm-tab:hover {
    background: var(--surface-muted);
    color: var(--accent-ink);
  }
}

/* Полоса состояния: архив, ошибка, успех, предупреждение об уходе. */
.pm-banner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--s3);
  padding: 11px var(--s4);
  border-radius: var(--r-row);
  font-size: 13.5px;
  line-height: 1.45;
  text-wrap: pretty;
}

.pm-banner.is-warn {
  background: var(--warn-soft);
  color: var(--warn);
}

.pm-banner.is-ok {
  background: var(--live-soft);
  color: var(--live);
}

.pm-guard-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

/* Форма карточки */
.pm-form {
  display: flex;
  flex-direction: column;
  gap: var(--s4);
  padding: var(--s4) var(--s5) var(--s5);
}

.pm-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}

.pm-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--ink-2);
  text-wrap: pretty;
}

.pm-dot {
  width: 6px;
  height: 6px;
  border-radius: var(--r-pill);
  background: var(--accent);
}

.pm-input {
  width: 100%;
  min-height: 44px;
  padding: 10px 14px;
  border: 1px solid var(--hairline);
  border-radius: var(--r-control);
  background: var(--surface);
  color: var(--ink);
  font: inherit;
  font-size: 14.5px;
  transition:
    border-color var(--dur-fast) var(--ease-out),
    background-color var(--dur-fast) var(--ease-out);
}

.pm-input:focus {
  outline: none;
  border-color: var(--accent);
}

.pm-input:focus-visible {
  outline: 2px solid var(--accent-strong);
  outline-offset: 1px;
}

.pm-input:disabled {
  background: var(--surface-muted);
  color: var(--ink-2);
  cursor: default;
}

.pm-textarea {
  min-height: 96px;
  resize: vertical;
  line-height: 1.5;
}

.pm-counter {
  align-self: flex-end;
  font-size: 11.5px;
  color: var(--ink-3);
}

.pm-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
}

/* Панель сохранения: всегда видно, есть ли несохранённые правки. */
.pm-savebar {
  position: sticky;
  top: calc(var(--tg-top) + var(--safe-t) + 10px);
  z-index: var(--z-header);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--s3);
  padding: 10px var(--s4);
  border: 1px solid var(--hairline);
  border-radius: var(--r-card);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}

.pm-savebar-text {
  font-size: 13px;
  color: var(--ink-2);
}

.pm-savebar-actions {
  display: flex;
  gap: 8px;
}

.btn:disabled {
  opacity: 0.45;
  cursor: default;
}

/* Списки участников и файлов */
.pm-member,
.pm-file,
.pm-event {
  align-items: center;
}

.pm-member-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  flex: none;
}

.pm-mini {
  min-height: 36px;
  padding: 0 12px;
  font-size: 12.5px;
  text-decoration: none;
}

.pm-mini::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: max(44px, 100%);
  height: max(44px, 100%);
  transform: translate(-50%, -50%);
}

.pm-mini {
  position: relative;
}

.pm-danger {
  color: var(--warn);
}

.pm-pad {
  padding: 0 var(--s5) var(--s4);
}

.pm-pad-search {
  margin: var(--s4) var(--s5) 0;
  width: auto;
}

.pm-upload {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding-top: var(--s4);
}

.pm-upload-label {
  align-self: flex-start;
  cursor: pointer;
}

/* История */
.pm-change {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px;
  margin-top: 4px;
  font-size: 12.5px;
  color: var(--ink-2);
}

.pm-change-field {
  padding: 1px 7px;
  border-radius: var(--r-pill);
  background: var(--surface-muted);
  font-weight: 600;
}

.pm-change-old {
  color: var(--ink-3);
  text-decoration: line-through;
  overflow-wrap: anywhere;
}

.pm-change-new {
  color: var(--ink);
  overflow-wrap: anywhere;
}

.pm-change-arrow {
  color: var(--ink-3);
}

.pm-longvalue summary {
  cursor: pointer;
  overflow-wrap: anywhere;
}

.pm-longvalue[open] summary {
  color: var(--ink-3);
}

.pm-longvalue span {
  display: block;
  margin-top: 4px;
  overflow-wrap: anywhere;
  white-space: pre-wrap;
}

.pm-filters {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s3);
  padding-top: var(--s4);
}

.pm-filter {
  display: flex;
  flex-direction: column;
  gap: 5px;
  flex: 1 1 160px;
  min-width: 0;
}

/* Две колонки на широком экране — та же система, что у остальных экранов. */
.pm-split {
  display: flex;
  flex-direction: column;
  gap: var(--s6);
}

@media (min-width: 1200px) {
  .pm-split {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
    column-gap: var(--s6);
    row-gap: var(--s6);
    align-items: start;
  }

  /* Колонку задаёт разметка, а не порядок в документе: так карточка читается
     как бланк на телефоне и как разворот на мониторе. */
  .pm-split > [data-col="1"] {
    grid-column: 1;
  }

  .pm-split > [data-col="2"] {
    grid-column: 2;
  }
}

@media (max-width: 767px) {
  .pm-savebar {
    top: calc(var(--tg-top) + var(--safe-t) + 6px);
  }

  .pm-member-actions {
    width: 100%;
    justify-content: flex-start;
  }

  .pm-member,
  .pm-file {
    flex-wrap: wrap;
    row-gap: 8px;
  }
}

/* Project stages and Gantt ------------------------------------------------- */
.gantt { display:grid; gap:18px; min-width:0; }
.gantt-toolbar { display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.gantt-toolbar h2 { font-size:20px; letter-spacing:-.025em; }
.gantt-toolbar-actions, .gantt-mode { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.gantt-mode { padding:3px; border:1px solid var(--hairline); border-radius:var(--r-control); background:var(--surface-muted); }
.gantt-mode button { border:0; border-radius:9px; background:none; color:var(--ink-3); min-height:38px; padding:7px 12px; }
.gantt-mode button.is-active { background:var(--surface); color:var(--accent-ink); box-shadow:var(--shadow-row); font-weight:650; }
.gantt-layout { display:grid; grid-template-columns:300px minmax(0,1fr); border:1px solid var(--hairline); border-radius:var(--r-card); background:var(--surface); overflow:hidden; }
.gantt-stage-list { min-width:0; border-right:1px solid var(--hairline); background:var(--surface); z-index:2; }
.gantt-list-head, .gantt-scale { height:46px; border-bottom:1px solid var(--hairline); background:var(--surface-muted); }
.gantt-list-head { display:flex; align-items:center; padding:0 16px; color:var(--ink-3); font-size:12px; font-weight:650; text-transform:uppercase; letter-spacing:.05em; }
.gantt-stage-meta { border-bottom:1px solid var(--hairline); overflow:hidden; }
.gantt-stage-main { min-height:70px; display:flex; align-items:center; gap:10px; padding:9px 10px; }
.gantt-expand, .gantt-icon { flex:none; width:40px; height:40px; display:grid; place-items:center; border:1px solid var(--hairline); border-radius:10px; color:var(--ink-2); background:var(--surface); cursor:pointer; }
.gantt-stage-copy { display:flex; flex-direction:column; gap:3px; min-width:0; flex:1; }
.gantt-stage-copy strong { font-size:13px; line-height:1.3; overflow-wrap:anywhere; }
.gantt-stage-copy span { color:var(--ink-3); font-size:11px; }
.gantt-stage-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:2px; }
.gantt-stage-actions .gantt-icon { width:30px; height:30px; }
.gantt-link { border:0; background:none; color:var(--accent-ink); font-size:11px; padding:5px; cursor:pointer; }
.gantt-link.is-danger, .gantt-dialog .is-danger { color:#a43c3c; }
.gantt-task-list { padding-left:52px; }
.gantt-task-list > div { height:36px; display:flex; flex-direction:column; justify-content:center; padding-right:10px; border-top:1px solid var(--hairline); min-width:0; }
.gantt-task-list span { font-size:12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gantt-task-list small { color:var(--ink-3); font-size:10px; }
.gantt-empty-line { color:var(--ink-3); font-size:12px; padding:10px 0; }
.gantt-scroll { min-width:0; overflow-x:auto; overscroll-behavior-x:contain; background:var(--surface); }
.gantt-scroll:focus-visible { outline:2px solid var(--accent); outline-offset:-2px; }
.gantt-timeline { position:relative; }
.gantt-scale { position:relative; overflow:hidden; }
.gantt-tick { position:absolute; top:0; height:46px; padding:14px 0 0 7px; color:var(--ink-3); font-size:10px; white-space:nowrap; }
.gantt-tick i { position:absolute; left:0; top:0; height:46px; border-left:1px solid var(--hairline); }
.gantt-time-rows { position:relative; }
.gantt-time-row { position:relative; border-bottom:1px solid var(--hairline); background-image:linear-gradient(to right,var(--hairline) 1px,transparent 1px); background-size:182px 100%; }
.gantt-stage-bar { position:absolute; top:18px; height:30px; display:flex; align-items:center; border-radius:8px; background:#6b57a5; color:#fff; box-shadow:0 2px 7px rgba(67,52,105,.18); overflow:hidden; z-index:1; }
.gantt-stage-bar span { padding:0 10px; font-size:11px; font-weight:650; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gantt-task-bar { position:absolute; height:8px; border-radius:4px; background:#b7a7dd; z-index:2; }
.gantt-task-point { position:absolute; width:11px; height:11px; border:2px solid var(--surface); border-radius:50%; background:#816db8; transform:translate(-1px,-1px); box-shadow:0 0 0 1px #6b57a5; z-index:3; }
.gantt-today { position:absolute; top:0; bottom:0; border-left:2px solid #bd4a55; z-index:4; pointer-events:none; }
.gantt-today i { position:absolute; top:4px; left:5px; padding:2px 5px; border-radius:5px; background:#fff0f1; color:#9a303a; font-size:9px; font-style:normal; }
.gantt-links { position:absolute; inset:0 auto auto 0; overflow:visible; pointer-events:none; z-index:3; }
.gantt-links path { fill:none; stroke:#4f596d; stroke-width:1.5; opacity:.75; }
.gantt-links marker path { fill:#4f596d; stroke:none; }
.gantt-dependency-panel { padding:16px; border:1px solid var(--hairline); border-radius:var(--r-card); background:var(--surface); }
.gantt-dependency-panel h3 { font-size:14px; margin-bottom:10px; }
.gantt-dependencies { display:flex; flex-wrap:wrap; gap:7px; }
.gantt-dependencies > span { display:inline-flex; align-items:center; gap:6px; padding:6px 8px; border-radius:8px; background:var(--surface-muted); color:var(--ink-2); font-size:12px; }
.gantt-dependency-delete { width:28px; height:28px; border:0; border-radius:7px; background:var(--surface); color:var(--ink-3); cursor:pointer; }
.gantt-dependency-form { display:flex; align-items:flex-end; gap:10px; margin-top:14px; flex-wrap:wrap; }
.gantt-dependency-form label, .gantt-dialog label { display:flex; flex-direction:column; gap:6px; color:var(--ink-2); font-size:12px; }
.gantt-dependency-form select, .gantt-dialog input { min-height:42px; padding:9px 11px; border:1px solid var(--hairline-strong); border-radius:var(--r-control); background:var(--surface); color:var(--ink); font:inherit; }
.gantt-dialog { width:min(500px,calc(100vw - 32px)); border:1px solid var(--hairline); border-radius:var(--r-island); padding:0; color:var(--ink); background:var(--surface); box-shadow:var(--shadow-float); }
.gantt-dialog::backdrop { background:rgba(35,41,54,.22); }
.gantt-dialog > header { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:18px 20px; border-bottom:1px solid var(--hairline); }
.gantt-dialog h2 { font-size:18px; }
.gantt-dialog-close { width:44px; height:44px; display:grid; place-items:center; border:0; border-radius:var(--r-control); background:var(--surface-muted); color:var(--ink-2); font-size:20px; }
.gantt-dialog form { display:flex; flex-direction:column; gap:16px; padding:20px; }
.gantt-dialog form > div { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.gantt-confirm { padding:20px; display:flex; flex-direction:column; gap:18px; font-size:14px; line-height:1.5; }
.gantt-confirm > div { display:flex; justify-content:flex-end; gap:8px; }

@media(min-width:768px) { .gantt-mode { display:none; } }
@media(max-width:767px) {
  .gantt-toolbar-actions { width:100%; justify-content:space-between; }
  .gantt-mode button, .gantt-toolbar .btn, .gantt-dependency-form button { min-height:44px; }
  .gantt-layout { display:block; }
  .gantt.is-list .gantt-scroll { display:none; }
  .gantt.is-timeline .gantt-stage-list { display:none; }
  .gantt-stage-list { border-right:0; }
  .gantt-stage-main { min-height:76px; }
  .gantt-stage-actions { max-width:88px; }
  .gantt-stage-actions .gantt-icon { width:40px; height:40px; }
  .gantt-link { min-height:36px; }
  .gantt-dependency-form { align-items:stretch; flex-direction:column; }
  .gantt-dependency-form select, .gantt-dialog input { min-height:44px; font-size:16px; }
  .gantt-dialog { inset:0; margin:0; width:100%; max-width:none; height:100dvh; border:0; border-radius:0; }
  .gantt-dialog > header { padding:calc(12px + var(--safe-t)) 16px 12px; }
  .gantt-dialog form, .gantt-confirm { padding:18px 16px calc(18px + var(--safe-b)); }
}
@media(prefers-reduced-motion:reduce) {
  .gantt-stage-bar, .gantt-task-bar, .gantt-task-point { transition:none; }
}

/* ── Администрирование занятий и конструктор форм ───────────────────────── */
.pm-learning-notice { margin:0 0 14px; padding:12px 14px; border:1px solid var(--hairline); border-radius:var(--r-control); background:var(--surface); color:var(--ink-2); }
.pm-learning-notice.is-ok { border-color:rgba(70,125,86,.3); color:#3f704c; }
.pm-learning-notice.is-error { border-color:rgba(164,60,60,.28); color:#963838; }
.pm-learning-toolbar { display:grid; grid-template-columns:minmax(220px,1fr) 190px auto; gap:10px; align-items:center; margin-bottom:14px; }
.pm-learning-toolbar .search { min-width:0; }
.pm-learning-create { margin-bottom:16px; padding:18px; border:1px solid var(--hairline); border-radius:var(--r-island); background:var(--surface); }
.pm-learning-form,.pm-template-create,.pm-builder-settings,.pm-builder-preview { display:flex; flex-direction:column; gap:14px; }
.pm-learning-form label,.pm-template-create label,.pm-builder-settings label,.pm-builder-preview label { display:flex; flex-direction:column; gap:6px; color:var(--ink-2); font-size:13px; }
.pm-learning-two { display:grid; grid-template-columns:1fr 2fr; gap:12px; }
.pm-learning-check { flex-direction:row!important; align-items:flex-start; min-height:44px; padding:8px 0; }
.pm-learning-check input { width:20px; height:20px; margin:0 4px 0 0; accent-color:var(--accent); }
.pm-learning-lessons { display:grid; grid-template-columns:minmax(380px,.92fr) minmax(440px,1.08fr); gap:16px; min-height:520px; }
.pm-learning-list,.pm-learning-detail { min-width:0; border:1px solid var(--hairline); border-radius:var(--r-island); background:var(--surface); overflow:hidden; }
.pm-learning-list { align-self:start; }
.pm-learning-detail { padding:20px; align-self:start; }
.pm-learning-row { width:100%; display:grid; grid-template-columns:54px minmax(0,1fr) auto; gap:12px; align-items:start; padding:16px; border:0; border-bottom:1px solid var(--hairline); background:transparent; color:var(--ink); text-align:left; }
.pm-learning-row:last-child { border-bottom:0; }
.pm-learning-row:hover,.pm-learning-row.is-active { background:var(--surface-muted); }
.pm-learning-code { font-weight:750; color:var(--accent); }
.pm-learning-row-body { display:flex; flex-direction:column; gap:6px; min-width:0; }
.pm-learning-row-body strong { overflow-wrap:anywhere; }
.pm-counts { display:flex; flex-wrap:wrap; gap:4px 12px; font-size:12px; color:var(--ink-3); }
.pm-learning-detail-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.pm-learning-detail-head h2 { font-size:22px; letter-spacing:-.025em; }
.pm-learning-facts { margin:18px 0; }
.pm-learning-subtitle { margin:22px 0 10px; font-size:15px; }
.pm-learning-modal { position:fixed; inset:0; z-index:80; display:grid; place-items:center; padding:20px; background:rgba(35,41,54,.24); }
.pm-learning-modal-card { width:min(590px,100%); max-height:calc(100dvh - 40px); overflow:auto; padding:24px; border:1px solid var(--hairline); border-radius:var(--r-island); background:var(--surface); box-shadow:var(--shadow-float); }
.pm-learning-modal-card h2 { margin-bottom:10px; font-size:21px; }
.pm-learning-modal-card p { color:var(--ink-2); line-height:1.5; }
.pm-learning-modal-card .pm-actions { margin-top:20px; }
.pm-migration-diff { display:grid; gap:10px; margin-top:18px; }
.pm-migration-diff>div { display:grid; grid-template-columns:160px 1fr; gap:12px; padding-top:10px; border-top:1px solid var(--hairline); }
.pm-migration-diff dt { color:var(--ink-3); }
.pm-migration-diff code { display:inline-block; margin:0 4px 4px 0; padding:3px 6px; border-radius:6px; background:var(--surface-muted); color:var(--ink-2); }
.pm-template-meta { display:flex; flex-direction:column; gap:10px; margin-bottom:14px; padding:16px 18px; border:1px solid var(--hairline); border-radius:var(--r-island); background:var(--surface); }
.pm-template-meta>div:first-child { display:flex; align-items:center; gap:10px; }
.pm-template-workspace { display:grid; grid-template-columns:250px minmax(430px,1fr) minmax(280px,340px); gap:14px; align-items:start; }
.pm-template-workspace.is-empty { grid-template-columns:280px 1fr; }
.pm-template-workspace.is-empty main { padding:40px; border:1px solid var(--hairline); border-radius:var(--r-island); background:var(--surface); }
.pm-template-library,.pm-builder-canvas,.pm-builder-side { min-width:0; border:1px solid var(--hairline); border-radius:var(--r-island); background:var(--surface); overflow:hidden; }
.pm-template-library,.pm-builder-side { position:sticky; top:12px; max-height:calc(100dvh - 140px); overflow:auto; }
.pm-template-library-head,.pm-builder-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; padding:16px; border-bottom:1px solid var(--hairline); }
.pm-template-library-head h2,.pm-builder-head h2 { font-size:18px; }
.pm-template-create { padding:14px; border-bottom:1px solid var(--hairline); }
.pm-template-row { width:100%; min-height:66px; display:flex; justify-content:space-between; align-items:center; gap:10px; padding:13px 14px; border:0; border-bottom:1px solid var(--hairline); background:transparent; color:var(--ink); text-align:left; }
.pm-template-row:hover,.pm-template-row.is-active { background:var(--surface-muted); }
.pm-template-row>span:first-child { display:flex; flex-direction:column; gap:4px; min-width:0; }
.pm-template-row strong { overflow-wrap:anywhere; }
.pm-template-row small { color:var(--ink-3); }
.pm-builder-head { align-items:center; }
.pm-builder-counter { display:flex; justify-content:space-between; gap:12px; padding:10px 16px; border-bottom:1px solid var(--hairline); color:var(--ink-3); font-size:12px; }
.pm-builder-add { display:flex; flex-wrap:wrap; gap:7px; padding:12px 16px; border-bottom:1px solid var(--hairline); background:var(--surface-muted); }
.pm-builder-add button { min-height:34px; padding:6px 9px; border:1px solid var(--hairline-strong); border-radius:9px; background:var(--surface); color:var(--ink-2); font:inherit; font-size:12px; }
.pm-builder-list { padding:14px; display:flex; flex-direction:column; gap:9px; }
.pm-builder-element { border:1px solid var(--hairline); border-radius:var(--r-control); background:var(--surface); }
.pm-builder-element.is-selected { border-color:var(--accent); box-shadow:0 0 0 2px var(--accent-tint); }
.pm-builder-element.is-error { border-color:#bd6565; }
.pm-builder-main { width:100%; min-height:60px; display:grid; grid-template-columns:20px 1fr; align-items:center; gap:8px; padding:12px; border:0; background:transparent; color:var(--ink); text-align:left; }
.pm-builder-main>span:last-child { display:flex; flex-direction:column; gap:3px; }
.pm-builder-main small { color:var(--ink-3); }
.pm-builder-grip { color:var(--ink-3); cursor:grab; }
.pm-builder-actions { display:flex; flex-wrap:wrap; gap:3px; padding:7px 9px; border-top:1px solid var(--hairline); }
.pm-builder-actions button { min-height:34px; padding:5px 8px; border:0; border-radius:8px; background:transparent; color:var(--ink-2); font:inherit; font-size:12px; }
.pm-builder-actions button:hover { background:var(--surface-muted); }
.pm-builder-actions .is-danger,.pm-template-meta .is-danger { color:#9d3b3b; }
.pm-builder-error { padding:0 12px 8px; color:#9d3b3b; font-size:12px; }
.pm-builder-side { padding:16px; }
.pm-builder-settings textarea { min-height:86px; resize:vertical; }
.pm-builder-preview { gap:18px; }
.pm-builder-preview h3 { padding-bottom:7px; border-bottom:1px solid var(--hairline); }
.pm-builder-preview input,.pm-builder-preview textarea { min-height:42px; padding:9px; border:1px solid var(--hairline-strong); border-radius:9px; background:var(--surface-muted); }
.pm-builder-preview textarea { min-height:88px; }
.pm-builder-preview fieldset { border:0; padding:0; margin:0; }
.pm-preview-display { display:flex; flex-direction:column; gap:5px; padding:10px; border-left:3px solid var(--accent); background:var(--surface-muted); }
.pm-preview-table { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(100px,1fr); margin-top:6px; border:1px solid var(--hairline); }
.pm-preview-table span { padding:8px; border-right:1px solid var(--hairline); font-size:12px; }
.pm-mobile-back { display:none; min-height:44px; border:0; background:transparent; color:var(--accent); font:inherit; text-align:left; }

@media (max-width:760px) {
  .pm-learning-toolbar { grid-template-columns:1fr; }
  .pm-learning-toolbar .btn,.pm-learning-toolbar .pm-input { min-height:44px; }
  .pm-learning-two { grid-template-columns:1fr; }
  .pm-learning-form input,.pm-learning-form select,.pm-builder-settings input,.pm-builder-settings select,.pm-builder-settings textarea { min-height:44px; font-size:16px; }
  .pm-learning-lessons { grid-template-columns:1fr; min-height:0; }
  .pm-learning-detail { padding:16px; }
  .pm-learning-row { min-height:72px; padding:14px 12px; }
  .pm-learning-modal { padding:0; }
  .pm-learning-modal-card { width:100%; height:100dvh; max-height:none; border:0; border-radius:0; padding:calc(18px + var(--safe-t)) 16px calc(18px + var(--safe-b)); }
  .pm-migration-diff>div { grid-template-columns:1fr; gap:4px; }
  .pm-template-meta { border-radius:var(--r-control); }
  .pm-template-workspace,.pm-template-workspace.is-empty { display:block; }
  .pm-template-library,.pm-builder-canvas,.pm-builder-side { display:none; position:static; max-height:none; border-radius:var(--r-control); }
  .pm-template-workspace[data-mobile-view="library"] .pm-template-library,
  .pm-template-workspace[data-mobile-view="builder"] .pm-builder-canvas,
  .pm-template-workspace[data-mobile-view="settings"] .pm-builder-side,
  .pm-template-workspace.is-empty .pm-template-library { display:block; }
  .pm-template-workspace.is-empty main { display:none; }
  .pm-mobile-back { display:block; }
  .pm-template-workspace[data-mobile-view="settings"] .pm-builder-side { position:fixed; inset:0; z-index:70; max-height:none; overflow:auto; padding:calc(14px + var(--safe-t)) 16px calc(18px + var(--safe-b)); border:0; border-radius:0; background:var(--surface); }
  .pm-template-library-head .btn,.pm-template-row,.pm-builder-add button,.pm-builder-actions button { min-height:44px; }
  .pm-builder-head { flex-direction:column; }
  .pm-builder-head .pm-actions { width:100%; }
  .pm-builder-head .btn { flex:1; min-height:44px; }
  .pm-builder-counter { flex-direction:column; }
  .pm-builder-add { display:grid; grid-template-columns:1fr 1fr; }
}

@media(prefers-reduced-motion:reduce) {
  .pm-learning-row,.pm-template-row,.pm-builder-element { transition:none!important; }
}

/* Командные занятия и динамическая форма ---------------------------------- */
.pm-team-lessons,.pm-team-lesson-detail { min-width:0; }
.pm-team-lessons-head { display:flex; align-items:flex-end; justify-content:space-between; gap:18px; margin-bottom:16px; }
.pm-team-lessons-head h2,.pm-lesson-detail-head h2 { margin:2px 0 0; font-size:clamp(22px,3vw,32px); color:var(--ink); }
.pm-eyebrow { margin:0; color:var(--ink-3); font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.pm-lesson-filters { display:flex; gap:6px; max-width:100%; padding:3px; overflow-x:auto; border:1px solid var(--hairline); border-radius:var(--r-control); background:var(--surface-muted); scrollbar-width:none; }
.pm-lesson-filters button { flex:none; min-height:36px; padding:7px 10px; border:0; border-radius:9px; background:transparent; color:var(--ink-2); font:inherit; font-size:13px; cursor:pointer; }
.pm-lesson-filters button[aria-pressed="true"] { background:var(--surface); color:var(--accent-ink); box-shadow:var(--shadow-row); font-weight:650; }
.pm-lesson-list { display:grid; gap:10px; }
.pm-lesson-row { display:flex; align-items:center; justify-content:space-between; gap:20px; min-width:0; padding:16px 18px; border:1px solid var(--hairline); border-radius:var(--r-card); background:var(--surface); }
.pm-lesson-row.is-overdue { border-left:3px solid #b96c63; }
.pm-lesson-row-main { min-width:0; }
.pm-lesson-row-main p { margin:5px 0 0; color:var(--ink-3); font-size:13px; }
.pm-lesson-row-main .pm-lesson-feedback { max-width:720px; color:var(--ink-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pm-lesson-row-title { display:flex; align-items:baseline; gap:9px; min-width:0; }
.pm-lesson-row-title span { flex:none; color:var(--accent-ink); font-size:12px; font-weight:750; }
.pm-lesson-row-title h3 { margin:0; min-width:0; overflow:hidden; color:var(--ink); font-size:16px; text-overflow:ellipsis; white-space:nowrap; }
.pm-lesson-row-actions { display:flex; align-items:center; gap:10px; flex:none; }
.pm-lesson-status { display:inline-flex; align-items:center; min-height:28px; padding:5px 9px; border-radius:999px; background:var(--surface-muted); color:var(--ink-2); font-size:12px; font-weight:650; white-space:nowrap; }
.pm-lesson-status.is-ok { background:#edf6ef; color:#356344; }
.pm-lesson-status.is-warn { background:#fbf1e9; color:#80543c; }
.pm-lesson-empty { padding:34px 20px; border:1px solid var(--hairline); border-radius:var(--r-card); background:var(--surface); text-align:center; }
.pm-lesson-empty h3 { margin:0 0 7px; }
.pm-lesson-empty p { margin:0 0 14px; color:var(--ink-3); }
.pm-lesson-detail-head { display:flex; align-items:center; gap:14px; margin-bottom:14px; }
.pm-lesson-detail-head .back { position:static; flex:none; min-height:44px; padding:9px 12px; border:1px solid var(--hairline); border-radius:var(--r-control); background:var(--surface); color:var(--ink-2); font:inherit; }
.pm-lesson-detail-head p { margin:0; color:var(--ink-3); font-size:13px; }
.pm-lesson-form-layout { display:grid; grid-template-columns:180px minmax(0,760px) 250px; justify-content:center; align-items:start; gap:16px; min-width:0; }
.pm-lesson-toc,.pm-lesson-side { position:sticky; top:calc(var(--tg-top) + var(--safe-t) + 12px); display:flex; flex-direction:column; gap:8px; min-width:0; padding:14px; border:1px solid var(--hairline); border-radius:var(--r-card); background:var(--surface); }
.pm-lesson-toc a { padding:7px 8px; border-radius:8px; color:var(--ink-2); font-size:13px; text-decoration:none; }
.pm-lesson-toc a:hover,.pm-lesson-toc a:focus-visible { background:var(--surface-muted); color:var(--accent-ink); }
.pm-lesson-form { min-width:0; padding:20px clamp(16px,3vw,34px); border:1px solid var(--hairline); border-radius:var(--r-card); background:var(--surface); }
.pm-form-section { margin:26px 0 8px; padding-top:8px; color:var(--ink); font-size:20px; scroll-margin-top:20px; }
.pm-form-section:first-child { margin-top:0; }
.pm-form-info { margin:10px 0 18px; padding:12px 14px; border-left:3px solid var(--accent); background:var(--surface-muted); color:var(--ink-2); line-height:1.5; }
.pm-answer-field { padding:16px 0; border-bottom:1px solid var(--hairline); scroll-margin:90px; }
.pm-answer-field:last-child { border-bottom:0; }
.pm-answer-field.has-error { border-bottom-color:#d89a92; }
.pm-answer-label { display:block; margin-bottom:7px; color:var(--ink); font-weight:650; }
.pm-answer-field .hint { margin:0 0 8px; color:var(--ink-3); font-size:12px; }
.pm-answer-field .pm-input { width:100%; min-height:44px; }
.pm-answer-field textarea.pm-input { resize:vertical; line-height:1.45; }
.pm-display-value { min-height:44px; padding:11px 12px; border-left:3px solid var(--accent); background:var(--surface-muted); color:var(--ink-2); }
.pm-choice-list { display:grid; gap:7px; }
.pm-choice-list label,.pm-check { display:flex; align-items:flex-start; gap:9px; min-height:44px; padding:10px 11px; border:1px solid var(--hairline); border-radius:10px; color:var(--ink-2); }
.pm-choice-list input,.pm-check input { width:20px; height:20px; margin:1px 0 0; accent-color:var(--accent-ink); }
.pm-field-error { margin:7px 0 0; color:#9b4c46; font-size:13px; font-weight:600; }
.pm-answer-table-wrap { max-width:100%; overflow-x:auto; overscroll-behavior-x:contain; }
.pm-answer-table { width:100%; min-width:520px; border-collapse:collapse; table-layout:fixed; }
.pm-answer-table th,.pm-answer-table td { padding:8px; border:1px solid var(--hairline); text-align:left; vertical-align:middle; }
.pm-answer-table th { background:var(--surface-muted); color:var(--ink-2); font-size:12px; }
.pm-answer-table input { width:100%; min-height:40px; padding:7px 8px; border:1px solid var(--hairline-strong); border-radius:8px; background:var(--surface); color:var(--ink); font:inherit; }
.pm-answer-table input[type="checkbox"] { width:20px; min-height:20px; }
.pm-answer-table-action { width:92px; }
.pm-answer-table-action button { min-height:38px; border:0; background:transparent; color:#8e4d48; font:inherit; font-size:12px; }
.pm-answer-table-wrap > .btn { margin-top:9px; }
.pm-lesson-side p { margin:3px 0 8px; color:var(--ink-3); font-size:13px; line-height:1.45; }
.pm-lesson-side strong { color:var(--ink-2); }
.pm-lesson-review { margin:0 0 14px; padding:13px 15px; border:1px solid #ead7c9; border-radius:var(--r-control); background:#fcf6f1; color:var(--ink-2); }
.pm-lesson-review p { margin:6px 0; line-height:1.45; }
.pm-lesson-review span { color:var(--ink-3); font-size:12px; }
.pm-save-state { display:flex; align-items:center; gap:10px; margin:0 0 12px; padding:10px 12px; border:1px solid var(--hairline); border-radius:var(--r-control); background:var(--surface); color:var(--ink-2); font-size:13px; }
.pm-save-state.is-saved { border-color:#cce1d1; background:#f1f8f2; }
.pm-save-state.is-error,.pm-save-state.is-conflict { border-color:#ead2cf; background:#fcf3f2; }
.pm-save-state button { margin-left:auto; min-height:36px; border:0; border-radius:8px; background:var(--surface); color:var(--accent-ink); font:inherit; font-weight:650; }
.pm-conflict-copy { margin:0 0 12px; padding:11px 13px; border:1px solid var(--hairline); border-radius:var(--r-control); background:var(--surface-muted); }
.pm-conflict-copy summary { cursor:pointer; color:var(--ink-2); font-weight:650; }
.pm-conflict-copy pre { max-height:220px; overflow:auto; white-space:pre-wrap; overflow-wrap:anywhere; font-size:12px; }
.pm-reopen-state { padding:10px; border-radius:9px; background:var(--surface-muted); }
.pm-lesson-mobile-bar { display:none; }

@media (max-width:760px) {
  .pm-team-lessons-head { align-items:stretch; flex-direction:column; gap:12px; }
  .pm-lesson-filters button { min-height:44px; }
  .pm-lesson-row { align-items:stretch; flex-direction:column; gap:14px; padding:15px; }
  .pm-lesson-row-title { align-items:flex-start; flex-direction:column; gap:4px; }
  .pm-lesson-row-title h3,.pm-lesson-row-main .pm-lesson-feedback { white-space:normal; }
  .pm-lesson-row-actions { justify-content:space-between; }
  .pm-lesson-row-actions .btn { min-height:44px; }
  .pm-lesson-detail-head { align-items:flex-start; flex-direction:column; }
  .pm-lesson-detail-head .back { width:100%; text-align:left; }
  .pm-lesson-form-layout { display:flex; flex-direction:column; gap:12px; }
  .pm-lesson-toc { display:none; }
  .pm-lesson-form { order:2; width:100%; padding:14px; }
  .pm-lesson-side { position:static; order:1; width:100%; padding:13px; }
  .pm-lesson-side > .btn { display:none; }
  .pm-answer-field { padding:14px 0; }
  .pm-answer-table-wrap { overflow:visible; }
  .pm-answer-table { min-width:0; border:0; }
  .pm-answer-table thead { display:none; }
  .pm-answer-table tbody { display:grid; gap:10px; }
  .pm-answer-table tr { display:block; padding:10px; border:1px solid var(--hairline); border-radius:var(--r-control); background:var(--surface-muted); }
  .pm-answer-table td,.pm-answer-table th { display:grid; grid-template-columns:minmax(88px,35%) minmax(0,1fr); align-items:center; gap:8px; padding:6px 0; border:0; background:transparent; }
  .pm-answer-table td::before { content:attr(data-label); color:var(--ink-3); font-size:12px; }
  .pm-answer-table th { color:var(--ink-2); font-size:13px; }
  .pm-answer-table input { min-width:0; min-height:44px; }
  .pm-answer-table-action { width:auto; }
  .pm-answer-table-action::before { content:""; }
  .pm-answer-table-action button { min-height:44px; text-align:left; }
  .pm-answer-table-wrap > .btn { min-height:44px; }
  .pm-team-lesson-detail > .pm-save-state { display:none; }
  .pm-lesson-mobile-bar { position:sticky; z-index:12; bottom:calc(82px + var(--safe-b)); display:flex; align-items:center; gap:8px; margin:14px -6px -6px; padding:8px; border:1px solid var(--hairline); border-radius:var(--r-island); background:var(--surface); box-shadow:var(--shadow-float); }
  .pm-lesson-mobile-bar > .pm-save-state { flex:1; min-width:0; margin:0; padding:7px 8px; border:0; background:transparent; }
  .pm-lesson-mobile-bar > .pm-save-state span { display:none; }
  .pm-lesson-mobile-bar > .pm-save-state button,.pm-lesson-mobile-bar .btn { min-height:44px; }
}

@media(prefers-reduced-motion:reduce) {
  .pm-answer-field { scroll-behavior:auto; }
}

/* Кабинет проверки работ ---------------------------------------------------- */
.pm-review { min-width:0; }
.pm-review-grid { display:grid; grid-template-columns:minmax(260px,300px) minmax(0,1fr) minmax(260px,300px); gap:16px; align-items:start; }
.pm-review-side,.pm-review-panel { position:sticky; top:calc(var(--tg-top) + var(--safe-t) + 12px); max-height:calc(100dvh - var(--tg-top) - var(--safe-t) - 24px); overflow:auto; min-width:0; }
.pm-review-side { border:1px solid var(--hairline); border-radius:var(--r-island); background:var(--surface); }
.pm-review-center { min-width:0; }
.pm-review-list { display:flex; flex-direction:column; min-width:0; }
.pm-review-filters { display:grid; gap:8px; padding:12px 12px 6px; }
.pm-review-filters .search { min-width:0; }
.pm-review-filters .pm-input { min-height:40px; }
.pm-review-count { margin:0; padding:4px 14px 8px; font-size:12px; }
.pm-review-row { display:flex; flex-direction:column; gap:6px; width:100%; padding:12px 14px; border:0; border-top:1px solid var(--hairline); background:transparent; color:var(--ink); font:inherit; text-align:left; cursor:pointer; }
.pm-review-row:hover { background:var(--surface-muted); }
.pm-review-row.is-active { background:var(--surface-muted); box-shadow:inset 3px 0 0 var(--accent); }
.pm-review-row.is-overdue { box-shadow:inset 3px 0 0 #b96c63; }
.pm-review-row.is-active.is-overdue { box-shadow:inset 3px 0 0 var(--accent), inset 6px 0 0 #b96c63; }
.pm-review-row-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.pm-review-row-head strong { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pm-review-row-meta { display:flex; flex-direction:column; gap:2px; color:var(--ink-3); font-size:12px; line-height:1.4; }
.pm-review-late { color:#963838; font-weight:650; }
.pm-review-flag { display:inline-flex; align-items:center; align-self:flex-start; min-height:22px; padding:2px 8px; border-radius:999px; background:#f3edff; color:var(--accent-ink); font-size:11px; font-weight:700; }
.pm-lesson-status.is-due { background:#eef1fb; color:#3d4f8a; }
.pm-review-head { display:grid; grid-template-columns:auto minmax(0,1fr); gap:10px 16px; align-items:start; margin-bottom:12px; padding:16px 18px; border:1px solid var(--hairline); border-radius:var(--r-card); background:var(--surface); }
.pm-review-head .back { position:static; min-height:40px; padding:8px 12px; border:1px solid var(--hairline); border-radius:var(--r-control); background:var(--surface); color:var(--ink-2); font:inherit; }
.pm-review-head-text { min-width:0; }
.pm-review-head-text h2 { margin:2px 0 0; font-size:22px; letter-spacing:-.02em; overflow-wrap:anywhere; }
.pm-review-head-text .hint { margin:4px 0 0; }
.pm-review-facts { grid-column:1 / -1; display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:10px; margin:6px 0 0; }
.pm-review-facts div { min-width:0; padding:8px 10px; border-radius:var(--r-control); background:var(--surface-muted); }
.pm-review-facts dt { margin:0 0 4px; color:var(--ink-3); font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; }
.pm-review-facts dd { margin:0; color:var(--ink-2); font-size:13px; }
.pm-review-nav { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-bottom:12px; }
.pm-review-nav .hint { margin:0 auto; }
.pm-review-form { border-radius:var(--r-card); }
.pm-review-value { min-height:40px; padding:9px 12px; border:1px solid var(--hairline); border-radius:10px; background:var(--surface-muted); color:var(--ink); line-height:1.45; overflow-wrap:anywhere; }
.pm-review-value.is-long { white-space:pre-wrap; }
.pm-review-empty { color:var(--ink-3); font-style:italic; }
.pm-review-choices { margin:0; padding-left:18px; }
.pm-review-table { min-width:0; table-layout:auto; }
.pm-review-table td,.pm-review-table th { overflow-wrap:anywhere; }
.pm-review-history-wrap { margin-top:12px; }
.pm-review-history { margin:10px 0 0; padding:0; list-style:none; display:grid; gap:8px; }
.pm-review-history li { display:grid; gap:3px; padding:10px 12px; border:1px solid var(--hairline); border-radius:var(--r-control); background:var(--surface); font-size:13px; }
.pm-review-history-meta { color:var(--ink-3); font-size:12px; }
.pm-review-diff { color:var(--ink-2); overflow-wrap:anywhere; }
.pm-review-diff s { color:var(--ink-3); }
.pm-review-panel { display:flex; flex-direction:column; gap:14px; padding:14px; border:1px solid var(--hairline); border-radius:var(--r-island); background:var(--surface); }
.pm-review-panel-head { display:flex; align-items:center; justify-content:space-between; }
.pm-review-panel-close { display:none; min-height:40px; border:0; background:transparent; color:var(--accent-ink); font:inherit; font-weight:650; }
.pm-review-decisions { display:grid; gap:8px; }
.pm-review-decisions .btn { min-height:46px; }
.pm-review-return { border:1px solid #d9a9a2!important; background:#fcf3f2!important; color:#8e3a33!important; }
.pm-review-return:hover { background:#f8e6e3!important; }
.pm-review-accept { background:#3f704c!important; border-color:#3f704c!important; color:#fff!important; }
.pm-review-compose { display:flex; flex-direction:column; gap:6px; }
.pm-review-compose label,.pm-review-deadline label { color:var(--ink-2); font-size:13px; font-weight:650; }
.pm-review-compose textarea { width:100%; resize:vertical; line-height:1.45; }
.pm-review-compose .hint,.pm-review-deadline .hint { margin:0; font-size:12px; }
.pm-review-deadline { display:flex; flex-direction:column; gap:8px; padding:12px; border:1px solid var(--hairline); border-radius:var(--r-control); background:var(--surface-muted); }
.pm-review-deadline .pm-input { min-height:44px; }
.pm-review-reopen { padding:12px; border:1px solid #d9c9f5; border-radius:var(--r-control); background:#f7f2ff; }
.pm-review-reopen p { margin:4px 0; color:var(--ink-2); font-size:13px; line-height:1.45; }
.pm-review-reason { color:var(--ink-3)!important; }
.pm-review-reopen .pm-actions { margin-top:10px; }
.pm-review-feed-wrap .pm-eyebrow { margin-bottom:8px; }
.pm-review-feed { margin:0; padding:0; list-style:none; display:grid; gap:8px; }
.pm-review-feed-item { padding:10px 12px; border:1px solid var(--hairline); border-left-width:3px; border-radius:var(--r-control); background:var(--surface); }
.pm-review-feed-item.is-return { border-left-color:#b96c63; }
.pm-review-feed-item.is-accept { border-left-color:#3f704c; }
.pm-review-feed-item.is-comment { border-left-color:var(--accent); }
.pm-review-feed-meta { display:block; margin-bottom:4px; color:var(--ink-3); font-size:12px; }
.pm-review-feed-item p { margin:0; color:var(--ink); font-size:14px; line-height:1.45; white-space:pre-wrap; overflow-wrap:anywhere; }
.pm-review-confirm-comment { padding:10px 12px; border-radius:var(--r-control); background:var(--surface-muted); color:var(--ink-2)!important; font-size:14px!important; }
.pm-review-notice-close { float:right; min-width:32px; min-height:32px; margin:-6px -6px -6px 8px; border:0; background:transparent; color:inherit; font:inherit; font-size:18px; }
.pm-review-mobile-bar { display:none; }
.pm-learning-detail .pm-review-list { margin:0 -20px -20px; border-top:1px solid var(--hairline); }
.pm-learning-detail .pm-review-row:first-of-type { border-top:0; }

@media (max-width:1023px) {
  .pm-review-grid { grid-template-columns:1fr; }
  .pm-review-side { display:none; }
  .pm-review-side,.pm-review-panel { position:static; max-height:none; }
  .pm-review-panel { display:none; }
  .pm-review-panel.is-open { display:flex; position:fixed; inset:auto 0 0 0; z-index:75; max-height:calc(100dvh - var(--tg-top) - var(--safe-t) - 40px); overflow:auto; padding:14px 16px calc(16px + var(--safe-b)); border-radius:var(--r-island) var(--r-island) 0 0; box-shadow:var(--shadow-float); }
  .pm-review.has-panel::before { content:""; position:fixed; inset:0; z-index:74; background:rgba(35,41,54,.24); }
  .pm-review-panel-close { display:block; }
  .pm-review-head { grid-template-columns:1fr; padding:14px; }
  .pm-review-head .back { width:100%; text-align:left; }
  .pm-review-nav .btn { flex:1 1 40%; min-height:44px; }
  .pm-review-nav .hint { flex-basis:100%; order:-1; text-align:center; }
  .pm-review-form { padding:14px; }
  .pm-review-table { min-width:0; border:0; }
  .pm-review-table thead { display:none; }
  .pm-review-table tbody { display:grid; gap:10px; }
  .pm-review-table tr { display:block; padding:10px; border:1px solid var(--hairline); border-radius:var(--r-control); background:var(--surface-muted); }
  .pm-review-table td,.pm-review-table th { display:grid; grid-template-columns:minmax(88px,35%) minmax(0,1fr); align-items:center; gap:8px; padding:6px 0; border:0; background:transparent; }
  .pm-review-table td::before { content:attr(data-label); color:var(--ink-3); font-size:12px; }
  .pm-review-mobile-bar { position:sticky; z-index:12; bottom:calc(82px + var(--safe-b)); display:flex; align-items:center; gap:8px; margin:14px -6px -6px; padding:8px 8px 8px 12px; border:1px solid var(--hairline); border-radius:var(--r-island); background:var(--surface); box-shadow:var(--shadow-float); }
  .pm-review-mobile-bar .btn { margin-left:auto; min-height:44px; }
  .pm-learning-detail .pm-review-list { margin:0 -16px -16px; }
  .pm-review-row { min-height:72px; }
  .pm-review-filters .pm-input,.pm-review-filters input { min-height:44px; font-size:16px; }
}

@media (min-width:1024px) and (max-width:1279px) {
  .pm-review-grid { grid-template-columns:minmax(260px,300px) minmax(0,1fr) minmax(250px,290px); }
}

/* Импорт DOCX-шаблона ------------------------------------------------------- */
.pm-import { min-width:0; }
.pm-import-head { display:flex; align-items:center; gap:12px; margin-bottom:14px; }
.pm-import-head h2 { margin:0; font-size:20px; }
.pm-import-upload { display:flex; flex-direction:column; align-items:flex-start; gap:12px; padding:28px; border:2px dashed var(--hairline-strong); border-radius:var(--r-island); background:var(--surface); }
.pm-import-upload.is-over { border-color:var(--accent); background:var(--surface-muted); }
.pm-import-upload h2 { margin:0; font-size:20px; }
.pm-import-upload .hint { margin:0; max-width:640px; }
.pm-import-pick { position:relative; overflow:hidden; cursor:pointer; }
.pm-import-pick input { position:absolute; inset:0; opacity:0; cursor:pointer; }
.pm-import-progress { width:100%; max-width:480px; height:8px; overflow:hidden; border-radius:999px; background:var(--surface-muted); }
.pm-import-progress span { display:block; height:100%; background:var(--accent); transition:width .2s ease; }
.pm-import-workspace { display:grid; grid-template-columns:minmax(0,1.4fr) minmax(300px,380px); gap:14px; align-items:start; }
.pm-import-main { min-width:0; display:flex; flex-direction:column; gap:14px; }
.pm-import-side { position:sticky; top:12px; max-height:calc(100dvh - 120px); overflow:auto; min-width:0; border:1px solid var(--hairline); border-radius:var(--r-island); background:var(--surface); }
.pm-import-list { border:1px solid var(--hairline); border-radius:var(--r-island); background:var(--surface); overflow:hidden; }
.pm-import-list-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; padding:14px 16px; border-bottom:1px solid var(--hairline); }
.pm-import-list-head .hint { margin:4px 0 0; }
.pm-import-rows { display:flex; flex-direction:column; }
.pm-import-row { position:relative; display:grid; grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr); gap:10px; align-items:start; width:100%; padding:12px 16px; border:0; border-bottom:1px solid var(--hairline); background:transparent; color:var(--ink); font:inherit; text-align:left; cursor:pointer; }
.pm-import-row:last-child { border-bottom:0; }
.pm-import-row:hover,.pm-import-row.is-active { background:var(--surface-muted); }
.pm-import-row.is-active { box-shadow:inset 3px 0 0 var(--accent); }
.pm-import-row.has-warning { padding-right:36px; }
.pm-import-source,.pm-import-target { display:flex; flex-direction:column; gap:3px; min-width:0; }
.pm-import-source small,.pm-import-target small { color:var(--ink-3); font-size:11px; }
.pm-import-source>span,.pm-import-target>span { overflow-wrap:anywhere; font-size:13px; line-height:1.4; }
.pm-import-source>span { color:var(--ink-2); font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:12px; white-space:pre-wrap; }
.pm-import-target.is-excluded { opacity:.55; text-decoration:line-through; }
.pm-import-target code { font-size:11px; }
.pm-import-arrow { align-self:center; color:var(--ink-3); text-align:center; }
.pm-import-binding { color:#80543c!important; }
.pm-import-binding.is-ok { color:#356344!important; }
.pm-import-warn { position:absolute; top:12px; right:12px; display:inline-grid; place-items:center; width:20px; height:20px; border-radius:50%; background:#fbf1e9; color:#80543c; font-size:12px; font-weight:800; }
.pm-import-dirty { grid-column:1 / -1; color:var(--accent-ink); font-size:11px; }
.pm-import-settings { padding:16px; }
.pm-import-settings-source { display:flex; flex-direction:column; gap:6px; padding:10px 12px; border-radius:var(--r-control); background:var(--surface-muted); }
.pm-import-warnings { margin:0; padding:10px 12px 10px 28px; border:1px solid #ead7c9; border-radius:var(--r-control); background:#fcf6f1; color:#80543c; font-size:13px; }
.pm-import-bind { display:flex; flex-direction:column; gap:10px; margin:0; padding:12px; border:1px solid var(--hairline); border-radius:var(--r-control); }
.pm-import-bind legend { padding:0 4px; color:var(--ink-2); font-size:13px; font-weight:650; }
.pm-import-bind .hint { margin:0; }
.pm-import-preview { padding:16px; border:0; }
.pm-import-create { display:grid; grid-template-columns:minmax(0,1fr) 160px; gap:10px 12px; padding:16px; border:1px solid var(--hairline); border-radius:var(--r-island); background:var(--surface); }
.pm-import-create label { display:flex; flex-direction:column; gap:6px; color:var(--ink-2); font-size:13px; }
.pm-import-create .pm-actions,.pm-import-create .hint { grid-column:1 / -1; }
.pm-import-create .hint { margin:0; }
.pm-import-recent { display:flex; flex-direction:column; gap:6px; width:100%; max-width:480px; margin-top:6px; }
.pm-import-recent-row { display:flex; align-items:center; justify-content:space-between; gap:10px; min-height:44px; padding:8px 12px; border:1px solid var(--hairline); border-radius:var(--r-control); background:var(--surface); color:var(--ink); font:inherit; text-align:left; cursor:pointer; }
.pm-import-recent-row small { color:var(--ink-3); }
.pm-import-mobile-bar { display:none; }

@media (max-width:1023px) {
  .pm-import-workspace { display:block; }
  .pm-import-side { position:static; max-height:none; display:none; }
  .pm-import-row { grid-template-columns:1fr; }
  .pm-import-arrow { display:none; }
  .pm-import-create { grid-template-columns:1fr; }
  .pm-import[data-step="settings"] .pm-import-side,.pm-import[data-step="preview"] .pm-import-side { display:block; position:fixed; inset:0; z-index:70; overflow:auto; border:0; border-radius:0; padding:calc(14px + var(--safe-t)) 0 calc(18px + var(--safe-b)); }
  .pm-import-mobile-bar { position:sticky; z-index:12; bottom:calc(82px + var(--safe-b)); display:flex; gap:8px; margin:14px -6px -6px; padding:8px; border:1px solid var(--hairline); border-radius:var(--r-island); background:var(--surface); box-shadow:var(--shadow-float); }
  .pm-import-mobile-bar .btn { flex:1; min-height:44px; }
  .pm-import-list-head { flex-direction:column; }
  .pm-import-list-head .pm-actions .btn { min-height:44px; }
  .pm-import-upload { padding:18px; }
  .pm-import-settings .pm-input { min-height:44px; font-size:16px; }
}
.pm-template-library-head { flex-direction:column; }
.pm-template-library-head .pm-actions { flex-wrap:wrap; }
.pm-template-library-head .pm-actions .btn { flex:1 1 auto; white-space:nowrap; }

/* Экспорт в DOCX ---------------------------------------------------------- */
.pm-export-card { width:min(560px,100%); }
.pm-export-facts { display:grid; gap:8px; margin:12px 0; }
.pm-export-facts div { display:flex; justify-content:space-between; gap:12px; padding:8px 10px; border-radius:var(--r-control); background:var(--surface-muted); }
.pm-export-facts dt { color:var(--ink-3); font-size:13px; }
.pm-export-facts dd { margin:0; color:var(--ink); font-size:13px; overflow-wrap:anywhere; text-align:right; }
.pm-export-warn { margin:10px 0; padding:10px 12px; border:1px solid #ead7c9; border-radius:var(--r-control); background:#fcf6f1; color:#80543c; font-size:13px; line-height:1.45; }
.pm-export-lost { margin:10px 0; padding:10px 12px; border:1px solid #ead2cf; border-radius:var(--r-control); background:#fcf3f2; color:#8e3a33; font-size:13px; line-height:1.45; }
.pm-export-error { margin:10px 0; color:#963838; font-size:13px; }
.pm-export-list { margin:6px 0 0; padding-left:18px; }
.pm-export-list li { margin:2px 0; }
@media (max-width:760px) {
  .pm-lesson-mobile-bar .btn { min-height:44px; }
}
