/* =====================================================================
   Nodex.POS — оформление терминала «Nodex» (28.10, решение владельца: вариант A).
   Касса (столы, заказ, оплата), кухня, табель — всё, что под html[data-term] (ставит js/app.js applyTerminal).
   Тёмная (по умолчанию, data-term="dark") — продолжение экрана входа «Nodex — сеть»: зелёно-чёрный фон, зелёный #2BD47D,
   стекло, скругления 14–16px; светлая (data-term="classic") — те же формы на светлых токенах.
   Тема выбирается на устройстве: кнопка ☀/☾ в шапке кассы и кухни или Настройки → Общие → «Оформление Nodex».
   Подключается последним (после mono.css). /owner и /menu (Nodex Mono) этот файл не трогает: там нет data-term.
   ===================================================================== */
:root[data-term] {
  --nx-font: "NodexSans", Inter, -apple-system, "Segoe UI Variable Text", "Segoe UI", Roboto, system-ui, sans-serif;
  --nx-display: "NodexSans Display", "NodexSans", Inter, system-ui, sans-serif;
  --nx-r: 14px; --nx-r-tile: 14px; --nx-r-pill: 999px;
  --nx-new: #F2C14E; --nx-ready: #2BD47D; --nx-unsent: #FF8A80; --nx-pre: #F2C14E;
}
:root[data-term] body, :root[data-term] .ct { font-family: var(--nx-font); background: var(--nx-bg); color: var(--nx-ink); }
:root[data-term] .ct {
  --c-canvas: var(--nx-bg); --c-ink: var(--nx-ink); --c-ink-2: var(--nx-ink-2); --c-line: var(--nx-line);
  --c-lime: var(--nx-accent); --c-lime-ink: var(--nx-accent-ink);
}

/* ---------- Шапка: знак Nodex слева ---------- */
:root[data-term] .ct-top { height: 64px; background: var(--nx-top); border-bottom: 1px solid var(--nx-line); }
:root[data-term] .nx-brand { display: flex; align-items: center; padding: 0 6px 0 18px; flex: none; }
:root[data-term] .nx-brand img { width: 30px; height: 30px; display: block; }
:root[data-term] .ct-user b { font-weight: 600; letter-spacing: -.01em; color: var(--nx-ink); }
:root[data-term] .ct-user span { color: var(--nx-muted); }
:root[data-term] .ct-ic { width: 64px; border-left: 1px solid var(--nx-line); color: var(--nx-ink-2); }
:root[data-term] .ct-ic:hover { background: var(--nx-hover); }
:root[data-term] .ct-ic svg { width: 24px; height: 24px; }
:root[data-term] .ct-ic.lbl span { text-transform: none; letter-spacing: 0; font-size: .7rem; font-weight: 600; }

/* гости — «пилюли» с номером, а не вкладки на всю высоту */
:root[data-term] .ct-guests { align-items: center; gap: 6px; padding: 0 10px; }
:root[data-term] .nx-glab { display: block; font-size: .78rem; font-weight: 600; color: var(--nx-muted); margin-right: 2px; }
:root[data-term][data-term] .ct-gtab { min-width: 52px; height: 48px; padding: 0 14px; flex-direction: row; gap: 6px; border: 1px solid var(--nx-line); border-radius: var(--nx-r-pill);
  background: var(--nx-chip); color: var(--nx-ink); }
:root[data-term] .ct-gtab svg { width: 18px; height: 18px; opacity: .7; }
:root[data-term] .ct-gtab span { font-size: 1rem; font-weight: 700; text-transform: none; letter-spacing: 0; font-variant-numeric: tabular-nums; }
:root[data-term][data-term] .ct-gtab[aria-selected="true"] { background: var(--nx-accent); border-color: var(--nx-accent); color: var(--nx-accent-ink); }
:root[data-term][data-term] .ct-gtab.add { background: transparent; border-style: dashed; color: var(--nx-ink-2); }
:root[data-term] .ct-gtab.add span { font-size: .85rem; font-weight: 600; }
:root[data-term] .ct-top-order .ct-who b { color: var(--nx-ink); font-weight: 600; }
:root[data-term] .ct-top-order .ct-who span { color: var(--nx-muted); }

/* ---------- Нижняя панель ---------- */
:root[data-term] .ct-bar { height: 76px; background: var(--nx-bar); border-top: 1px solid var(--nx-line); padding: 0 6px; gap: 2px; align-items: center; }
:root[data-term][data-term] .cb { height: 64px; min-width: 96px; border: 0; border-radius: 12px; color: var(--nx-ink-2); }
:root[data-term] .cb svg { width: 24px; height: 24px; }
:root[data-term] .cb span { text-transform: none; letter-spacing: 0; font-size: .78rem; font-weight: 600; }
:root[data-term][data-term] .cb:hover:not([disabled]) { background: var(--nx-hover); }
:root[data-term][data-term] .cb.hl, :root[data-term][data-term] .cb.hl:hover:not([disabled]) { background: var(--nx-accent-soft); color: var(--nx-accent-text); }
:root[data-term][data-term] .cb.pay { height: 60px; min-width: 260px; margin-left: 6px; border-radius: 16px; background: var(--nx-accent); color: var(--nx-accent-ink); justify-content: space-between; padding: 0 20px; }
:root[data-term][data-term] .cb.pay:hover:not([disabled]) { background: var(--nx-accent-hi); }
:root[data-term] .cb.pay span { font-size: .95rem; font-weight: 600; }
:root[data-term] .cb.pay b { font-family: var(--nx-display); font-size: 1.4rem; font-weight: 700; letter-spacing: -.01em; }
:root[data-term][data-term] .cb-n { top: 6px; right: 18px; background: var(--nx-badge); color: var(--nx-badge-ink); }

/* ---------- Экран столов ---------- */
:root[data-term] .ct-tables { grid-template-columns: 220px minmax(0, 1fr); }
:root[data-term][data-term] .ct-halls { background: var(--nx-panel); border-right: 1px solid var(--nx-line); padding: 8px; gap: 4px; }
:root[data-term][data-term] .ct-side .ct-dept { min-height: 60px; border: 0; border-radius: 12px; padding: 0 12px 0 34px; color: var(--nx-ink); font-weight: 600; background: transparent; }
:root[data-term] .ct-side .ct-dept::before { left: 14px; top: 50%; bottom: auto; width: 10px; height: 10px; margin-top: -5px; border-radius: 50%; }
:root[data-term][data-term] .ct-side .ct-dept[aria-pressed="true"]:not(.open) { background: var(--nx-accent-soft); color: var(--nx-accent-text); }
:root[data-term][data-term] .ct-side .ct-dept.open[aria-pressed="true"] { background: transparent; color: var(--nx-ink); }
:root[data-term] .ct-subs { background: transparent; gap: 2px; display: flex; flex-direction: column; }
:root[data-term][data-term] .ct-hall { border: 0; border-radius: 12px; color: var(--nx-ink-2); background: transparent; }
:root[data-term][data-term] .ct-hall.sub { min-height: 52px; padding-left: 34px; font-weight: 500; }
:root[data-term][data-term] .ct-hall[aria-pressed="true"] { background: var(--nx-accent-soft); color: var(--nx-accent-text); font-weight: 700; box-shadow: inset 3px 0 0 var(--nx-accent); }
:root[data-term] .ct-dept .cb-n { background: var(--nx-badge); color: var(--nx-badge-ink); }
:root[data-term][data-term] .ct-grid { gap: 10px; padding: 14px; background: var(--nx-bg); grid-auto-rows: minmax(120px, 172px); }
:root[data-term][data-term] .ct-table { margin: 0; border: 1px solid var(--nx-tile-line); border-radius: var(--nx-r-tile); background: var(--nx-tile); color: var(--nx-ink); }
:root[data-term][data-term] .ct-table.void { border: 1px dashed var(--nx-void); background: transparent; }
:root[data-term][data-term] .ct-table.free:hover { background: var(--nx-tile-hover); }
:root[data-term] .ct-tname { top: 12px; left: 14px; font-size: 1.15rem; font-weight: 700; font-variant-numeric: tabular-nums; }
:root[data-term][data-term] .ct-plus { background: transparent; border: 1.5px solid var(--nx-line-strong); color: var(--nx-muted); }
:root[data-term][data-term] .ct-table.busy { background: var(--nx-busy); border-color: var(--nx-accent); color: var(--nx-ink); }
:root[data-term][data-term] .ct-table.busy b { font-family: var(--nx-display); font-weight: 700; color: var(--nx-ink); }
:root[data-term] .ct-table.busy .ct-tmin { color: var(--nx-accent-text); opacity: 1; }
:root[data-term][data-term] .ct-table.pre { background: var(--nx-pre-soft); border-color: var(--nx-pre); color: var(--nx-ink); }
:root[data-term] .ct-dhead h2 { color: var(--nx-ink); }
:root[data-term][data-term] .ct-ord { border-radius: var(--nx-r-tile); background: var(--nx-tile); color: var(--nx-ink); border: 1px solid var(--nx-tile-line); }
:root[data-term] .cb-new { border-radius: 12px; background: var(--nx-accent); color: var(--nx-accent-ink); text-transform: none; }

/* ---------- Экран заказа: левая панель ---------- */
:root[data-term][data-term] .co-left { background: var(--nx-panel); border-right: 1px solid var(--nx-line); }
:root[data-term][data-term] .co-head { background: transparent; color: var(--nx-ink); padding: 12px 16px; border-bottom: 1px solid var(--nx-line); }
:root[data-term] .co-h-i { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; background: var(--nx-accent-soft); color: var(--nx-accent-text); }
:root[data-term] .co-h-i svg { width: 22px; height: 22px; opacity: 1; }
:root[data-term] .co-h-c small { color: var(--nx-muted); opacity: 1; }
:root[data-term][data-term] .co-gbar { justify-content: flex-start; padding: 8px 16px; background: transparent; color: var(--nx-muted); font-weight: 600; font-size: .8rem; }
:root[data-term] .co-gbar span { right: 16px; color: var(--nx-ink-2); }
:root[data-term][data-term] .co-lines { background: transparent; color: var(--nx-ink); padding: 0 8px; }
:root[data-term][data-term] .co-line { grid-template-columns: 44px minmax(0, 1fr) auto; gap: 12px; padding: 10px 10px; border-bottom: 1px solid var(--nx-line); border-radius: 0; align-items: center; }
:root[data-term][data-term] .co-line:hover { background: var(--nx-hover); }
:root[data-term][data-term] .co-line.sel { background: var(--nx-accent-soft); box-shadow: inset 3px 0 0 var(--nx-accent); border-radius: 10px; }
:root[data-term] .co-q { height: 34px; border-radius: 10px; display: grid; place-items: center; background: var(--nx-chip); font-size: 1rem; font-weight: 700; text-align: center; }
:root[data-term] .co-q::after { content: "×"; font-weight: 500; opacity: .55; margin-left: 1px; }
:root[data-term] .co-q { grid-auto-flow: column; justify-content: center; }
:root[data-term] .co-n b { font-weight: 600; font-size: 1.05rem; }
:root[data-term][data-term] .co-n small { color: var(--nx-muted); }
:root[data-term][data-term] .co-n .co-st { color: var(--nx-new); font-weight: 600; }
:root[data-term][data-term] .co-n .co-st.st-ready { color: var(--nx-ready); }
:root[data-term][data-term] .co-n .co-st.st-served { color: var(--nx-muted); }
:root[data-term][data-term] .co-line:not(.sent) .co-st { color: var(--nx-unsent); }
:root[data-term] .co-s { font-weight: 600; font-size: 1.05rem; }

/* итоги: строки «Сумма / Скидка / Сервис / Аванс» + «К оплате» */
:root[data-term][data-term] .co-sum.nx-sum { display: block; padding: 10px 16px 12px; background: var(--nx-panel-2); border-top: 1px solid var(--nx-line); color: var(--nx-ink); }
:root[data-term] .nx-rows { display: grid; grid-template-columns: 1fr 1fr; column-gap: 28px; row-gap: 4px; margin: 0; }
:root[data-term] .nx-rows > div { display: flex; justify-content: space-between; align-items: baseline; font-size: .9rem; }
:root[data-term] .nx-rows dt { color: var(--nx-muted); }
:root[data-term] .nx-rows dt small { font-size: .78rem; opacity: .8; margin-left: 2px; }
:root[data-term] .nx-rows dd { margin: 0; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--nx-ink-2); }
:root[data-term][data-term] .nx-sum .co-total { display: flex; justify-content: space-between; align-items: baseline; padding: 8px 0 0; margin-top: 8px; border-top: 1px dashed var(--nx-line-strong); background: transparent; color: var(--nx-ink); }
:root[data-term] .nx-sum .co-total > span { display: block; font-size: 1rem; font-weight: 600; color: var(--nx-ink-2); }
:root[data-term][data-term] .nx-sum .co-total b { font-family: var(--nx-display); font-size: 1.75rem; font-weight: 700; letter-spacing: -.02em; color: var(--nx-ink); }

/* действия с позицией: иконка + подпись */
:root[data-term][data-term] .co-tools { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 6px; padding: 8px; background: var(--nx-panel-2); border-top: 1px solid var(--nx-line); }
:root[data-term][data-term] .co-t { height: 58px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; border: 1px solid var(--nx-line); border-radius: 12px; background: var(--nx-chip); color: var(--nx-ink); }
:root[data-term] .co-t svg { width: 22px; height: 22px; }
:root[data-term] .nx-tl { display: block; font-size: .72rem; font-weight: 600; color: var(--nx-ink-2); }
:root[data-term][data-term] .co-t:hover { background: var(--nx-hover); }
:root[data-term][data-term] .co-t.del { color: var(--nx-unsent); }
:root[data-term] .co-t.del .nx-tl { color: var(--nx-unsent); }

/* ---------- Экран заказа: меню ---------- */
:root[data-term][data-term] .cm-nav { height: 64px; padding: 8px; gap: 6px; background: var(--nx-bg); border-bottom: 1px solid var(--nx-line); color: var(--nx-ink); }
:root[data-term][data-term] .cm-nb { width: 52px; border: 1px solid var(--nx-line); border-radius: 12px; background: var(--nx-chip); color: var(--nx-ink); }
:root[data-term] .cm-nb svg { width: 22px; height: 22px; }
:root[data-term] .cm-path { font-size: 1.05rem; font-weight: 700; color: var(--nx-ink); }
:root[data-term][data-term] .cm-q { margin: 0; border-radius: 12px; border: 1px solid var(--nx-line-strong); background: var(--nx-chip); color: var(--nx-ink); }
:root[data-term] .nx-course { display: flex; align-items: center; gap: 4px; padding: 4px; border-radius: 14px; background: var(--nx-chip); border: 1px solid var(--nx-line); }
:root[data-term] .nx-clab { display: block; padding: 0 8px 0 6px; font-size: .78rem; font-weight: 600; color: var(--nx-muted); }
:root[data-term][data-term] .cm-course { width: 44px; height: 100%; border: 0; border-radius: 10px; background: transparent; color: var(--nx-ink-2); letter-spacing: 0; font-variant-numeric: tabular-nums; }
:root[data-term][data-term] .cm-course[aria-pressed="true"]:not([disabled]) { background: var(--nx-accent); color: var(--nx-accent-ink); }
:root[data-term][data-term] .cm-course[disabled], :root[data-term][data-term] .cm-course[disabled][aria-pressed="true"] { color: var(--nx-muted); opacity: .55; background: transparent; }
:root[data-term] .nx-course:has(.cm-course[disabled]) .nx-clab { opacity: .6; }

:root[data-term][data-term] .cm-grid { gap: 8px; padding: 10px; grid-auto-rows: 96px; background: var(--nx-bg); }
:root[data-term][data-term] .cm-tile { min-height: 96px; border-radius: var(--nx-r-tile); border: 1px solid var(--nx-tile-line); background: var(--nx-tile); color: var(--nx-ink); }
:root[data-term][data-term] .cm-tile.grp { background: var(--nx-tile); }
:root[data-term] .cm-n { font-weight: 600; font-size: 1rem; }
:root[data-term] .cm-p { color: var(--nx-ink-2); opacity: 1; font-weight: 600; }
:root[data-term][data-term] .cm-tile:active { filter: none; background: var(--nx-tile-hover); }
:root[data-term][data-term] .cm-cnt { background: var(--nx-accent); color: var(--nx-accent-ink); }
:root[data-term][data-term] .cm-info { width: 26px; height: 26px; border: 1px solid var(--nx-line-strong); color: var(--nx-muted); font: 600 .78rem var(--nx-font); font-style: normal; }
:root[data-term][data-term] .cm-cell.stopped .cm-tile { background: repeating-linear-gradient(-45deg, var(--nx-tile), var(--nx-tile) 8px, var(--nx-panel-2) 8px, var(--nx-panel-2) 16px); color: var(--nx-muted); }
:root[data-term][data-term] .cm-stop { background: var(--nx-unsent); color: #1A0505; border-radius: 6px; }
:root[data-term] .cm-empty { color: var(--nx-muted); }

/* ---------- Окна кассы и оплата ---------- */
:root[data-term][data-term] dialog.modal { background: var(--nx-modal); color: var(--nx-ink); border: 1px solid var(--nx-line); }
:root[data-term][data-term] dialog.term-modal { border-radius: 24px; box-shadow: var(--nx-modal-shadow); font-family: var(--nx-font); }
:root[data-term] dialog.modal::backdrop { background: var(--nx-backdrop); }
:root[data-term] dialog.term-modal .modal-head h2 { font-weight: 700; letter-spacing: -.01em; }
:root[data-term][data-term] dialog.term-modal .btn { border-radius: 14px; background: var(--nx-chip); border: 1px solid var(--nx-line); color: var(--nx-ink); }
:root[data-term][data-term] dialog.term-modal .btn:hover { background: var(--nx-hover); }
:root[data-term][data-term] dialog.term-modal .btn-primary, :root[data-term][data-term] #pay-go, :root[data-term][data-term] #pay-go:hover { background: var(--nx-accent); border-color: var(--nx-accent); color: var(--nx-accent-ink); font-weight: 700; }
:root[data-term][data-term] .pay-sum { border-radius: 18px; background: var(--nx-panel-2); border: 1px solid var(--nx-line); color: var(--nx-ink); }
:root[data-term] .pay-line { color: var(--nx-ink-2); }
:root[data-term][data-term] .pay-total { font-family: var(--nx-display); color: var(--nx-ink); }
:root[data-term] .pay-line.big { border-top-color: var(--nx-line); }
:root[data-term] .pay-line.big b { color: var(--nx-ink); }
:root[data-term] .pay-line.change.on b { color: var(--nx-accent-text); }
:root[data-term][data-term] .pay-m { min-height: 64px; border-radius: 14px; border: 1.5px solid var(--nx-line); background: var(--nx-chip); color: var(--nx-ink); font-weight: 600; font-size: .95rem; padding: 0 6px; }
:root[data-term][data-term] .pay-m svg { width: 22px; height: 22px; flex: none; color: var(--nx-ink-2); }
:root[data-term][data-term] .pay-m[aria-checked="true"] { background: var(--nx-accent-soft); border: 2px solid var(--nx-accent); color: var(--nx-accent-text); }
:root[data-term][data-term] .pay-m[aria-checked="true"] svg { color: var(--nx-accent-text); }
:root[data-term][data-term] .pay-entry { border-radius: 14px; border: 1.5px solid var(--nx-line-strong); background: var(--nx-input); color: var(--nx-ink); font-family: var(--nx-display); }
:root[data-term] .pay-display label { color: var(--nx-muted); }
:root[data-term][data-term] .pay-notes .note { border-radius: 12px; background: transparent; border: 1.5px solid var(--nx-line-strong); color: var(--nx-ink); }
:root[data-term][data-term] .numpad .key { border-radius: 14px; background: var(--nx-chip); border: 1px solid var(--nx-line); color: var(--nx-ink); font-weight: 500; }
:root[data-term] :is(.cb, .ct-ic, .ct-hall, .ct-dept, .ct-table, .ct-gtab, .co-t, .cm-nb, .cm-course, .cm-tile, .cm-info, .co-line, .pay-m, .key, .note, .btn):focus-visible { outline: 3px solid var(--nx-accent); outline-offset: -3px; }

:root[data-term] {
  --nx-bg: #070A09; --nx-top: #080C0A; --nx-bar: #080C0A; --nx-panel: #0B110E; --nx-panel-2: #0E1612;
  --nx-tile: #111915; --nx-tile-line: rgba(255, 255, 255, .07); --nx-tile-hover: #16211B; --nx-void: rgba(255, 255, 255, .05);
  --nx-chip: rgba(255, 255, 255, .045); --nx-hover: rgba(255, 255, 255, .06); --nx-input: rgba(0, 0, 0, .35);
  --nx-line: rgba(255, 255, 255, .075); --nx-line-strong: rgba(255, 255, 255, .16);
  --nx-ink: #F4F6F5; --nx-ink-2: rgba(244, 246, 245, .80); --nx-muted: rgba(244, 246, 245, .54);
  --nx-accent: #2BD47D; --nx-accent-hi: #3BE38D; --nx-accent-ink: #04170C; --nx-accent-soft: rgba(43, 212, 125, .12); --nx-accent-text: #4BE597;
  --nx-busy: linear-gradient(160deg, rgba(43, 212, 125, .16), rgba(43, 212, 125, .05)); --nx-pre-soft: rgba(242, 193, 78, .10);
  --nx-badge: #2BD47D; --nx-badge-ink: #04170C;
  --nx-modal: linear-gradient(180deg, #121A16 0%, #0B0F0D 100%); --nx-modal-shadow: inset 0 1px 0 rgba(255, 255, 255, .08), 0 40px 100px -30px rgba(0, 0, 0, .9);
  --nx-backdrop: rgba(2, 4, 3, .72);
  --nx-r-tile: 16px;
  color-scheme: dark;
}
:root[data-term="classic"][data-term] {
  --nx-bg: #EEF1EF; --nx-top: #FFFFFF; --nx-bar: #FFFFFF; --nx-panel: #FFFFFF; --nx-panel-2: #F5F7F6;
  --nx-tile: #FFFFFF; --nx-tile-line: #DCE2DE; --nx-tile-hover: #F3F7F5; --nx-void: #DCE2DE;
  --nx-chip: #F2F5F3; --nx-hover: rgba(10, 30, 20, .05); --nx-input: #FFFFFF;
  --nx-line: #E2E7E4; --nx-line-strong: #C6CEC9; --nx-ink: #0D1411; --nx-ink-2: #36403B; --nx-muted: #66706B;
  --nx-accent-soft: #DDF6E8; --nx-accent-text: #0B7A43; --nx-busy: #E6F8EE; --nx-pre-soft: #FBF1D6;
  --nx-new: #9A6B00; --nx-ready: #0B7A43; --nx-unsent: #C2362B;
  --nx-modal: #FFFFFF; --nx-modal-shadow: 0 30px 80px -20px rgba(10, 30, 20, .35); --nx-backdrop: rgba(10, 20, 15, .45);
  color-scheme: light;
}
/* фон кассы — едва заметное зелёное свечение, как на входе */
:root[data-term]:not([data-term="classic"]) .ct { background: radial-gradient(90% 70% at 70% 0%, #0B1410 0%, #070A09 60%); }
:root[data-term]:not([data-term="classic"]) .cm-grid, :root[data-term]:not([data-term="classic"]) .ct-grid, :root[data-term]:not([data-term="classic"]) .cm-nav { background: transparent; }

/* плитки блюд: полоса категории слева, название сверху, цена снизу — по левому краю */
:root[data-term][data-term] .cm-tile { align-items: flex-start; justify-content: space-between; text-align: left; padding: 12px 34px 10px 18px;
  box-shadow: inset 4px 0 0 var(--cc, #3A4A42); background: linear-gradient(180deg, rgba(255, 255, 255, .035), rgba(255, 255, 255, 0)) , var(--nx-tile); }
:root[data-term="classic"][data-term] .cm-tile { background: var(--nx-tile); }
:root[data-term] .cm-n { line-height: 1.22; }
:root[data-term] .cm-p { font-size: .86rem; color: var(--nx-accent-text); }
:root[data-term][data-term] .cm-tile.grp { box-shadow: inset 6px 0 0 var(--cc, #3A4A42); }
:root[data-term] .cm-tile.grp small { color: var(--nx-muted); opacity: 1; font-size: .78rem; }
:root[data-term][data-term] .cm-tile:has(.cm-cnt) { padding-top: 12px; padding-left: 18px; }
:root[data-term][data-term] .cm-cnt { top: auto; bottom: 8px; left: auto; right: 8px; min-width: 28px; height: 28px; border-radius: 14px; font-size: .85rem; }
:root[data-term][data-term] .cm-tile:has(.cm-cnt) { border-color: rgba(43, 212, 125, .55); }
:root[data-term][data-term] .cm-info { top: 8px; right: 8px; }

/* столы — карточки со «стеклом»; занятый — зелёная рамка и свечение */
:root[data-term][data-term] .ct-table { background: linear-gradient(180deg, rgba(255, 255, 255, .03), rgba(255, 255, 255, 0)), var(--nx-tile); }
:root[data-term][data-term] .ct-table.busy { background: var(--nx-busy); box-shadow: 0 0 0 1px var(--nx-accent), 0 10px 30px -14px rgba(43, 212, 125, .55); }
:root[data-term="classic"][data-term] .ct-table { background: var(--nx-tile); }
:root[data-term="classic"][data-term] .ct-table.busy { background: var(--nx-busy); box-shadow: 0 0 0 1px var(--nx-accent); }
:root[data-term] .ct-table.busy b { font-size: 1.5rem; }

/* «К оплате» — как кнопка «Войти» на экране входа */
:root[data-term][data-term] .cb.pay { border-radius: 30px; background: linear-gradient(180deg, #3BE38D 0%, #24C774 100%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), inset 0 -1px 0 rgba(0, 0, 0, .12), 0 10px 30px -10px rgba(43, 212, 125, .55); }
:root[data-term][data-term] #pay-go { border-radius: 30px; background: linear-gradient(180deg, #3BE38D 0%, #24C774 100%); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), 0 10px 30px -10px rgba(43, 212, 125, .55); }

/* цифровая клавиатура оплаты — «кольца» как на входе */
:root[data-term][data-term] .numpad .key { border: 0; border-radius: 30px; background: radial-gradient(120% 120% at 50% 0%, rgba(255, 255, 255, .07) 0%, rgba(255, 255, 255, .02) 60%);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .09); font-weight: 300; font-size: 1.6rem; }
:root[data-term][data-term] .numpad .key:active { box-shadow: inset 0 0 0 1.5px rgba(43, 212, 125, .75), 0 0 24px -6px rgba(43, 212, 125, .6); }
:root[data-term="classic"][data-term] .numpad .key { background: var(--nx-chip); box-shadow: inset 0 0 0 1px var(--nx-line); }
:root[data-term][data-term] .pay-m { border-radius: 30px; min-height: 60px; flex-direction: row; gap: 8px; }
:root[data-term][data-term] .pay-notes .note { border-radius: 24px; }
:root[data-term][data-term] dialog.term-modal { border-radius: 28px; }
:root[data-term][data-term] .pay-sum { background: rgba(255, 255, 255, .025); }
:root[data-term="classic"][data-term] .pay-sum { background: var(--nx-panel-2); }

/* ---------- Общие токены терминала: всё, что раньше брало --c-* / --bg / --brand (кухня, окна, табель, планшет официанта) ---------- */
:root[data-term][data-term] {
  --nx-solid: #1B4A34; --nx-solid-ink: #FFFFFF;
  --c-canvas: var(--nx-bg); --c-canvas-2: var(--nx-panel); --c-top: var(--nx-top); --c-tile: var(--nx-solid); --c-tile-2: var(--nx-solid); --c-tile-hi: var(--nx-solid);
  --c-lime: var(--nx-accent); --c-lime-ink: var(--nx-accent-ink); --c-bar: var(--nx-bar); --c-bar-2: var(--nx-panel-2); --c-line: var(--nx-line);
  --c-ink: var(--nx-ink); --c-ink-2: var(--nx-ink-2);
  --bg: var(--nx-bg); --surface: var(--nx-panel); --surface-2: var(--nx-panel-2); --surface-3: var(--nx-chip);
  --ink: var(--nx-ink); --ink-2: var(--nx-ink-2); --muted: var(--nx-muted); --line: var(--nx-line); --line-strong: var(--nx-line-strong);
  --brand: var(--nx-accent); --brand-hover: var(--nx-accent-hi); --brand-ink: var(--nx-accent-ink); --brand-text: var(--nx-accent-text); --brand-soft: var(--nx-accent-soft);
  --saffron: var(--nx-accent); --saffron-soft: var(--nx-accent-soft); --focus: var(--nx-accent); --chart-bar: var(--nx-accent);
  --font: var(--nx-font);
}
:root[data-term="classic"][data-term] { --nx-solid: #1F6B45; }
:root[data-term][data-term] body { background: var(--nx-bg); color: var(--nx-ink); }
/* бейджи и выбор в старых правилах — зелёные */
:root[data-term][data-term] .cb-n { background: var(--nx-badge); color: var(--nx-badge-ink); }

/* ---------- ☀/☾ переключатель темы (касса, кухня): показан значок той темы, на которую переключит ---------- */
.theme-tgl .th-sun, .theme-tgl .th-moon { display: none; }
:root[data-term="dark"] .theme-tgl .th-sun, :root:not([data-term]) .theme-tgl .th-sun { display: block; }
:root[data-term="classic"] .theme-tgl .th-moon { display: block; }
:root[data-term] .ct-ic.theme-tgl svg { width: 24px; height: 24px; }
:root[data-term] .k-theme { margin-left: auto; width: 56px; height: 56px; min-height: 56px; border-radius: 16px; display: grid; place-items: center; padding: 0; }
:root[data-term] .k-theme svg { width: 24px; height: 24px; }

/* ---------- Кухня ---------- */
:root[data-term][data-term] .kitchen-head h1, :root[data-term][data-term] #k-upd { color: var(--nx-ink); }
:root[data-term][data-term] .kitchen-head h1::before { content: ""; display: inline-block; width: 30px; height: 30px; margin-right: 12px; vertical-align: -6px;
  background: url("/img/brand/nodex/nodex-mark-small.svg") center / contain no-repeat; }
:root[data-term][data-term] .k-card { border-radius: 18px; border: 1px solid var(--nx-line); background: var(--nx-panel); color: var(--nx-ink); overflow: hidden; }
:root[data-term][data-term] .k-card header { background: var(--nx-panel-2); color: var(--nx-ink); border-bottom: 1px solid var(--nx-line); box-shadow: inset 4px 0 0 var(--nx-accent); }
:root[data-term][data-term] .kitchen-head .seg { background: var(--nx-chip); border-radius: 14px; }
:root[data-term][data-term] .kitchen-head .seg button[aria-pressed="true"] { background: var(--nx-accent); color: var(--nx-accent-ink); }
:root[data-term][data-term] .k-all { border-radius: 14px; }

/* ---------- Настройки → «Оформление Nodex» (бэк-офис): две строки переключателей ---------- */
.theme-rows { display: grid; gap: 8px; }
.theme-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.theme-row > span { font-weight: 600; min-width: 120px; }

/* QA2: длинное название блюда не наезжает на цену — до 3 строк с многоточием, цена всегда отдельной строкой внизу */
:root[data-term] .cm-tile .cm-n { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; min-width: 0; }
:root[data-term] .cm-tile .cm-p { display: block; flex: none; white-space: nowrap; margin-top: auto; }
