/* =============================================================================
   «ПУЛЬТ» 1.16 — ДИЗАЙН-ЯЗЫК ПАНЕЛЕЙ «АКЦИИ» И «МАРКЕТИНГ»
   -----------------------------------------------------------------------------
   Один файл вида: токены, детали, движение, графики. Детали для шаблонов —
   platform_ui/templates/_pult.html, слова статусов, числа и даты — platform_ui/pult.py.
   Холст с правилами: https://claude.ai/artifact/DsfuALq51LURLMpKgDiH7g
   Процесс и проверка: docs/admin-design/README.md, scripts/check_pult.py.

   Подключён во всех панелях. Общие правила (шрифт, отступы заголовков, ссылки)
   действуют только внутри .pult — на экранах, переведённых на язык; детали ui-*
   работают везде. Имена токенов — роли DS 2.0; поправки для панелей: --ds-warning-fg
   темнее (5,7 : 1), добавлены --ds-action-hover, --ds-radius-xs, --ds-shadow-menu.
   ========================================================================== */
:root{
  --ds-brand:#2E1A3F; --ds-brand-ink:#241A2B; --ds-on-brand:#FBF6F7;
  --ds-action:#F5C24B; --ds-action-hover:#EDB73F; --ds-action-pressed:#E0AC33; --ds-on-action:#2E1A3F;
  --ds-link:#6B3E86;
  --ds-page:#FBF6F7; --ds-surface:#FFFFFF; --ds-surface-2:#F1E7F2; --ds-surface-3:#F3E9EF;
  --ds-border:#EADFE7; --ds-border-strong:#DCCDE1; --ds-border-accent:#C9AFD2;
  --ds-control-border:#B3A3BA; --ds-control-hover:#8F7F97; --ds-track:#EDE2EA;
  --ds-text-strong:#241A2B; --ds-text:#3F3646; --ds-text-muted:#6F6377; --ds-text-subtle:#9C8DA4;
  --ds-warning-fg:#7A5526; --ds-warning-bg:#FBEBD8; --ds-warning-border:#F0DFC4; --ds-warning-solid:#D9922B;
  --ds-info-fg:#4A2E63; --ds-info-bg:#F1E7F2; --ds-info-border:#C9AFD2; --ds-info-solid:#6B3E86;
  --ds-success-fg:#2F6B4F; --ds-success-bg:#EAF2EC; --ds-success-border:#CBE0D4; --ds-success-solid:#2F6B4F;
  --ds-danger-fg:#8E2A1F; --ds-danger-bg:#FBE9E7; --ds-danger-border:#E5B7B1; --ds-danger-solid:#C0392B;
  --ds-danger-pressed:#F6D9D5; --ds-on-danger:#FFFFFF; --ds-toast-action:#E4D3EE;
  --ds-neutral-fg:#6F6377; --ds-neutral-bg:#F6EEF2; --ds-neutral-border:#E5D8E8; --ds-neutral-solid:#9C8DA4;
  --ds-focus-border:#6B3E86; --ds-focus-ring:0 0 0 3px #EDDFF1;
  --ds-radius-xs:8px; --ds-radius-sm:10px; --ds-radius-md:14px; --ds-radius-lg:20px; --ds-radius-pill:999px;
  --ds-shadow-menu:0 8px 28px rgba(46,26,63,.10); --ds-shadow-dialog:0 16px 40px rgba(46,26,63,.16);
  --ds-shadow-toast:0 10px 30px rgba(36,26,43,.28);
  --ds-font-sans:"Onest",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --ds-font-mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  --ds-ease:cubic-bezier(.2,0,0,1);
}

*,*::before,*::after{box-sizing:border-box}
.pult{font-family:var(--ds-font-sans);color:var(--ds-text);font-size:14px;line-height:20px;-webkit-font-smoothing:antialiased}
.pult :where(h1,h2,h3,h4,p,ul,ol,figure,dl,dd){margin:0}
.pult :where(ul,ol){padding:0;list-style:none}
.pult :where(a){color:var(--ds-link);text-decoration:none}
.pult :where(a:hover){text-decoration:underline}
.pult :where(button,input,select,textarea){font-family:inherit}
.pult :where(table){border-collapse:collapse}
.mono{font-family:var(--ds-font-mono);font-variant-numeric:tabular-nums}
.tnum{font-variant-numeric:tabular-nums}
.ui-icon{fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* ---------- Кнопки ---------- */
.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:var(--ds-radius-sm);border:1px solid transparent;background:transparent;font:600 14px/20px var(--ds-font-sans);color:var(--ds-text-strong);white-space:nowrap;cursor:pointer;text-decoration:none;flex:none}
.ui-btn:hover{text-decoration:none}
.ui-btn--s{height:32px;padding:0 12px;gap:6px;font-size:13px;line-height:18px}
.ui-btn--primary{background:var(--ds-action);color:var(--ds-on-action)}
.ui-btn--primary:hover,.ui-btn--primary.is-hover{background:var(--ds-action-hover)}
.ui-btn--primary:active,.ui-btn--primary.is-pressed{background:var(--ds-action-pressed)}
.ui-btn--secondary{background:var(--ds-surface);border-color:var(--ds-control-border);color:var(--ds-text-strong)}
.ui-btn--secondary:hover,.ui-btn--secondary.is-hover{background:var(--ds-surface-3);border-color:var(--ds-control-hover)}
.ui-btn--secondary:active,.ui-btn--secondary.is-pressed{background:var(--ds-surface-2)}
.ui-btn--ghost{color:var(--ds-text)}
.ui-btn--ghost:hover,.ui-btn--ghost.is-hover{background:var(--ds-surface-3)}
.ui-btn--ghost:active,.ui-btn--ghost.is-pressed{background:var(--ds-surface-2)}
.ui-btn--danger{background:var(--ds-surface);border-color:var(--ds-danger-border);color:var(--ds-danger-fg)}
.ui-btn--danger:hover,.ui-btn--danger.is-hover{background:var(--ds-danger-bg)}
.ui-btn--danger:active,.ui-btn--danger.is-pressed{background:var(--ds-danger-pressed)}
.ui-btn--danger-solid{background:var(--ds-danger-solid);color:var(--ds-on-danger)}
.ui-btn--icon{width:40px;padding:0}
.ui-btn--s.ui-btn--icon{width:32px}
.ui-btn:focus-visible,.ui-btn.is-focus{outline:2px solid var(--ds-focus-border);outline-offset:2px}
.ui-btn.is-disabled{background:var(--ds-surface-3);border-color:transparent;color:var(--ds-text-subtle);cursor:not-allowed}
.ui-spin{width:16px;height:16px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:ui-spin 900ms linear infinite;flex:none}
@keyframes ui-spin{ to{transform:rotate(360deg)} }
.ui-link{color:var(--ds-link);font-weight:500;text-decoration:none}
.ui-link:hover{text-decoration:underline}

/* ---------- Метки, теги, счётчики ---------- */
.ui-badge{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border-radius:var(--ds-radius-pill);font:500 12px/16px var(--ds-font-sans);white-space:nowrap;flex:none}
.ui-badge i{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.ui-badge--warning{background:var(--ds-warning-bg);color:var(--ds-warning-fg)}
.ui-badge--warning i{background:var(--ds-warning-solid)}
.ui-badge--info{background:var(--ds-info-bg);color:var(--ds-info-fg)}
.ui-badge--info i{background:var(--ds-info-solid)}
.ui-badge--success{background:var(--ds-success-bg);color:var(--ds-success-fg)}
.ui-badge--danger{background:var(--ds-danger-bg);color:var(--ds-danger-fg)}
.ui-badge--danger i{background:var(--ds-danger-solid)}
.ui-badge--neutral{background:var(--ds-neutral-bg);color:var(--ds-neutral-fg)}
.ui-badge--neutral i{background:var(--ds-neutral-solid)}
.ui-tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:var(--ds-radius-pill);border:1px solid var(--ds-border-strong);background:var(--ds-surface);font:500 12px/16px var(--ds-font-sans);color:var(--ds-text);white-space:nowrap;flex:none}
.ui-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--ds-radius-pill);background:var(--ds-warning-bg);color:var(--ds-warning-fg);font:600 12px/16px var(--ds-font-sans);font-variant-numeric:tabular-nums;flex:none}
.ui-count--neutral{background:var(--ds-surface-3);color:var(--ds-text-muted)}

/* ---------- Поля ---------- */
.ui-field{display:flex;flex-direction:column;gap:8px;min-width:0}
.ui-label{font:500 13px/18px var(--ds-font-sans);color:var(--ds-text-strong)}
.ui-label b{font-weight:500;color:var(--ds-text-muted)}
.ui-input{display:block;width:100%;height:40px;padding:0 12px;border:1px solid var(--ds-control-border);border-radius:var(--ds-radius-sm);background:var(--ds-surface);font:400 14px/20px var(--ds-font-sans);color:var(--ds-text-strong);outline:none}
.ui-input::placeholder{color:var(--ds-text-subtle)}
.ui-input:hover,.ui-input.is-hover{border-color:var(--ds-control-hover)}
.ui-input:focus,.ui-input.is-focus{border-color:var(--ds-focus-border);box-shadow:var(--ds-focus-ring)}
.ui-input.is-error{border-color:var(--ds-danger-solid)}
.ui-input.is-disabled{background:var(--ds-surface-3);border-color:var(--ds-surface-3);color:var(--ds-text-subtle)}
.ui-input.is-readonly{background:var(--ds-surface-3);border-color:transparent;color:var(--ds-text)}
textarea.ui-input{height:auto;min-height:96px;padding:10px 12px;resize:vertical}
select.ui-input{appearance:none;-webkit-appearance:none;padding-right:36px;cursor:pointer}
.ui-select{position:relative;display:block}
.ui-select svg{position:absolute;right:12px;top:12px;pointer-events:none;color:var(--ds-text)}
.ui-select--s select{height:32px;font-size:13px;line-height:18px;padding-right:32px}
.ui-select--s svg{top:8px;right:10px}
.ui-affix{display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border:1px solid var(--ds-control-border);border-radius:var(--ds-radius-sm);background:var(--ds-surface);color:var(--ds-text-muted)}
.ui-affix input{flex:1;min-width:0;height:38px;border:0;outline:none;background:transparent;font:400 14px/20px var(--ds-font-sans);color:var(--ds-text-strong);padding:0}
.ui-affix input::placeholder{color:var(--ds-text-subtle)}
.ui-affix--s{height:32px}
.ui-affix--s input{height:30px;font-size:13px}
.ui-hint{font:400 13px/18px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-error{display:flex;align-items:flex-start;gap:6px;font:400 13px/18px var(--ds-font-sans);color:var(--ds-danger-fg)}
.ui-error svg{margin-top:1px}
.ui-check{display:flex;align-items:flex-start;gap:10px;font:400 14px/20px var(--ds-font-sans);color:var(--ds-text-strong);cursor:pointer}
.ui-check input{width:16px;height:16px;margin:2px 0 0;accent-color:var(--ds-brand);flex:none}
.ui-check span small{display:block;font-size:13px;line-height:18px;color:var(--ds-text-muted)}
.ui-switch{display:inline-flex;align-items:center;width:36px;height:20px;padding:2px;border-radius:var(--ds-radius-pill);border:0;background:var(--ds-control-border);cursor:pointer;flex:none}
.ui-switch span{width:16px;height:16px;border-radius:50%;background:var(--ds-surface);box-shadow:0 1px 2px rgba(36,26,43,.25)}
.ui-switch.is-on{background:var(--ds-brand)}

/* ---------- Вкладки, фильтры ---------- */
.ui-tabs{display:flex;gap:4px;box-shadow:inset 0 -1px 0 var(--ds-border);max-width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.ui-tabs::-webkit-scrollbar{display:none}
.ui-tab{flex:none;white-space:nowrap}
.ui-tab{text-decoration:none;display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-bottom:2px solid transparent;font:500 14px/20px var(--ds-font-sans);color:var(--ds-text);white-space:nowrap}
.ui-tab:hover{text-decoration:none;color:var(--ds-text-strong)}
.ui-tab.is-active{color:var(--ds-text-strong);font-weight:600;border-bottom-color:var(--ds-brand)}
.ui-seg{display:inline-flex;gap:2px;padding:3px;border-radius:var(--ds-radius-sm);background:var(--ds-track);flex:none;max-width:100%;overflow-x:auto;scrollbar-width:none}
.ui-seg::-webkit-scrollbar{display:none}
.ui-stack > .ui-seg{align-self:flex-start}
.ui-seg button,.ui-seg a{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:var(--ds-radius-xs);border:1px solid transparent;background:transparent;font:500 13px/18px var(--ds-font-sans);color:var(--ds-text);cursor:pointer;white-space:nowrap;text-decoration:none}
.ui-seg button em,.ui-seg a em{font-style:normal;font-variant-numeric:tabular-nums;color:var(--ds-text-subtle)}
.ui-seg button:hover,.ui-seg a:hover{color:var(--ds-text-strong);background:rgba(255,255,255,.55)}
.ui-seg button.is-active,.ui-seg a.is-active{background:var(--ds-surface);border-color:transparent;color:var(--ds-text-strong);font-weight:600;box-shadow:0 1px 2px rgba(46,26,63,.16),0 0 0 1px rgba(46,26,63,.06)}
.ui-seg button.is-active em,.ui-seg a.is-active em{color:var(--ds-text-muted)}
.ui-chip{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 4px 0 10px;border-radius:var(--ds-radius-pill);background:var(--ds-surface-2);font:500 13px/18px var(--ds-font-sans);color:var(--ds-info-fg);white-space:nowrap}
.ui-chip button{display:inline-grid;place-items:center;width:20px;height:20px;border:0;border-radius:50%;background:transparent;color:var(--ds-info-fg);cursor:pointer;padding:0}

/* ---------- Поверхности ---------- */
.ui-section{background:var(--ds-surface);border:1px solid var(--ds-border-strong);border-radius:var(--ds-radius-md);overflow:hidden;min-width:0}
.ui-section__head{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:56px;padding:12px 20px;border-bottom:1px solid var(--ds-border)}
.ui-section__heading{display:flex;flex-direction:column;gap:2px;min-width:0}
.ui-section__title{margin:0;font:600 16px/24px var(--ds-font-sans);color:var(--ds-text-strong)}
.ui-section__meta{font:400 13px/18px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-section__body{padding:20px}
.ui-section__foot{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 20px;border-top:1px solid var(--ds-border);min-height:52px}
.ui-kpi{display:flex;flex-direction:column;gap:4px;padding:16px 20px;border:1px solid var(--ds-border-strong);border-radius:var(--ds-radius-md);background:var(--ds-surface);min-width:0}
.ui-kpi__label{font:400 13px/18px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-kpi__value{font:600 28px/32px var(--ds-font-sans);letter-spacing:-.01em;color:var(--ds-text-strong)}
.ui-kpi__foot{font:400 13px/18px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-kpi__foot.up{color:var(--ds-success-fg)}
.ui-kpi__foot.warn{color:var(--ds-warning-fg)}
.ui-kpi.is-selected{border-color:var(--ds-brand);box-shadow:inset 0 0 0 1px var(--ds-brand)}
.ui-dl{display:grid;grid-template-columns:minmax(120px,168px) minmax(0,1fr);column-gap:16px;font:400 14px/20px var(--ds-font-sans)}
.ui-dl dt,.ui-dl dd{padding:10px 0;border-bottom:1px solid var(--ds-border)}
.ui-dl dt:nth-last-of-type(1),.ui-dl dd:nth-last-of-type(1){border-bottom:0}
.ui-dl dt:first-of-type,.ui-dl dd:first-of-type{padding-top:0}
.ui-dl dt{color:var(--ds-text-muted)}
.ui-dl{margin:0}
.ui-dl dd{margin:0;color:var(--ds-text-strong);font-weight:500;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}

/* ---------- Таблица и строки ---------- */
.ui-table{width:100%;border-collapse:collapse;font:400 14px/20px var(--ds-font-sans);color:var(--ds-text)}
.ui-table th{height:36px;padding:0 16px;text-align:left;font:500 12px/16px var(--ds-font-sans);color:var(--ds-text-muted);border-bottom:1px solid var(--ds-border-strong);white-space:nowrap;background:var(--ds-surface)}
.ui-table th.num,.ui-table td.num{text-align:right}
/* Победители: у каждого розыгрыша своя таблица, колонки одной ширины во всех, а не «как получится». */
.ui-table--winners{table-layout:fixed}
.ui-table--winners th{box-sizing:border-box}
.ui-table--winners th:nth-child(1){width:56px}
.ui-table--winners th:nth-child(2){width:26%}
.ui-table--winners th:nth-child(3){width:22%}
.ui-table--winners th:nth-child(4){width:14%}
.ui-table--winners th:nth-child(5){width:15%}
.ui-table--winners th:nth-child(6){width:9%}
.ui-table--winners th:nth-child(7){width:130px}
.ui-table--winners td{overflow-wrap:anywhere}
.ui-table td{height:44px;padding:10px 16px;border-bottom:1px solid var(--ds-border);vertical-align:middle}
.ui-table tbody tr:last-child td{border-bottom:0}
.ui-table tr[data-ui-href]{cursor:pointer}
.ui-table tr[data-ui-href]:hover td{background:var(--ds-surface-2)}
.ui-table tr[data-ui-href]:focus-visible{outline:2px solid var(--ds-focus-border);outline-offset:-2px}
.ui-table td.num{font-family:var(--ds-font-mono);font-size:13px;font-variant-numeric:tabular-nums;color:var(--ds-text-strong);white-space:nowrap}
.ui-table td.id{font-family:var(--ds-font-mono);font-size:13px;color:var(--ds-text-strong);white-space:nowrap}
.ui-table td.muted{color:var(--ds-text-muted);white-space:nowrap}
.ui-table td.act{width:48px;padding:0 8px;text-align:right}
.ui-table td.chk,.ui-table th.chk{width:44px;padding:0 0 0 16px}
.ui-table tbody tr:hover td,.ui-table tr.is-hover td{background:var(--ds-page)}
.ui-table tr.is-selected td{background:var(--ds-surface-2)}
.ui-table input[type=checkbox]{width:16px;height:16px;margin:0;accent-color:var(--ds-brand);display:block}
.ui-cell{display:flex;flex-direction:column;gap:2px}
.ui-cell-title{font-weight:600;color:var(--ds-text-strong);text-decoration:none}
.ui-cell-meta{font-size:13px;line-height:18px;color:var(--ds-text-muted)}
.ui-row{text-decoration:none;display:flex;align-items:center;gap:16px;min-height:64px;padding:12px 20px;border-bottom:1px solid var(--ds-border);color:inherit}
.ui-row:hover{text-decoration:none}
.ui-row:last-child{border-bottom:0}
.ui-row:is(a,button):hover,.ui-row.is-hover{background:var(--ds-page)}
.ui-row.is-active{background:var(--ds-surface-2)}
.ui-row__main{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.ui-row__title{font:600 14px/20px var(--ds-font-sans);color:var(--ds-text-strong)}
.ui-row__meta{font:400 13px/18px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-toolbar{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--ds-border);flex-wrap:wrap}
.ui-pager{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 16px;border-top:1px solid var(--ds-border);font:400 13px/18px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-bulk{display:flex;align-items:center;gap:12px;padding:8px 16px;background:var(--ds-surface-2);border-bottom:1px solid var(--ds-border-accent);font:600 13px/18px var(--ds-font-sans);color:var(--ds-info-fg)}
.ui-skel{height:12px;border-radius:var(--ds-radius-pill);background:var(--ds-surface-3)}

/* ---------- Сообщения ---------- */
.ui-note{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border-radius:var(--ds-radius-md);border:1px solid;font:400 14px/20px var(--ds-font-sans);color:var(--ds-text)}
.ui-note svg{flex:none;margin-top:2px}
.ui-note__body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.ui-note__title{font-weight:600}
.ui-note__actions{display:flex;gap:8px;align-self:center}
.ui-note--info{background:var(--ds-info-bg);border-color:var(--ds-info-border)}
.ui-note--info svg,.ui-note--info .ui-note__title{color:var(--ds-info-fg)}
.ui-note--warning{background:var(--ds-warning-bg);border-color:var(--ds-warning-border)}
.ui-note--warning svg,.ui-note--warning .ui-note__title{color:var(--ds-warning-fg)}
.ui-note--danger{background:var(--ds-danger-bg);border-color:var(--ds-danger-border)}
.ui-note--danger svg,.ui-note--danger .ui-note__title{color:var(--ds-danger-fg)}
.ui-note--success{background:var(--ds-success-bg);border-color:var(--ds-success-border)}
.ui-note--success svg,.ui-note--success .ui-note__title{color:var(--ds-success-fg)}
.ui-toast{display:flex;align-items:center;gap:16px;padding:12px 12px 12px 16px;border-radius:var(--ds-radius-md);background:var(--ds-brand-ink);color:var(--ds-on-brand);box-shadow:var(--ds-shadow-toast);font:400 14px/20px var(--ds-font-sans)}
.ui-toast button{height:32px;padding:0 10px;border:0;border-radius:var(--ds-radius-xs);background:transparent;color:var(--ds-toast-action);font:600 13px/18px var(--ds-font-sans);cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.ui-dialog{display:flex;flex-direction:column;gap:12px;width:480px;padding:24px;border-radius:var(--ds-radius-lg);background:var(--ds-surface);box-shadow:var(--ds-shadow-dialog)}
.ui-dialog__title{margin:0;font:600 18px/24px var(--ds-font-sans);color:var(--ds-text-strong)}
.ui-dialog__foot{display:flex;justify-content:flex-end;gap:8px;padding-top:12px}
.ui-scrim{background:rgba(36,26,43,.40)}
.ui-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:40px 24px}
.ui-empty__icon{display:grid;place-items:center;width:40px;height:40px;margin-bottom:6px;border-radius:50%;background:var(--ds-surface-3);color:var(--ds-text-muted)}
.ui-empty__title{font:600 14px/20px var(--ds-font-sans);color:var(--ds-text-strong)}
.ui-empty__text{max-width:320px;font:400 13px/18px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-empty__icon--success{background:var(--ds-success-bg);color:var(--ds-success-fg)}
.ui-empty__action{margin-top:10px}
.ui-tip{display:inline-flex;padding:6px 8px;border-radius:var(--ds-radius-xs);background:var(--ds-brand-ink);color:var(--ds-on-brand);font:500 12px/16px var(--ds-font-sans)}
.ui-menu{display:flex;flex-direction:column;width:232px;padding:4px;border:1px solid var(--ds-border-strong);border-radius:var(--ds-radius-sm);background:var(--ds-surface);box-shadow:var(--ds-shadow-menu)}
.ui-menu button{display:flex;align-items:center;gap:10px;height:36px;padding:0 10px;border:0;border-radius:var(--ds-radius-xs);background:transparent;font:400 14px/20px var(--ds-font-sans);color:var(--ds-text-strong);text-align:left;cursor:pointer}
.ui-menu button svg{color:var(--ds-text-muted)}
.ui-menu button:hover,.ui-menu button.is-hover{background:var(--ds-surface-3)}
.ui-menu button.danger,.ui-menu button.danger svg{color:var(--ds-danger-fg)}
.ui-menu hr{height:1px;margin:4px 0;border:0;background:var(--ds-border)}

/* ---------- Оболочка ---------- */
.ui-app{display:flex;background:var(--ds-page);overflow:hidden}
.ui-side{display:flex;flex-direction:column;width:248px;flex:none;height:100%;background:var(--ds-surface);border-right:1px solid var(--ds-border)}
.ui-side__brand{display:flex;align-items:center;gap:10px;height:64px;padding:0 20px;font:700 15px/20px var(--ds-font-sans);letter-spacing:.01em;color:var(--ds-text-strong)}
.ui-logo{display:grid;place-items:center;width:28px;height:28px;border-radius:var(--ds-radius-xs);background:var(--ds-brand);color:var(--ds-on-brand);font:800 13px/1 var(--ds-font-sans);flex:none}
.ui-side__switch{padding:0 16px 8px}
.ui-side__switch .ui-seg{display:flex}
.ui-side__switch .ui-seg button,.ui-side__switch .ui-seg a{flex:1;justify-content:center;height:32px}
.ui-side__switch .ui-seg .is-active{background:var(--ds-brand);color:var(--ds-on-brand);box-shadow:0 1px 2px rgba(46,26,63,.24)}
.ui-side__nav{display:flex;flex-direction:column;gap:2px;padding:8px 12px;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.ui-side__nav > *{flex:none}
.ui-side__brand,.ui-side__foot{flex:none}
.ui-side__group{padding:16px 10px 6px;font:500 12px/16px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-nav{text-decoration:none;display:flex;align-items:center;gap:10px;height:36px;padding:0 8px 0 10px;border-radius:var(--ds-radius-sm);font:500 14px/20px var(--ds-font-sans);color:var(--ds-text)}
.ui-nav:hover{text-decoration:none;background:var(--ds-surface-3)}
.ui-nav svg{color:var(--ds-text-muted);flex:none}
.ui-nav .ui-count{margin-left:auto}
.ui-nav.is-active{background:var(--ds-surface-2);color:var(--ds-text-strong);font-weight:600}
.ui-nav.is-active svg{color:var(--ds-brand)}
.ui-side__foot{display:flex;align-items:center;gap:10px;padding:12px 12px 12px 20px;border-top:1px solid var(--ds-border)}
.ui-side__user{display:flex;flex-direction:column;min-width:0;flex:1}
.ui-side__name{font:600 14px/20px var(--ds-font-sans);color:var(--ds-text-strong)}
.ui-side__role{font:400 12px/16px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-avatar{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--ds-surface-2);color:var(--ds-brand);font:600 12px/1 var(--ds-font-sans);flex:none}
.ui-main{flex:1;min-width:0;display:flex;flex-direction:column}
.ui-page{display:flex;flex-direction:column;gap:24px;padding:28px 32px 40px;min-width:0}
.ui-back{text-decoration:none;display:inline-flex;align-items:center;gap:6px;font:500 13px/18px var(--ds-font-sans);color:var(--ds-link)}
.ui-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:16px 24px}
.ui-head__text{display:flex;flex-direction:column;gap:4px;min-width:0}
.ui-title{margin:0;display:flex;align-items:center;gap:12px;font:700 24px/32px var(--ds-font-sans);letter-spacing:-.02em;color:var(--ds-text-strong)}
.ui-meta{font:400 13px/18px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;flex:none;max-width:100%}
.ui-ctx{display:flex;flex-direction:column;gap:12px;padding:20px 32px 0;background:var(--ds-surface);border-bottom:1px solid var(--ds-border)}
.ui-ctx__tabs{border-bottom:0}
.ui-ctx__name{display:flex;align-items:center;flex-wrap:wrap;gap:10px;font:600 18px/26px var(--ds-font-sans);letter-spacing:-.01em;color:var(--ds-text-strong)}

/* ---------- Раскладка экрана ----------
   Экран на «Пульте» раскладывает детали только этими примитивами. Число колонок
   и шаг задаются переменными: style="--cols: 3" — единственный допустимый style=. */
.ui-stack{display:flex;flex-direction:column;gap:var(--gap,24px);min-width:0}
.ui-grid > *{min-width:0}
.ui-grid{display:grid;grid-template-columns:repeat(var(--cols,3),minmax(0,1fr));gap:var(--gap,16px);min-width:0}
.ui-cluster{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap,8px)}
.ui-row--lg{min-height:72px}
.ui-row__icon{display:flex;color:var(--ds-text-muted);flex:none}
.ui-row__title--lead{font-weight:500}
.ui-row__title--lead b{font-weight:700}
.ui-row__chev{display:flex;color:var(--ds-text-subtle);flex:none}
button.ui-row{width:100%;border:0;background:transparent;text-align:left;cursor:pointer;font:inherit;color:inherit}
.ui-form-inline{margin:0}
.ui-skel-lines{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%;max-width:280px;margin:6px 0}
.ui-skel-lines span{display:block;height:12px;border-radius:var(--ds-radius-pill);background:var(--ds-surface-3);animation:ui-breathe 1.4s var(--ds-ease) infinite}
.ui-skel-lines span:nth-child(1){width:100%}
.ui-skel-lines span:nth-child(2){width:78%}
.ui-skel-lines span:nth-child(3){width:56%}

/* ---------- Окна, меню, всплывающие, раскрывашки (поведение — pult.js) ---------- */
dialog.ui-dialog-box{padding:0;border:0;background:transparent;max-width:calc(100vw - 32px);overflow:visible}
dialog.ui-dialog-box::backdrop{background:rgba(36,26,43,.40)}
/* Просмотр фото во весь экран (оболочка маркетинга: ссылки .js-lightbox). Шахматка показывает прозрачность макета. */
.ui-lightbox{position:fixed;inset:0;z-index:2000;display:none;align-items:center;justify-content:center;padding:24px;background:rgba(36,26,43,.82)}
.ui-lightbox.is-open{display:flex;animation:ui-fade var(--ds-dur-base) var(--ds-ease)}
.ui-lightbox img{max-width:min(96vw,1100px);max-height:90vh;border-radius:var(--ds-radius-sm);box-shadow:var(--ds-shadow-dialog);background-color:var(--ds-surface);background-image:conic-gradient(var(--ds-border-strong) 25%,transparent 0 50%,var(--ds-border-strong) 0 75%,transparent 0);background-size:12px 12px}
.ui-lightbox__close{position:absolute;top:16px;right:16px;width:40px;height:40px;border:0;border-radius:var(--ds-radius-pill);background:var(--ds-surface);color:var(--ds-text-strong);font-size:22px;line-height:1;cursor:pointer}
dialog.ui-dialog-box.is-in .ui-dialog{animation:ui-dialog-in var(--ds-dur-slow) var(--ds-ease) both}
dialog.ui-dialog-box.is-out .ui-dialog{animation:ui-dialog-out var(--ds-dur-base) var(--ds-ease-exit) both}
.ui-dialog--wide{width:720px;max-width:100%}
.ui-dialog__head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.ui-dialog__text{margin:0;font:400 14px/20px var(--ds-font-sans);color:var(--ds-text)}
.ui-dialog__body{display:flex;flex-direction:column;gap:16px;max-height:70vh;overflow:auto}
.ui-menu-wrap{position:relative;display:inline-flex}
.ui-menu-wrap > .ui-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:300}
.ui-menu[hidden]{display:none}
.ui-menu a{display:flex;align-items:center;gap:10px;height:36px;padding:0 10px;border-radius:var(--ds-radius-xs);font:400 14px/20px var(--ds-font-sans);color:var(--ds-text-strong);text-decoration:none}
.ui-menu a:hover,.ui-menu button:hover{background:var(--ds-surface-3);text-decoration:none}
.ui-menu form{margin:0}
.ui-menu form button{width:100%}
.ui-toasts{position:fixed;right:24px;bottom:24px;z-index:500;display:flex;flex-direction:column;gap:8px}
.ui-disclosure{display:flex;align-items:center;gap:8px;padding:0;border:0;background:transparent;font:600 14px/20px var(--ds-font-sans);color:var(--ds-text-strong);cursor:pointer}
.ui-disclosure svg{transition:transform var(--ds-dur-base) var(--ds-ease)}
.ui-disclosure[aria-expanded="true"] svg{transform:rotate(180deg)}
.pult [hidden],.ui-menu[hidden],dialog.ui-dialog-box:not([open]){display:none}
.ui-pager a{text-decoration:none}
.ui-text{margin:0;font:400 14px/20px var(--ds-font-sans);color:var(--ds-text)}
.ui-text--muted{color:var(--ds-text-muted)}
.ui-text--small{font-size:13px;line-height:18px}
.ui-h2{margin:0;font:600 18px/24px var(--ds-font-sans);color:var(--ds-text-strong)}
.ui-code{font:400 13px/20px var(--ds-font-mono);background:var(--ds-surface-3);border-radius:var(--ds-radius-xs);padding:2px 6px;color:var(--ds-text-strong)}
.ui-pre{margin:0;padding:12px 14px;border-radius:var(--ds-radius-sm);background:var(--ds-surface-3);font:400 12px/18px var(--ds-font-mono);color:var(--ds-text-strong);white-space:pre-wrap;word-break:break-word;max-height:480px;overflow:auto}
.ui-scroll-x{overflow-x:auto;min-width:0}
.ui-img{display:block;max-width:100%;height:auto;border-radius:var(--ds-radius-sm);border:1px solid var(--ds-border)}
.ui-split{display:grid;grid-template-columns:minmax(0,1fr) var(--side,360px);gap:24px;align-items:start}
.ui-form{display:flex;flex-direction:column;gap:16px;max-width:var(--w,640px)}
.ui-form__foot{display:flex;flex-wrap:wrap;gap:8px;padding-top:4px}
.ui-inline-form{display:inline-flex;margin:0}
.ui-table--compact td{height:36px;padding:6px 12px}
.ui-table--compact th{padding:0 12px}
.ui-bar-track{display:block;height:8px;border-radius:var(--ds-radius-pill);background:var(--ds-surface-3);overflow:hidden}
.ui-bar-track > span{display:block;height:100%;width:calc(var(--v,0) * 1%);border-radius:inherit;background:var(--ds-chart-1)}
@media (max-width: 767px){.ui-split{grid-template-columns:1fr}.ui-grid{grid-template-columns:1fr}}

/* ---------- Оболочка панели: меню слева, мобильная шапка ---------- */
/* Место под полосу прокрутки занято всегда: при переходе с короткой страницы на длинную содержимое не сдвигается вбок. */
html{scrollbar-gutter:stable}
body:has(> .ui-shell){margin:0;background:var(--ds-page)}
.ui-shell{display:flex;min-height:100vh;background:var(--ds-page)}
.ui-shell > .ui-side{position:sticky;top:0;height:100vh;overflow:hidden}
.ui-shell__main{flex:1;min-width:0;display:flex;flex-direction:column}
.ui-shell__content{padding:28px 32px 48px;min-width:0}
.ui-topbar{display:none}
.ui-side-scrim{display:none}
.ui-skip{position:absolute;left:-9999px;top:8px;z-index:600;padding:8px 12px;border-radius:var(--ds-radius-sm);background:var(--ds-surface);color:var(--ds-link)}
.ui-skip:focus{left:8px}
.ui-side__close{display:none}
.ui-link-plain{color:inherit;text-decoration:none}
.ui-link-plain:hover{text-decoration:none}
.ui-ctx__sub{padding:0 0 12px}

.ui-season{margin-bottom:20px}
@media (max-width: 991px){
  .ui-shell{flex-direction:column}
  .ui-head{flex-wrap:wrap}
  .ui-head .ui-actions{flex:1 1 100%;flex-wrap:wrap}
  .ui-section__head{flex-wrap:wrap}
  .ui-section__head .ui-actions{flex-wrap:wrap}
  .ui-ctx .ui-select{width:100%}
  .ui-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:0;z-index:200;height:56px;padding:0 12px 0 16px;background:var(--ds-surface);border-bottom:1px solid var(--ds-border);font:700 15px/20px var(--ds-font-sans);color:var(--ds-text-strong)}
  .ui-shell > .ui-side{position:fixed;left:0;top:0;bottom:0;z-index:400;transform:translateX(-100%);transition:transform var(--ds-dur-base) var(--ds-ease)}
  .ui-shell > .ui-side.open{transform:none;box-shadow:var(--ds-shadow-dialog)}
  .ui-side-scrim.open{display:block;position:fixed;inset:0;z-index:350;background:rgba(36,26,43,.40)}
  .ui-side__close{display:inline-flex;margin-left:auto}
  .ui-shell__content{padding:20px 16px 40px}
  .ui-ctx{padding:16px 16px 0}
  .ui-ctx .ui-tabs{overflow-x:auto}
}

/* ---------- Мелкие детали 1.5 ---------- */
.ui-text--pre{white-space:pre-wrap;word-break:break-word}
.ui-text--danger{color:var(--ds-danger-fg)}
.ui-text--warning{color:var(--ds-warning-fg)}
.ui-text--success{color:var(--ds-success-fg)}
.ui-affix input.mono,.ui-input.mono{font-family:var(--ds-font-mono)}
.ui-input--code{font:400 13px/20px var(--ds-font-mono);min-height:320px}
.ui-split--left{grid-template-columns:var(--side,360px) minmax(0,1fr)}
.ui-center{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--ds-page)}
.ui-center > *{width:100%;max-width:var(--w,400px)}
.ui-menu.is-floating{position:fixed;z-index:450}

/* ---------- Движение ----------
   120 — отклик (наведение, нажатие, фокус) · 200 — смена состояния (переключатель,
   вкладка, меню) · 320 — появление крупного (окно, строка, всплывающее) ·
   700 — данные (график рисуется, число перекатывается). Уходит быстрее, чем приходит.
   Пружина — только когда прибавилось. */
:root{
  --ds-dur-fast:120ms; --ds-dur-base:200ms; --ds-dur-slow:320ms; --ds-dur-data:700ms;
  --ds-ease-exit:cubic-bezier(.4,0,1,1); --ds-spring:cubic-bezier(.34,1.4,.64,1);
}
.ui-btn{transition:background-color var(--ds-dur-fast) var(--ds-ease),border-color var(--ds-dur-fast) var(--ds-ease),color var(--ds-dur-fast) var(--ds-ease),transform var(--ds-dur-fast) var(--ds-ease)}
.ui-btn:active,.ui-btn.is-pressed{transform:scale(.98)}
.ui-input,.ui-affix{transition:border-color var(--ds-dur-fast) var(--ds-ease),box-shadow var(--ds-dur-fast) var(--ds-ease)}
.ui-nav,.ui-row,.ui-table td,.ui-menu button,.ui-tab,.ui-seg button,.ui-seg a,.ui-legend button{transition:background-color var(--ds-dur-fast) var(--ds-ease),color var(--ds-dur-fast) var(--ds-ease),opacity var(--ds-dur-fast) var(--ds-ease)}
.ui-badge{transition:background-color var(--ds-dur-base) var(--ds-ease),color var(--ds-dur-base) var(--ds-ease)}
.ui-switch{transition:background-color var(--ds-dur-base) var(--ds-ease)}
.ui-switch span{transition:transform var(--ds-dur-base) var(--ds-ease)}
.ui-switch.is-on span{transform:translateX(16px)}
@keyframes ui-rise{ from{opacity:0;transform:translateY(6px)} to{opacity:1;transform:none} }
@keyframes ui-fade{ from{opacity:0} to{opacity:1} }
@keyframes ui-pop{ from{opacity:0;transform:translateY(-4px) scale(.98)} to{opacity:1;transform:none} }
@keyframes ui-dialog-in{ from{opacity:0;transform:scale(.96)} to{opacity:1;transform:none} }
@keyframes ui-dialog-out{ to{opacity:0;transform:scale(.98)} }
@keyframes ui-toast-in{ from{opacity:0;transform:translateY(12px)} to{opacity:1;transform:none} }
@keyframes ui-toast-out{ to{opacity:0;transform:translateY(8px)} }
@keyframes ui-bump{ 0%{transform:scale(1)} 45%{transform:scale(1.22)} 100%{transform:scale(1)} }
@keyframes ui-breathe{ 0%,100%{opacity:1} 50%{opacity:.45} }
@keyframes ui-live{ from{box-shadow:0 0 0 0 rgba(47,107,79,.45)} to{box-shadow:0 0 0 8px rgba(47,107,79,0)} }
@keyframes ui-collapse{ from{max-height:88px;opacity:1} to{max-height:0;opacity:0;padding-top:0;padding-bottom:0;transform:translateX(12px)} }
@keyframes ui-flash-a{ from{background-color:var(--ds-surface-2);opacity:0;transform:translateY(-6px)} 30%{opacity:1;transform:none} to{background-color:rgba(241,231,242,0)} }
@keyframes ui-flash-b{ from{background-color:var(--ds-surface-2);opacity:0;transform:translateY(-6px)} 30%{opacity:1;transform:none} to{background-color:rgba(241,231,242,0)} }
@keyframes ui-shrink{ from{transform:scaleX(1)} to{transform:scaleX(0)} }
@keyframes ui-check{ from{stroke-dashoffset:24} to{stroke-dashoffset:0} }
.ui-enter{animation:ui-rise var(--ds-dur-slow) var(--ds-ease) both}
.ui-count.is-bump,.ui-count.is-bump-b{animation:ui-bump var(--ds-dur-slow) var(--ds-spring)}
.ui-skel{animation:ui-breathe 1.4s var(--ds-ease) infinite}
.ui-live{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ds-success-solid);animation:ui-live 1.6s var(--ds-ease) infinite;flex:none}
.ui-menu.is-open{animation:ui-pop var(--ds-dur-base) var(--ds-ease) both;transform-origin:top right}
.ui-dialog.is-in{animation:ui-dialog-in var(--ds-dur-slow) var(--ds-ease) both}
.ui-dialog.is-out{animation:ui-dialog-out var(--ds-dur-base) var(--ds-ease-exit) both}
.ui-scrim.is-in{animation:ui-fade var(--ds-dur-base) var(--ds-ease) both}
.ui-scrim.is-out{animation:ui-fade var(--ds-dur-base) var(--ds-ease-exit) reverse both}
.ui-toast.is-in{animation:ui-toast-in var(--ds-dur-slow) var(--ds-ease) both}
.ui-toast.is-out{animation:ui-toast-out var(--ds-dur-base) var(--ds-ease-exit) both}
.ui-row.is-leaving{animation:ui-collapse var(--ds-dur-slow) var(--ds-ease-exit) forwards;overflow:hidden}
.ui-flash-a{animation:ui-flash-a 1.6s var(--ds-ease) both}
.ui-flash-b{animation:ui-flash-b 1.6s var(--ds-ease) both}
.ui-draw{clip-path:inset(0 100% 0 0);transition:clip-path var(--ds-dur-data) var(--ds-ease),opacity var(--ds-dur-base) var(--ds-ease)}
.ui-draw.is-drawn{clip-path:inset(0 0 0 0)}
.ui-draw.is-reset{transition:none}
.ui-draw.is-stale{opacity:.35}
.ui-checkmark path{stroke-dasharray:24;animation:ui-check var(--ds-dur-slow) var(--ds-ease) both}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:1ms !important;animation-iteration-count:1 !important;transition-duration:1ms !important}
}

/* ---------- Графики ----------
   Цвета рядов проверены на различимость, в том числе при протанопии и дейтеранопии
   (ΔE ≥ 12,5 между соседями, контраст ≥ 3 : 1 на белом). Ряды берут цвета по порядку,
   без повторов; четвёртого ряда нет — «прочее» или отдельный график. Одна ось.
   Линия 2 px, столбик до 24 px со скруглением 4 px на конце, точка 8 px с белым кольцом.
   Сетка и оси — волосяные сплошные линии. Числа и подписи — цветом текста, не ряда. */
:root{
  --ds-chart-1:#7B4FA3; --ds-chart-2:#1B9E8B; --ds-chart-3:#B5651D; --ds-chart-muted:#CFC6D3;
  --ds-chart-grid:#EFE3EA; --ds-chart-axis:#E5D8E8;
  --ds-seq-1:#F4EDF7; --ds-seq-2:#DCC8E6; --ds-seq-3:#B596D0; --ds-seq-4:#9A74BD;
  --ds-seq-5:#7B4FA3; --ds-seq-6:#58347A; --ds-seq-7:#3F2356;
}
.ui-chart{position:relative}
.ui-chart svg{display:block;overflow:visible}
.ui-chart__grid{position:absolute;left:0;right:0;height:1px;background:var(--ds-chart-grid)}
.ui-chart__base{position:absolute;left:0;right:0;height:1px;background:var(--ds-chart-axis)}
.ui-chart__tick{position:absolute;font:500 12px/16px var(--ds-font-sans);color:var(--ds-text-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.ui-chart__cross{position:absolute;top:0;width:1px;background:var(--ds-text-subtle);pointer-events:none}
.ui-chart__dot{position:absolute;width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 2px var(--ds-surface);transform:translate(-50%,-50%);pointer-events:none}
.ui-chart__tip{position:absolute;display:flex;flex-direction:column;gap:6px;min-width:176px;padding:10px 12px;border:1px solid var(--ds-border-strong);border-radius:var(--ds-radius-sm);background:var(--ds-surface);box-shadow:var(--ds-shadow-menu);pointer-events:none;z-index:2}
.ui-chart__tip-head{font:500 12px/16px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-chart__tip-row{display:flex;align-items:center;gap:8px;font:400 13px/18px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-chart__tip-row b{min-width:56px;font:600 14px/20px var(--ds-font-sans);color:var(--ds-text-strong);font-variant-numeric:tabular-nums}
.ui-key{width:14px;height:2px;border-radius:1px;flex:none}
.ui-swatch{width:10px;height:10px;border-radius:3px;flex:none}
.ui-legend{display:flex;gap:4px;flex-wrap:wrap}
.ui-legend button{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 10px;border:0;border-radius:var(--ds-radius-xs);background:transparent;font:500 13px/18px var(--ds-font-sans);color:var(--ds-text);cursor:pointer}
.ui-legend button:hover{background:var(--ds-surface-3)}
.ui-legend button.is-off{color:var(--ds-text-subtle)}
.ui-legend button.is-off .ui-key{opacity:.3}
.ui-bar{height:16px;border-radius:0 4px 4px 0;background:var(--ds-chart-1);transition:width var(--ds-dur-data) var(--ds-ease),opacity var(--ds-dur-fast) var(--ds-ease);flex:none}


/* ---------- Детали 1.8: переписка, прокрутка, боковая панель, месяц, «один из», поля в таблицах ---------- */
/* Область прокрутки внутри раздела: высота — --h (по умолчанию 70 % окна). */
.ui-scroll{overflow:auto;max-height:var(--h,70vh);overscroll-behavior:contain}
/* Переписка: участник слева, мы справа. ИИ — фиолетовым (работает сам), человек — светлым. Служебное — по центру без пузыря. */
.ui-chat{display:flex;flex-direction:column;gap:8px;padding:16px 20px}
.ui-msg{align-self:flex-start;max-width:78%;display:flex;flex-direction:column;gap:4px;padding:10px 14px;border-radius:14px 14px 14px 4px;background:var(--ds-surface-3);color:var(--ds-text-strong);font:400 14px/20px var(--ds-font-sans);overflow-wrap:anywhere}
.ui-msg--out{align-self:flex-end;border-radius:14px 14px 4px 14px;background:var(--ds-surface-2);box-shadow:inset 0 0 0 1px var(--ds-border-accent)}
.ui-msg--ai{align-self:flex-end;border-radius:14px 14px 4px 14px;background:var(--ds-info-bg);box-shadow:inset 0 0 0 1px var(--ds-info-border)}
.ui-msg--note{align-self:center;max-width:90%;padding:4px 8px;background:transparent;box-shadow:none;color:var(--ds-text-muted);font-size:13px;line-height:18px;text-align:center}
.ui-msg__head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font:500 12px/16px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-msg__head b{font-weight:600;color:var(--ds-text-strong)}
.ui-msg__body{white-space:pre-wrap}
.ui-msg__body img{display:block;max-width:100%;border-radius:var(--ds-radius-sm)}
.ui-msg__foot{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin:2px -6px -4px}
/* Боковая панель: то же окно (ui.dialog side=True), выезжает справа во всю высоту. */
dialog.ui-dialog-box--side{margin:0 0 0 auto;height:100vh;max-height:100vh;max-width:100vw}
dialog.ui-dialog-box--side .ui-dialog{width:min(440px,100vw);height:100%;border-radius:var(--ds-radius-lg) 0 0 var(--ds-radius-lg)}
dialog.ui-dialog-box--side .ui-dialog__body{flex:1;max-height:none}
dialog.ui-dialog-box--side .ui-dialog--wide{width:min(640px,100vw)}
dialog.ui-dialog-box--side.is-in .ui-dialog{animation:ui-side-in var(--ds-dur-slow) var(--ds-ease) both}
dialog.ui-dialog-box--side.is-out .ui-dialog{animation:ui-side-out var(--ds-dur-base) var(--ds-ease-exit) both}
@keyframes ui-side-in{ from{transform:translateX(24px);opacity:0} to{transform:none;opacity:1} }
@keyframes ui-side-out{ from{transform:none;opacity:1} to{transform:translateX(24px);opacity:0} }
/* Месяц: семь колонок с понедельника, события — метками-ссылками в дне. */
.ui-cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--ds-border)}
.ui-cal__wd{padding:8px 10px;font:500 12px/16px var(--ds-font-sans);color:var(--ds-text-muted);border-bottom:1px solid var(--ds-border-strong)}
.ui-cal__day{display:flex;flex-direction:column;gap:4px;min-height:104px;padding:8px;border-right:1px solid var(--ds-border);border-bottom:1px solid var(--ds-border);min-width:0}
.ui-cal__day:nth-child(7n){border-right:0}
.ui-cal__day.is-muted{background:var(--ds-page)}
.ui-cal__day.is-muted .ui-cal__num{color:var(--ds-text-subtle)}
.ui-cal__num{font:500 13px/18px var(--ds-font-sans);color:var(--ds-text-muted);font-variant-numeric:tabular-nums}
.ui-cal__day.is-today .ui-cal__num{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--ds-radius-pill);background:var(--ds-brand);color:var(--ds-on-brand);font-weight:600}
.ui-cal__item{display:block;padding:2px 6px;border-radius:var(--ds-radius-xs);background:var(--ds-surface-3);font:500 12px/16px var(--ds-font-sans);color:var(--ds-text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:none}
.ui-cal__item:hover{background:var(--ds-surface-2);text-decoration:none}
.ui-cal__item.is-warning{background:var(--ds-warning-bg);color:var(--ds-warning-fg)}
.ui-cal__item.is-success{background:var(--ds-success-bg);color:var(--ds-success-fg)}
.ui-cal__item.is-info{background:var(--ds-info-bg);color:var(--ds-info-fg)}
.ui-cal__item.is-neutral{background:var(--ds-neutral-bg);color:var(--ds-neutral-fg)}
.ui-cal__item.is-danger{background:var(--ds-danger-bg);color:var(--ds-danger-fg)}
.ui-cal__more{font:400 12px/16px var(--ds-font-sans);color:var(--ds-text-muted)}
@media (max-width: 767px){.ui-cal{grid-template-columns:1fr}.ui-cal__wd{display:none}.ui-cal__day{min-height:0;border-right:0}.ui-cal__day.is-muted{display:none}}
/* «Один из»: группа кругов с подписью; --row — в строку. */
.ui-radios{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;border:0;min-width:0}
.ui-radios legend{padding:0;margin:0 0 6px;font:500 13px/18px var(--ds-font-sans);color:var(--ds-text-strong)}
.ui-radios--row{flex-direction:row;flex-wrap:wrap;gap:8px 20px}
.ui-radios--row legend{width:100%}
/* Поля в таблицах: пониже, и не уже --w (по умолчанию 120 px), чтобы колонка их не сжимала. */
.ui-input--s{height:32px;padding:0 10px;font-size:13px}
.ui-table .ui-input,.ui-table .ui-select,.ui-table .ui-affix{min-width:var(--w,120px)}
.ui-table td .ui-select .ui-input{height:32px;font-size:13px}

/* ---------- Выбор из многих (1.10): кнопка со значением и список с поиском в меню ---------- */
.ui-picker__btn{display:flex;align-items:center;gap:10px;width:320px;max-width:100%;height:48px;padding:0 12px 0 14px;border:1px solid var(--ds-border-accent);border-radius:var(--ds-radius-sm);background:var(--ds-surface-2);cursor:pointer;text-align:left;font-family:var(--ds-font-sans)}
.ui-picker__btn:hover{border-color:var(--ds-control-hover)}
.ui-picker__btn:focus-visible{outline:2px solid var(--ds-focus-border);outline-offset:2px}
.ui-picker__btn[aria-expanded="true"]{border-color:var(--ds-focus-border);box-shadow:var(--ds-focus-ring)}
.ui-picker__text{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}
.ui-picker__label{font:500 11px/14px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-picker__value{font:600 14px/18px var(--ds-font-sans);color:var(--ds-text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ui-picker__btn svg{flex:none;color:var(--ds-text-strong);transition:transform var(--ds-dur-base) var(--ds-ease)}
.ui-picker__btn[aria-expanded="true"] svg{transform:rotate(180deg)}
.ui-menu--list{width:380px;max-width:calc(100vw - 16px);max-height:min(520px,70vh);overflow:auto;padding:6px}
.ui-menu__search{position:sticky;top:-6px;z-index:1;margin:-6px -6px 4px;padding:8px;background:var(--ds-surface);border-bottom:1px solid var(--ds-border)}
.ui-menu__group{padding:10px 10px 4px;font:500 12px/16px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-menu--list button{height:auto;min-height:40px;padding:8px 10px;text-align:left}
.ui-menu--list button > span:first-of-type{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ui-menu--list button .ui-badge{flex:none}
.ui-menu--list button.is-current{background:var(--ds-surface-2);font-weight:600}
.ui-menu--list button.is-current svg{color:var(--ds-brand)}
.ui-menu--list button:focus-visible{outline:2px solid var(--ds-focus-border);outline-offset:-2px}
.ui-menu__empty{padding:12px 10px;font:400 13px/18px var(--ds-font-sans);color:var(--ds-text-muted)}

/* ---------- Родные элементы браузера на языке (1.11) ----------
   Флажки, круги, файлы, числа, даты, прокрутка, выделение — чтобы ни одна деталь не выглядела «системной».
   Выпадающие списки и календарь дат рисует pult.js поверх настоящих <select> и <input type=date>:
   форма, значения и скрипты экранов работают с ними как раньше. Отключить на месте — атрибут data-ui-native. */
input[type=checkbox]:not([data-ui-native]),input[type=radio]:not([data-ui-native]){appearance:none;-webkit-appearance:none;flex:none;display:inline-grid;place-items:center;width:18px;height:18px;margin:1px 0 0;border:1.5px solid var(--ds-control-border);background:var(--ds-surface);cursor:pointer;transition:background-color var(--ds-dur-fast) var(--ds-ease),border-color var(--ds-dur-fast) var(--ds-ease),box-shadow var(--ds-dur-fast) var(--ds-ease)}
input[type=checkbox]:not([data-ui-native]){border-radius:5px}
input[type=radio]:not([data-ui-native]){border-radius:50%}
input[type=checkbox]:not([data-ui-native]):hover,input[type=radio]:not([data-ui-native]):hover{border-color:var(--ds-control-hover)}
input[type=checkbox]:not([data-ui-native]):focus-visible,input[type=radio]:not([data-ui-native]):focus-visible{outline:none;box-shadow:var(--ds-focus-ring);border-color:var(--ds-focus-border)}
input[type=checkbox]:not([data-ui-native]):checked{background:var(--ds-brand) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/12px no-repeat;border-color:var(--ds-brand)}
input[type=checkbox]:not([data-ui-native]):indeterminate{background:var(--ds-brand) linear-gradient(var(--ds-on-brand),var(--ds-on-brand)) center/9px 2px no-repeat;border-color:var(--ds-brand)}
input[type=radio]:not([data-ui-native]):checked{border:5px solid var(--ds-brand)}
input[type=checkbox]:disabled,input[type=radio]:disabled{opacity:.45;cursor:not-allowed}
.ui-table input[type=checkbox]{width:18px;height:18px;margin:0;display:inline-grid}
.ui-check input{margin-top:1px}
/* Файл: кнопка «Выбрать файл» — обычная кнопка языка, имя файла — приглушённо. */
input[type=file]{font:400 13px/18px var(--ds-font-sans);color:var(--ds-text-muted);max-width:100%}
input[type=file].ui-input{height:auto;padding:6px;border-style:dashed}
input[type=file]::file-selector-button{margin-right:12px;height:32px;padding:0 12px;border:1px solid var(--ds-control-border);border-radius:var(--ds-radius-xs);background:var(--ds-surface);font:500 13px/18px var(--ds-font-sans);color:var(--ds-text-strong);cursor:pointer;transition:background-color var(--ds-dur-fast) var(--ds-ease)}
input[type=file]::file-selector-button:hover{background:var(--ds-surface-3);border-color:var(--ds-control-hover)}
/* Числа — без стрелок браузера: число вводят с клавиатуры. */
input[type=number]{-moz-appearance:textfield;appearance:textfield}
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
/* Даты и время: значок календаря — цветом языка; сам календарь для type=date рисует pult.js. */
input[type=date],input[type=time],input[type=datetime-local]{font-variant-numeric:tabular-nums;min-width:0}
input[type=date]::-webkit-calendar-picker-indicator,input[type=time]::-webkit-calendar-picker-indicator,input[type=datetime-local]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.55;transition:opacity var(--ds-dur-fast) var(--ds-ease)}
input[type=date]::-webkit-calendar-picker-indicator:hover,input[type=time]::-webkit-calendar-picker-indicator:hover,input[type=datetime-local]::-webkit-calendar-picker-indicator:hover{opacity:1}
input[type=date].is-empty::-webkit-datetime-edit{color:var(--ds-text-subtle)}
.ui-date-on::-webkit-calendar-picker-indicator{display:none}
/* Многострочное поле: растёт вниз, угол растяжки не спорит с рамкой. */
textarea{font:inherit;line-height:20px}
textarea.ui-input{scrollbar-width:thin}
/* Выделение текста, курсор ввода, автозаполнение браузера. */
.pult ::selection,.ui-shell ::selection{background:var(--ds-info-bg);color:var(--ds-text-strong)}
.ui-input,.ui-affix input,textarea{caret-color:var(--ds-brand)}
input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus{-webkit-text-fill-color:var(--ds-text-strong);-webkit-box-shadow:0 0 0 40px var(--ds-surface-2) inset;transition:background-color 9999s}
/* Прокрутка: тонкая, цветом рамок. */
.ui-shell,.ui-scroll,.ui-menu,.ui-dialog__body,.ui-scroll-x{scrollbar-width:thin;scrollbar-color:var(--ds-border-accent) transparent}
/* Выпадающий список языка (pult.js заменяет им вид <select>; сам <select> остаётся в форме). */
.ui-select.is-enhanced select{opacity:0;pointer-events:none}
.ui-select.is-enhanced > svg{display:none}
.ui-select__btn{position:absolute;inset:0;display:flex;align-items:center;gap:8px;width:100%;height:100%;text-align:left;cursor:pointer;padding-right:10px}
.ui-select__btn > span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ui-select__btn > span.is-placeholder{color:var(--ds-text-subtle)}
.ui-select__btn svg{flex:none;color:var(--ds-text);transition:transform var(--ds-dur-base) var(--ds-ease)}
.ui-select__btn[aria-expanded="true"]{border-color:var(--ds-focus-border);box-shadow:var(--ds-focus-ring)}
.ui-select__btn[aria-expanded="true"] svg{transform:rotate(180deg)}
.ui-select__btn:disabled{background:var(--ds-surface-3);border-color:var(--ds-surface-3);color:var(--ds-text-subtle);cursor:not-allowed}
.ui-select--s .ui-select__btn{font-size:13px;line-height:18px}
.ui-menu--list.ui-menu--options{width:auto}
.ui-menu--options button[aria-disabled="true"]{color:var(--ds-text-subtle);cursor:not-allowed}
/* Календарь даты (pult.js): месяц, стрелки, «Сегодня», «Очистить». */
.ui-datepick{width:288px;padding:12px}
.ui-datepick__head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font:600 14px/20px var(--ds-font-sans);color:var(--ds-text-strong)}
.ui-datepick__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.ui-datepick__wd{padding:4px 0;text-align:center;font:500 11px/14px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-datepick__grid button{height:34px;padding:0;justify-content:center;border-radius:var(--ds-radius-xs);font:400 13px/18px var(--ds-font-sans);font-variant-numeric:tabular-nums}
.ui-datepick__grid button.is-muted{color:var(--ds-text-subtle)}
.ui-datepick__grid button.is-today{box-shadow:inset 0 0 0 1px var(--ds-border-accent);font-weight:600}
.ui-datepick__grid button.is-current{background:var(--ds-brand);color:var(--ds-on-brand);font-weight:600}
.ui-datepick__foot{display:flex;justify-content:space-between;margin-top:8px;padding-top:8px;border-top:1px solid var(--ds-border)}
.ui-datepick__foot button{height:32px;width:auto}
/* Группа полей (<fieldset class="ui-field">): без рамки браузера, подпись — как у поля. */
fieldset.ui-field{margin:0;padding:0;border:0;min-width:0}
fieldset.ui-field > legend{padding:0;margin:0 0 6px;float:left;width:100%}
fieldset.ui-field > legend + *{clear:both}
/* Лента в прокручиваемой колонке не сжимает свои строки: иначе длинные сообщения наезжают друг на друга. */
.ui-dialog__body > *,.ui-scroll > *,.ui-chat > *,.ui-stack > .ui-row{flex-shrink:0}
/* «Подпись — значение» в узкой колонке: подпись над значением, а не столбик по два слова. */
.ui-section__body,.ui-dialog__body{container-type:inline-size}
@container (max-width: 440px){
  .ui-dl{grid-template-columns:1fr}
  .ui-dl dt{padding-bottom:2px;border-bottom:0;font-size:13px;line-height:18px}
  .ui-dl dd{padding-top:0}
  .ui-dl dt:first-of-type{padding-top:0}
  .ui-dl dd:first-of-type{padding-top:0}
}

/* ---------- Рабочее место (1.13): разделы · список · человек · всё о нём ----------
   Экран «Поддержка» (/desk): одна очередь по всем акциям. Колонки уходят в одну на узком экране. */
.ui-desk{display:grid;grid-template-columns:320px minmax(0,1fr) 300px;grid-template-rows:auto minmax(0,1fr);height:calc(100vh - 150px);min-height:560px;border:1px solid var(--ds-border-strong);border-radius:var(--ds-radius-lg);background:var(--ds-surface);overflow:hidden}
.ui-desk__rail{grid-column:1 / -1;display:flex;align-items:center;gap:4px;padding:8px 10px;border-bottom:1px solid var(--ds-border);background:var(--ds-page);overflow-x:auto;scrollbar-width:none}
.ui-desk__rail::-webkit-scrollbar{display:none}
.ui-desk__sep{width:1px;height:20px;margin:0 6px;background:var(--ds-border-strong);flex:none}
.ui-desk__view{display:flex;align-items:center;gap:8px;height:34px;padding:0 12px;flex:none;white-space:nowrap;border:0;border-radius:var(--ds-radius-sm);background:transparent;font:500 14px/20px var(--ds-font-sans);color:var(--ds-text);cursor:pointer;text-align:left;text-decoration:none}
.ui-desk__view:hover{background:var(--ds-surface-3);text-decoration:none}
.ui-desk__view svg{flex:none;color:var(--ds-text-muted)}
.ui-desk__view.is-active{background:var(--ds-surface);color:var(--ds-text-strong);font-weight:600;box-shadow:0 1px 2px rgba(46,26,63,.12),0 0 0 1px rgba(46,26,63,.06)}
.ui-desk__view.is-active svg{color:var(--ds-brand)}
.ui-desk__view .ui-count{margin-left:2px}
.ui-desk__list{display:flex;flex-direction:column;min-width:0;border-right:1px solid var(--ds-border);overflow:hidden}
.ui-desk__head{display:flex;flex-direction:column;gap:8px;padding:12px 14px;border-bottom:1px solid var(--ds-border)}
.ui-desk__title{font:600 16px/22px var(--ds-font-sans);color:var(--ds-text-strong)}
.ui-desk__rows{flex:1;overflow:auto}
.ui-desk__row{display:flex;flex-direction:column;gap:3px;width:100%;padding:10px 14px;border:0;border-bottom:1px solid var(--ds-border);background:transparent;text-align:left;cursor:pointer;font:inherit;color:inherit}
.ui-desk__row:hover{background:var(--ds-page)}
.ui-desk__row.is-active{background:var(--ds-surface-2);box-shadow:inset 3px 0 0 var(--ds-brand)}
.ui-desk__row-top{display:flex;align-items:center;gap:8px;min-width:0}
.ui-desk__row-name{flex:1;min-width:0;font:600 14px/20px var(--ds-font-sans);color:var(--ds-text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ui-desk__row-wait{font:500 12px/16px var(--ds-font-sans);color:var(--ds-text-muted);white-space:nowrap}
.ui-desk__row-wait.is-late{color:var(--ds-danger-fg);font-weight:600}
.ui-desk__row-text{font:400 13px/18px var(--ds-font-sans);color:var(--ds-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ui-desk__row-meta{display:flex;align-items:center;gap:6px;min-width:0;font:400 12px/16px var(--ds-font-sans);color:var(--ds-text-muted);white-space:nowrap;overflow:hidden}
.ui-desk__main{display:flex;flex-direction:column;min-width:0;overflow:hidden}
.ui-desk__who{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 20px;border-bottom:1px solid var(--ds-border)}
.ui-desk__who .ui-cluster{flex-wrap:nowrap;flex:none}
.ui-desk__who .ui-stack{min-width:0}
.ui-desk__name{font:700 18px/24px var(--ds-font-sans);color:var(--ds-text-strong)}
.ui-desk__chat{flex:1;min-height:0;overflow:auto;background:var(--ds-page)}
.ui-desk__task{display:flex;flex-direction:column;gap:10px;margin:-8px 20px 0;padding:14px 16px;border-radius:var(--ds-radius-md);background:var(--ds-surface);box-shadow:0 0 0 1px var(--ds-border-accent),0 6px 18px rgba(46,26,63,.10);position:relative;z-index:1}
.ui-desk__task-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ui-desk__task-text{font:400 14px/20px var(--ds-font-sans);color:var(--ds-text);white-space:pre-wrap}
.ui-desk__preview{padding:10px 12px;border-radius:var(--ds-radius-sm);background:var(--ds-info-bg);font:400 13px/18px var(--ds-font-sans);color:var(--ds-text-strong);white-space:pre-wrap}
.ui-desk__preview-label{display:block;margin-bottom:2px;font:500 11px/14px var(--ds-font-sans);color:var(--ds-info-fg)}
.ui-desk__compose{display:flex;flex-direction:column;gap:8px;padding:12px 20px 14px;border-top:1px solid var(--ds-border)}
.ui-desk__quick{display:flex;flex-wrap:wrap;gap:6px}
.ui-desk__chip{min-height:28px;max-width:100%;padding:5px 10px;text-align:left;white-space:normal;border:1px solid var(--ds-control-border);border-radius:var(--ds-radius-pill);background:var(--ds-surface);font:500 12px/16px var(--ds-font-sans);color:var(--ds-text-strong);cursor:pointer}
.ui-desk__chip:hover{background:var(--ds-surface-3);border-color:var(--ds-control-hover)}
.ui-desk__send{display:flex;gap:8px;align-items:flex-end}
.ui-desk__send textarea{flex:1;min-height:64px;height:64px;resize:vertical}
.ui-desk__side{display:flex;flex-direction:column;gap:16px;padding:16px;border-left:1px solid var(--ds-border);overflow:auto}
.ui-desk__side-title{font:600 13px/18px var(--ds-font-sans);color:var(--ds-text-strong)}
.ui-desk__stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ui-desk__stat{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--ds-border-strong);border-radius:var(--ds-radius-sm)}
.ui-desk__stat b{font:700 20px/24px var(--ds-font-sans);color:var(--ds-text-strong);font-variant-numeric:tabular-nums}
.ui-desk__stat span{font:400 12px/16px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-desk__act{display:flex;align-items:center;gap:10px;width:100%;height:36px;padding:0 10px;border:0;border-radius:var(--ds-radius-sm);background:transparent;font:500 13px/18px var(--ds-font-sans);color:var(--ds-text-strong);cursor:pointer;text-align:left}
.ui-desk__act:hover{background:var(--ds-surface-3)}
.ui-desk__act svg{color:var(--ds-text-muted);flex:none}
.ui-desk__act.is-danger,.ui-desk__act.is-danger svg{color:var(--ds-danger-fg)}
.ui-desk__codes{display:flex;flex-direction:column;gap:4px;font:400 12px/16px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-desk__codes .mono{color:var(--ds-text-strong)}
.ui-desk__blank{flex:1;display:grid;place-items:center;padding:40px;text-align:center}
/* Уже 1280 — правая колонка не помещается: её действия открывает кнопка «Действия» в шапке человека. */
.ui-desk__side-toggle,.ui-desk__side-close{display:none}
@media (max-width: 1279px){
  .ui-desk{grid-template-columns:290px minmax(0,1fr);position:relative}
  .ui-desk__side{display:none}
  .ui-desk__side-toggle{display:inline-flex}
  .ui-desk__side-close{display:inline-flex;align-self:flex-end}
  .ui-desk.side-open .ui-desk__side{display:flex;position:absolute;z-index:5;top:51px;right:0;bottom:0;width:300px;background:var(--ds-surface);box-shadow:var(--ds-shadow-dialog)}
}
@media (max-width: 991px){
  .ui-desk{grid-template-columns:1fr;height:auto}
  .ui-desk__rows{max-height:40vh}
  .ui-desk__main{border-top:1px solid var(--ds-border-strong)}
  .ui-desk.side-open .ui-desk__side{position:static;width:auto;box-shadow:none;border-left:0;border-top:1px solid var(--ds-border-strong)}
}

/* ---------- Меню панели 1.16: группы, значки очередей, поиск ---------- */
.ui-finder{display:flex;align-items:center;gap:8px;width:100%;height:36px;margin:0 0 8px;padding:0 8px 0 10px;border:1px solid var(--ds-control-border);border-radius:var(--ds-radius-sm);background:var(--ds-surface);color:var(--ds-text-muted);font:400 14px/20px var(--ds-font-sans);cursor:pointer;text-align:left}
.ui-finder:hover{border-color:var(--ds-control-hover);background:var(--ds-surface-3)}
.ui-finder:focus-visible{outline:2px solid var(--ds-focus-border);outline-offset:2px}
.ui-finder svg{color:var(--ds-text-muted)}
.ui-kbd{margin-left:auto;padding:0 6px;border:1px solid var(--ds-border-strong);border-radius:6px;background:var(--ds-surface);color:var(--ds-text-muted);font:600 11px/16px var(--ds-font-sans)}
.ui-side__grp{display:block}
.ui-side__grp > summary{display:flex;align-items:center;justify-content:space-between;list-style:none;cursor:pointer;border-radius:var(--ds-radius-xs)}
.ui-side__grp > summary::-webkit-details-marker{display:none}
.ui-side__grp > summary:hover{color:var(--ds-text-strong)}
.ui-side__grp > summary:focus-visible{outline:2px solid var(--ds-focus-border);outline-offset:-2px}
.ui-side__grp > summary svg{transition:transform var(--ds-dur-base) var(--ds-ease)}
.ui-side__grp:not([open]) > summary svg{transform:rotate(-90deg)}
.ui-side__grp .ui-nav{margin-bottom:2px}
.ui-nav .ui-count[hidden]{display:none}
/* Поиск ⌘K: окно по центру, поле, группы результатов */
dialog.ui-palette-box{padding:0;border:0;background:transparent;width:min(608px,calc(100vw - 32px));margin:12vh auto auto;overflow:visible}
dialog.ui-palette-box::backdrop{background:rgba(36,26,43,.45)}
.ui-palette{background:var(--ds-surface);border-radius:var(--ds-radius-lg);box-shadow:var(--ds-shadow-dialog);overflow:hidden;font-family:var(--ds-font-sans);font-size:14px;line-height:20px;color:var(--ds-text)}
.ui-palette__field input::-webkit-search-cancel-button{display:none}
.ui-palette__field{display:flex;align-items:center;gap:10px;height:56px;padding:0 18px;border-bottom:1px solid var(--ds-border);color:var(--ds-link)}
.ui-palette__field input{flex:1;min-width:0;height:100%;border:0;outline:0;background:transparent;font:400 17px/24px var(--ds-font-sans);color:var(--ds-text-strong)}
.ui-palette__list{max-height:min(420px,60vh);overflow-y:auto;padding:6px 6px 10px}
.ui-palette__group{padding:10px 12px 4px;font:600 11px/16px var(--ds-font-sans);letter-spacing:.06em;text-transform:uppercase;color:var(--ds-text-subtle)}
.ui-palette__row{display:flex;align-items:center;gap:12px;min-height:44px;padding:0 12px;border-radius:var(--ds-radius-sm);color:var(--ds-text-strong);text-decoration:none;cursor:pointer}
.ui-palette__row:hover{text-decoration:none}
.ui-palette__row.is-current{background:var(--ds-surface-2)}
.ui-palette__row svg{color:var(--ds-link)}
.ui-palette__hint{margin-left:auto;font:400 12px/16px var(--ds-font-sans);color:var(--ds-text-muted)}
.ui-palette__empty{padding:18px;text-align:center;color:var(--ds-text-muted)}
@media (max-width: 640px){
  .ui-table{display:block;max-width:100%;overflow-x:auto}
}
