
/* Portal UI 2026 v3.0.0 — generated by build.py */
/* Меняйте тему здесь. Все правила ограничены контейнером .portal-ui. */
.portal-ui {
  --ui-accent: #246bfd;
  --ui-accent-hover: #155eef;
  --ui-accent-text: #155eef;
  --ui-accent-soft: #e8f1ff;
  --ui-highlight: #9251e8;
  --ui-highlight-text: #6534ab;
  --ui-highlight-soft: #f0e6ff;
  --ui-highlight-border: #d9c0ff;
  --ui-text: #17365f;
  --ui-heading: #0b2f6b;
  --ui-muted: #586b85;
  --ui-border: #d8e5f8;
  --ui-input-border: #bfd2ef;
  --ui-success: #126551;
  --ui-success-bg: #ddf8ee;
  --ui-warning: #805315;
  --ui-warning-bg: #fff0c2;
  --ui-danger: #b42318;
  --ui-danger-bg: #ffe7e5;
  --ui-draft: #344054;
  --ui-draft-bg: #edf1f7;
  --ui-radius: 16px;
  --ui-control-radius: 11px;
  --ui-shadow: 0 8px 26px rgba(36,107,253,.08);
  --ui-font: Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;
  --ui-font-size: 16px;
  --ui-space: 8px;
  --ui-control-height: 48px;
}

/* Основа, сетки и адаптация. Без глобального сброса стилей сайта. */
.portal-ui {box-sizing:border-box;min-width:0;color:var(--ui-text);font:var(--ui-font-size)/1.6 var(--ui-font)}
.portal-ui *, .portal-ui *::before, .portal-ui *::after {box-sizing:border-box}
.portal-ui h1,.portal-ui h2,.portal-ui h3 {color:var(--ui-heading);line-height:1.3;margin:0 0 16px}
.portal-ui h1 {font-size:clamp(26px,4vw,36px)}
.portal-ui h2 {font-size:23px}.portal-ui h3 {font-size:18px}
.portal-ui p {margin:0 0 16px}
.portal-ui a {color:var(--ui-accent);text-underline-offset:3px}
.portal-ui button,.portal-ui input,.portal-ui select,.portal-ui textarea {font:inherit}
.portal-ui :focus-visible {outline:3px solid var(--ui-accent);outline-offset:3px}
.portal-ui [hidden] {display:none!important}
.portal-ui .ui-page {max-width:1200px;margin:0 auto;padding:28px;border:1px solid #e2ecfa;border-radius:22px;background:linear-gradient(145deg,#fbfdff,#eef5ff)}
.portal-ui .ui-stack > * + * {margin-top:24px}
.portal-ui .ui-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.portal-ui .ui-grid > * {min-width:0}.portal-ui .ui-wide {grid-column:1/-1}
.portal-ui .ui-card {padding:24px;border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:#fff;box-shadow:var(--ui-shadow)}
.portal-ui .ui-muted,.portal-ui .ui-hint {color:var(--ui-muted)}
.portal-ui .ui-hint {margin:6px 0 10px;font-size:14px;line-height:1.55}
.portal-ui .ui-eyebrow {color:var(--ui-accent);font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.portal-ui .ui-actions {display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:20px}
.portal-ui .ui-money {white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right}
.portal-ui .ui-sr-only {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:720px){.portal-ui .ui-page{padding:18px 12px;border-radius:16px}.portal-ui .ui-card{padding:18px 16px}.portal-ui .ui-grid{grid-template-columns:1fr}.portal-ui .ui-actions .ui-btn{flex:1 1 auto}}
@media(prefers-reduced-motion:reduce){.portal-ui *{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Таблицы и итоговые суммы; горизонтальная прокрутка остается внутри блока. */
.portal-ui .ui-table-scroll {max-width:100%;overflow:auto;border:1px solid var(--ui-border);border-radius:12px}
.portal-ui .ui-table {width:100%;border-collapse:collapse;background:#fff}
.portal-ui .ui-table th,.portal-ui .ui-table td {padding:12px;border-bottom:1px solid var(--ui-border);text-align:left;vertical-align:top;font-size:15px;line-height:1.5}
.portal-ui .ui-table thead th {background:#eef4ff;color:#334e76;font-weight:700}
.portal-ui .ui-table tbody tr:hover {background:#f8fbff}
.portal-ui .ui-table tfoot {background:var(--ui-success-bg);color:var(--ui-success);font-weight:700}
.portal-ui .ui-table .ui-money {text-align:right;min-width:120px}
.portal-ui .ui-table--compact th,.portal-ui .ui-table--compact td {padding:8px 10px}
.portal-ui .ui-table .ui-table-actions {min-width:170px}
.portal-ui .ui-table small {display:block;color:var(--ui-muted);font-size:13px}
.portal-ui .ui-table .ui-comment {background:#f8fbff;color:var(--ui-muted)}

/* Кнопки, статусы, сообщения и показатели. */
.portal-ui .ui-btn {display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:10px 22px;border:1px solid transparent;border-radius:12px;background:linear-gradient(135deg,var(--ui-accent),#2778f5);box-shadow:0 8px 20px rgba(21,94,239,.18);color:#fff;text-decoration:none;font-weight:700;line-height:1.35;cursor:pointer}
.portal-ui .ui-btn:hover {background:var(--ui-accent-hover)}
.portal-ui .ui-btn--secondary {background:#eef4ff;border-color:var(--ui-input-border);box-shadow:none;color:#174ea6}
.portal-ui .ui-btn--secondary:hover {background:#dbeafe}
.portal-ui .ui-btn--success {background:var(--ui-success-bg);border-color:#8ddfc1;box-shadow:none;color:var(--ui-success)}
.portal-ui .ui-btn--success:hover {background:#d5efe4}
.portal-ui .ui-btn--warning {background:var(--ui-warning-bg);border-color:#f4ca62;box-shadow:none;color:var(--ui-warning)}
.portal-ui .ui-btn--warning:hover {background:#ffe6b3}
.portal-ui .ui-btn--danger {background:var(--ui-danger-bg);border-color:#ffa69e;box-shadow:none;color:var(--ui-danger)}
.portal-ui .ui-btn--danger:hover {background:#ffe1df}
.portal-ui .ui-btn--small {min-height:34px;padding:6px 12px;border-radius:9px;font-size:14px}
.portal-ui .ui-btn:disabled,.portal-ui .ui-btn[aria-disabled="true"] {opacity:.5;cursor:not-allowed;box-shadow:none}

.portal-ui .ui-badge {display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--ui-input-border);border-radius:999px;background:#dbeafe;color:#174ea6;font-size:14px;font-weight:700}
.portal-ui .ui-badge--success {background:var(--ui-success-bg);border-color:#8ddfc1;color:var(--ui-success)}
.portal-ui .ui-badge--warning {background:var(--ui-warning-bg);border-color:#f4ca62;color:var(--ui-warning)}
.portal-ui .ui-badge--draft {background:var(--ui-draft-bg);border-color:#98a2b3;color:var(--ui-draft)}
.portal-ui .ui-badge--danger {background:var(--ui-danger-bg);border-color:#ffa69e;color:var(--ui-danger)}

.portal-ui .ui-message {padding:15px 18px;border:1px solid var(--ui-border);border-radius:12px;background:#f8fbff;margin:0 0 16px}
.portal-ui .ui-message--success {background:var(--ui-success-bg);border-color:#8ddfc1;color:var(--ui-success)}
.portal-ui .ui-message--warning {background:var(--ui-warning-bg);border-color:#f4ca62;color:var(--ui-warning)}
.portal-ui .ui-message--error {background:var(--ui-danger-bg);border-color:#ffa69e;color:var(--ui-danger)}

.portal-ui .ui-stat {padding:16px;border:1px solid var(--ui-input-border);border-radius:14px;background:#eef4ff}
.portal-ui .ui-stat span {display:block;font-size:14px;color:var(--ui-muted)}
.portal-ui .ui-stat strong {display:block;margin-top:6px;color:var(--ui-heading);font-size:23px;overflow-wrap:anywhere}

/* Дополнительный акцент для показателей: не обозначает статус. */
.portal-ui .ui-stat--highlight {border-color:var(--ui-highlight-border);background:#fff}
.portal-ui .ui-stat--highlight strong {color:var(--ui-highlight-text)}
.portal-ui .ui-stat--icon {display:flex;align-items:center;gap:16px}
.portal-ui .ui-stat--icon > div {min-width:0}
.portal-ui .ui-icon {display:inline-flex;align-items:center;justify-content:center;flex:0 0 56px;width:56px;height:56px;border-radius:14px;background:var(--ui-accent-soft);color:var(--ui-accent)}
.portal-ui .ui-icon svg {width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.portal-ui .ui-icon--highlight {background:var(--ui-highlight-soft);color:var(--ui-highlight)}

/* Общие поля, выбор, файлы и многострочный выбор. */
.portal-ui .ui-field {min-width:0;margin:0 0 18px}
.portal-ui .ui-label {display:block;margin:0 0 8px;color:#334e76;font-size:16px;font-weight:700}
.portal-ui .ui-required {color:var(--ui-danger)}
.portal-ui .ui-input,.portal-ui .ui-textarea,.portal-ui .ui-select {display:block;width:100%;min-width:0;min-height:var(--ui-control-height);padding:11px 14px;border:1px solid var(--ui-input-border);border-radius:var(--ui-control-radius);background:#fff;color:var(--ui-text);transition:border-color .2s,box-shadow .2s}
.portal-ui .ui-input:focus,.portal-ui .ui-textarea:focus,.portal-ui .ui-select:focus {border-color:var(--ui-accent);box-shadow:0 0 0 4px rgba(21,94,239,.12);outline:none}
.portal-ui .ui-textarea {min-height:120px;resize:vertical}
.portal-ui .ui-select {width:min(100%,420px);appearance:none;padding-right:44px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='m6 9 6 6 6-6' fill='none' stroke='%23246bfd' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
.portal-ui .ui-select[multiple] {background-image:none;padding-right:14px;min-height:144px;appearance:auto}
.portal-ui .ui-input--compact {max-width:160px}
.portal-ui .ui-input:disabled,.portal-ui .ui-textarea:disabled,.portal-ui .ui-select:disabled {background:#f2f5fa;color:#64748b;cursor:not-allowed}
.portal-ui .ui-input[readonly],.portal-ui .ui-textarea[readonly] {background:#f8fbff}
.portal-ui [aria-invalid="true"] {border-color:var(--ui-danger)}
.portal-ui .ui-field-error {display:block;margin:6px 0 0;color:var(--ui-danger);font-size:14px}
.portal-ui .ui-counter {display:block;text-align:right;margin-top:6px;color:var(--ui-muted);font-size:13px}

.portal-ui .ui-choices {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.portal-ui .ui-choice {display:flex;align-items:flex-start;gap:11px;min-height:48px;padding:12px;border:1px solid var(--ui-border);border-radius:11px;background:#f8fbff;cursor:pointer}
.portal-ui .ui-choice:hover {border-color:#8bb4f5;background:#eff6ff}
.portal-ui .ui-choice input {flex:0 0 18px;width:18px;height:18px;margin:3px 0 0;accent-color:var(--ui-accent)}
.portal-ui .ui-choice:has(input:checked) {border-color:var(--ui-accent);background:var(--ui-accent-soft)}
.portal-ui .ui-choice:has(input:disabled) {opacity:.65;cursor:not-allowed}

.portal-ui .ui-file {display:block;width:100%;max-width:100%;padding:8px;border:1px solid var(--ui-input-border);border-radius:11px;background:#fff;color:var(--ui-text)}
.portal-ui .ui-file::file-selector-button {margin-right:12px;padding:10px 16px;border:0;border-radius:9px;background:#eef4ff;color:#174ea6;font:inherit;font-weight:700;cursor:pointer}
.portal-ui .ui-file::file-selector-button:hover {background:#dbeafe}

.portal-ui .ui-chips {display:flex;flex-wrap:wrap;gap:8px;width:100%;min-width:0;padding:11px 14px;border:1px solid var(--ui-input-border);border-radius:11px;background:#fff}
.portal-ui .ui-chip {display:inline-flex;align-items:center;gap:8px;max-width:100%;padding:6px 10px;border-radius:9px;background:var(--ui-accent-soft);color:#174ea6;overflow-wrap:anywhere}
.portal-ui .ui-chip button {flex-shrink:0;border:0;background:transparent;color:inherit;cursor:pointer;font-size:20px}

@media(max-width:720px){.portal-ui .ui-choices{grid-template-columns:1fr}.portal-ui .ui-select{width:100%}}

/* Вкладки, прогресс и легенда; состояния всегда сопровождаются текстом. */
.portal-ui .ui-tabs {display:flex;gap:8px;overflow:auto;padding:6px 4px 10px}
.portal-ui .ui-tab {display:inline-flex;flex:0 0 auto;align-items:center;gap:10px;min-height:48px;padding:12px 16px;border:1px solid var(--ui-border);border-radius:11px;background:#f4f8ff;color:var(--ui-muted);text-decoration:none;font-weight:700}
.portal-ui .ui-tab:hover {background:var(--ui-accent-soft)}
.portal-ui .ui-tab[aria-current="page"],.portal-ui .ui-tab[aria-selected="true"] {outline:3px solid var(--ui-accent);outline-offset:-3px}
.portal-ui .ui-tab--saved {background:var(--ui-accent);border-color:var(--ui-accent);color:#fff}
.portal-ui .ui-tab--saved:hover {background:var(--ui-accent-hover)}
.portal-ui .ui-tab--partial {background:var(--ui-warning-bg);border-color:#f4ca62;color:var(--ui-warning)}
.portal-ui .ui-tab--draft {background:var(--ui-draft-bg);border-color:#98a2b3;color:var(--ui-draft)}
.portal-ui .ui-step {display:grid;place-items:center;flex:0 0 30px;width:30px;height:30px;border:1px solid var(--ui-input-border);border-radius:50%;background:#fff;color:#174ea6;font-size:14px;font-weight:800}

.portal-ui .ui-progress {display:block;width:100%;height:8px;border:0;border-radius:999px;background:#e8effa;overflow:hidden;accent-color:var(--ui-accent)}
.portal-ui .ui-progress::-webkit-progress-bar {background:#e8effa}.portal-ui .ui-progress::-webkit-progress-value {background:linear-gradient(90deg,var(--ui-accent),#3982f6)}.portal-ui .ui-progress::-moz-progress-bar {background:var(--ui-accent)}

.portal-ui .ui-legend {display:flex;flex-wrap:wrap;gap:12px 22px;margin-top:14px;color:var(--ui-muted);font-size:14px}
.portal-ui .ui-legend span {display:inline-flex;align-items:center;gap:8px}
.portal-ui .ui-dot {display:inline-block;width:12px;height:12px;border:1px solid var(--ui-input-border);border-radius:4px;background:#fff}
.portal-ui .ui-dot--saved {background:var(--ui-accent)}.portal-ui .ui-dot--partial {background:#ffda88;border-color:#eaa22b}.portal-ui .ui-dot--draft {background:#98a2b3;border-color:#98a2b3}

/* Описания и смысловые акценты; бизнес-статусы остаются отдельными. */
.portal-ui .ui-description {padding:18px 20px;border:1px solid var(--ui-highlight-border);border-left:4px solid var(--ui-highlight);border-radius:12px;background:var(--ui-highlight-soft);color:var(--ui-text)}
.portal-ui .ui-description h3 {color:var(--ui-highlight-text)}
.portal-ui .ui-description p:last-child {margin-bottom:0}
.portal-ui .ui-highlight {color:var(--ui-highlight-text);font-weight:700}

/* Меню портала: не использует цвет статуса заполнения. */
.portal-ui .ui-menu {display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:6px;list-style:none;border:1px solid var(--ui-border);border-radius:12px;background:#fff}
.portal-ui .ui-menu-link {display:flex;align-items:center;gap:8px;padding:10px 14px;min-height:44px;border-radius:9px;color:var(--ui-muted);text-decoration:none;font-size:15px;font-weight:600}
.portal-ui .ui-menu-link:hover {background:#f8fbff;color:var(--ui-text)}
.portal-ui .ui-menu-link[aria-current="page"] {background:var(--ui-accent-soft);color:var(--ui-accent-text);box-shadow:inset 0 0 0 1px #bfd2ef}
.portal-ui .ui-menu--vertical {display:grid}
.portal-ui .ui-breadcrumbs {display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:0;margin:0 0 16px;list-style:none;font-size:14px;color:var(--ui-muted)}
.portal-ui .ui-breadcrumbs li+li::before {content:"/";margin-right:8px;color:var(--ui-muted)}
.portal-ui .ui-breadcrumbs a {text-decoration:none;color:var(--ui-muted)}
.portal-ui .ui-breadcrumbs [aria-current="page"] {color:var(--ui-text)}
@media(max-width:720px){.portal-ui .ui-menu:not(.ui-menu--vertical){flex-wrap:nowrap;overflow-x:auto}.portal-ui .ui-menu-link{white-space:nowrap}}

/* Единая иерархия; декоративная величина не заменяет смысловой уровень h1–h3. */
.portal-ui h1,.portal-ui .ui-title {font-size:32px;line-height:1.2;font-weight:700;letter-spacing:-.02em}
.portal-ui h2 {font-size:24px;line-height:1.3;font-weight:700}
.portal-ui h3 {font-size:20px;line-height:1.4;font-weight:600}
.portal-ui .ui-lead {font-size:18px;line-height:1.6;color:var(--ui-muted)}
.portal-ui .ui-prose {max-width:72ch}
.portal-ui .ui-prose p {margin-bottom:16px}
.portal-ui .ui-prose ul,.portal-ui .ui-prose ol {margin:0 0 16px;padding-left:24px}
.portal-ui .ui-prose li+li {margin-top:6px}
.portal-ui .ui-caption {font-size:13px;line-height:1.5;color:var(--ui-muted)}
.portal-ui .ui-label {font-size:16px;line-height:1.45;font-weight:600}
.portal-ui .ui-eyebrow {font-size:13px;line-height:1.5;font-weight:600;letter-spacing:.025em;text-transform:none}
@media(max-width:720px){.portal-ui h1,.portal-ui .ui-title{font-size:28px}.portal-ui h2{font-size:22px}.portal-ui h3{font-size:18px}}

/* Отдельные примеры показателей. Базовые стили и цвета не переопределяются. */
.portal-ui .ui-info-grid {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.portal-ui .ui-info-card {--info-accent:#246bfd;--info-soft:#e8f1ff;min-width:0;padding:20px;border:1px solid #d8e5f8;border-radius:16px;background:#fff;box-shadow:0 6px 18px rgba(22,72,145,.05)}
.portal-ui .ui-info-card--green {--info-accent:#14a87a;--info-soft:#ddf8ee}
.portal-ui .ui-info-card--purple {--info-accent:#9251e8;--info-soft:#f0e6ff}
.portal-ui .ui-info-card--amber {--info-accent:#f3a52b;--info-soft:#fff0c2}
.portal-ui .ui-info-card__main {display:flex;align-items:center;gap:16px;min-height:96px}
.portal-ui .ui-info-card__icon {display:grid;place-items:center;flex:0 0 58px;width:58px;height:64px;border-radius:15px;color:var(--info-accent);background:var(--info-soft)}
.portal-ui .ui-info-card__icon svg {width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.portal-ui .ui-info-card__value {display:block;color:#0b2f6b;font-size:30px;line-height:1.2;font-weight:700;font-variant-numeric:tabular-nums}
.portal-ui .ui-info-card__label {display:block;margin-top:6px;color:#586b85;font-size:15px;line-height:1.45}
.portal-ui .ui-color-legend {display:flex;flex-wrap:wrap;gap:6px 10px;margin:18px 0 0;padding:12px 0 0;border-top:1px solid #d8e5f8;list-style:none;color:#586b85;font-size:13px;line-height:1.5}
.portal-ui .ui-color-legend li {display:flex;align-items:center;gap:5px;min-width:0}
.portal-ui .ui-color-legend i {display:inline-block;width:10px;height:10px;flex-shrink:0;border:1px solid #bfd2ef;border-radius:3px}
.portal-ui .ui-color-legend code {font:inherit;color:#17365f}
@media(max-width:1000px){.portal-ui .ui-info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.portal-ui .ui-info-grid{grid-template-columns:1fr}}

/* Палитра показывается так же, как реальные поверхности интерфейса. */
.portal-ui .ui-palette {display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
.portal-ui .ui-color-sample {--sample-bg:var(--ui-accent-soft);--sample-text:var(--ui-accent-text);--sample-marker:var(--ui-accent);padding:18px;border:1px solid #bfd2ef;border-radius:12px;background:var(--sample-bg);color:var(--sample-text)}
.portal-ui .ui-color-sample--success {--sample-bg:var(--ui-success-bg);--sample-text:var(--ui-success);--sample-marker:var(--ui-success);border-color:#8ddfc1}
.portal-ui .ui-color-sample--warning {--sample-bg:var(--ui-warning-bg);--sample-text:var(--ui-warning);--sample-marker:#eaa22b;border-color:#f4ca62}
.portal-ui .ui-color-sample--danger {--sample-bg:var(--ui-danger-bg);--sample-text:var(--ui-danger);--sample-marker:var(--ui-danger);border-color:#ffa69e}
.portal-ui .ui-color-sample--highlight {--sample-bg:var(--ui-highlight-soft);--sample-text:var(--ui-highlight-text);--sample-marker:var(--ui-highlight);border-color:var(--ui-highlight-border)}
.portal-ui .ui-color-sample strong {display:flex;align-items:center;gap:8px;font-size:16px;line-height:1.4}
.portal-ui .ui-color-sample strong::before {content:"";display:block;width:10px;height:10px;flex:0 0 10px;border-radius:50%;background:var(--sample-marker)}
.portal-ui .ui-color-sample dl {display:grid;grid-template-columns:auto 1fr;gap:4px 8px;margin:14px 0 0;font-size:13px;line-height:1.5}
.portal-ui .ui-color-sample dd {margin:0;font-variant-numeric:tabular-nums}
.portal-ui .ui-color-sample code {font:inherit}

