/* Norbiss POS на планшете: только то, чего нет в стилях кассы pos/static (www/pos.css — те же токены Norbiss и классы).
   Экраны входа и привязки, ПИН-клавиатура, строка состояния очереди, раздел без строки действий хаба, отступы под вырез и
   полосу «домой» iPad. Цвета — только переменные Norbiss из pos.css; цели касания ≥ 44 px. */

#app{height:100%}
/* вырез и полоса «домой»: меню и рабочая область не уходят под системные элементы */
.sidebar{padding-top:max(var(--s4),env(safe-area-inset-top));padding-left:max(var(--s3),env(safe-area-inset-left))}
.app-shell{padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right)}
main{padding-bottom:max(var(--s4),env(safe-area-inset-bottom))}
.sidebar .brand{margin-bottom:var(--s3)}
.reg-brand{display:flex;align-items:flex-end;gap:.32em;color:var(--pos-brand);font-size:26px;line-height:1}
.reg-brand .nbmark{height:.98em;width:auto;flex:none;margin-bottom:.01em}
.reg-brand .nbwm-i::after{top:-.06em}
.reg-brand{padding-top:.18em}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .reg-brand .brandpos{color:var(--ic-a)}}
:root[data-theme="dark"] .reg-brand .brandpos{color:var(--ic-a)}
.brand .brandtext,.reg-brand .brandtext{font-size:1em;align-items:baseline;gap:.34em}
.reg-brand .brandpos{font-size:.5em;font-weight:700;letter-spacing:.14em;color:var(--nb-cobalt);background:none;padding:0 0 0 .7em;border-radius:0;border-left:1.5px solid color-mix(in srgb,var(--pos-brand) 22%,transparent);align-self:center;line-height:1.5}

/* ---- привязка и вход ---- */
.reg-gate{min-height:100%;height:100%;overflow:auto;display:grid;place-items:center;padding:max(var(--s5),env(safe-area-inset-top)) var(--s5) max(var(--s5),env(safe-area-inset-bottom))}
.reg-card{width:min(520px,100%);display:flex;flex-direction:column;gap:var(--s3)}
.reg-card>.reg-brand{margin-bottom:var(--s3)}
.reg-card .brandtext{position:static;clip:auto;width:auto;height:auto;overflow:visible}
.reg-card h1{margin:0}
.reg-card>.hint{margin:0}
.reg-form{display:flex;flex-direction:column;gap:var(--s2)}
.reg-form label{margin:var(--s2) 0 0}
.reg-form>.primary{margin-top:var(--s2);min-height:52px;font-size:var(--fs-lead)}
.reg-error{margin:0;min-height:20px;font-size:var(--fs-body);font-weight:600}
.reg-error:empty{min-height:0}
.reg-tabs{display:grid;grid-template-columns:1fr 1fr;gap:var(--s1);padding:var(--s1);border-radius:var(--r-pill);background:var(--d-surface2)}
.reg-tabs button{border:0;background:transparent}
.reg-tabs button.active{background:var(--d-surface);box-shadow:var(--d-shadow);color:var(--d-accent-ink)}
.reg-people{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s2)}
.reg-people button{min-height:64px;justify-content:flex-start;border:0;background:var(--d-surface2);border-radius:var(--r-panel);padding:0 var(--s4);font-size:var(--fs-lead)}
.reg-people button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reg-pin{display:flex;flex-direction:column;gap:var(--s2)}
.reg-who{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);margin:0;font-size:var(--fs-lead)}
.reg-who strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reg-pin label{margin:0}
.reg-pin-input{letter-spacing:.4em;text-align:center;font-size:var(--fs-h2);font-weight:800}
.reg-keypad{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s2)}
.reg-keypad button{min-height:60px;border-radius:var(--r-panel);border:0;background:var(--d-surface2);font-size:var(--fs-h2);font-weight:800}
.reg-keypad button.primary{background:var(--d-accent);font-size:var(--fs-lead)}
.reg-keypad button.primary:disabled{background:var(--nb-disabled)}

/* ---- верхняя строка: смена и отправка чеков (мелкой строкой, как подпись бизнеса у кассы хаба) ---- */
.reg-status-slot{display:flex;align-items:center;gap:var(--s1);min-width:0}
.reg-status{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-cap);font-weight:600;color:var(--d-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.reg-status::before{content:"";flex:none;width:7px;height:7px;border-radius:50%;background:var(--d-dot)}
.reg-status.warn{color:var(--d-warn)}.reg-status.warn::before{background:var(--nb-yellow)}
.reg-status.bad{color:var(--d-red)}.reg-status.bad::before{background:var(--d-red)}
.reg-status-slot .icon-button{border:0;background:transparent}
.store-pill{min-height:44px;display:inline-flex;align-items:center;border-radius:var(--r-pill)}
.profile-avatar{flex:none}
.profile-copy{max-width:150px;min-width:0}
.profile-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---- касса: разметка и классы кассы хаба (pos.css); здесь — только то, чего у хаба нет ---- */
.product-card.reg-out>small{color:var(--d-red)}
.product-card.reg-out .product-image{opacity:.5}
.reg-qty{min-width:44px;text-align:center;font-weight:700;font-size:var(--fs-body)}
.catalog-panel{min-width:0;grid-template-columns:minmax(0,1fr)}
.reg-discount{min-height:44px;padding:4px var(--s3)}
.reg-discount-label{display:flex;align-items:center;gap:var(--s2);font-weight:700;font-size:var(--fs-body)}
.reg-discount-label .icon{width:20px;height:20px}
.reg-discount-chip{border-radius:var(--r-pill);background:var(--pos-discount-chip);color:var(--d-on-accent);font-size:var(--fs-cap);font-weight:800;padding:2px 10px}
/* «Чеки»: число, «Средний чек» и столбики — три своих колонки (столбики не налезают на текст при любой ширине плитки);
   узкая плитка (≤ 230 px, касса 1100–1365 px) — столбики строкой ниже во всю ширину */
.kpi-checks{container-type:inline-size}
.kpi-checks-body{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(48px,120px);align-items:end;column-gap:var(--s3);row-gap:6px}
.kpi-average small,.kpi-average b{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.mini-bars.reg-bars{display:flex;width:100%;min-width:0;max-width:none;margin:0}
@container (max-width:230px){
  .kpi-checks-body{grid-template-columns:auto minmax(0,1fr);column-gap:var(--s2)}
  .kpi-checks-body .reg-bars{grid-column:1/-1;height:22px}
}
.reg-bars svg{display:block;width:100%;height:100%}
.reg-bars rect{fill:var(--d-chart);opacity:.55}
.reg-bars rect.now{opacity:1}
.top-list img:not([src]){visibility:hidden}
/* рисунки из библиотеки — на поверхности карточки (без белой подложки, она для фото на белом): в тёмной теме нет белых плашек */
img.art{--pos-photo:transparent}
.bar-track .reg-fill{display:block;width:100%;height:100%}
.exp-col .reg-exp{display:block;width:100%;height:72px}
.reg-exp rect{fill:var(--d-mc1)}
.exp-col.d0 .reg-exp rect{fill:var(--nb-coral)}.exp-col.d1 .reg-exp rect,.exp-col.d2 .reg-exp rect,.exp-col.d3 .reg-exp rect{fill:var(--nb-yellow)}
.exp-col.none .reg-exp rect{fill:var(--d-grid)}
.reg-fill rect{fill:var(--d-mc1)}
.recs .rec small+small{margin-top:2px}
.reg-product-head{display:flex;gap:var(--s4);align-items:center}
.reg-product-photo{width:120px;height:90px;flex:none;object-fit:contain;border-radius:var(--r-field);background:var(--pos-photo)}
.reg-product-photo.no-photo{padding:24px;filter:var(--pos-icon)}
.feature-state>.icon{width:40px;height:40px}
.feature-state h2{margin:0}

/* ---- разделы с прокруткой ---- */
body:not([data-screen="checkout"]) main{overflow:auto}
.reg-page{display:grid;gap:var(--s3);align-content:start}
.reg-page .section-heading{margin:var(--s2) 0}
.reg-na{color:var(--d-muted)}
.reg-facts{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--s2) var(--s4);margin:0 0 var(--s3)}
.reg-facts dt{color:var(--d-muted);font-size:var(--fs-cap);font-weight:700}
.reg-facts dd{margin:0;overflow-wrap:anywhere;font-weight:600}
.reg-support{margin:0 0 var(--s3)}
.reg-support .reg-facts{margin:0 0 var(--s1)}
.reg-support-row{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap}
.reg-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-body);font-weight:700;letter-spacing:.08em;padding:var(--s1) var(--s2);border-radius:var(--radius-sm,8px);background:var(--d-soft,rgba(0,0,0,.05));border:1.5px solid var(--d-line);user-select:all}
.reg-support-row .text-button{min-height:44px}
.reg-equipment,.reg-cashiers,.reg-receipt{list-style:none;margin:0 0 var(--s3);padding:0;display:grid;gap:var(--s2)}
.reg-equipment li{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:var(--s3);padding:var(--s2) 0;border-bottom:1.5px solid var(--d-line)}
.reg-equipment li:last-child{border-bottom:0}
.reg-equipment small{display:block;color:var(--d-muted);font-size:var(--fs-cap)}
.reg-equipment .tag{margin:0;white-space:nowrap}
.reg-cashiers li{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);min-height:44px;border-bottom:1.5px solid var(--d-line)}
.reg-cashiers li>span{display:flex;align-items:center;gap:var(--s2);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reg-cashiers .text-button{min-height:44px}
.equipment-grid .panel>button{width:100%}
/* настройки (замечание владельца с iPad ≈ 1180): карточки своей высоты, без пустых белых полей; сверху «Вид и язык» и «Касса»
   рядом, ниже «Оборудование» и «Кассиры» — строками во всю ширину (значок · название · описание · состояние) */
#settings .equipment-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
#settings .equipment-grid>.panel:nth-child(n+3){grid-column:1/-1}
#settings .reg-equipment li>div{display:grid;grid-template-columns:minmax(150px,200px) minmax(0,1fr);column-gap:var(--s4);align-items:baseline}
#settings .reg-equipment small{font-size:var(--fs-body)}
@media (max-width:899px){
  #settings .equipment-grid{grid-template-columns:minmax(0,1fr)}
  #settings .reg-equipment li>div{display:block}
  #settings .reg-equipment small{font-size:var(--fs-cap)}
}
.equipment-grid .panel h2{font-size:var(--fs-title)}

/* ---- склад: как «Склад и контроль сроков» хаба ---- */
body[data-screen="stock"] main{overflow:auto}
#stock{display:grid;gap:var(--s3);align-content:start}
.stock-tabs button .icon{filter:none}
#stock .warehouse-table th,#stock .warehouse-table td{padding-left:var(--s2);padding-right:var(--s2)}
#stock .stock-product-cell{min-width:150px;gap:var(--s2)}

/* ---- окна ---- */
.reg-dialog{display:flex;flex-direction:column;gap:var(--s2)}
.reg-dialog h2{margin:0;overflow-wrap:anywhere}
.reg-dialog label{margin:var(--s2) 0 0}
.reg-dialog .input-row>button{flex:1;min-height:52px}
.reg-pay-total{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s3);margin:var(--s2) 0;font-size:var(--fs-lead);font-weight:700}
.reg-pay-total strong{font-size:var(--fs-display);letter-spacing:-.03em}
.reg-receipt li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:var(--s3);font-size:var(--fs-body)}
.reg-receipt li span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* уведомление — внизу рабочей области (HIG: не закрывать содержимое): не поверх весов, чека, заголовков и кнопок действий;
   в кассе — левее чека; на экранах входа и смены — по центру снизу */
#message{inset:auto auto max(var(--s4),env(safe-area-inset-bottom)) auto;inset-inline-start:calc(var(--sidebar) + var(--s4));max-width:min(450px,calc(100vw - var(--sidebar) - 2 * var(--s4)));animation-name:reg-toast}
body[data-screen="checkout"] #message{max-width:min(450px,calc(100vw - var(--sidebar) - var(--receipt) - 3 * var(--s4)))}
body:is([data-screen="loading"],[data-screen="pair"],[data-screen="signin"],[data-screen="shift-open"],[data-screen="shift-close"]) #message{inset-inline:var(--s4);margin-inline:auto;width:max-content}
@keyframes reg-toast{from{opacity:0;transform:translateY(6px)}}

/* ---- размеры окна 768–1920 px (iPad, Android-планшеты, окно браузера и приложения Claude на iPad ≈ 900–1000 px) ----
   Правила: чек и оплата всегда в окне (правая колонка на всю высоту); цена товара не обрезается (меньше колонок, а не
   многоточие); название — не больше 2 строк; быстрые действия — один ряд или ровная сетка 3×2; заголовки плиток переносятся,
   а не обрезаются; меню целиком помещается по высоте (логотип виден, полосы прокрутки нет). */
.sidebar{scrollbar-width:none}
.sidebar::-webkit-scrollbar{display:none}
.sidebar-art{flex:1 1 0;min-height:0}
.sidebar-art svg{max-height:100%}
/* сетка товаров: колонка не уже --card-min (цена и «+» помещаются целиком), не больше 6 колонок */
.product-grid{--grid-gap:var(--s3);--card-min:136px;gap:var(--grid-gap);grid-template-columns:repeat(auto-fill,minmax(max(var(--card-min),calc((100% - 5 * var(--grid-gap)) / 6)),1fr))}
.product-card .price{overflow:visible;text-overflow:clip;font-size:clamp(14px,1.25vw,var(--fs-lead))}
.card-price-row .card-plus{flex:none}
.metric-title{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2}
.metric>strong,.kpi-checks-body>strong{overflow:visible;text-overflow:clip}
@media (max-height:880px){.product-grid{--grid-gap:var(--s2)}}
@media (min-width:1100px){
  .profile-copy,.local-profile>.chevron{display:block}
  .session-block .clock-date{display:inline}
}
@media (min-width:1100px) and (max-width:1439px){.topbar,.workplace,.topbar-end{gap:var(--s2)}#clock{gap:var(--s2)}.reg-status-slot{max-width:190px}
  .metric-title .icon{display:none}.metric-title{font-size:13px}}
@media (min-width:1100px) and (max-width:1365px){.reg-status{display:none}.reg-status-slot .icon-button{display:inline-flex}.metrics{grid-template-columns:repeat(4,minmax(0,1fr))}
  .mini-bars{display:flex}
  /* быстрые действия — один ряд из 7 равных: значок над подписью */
  .cashier-actions{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));overflow:visible}
  .cashier-actions button,.cashier-actions .more-chip{min-width:0;flex-direction:column;min-height:56px;gap:2px;padding:0 var(--s1);font-size:12px;line-height:1.15}
  .cashier-actions button>span{position:static;clip:auto;width:auto;height:auto;max-width:100%;overflow:hidden;text-overflow:ellipsis}}
/* левая колонка уже ≈ 640 px: плитки — 2×2; до 1099 px быстрые действия — ровная сетка 3×2 (без «…»: те же действия — в «…» чека) */
@media (max-width:1249px){
  .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .metric-title .icon{display:block}
}
@media (max-width:1249px){
  .cashier-actions{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));overflow:visible;gap:var(--s2)}
  .cashier-actions button{flex-direction:column;min-height:52px;gap:2px;font-size:11.5px;line-height:1.15}
  .cashier-actions button{min-width:0;padding:0 var(--s1)}
  .cashier-actions button>span{position:static;clip:auto;width:auto;height:auto;overflow:hidden;text-overflow:ellipsis}
  .cashier-actions .more-chip{display:none}
}
/* очень невысокое узкое окно (≤ 600 × 899): каталогу и чеку — вся высота, показатели дня — в «Продажах» */
@media (max-width:899px) and (max-height:600px){.metrics{display:none}}
/* невысокое окно: меню без промежутков (11 пунктов по 44 px + логотип помещаются от 550 px), в чеке — без строки инструментов */
@media (max-height:640px){
  .sidebar,.sidebar nav{gap:0}
  .sidebar{padding-top:var(--s2)}
  .sidebar .brand{min-height:44px;margin-bottom:var(--s1)}
  .sidebar-art{margin-top:0}
  .receipt-tools,.reg-discount{display:none}
}
/* до 1099 px: меню с подписями, справа — весы и чек на всю высоту, слева — каталог, действия, плитки */
@media (max-width:1099px){
  :root{--sidebar:176px;--receipt:320px}
  main{padding-left:var(--s3);padding-right:var(--s3)}
  .topbar{padding-left:var(--s3);padding-right:var(--s3)}
  .sidebar{padding-left:max(var(--s2),env(safe-area-inset-left));padding-right:var(--s2)}
  .brand{justify-content:flex-start;padding:0 var(--s1)}
  .reg-brand{font-size:22px}
  .brandtext,.brand .brandtext{position:static;clip:auto;width:auto;height:auto;overflow:visible;font-size:1em}
  nav button{justify-content:flex-start;padding:0 var(--s3);min-height:44px}
  nav button>span{position:static;clip:auto;width:auto;height:auto}
  .nbi{width:22px;height:22px}
  .session-block{display:flex}
  .session-block .clock-date,.reg-status{display:none}
  .product-workspace{display:contents}
  .checkout-grid{grid-template-columns:minmax(0,1fr) var(--receipt);grid-template-rows:minmax(0,1fr) auto auto;gap:var(--s3)}
  .catalog-panel{grid-column:1;grid-row:1;min-height:0}
  .checkout-side{grid-column:2;grid-row:1/-1}
  .cashier-actions{grid-column:1;grid-row:2}
  .metrics{grid-column:1;grid-row:3}
  .product-grid{--card-min:128px;grid-auto-rows:minmax(150px,auto)}
  .product-card .product-image{height:64px}
  .mini-bars{display:flex}
  .scale-readouts{grid-template-columns:1fr 1fr 1fr}
  .scale-readouts>div{padding:0 var(--s2)}
  .scale-readouts strong{font-size:18px}.scale-readouts .unit{font-size:14px}
  .scale-readouts>div:last-child{grid-column:auto;border-left:1.5px solid var(--d-line);padding-top:0}
  .cart-line{grid-template-columns:36px minmax(0,1fr) auto;grid-template-rows:auto auto;column-gap:var(--s2)}
  .cart-line>.cart-thumb{display:block;grid-row:1/3;align-self:center}
  .cart-line>.cart-detail{grid-column:2;grid-row:1/3;align-self:center}
  .cart-line>.cart-amount{grid-column:3;grid-row:1}
  .cart-line>.cart-controls{grid-column:3;grid-row:2;margin-right:-9px}
  .receipt-tools button{min-height:44px}
  .payment-actions button{gap:6px;padding:0 var(--s2);font-size:15px}
  .payment-actions .icon{width:20px;height:20px}
  .basket-hint{white-space:normal}
  .store-pill{max-width:200px}
  .reg-status{padding:7px 10px}
}
/* невысокое окно (горизонтально до 1099 px): весы — одной строкой состояния (не подключены), чек получает высоту */
@media (max-width:1099px) and (max-height:999px){
  .scale-readouts,.scale-line,.live-scale-actions{display:none}
  .live-scale{border-width:0}
}
/* уже 900 px: меню уже (подписи 12–13 px, логотип norbiss POS целиком), без часов и названия кассы в верхней строке */
@media (max-width:899px){
  :root{--sidebar:164px;--receipt:288px}
  .sidebar{padding-left:var(--s2);padding-right:var(--s2)}
  .brand{gap:6px}
  .reg-brand{font-size:19px}
  .brandtext,.brand .brandtext{font-size:1em}
  nav button{padding:0 var(--s2);gap:var(--s2);font-size:12.5px}
  .nbi{width:20px;height:20px}
  .register-name,.session-block{display:none}
  .cashier-actions{grid-template-columns:repeat(3,minmax(0,1fr))}
  .cashier-actions button{font-size:12px}
  .payment-actions .icon{display:none}
  .store-pill{max-width:160px}
  .store-pill strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

/* ---- смены: выбор кассира (аватар с инициалами и должность), открытие и закрытие смены ---- */
.reg-avatar{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;font-weight:800;font-size:var(--fs-body);letter-spacing:-.02em;background:var(--d-accent-soft);color:var(--d-accent-ink)}
.reg-avatar.tone-1{background:var(--pos-ok-soft);color:var(--d-green)}
.reg-avatar.tone-2{background:var(--pos-warn-soft);color:var(--d-warn)}
.reg-avatar.tone-3{background:var(--pos-bad-soft);color:var(--d-red)}
.reg-avatar.small{width:32px;height:32px;font-size:var(--fs-cap)}
.reg-person{display:flex;flex-direction:column;align-items:flex-start;min-width:0;text-align:left;line-height:1.25}
.reg-person strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reg-person small{font-size:var(--fs-cap);font-weight:600;color:var(--d-muted)}
.reg-people button{position:relative;min-height:72px;gap:var(--s3);padding:0 var(--s3)}
.reg-shift-dot{position:absolute;top:10px;right:10px;width:10px;height:10px;border-radius:50%;background:var(--d-dot);box-shadow:0 0 0 3px var(--pos-ok-soft)}
.reg-who-name{display:flex;align-items:center;gap:var(--s3);min-width:0}
.reg-card-wide{width:min(640px,100%)}
.reg-card select{min-height:44px}
.reg-report{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s2) var(--s4);margin:0;padding:var(--s3) var(--s4);border-radius:var(--r-panel);background:var(--d-surface2)}
.reg-report dt{color:var(--d-muted);font-weight:600}
.reg-report dd{margin:0;text-align:right;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.reg-report .strong{color:var(--d-ink);font-weight:800;font-size:var(--fs-lead);padding-top:var(--s2);border-top:1.5px solid var(--d-line)}
.reg-diff-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);min-height:44px;font-weight:700}
.reg-diff-row>div{display:flex;flex-direction:column;align-items:flex-end}
.reg-diff-row small{font-size:var(--fs-cap);color:var(--d-muted)}
.reg-diff{font-size:var(--fs-lead);font-weight:800;font-variant-numeric:tabular-nums}
.reg-diff.ok{color:var(--d-green)}.reg-diff.bad{color:var(--d-red)}.reg-diff.warn{color:var(--d-warn)}
.reg-card .input-row{display:flex;gap:var(--s2);margin-top:var(--s2)}
.reg-card .input-row>button{flex:1;min-height:52px}
.reg-shift{white-space:nowrap}
.reg-cashiers li>span{gap:var(--s2)}
.reg-receipt-brand{margin:0;font-size:var(--fs-cap);font-weight:700;color:var(--d-muted)}

/* ---- отклик на нажатие (Emil Kowalski: мгновенное :active scale ≈ 0.97 + сдвиг цвета, ≤ 120 мс ease-out, без задержки).
   Касса нажимается сотни раз в день — только отклик нажатия, без анимаций появления. Уменьшенное движение: без масштаба,
   остаётся только смена цвета. */
:root{--press-ease:cubic-bezier(.23,1,.32,1)}
button,.product-card,nav button,.card-plus,[data-act]{transition:transform 120ms var(--press-ease),background-color 120ms var(--press-ease),filter 120ms var(--press-ease)}
button:active:not(:disabled),[data-act]:active:not(:disabled){transform:scale(.97);filter:brightness(.94)}
.product-card:active:not(:disabled){transform:scale(.97);background:var(--nb-hover)}
.cart-controls button:active:not(:disabled),.card-plus:active,.reg-keypad button:active:not(:disabled){transform:scale(.92)}
.payment-actions button:active:not(:disabled){transform:scale(.97);filter:brightness(.9)}
nav button:active:not(.active){background:var(--nb-pressed)}
.category-tabs button:active,.weight-chip:active{transform:scale(.96)}
@media (prefers-reduced-motion:reduce){
  button,.product-card,nav button,.card-plus,[data-act]{transition:background-color 120ms ease,filter 120ms ease}
  button:active:not(:disabled),[data-act]:active:not(:disabled),.product-card:active:not(:disabled),.cart-controls button:active:not(:disabled),
  .card-plus:active,.reg-keypad button:active:not(:disabled),.payment-actions button:active:not(:disabled),.category-tabs button:active,.weight-chip:active{transform:none}
}

/* ---- окна над экранной клавиатурой: высота — видимая часть окна (--vvh из visualViewport), кнопки прилипают к низу ---- */
#sheet[open]{position:fixed;inset:auto 0 auto 0;top:calc(var(--vv-top,0px) + 12px);margin:0 auto;max-height:calc(var(--vvh,100dvh) - 24px);overflow:auto;overscroll-behavior:contain;padding-bottom:0}
#sheet .reg-dialog{padding-bottom:var(--s4)}
#sheet .sheet-actions{position:sticky;bottom:0;z-index:1;margin:var(--s2) calc(var(--s5) * -1) 0;padding:var(--s3) var(--s5) var(--s4);background:var(--d-surface);border-top:1.5px solid var(--d-line)}
.reg-gate{height:var(--vvh,100%);min-height:0}
.reg-card .input-row{position:sticky;bottom:0;background:var(--d-surface);padding-top:var(--s2)}
/* оплата наличными: своя цифровая клавиатура и быстрые суммы — системная клавиатура не нужна */
.reg-given{font-size:var(--fs-h2);font-weight:800;text-align:right;font-variant-numeric:tabular-nums}
.reg-quick{display:grid;grid-template-columns:repeat(auto-fit,minmax(84px,1fr));gap:var(--s2)}
.reg-quick button{min-height:48px;border:0;background:var(--d-accent-soft);color:var(--d-accent-ink);font-weight:800;font-variant-numeric:tabular-nums}
.reg-numpad{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s2)}
.reg-numpad button{min-height:52px;border:0;border-radius:var(--r-field);background:var(--d-surface2);font-size:var(--fs-h2);font-weight:800}
.reg-change{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s3);margin:var(--s1) 0 0;font-weight:700}
.reg-change strong{font-size:var(--fs-display);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.reg-change strong.ok{color:var(--d-green)}.reg-change strong.bad{color:var(--d-red)}
.reg-weight-confirm{display:flex;flex-wrap:wrap;gap:var(--s2)}
.reg-weight-confirm button{flex:1 1 140px;min-height:48px}
@media (max-height:820px){.reg-numpad button{min-height:44px;font-size:var(--fs-lead)}#sheet .reg-dialog{gap:6px}}
/* заголовок окна прилипает к верху: при прокрутке и над клавиатурой он не срезается */
#sheet .reg-dialog>h2:first-child,#sheet .reg-dialog>.reg-receipt-brand+h2{position:sticky;top:calc(var(--s5) * -1);z-index:1;background:var(--d-surface);padding:var(--s2) 0}
/* экраны входа и смены над клавиатурой: карточка не выше видимой части, заголовок и кнопки прилипают, середина прокручивается */
.reg-card{max-height:calc(var(--vvh,100dvh) - 2 * var(--s3));overflow:auto;overscroll-behavior:contain}
.reg-card>h1{position:sticky;top:calc(var(--s5) * -1);z-index:1;background:var(--d-surface);padding:var(--s2) 0}
@media (max-height:820px){.reg-gate{padding-top:var(--s3);padding-bottom:var(--s3)}}

/* ---- вид и язык ---- */
.reg-lang-button{font-weight:800;font-size:var(--fs-cap);letter-spacing:.04em}
.reg-segment{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s1);padding:var(--s1);border-radius:var(--r-field);background:var(--d-surface2)}
.reg-segment button{min-height:56px;flex-direction:column;border:0;background:transparent;gap:2px;padding:var(--s1);font-size:13px;line-height:1.2;min-width:0}
.reg-segment button span{max-width:100%;text-align:center;overflow-wrap:anywhere}
.reg-segment button[aria-pressed="true"]{background:var(--d-surface);box-shadow:var(--d-shadow);color:var(--d-accent-ink)}
.reg-langs{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--s2)}
.reg-langs button{min-height:44px;border:1.5px solid var(--d-line);background:var(--d-surface);justify-content:flex-start;padding:0 var(--s3)}
.reg-langs button[aria-pressed="true"]{border-color:var(--d-accent);background:var(--d-accent-soft);color:var(--d-accent-ink)}
.reg-gate-ui{display:flex;justify-content:flex-end;gap:var(--s2)}
.reg-gate-ui .icon-button{border:0;background:var(--d-surface2)}
#ui-lang{min-height:44px;width:100%}
/* справа налево (арабский): меню справа, рабочая область слева */
[dir="rtl"] .sidebar{inset:0 0 0 auto}
[dir="rtl"] .app-shell{margin-left:0;margin-right:var(--sidebar)}
[dir="rtl"] .reg-report dd{text-align:left}
[dir="rtl"] .reg-diff-row>div{align-items:flex-start}
/* длинные слова (армянский, немецкий): переносить внутри, а не вылезать */
.reg-dialog,.reg-card,.metric,.empty,.feature-state{overflow-wrap:anywhere}
/* верхняя строка с длинными подписями (армянский, немецкий) и кнопками вида и языка: части сжимаются с многоточием, а не
   вылезают за окно; полная подпись — в title и для чтения с экрана */
.topbar{min-width:0}
.workplace{flex:1 1 auto;overflow:hidden}
.workplace>*{flex-shrink:1;min-width:0}
.store-pill{flex-shrink:2}
.register-name span{overflow:hidden;text-overflow:ellipsis}
.reg-shift{display:inline-block;overflow:hidden;text-overflow:ellipsis;max-width:100%;flex-shrink:1}
.reg-shift::before{display:inline-block;vertical-align:middle;margin-inline-end:var(--s2)}
.topbar-end,.session-block{flex-shrink:0}
@media (max-width:1599px){.reg-status-slot .reg-status{display:none}.reg-status-slot .icon-button{display:inline-flex}}
/* верхняя строка до 1365 px (iPad в приложении Claude ≈ 1180): магазин, касса и смена — целиком, без многоточия; второстепенное
   сворачивается: тема и язык — в одну кнопку «…» (окно «Вид и язык»); дата, имя и роль кассира (как в макете) — от 1240 px,
   уже — только время и аватар (имя — в окне профиля) */
.reg-ui-more{display:none}
@media (max-width:1365px){
  .topbar-end [data-act="theme-menu"],.topbar-end [data-act="lang-menu"]{display:none}
  .topbar-end .reg-ui-more{display:inline-flex}
  .store-pill,.register-name,.workplace>.reg-shift{flex-shrink:0}
}
@media (max-width:1239px){.session-block .clock-date,.profile-copy,.local-profile>.chevron{display:none}}
@media (max-width:1439px){.topbar-end{gap:var(--s2)}}

/* ---- функции кассы: отложенные чеки, заметка (фаза «все функции») ---- */
.reg-quick-slot{display:contents}
.cashier-actions button{position:relative}
.reg-count{position:absolute;top:-6px;inset-inline-end:-4px;min-width:20px;height:20px;padding:0 6px;border-radius:var(--r-pill);background:var(--d-accent);color:var(--d-on-accent);font-size:12px;font-weight:800;line-height:20px;text-align:center}
.cashier-actions .reg-count{position:absolute;clip:auto;width:auto;overflow:visible}
.reg-note-line{display:flex;align-items:flex-start;gap:var(--s2);width:100%;min-height:44px;margin:var(--s2) 0 0;padding:var(--s2) var(--s3);border:1.5px dashed var(--d-line);border-radius:var(--r-field);background:var(--d-surface2);color:var(--d-ink);font-size:var(--fs-cap);text-align:start;white-space:pre-wrap;overflow-wrap:anywhere}
.reg-note-line .icon{flex:0 0 auto;margin-top:2px}
.reg-dialog textarea{width:100%;min-height:96px;padding:var(--s2) var(--s3);border:1.5px solid var(--d-line);border-radius:var(--r-field);background:var(--d-surface);color:var(--d-ink);font:inherit;resize:vertical}
.reg-dialog textarea:focus-visible{outline:3px solid var(--d-accent);outline-offset:1px}
.reg-parked{list-style:none;margin:0 0 var(--s3);padding:0;display:grid;gap:var(--s2)}
.reg-parked li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:var(--s2);padding:var(--s2) 0;border-bottom:1.5px solid var(--d-line)}
.reg-parked li>div{display:grid;gap:2px;min-width:0}
.reg-parked small{color:var(--d-muted);font-size:var(--fs-cap)}
.reg-parked .reg-note-text{color:var(--d-ink);white-space:pre-wrap;overflow-wrap:anywhere}
.reg-parked button{min-height:44px}
.reg-report-notes h3{margin:var(--s3) 0 var(--s2);font-size:var(--fs-body)}
.reg-report-notes ul{list-style:none;margin:0;padding:0;display:grid;gap:var(--s2)}
.reg-report-notes li{display:grid;gap:2px;padding-bottom:var(--s2);border-bottom:1.5px solid var(--d-line)}
.reg-report-notes li>span:first-child{color:var(--d-muted);font-size:var(--fs-cap)}
.reg-report-notes li>span:last-child{white-space:pre-wrap;overflow-wrap:anywhere}

/* ---- отступы кнопок (правило дизайнера владельца для всего приложения): по вертикали — больше, по горизонтали — меньше.
   Только через токены: обычная кнопка, кнопки-ряды (действия кассира, оплата, инструменты чека, склад, языки, кассиры, ссылки),
   чипы фиксированной высоты (категории, вкладки склада). Круглые значки (.icon-button, ± в чеке) — квадратные, без отступов. ---- */
:root{--btn-py:var(--s3);--btn-px:10px;--btn-py-chip:var(--s2);--btn-px-tight:var(--s2)}
/* низкие экраны (планшет горизонтально, ≤ 760 px): вертикальный отступ — меньше, кнопки всё равно ≥ 44 px (min-height) */
@media (max-height:760px){:root{--btn-py:10px}}
button{padding:var(--btn-py) var(--btn-px)}
.cashier-actions button,.payment-actions button,.receipt-tools button,.live-scale-actions button,.warehouse-actions>button,
.soft-button,.store-pill,.text-button,.reg-langs button,.reg-people button,.reg-keypad button,.reg-numpad button,.reg-quick button,
.reg-parked button,.more-options>button,.sheet-actions button,.input-row button,nav button,.rec,.kpi-critical .soft-button{padding:var(--btn-py) var(--btn-px-tight)}
/* плитка товара — та же пропорция: сверху и снизу 12, по бокам 8; профиль в верхней строке — 6 со всех сторон */
.product-card{padding:var(--s3) var(--s2)}
.local-profile{padding:6px}
.category-tabs button,.category-tabs button:first-child,.weight-chip,.stock-tabs button,.reg-segment button,.reg-tabs button{padding:var(--btn-py-chip) var(--btn-px-tight)}
.reg-count{padding:0 6px}

/* ---- вложенные скругления (правило дизайнера владельца): у фигуры внутри скруглённой фигуры радиус = внешний − зазор
   (зазор — больший из двух отступов до угла родителя), не меньше 0; внутренний не равен внешнему и не больше его («надутая щека»).
   Правило — для элементов у угла родителя (зазор меньше внешнего радиуса); при зазоре ≥ внешнего радиуса углы не соседствуют.
   Круглые значки (50 %) — не повторяют угол, но их радиус тоже меньше радиуса родителя.
   Внешние: --r-large 22 (панели, окно, весы, витрина товаров), --r-panel 16 (плитки товара, показатели), --r-field 12 (поля). ---- */
:root{--catalog-pad:var(--s3)}
@media (max-height:880px){:root{--catalog-pad:var(--s2)}}
.catalog-panel{padding:var(--catalog-pad)}
:root{
  --r-in-field:max(0px,calc(var(--r-field) - var(--s1)));                   /* строка скидки, переключатель темы (зазор 4) → 8 */
  --r-in-metric:max(0px,calc(var(--r-panel) - var(--s3)));                  /* кнопка у угла карточки показателя (12) → 4 */
  --r-in-catalog:max(0px,calc(var(--r-large) - var(--catalog-pad) - 4px));  /* значок сканера и фильтр у угла витрины (отступ + 4 строки) → 6 (10) */
  --r-in-grid:max(0px,calc(var(--r-large) - var(--catalog-pad) - 2px));     /* плитка товара у угла витрины (+2 px сетки) → 8 (12) */
  --r-in-basket:max(0px,calc(var(--r-large) - var(--s4)));                  /* кнопки у углов чека (бок 16) → 6 */
  --r-in-scale:max(0px,calc(var(--r-large) - var(--s3) - 2.5px));           /* кнопки весов (12 + рамка 2,5) → 7,5 */
  --r-in-panel:max(0px,calc(var(--r-large) - var(--s4)));                   /* таблица и значки у углов панели склада (16) → 6 */
  --r-in-search:calc(26px - 4px);                                           /* кнопка в строке поиска (радиус 26, зазор 4) → 22 */
}
.reg-segment button,.discount-row .reg-discount-chip,.discount-row>#discount-mode{border-radius:var(--r-in-field)}
.product-card .product-image{border-radius:max(0px,calc(var(--r-in-grid) - var(--s2)))}
.product-card{border-radius:var(--r-in-grid)}
.metric .soft-button{border-radius:var(--r-in-metric)}
.catalog-panel .scan-mark,.catalog-panel .filter-button{border-radius:var(--r-in-catalog)}
.basket .payment-actions button,.basket .heading-tools .icon-button{border-radius:var(--r-in-basket)}
.live-scale-actions button{border-radius:var(--r-in-scale)}
.stock-table-panel .block-tools .icon-button{border-radius:var(--r-in-panel)}
/* таблица в рамке: рамка — --r-wrap, заголовки внутри (зазор 4) — на 4 меньше; у таблицы склада рамка у угла панели → --r-in-panel */
.table-wrap{--r-wrap:var(--r-panel);border-radius:var(--r-wrap)}
.stock-table-panel .table-wrap{--r-wrap:var(--r-in-panel)}
.table-wrap th:first-child{border-radius:max(0px,calc(var(--r-wrap) - var(--s1))) 0 0 max(0px,calc(var(--r-wrap) - var(--s1)))}
.table-wrap th:last-child{border-radius:0 max(0px,calc(var(--r-wrap) - var(--s1))) max(0px,calc(var(--r-wrap) - var(--s1))) 0}
.search-bar .icon-button{border-radius:var(--r-in-search)}

/* ---- покупатель и бонусы в чеке ---- */
.reg-customer{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--s2)}
.reg-customer-who{justify-content:flex-start;gap:var(--s2);border:0;background:var(--d-surface2);border-radius:var(--r-field);min-width:0;text-align:start}
.reg-customer-who>span{display:grid;min-width:0}
.reg-customer-who strong,.reg-customer-who small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reg-customer-who small{color:var(--d-muted);font-size:var(--fs-cap);font-weight:600}
.reg-customer .soft-button{border-radius:var(--r-field);white-space:nowrap}
.reg-earn{margin:0;color:var(--d-green);font-size:var(--fs-cap);font-weight:700}
.reg-customer-card{display:grid;gap:var(--s1);padding:var(--s3);border-radius:var(--r-field);background:var(--d-surface2)}
.reg-customer-card span{color:var(--d-muted);font-size:var(--fs-cap)}
.reg-customer-card button{justify-self:start;margin-top:var(--s1)}
.reg-check{display:grid;grid-template-columns:24px minmax(0,1fr);align-items:start;gap:var(--s2);min-height:44px;padding:var(--s2) 0;font-size:var(--fs-body);cursor:pointer}
.reg-check input{width:24px;height:24px;min-height:24px;margin:0;padding:0;accent-color:var(--d-accent)}
.reg-find-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s2)}

/* ---- скидки и акции ---- */
button.discount-row{width:100%;border:0;justify-content:flex-start;padding:var(--btn-py-chip) var(--btn-px-tight);color:var(--d-ink);font-weight:600}
button.discount-row>strong{margin-inline-start:auto}
button.discount-row>strong:not(.zero){color:var(--d-red)}
.reg-discount-parts{list-style:none;margin:0;padding:0 var(--s2);display:grid;gap:2px;font-size:var(--fs-cap);color:var(--d-muted)}
.reg-discount-parts li{display:flex;justify-content:space-between;gap:var(--s2)}
.reg-discount-parts span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.reg-line-promo{display:block;color:var(--d-red);font-size:var(--fs-cap);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reg-rules{list-style:none;margin:0 0 var(--s3);padding:0;display:grid;gap:var(--s2)}
.reg-rules li{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--s2);min-height:44px;padding:var(--s2) 0;border-bottom:1.5px solid var(--d-line)}
.reg-rules li>div{display:grid;gap:2px;min-width:0}
.reg-rules small{color:var(--d-muted);font-size:var(--fs-cap)}
.reg-rules li.off strong{color:var(--d-muted)}
.reg-segment.reg-segment-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.reg-segment-2 button{min-height:44px;flex-direction:row}
.reg-segment button[aria-pressed="true"]{background:var(--d-surface);box-shadow:var(--d-shadow);font-weight:700}
.reg-two{display:grid;grid-template-columns:1fr 1fr;gap:var(--s2)}
.reg-approve{display:grid;gap:var(--s2);padding:var(--s3);border-radius:var(--r-field);background:var(--d-surface2)}

/* ---- значки: толщина линии = толщина букв рядом (правило дизайнера владельца; как в Norbiss Scan) ----
   Значок — символ спрайта (<svg class="icon"><use …>), цвет — currentColor, линия — --ic-stroke в px при любом размере значка
   (vector-effect: non-scaling-stroke — в самом спрайте). Обычный текст — --stroke-text, жирные надписи, крупные плитки и значок
   сканера — --stroke-strong. Перекраска фильтрами (pos.css, для <img>) значкам не нужна: фильтры обнулены токенами, цвет — color. */
:root{--stroke-text:1.6px;--stroke-strong:2.2px;--reg-icon:var(--nb-navy);
  --pos-icon:none;--pos-icon-on:none;--pos-icon-navy:none;--pos-icon-accent:none;--pos-icon-red:none;--pos-icon-coral:none}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--pos-icon:none;--pos-icon-accent:none;--reg-icon:var(--d-ink)}}
:root[data-theme="dark"]{--pos-icon:none;--pos-icon-accent:none;--reg-icon:var(--d-ink)}
svg.icon{--ic-stroke:var(--stroke-text);color:var(--reg-icon);stroke-width:var(--ic-stroke);overflow:visible}
.payment-actions .icon,.scan-mark .icon,.feature-state>.icon,.product-card .no-photo,.cashier-actions .icon,.kpi-head .icon{--ic-stroke:var(--stroke-strong)}
.nbi .sa,.nbi .sb,.nbi .sw{vector-effect:non-scaling-stroke;stroke-width:var(--stroke-strong)}
/* где pos.css красил значок фильтром — тот же цвет через color */
.primary .icon,.card-plus .icon,.scale-head>.icon,.scale-head .icon-button .icon,.stock-tabs .active .icon{color:var(--d-on-accent)}
.yellow .icon,.profile-avatar .icon,.weight-chip .icon{color:var(--nb-navy)}
.primary:disabled .icon,.yellow:disabled .icon{color:var(--reg-icon)}
.kpi-critical .metric-title .icon,.stock-status .icon,.stock-tabs button:not(.active) .icon{color:currentColor}
.product-card .no-photo{color:var(--reg-icon);width:70px;height:70px}
.row-edit .icon,.rec.restock>.icon:first-child{color:var(--d-accent-ink)}
.rec.discount>.icon:first-child{color:var(--d-red)}
.rec.speed>.icon:first-child{color:var(--nb-coral)}

/* ---- магазин, связь с Norbiss, возвраты ---- */
.reg-or{display:flex;align-items:center;gap:var(--s3);color:var(--d-muted);font-size:var(--fs-cap)}
.reg-or::before,.reg-or::after{content:"";flex:1;border-top:1.5px solid var(--d-line)}
.reg-pre{white-space:pre-line}
.reg-promo{display:grid;gap:var(--s2);margin-top:var(--s3);padding:var(--s3);border-radius:var(--r-field);background:var(--d-accent-soft);color:var(--d-ink)}
.reg-promo>div:first-child{display:grid;gap:2px}
.reg-promo small{color:var(--d-muted);font-size:var(--fs-cap)}
.reg-promo-actions{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center}
.reg-promo .soft-button{background:var(--d-surface);border-radius:var(--r-in-field)}
.reg-refund{list-style:none;margin:0;padding:0;display:grid;gap:var(--s2)}
.reg-refund li{display:grid;grid-template-columns:minmax(0,1fr) 96px;align-items:center;gap:var(--s2);padding:var(--s2) 0;border-bottom:1.5px solid var(--d-line)}
.reg-refund li>div{display:grid;gap:2px;min-width:0}
.reg-refund small{color:var(--d-muted);font-size:var(--fs-cap)}
.reg-returned{display:block;color:var(--d-red);font-size:var(--fs-cap);font-weight:700}
.reg-pay-line{display:flex;justify-content:space-between;gap:var(--s2);margin:0;color:var(--d-muted)}
.reg-warn{background:var(--pos-discount-soft);border-radius:var(--r-field);padding:var(--s2)}
.reg-card .wide{width:100%}

/* ---- оптические отступы (правило дизайнера владельца): зазор меряется от видимой линии значка. Линия значка отстоит от его
   коробки на одинаковое поле с обеих сторон, поэтому у значка у края кнопки видимые зазоры «край → линия» и «линия → текст» равны,
   когда равны отступ кнопки и промежуток до текста: промежуток = отступ (токены --btn-px / --btn-px-tight). ---- */
button{gap:var(--btn-px)}
.payment-actions button,.receipt-tools button,.live-scale-actions button,.warehouse-actions>button,
.soft-button,.store-pill,.text-button,.reg-langs button,.reg-people button,.reg-parked button,.more-options>button,.sheet-actions button,
.input-row button,.stock-tabs button,.category-tabs button,.weight-chip,.reg-tabs button{gap:var(--btn-px-tight)}
/* быстрые действия и переключатель темы на узких экранах — значок над подписью (колонка): промежуток по вертикали свой (pos.css, app.css) */
.rec{column-gap:var(--btn-px-tight)}
nav button{gap:var(--btn-px-tight)}
/* низкие экраны (≤ 760 px): плитка товара — поровну 8 со всех сторон, чтобы ряд плиток помещался (правило отступов соблюдено: 8 ≥ 8) */
@media (max-height:760px){.product-card{padding:var(--s2)}}

/* ---- разделы: закупки, списания, инвентаризация, сотрудники, отчёты, аналитика ---- */
.reg-page .section-heading{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--s3)}
.reg-head-actions{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center}
.reg-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--s3)}
.reg-kpis .panel{display:grid;gap:var(--s1);padding:var(--s3) var(--s4)}
.reg-kpis small{color:var(--d-muted);font-size:var(--fs-cap);font-weight:700}
.reg-kpis strong{font-size:var(--fs-h2)}
.reg-promo-line{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2);margin:0;padding:var(--s2) var(--s3);border-radius:var(--r-field);background:var(--d-accent-soft);font-size:var(--fs-body)}
.reg-promo-line>span{flex:1 1 240px}
.reg-doc-lines{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.reg-doc-lines li{display:flex;justify-content:space-between;gap:var(--s2);padding:var(--s1) 0;border-bottom:1.5px solid var(--d-line);font-size:var(--fs-body)}
.reg-doc-add{display:grid;gap:var(--s2);margin:0;padding:var(--s3);border:1.5px solid var(--d-line);border-radius:var(--r-field)}
.reg-doc-add legend{padding:0 var(--s1);font-weight:700}
.reg-segment.reg-segment-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.reg-segment-3 button{min-height:44px;flex-direction:row}
.reg-person-cell{display:inline-flex;align-items:center;gap:var(--s2)}
.reg-bad{color:var(--d-red);font-weight:700}
.reg-warn-text{color:var(--nb-coral);font-weight:700}
.donut .arc.r-expired{stroke:var(--d-red)}.donut .arc.r-spoiled{stroke:var(--nb-coral)}.donut .arc.r-damaged{stroke:var(--nb-yellow)}

/* ---- печать: на экране область печати скрыта; при печати — только она (чек 80 мм, этикетка 58×40 мм) ---- */
#print-area{display:none}
@media print{
  @page{margin:4mm}
  @page label{size:58mm 40mm;margin:0}
  body>*:not(#print-area),body>#sheet[open]{display:none}
  html,body,body[data-screen]{background:#fff;color:#000}
  #print-area{display:block;color:#000;font-family:var(--d-font);font-size:10pt}
  #print-area .p-page{width:72mm;margin:0 auto;break-after:page}
  #print-area .p-page:last-child{break-after:auto}
  #print-area .p-label{page:label;width:54mm;height:36mm;padding:2mm;overflow:hidden}
  #print-area p{margin:0 0 1.2mm;line-height:1.25}
  #print-area .p-row{display:flex;justify-content:space-between;gap:3mm}
  #print-area .b{font-weight:700}#print-area .center{text-align:center}#print-area .right{text-align:right}
  #print-area .s-2{font-size:20pt}#print-area .s-13{font-size:13pt}#print-area .s-11{font-size:11pt}#print-area .s-085{font-size:8.5pt}#print-area .s-075{font-size:7.5pt}
  #print-area .p-rule{border:0;border-top:1px dashed #000;margin:1.5mm 0}
  #print-area .p-space{height:2mm}
  #print-area .p-barcode{display:grid;justify-items:center;margin-top:1mm}
  #print-area .p-barcode svg{width:100%;height:12mm;fill:#000}
  #print-area .p-barcode.small svg{height:7mm}
  #print-area .p-barcode span{font-size:7.5pt;letter-spacing:.5pt}
}

/* лицензия веб-кассы: полоса пробного дня над верхней панелью (license.js) */
.lic-strip{display:flex;align-items:center;gap:var(--s2);padding:var(--s2) var(--s3);background:var(--d-accent-soft);color:var(--d-accent-ink);font-size:var(--fs-cap);font-weight:700}
.lic-strip span{flex:1;min-width:0}
.lic-strip button{min-height:36px;padding:0 var(--s3);border-radius:var(--r-field)}
