/* ============================================================
   dc-ui · utils.css — УТИЛИТИ-СЛОЙ (opt-in escape hatch).

   Философия (см. docs/adr/0002-utility-layer.md): это УЗКИЙ аварийный выход для
   разовых правок раскладки/отступов, а НЕ способ вёрстки. Основной путь остаётся
   «компонент из одного источника» + примитивы раскладки (Layout v2). Утилиты
   существуют, чтобы продукт не писал кастомный CSS ради «сдвинуть на шаг» — и не
   плодил дрейф. Набор ОГРАНИЧЕН по дизайну (не атомарный взрыв Tailwind).

   ── Почему отдельный файл, а не в dc-ui.css ────────────────
   «Purge» для сборки без npm = НЕ подключать. Ядро dc-ui.css тонкое; кому нужен
   escape hatch — добавляет <link ... dc-ui-utils.css> ПОСЛЕ dc-ui.css. Все значения —
   из токенов --dc-* (шкала ритма, размеры шрифта, цвета), поэтому утилиты «дышат»
   вместе с темой так же, как компоненты. Ни одного литерала.

   Шкала отступов: цифра N ⇒ --dc-space-N (0 = 0). Диапазон утилит 0..6 (7,8 — редки,
   берутся токеном руками). Оси: x = left+right, y = top+bottom.
   ============================================================ */

/* ─────────────── ОТСТУПЫ · margin ─────────────── */
.dc-m-0{margin:0}.dc-m-1{margin:var(--dc-space-1)}.dc-m-2{margin:var(--dc-space-2)}.dc-m-3{margin:var(--dc-space-3)}.dc-m-4{margin:var(--dc-space-4)}.dc-m-5{margin:var(--dc-space-5)}.dc-m-6{margin:var(--dc-space-6)}
.dc-mt-0{margin-top:0}.dc-mt-1{margin-top:var(--dc-space-1)}.dc-mt-2{margin-top:var(--dc-space-2)}.dc-mt-3{margin-top:var(--dc-space-3)}.dc-mt-4{margin-top:var(--dc-space-4)}.dc-mt-5{margin-top:var(--dc-space-5)}.dc-mt-6{margin-top:var(--dc-space-6)}
.dc-mr-0{margin-right:0}.dc-mr-1{margin-right:var(--dc-space-1)}.dc-mr-2{margin-right:var(--dc-space-2)}.dc-mr-3{margin-right:var(--dc-space-3)}.dc-mr-4{margin-right:var(--dc-space-4)}.dc-mr-5{margin-right:var(--dc-space-5)}.dc-mr-6{margin-right:var(--dc-space-6)}
.dc-mb-0{margin-bottom:0}.dc-mb-1{margin-bottom:var(--dc-space-1)}.dc-mb-2{margin-bottom:var(--dc-space-2)}.dc-mb-3{margin-bottom:var(--dc-space-3)}.dc-mb-4{margin-bottom:var(--dc-space-4)}.dc-mb-5{margin-bottom:var(--dc-space-5)}.dc-mb-6{margin-bottom:var(--dc-space-6)}
.dc-ml-0{margin-left:0}.dc-ml-1{margin-left:var(--dc-space-1)}.dc-ml-2{margin-left:var(--dc-space-2)}.dc-ml-3{margin-left:var(--dc-space-3)}.dc-ml-4{margin-left:var(--dc-space-4)}.dc-ml-5{margin-left:var(--dc-space-5)}.dc-ml-6{margin-left:var(--dc-space-6)}
.dc-mx-0{margin-inline:0}.dc-mx-1{margin-inline:var(--dc-space-1)}.dc-mx-2{margin-inline:var(--dc-space-2)}.dc-mx-3{margin-inline:var(--dc-space-3)}.dc-mx-4{margin-inline:var(--dc-space-4)}.dc-mx-5{margin-inline:var(--dc-space-5)}.dc-mx-6{margin-inline:var(--dc-space-6)}
.dc-my-0{margin-block:0}.dc-my-1{margin-block:var(--dc-space-1)}.dc-my-2{margin-block:var(--dc-space-2)}.dc-my-3{margin-block:var(--dc-space-3)}.dc-my-4{margin-block:var(--dc-space-4)}.dc-my-5{margin-block:var(--dc-space-5)}.dc-my-6{margin-block:var(--dc-space-6)}
.dc-m-auto{margin:auto}.dc-mx-auto{margin-inline:auto}.dc-ml-auto{margin-left:auto}.dc-mr-auto{margin-right:auto}

/* ─────────────── ОТСТУПЫ · padding ─────────────── */
.dc-p-0{padding:0}.dc-p-1{padding:var(--dc-space-1)}.dc-p-2{padding:var(--dc-space-2)}.dc-p-3{padding:var(--dc-space-3)}.dc-p-4{padding:var(--dc-space-4)}.dc-p-5{padding:var(--dc-space-5)}.dc-p-6{padding:var(--dc-space-6)}
.dc-pt-0{padding-top:0}.dc-pt-1{padding-top:var(--dc-space-1)}.dc-pt-2{padding-top:var(--dc-space-2)}.dc-pt-3{padding-top:var(--dc-space-3)}.dc-pt-4{padding-top:var(--dc-space-4)}.dc-pt-5{padding-top:var(--dc-space-5)}.dc-pt-6{padding-top:var(--dc-space-6)}
.dc-pr-0{padding-right:0}.dc-pr-1{padding-right:var(--dc-space-1)}.dc-pr-2{padding-right:var(--dc-space-2)}.dc-pr-3{padding-right:var(--dc-space-3)}.dc-pr-4{padding-right:var(--dc-space-4)}.dc-pr-5{padding-right:var(--dc-space-5)}.dc-pr-6{padding-right:var(--dc-space-6)}
.dc-pb-0{padding-bottom:0}.dc-pb-1{padding-bottom:var(--dc-space-1)}.dc-pb-2{padding-bottom:var(--dc-space-2)}.dc-pb-3{padding-bottom:var(--dc-space-3)}.dc-pb-4{padding-bottom:var(--dc-space-4)}.dc-pb-5{padding-bottom:var(--dc-space-5)}.dc-pb-6{padding-bottom:var(--dc-space-6)}
.dc-pl-0{padding-left:0}.dc-pl-1{padding-left:var(--dc-space-1)}.dc-pl-2{padding-left:var(--dc-space-2)}.dc-pl-3{padding-left:var(--dc-space-3)}.dc-pl-4{padding-left:var(--dc-space-4)}.dc-pl-5{padding-left:var(--dc-space-5)}.dc-pl-6{padding-left:var(--dc-space-6)}
.dc-px-0{padding-inline:0}.dc-px-1{padding-inline:var(--dc-space-1)}.dc-px-2{padding-inline:var(--dc-space-2)}.dc-px-3{padding-inline:var(--dc-space-3)}.dc-px-4{padding-inline:var(--dc-space-4)}.dc-px-5{padding-inline:var(--dc-space-5)}.dc-px-6{padding-inline:var(--dc-space-6)}
.dc-py-0{padding-block:0}.dc-py-1{padding-block:var(--dc-space-1)}.dc-py-2{padding-block:var(--dc-space-2)}.dc-py-3{padding-block:var(--dc-space-3)}.dc-py-4{padding-block:var(--dc-space-4)}.dc-py-5{padding-block:var(--dc-space-5)}.dc-py-6{padding-block:var(--dc-space-6)}

/* ─────────────── GAP (для flex/grid) ─────────────── */
.dc-gap-0{gap:0}.dc-gap-1{gap:var(--dc-space-1)}.dc-gap-2{gap:var(--dc-space-2)}.dc-gap-3{gap:var(--dc-space-3)}.dc-gap-4{gap:var(--dc-space-4)}.dc-gap-5{gap:var(--dc-space-5)}.dc-gap-6{gap:var(--dc-space-6)}

/* ─────────────── DISPLAY ─────────────── */
.dc-d-block{display:block}.dc-d-inline{display:inline}.dc-d-inline-block{display:inline-block}
.dc-d-flex{display:flex}.dc-d-inline-flex{display:inline-flex}.dc-d-none{display:none}

/* ─────────────── FLEX ─────────────── */
.dc-flex-row{flex-direction:row}.dc-flex-col{flex-direction:column}
.dc-flex-wrap{flex-wrap:wrap}.dc-flex-nowrap{flex-wrap:nowrap}
.dc-flex-1{flex:1 1 0;min-inline-size:0}.dc-flex-auto{flex:1 1 auto}.dc-flex-none{flex:none}
.dc-grow{flex-grow:1}.dc-grow-0{flex-grow:0}.dc-shrink{flex-shrink:1}.dc-shrink-0{flex-shrink:0}

/* Выравнивание по осям (flex/grid) */
.dc-items-start{align-items:flex-start}.dc-items-center{align-items:center}.dc-items-end{align-items:flex-end}.dc-items-stretch{align-items:stretch}.dc-items-baseline{align-items:baseline}
.dc-justify-start{justify-content:flex-start}.dc-justify-center{justify-content:center}.dc-justify-end{justify-content:flex-end}.dc-justify-between{justify-content:space-between}.dc-justify-around{justify-content:space-around}.dc-justify-evenly{justify-content:space-evenly}
.dc-self-start{align-self:flex-start}.dc-self-center{align-self:center}.dc-self-end{align-self:flex-end}.dc-self-stretch{align-self:stretch}

/* ─────────────── ТЕКСТ ─────────────── */
.dc-fs-xs{font-size:var(--dc-fs-xs)}.dc-fs-sm{font-size:var(--dc-fs-sm)}.dc-fs-md{font-size:var(--dc-fs-md)}.dc-fs-lg{font-size:var(--dc-fs-lg)}.dc-fs-xl{font-size:var(--dc-fs-xl)}.dc-fs-2xl{font-size:var(--dc-fs-2xl)}.dc-fs-3xl{font-size:var(--dc-fs-3xl)}
.dc-fw-normal{font-weight:var(--dc-fw-normal)}.dc-fw-medium{font-weight:var(--dc-fw-medium)}.dc-fw-semibold{font-weight:var(--dc-fw-semibold)}.dc-fw-bold{font-weight:var(--dc-fw-bold)}
.dc-text-left{text-align:left}.dc-text-center{text-align:center}.dc-text-right{text-align:right}
.dc-uppercase{text-transform:uppercase}.dc-capitalize{text-transform:capitalize}.dc-lowercase{text-transform:lowercase}
.dc-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dc-break{overflow-wrap:anywhere}
/* Цвет текста — из семантики токенов */
.dc-c-text{color:var(--dc-color-text)}.dc-c-soft{color:var(--dc-color-text-soft)}.dc-c-muted{color:var(--dc-color-text-muted)}.dc-c-invert{color:var(--dc-color-text-invert)}
.dc-c-primary{color:var(--dc-color-primary)}.dc-c-success{color:var(--dc-color-success)}.dc-c-warning{color:var(--dc-color-warning)}.dc-c-danger{color:var(--dc-color-danger)}

/* ─────────────── РАЗМЕРЫ ─────────────── */
.dc-w-full{inline-size:100%}.dc-w-auto{inline-size:auto}.dc-min-w-0{min-inline-size:0}.dc-max-w-full{max-inline-size:100%}
.dc-h-full{block-size:100%}.dc-h-auto{block-size:auto}

/* ─────────────── РАЗНОЕ ─────────────── */
.dc-rounded-none{border-radius:0}.dc-rounded-sm{border-radius:var(--dc-radius-sm)}.dc-rounded{border-radius:var(--dc-radius)}.dc-rounded-lg{border-radius:var(--dc-radius-lg)}.dc-rounded-pill{border-radius:var(--dc-radius-pill)}
.dc-overflow-hidden{overflow:hidden}.dc-overflow-auto{overflow:auto}.dc-scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch}
.dc-relative{position:relative}.dc-sticky-top{position:sticky;top:0}
