/* ═══════════════════════════════════════════════════════════
   ЗАРПЛАТА — ведомость, расчётный листок, окна, бумага
   ═══════════════════════════════════════════════════════════
   Плита, обойма и ярлыки — общие с документами, кассой и табелем
   (accounting.css); шкала — продукта: имя 13, пояснение 11.5, сумма 13.5.

   Стол из двух предметов. Слева ведомость — таблица без карточек: люди
   строками, три числа в колонку, итог под двойной чертой. Справа расчётный
   листок — бумага, лежащая на столе: под шапкой линия отрыва, как у корешка,
   который отдают вместе с деньгами. Главное на листке — формула строки
   («20 выходов × 1 800 ₽»): она набрана чернилами, а род строки — тише.
   «К выдаче» — самое крупное число экрана.

   Цвет — только у остатка: выдано — зелёным словом, переплата — янтарным.
   Премия и удержание тона не получают: удержание читается минусом. */

/* ── обойма ── */
.py-bar{gap:8px 10px;flex-wrap:wrap}
.py-period{display:flex;align-items:baseline;gap:8px;margin:0 2px}
.py-period b{font-size:13px;font-weight:600;letter-spacing:-.015em;color:var(--ink)}
.py-period span{font-size:12px;color:var(--ink-3)}
.py-do{display:flex;align-items:center;gap:6px;margin-left:auto}
.py-act{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:30px;padding:0 11px;white-space:nowrap;font-size:12px}
.py-act svg{flex-shrink:0}
.py-act:active{transform:scale(.97)}
.py-act:disabled{opacity:.42;pointer-events:none}
.py-do .py-csv{margin-left:6px}

/* ── стол ── */
.py-body{padding-top:16px}
.py-desk{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(380px,.92fr);gap:20px;align-items:start;margin:0 6px}

/* Ведомость: знак, кто, три числа в колонку; строка выбирает листок.
   Строки одной высоты: должность и правила — одной строкой, целиком в подсказке. */
.py-list{border:1px solid var(--rule-2);border-radius:var(--r);background:var(--card);overflow:hidden}
.py-list-h,.py-row,.py-list-f{display:grid;grid-template-columns:28px minmax(0,1fr) 100px 90px 112px;align-items:center;column-gap:12px;padding:0 16px}
.py-list-h{height:36px;border-bottom:1px solid var(--rule);font-size:11px;font-weight:500;color:var(--ink-3)}
.py-list-h span:first-child{grid-column:1 / 3}
.py-list-h span:not(:first-child){text-align:right}
.py-row{
  width:100%;min-height:58px;padding-top:8px;padding-bottom:8px;border-bottom:1px solid var(--rule-2);text-align:left;
  transition:background-color var(--t-tap) var(--ease);
}
.py-row .ts-sign{width:28px;height:28px;font-size:10px}
.py-rows .py-row:last-child{border-bottom:0}
@media (hover:hover) and (pointer:fine){
  .py-row:not(.on):hover{background:var(--off-paper)}
  .py-void:hover{color:var(--late);border-bottom-color:currentColor}
  .py-icon:hover{background:var(--off-paper);border-color:var(--rule);color:var(--ink)}
  .py-chip:hover{border-color:var(--ink-3);color:var(--ink)}
}
.py-row:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}
.py-row.on{background:var(--paper)}
.py-row.on .py-who b{font-weight:650}
.py-who{display:flex;flex-direction:column;gap:2px;min-width:0}
.py-who b{font-size:13px;font-weight:600;letter-spacing:-.01em;line-height:1.3;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.py-who span{font-size:11.5px;line-height:1.35;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.py-num{text-align:right;font-size:12.5px;color:var(--ink-2);white-space:nowrap;font-variant-numeric:tabular-nums}
.py-due{display:flex;flex-direction:column;align-items:flex-end;gap:1px}
.py-due b{font-size:13.5px;font-weight:600;letter-spacing:-.015em;color:var(--ink);white-space:nowrap;font-variant-numeric:tabular-nums}
.py-due small{font-size:11px;color:var(--ink-3)}
.py-row.t-done .py-due b,.py-row.t-none .py-due b{color:var(--ink-3);font-weight:500}
.py-row.t-done .py-due small{color:var(--ok)}
.py-row.t-over .py-due small{color:var(--wait)}
/* Итог — под двойной чертой, на той же бумаге: подложка остаётся выбранной строке. */
.py-list-f{min-height:46px;border-top:3px double var(--rule);font-variant-numeric:tabular-nums}
.py-list-f span{grid-column:1 / 3;font-size:12px;font-weight:550;color:var(--ink-2)}
.py-list-f b{text-align:right;font-size:12.5px;font-weight:600;color:var(--ink);white-space:nowrap}
.py-list-f b:last-child{font-size:13.5px;letter-spacing:-.015em}
.py-idle{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:10px 16px;border-top:1px solid var(--rule-2);font-size:12px;color:var(--ink-3)}
.py-chip{
  display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 10px 0 3px;border:1px dashed var(--rule);border-radius:var(--r-sm);background:var(--card);
  font-size:12px;font-weight:550;color:var(--ink-2);
  transition:border-color var(--t-tap) var(--ease),color var(--t-tap) var(--ease),transform var(--t-tap) var(--ease);
}
.py-chip .ts-sign{width:24px;height:24px;font-size:9px}
.py-chip:active{transform:scale(.97)}
.py-chip:focus-visible{outline:2px solid var(--ink);outline-offset:2px}

/* ── расчётный листок ── */
.py-slip{position:sticky;top:14px}
.py-paper{border:1px solid var(--rule-2);border-radius:var(--r);background:var(--card);box-shadow:var(--sh-2);overflow:hidden}
.py-slip-h{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px 0}
.py-slip-t h3{font-size:17px;font-weight:650;letter-spacing:-.025em;line-height:1.15;color:var(--ink)}
.py-slip-t p{margin-top:3px;font-size:12px;color:var(--ink-3)}
.py-icon{
  display:grid;place-items:center;flex-shrink:0;width:30px;height:30px;margin:-4px -6px 0 0;border:1px solid transparent;border-radius:var(--r-sm);color:var(--ink-2);
  transition:background-color var(--t-tap) var(--ease),border-color var(--t-tap) var(--ease),color var(--t-tap) var(--ease),transform var(--t-tap) var(--ease);
}
.py-icon:active{transform:scale(.94)}
.py-icon:focus-visible{outline:2px solid var(--ink);outline-offset:1px}
/* Кто: знак, имя, должность и правила — одним блоком, линия отрыва под ним. */
.py-slip-who{display:flex;align-items:flex-start;gap:10px;margin:14px 20px 0;padding-bottom:14px;border-bottom:1.5px dashed var(--rule)}
.py-slip-who .ts-sign{width:32px;height:32px;font-size:11px}
.py-slip-who div{min-width:0}
.py-slip-who b{font-size:13px;font-weight:600;letter-spacing:-.01em;color:var(--ink)}
.py-slip-who span{margin-left:6px;font-size:11.5px;color:var(--ink-2)}
.py-slip-who small{display:block;margin-top:3px;font-size:11.5px;line-height:1.4;color:var(--ink-3)}

.py-sec{padding:0 20px}
.py-sec h4{margin:14px 0 2px;font-size:11px;font-weight:500;color:var(--ink-3)}
.py-lines{margin:0}
/* Три колонки у всех строк — суммы стоят одна под другой и под итогом. */
.py-line{display:grid;grid-template-columns:78px minmax(0,1fr) 112px;column-gap:12px;align-items:baseline;padding:8px 0;border-bottom:1px solid var(--rule-2)}
.py-line:last-child{border-bottom:0}
.py-line dt{font-size:11.5px;font-weight:500;color:var(--ink-3)}
.py-line dd{margin:0}
.py-f{font-size:13px;line-height:1.4;color:var(--ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.py-f .py-void{margin-left:8px}
.py-c{font-size:13.5px;font-weight:600;letter-spacing:-.015em;color:var(--ink);white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums}
.py-c.minus{color:var(--ink-2)}
.py-void{
  font-size:11.5px;color:var(--ink-3);border-bottom:1px dotted var(--rule);white-space:nowrap;
  transition:color var(--t-tap) var(--ease),border-color var(--t-tap) var(--ease);
}
.py-void:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:2px}
.py-sum{display:flex;align-items:baseline;justify-content:space-between;padding:9px 0 2px;border-top:3px double var(--rule)}
.py-sum span{font-size:12.5px;font-weight:550;color:var(--ink-2)}
.py-sum b{font-size:14.5px;font-weight:650;letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums}
.py-outs{list-style:none}
.py-outs li{display:grid;grid-template-columns:minmax(0,1fr) 112px;column-gap:12px;align-items:baseline;padding:8px 0;border-bottom:1px solid var(--rule-2)}
.py-outs li:last-child{border-bottom:0}
.py-outs em{font-style:normal;font-size:12.5px;color:var(--ink-2)}
.py-outs .py-void{margin-left:8px}
.py-outs small{display:block;margin-top:1px;font-size:11px;color:var(--ink-3)}
.py-outs b{text-align:right;font-size:13.5px;font-weight:600;color:var(--ink);white-space:nowrap;font-variant-numeric:tabular-nums}
.py-outs li.void em,.py-outs li.void b{color:var(--ink-3);text-decoration:line-through;text-decoration-color:var(--ink-3)}
.py-none{padding:6px 0 8px;font-size:12px;color:var(--ink-3)}

/* К выдаче — самое крупное число экрана, на подложке, как итог на бланке. */
.py-total{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 20px 0;padding:12px 16px;border-radius:var(--r-sm);background:var(--paper)}
.py-total span{font-size:13px;font-weight:600;color:var(--ink-2)}
.py-total b{font-size:26px;font-weight:650;letter-spacing:-.035em;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}
.py-total.t-done b,.py-total.t-none b{color:var(--ink-3)}
.py-total.t-done span{color:var(--ok)}
.py-total.t-over span,.py-total.t-over b{color:var(--wait)}
.py-hints{list-style:none;margin:10px 20px 0}
.py-hints li{font-size:12px;line-height:1.45;color:var(--wait)}

/* Действия — на листке, одним рядом: выплата первой, поправки за ней. */
.py-slip-acts{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:16px;padding:12px 20px 14px;border-top:1px solid var(--rule-2);background:var(--off-paper)}
.py-pay{margin-right:4px}

.py-empty p{max-width:440px;font-size:12.5px;line-height:1.55;color:var(--ink-2)}

/* Вход вкладки: ведомость, затем листок — одним ходом; выбор человека листок не переигрывает. */
.ac-body.fresh .py-list,.ac-body.fresh .py-slip,.ac-body.fresh .py-empty{animation:acIn var(--t-move) var(--ease) both}
.ac-body.fresh .py-slip{animation-delay:60ms}

/* ── узкий стол и телефон ── */
@media (max-width:1180px){
  .py-desk{grid-template-columns:minmax(0,1fr)}
  .py-slip{position:static}
}
@media (max-width:720px){
  .py-bar{padding:8px 12px}
  .py-do{flex:1 1 100%;margin:0}
  .py-do .py-act{flex:1 1 auto}
  .py-desk{margin:0}
  .py-list-h,.py-row,.py-list-f{grid-template-columns:28px minmax(0,1fr) auto;padding:0 12px}
  .py-list-h span:nth-child(2),.py-list-h span:nth-child(3),.py-num,.py-list-f b:not(:last-child){display:none}
  .py-slip-h{padding:16px 14px 0}
  .py-slip-who{margin:12px 14px 0}
  .py-slip-who span{display:block;margin:1px 0 0}
  .py-sec{padding:0 14px}
  .py-line{grid-template-columns:minmax(0,1fr) auto;row-gap:1px}
  .py-line dt{grid-column:1 / -1}
  .py-outs li{grid-template-columns:minmax(0,1fr) auto}
  .py-total{margin:12px 14px 0}
  .py-hints{margin:10px 14px 0}
  .py-slip-acts{padding:12px 14px 14px}
  .py-slip-acts .py-act{flex:1 1 auto;height:36px}
  .py-slip-acts .py-pay{flex:1 1 100%;margin:0}
}

/* ═══ окна зарплаты: прибор кассы (cash.css, payment.css) ═══ */
.py-seg{grid-template-columns:repeat(var(--n,2),1fr)}
.py-kinds{display:grid;grid-template-columns:repeat(5,1fr);gap:2px;padding:2px;border-radius:var(--r);background:var(--sunk)}
.py-kinds .cx-seg-b{font-size:12px}
.py-bases{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.py-said{margin-top:10px;font-size:12px;line-height:1.5;color:var(--ink-3)}
.py-warns{list-style:none;margin-top:12px;padding:9px 12px;border-radius:var(--r-sm);background:var(--wait-bg)}
.py-warns li{font-size:12px;line-height:1.45;color:var(--wait)}
.py-warns li + li{margin-top:4px}
.py-rule-list{list-style:none}
.py-rule{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dotted var(--rule)}
.py-rule:last-child{border-bottom:0}
.py-rule b{display:block;font-size:13px;font-weight:600;color:var(--ink)}
.py-rule small{display:block;margin-top:1px;font-size:11.5px;color:var(--ink-3)}
.py-rule.s-ended b{color:var(--ink-3);font-weight:500;text-decoration:line-through;text-decoration-color:var(--ink-3)}
.py-rule.s-future small{color:var(--wait)}
.py-rules-body .pay-sec + .pay-sec{margin-top:18px}
@media (max-width:520px){
  .py-kinds{grid-template-columns:repeat(3,1fr)}
}

@media (prefers-reduced-motion:reduce){
  .ac-body.fresh .py-list,.ac-body.fresh .py-slip,.ac-body.fresh .py-empty{animation:none}
  .py-act:active,.py-chip:active,.py-icon:active{transform:none}
}
