/* ============================================================
   lp-kit.css — 1:1 replica of LoyaltyPlant CRM styles
   Extracted from /projects/ember (addons/ui, addons/lp-base).
   Reusable prototype kit. Values are the real rendered tokens.
   ============================================================ */

:root {
  /* colors */
  --lp-dark: #1e1b1b;          /* dark bar / sidebar bg (header.scss) */
  --lp-text: #232829;          /* $dark — text/headings */
  --lp-white: #ffffff;
  --lp-primary: #457ce7;       /* $primary */
  --lp-primary-active: #3764ba;
  --lp-primary-disabled: #81afe7;
  --lp-primary-tint: rgba(69,124,231,0.1);
  --lp-link: #457ce7;
  --lp-gray-medium: #72747a;   /* secondary text */
  --lp-gray-light: #d7d9d9;    /* borders */
  --lp-gray-verylight: #f1f1f1;
  --lp-gray-lightest: #fafafa;
  --lp-success: #31ca88;
  --lp-danger: #b72d2a;
  --lp-danger-solid: #fe5000;
  --lp-warning: #ffb300;
  --lp-sidebar-hover: rgba(216,216,216,0.12);

  /* spacing (6px base) */
  --lp-xxxs: 3px; --lp-xxs: 6px; --lp-xs: 12px; --lp-s: 18px;
  --lp-m: 24px; --lp-l: 30px; --lp-xl: 36px; --lp-xxl: 42px;

  --lp-radius: 3px;
  --lp-shadow-float: rgba(149,157,165,0.2) 0 8px 24px;
  --lp-shadow-popover: 0 2px 26px 8px rgba(0,0,0,0.07), 0 3px 9px 5px rgba(0,0,0,0.07);
  --lp-sidebar-w: 255px;
}

* { box-sizing: border-box; }
@keyframes lp-spin { to { transform: rotate(360deg); } }

/* custom elements default to display:inline — declare layout explicitly,
   otherwise bordered/block components (lp-card) render as thin inline strips */
lp-card, lp-page-header, lp-field, lp-input, lp-input-number, lp-textarea, lp-select, lp-grouped-select,
lp-radio-switch, lp-collapse, lp-datetime-picker, lp-form-field, lp-tabs, lp-message, lp-topbar { display: block; }
lp-btn, lp-link, lp-tag, lp-icon, lp-avatar, lp-spinner, lp-nav-item { display: inline-block; }
lp-checkbox { display: inline-flex; align-self: flex-start; } /* don't stretch full-width inside a flex column (.lp-stack etc) — that leaves a dead click zone past the label */
lp-switch { display: inline-flex; align-self: flex-start; }
lp-tile { display: block; flex: 1; }

body {
  margin: 0;
  font-family: 'Montserrat', 'Roboto', Arial, sans-serif;
  font-size: 14px;
  font-weight: 500;
  line-height: 18px;
  color: var(--lp-text);
  background: var(--lp-white);
}

/* ---------- typography ---------- */
.lp-h1 { font-size: 24px; line-height: 36px; font-weight: 900; margin: 0; }
.lp-h2 { font-size: 20px; line-height: 24px; font-weight: 900; margin: 0; }
.lp-h3 { font-size: 16px; line-height: 18px; font-weight: 900; margin: 0; }
.lp-h4 { font-size: 14px; line-height: 18px; font-weight: 700; margin: 0 0 10px; }
.lp-large { font-size: 16px; line-height: 22px; }
.lp-basic { font-size: 14px; line-height: 18px; }
.lp-tiny  { font-size: 12px; line-height: 18px; color: var(--lp-gray-medium); }
.lp-muted { color: var(--lp-gray-medium); }
.lp-label-field { font-weight: 600; font-size: 14px; margin-bottom: var(--lp-xxs); display:block; }

/* ---------- app shell (sidebar redesign) ---------- */
.lp-app { display: flex; min-height: 100vh; align-items: stretch; }

/* the <lp-sidebar> custom element is the flex item — make it stretch */
lp-sidebar { display: flex; flex: 0 0 var(--lp-sidebar-w); transition: flex-basis .18s ease; }

/* ---- collapsed sidebar (icons only) — toggled on <html>, persisted in localStorage ---- */
.sidebar-collapsed lp-sidebar { flex-basis: 64px; }
.sidebar-collapsed .lp-sidebar__logo { justify-content: center; gap: 6px; padding: 22px 8px 18px; }
.sidebar-collapsed .lp-sidebar__brand { display: none; }
.sidebar-collapsed .lp-nav__item { padding-left: 0; padding-right: 0; justify-content: center; gap: 0; }
.sidebar-collapsed .lp-nav__item > span { display: none; }
.sidebar-collapsed .lp-nav__item .caret { display: none; }
.sidebar-collapsed .lp-nav__sub { display: none !important; }
.sidebar-collapsed .lp-sidebar__user { justify-content: center; padding-left: 8px; padding-right: 8px; }
.sidebar-collapsed .lp-sidebar__user > div:last-child { display: none; }

.lp-sidebar {
  width: 100%;
  min-height: 100vh;
  background: var(--lp-dark);
  display: flex;
  flex-direction: column;
  color: #cfd0d2;
}
.lp-sidebar__logo {
  display: flex; align-items: center; gap: 8px;
  padding: 22px 16px 18px 24px; color: #fff; font-weight: 700; font-size: 18px;
}
.lp-logo-mark { width: 24px; height: 24px; flex: 0 0 24px; }
.lp-sidebar__collapse { margin-left:auto; width:28px;height:28px;border-radius:6px;
  background:#2c2929; color:#9a9a9a; display:flex;align-items:center;justify-content:center; border:none; cursor:pointer;}
.lp-nav { display: flex; flex-direction: column; padding-top: 6px; flex: 1 1 auto; }
.lp-nav__item {
  display: flex; align-items: center; gap: 12px;
  padding: 11px 16px 11px 24px; color: #9a9b9e; cursor: pointer;
  border-left: 3px solid transparent; text-decoration: none; font-size: 14px;
  position: relative; user-select: none;
}
.lp-nav__item .ico { width: 18px; height: 18px; opacity: .85; flex: 0 0 18px; fill: currentColor; }
.lp-nav__item .caret { margin-left: auto; opacity: .55; width: 10px; height: 10px; fill: currentColor; flex: 0 0 10px;
  transform: rotate(-90deg); transition: transform .15s ease; }
.lp-nav__item.is-section-open .caret { transform: rotate(0deg); }
.lp-nav__item:hover { background: var(--lp-sidebar-hover); color: #dfe0e2; }
.lp-nav__item.is-active { color: #7ea6ef; }
/* "current section" parent: clearly secondary to a real active leaf — muted, no accent bar */
.lp-nav__item.is-active--parent { color: #7ea6ef; opacity: .7; }
.lp-nav__item.is-active::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--lp-primary);
}
.lp-nav__sub { display: none; flex-direction: column; }
.lp-nav__sub.is-open { display: flex; }
.lp-nav__sub .lp-nav__item { padding-left: 40px; font-size: 13px; }
.lp-sidebar__user {
  display: flex; align-items: center; gap: 12px; padding: 12px 16px 14px 24px;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.lp-sidebar__user .ava { width: 34px; height: 34px; border-radius: 50%; background: #d9d9d9; flex:0 0 34px;}
.lp-sidebar__user .name { color: #fff; font-size: 14px; font-weight: 700; line-height: 1.2; }
.lp-sidebar__user .org { color: #9a9b9e; font-size: 12px; }

/* ---------- content ---------- */
.lp-content { flex: 1 1 auto; padding: 32px; max-width: 100%; overflow-x: hidden; }
.lp-crumb { color: var(--lp-gray-medium); font-size: 12px; margin-bottom: 4px; }
.lp-page-title { margin-bottom: 24px; }
.lp-stack { display: flex; flex-direction: column; gap: 24px; }
.lp-row { display: flex; align-items: center; gap: 16px; }
.lp-spacer { flex: 1 1 auto; }

/* ---------- tabs ---------- */
.lp-tabs { display: flex; border-bottom: 1px solid var(--lp-gray-light); }
.lp-tab {
  padding: 12px 18px; color: var(--lp-link); font-size: 16px; line-height: 22px;
  cursor: pointer; position: relative; background: none; border: none;
}
.lp-tab.is-active { color: var(--lp-text); }
.lp-tab.is-active::after {
  content: ""; position: absolute; left: 0; bottom: -1px; height: 4px; width: 100%;
  background: var(--lp-primary);
}

/* ---------- buttons ---------- */
.lp-btn {
  border-radius: var(--lp-radius); padding: 12px 24px; font-family: inherit;
  font-size: 16px; border: none; background: transparent; color: var(--lp-primary);
  cursor: pointer; font-weight: 500;
}
.lp-btn--primary { background: var(--lp-primary); color: #fff; }
.lp-btn--primary:hover { background: var(--lp-primary); }
.lp-btn--primary:active { background: var(--lp-primary-active); }
.lp-btn--primary:disabled { background: var(--lp-primary-disabled); cursor: not-allowed; }
.lp-btn--sm { padding: 8px 18px; font-size: 14px; line-height: 14px; }
.lp-btn--danger { background: var(--lp-danger-solid); color: #fff; }
.lp-btn--danger:active { background: #89221f; }
.lp-link { color: var(--lp-link); font-weight: 600; font-size: 14px; cursor: pointer; text-decoration: none; }

/* ---------- legacy raw <input>/<textarea class="lp-input"> (static demo markup, not the lp-input component) ---------- */
.lp-input {
  width: 100%; min-height: 34px; line-height: 22px; border-radius: var(--lp-radius);
  border: 1px solid var(--lp-gray-light); color: rgba(49,53,63,.87); background: #fff;
  padding: 8px; font-family: inherit; font-size: 14px;
}
.lp-input:focus { outline: none; border-color: var(--lp-primary); }
.lp-input.is-error { border-color: var(--lp-danger-solid); background: #fdf3f0; }
.lp-field { display: flex; flex-direction: column; }
.lp-field-error { color: var(--lp-danger); font-size: 12px; margin-top: 4px; }

/* ---------- lp-select (working custom dropdown, single + multiple; also used as a plain box via raw .lp-select divs) ---------- */
lp-select, lp-grouped-select { position: relative; }
.lp-select {
  width: 100%; min-height: 36px; padding: 8px; padding-right: 32px; box-sizing: border-box;
  border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius); background: #fff;
  font-family: inherit; font-size: 14px; display: flex; align-items: center; flex-wrap: wrap;
  cursor: pointer; position: relative; gap: 2px;
}
.lp-select--small { min-height: 30px; padding: 4px 24px 4px 4px; font-size: 14px; }
.lp-select--disabled { background: var(--lp-gray-verylight); color: var(--lp-text); cursor: not-allowed; }
.lp-select--invalid { border-color: transparent; box-shadow: inset 0 0 0 1px var(--lp-danger-solid); }
.lp-select__value { flex: 1 1 auto; min-width: 0; display: flex; flex-wrap: wrap; align-items: center; }
.lp-select__placeholder { color: var(--lp-gray-medium); }
.lp-select__caret {
  position: absolute; right: 12px; top: 50%; transform: translateY(-50%);
  width: 12px; height: 12px; fill: var(--lp-primary); flex: 0 0 12px; pointer-events: none;
}

.lp-select__chip, .lp-grouped-select__counter {
  display: inline-flex; align-items: center; gap: 4px; background: var(--lp-gray-verylight);
  padding: 1px 4px; margin: 0 6px 0 0; border-radius: 2px; font-size: 14px; line-height: 14px;
  /* line-height/margin trimmed to fit inside a 36px trigger (8px padding + 1px border top/bottom
     leaves 18px content room) — inherited body line-height:18px + 2px vertical margin overflowed
     the multi-select/grouped-select trigger to 42px whenever a chip was present, vs 36px empty/single-select */
}
.lp-select__chip b { font-weight: 400; cursor: pointer; color: var(--lp-gray-medium); }
.lp-select__chip b:hover { color: var(--lp-text); }
.lp-select__clear { cursor: pointer; color: var(--lp-gray-medium); font-weight: 400; margin-left: 4px; }
.lp-select__clear:hover { color: var(--lp-text); }

.lp-select__panel, .lp-grouped-select__panel {
  display: none; position: absolute; top: calc(100% + 4px); left: 0; right: 0; z-index: 60;
  background: #fff; border-radius: var(--lp-radius); box-shadow: var(--lp-shadow-float);
}
lp-select.is-open .lp-select__panel, lp-grouped-select.is-open .lp-grouped-select__panel { display: block; }
.lp-select__search {
  width: 100%; box-sizing: border-box; padding: 6px; border: none; border-bottom: 1px solid var(--lp-gray-light);
  font-size: 16px; line-height: 22px; font-family: inherit; outline: none; border-radius: var(--lp-radius) var(--lp-radius) 0 0;
}
.lp-select__search::placeholder { color: var(--lp-gray-medium); }
.lp-select__options { max-height: 160px; overflow-y: auto; }
.lp-select__option { padding: 6px; font-size: 14px; line-height: 18px; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.lp-select__option:hover { background: var(--lp-primary-tint); }
.lp-select__option.is-selected { background: var(--lp-gray-lightest); font-weight: 600; }
.lp-select__option--check { justify-content: flex-start; gap: 10px; }
.lp-select__option .lp-select__check { width: 14px; height: 14px; fill: var(--lp-primary); flex: 0 0 14px; }
.lp-select__empty { padding: 10px; font-size: 14px; color: var(--lp-gray-medium); text-align: center; }

/* ---------- lp-grouped-select + lp-tree (menu-items tree picker) ---------- */
.lp-grouped-select__trigger { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }
.lp-grouped-select__input { flex: 1 1 80px; min-width: 60px; }
.lp-grouped-select__input input {
  width: 100%; height: 18px; line-height: 18px; padding: 0; margin: 0;
  border: none; outline: none; font-family: inherit; font-size: 14px; background: transparent;
  /* native <input> UA sizing renders ~1px taller than a plain span at this font-size, which was
     enough to push the 36px trigger to 37px — pin it to the same 18px content-box budget as everything else */
}
.lp-grouped-select__input input::placeholder { color: var(--lp-gray-medium); }
.lp-grouped-select__list { max-height: 300px; overflow-y: auto; padding: 5px; }
.lp-grouped-select__list hr { border: none; border-top: 1px solid var(--lp-gray-light); margin: 6px 0; }
.lp-grouped-select__hint { color: var(--lp-gray-medium); font-size: 12px; padding: 6px 4px; }

.lp-text-hint { color: var(--lp-gray-medium); }
.lp-text-small { font-size: 12px; line-height: 18px; }

.lp-tree-item__container { display: flex; flex-direction: column; }
.lp-tree-item__root { display: flex; flex-direction: row; align-items: flex-start; gap: 5px; padding: 3px 4px; border-radius: var(--lp-radius); }
.lp-tree-item__root:hover { background: var(--lp-primary-tint); }
.lp-tree-item__children { margin-left: 40px; }
.lp-tree-item__arrow { border: none; background: none; cursor: pointer; padding: 2px; margin-top: 1px; display: flex; align-items: center; color: var(--lp-gray-medium); flex: 0 0 auto; }
.lp-tree-item__arrow svg { width: 12px; height: 12px; fill: currentColor; }
.lp-tree-item__label { cursor: pointer; padding-top: 2px; }
.lp-tree-item__row { display: flex; flex-direction: column; cursor: pointer; }

/* ---------- lp-radio-switch (segmented pill) ---------- */
.lp-radio-switch {
  display: flex; width: 100%; border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius);
  height: var(--lp-xxl); font-size: 16px;
}
.lp-radio-switch--small { height: var(--lp-l); font-size: 14px; }         /* 30px */
.lp-radio-switch--disabled { color: var(--lp-primary-disabled); cursor: default; opacity: .6; }
.lp-radio-switch__item {
  position: relative; display: flex; align-items: center; justify-content: center;
  flex-grow: 1; flex-basis: 0; border-radius: var(--lp-radius); color: var(--lp-text); cursor: pointer;
  text-align: center; padding: 4px 8px; user-select: none;
}
.lp-radio-switch__item--active { background: var(--lp-primary-tint); color: var(--lp-text); cursor: default; }
.lp-radio-switch__item:not(:last-child)::after {
  content: ""; position: absolute; right: 0; top: 0; height: 100%; width: 1px; background: var(--lp-gray-light);
}

/* ---------- lp-input / lp-input-number / lp-textarea (entry-field family, real hex/px per spec) ---------- */
.lp-entry-field { position: relative; display: flex; flex-direction: column; }
.lp-entry-field__field {
  appearance: none; width: 100%; box-sizing: border-box;
  padding: 6px 9px; border: 1px solid var(--lp-gray-light); font-size: 16px; line-height: 22px;
  border-radius: var(--lp-radius); outline: none; resize: none; font-family: inherit; background: #fff; color: var(--lp-text);
}
.lp-entry-field__field:focus { box-shadow: inset 0 0 0 1px var(--lp-primary); border-color: transparent; }
.lp-entry-field__field:disabled { background: var(--lp-gray-verylight); color: var(--lp-gray-medium); }
.lp-entry-field--small .lp-entry-field__field { padding: 6px 9px; font-size: 14px; line-height: 16px; }
.lp-entry-field--invalid .lp-entry-field__field { box-shadow: inset 0 0 0 1px var(--lp-danger-solid); border-color: transparent; }
.lp-entry-field__tiny-hint { position: absolute; right: 0; top: 0; color: var(--lp-gray-medium); font-size: 12px; }
.lp-entry-field__tiny-hint--bottom { top: auto; bottom: 3px; right: 3px; font-size: 10px; }
.lp-entry-field__hint { width: 16px; height: 16px; fill: var(--lp-gray-medium); cursor: help; flex: 0 0 auto; margin-left: 8px; }
.lp-entry-field__hint:hover { fill: var(--lp-primary); }
textarea.lp-entry-field__field { overflow-y: hidden; min-height: 40px; } /* floor: auto-grow measures scrollHeight=0 when rendered inside a hidden block, so a bare grow() would collapse it to 0 — min-height keeps it usable until it's revealed and re-measured */
.field-error { font-size: 12px; line-height: 18px; color: var(--lp-danger-solid); margin-top: 6px; }

/* ---------- lp-collapse ---------- */
.lp-collapse__content { padding-left: var(--lp-xl); padding-top: var(--lp-xxs); }  /* 36px / 6px */

/* ---------- lp-datetime-picker (field-only look) ---------- */
lp-datetime-picker { display: inline-block; position: relative; }
.dt-pickers__picker {
  font-size: 14px; padding: 8px; border: 1px solid var(--lp-gray-light); background: #fff; border-radius: var(--lp-radius);
  min-height: 36px; outline: none; user-select: none; cursor: pointer;
  display: flex; align-items: center; justify-content: flex-end; gap: 8px; box-sizing: border-box;
}
.dt-pickers__picker--small { font-size: 13px; line-height: 20px; padding: 4px 8px; min-height: 30px; }
.dt-pickers__picker--disabled { background: var(--lp-gray-verylight); color: var(--lp-gray-medium); cursor: not-allowed; }
.dt-pickers__formatted-date--placeholder { color: var(--lp-gray-medium); }
.dt-pickers__active { border-color: var(--lp-primary); }
.dt-pickers__icon { width: 16px; height: 16px; fill: var(--lp-primary); flex: 0 0 auto; }
.dt-pickers__popover {
  position: absolute; top: calc(100% + 4px); right: 0; background: #fff; border-radius: var(--lp-radius);
  box-shadow: var(--lp-shadow-float); padding: 12px 16px; font-size: 13px; color: var(--lp-gray-medium);
  white-space: nowrap; z-index: 60;
}

/* ---------- lp-form-field ---------- */
lp-form-field { display: block; }
.lp-form-field { margin-bottom: var(--lp-s); }              /* 18px between stacked fields */
.lp-form-field__label { margin-bottom: var(--lp-xxs); font-weight: 600; font-size: 14px; }
.lp-form-field__wrapper { display: flex; flex-direction: column; overflow-wrap: break-word; }
.lp-form-field--double .lp-form-field__wrapper { flex-direction: row; align-items: baseline; gap: 8px; }
.lp-form-field--row { display: flex; align-items: baseline; gap: 10px; }
.lp-form-field--row .lp-form-field__label { margin-bottom: 0; }
.lp-form-field__hint { margin-top: var(--lp-xxs); }

/* ---------- card ---------- */
.lp-card { background: #fff; border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius); }
.lp-card__pad { padding: 24px; display: flex; flex-direction: column; gap: 20px; }
.lp-card__toolbar { display: flex; align-items: center; padding: 16px 20px; gap: 16px; }
.lp-card__section-title { font-weight: 600; font-size: 15px; }

/* ---------- table ---------- */
.lp-table { width: 100%; border-collapse: collapse; background: #fff; }
.lp-table thead th {
  text-align: left; font-weight: 600; font-size: 12px; line-height: 14px; color: var(--lp-gray-medium);
  padding: 10px 16px; border-top: 1px solid var(--lp-gray-light); border-bottom: 1px solid var(--lp-gray-light);
}
.lp-table tbody td { padding: 16px; border-bottom: 1px solid var(--lp-gray-light); vertical-align: middle; }
.lp-table tbody tr:last-child td { border-bottom: none; }
.lp-table .cell-name { color: var(--lp-link); }
.lp-table .row-actions { display: flex; gap: 12px; align-items: center; justify-content: flex-end; }
.lp-icon-btn { border: none; background: none; cursor: pointer; color: var(--lp-gray-medium); padding: 2px; display:inline-flex; }
.lp-icon-btn:hover { color: var(--lp-text); }
.lp-icon-btn svg { width: 18px; height: 18px; fill: currentColor; }

/* ---------- tag / label ---------- */
.lp-tag {
  display: inline-flex; align-items: center; font-weight: 700; padding: 3px 6px;
  border-radius: var(--lp-radius); font-size: 12px; line-height: 16px; white-space: nowrap;
}
.lp-tag--neutral { background: var(--lp-gray-light); color: var(--lp-text); font-weight: 500; }
.lp-tag--success { background: var(--lp-success); color: #fff; }
.lp-tag--danger  { background: var(--lp-danger); color: #fff; font-weight: 500; }
.lp-tag--warning { background: var(--lp-warning); color: var(--lp-text); font-weight: 500; }
.lp-tag--primary { background: var(--lp-primary); color: #fff; }

/* ---------- checkbox (lp-checkbox: real hidden <input>, CSS-driven visuals) ---------- */
.lp-checkbox { flex-direction: column; align-items: flex-start; font-size: 16px; }
.lp-checkbox__label { display: flex; flex-wrap: nowrap; align-items: center; cursor: pointer; }
.lp-checkbox__input { display: none; }
.lp-checkbox__icon {
  width: var(--lp-m); height: var(--lp-m);                 /* 24x24 */
  border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius);
  background: #fff; display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.lp-checkbox__icon--small { width: 18px; height: 18px; }
.lp-checkbox__icon svg { width: 14px; height: 14px; fill: #fff; display: none; }
.lp-checkbox__icon--small svg { width: 11px; height: 11px; }
.lp-checkbox__input:checked + .lp-checkbox__icon,
.lp-checkbox__input:indeterminate + .lp-checkbox__icon,
.lp-checkbox__icon.is-checked, .lp-checkbox__icon.is-indeterminate { background: var(--lp-primary); border-color: var(--lp-primary); }
.lp-checkbox__input:checked + .lp-checkbox__icon svg.ic-check,
.lp-checkbox__icon.is-checked svg.ic-check { display: block; }
.lp-checkbox__input:indeterminate + .lp-checkbox__icon svg.ic-check { display: none; }
.lp-checkbox__input:indeterminate + .lp-checkbox__icon svg.ic-indeterminate,
.lp-checkbox__icon.is-indeterminate svg.ic-indeterminate { display: block; }
.lp-checkbox__input:disabled + .lp-checkbox__icon { background: var(--lp-gray-verylight); border-color: var(--lp-gray-light); cursor: not-allowed; }
/* checked+disabled (informational, forced-on checkboxes): needs higher specificity than either single-state
   rule above, else the disabled rule's later position in source wins and silently erases the checked fill,
   leaving a white check invisible on a near-white box. */
.lp-checkbox__input:checked:disabled + .lp-checkbox__icon { background: var(--lp-primary); border-color: var(--lp-primary); opacity: .5; }
.lp-checkbox__title { margin-left: var(--lp-xs); }         /* 12px */
.lp-checkbox--small { font-size: 14px; }
.lp-checkbox--small .lp-checkbox__title { margin-left: var(--lp-xxs); }  /* 6px */
.lp-checkbox__description { color: var(--lp-gray-medium); font-size: 14px; margin-left: var(--lp-xl); margin-top: 2px; }  /* 36px */

/* ---------- vendor tiles ---------- */
.lp-tiles { display: flex; gap: 12px; }
.lp-tile {
  flex: 1; border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius);
  padding: 20px 16px; text-align: center; font-weight: 600; font-size: 15px; cursor: pointer; background: #fff;
}
.lp-tile.is-selected { border: 2px solid var(--lp-primary); color: var(--lp-primary); }
.lp-tile--dashed { border-style: dashed; }

/* ---------- checklist (activation) ---------- */
.lp-checklist .item { display: flex; align-items: center; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--lp-gray-light); }
.lp-checklist .item:last-child { border-bottom: none; }
.lp-checklist .dot { width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--lp-gray-light); flex:0 0 22px; }
.lp-checklist .dot.done { border: none; background: var(--lp-success); display:flex;align-items:center;justify-content:center;color:#fff; }
.lp-checklist .dot.done svg { width: 13px; height: 13px; fill: #fff; }
.lp-checklist .lbl { font-weight: 600; font-size: 15px; }

/* ---------- empty / block states ---------- */
.lp-empty { padding: 64px 24px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 12px; }

/* ---------- component gallery (shadcn-style) ---------- */
.gx { display: flex; flex-direction: column; gap: 28px; max-width: 900px; }
.gx section { }
.gx h3 { font-size: 15px; font-weight: 700; margin: 0 0 4px; }
.gx .gx-note { color: var(--lp-gray-medium); font-size: 12px; margin: 0 0 10px; }
.gx .demo { display: flex; gap: 14px; flex-wrap: wrap; align-items: center; padding: 20px; border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius); background: #fff; }
.gx .demo--col { flex-direction: column; align-items: stretch; }
.gx .icons { display: grid; grid-template-columns: repeat(auto-fill, minmax(90px,1fr)); gap: 8px; width: 100%; }
.gx .icons .ic-cell { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 12px; border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius); font-size: 11px; color: var(--lp-gray-medium); }
.gx .icons .ic-cell svg { width: 22px; height: 22px; fill: var(--lp-text); }

/* ---------- topbar (real CRM nav — coupon screen uses this, not the sidebar) ---------- */
.lp-app.no-sidebar { flex-direction: column; }
.lp-app.no-sidebar > lp-sidebar { display: none; }
.lp-app.no-sidebar > #view.lp-content { padding: 0; max-width: none; }

.lp-topbar { display: flex; align-items: center; height: 50px; background: var(--lp-dark); color: #cfd0d2; padding: 0 20px; gap: 28px; }
.lp-topbar__logo { display: flex; align-items: center; flex: 0 0 auto; }
.lp-topbar__logo .lp-logo-mark { width: 22px; height: 22px; }
.lp-topbar__nav { display: flex; align-items: center; gap: 22px; flex: 1 1 auto; overflow-x: auto; }
.lp-topbar__nav a { color: #9a9b9e; font-size: 13px; text-decoration: none; white-space: nowrap; cursor: pointer; }
.lp-topbar__nav a:hover { color: #dfe0e2; }
.lp-topbar__nav a.is-active { color: #fff; font-weight: 700; }
.lp-topbar__user { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; cursor: pointer; }
.lp-topbar__user .ava { width: 28px; height: 28px; border-radius: 50%; background: #d9d9d9; flex: 0 0 28px; }
.lp-topbar__user .txt { line-height: 1.25; }
.lp-topbar__user .name { color: #fff; font-size: 13px; font-weight: 700; }
.lp-topbar__user .org { color: #9a9b9e; font-size: 11px; }
.lp-topbar__user .caret { width: 8px; height: 8px; fill: #9a9b9e; }

/* ---------- coupon screen layout ---------- */
.coupon-page { padding: 24px 32px 40px; }
.coupon-cols { display: flex; gap: 40px; align-items: flex-start; margin-top: 24px; }
.coupon-left { flex: 1 1 auto; min-width: 0; max-width: 670px; }
.coupon-right { flex: 0 0 220px; }
.coupon-right__caption { font-size: 11px; color: var(--lp-gray-medium); margin-top: 12px; line-height: 1.5; }
.coupon-divider { border: none; border-top: 1px solid var(--lp-gray-light); margin: 24px 0; }

/* ---------- segmented control (pill switch — reward type, RU/EN) ---------- */
.lp-segment { display: flex; border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius); overflow: hidden; }
.lp-segment__item { flex: 1; text-align: center; padding: 9px 12px; font-size: 14px; cursor: pointer; background: #fff; color: var(--lp-text); border-right: 1px solid var(--lp-gray-light); user-select: none; }
.lp-segment__item:last-child { border-right: none; }
.lp-segment__item.is-active { background: rgba(69,124,231,.22); font-weight: 600; }
.lp-segment--sm { max-width: 200px; }

/* ---------- outline button (neutral action: Включить все) ---------- */
.lp-btn--outline { background: #fff; border: 1px solid var(--lp-primary); color: var(--lp-primary); }
.lp-btn--outline:hover { background: var(--lp-primary-tint); }
.lp-btn--outline:active { background: rgba(69,124,231,.18); }
.lp-btn--outline svg { vertical-align: -2px; margin-right: 4px; }

/* ---------- status plaque (menu position availability — 3 states) ---------- */
.lp-plaque { display: flex; align-items: flex-start; gap: 12px; border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius); padding: 16px 20px; background: #fff; }
.lp-plaque__icon { flex: 0 0 20px; width: 20px; height: 20px; margin-top: 1px; }
.lp-plaque__icon svg { width: 20px; height: 20px; }
.lp-plaque--success .lp-plaque__icon { color: var(--lp-success); }
.lp-plaque--warning .lp-plaque__icon { color: var(--lp-warning); }
.lp-plaque--danger .lp-plaque__icon { color: var(--lp-danger-solid); }
.lp-plaque__body { flex: 1 1 auto; }
.lp-plaque__title { font-weight: 700; font-size: 14px; }
.lp-plaque__title .lp-link { font-weight: 700; }
.lp-plaque__line2 { font-size: 14px; margin-top: 2px; }
.lp-plaque__sub { color: var(--lp-gray-medium); font-size: 12px; margin-top: 4px; }
.lp-plaque__action { flex: 0 0 auto; }

/* ---------- select-with-chip (multi-select display: "Везде ×", "Бронзовый ×") ---------- */
.lp-select--chip { display: flex; align-items: center; }
.lp-select--chip .lp-tag { gap: 6px; cursor: default; }
.lp-select--chip .lp-tag b { font-weight: 400; cursor: pointer; margin-left: 2px; }

/* ---------- textarea + char counter ---------- */
.lp-field--counter { position: relative; }
.lp-field--counter .lp-counter { position: absolute; top: 0; right: 0; font-size: 12px; color: var(--lp-gray-medium); }
textarea.lp-input { min-height: 76px; resize: vertical; line-height: 1.4; padding-top: 8px; width: 100%; font-family: inherit; }

/* ---------- image upload tile (lp-image-uploader empty state, 1:1 ember) ---------- */
.lp-upload-tile { position: relative; display: flex; align-items: center; min-height: 80px; padding: 12px 50px 12px 12px; border: 1px dashed var(--lp-primary); border-radius: var(--lp-radius); cursor: pointer; }
.lp-upload-tile__pic { display: flex; max-width: 60px; flex-shrink: 0; margin-right: 12px; align-items: center; justify-content: center; }
.lp-upload-tile__pic svg { width: 60px; height: 60px; color: var(--lp-primary); }
.lp-upload-tile__caption { display: flex; flex-direction: column; }
.lp-upload-tile .lp-upload-title { color: var(--lp-text); font-size: 16px; line-height: 22px; }
.lp-upload-tile .lp-upload-hint { color: var(--lp-gray-medium); font-size: 14px; line-height: 18px; }

/* ---------- phone preview mock (right column) ---------- */
.lp-phone-preview { border: 1px solid var(--lp-gray-light); border-radius: 16px; padding: 8px; }
.lp-phone-preview__safezone { background: #d5d6d6; border-radius: 8px; min-height: 200px; display: flex; align-items: center; justify-content: center; position: relative; }
.lp-phone-preview__safezone::before { content: ""; position: absolute; inset: 14px; border: 1px dashed rgba(255,255,255,.85); }
.lp-phone-preview__safezone span { color: #fff; font-weight: 700; text-align: center; font-size: 13px; position: relative; z-index: 1; }
.lp-phone-preview__body { padding: 14px 6px 4px; border-top: 1px solid var(--lp-gray-light); margin-top: 8px; }
.lp-phone-preview__title { font-weight: 700; font-size: 14px; }
.lp-phone-preview__desc { color: var(--lp-gray-medium); font-size: 12px; margin: 2px 0 12px; }
.lp-phone-preview__cta { border: 1px solid var(--lp-primary); color: var(--lp-primary); text-align: center; padding: 8px; border-radius: var(--lp-radius); font-weight: 600; font-size: 13px; }

/* ---------- pos-code cell + copy button (modal table) ---------- */
.lp-poscode { display: flex; align-items: center; gap: 6px; white-space: nowrap; }

/* ---------- point pills (modal: outlets where a position is disabled) ----------
   readable-by-design: outlet NAME first (not a bare id), process as an icon+WORD chip
   (not an icon alone) — the raw POS point id is secondary, tucked into the title= tooltip. */
.lp-points-cell { display: flex; flex-wrap: wrap; gap: 8px; }
.lp-point-pill { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius); padding: 5px 8px; font-size: 12px; white-space: nowrap; background: #fff; cursor: default; }
.lp-point-pill svg { fill: currentColor; }
.lp-point-pill .ico-store { width: 15px; height: 15px; flex: 0 0 15px; color: var(--lp-gray-medium); }
.lp-point-pill__outlet { font-weight: 700; color: var(--lp-text); }
.lp-point-pill__proc { display: inline-flex; align-items: center; gap: 4px; padding-left: 6px; margin-left: 2px; border-left: 1px solid var(--lp-gray-light); font-weight: 600; }
.lp-point-pill__proc svg.ico-process { width: 14px; height: 14px; flex: 0 0 14px; }
.lp-point-pill__proc.eat-in { color: #29b6c9; }
.lp-point-pill__proc.pickup { color: var(--lp-success); }
.lp-point-pill__proc.delivery { color: #8a6fd1; }

/* ---------- lp-switch (pill toggle — ember apps/partner lp-switch, e.g. «Активна») ---------- */
.lp-switch { display: flex; align-items: center; gap: 8px; cursor: pointer; user-select: none; }
.lp-switch--disabled { opacity: .5; cursor: not-allowed; pointer-events: none; }
.lp-switch__container { position: relative; width: 40px; height: 20px; flex: 0 0 40px; }
.lp-switch__bar { position: absolute; top: 3px; left: 2px; width: 34px; height: 14px; border-radius: 8px; background: #aeb1b7; transition: background .08s linear; }
.lp-switch--active .lp-switch__bar { background: rgba(69,124,231,.4); }
.lp-switch__thumb { position: absolute; top: 0; left: 0; width: 20px; height: 20px; border-radius: 50%; background: #fff;
  box-shadow: 0 1px 3px 0 rgba(0,0,0,.2), 0 1px 1px 0 rgba(0,0,0,.14), 0 2px 1px -1px rgba(0,0,0,.12);
  transition: transform .08s linear, background .08s linear; }
.lp-switch--active .lp-switch__thumb { background: var(--lp-primary); transform: translateX(18px); }
.lp-switch__label { font-size: 14px; display: flex; align-items: center; gap: 6px; }
.lp-switch__hint { width: 14px; height: 14px; fill: var(--lp-gray-medium); cursor: help; flex: 0 0 auto; }

/* ---------- menu-item screen (sidebar tree + form, T3) ---------- */
.menu-item-cols { display: flex; gap: 24px; align-items: flex-start; }
.menu-left-side { flex: 0 0 230px; display: flex; flex-direction: column; }
.menu-item-form { flex: 1 1 auto; min-width: 0; max-width: 640px; }

/* ---------- modal (wide variant for the disabled-positions table) ---------- */
.lp-modal.lp-modal--wide { width: 1060px; max-width: 96vw; max-height: 88vh; padding: 20px 24px; display: flex; flex-direction: column; }
.lp-modal--wide .lp-modal__head { flex: 0 0 auto; margin-bottom: 12px; }
.lp-modal--wide .disabled-pos { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
.lp-modal--wide .lp-row { flex: 0 0 auto; }
.lp-modal__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.lp-modal .lp-table { border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius); }
.lp-modal .lp-table tbody td { padding: 14px 16px; }
.lp-modal .lp-table thead th { border-top: none; }

/* ---------- disabled-positions modal: position cell (printingTitle convention: "[POS_CODE] Title") ---------- */
.lp-position-cell { display: flex; align-items: center; gap: 6px; }
.lp-position-cell__title { font-weight: 600; }

/* ---------- disabled-positions modal: grouped by position ----------
   position title = full-width group header; outlets nested below (address left,
   menu-type buttons right, danger accent on the OFF process) — reads as
   "position → the outlets/menus where it's unavailable". */
.disabled-pos { border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius); overflow: hidden; }
.disabled-pos__colhead { display: flex; align-items: center; gap: 10px; padding: 7px 16px; border-bottom: 1px solid var(--lp-gray-light); color: var(--lp-gray-medium); font-size: 12px; position: sticky; top: 0; background: #fff; z-index: 1; }
.disabled-pos-group { border-bottom: 1px solid var(--lp-gray-light); }
.disabled-pos-group:last-child { border-bottom: none; }
.disabled-pos-group__title { display: flex; align-items: center; gap: 10px; padding: 7px 16px; background: var(--lp-gray-lightest); font-size: 13px; }
.disabled-outlet-row { display: flex; align-items: center; gap: 10px; padding: 5px 16px 5px 44px; border-top: 1px solid var(--lp-gray-verylight); }
.disabled-outlet-row__name { display: flex; align-items: center; gap: 8px; font-size: 13px; flex: 1 1 auto; }
.disabled-outlet-row__name svg { width: 15px; height: 15px; flex: 0 0 15px; color: var(--lp-gray-medium); }
.disabled-outlet-row__menus { display: flex; gap: 6px; flex: 0 0 auto; }
.menu-type-btn {
  display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border-radius: 16px;
  font-size: 12px; font-weight: 600; white-space: nowrap;
  background: var(--lp-primary-tint); color: var(--lp-primary);
}
.menu-type-btn svg { width: 13px; height: 13px; fill: currentColor; flex: 0 0 13px; }
.menu-type-btn--off { background: #fdf3f0; color: var(--lp-danger-solid); }
.menu-type-btn--absent { background: var(--lp-gray-verylight); color: var(--lp-gray-medium); }
.disabled-outlet-row--absent { opacity: .75; }

/* ---------- menu-item screen chrome: breadcrumb + item header ---------- */
.menu-crumb { color: var(--lp-gray-medium); font-size: 12px; margin-bottom: 20px; }
.menu-crumb__sep { margin: 0 4px; }
.menu-crumb__proc { color: var(--lp-gray-medium); }
.menu-item-form__head { display: flex; align-items: center; gap: 16px; margin-bottom: 16px; }
.menu-item-back { border: none; background: none; color: var(--lp-link); font-weight: 600; font-size: 14px; cursor: pointer; padding: 0; }

/* ---------- menu-item screen: real category tree (1:1 ember lp-dropdown-list + list-item) ---------- */
/* section subheaders — ember .lp-text-bold.lp-text-hint */
.menu-sub { font-weight: 700; color: var(--lp-gray-medium); font-size: 13px; margin: 16px 0 6px; padding-left: 3px; display: flex; align-items: center; gap: 4px; }
.menu-sub:first-child { margin-top: 0; }
.menu-sub--toggle { cursor: pointer; user-select: none; }
.menu-sub__chevron { width: 11px; height: 11px; fill: var(--lp-primary); transition: transform .15s ease; }
.menu-sub--toggle.is-collapsed .menu-sub__chevron { transform: rotate(-90deg); }

.lp-list-legacy { list-style: none; margin: 0 0 4px; padding: 0; }

/* ember list-item component */
.list-item { position: relative; display: flex; align-items: center; color: var(--lp-text); font-size: 13px; min-width: 0; }
.list-item--disabled { opacity: .4; }
.list-item:hover .list-item__extras { opacity: 1; }
.list-item--with-hover { border-radius: var(--lp-radius); cursor: pointer; }
.list-item--with-hover:hover { background: var(--lp-gray-verylight); }
.list-item__picture { margin-right: 12px; flex: 0 0 auto; }
.list-item__title { white-space: nowrap; text-overflow: ellipsis; overflow: hidden; }
.list-item__vis { width: 16px; height: 16px; flex: 0 0 16px; margin-left: 8px; fill: var(--lp-gray-medium); }
.list-item__extras { display: flex; opacity: 0; margin-left: auto; padding-left: 6px; color: var(--lp-gray-medium); transition: opacity .12s ease; }
.list-item__dots { border: none; background: none; cursor: pointer; padding: 2px; color: inherit; display: flex; }
.list-item__dots svg { width: 16px; height: 16px; fill: currentColor; }
.list-item__dots:hover { color: var(--lp-text); }
.menu-category-item { flex: 1 1 auto; min-width: 0; padding: 6px 6px 6px 3px; }

/* ember image-view — bordered thumbnail box (48×36 outer), cover photo */
.image-view { position: relative; display: flex; align-items: center; justify-content: center; width: 46px; height: 34px; border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius); background: #fff; overflow: hidden; flex: 0 0 46px; }
.image-view__ph { width: 22px; height: 22px; fill: var(--lp-gray-light); }
.image-view__photo { position: absolute; inset: 0; background-size: cover; background-position: center; }
.iv-photo-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }

/* ember lp-dropdown-list */
.lp-dropdown-list__item { cursor: pointer; position: relative; display: flex; align-items: center; padding-left: 3px; border-radius: var(--lp-radius); }
.lp-dropdown-list__item:hover { background: var(--lp-gray-verylight); }
.lp-dropdown-list__item:hover .lp-dropdown-list__item-handle { opacity: 1; }
.lp-dropdown-list__item:hover .list-item__extras { opacity: 1; }
.lp-dropdown-list__item.is-active { background: var(--lp-primary-tint); }
.lp-dropdown-list__item-handle { display: flex; align-items: center; padding: 0 3px; opacity: 0; transition: opacity .15s ease; color: var(--lp-gray-light); cursor: grab; flex: 0 0 auto; }
.lp-dropdown-list__item-handle svg { width: 6px; height: 30px; fill: currentColor; }
.lp-dropdown-list__item-toggle { width: 11px; height: 11px; flex: 0 0 11px; margin-right: 2px; fill: var(--lp-gray-medium); transform: rotate(0); transition: transform .1s ease; visibility: hidden; }
.lp-dropdown-list__item--parent > .lp-dropdown-list__item-toggle { visibility: visible; }
.lp-dropdown-list__item--parent.is-collapsed > .lp-dropdown-list__item-toggle { transform: rotate(-90deg); }
.lp-dropdown-list__body { padding-left: 28px; }

.menu-tree-add { margin-top: 8px; }

/* ---------- all-coupons (Приложение) — 1:1 ember content/sections + coupon-card ---------- */
.app-filterbar { display: flex; gap: 16px; flex-wrap: wrap; align-items: flex-end; margin-bottom: 24px; }
.app-filterbar > * { min-width: 160px; }
.app-cols { display: grid; grid-template-columns: minmax(200px,25%) 1fr; gap: 32px; align-items: start; }

/* Разделы — ember sections-list: every row on faint selection bg, active = solid primary */
.app-sections__head { display: flex; align-items: center; gap: 6px; margin-bottom: 12px; }
.app-sections__add { border: none; background: none; color: var(--lp-gray-medium); font-size: 18px; font-weight: 400; cursor: pointer; line-height: 1; padding: 0 2px; }
.app-sections__item { position: relative; padding: 11px 14px; margin-bottom: 3px; font-size: 13px; letter-spacing: .4px; cursor: pointer; color: var(--lp-text); background: var(--lp-primary-tint); }
.app-sections__item:hover, .app-sections__item.is-active { background: var(--lp-primary); color: #fff; }
.app-sections__item--parent::after { content: ''; position: absolute; left: 4px; top: 50%; width: 8px; height: 8px; margin-top: -4px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(-45deg); opacity: .6; }
.app-sections__item--parent { padding-left: 18px; }

.app-coupons__bar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 18px; flex-wrap: wrap; }
.app-coupons__bar lp-tabs { flex: 0 0 auto; }
.app-pager { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--lp-gray-medium); }
.app-pager__nav { width: 30px; height: 30px; border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius); background: #fff; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; color: var(--lp-gray-medium); }
.app-pager__nav svg { width: 12px; height: 12px; fill: currentColor; }
.app-pager__nav:first-child svg { transform: rotate(180deg); }
.app-pager__nav:hover { color: var(--lp-primary); border-color: var(--lp-primary); }
.app-pager__label { margin-left: 4px; }
.app-pager__select { width: 68px; }

/* ember lp-label — status / campaign badges */
.lp-label { display: inline-block; padding: 3px 6px; border-radius: var(--lp-radius); font-size: 11px; font-weight: 700; text-transform: lowercase; line-height: 1.3; white-space: nowrap; }
.lp-label--success { background: #31ca88; color: #fff; }
.lp-label--warning { background: #ffb300; color: var(--lp-text); }
.lp-label--danger  { background: #b72d2a; color: #fff; }
.lp-label--white   { background: #fff; color: var(--lp-text); box-shadow: 0 1px 3px rgba(0,0,0,.18); }
.lp-label--primary { background: var(--lp-primary); color: #fff; }

/* ember coupon-card: full-bleed banner (136px) + overlay badges + capture + footer */
.coupon-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.coupon-card { position: relative; min-height: 220px; display: flex; flex-direction: column; border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius); background: #fff; overflow: hidden; cursor: pointer; }
.coupon-card:hover { box-shadow: var(--lp-shadow-float); }
.coupon-card--add { align-items: center; justify-content: center; border: 2px dashed var(--lp-gray-light); background: transparent; }
.coupon-card--add:hover { box-shadow: none; background: var(--lp-gray-verylight); }
.coupon-card__add-new { text-align: center; color: var(--lp-gray-medium); font-weight: 600; font-size: 13px; }
.coupon-card__add-new svg { display: block; width: 56px; height: 56px; margin: 0 auto 22px; fill: currentColor; }
.coupon-card__lables { position: absolute; top: 10px; right: 10px; z-index: 2; display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }
.coupon-card__picture { position: relative; height: 136px; flex: 0 0 136px; overflow: hidden; background: var(--lp-gray-verylight); }
.coupon-card__cover-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.coupon-card__period { position: absolute; left: 0; right: 0; bottom: 0; background: rgba(49,53,63,.55); color: #fff; font-size: 11px; font-style: italic; padding: 3px 8px; text-align: center; }
.coupon-card__capture { padding: 10px 12px 40px; }
.coupon-card__title { font-weight: 700; font-size: 14px; line-height: 18px; color: var(--lp-text); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.coupon-card__values { position: absolute; left: 12px; bottom: 10px; display: flex; align-items: center; gap: 12px; font-size: 12px; color: var(--lp-gray-medium); }
.coupon-card__values span { display: inline-flex; align-items: center; gap: 4px; }
.coupon-card__values svg { width: 15px; height: 15px; fill: var(--lp-gray-medium); }
.coupon-card__reward { color: var(--lp-text); }
/* UI-17 (Фаза 2): availability check indicator under the card title — shown only when it needs
   attention (grey «не проверялся» / amber «есть выключенные» / red «все выключены»); «все доступны» = no mark */
.coupon-card__avail { display: flex; align-items: center; gap: 6px; margin-top: 6px; font-size: 12px; font-weight: 600; line-height: 1; }
.coupon-card__avail-dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 8px; background: currentColor; }
.coupon-card__avail--warning { color: #c47f00; }
.coupon-card__avail--danger { color: var(--lp-danger-solid); }
.coupon-card__avail--none { color: var(--lp-gray-medium); }
.coupon-card__status { position: absolute; right: 8px; bottom: 8px; }
.coupon-card__dots { border: none; background: none; cursor: pointer; color: var(--lp-gray-medium); padding: 2px 4px; display: flex; }
.coupon-card__dots svg { width: 16px; height: 16px; fill: currentColor; }
.coupon-card__dots:hover { color: var(--lp-text); }
.coupon-card__dots.lp-text-muted { opacity: .4; cursor: default; }

/* ---------- prototype-only demo affordance (not part of the real product UI) ---------- */
.pt-demo-switch { position: fixed; top: 20px; right: 24px; z-index: 140;
  display: inline-flex; gap: 6px; align-items: center; padding: 6px 10px;
  background: #fff; border: 1px dashed var(--lp-gray-light); border-radius: 20px;
  box-shadow: var(--lp-shadow-float); }
.pt-demo-switch span { font-size: 11px; color: var(--lp-gray-medium); }
.pt-demo-switch button { width: 18px; height: 18px; border-radius: 50%; border: 1px solid var(--lp-gray-light); cursor: pointer; padding: 0; }
.pt-demo-switch button.success { background: var(--lp-success); }
.pt-demo-switch button.warning { background: var(--lp-warning); }
.pt-demo-switch button.danger { background: var(--lp-danger-solid); }

/* ---------- modal overlay ---------- */
.lp-overlay {
  position: fixed; inset: 0; background: rgba(30,27,27,.4); display: none;
  align-items: center; justify-content: center; z-index: 200;
}
.lp-overlay.is-open { display: flex; }
.lp-modal { background: #fff; border-radius: var(--lp-radius); padding: 28px; width: 460px; max-width: 92vw; box-shadow: var(--lp-shadow-popover); }
.lp-modal h3 { margin: 0 0 12px; }

/* ============ CRM-7004: управление пользователями ============ */
.cu-toolbar { display:flex; align-items:center; gap:12px; margin-bottom:12px; }
.cu-search { position:relative; }
.cu-search .lp-input { padding-left:36px; width:340px; box-sizing:border-box; min-height:38px; height:38px; }
.cu-toolbar #cuStatus { width:190px; flex:0 0 auto; }
.cu-toolbar #cuStatus .lp-select { min-height:38px; }
.cu-search__ic { position:absolute; left:12px; top:50%; transform:translateY(-50%); width:16px; height:16px; fill:var(--lp-gray-medium); }
.cu-bi { width:16px; height:16px; fill:currentColor; vertical-align:-2px; }
.cu-bi--r { width:12px; height:12px; margin-left:4px; }
.cu-bulk { display:none; align-items:center; gap:16px; background:var(--lp-primary-tint); border:1px solid var(--lp-primary-disabled); border-radius:var(--lp-radius); padding:8px 14px; margin-bottom:12px; }
.cu-bulk.is-show { display:flex; }
.cu-bulk b { color:var(--lp-primary); font-weight:700; }
.cu-tablewrap { background:#fff; border:1px solid var(--lp-gray-light); border-radius:var(--lp-radius); }
.cu-table td, .cu-table th { padding:10px 14px; }
.cu-table .cu-c { width:46px; } .cu-table .cu-id { width:80px; color:var(--lp-gray-medium); }
.cu-table .cu-st { width:150px; } .cu-table .cu-a { width:52px; text-align:right; }
.cu-table th.cu-sort { cursor:pointer; user-select:none; white-space:nowrap; color:var(--lp-link); }
.cu-table th.cu-sort span { text-decoration:underline; text-underline-offset:2px; }
.cu-table th.cu-sort:hover { color:var(--lp-primary-active); }
.cu-sort__i { width:13px; height:13px; margin-right:5px; vertical-align:-2px; fill:currentColor; display:none; }
.cu-table th.is-sorted .cu-sort__i { display:inline-block; }
.cu-table th.is-desc .cu-sort__i { transform:rotate(180deg); }
.cu-name { font-weight:500; }
.cu-pos { display:block; font-size:12px; color:var(--lp-gray-medium); margin-top:2px; }
.cu-self { display:inline-block; margin-left:6px; font-size:11px; font-weight:700; color:var(--lp-primary); background:var(--lp-primary-tint); border-radius:var(--lp-radius); padding:1px 6px; vertical-align:middle; }
.cu-tag { display:inline-flex; align-items:center; gap:6px; padding:3px 9px; font-size:12px; font-weight:700; }
.cu-dot { width:8px; height:8px; border-radius:50%; }
.cu-tag--active { background:rgba(49,202,136,.14); color:#1f9d67; } .cu-tag--active .cu-dot { background:var(--lp-success); }
.cu-tag--arch { background:var(--lp-gray-very-light,#f1f1f1); color:var(--lp-gray-medium); } .cu-tag--arch .cu-dot { background:#b0b2b6; }
.cu-cb { width:18px; height:18px; border:1px solid var(--lp-gray-light); border-radius:var(--lp-radius); background:#fff; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; vertical-align:middle; }
.cu-cb svg { width:12px; height:12px; fill:#fff; display:none; }
.cu-cb.is-on, .cu-cb.is-ind { background:var(--lp-primary); border-color:var(--lp-primary); }
.cu-cb.is-on svg { display:block; }
.cu-cb.is-ind::after { content:""; width:9px; height:2px; background:#fff; border-radius:1px; }
.cu-dots { width:30px; height:30px; border-radius:var(--lp-radius); }
.cu-dots:hover { background:var(--lp-gray-very-light,#f1f1f1); }
.cu-menu { position:absolute; background:#fff; border:1px solid var(--lp-gray-light); border-radius:var(--lp-radius); box-shadow:rgba(149,157,165,.2) 0 8px 24px; padding:4px 0; min-width:196px; z-index:1200; }
.cu-menu__i { display:flex; align-items:center; gap:10px; padding:9px 14px; cursor:pointer; color:var(--lp-text); font-size:14px; }
.cu-menu__i:hover { background:var(--lp-primary-tint); }
.cu-menu__i svg { width:16px; height:16px; fill:var(--lp-gray-medium); }
.cu-menu__i--danger { color:var(--lp-danger,#fe5000); } .cu-menu__i--danger svg { fill:var(--lp-danger,#fe5000); }
.cu-menu__i.is-disabled { color:var(--lp-gray-medium); cursor:not-allowed; opacity:.6; }
.cu-menu__i.is-disabled:hover { background:none; }
.cu-table .cu-st { white-space:nowrap; }
.cu-auto { margin-left:6px; font-size:11px; color:var(--lp-gray-medium); border:1px solid var(--lp-gray-light); border-radius:3px; padding:1px 5px; cursor:help; vertical-align:1px; }
.cu-state { padding:60px 20px; text-align:center; color:var(--lp-gray-medium); }
.cu-state h3 { color:var(--lp-text); font-size:16px; font-weight:900; margin:0 0 6px; }
.cu-pager { justify-content:flex-end; margin-top:16px; }
.cu-pager #cuPrev svg { transform:rotate(180deg); }
.lp-toast { position:fixed; bottom:25px; right:25px; left:auto; transform:translateY(20px); background:var(--lp-success); color:#fff; padding:16px 24px; border-radius:2px; font-size:14px; line-height:1.3; display:flex; align-items:center; gap:10px; z-index:2000; opacity:0; pointer-events:none; transition:.25s; box-shadow:0 4px 16px rgba(0,0,0,.14); max-width:380px; }
.lp-toast.is-show { opacity:1; transform:translateY(0); }
.lp-toast svg { width:18px; height:18px; fill:#fff; flex:0 0 18px; }
.lp-toast--error { background:var(--lp-danger); }
.lp-toast--warning { background:var(--lp-warning); color:var(--lp-text); }
.lp-toast--warning svg { fill:var(--lp-text); }

/* ---- Onboarding (CRM-7819) — screens grid + cards + empty state -------------
   1:1 with ember apps/partner/app/styles/components/onboarding-screen-card.scss */
.onboarding h1 { font-size: 24px; line-height: 36px; font-weight: 900; margin: 0 0 var(--lp-m); }

.onboarding-screens {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: var(--lp-m);
}
.onboarding-screen-card {
  position: relative;
  width: 100%;
  min-width: 0;
  min-height: 460px;
  background: var(--lp-white);
  border-radius: var(--lp-radius);
  border: 1px solid var(--lp-gray-light);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  cursor: grab;
}
.onboarding-screen-card:hover { box-shadow: var(--lp-shadow-float); }
.onboarding-screen-card--add {
  cursor: pointer;
  background: transparent;
  border: 2px dashed var(--lp-gray-light);
  justify-content: center;
  align-items: center;
}
.onboarding-screen-card--add:hover { box-shadow: none; background: var(--lp-gray-verylight); }
.onboarding-screen-card__image { width: 100%; height: 363px; overflow: hidden; background: var(--lp-gray-verylight); }
.onboarding-screen-card__image-img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.onboarding-screen-card__number {
  position: absolute; top: 12px; left: 12px; z-index: 3;
  width: 42px; height: 42px; display: flex; align-items: center; justify-content: center;
  background: var(--lp-primary-tint); color: var(--lp-primary);
  font-size: 16px; font-weight: 600; border-radius: var(--lp-radius);
}
.onboarding-screen-card__type-label { position: absolute; top: 12px; right: 12px; z-index: 3; text-transform: capitalize; }
.onboarding-screen-card__type-label .lp-label { background: #4c5c7c; color: var(--lp-white); box-shadow: none; }
.onboarding-screen-card__overflow { position: absolute; right: 12px; bottom: 12px; z-index: 4; }
.onboarding-screen-card__overflow-trigger {
  display: flex; align-items: center; justify-content: center; padding: 4px;
  cursor: pointer; color: var(--lp-gray-medium); background: transparent; border: none; border-radius: var(--lp-radius);
}
.onboarding-screen-card__overflow-trigger:hover { color: var(--lp-text); background: var(--lp-gray-verylight); }
.onboarding-screen-card__body { flex: 1; padding: 12px; display: flex; flex-direction: column; }
.onboarding-screen-card__title { font-size: 14px; line-height: 20px; color: var(--lp-text); word-break: break-word; }
.onboarding-screen-card__add-new { text-align: center; color: var(--lp-gray-medium); }
.onboarding-screen-card__add-icon { display: block; margin: 0 auto 20px; color: var(--lp-gray-medium); }

/* empty state — no onboarding yet */
.onboarding-empty {
  max-width: 520px; margin: 40px auto; text-align: center;
  border: 1px solid var(--lp-gray-light); border-radius: var(--lp-radius);
  background: var(--lp-white); padding: 48px 40px;
}
.onboarding-empty__icon {
  width: 64px; height: 64px; margin: 0 auto 20px; display: flex; align-items: center; justify-content: center;
  border-radius: 50%; background: var(--lp-primary-tint); color: var(--lp-primary);
}
.onboarding-empty__title { font-size: 18px; font-weight: 700; color: var(--lp-text); margin: 0 0 8px; }
.onboarding-empty__desc { font-size: 14px; line-height: 20px; color: var(--lp-gray-medium); margin: 0 0 24px; }

/* transient success toast */
.onboarding-toast {
  position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%);
  background: var(--lp-success); color: #fff; padding: 12px 20px; border-radius: var(--lp-radius);
  font-size: 14px; font-weight: 500; box-shadow: var(--lp-shadow-float); z-index: 300;
  opacity: 0; transition: opacity .25s;
}
.onboarding-toast.is-on { opacity: 1; }

/* prototype-only demo strip (not part of the real screen) */
.proto-demobar {
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  margin-bottom: var(--lp-m); padding: 8px 14px;
  border: 1px dashed var(--lp-gray-light); border-radius: var(--lp-radius);
  background: var(--lp-gray-lightest); font-size: 13px; color: var(--lp-gray-medium);
}
.proto-demobar__label { font-weight: 700; text-transform: uppercase; letter-spacing: .04em; font-size: 11px; }
.proto-demobar label { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; }
.proto-demobar .lp-link { cursor: pointer; }

/* ---- Onboarding screen editor (CRM-6298 screen, replicated so cards open) ---- */
.onb-edit__crumb { color: var(--lp-gray-medium); font-size: 12px; margin-bottom: 8px; }
.onb-edit__crumb a { color: var(--lp-gray-medium); cursor: pointer; }
.onb-edit__crumb a:hover { color: var(--lp-primary); }
.onb-edit__title { margin: 0 0 var(--lp-m); font-size: 24px; font-weight: 600; color: var(--lp-text); }
.onb-edit__desc { margin: 0 0 var(--lp-xs); font-size: 14px; line-height: 1.45; color: var(--lp-gray-medium); max-width: 720px; }
.onb-edit__row { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 40px; }
.onb-edit__form { flex: 1 1 460px; min-width: 0; max-width: 620px; }
.onb-edit__preview-col { flex: 0 0 300px; display: flex; flex-direction: column; align-items: center; }
.onb-edit__form section { margin-bottom: var(--lp-l); }
.onb-edit__section-title { margin: 0 0 var(--lp-s); font-size: 18px; font-weight: 600; color: var(--lp-text); }
.onb-edit__hint { margin: 0 0 var(--lp-s); font-size: 14px; line-height: 1.45; color: var(--lp-gray-medium); }
.onb-edit__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: var(--lp-l); }
.onb-edit__actions-info { display: flex; gap: 10px; margin-left: auto; }
.onb-legal-radio { display: flex; align-items: flex-start; gap: var(--lp-xs); margin: 0 0 var(--lp-m); cursor: pointer; }
.onb-legal-radio input { flex-shrink: 0; margin: 3px 0 0; cursor: pointer; }
.onb-legal-radio__title { font-size: 14px; line-height: 1.35; color: var(--lp-text); }
.onb-legal-radio__hint { font-size: 12px; line-height: 1.35; color: var(--lp-gray-medium); margin-top: 4px; }
.onb-manage-link { margin-top: var(--lp-m); }
.onb-optional__head { display: flex; align-items: center; gap: 6px; cursor: pointer; user-select: none; font-size: 18px; font-weight: 600; color: var(--lp-gray-medium); margin-bottom: var(--lp-s); }
.onb-optional__chevron { transition: transform .15s ease; }
.onb-optional__chevron.is-open { transform: rotate(180deg); }
.onb-optional__cols { display: flex; gap: var(--lp-s); }
.onb-optional__cols > * { flex: 1 1 0; min-width: 0; }
.onb-uic { display: flex; align-items: center; gap: 8px; margin-top: var(--lp-xs); font-size: 14px; color: var(--lp-text); cursor: pointer; }

/* phone preview (onboarding) */
.onb-preview { width: 280px; border: 8px solid #1e1b1b; border-radius: 30px; overflow: hidden; background: #fff; box-shadow: var(--lp-shadow-float); }
.onb-preview__screen { display: flex; flex-direction: column; height: 520px; }
.onb-preview__image { flex: 1 1 0; min-height: 0; background: var(--lp-gray-verylight); }
.onb-preview__caption { flex: 0 0 auto; padding: 14px; }
.onb-preview__title { font-size: 15px; font-weight: 700; line-height: 1.3; color: var(--lp-text); margin-bottom: 6px; }
.onb-preview__disclaimer { font-size: 11px; line-height: 1.35; color: var(--lp-gray-medium); margin-bottom: 10px; }
.onb-preview__btns { display: flex; flex-direction: column; gap: 6px; }
.onb-preview__btn { min-height: 30px; display: flex; align-items: center; justify-content: center; border-radius: var(--lp-radius); font-size: 12px; font-weight: 500; padding: 4px 8px; text-align: center; }
.onb-preview__btn--primary { background: var(--lp-primary); color: #fff; }
.onb-preview__btn--secondary { background: #fff; color: var(--lp-text); border: 1px solid var(--lp-gray-light); }
.onb-preview__langs { margin-top: var(--lp-m); display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; }
.onb-preview__lang { padding: 4px 10px; border-radius: var(--lp-radius); font-size: 12px; color: var(--lp-gray-medium); cursor: pointer; }
.onb-preview__lang.is-active { background: var(--lp-primary-tint); color: var(--lp-primary); font-weight: 600; }

/* ============ Отчёты (ember apps/partner/app/reports/*, styles/pages/reports/*) ============ */
/* .report-card / .collapse-button — 1:1 из reports.scss ($light #f8f9f9, $accent rgba(69,124,231,.1)) */
.reports-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--lp-l); margin-bottom: var(--lp-xl); align-items: start; }
@media (max-width: 1200px) { .reports-grid { grid-template-columns: repeat(2, 1fr); } }
.reports-group-title { margin: 0 0 var(--lp-m); }
.report-card { padding: 30px 20px 40px; background: #f8f9f9; border-radius: 5px; position: relative; }
.report-card__title { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; margin-bottom: var(--lp-xxs); }
.report-card__hint { color: var(--lp-gray-medium); margin-bottom: var(--lp-m); }
.report-card__form { display: none; }
.report-card.is-open .report-card__form { display: block; }
.report-card__row { margin-bottom: var(--lp-s); }
.report-card__period { display: flex; gap: var(--lp-xxs); }
.report-card__period lp-datetime-picker { flex: 1 1 0; min-width: 0; }
.report-card__actions { display: flex; flex-wrap: wrap; gap: var(--lp-xxs); align-items: center; }
.collapse-button {
  padding: 5px; background: var(--lp-primary-tint); border: none; border-radius: 5px;
  position: absolute; bottom: 10px; right: 10px; cursor: pointer; display: inline-flex; color: var(--lp-primary);
}
.collapse-button svg { width: 14px; height: 14px; fill: currentColor; }
.amount-purchases-table { width: 100%; font-size: 14px; }
.amount-purchases-table td { padding: 3px 0; }
.amount-purchases-table td:last-child { text-align: right; font-weight: 700; }

/* Загрузки (reports/downloads) */
.reports-downloads__hint { color: var(--lp-gray-medium); margin-bottom: var(--lp-m); }
.reports-downloads__filters { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--lp-m); margin-bottom: var(--lp-m); }
.report-table__timestamp { white-space: nowrap; }
.report-table__state { font-weight: 700; }
.report-table__filters { line-height: 1.5; }
.report-table__filters span { color: var(--lp-gray-medium); }
.report-table td { vertical-align: top; }
.text--primary { color: var(--lp-primary); }
.text--success { color: var(--lp-success); }
.text--error { color: var(--lp-danger-solid); }

/* CRM-7967: варианты выгрузки для рекламных кабинетов */
.report-card__ads { margin-top: var(--lp-s); padding-top: var(--lp-s); border-top: 1px solid var(--lp-gray-light); }
.report-card__ads-title { font-weight: 700; margin-bottom: var(--lp-xxs); }
.report-card__ads-hint { color: var(--lp-gray-medium); font-size: 12px; line-height: 18px; margin-bottom: var(--lp-xs); }
.report-card__ads-btns { display: flex; flex-wrap: wrap; gap: var(--lp-xxs); }
