:root {
  --bg: #e8dfcc;
  --paper: #fffdf7;
  --ink: #1c1914;
  --muted: #5a5348;
  --line: #d3c7b0;
  --site: #1e5a96;
  --supply: #b45309;
  --wh: #0f766e;
  --eng: #5b21b6;
  --yurich: #0369a1;
  --boss: #9f1239;
  --red: #dc2626;
  --orange: #d97706;
  --ok: #15803d;
  --shadow: 0 10px 28px rgba(40, 28, 8, 0.14);
}
* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; overflow-x: hidden; }
body {
  font-family: "Segoe UI", Tahoma, sans-serif;
  font-size: 18px;
  color: var(--ink);
  background: var(--bg);
}
body.r-site {
  --accent: var(--site);
  --muted: #2a2620;
}
body.r-supply { --accent: var(--supply); }
body.r-wh { --accent: var(--wh); }
body.r-eng { --accent: var(--eng); }
body.r-yurich { --accent: var(--yurich); }
body.r-boss { --accent: var(--boss); }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
a { color: var(--accent, var(--site)); }

.wrap { max-width: 100%; width: 100%; margin: 0 auto; padding: 10px 20px 40px; overflow-x: hidden; }
.wrap-nav { padding-bottom: 0; }
.nav-frame {
  display: block; width: 100%;
  height: calc(100vh - 130px);
  border: 2px solid var(--line); border-radius: 12px;
  background: #0f1419;
}
.nodes { display: flex; flex-wrap: wrap; gap: 10px; margin: 12px 0; }
.node {
  min-width: 180px; flex: 1 1 180px;
  border-radius: 12px; padding: 12px 14px; border: 2px solid var(--line);
}
.node b { display: block; font-size: 16px; margin-bottom: 4px; }
.node span { font-size: 13px; color: var(--muted); }
.node.ok { background: #dcfce7; border-color: #16a34a; }
.node.bad { background: #fee2e2; border-color: #b91c1c; }

body.mon {
  background: #071018;
  color: #d5e4ee;
}
body.mon .wrap-mon { max-width: 1400px; }
body.mon .topbar { background: #05080c; border-bottom: 1px solid #1e3a4c; }
body.mon .hint, body.mon .tiny { color: #8ba3b5; }
body.mon h2 { color: #7dd3fc; font-size: 15px; letter-spacing: .12em; text-transform: uppercase; margin: 22px 0 10px; }
body.mon .btn { background: #0b1c28; color: #7dd3fc; border: 1px solid #164e63; }
body.mon .empty { color: #8ba3b5; background: #0b1620; border-color: #1e3a4c; }
body.mon .data-table { background: #0b1620; color: #d5e4ee; }
body.mon .data-table th { background: #0a1a24; color: #7dd3fc; }
body.mon .data-table td { border-color: #1e3a4c; }
body.mon .node { background: #0b1620; border-color: #1e3a4c; color: #d5e4ee; }
body.mon .node span { color: #8ba3b5; }
body.mon .node.ok { background: #06281c; border-color: #16a34a; }
body.mon .node.bad { background: #2a0f14; border-color: #fb7185; }
.mon-top { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin: 8px 0 16px; }
.mon-pulse {
  font-weight: 900; letter-spacing: .16em; text-transform: uppercase;
  padding: 8px 14px; border-radius: 999px; border: 1px solid #164e63;
}
.mon-pulse.ok { color: #4ade80; border-color: #16a34a; background: #06281c; }
.mon-pulse.bad { color: #fb7185; border-color: #fb7185; background: #2a0f14; }
.mon-meta { display: flex; flex-wrap: wrap; gap: 10px 18px; color: #8ba3b5; font-size: 14px; flex: 1; }
.mon-pipe { display: flex; flex-wrap: wrap; align-items: stretch; gap: 8px; }
.mon-pipe > i { width: 18px; align-self: center; height: 2px; background: #164e63; }
.mon-cell {
  flex: 1 1 140px; min-width: 120px;
  background: #0b1620; border: 1px solid #1e3a4c; border-radius: 14px;
  padding: 12px 14px;
}
.mon-cell span { display: block; font-size: 12px; color: #8ba3b5; letter-spacing: .08em; text-transform: uppercase; }
.mon-cell b { display: block; font-size: 36px; line-height: 1.1; margin-top: 6px; font-variant-numeric: tabular-nums; }
.mon-cell.wait b { color: #fbbf24; }
.mon-cell.no b { color: #fb7185; }
.mon-cell.work b { color: #7dd3fc; }
.mon-cell.go b { color: #c4b5fd; }
.mon-cell.ok b { color: #4ade80; }
.mon-sigs { display: flex; flex-wrap: wrap; gap: 8px; }
.mon-sig {
  flex: 1 1 140px; background: #0b1620; border: 1px solid #1e3a4c;
  border-radius: 14px; padding: 10px 12px;
}
.mon-sig span { display: block; font-size: 12px; color: #8ba3b5; text-transform: uppercase; letter-spacing: .08em; }
.mon-sig b { font-size: 28px; font-variant-numeric: tabular-nums; }
.mon-sig.hot.lit { border-color: #fb7185; }
.mon-sig.hot.lit b { color: #fb7185; }
.mon-sig.late.lit { border-color: #fbbf24; }
.mon-sig.late.lit b { color: #fbbf24; }
.mon-sig.short.lit { border-color: #fb923c; }
.mon-sig.short.lit b { color: #fb923c; }
.mon-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 800px) { .mon-grid { grid-template-columns: 1fr; } }
.mon-shelves, .mon-today { display: grid; gap: 10px; }
.mon-shelf, .mon-today > div {
  background: #0b1620; border: 1px solid #1e3a4c; border-radius: 14px; padding: 12px 14px;
}
.mon-shelf span, .mon-today span { display: block; font-size: 12px; color: #8ba3b5; text-transform: uppercase; letter-spacing: .08em; }
.mon-shelf b, .mon-today b { font-size: 32px; color: #7dd3fc; font-variant-numeric: tabular-nums; }
.mon-shelf em { display: block; font-style: normal; color: #8ba3b5; font-size: 13px; }
.mon-bars { display: flex; gap: 10px; align-items: flex-end; height: 140px; padding: 8px 0 0; }
.mon-day { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.mon-col {
  width: 100%; max-width: 36px; height: 100px; display: flex; align-items: flex-end; gap: 2px;
}
.mon-col i { display: block; flex: 1; min-height: 2px; border-radius: 3px 3px 0 0; }
.mon-col i.req { background: #7dd3fc; }
.mon-col i.rec { background: #4ade80; }
.mon-day span { font-size: 11px; color: #8ba3b5; }
.mon-day em { font-style: normal; font-size: 11px; color: #d5e4ee; }
.mon-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.mon-chip {
  background: #2a0f14; border: 1px solid #fb7185; color: #fecdd3;
  border-radius: 999px; padding: 6px 12px; font-size: 14px; font-weight: 700;
}
.mon-whos { display: grid; gap: 6px; }
.mon-who { display: flex; gap: 10px; align-items: baseline; background: #0b1620; border: 1px solid #1e3a4c; border-radius: 10px; padding: 8px 12px; }
.mon-who b { color: #7dd3fc; min-width: 2ch; font-variant-numeric: tabular-nums; }
.topbar {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  background: var(--accent, #1c1914); color: #fff;
  margin: -10px -20px 16px; padding: 12px 20px;
}
.topbar .brand { font-size: 20px; font-weight: 800; }
.logo-tap { user-select: none; }
.logo-tap span { cursor: pointer; display: inline-block; padding: 0 1px; }
.logo-tap span:active { transform: translateY(1px); opacity: 0.7; }
h1.logo-tap { letter-spacing: 0.06em; }
.topbar .who { font-size: 26px; font-weight: 900; }
.topbar .spacer { flex: 1; }
.topbar .btn { box-shadow: none; min-height: 48px; background: rgba(255,255,255,.15); color: #fff; }
.topbar .btn:hover { background: #fff; color: var(--ink); }

.btn {
  border: 0; border-radius: 16px; padding: 16px 22px; font-weight: 800;
  min-height: 58px; box-shadow: var(--shadow);
}
.btn-ink { background: var(--ink); color: #fff; }
.btn-ghost { background: #fff; color: var(--ink); border: 2px solid var(--line); box-shadow: none; }
.btn-red { background: var(--red); color: #fff; }
.btn-ok { background: var(--ok); color: #fff; }
.btn-acc { background: var(--accent, var(--ink)); color: #fff; }
.btn-xl { width: 100%; font-size: 26px; min-height: 84px; border-radius: 20px; }

.yurich-day td {
  background: #1c1914; color: #f7f3ea; font-weight: 800; font-size: 14px;
  padding: 8px 12px;
}
.data-table td.name-clip {
  max-width: min(42vw, 720px); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
tr.yurich-on td { box-shadow: inset 0 0 0 2px #1c1914; }
article.yurich-on, .match-card.yurich-on { outline: 3px solid #1c1914; outline-offset: -3px; }
.yurich-full td, .nomen-full td { background: #fff8e8; padding: 12px 14px; }
.data-table tbody tr { cursor: pointer; }
.full-nomen { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 18px; margin: 8px 0; }
.full-nomen span { display: block; font-size: 12px; color: var(--muted); font-weight: 700; }
.full-nomen b { font-size: 16px; word-break: break-word; white-space: normal; }
.full-nomen .full-span { grid-column: 1 / -1; }
.name-line { display: flex; align-items: center; gap: 8px; min-width: 0; }
.name-clip-in { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.goods-link {
  flex: 0 0 auto;
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  background: #1e5a96;
  color: #fff !important;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .02em;
  text-decoration: none;
  white-space: nowrap;
  line-height: 1.4;
}
.goods-link:hover { background: #164578; }
body.mon .goods-link { background: #38bdf8; color: #041018 !important; }
.draw-card { text-align: left; min-height: 120px; }
.draw-card span { display: block; opacity: 0.92; font-weight: 600; font-size: 13px; margin-top: 4px; }
.grid-roles, .choice {
  display: grid; gap: 14px;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  margin: 16px 0 22px;
}
.role, .choice-btn {
  display: flex; flex-direction: column; justify-content: center;
  text-align: left; border: 0; border-radius: 24px;
  padding: 22px 20px; color: #fff; min-height: 150px; box-shadow: var(--shadow);
}
.role .ico, .choice-btn .ico { font-size: 40px; line-height: 1; margin-bottom: 8px; }
.role b, .choice-btn b { display: block; font-size: 30px; margin-bottom: 6px; }
.role span, .choice-btn span { display: block; font-size: 18px; opacity: 0.95; line-height: 1.3; font-weight: 600; }
.r-site { background: var(--site); }
.r-supply { background: var(--supply); }
.r-wh { background: var(--wh); }
.r-eng { background: var(--eng); }
.r-yurich { background: var(--yurich); }
.r-boss { background: var(--boss); }
.pin-dots { display: flex; gap: 16px; justify-content: center; margin: 18px 0 12px; }
.pin-dots i {
  width: 22px; height: 22px; border-radius: 50%;
  border: 3px solid var(--ink); background: transparent; display: block;
}
.pin-dots i.on { background: var(--ink); }
.pin-pad {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
  max-width: 360px; margin: 12px auto 0;
}
.pin-pad button {
  min-height: 72px; font-size: 28px; font-weight: 900;
  border-radius: 18px; border: 3px solid var(--line);
  background: #fff; box-shadow: 0 4px 0 #c4b8a0;
}
.pin-pad button:active { transform: translateY(2px); box-shadow: 0 2px 0 #c4b8a0; }
.pin-pad .pin-ghost { font-size: 18px; font-weight: 800; background: #f4ecdc; }
.choice-btn { background: #fff; color: var(--ink); border: 3px solid var(--line); min-height: 120px; }
.choice-btn.on { border-color: var(--accent, var(--ink)); background: #fff7e8; outline: 4px solid rgba(0,0,0,.08); }
.c-mat { --c:#1e5a96; }
.c-con { --c:#b45309; }
.c-tol { --c:#0f766e; }

h1 { font-size: 26px; margin: 4px 0 8px; }
.hint { color: var(--muted); margin: 0 0 10px; font-size: 16px; }
.step {
  display: inline-block; background: var(--ink); color: #fff;
  border-radius: 999px; padding: 4px 12px; font-size: 16px; font-weight: 800;
  margin-bottom: 8px;
}

.banner {
  padding: 14px 16px; border-radius: 14px; font-weight: 800; margin: 10px 0 14px;
}
.banner.ok { background: #dcfce7; color: #166534; }
.banner.err { background: #fee2e2; color: #991b1b; }

.card {
  background: var(--paper); border: 2px solid var(--line);
  border-radius: 20px; padding: 16px 18px; margin-bottom: 12px;
}
.card.kapets { border-color: var(--red); background: #fff1f0; }
.card.short { border-color: #ea580c; background: #ffedd5; }
.card.late { border-color: #ca8a04; background: #fef08a; }
.card.yurich-wait { border-color: #0369a1; background: #e0f2fe; }
.card.yurich-no { border-color: #b91c1c; background: #fee2e2; }
.card.kapets-short {
  border-color: var(--red);
  background: repeating-linear-gradient(-45deg, #fecaca 0 12px, #fdba74 12px 24px);
}
.card.cancelled { opacity: 0.7; background: #f3f4f6; }
.card.done { opacity: 0.92; }
.card.site { border-color: #4338ca; background: #eef2ff; }
.row-top { display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; align-items: center; }
.key {
  font-weight: 900; background: var(--ink); color: #fff;
  border-radius: 12px; padding: 6px 12px; font-size: 20px;
}
.name { font-size: 24px; font-weight: 800; margin: 8px 0 6px; word-break: break-word; white-space: normal; }
.meta { color: var(--muted); font-size: 18px; line-height: 1.4; }
.actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 12px; }

.form {
  background: var(--paper); border: 2px solid var(--line);
  border-radius: 22px; padding: 18px; margin-bottom: 20px;
}
.form h2 { margin: 0 0 14px; font-size: 26px; }
.fields { display: grid; gap: 14px; grid-template-columns: 1fr; }
@media (min-width: 720px) {
  .fields-2 { grid-template-columns: 1fr 1fr; }
}
label { display: flex; flex-direction: column; gap: 6px; font-size: 16px; color: var(--muted); font-weight: 800; }
.lab { font-size: 18px; color: var(--ink); }
input, select, textarea {
  border: 3px solid var(--line); border-radius: 14px; padding: 14px;
  background: #fff; min-height: 58px;
}
input:focus, select:focus { border-color: var(--accent, var(--ink)); outline: none; }
.kapets-toggle {
  display: flex; align-items: center; justify-content: center;
  min-height: 64px; border-radius: 16px; border: 4px solid #5c564c; font-weight: 900;
  background: #fff; color: #2a2620; font-size: 22px;
}
.kapets-toggle.on { border-color: var(--red); background: var(--red); color: #fff; }

.pick-list {
  display: block;
  max-height: 320px; overflow-y: auto; overflow-x: hidden;
  border: 3px solid var(--ink); border-radius: 16px; background: #fff;
}
.pick-ul { list-style: none; margin: 0; padding: 0; }
.pick-head {
  display: block; padding: 10px 14px;
  background: var(--ink); color: #fff;
  font-size: 16px; font-weight: 800;
}
.pick-row {
  display: block; width: 100%;
  text-align: left; cursor: pointer;
  border: 0; border-bottom: 2px solid var(--line);
  background: #fff; padding: 12px 14px;
  box-shadow: none; border-radius: 0; min-height: 48px;
}
.pick-row:nth-child(odd) { background: #faf6ee; }
.pick-row:last-child { border-bottom: 0; }
.pick-row.on { background: #fde68a; outline: 3px solid #d97706; outline-offset: -3px; }
.pick-name {
  display: block; overflow: visible; word-break: break-word; white-space: normal;
  font-weight: 800; font-size: 18px; line-height: 1.35; color: var(--ink);
}
.pick-meta { display: block; margin-top: 4px; font-size: 15px; color: var(--muted); font-weight: 700; }
.pick-other {
  display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
  padding: 12px 14px; background: #eef6ff; color: #1e3a5f;
  font-size: 16px; font-weight: 700; border-bottom: 2px solid var(--line);
}
.pick-other .btn { min-height: 44px; padding: 8px 12px; font-size: 16px; box-shadow: none; }
.pick-create {
  display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: space-between;
  padding: 12px 14px; background: #ecfdf5; color: #14532d;
  font-size: 16px; font-weight: 700;
}
.pick-create .btn { min-height: 44px; padding: 8px 14px; font-size: 16px; box-shadow: none; }

.table-wrap { overflow: auto; background: var(--paper); border-radius: 16px; border: 2px solid var(--line); }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 12px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
th { background: #f4ecdc; font-size: 15px; position: sticky; top: 0; }
td.src-req { background: #d9f3de; }
td.src-sup { background: #fff3c4; }
td.src-stk { background: #f8d5e3; }
.legend { display: flex; gap: 12px; flex-wrap: wrap; margin: 8px 0 12px; font-size: 16px; }
.lg { display: flex; align-items: center; gap: 6px; }
.sw { width: 20px; height: 20px; border-radius: 4px; border: 1px solid var(--line); }
.sw-req { background: #d9f3de; }
.sw-sup { background: #fff3c4; }
.sw-stk { background: #f8d5e3; }
.stat {
  display: flex; gap: 10px; flex-wrap: wrap; margin: 8px 0 16px;
}
.stat b, .stat button {
  background: #fff; border-radius: 14px; padding: 10px 16px; font-size: 20px;
  border: 2px solid var(--line); min-height: 48px; font-weight: 900; box-shadow: none;
}
.stat .hot { border-color: var(--red); color: var(--red); }
.stat .short { border-color: #ea580c; color: #c2410c; }
.stat .warm { border-color: #ca8a04; color: #a16207; }
.stat button.on { background: var(--ink); color: #fff; border-color: var(--ink); }
.stat button.hot.on { background: var(--red); color: #fff; border-color: var(--red); }
.stat button.short.on { background: #ea580c; color: #fff; border-color: #ea580c; }
.stat button.warm.on { background: #ca8a04; color: #fff; border-color: #ca8a04; }
.mark-kapets { color: #fff; background: var(--red); border-radius: 10px; padding: 4px 10px; font-weight: 900; white-space: nowrap; display: inline-block; }
.chk { display: flex; align-items: center; gap: 10px; font-size: 18px; margin-bottom: 8px; font-weight: 700; }
.chk input { width: 26px; height: 26px; }

.empty {
  padding: 40px 16px; text-align: center; color: var(--muted);
  background: var(--paper); border-radius: 20px; border: 3px dashed var(--line);
  font-size: 22px;
}
.group-title { font-size: 18px; font-weight: 800; margin: 18px 0 8px; color: var(--muted); }
.tiny { font-size: 15px; color: var(--muted); font-weight: 600; }
.daygrid input[type="number"] { min-height: 56px; width: 92px; font-size: 24px; }
.today { background: #fde68a; }
.frozen { position: sticky; left: 0; background: var(--paper); z-index: 1; max-width: min(36vw, 520px); word-break: break-word; white-space: normal; }
.frozen .name-line { white-space: nowrap; }
.cat-row { display: flex; gap: 8px; margin-bottom: 8px; }
.cat-row input { flex: 1; }
.picked { background: #fef3c7; border-radius: 12px; padding: 8px 12px; margin: 8px 0; border: 2px solid #f59e0b; font-size: 16px; }
.picked b { word-break: break-word; white-space: normal; display: block; }
.more { margin-top: 10px; }
.status-row { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.status-row .btn { min-height: 40px; font-size: 15px; padding: 6px 12px; box-shadow: none; }
.linkish { background: none; border: 0; color: var(--muted); text-decoration: underline; min-height: auto; padding: 8px; box-shadow: none; font-weight: 700; }

.seg { display: flex; gap: 8px; flex-wrap: wrap; margin: 6px 0 12px; }
.seg button {
  min-height: 58px; padding: 10px 16px; border-radius: 14px;
  border: 3px solid #c4b8a0; background: #f4ecdc; color: #4a433a;
  font-size: 18px; font-weight: 800; box-shadow: 0 3px 0 #c4b8a0;
}
.seg button.on {
  background: var(--ink); color: #fff;
  border-color: var(--ink); border-width: 4px;
  box-shadow: inset 0 4px 0 rgba(0,0,0,.35);
  transform: translateY(2px);
}
.seg button.has-kapets { border-color: var(--red); box-shadow: 0 0 0 3px rgba(220,38,38,.28), 0 3px 0 #c4b8a0; }
.seg button.on.has-kapets {
  border-color: var(--ink);
  box-shadow: inset 0 4px 0 rgba(0,0,0,.35), 0 0 0 4px rgba(220,38,38,.45);
}
.seg button span { display: block; font-size: 13px; font-weight: 700; opacity: .9; margin-top: 2px; }
.seg button.on span { color: #fde047; opacity: 1; }
.seg button .ico { display: inline; font-size: 22px; margin-right: 6px; line-height: 1; opacity: 1; }
.tabs { display: flex; gap: 6px; flex-wrap: wrap; margin: 8px 0 12px; }
.tab {
  min-height: 46px; padding: 8px 14px; border-radius: 12px;
  border: 3px solid #c4b8a0; background: #f4ecdc; font-weight: 800; box-shadow: 0 3px 0 #c4b8a0;
}
.tab.on {
  background: var(--ink); color: #fff; border-color: var(--ink);
  box-shadow: inset 0 3px 0 rgba(0,0,0,.35); transform: translateY(2px);
}

.work { display: grid; gap: 16px; align-items: start; }
.work-form, .work-data { min-width: 0; max-width: 100%; }
.work-form .form { margin-bottom: 0; }
.work-data h2 { font-size: 18px; margin: 0 0 8px; }
@media (min-width: 1100px) {
  .work {
    grid-template-columns: minmax(400px, 32%) minmax(0, 1fr);
  }
  .work-form {
    position: sticky; top: 8px;
    max-height: calc(100vh - 16px);
    overflow: auto;
  }
  .work-form .fields-2 { grid-template-columns: 1fr 1fr; }
  .work-data .table-wrap { max-height: calc(100vh - 190px); }
}
@media (max-width: 1099px) {
  .work { grid-template-columns: 1fr; }
  .work-form .fields-2 { grid-template-columns: 1fr; }
}

.table-wrap { max-height: 64vh; overflow: auto; }
.data-table { width: 100%; min-width: 820px; table-layout: auto; }
.data-table th, .data-table td { padding: 7px 8px; font-size: 15px; line-height: 1.3; }
.data-table th { font-size: 13px; text-transform: uppercase; letter-spacing: .02em; white-space: nowrap; }
.data-table tr:hover td { background: #fff7e8; }
.data-table tr.kapets td {
  background: #fecaca;
  box-shadow: inset 6px 0 0 var(--red);
}
.data-table tr.kapets:hover td { background: #fca5a5; }
.data-table tr.kapets .cell-inp { background: #fff1f2; border-color: #f87171 !important; }
.data-table tr.late td {
  background: #fde047;
  box-shadow: inset 6px 0 0 #ca8a04;
}
.data-table tr.late:hover td { background: #facc15; }
.data-table tr.short td {
  background: #fdba74;
  box-shadow: inset 6px 0 0 #ea580c;
}
.data-table tr.short:hover td { background: #fb923c; }
.data-table tr.short .cell-inp { background: #fff7ed; border-color: #fb923c !important; }
.data-table tr.over td {
  background: #bbf7d0;
  box-shadow: inset 6px 0 0 #16a34a;
}
.data-table tr.over:hover td { background: #86efac; }
.data-table tr.kapets-short td {
  background-image: repeating-linear-gradient(-45deg, #fecaca 0 12px, #fdba74 12px 24px);
  box-shadow: inset 6px 0 0 var(--red);
}
.data-table tr.kapets-short:hover td {
  background-image: repeating-linear-gradient(-45deg, #fca5a5 0 12px, #fb923c 12px 24px);
}
.data-table tr.kapets-short .cell-inp { background: #fff1f2; border-color: #f87171 !important; }
.data-table tr.cancelled td { background: #f3f4f6; opacity: 0.75; }
.hole { color: #c2410c; font-weight: 900; white-space: nowrap; }
.data-table tr.short .hole, .data-table tr.kapets-short .hole { color: #7c2d12; }
.surplus { color: #15803d; font-weight: 900; white-space: nowrap; }
.data-table tr.over .surplus { color: #14532d; }
.alloc-box {
  margin: 12px 0; padding: 12px; background: #fff7e8;
  border: 2px solid var(--line); border-radius: 14px;
}
.alloc-box .table-wrap { max-height: none; margin: 8px 0; }
.alloc-box .data-table { min-width: 0; }
.alloc-qty { width: 88px; }
.match-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-items: start; }
@media (max-width: 900px) { .match-cols { grid-template-columns: 1fr; } }
.match-list { max-height: none; overflow: visible; padding-right: 4px; }
.match-card {
  display: block; width: 100%; text-align: left; cursor: pointer;
  background: #fff; border: 2px solid var(--line); border-radius: 12px;
  padding: 10px 12px; margin: 0 0 8px; box-shadow: none; min-height: 0;
  font-size: 15px; font-weight: 700;
}
.match-card.on { background: #fde68a; border-color: #d97706; outline: 3px solid #d97706; }
.match-card .pick-name { font-size: 16px; margin-top: 4px; }
.match-act { margin-top: 8px; }
.match-card.pending { background: #fff7ed; border-color: #f59e0b; }
.match-card.qty-hit { background: #dcfce7; border-color: #16a34a; }
.match-card.qty-hit.on { background: #bbf7d0; }
.match-card.unit-mix { background: #fee2e2; border-color: #dc2626; }
.unit-warn { color: #b91c1c; font-weight: 900; }
.pack-hint { color: #9a3412; font-weight: 800; }
.match-btns { display: flex; gap: 8px; margin-top: 10px; }
.match-btns .btn-mini { min-height: 48px; min-width: 72px; font-size: 22px; font-weight: 900; }
.match-list-wide { max-height: none; }
.data-table tr.done td { opacity: 0.88; }
.data-table tr.site td {
  background: #e0e7ff;
  box-shadow: inset 6px 0 0 #4338ca;
}
.data-table tr.site:hover td { background: #c7d2fe; }
.data-table tr.proj-need td {
  background: #ffedd5;
  box-shadow: inset 6px 0 0 #ea580c;
}
.data-table tr.proj-wait td {
  background: #fef9c3;
  box-shadow: inset 6px 0 0 #ca8a04;
}
.data-table tr.proj-ok td { opacity: 0.92; }
.data-table tr.proj-over td {
  background: #fee2e2;
  box-shadow: inset 6px 0 0 #b91c1c;
}
.data-table tr.proj-over:hover td { background: #fecaca; }
.data-table tr.proj-need:hover td { background: #fed7aa; }
.name-cell { font-weight: 700; max-width: 240px; overflow: hidden; text-overflow: ellipsis; }
.who-cell, .clip { max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mark-cell { white-space: normal; line-height: 1.7; }
.kap-cell { white-space: nowrap; }
.stage-row { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 2px; }
.st {
  display: inline-block; padding: 3px 10px; border-radius: 999px;
  font-weight: 800; font-size: 13px; white-space: nowrap; margin: 0 4px 2px 0;
}
.st-wait { background: #fef3c7; color: #92400e; }
.st-ok { background: #dcfce7; color: #166534; }
.st-no { background: #fee2e2; color: #991b1b; }
.st-work, .st-in { background: #dbeafe; color: #1e40af; }
.st-go { background: #ede9fe; color: #5b21b6; }
.st-done { background: #e5e7eb; color: #374151; }
.st-cancel { background: #f3f4f6; color: #6b7280; }
.st-part { background: #ffedd5; color: #9a3412; }
.st-enough { background: #ecfccb; color: #3f6212; }
.road { display: flex; align-items: center; flex-wrap: wrap; gap: 0; min-width: 180px; }
.rd {
  width: 22px; height: 22px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: #e5e7eb; color: #6b7280; border: 2px solid #d1d5db;
  font-size: 11px; font-weight: 900; line-height: 1;
}
.rd.on { background: #1e5a96; color: #fff; border-color: #1e5a96; }
.rd.now { background: #facc15; color: #713f12; border-color: #ca8a04; box-shadow: 0 0 0 3px rgba(250,204,21,.35); }
.rd.warn { background: #facc15; color: #713f12; border-color: #ca8a04; }
.rd.stop { background: #dc2626; color: #fff; border-color: #991b1b; }
.rd-bar { width: 16px; height: 3px; background: #d1d5db; flex: 0 0 16px; }
.rd-bar.on { background: #1e5a96; }
.rd-bar.stop { background: #dc2626; }
.road-cap { margin-left: 8px; font-style: normal; font-size: 12px; font-weight: 800; color: var(--muted); }
.num { white-space: nowrap; font-variant-numeric: tabular-nums; }
.btn-mini {
  min-height: 32px; padding: 4px 10px; font-size: 13px; font-weight: 800;
  border-radius: 10px; border: 2px solid var(--line); background: #fff;
  box-shadow: none; margin: 0 2px 2px 0;
}
.btn-mini.ok { background: var(--ok); color: #fff; border-color: var(--ok); }
.btn-mini.acc { background: var(--accent, var(--ink)); color: #fff; border-color: transparent; }
.btn-mini.hot { background: var(--red); color: #fff; border-color: var(--red); }
.more-pop-fixed {
  position: fixed; z-index: 80;
  background: #fff; border: 3px solid var(--ink); border-radius: 14px;
  min-width: 230px; padding: 6px; box-shadow: var(--shadow);
}
.more-pop-fixed button {
  display: block; width: 100%; text-align: left;
  min-height: 44px; padding: 8px 12px; margin: 0;
  border: 0; background: #fff; font-weight: 800; font-size: 16px;
  border-radius: 10px;
}
.more-pop-fixed button:hover { background: #fff7e8; }
.more-pop-fixed button.danger { color: var(--red); }
.sel-box { width: 22px; height: 22px; accent-color: #1c1914; cursor: pointer; }
tr.sel-on td { background: #fde68a; }
.sel-bar {
  display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
  background: #fde68a; border: 2px solid #d97706;
  border-radius: 12px; padding: 8px 10px; margin: 8px 0;
  font-weight: 800;
}
.sel-bar.off { display: none; }
.edit-mask {
  position: fixed; inset: 0; z-index: 90;
  background: rgba(28, 25, 20, 0.45);
  display: flex; align-items: flex-start; justify-content: center;
  padding: 24px 12px; overflow: auto;
}
.edit-box {
  background: var(--paper); border: 3px solid var(--ink);
  border-radius: 20px; padding: 18px 18px 12px;
  width: min(760px, 96vw); box-shadow: var(--shadow);
}
.edit-box h2 { margin: 0 0 8px; font-size: 26px; }
.edit-box .warn { background: #fef3c7; border: 2px solid #d97706; border-radius: 12px; padding: 8px 12px; font-weight: 700; }
.edit-box label { width: 100%; }
.edit-box input, .edit-box select { width: 100%; }
.pill-late { color: #713f12; background: #facc15; border-radius: 8px; padding: 2px 8px; font-weight: 800; font-size: 12px; white-space: nowrap; display: inline-block; }
.group-bar {
  display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-start;
  padding: 8px 10px; background: #f4ecdc; border: 2px solid var(--line);
  border-bottom: 0; border-radius: 12px 12px 0 0; font-size: 15px;
}
.group-bar b { font-size: 16px; }
.group-bar .g-name {
  flex: 1 1 100%;
  white-space: normal;
  overflow: visible;
  word-break: break-word;
  font-weight: 800;
}
.g-qty { display: flex; flex-wrap: wrap; gap: 8px; flex: 1 1 100%; align-items: stretch; }
.g-qty span {
  background: #fff;
  border-radius: 10px;
  padding: 6px 12px;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.2;
}
.g-qty b { display: block; font-size: 22px; font-weight: 900; margin-top: 2px; }
.q-need { background: #fff; border: 2px solid var(--line); }
.q-in { background: #dcfce7; border: 2px solid #16a34a; color: #14532d; }
.q-hole { background: #ffedd5; border: 2px solid #ea580c; color: #9a3412; }
.q-ok { background: #dcfce7; border: 2px solid #16a34a; color: #166534; font-size: 16px; }
.q-over { background: #bbf7d0; border: 2px solid #15803d; color: #14532d; }
.data-table td.name-full {
  white-space: normal;
  overflow: visible;
  text-overflow: unset;
  max-width: none;
  font-weight: 700;
  word-break: break-word;
}
.group-block { margin-bottom: 14px; }
.group-block .table-wrap { border-radius: 0 0 12px 12px; max-height: none; }
.search-row { margin: 0 0 8px; }
.search-row input { min-height: 46px; width: 100%; }

.form { padding: 14px; border-radius: 16px; }
.form h2 { font-size: 20px; margin: 0 0 10px; }
.fields { gap: 10px; }
.fields-qty {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 110px;
  gap: 10px;
  margin-bottom: 10px;
}
.lab-unit select { max-width: 110px; }
.work-form .form > .lab,
.work-form .form > label.lab { margin-bottom: 10px; }
input, select, textarea { min-height: 46px; padding: 10px 12px; border-width: 2px; border-radius: 12px; }
.btn { min-height: 48px; padding: 12px 16px; }
.btn-xl { min-height: 64px; font-size: 22px; }
.kapets-toggle { min-height: 48px; font-size: 18px; width: 100%; }
.btn-kapets {
  min-height: 36px; padding: 4px 8px; font-size: 12px; font-weight: 900;
  border-radius: 10px; border: 3px solid #5c564c; background: #fff; color: #2a2620;
  box-shadow: none; white-space: nowrap;
}
.work-data td:last-child { white-space: normal; }
.cell-inp {
  min-height: 36px !important; padding: 4px 8px !important; font-size: 14px !important;
  width: 100%; border-width: 2px !important;
}
.cmt-inp { min-width: 180px; }
.btn-kapets.on { border-color: var(--red); background: var(--red); color: #fff; }
.group-bar.kapets { background: #fecaca; border-color: var(--red); }
.group-bar.short { background: #fdba74; border-color: #ea580c; }
.group-bar.late { background: #fde047; border-color: #ca8a04; }
.group-bar.kapets-short {
  background: repeating-linear-gradient(-45deg, #fecaca 0 12px, #fdba74 12px 24px);
  border-color: var(--red);
}
.folder-title.short { background: #ea580c; }
.folder-title.late { background: #ca8a04; }
.folder-title.site { background: #4338ca; }
.folder-title.over { background: #16a34a; }
.mark-site {
  color: #312e81; background: #c7d2fe; border-radius: 10px;
  padding: 4px 10px; font-weight: 900; white-space: nowrap; display: inline-block;
}
.folder-title.site .mark-site { color: #eef2ff; background: #3730a3; }
.fold-nav button.has-site { border-color: #4338ca; }
.fold-nav button.on { background: var(--ink); color: #fff; }
.admit { border-radius: 8px; padding: 2px 8px; font-weight: 800; font-size: 12px; white-space: nowrap; }
.admit-ok, .admit.admit-ok { background: #dcfce7; color: #166534; }
.admit-raw, .admit.admit-raw { background: #ffedd5; color: #9a3412; }
.admit-old, .admit.admit-old { background: #e0e7ff; color: #3730a3; }
.admit-scan, .admit.admit-scan { background: #fef9c3; color: #854d0e; }
.fold-nav button.admit-ok { border-color: #16a34a; }
.fold-nav button.admit-raw { border-color: #ea580c; }
.fold-nav button.admit-old { border-color: #4338ca; }
.linkish { background: none; border: 0; box-shadow: none; padding: 0; min-height: 0; font: inherit; color: var(--ink); text-decoration: underline; cursor: pointer; }
.folder-title.over .surplus { color: #ecfccb; }
.folder-title.kapets-short {
  background: repeating-linear-gradient(-45deg, #b91c1c 0 12px, #c2410c 12px 24px);
}
.seg button.has-short { border-color: #ea580c; box-shadow: 0 0 0 3px rgba(234,88,12,.25); }
.seg button.has-late { border-color: #ca8a04; box-shadow: 0 0 0 3px rgba(202,138,4,.25); }
.fold-nav button.has-short { border-color: #ea580c; }
.fold-nav button.has-late { border-color: #ca8a04; }
.fold-nav button.has-over { border-color: #16a34a; }
.folder-block { margin: 18px 0 28px; }
.folder-title {
  display: flex; flex-wrap: wrap; gap: 10px; align-items: center;
  font-size: 22px; font-weight: 900; margin: 0 0 12px;
  padding: 10px 14px; background: var(--ink); color: #fff;
  border-radius: 12px;
}
.folder-title.kapets { background: var(--red); }
.fold-nav {
  display: flex; flex-wrap: wrap; gap: 6px;
  position: sticky; top: 0; z-index: 20;
  background: var(--bg); padding: 8px 0 10px; margin: 0 0 10px;
  border-bottom: 2px solid var(--line);
}
.fold-nav button {
  min-height: 40px; padding: 6px 12px; border-radius: 10px;
  border: 2px solid var(--line); background: #fff; color: var(--ink);
  font-size: 15px; font-weight: 800; box-shadow: none;
}
.fold-nav button span {
  display: inline; margin-left: 6px; font-size: 13px; opacity: 1; color: #2a2620;
}
input::placeholder, textarea::placeholder {
  color: #4a433a;
  opacity: 1;
}
.fold-nav button.has-kapets { border-color: var(--red); }
.fold-nav button:hover { background: #fff7e8; }
.folder-block { scroll-margin-top: 58px; }
.empty { padding: 18px 12px; font-size: 16px; border-radius: 12px; }
.pick-list { max-height: 240px; }
.stat b, .stat button { font-size: 16px; padding: 8px 12px; }

.wh-menu { display: grid; gap: 18px; margin-top: 10px; }
.wh-shelf {
  background: #fffdf7;
  border: 4px solid var(--c, var(--ink));
  border-radius: 28px;
  padding: 18px;
  box-shadow: var(--shadow);
}
.wh-shelf-top { display: flex; gap: 14px; align-items: flex-start; margin-bottom: 14px; }
.wh-shelf-top .ico { font-size: 48px; line-height: 1; }
.wh-shelf h2 { margin: 0; font-size: 34px; }
.wh-shelf .hint { margin: 4px 0 0; }
.wh-acts { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.wh-act {
  min-height: 110px;
  border: 0;
  border-radius: 22px;
  color: #fff;
  font-size: 28px;
  font-weight: 900;
  text-align: left;
  padding: 18px 20px;
  box-shadow: 0 8px 0 rgba(0,0,0,.18);
}
.wh-act small { display: block; font-size: 16px; font-weight: 700; opacity: .95; margin-top: 6px; line-height: 1.25; }
.wh-act.in { background: #15803d; }
.wh-act.out { background: #c2410c; }
.wh-act:active { transform: translateY(3px); box-shadow: 0 4px 0 rgba(0,0,0,.18); }
.wh-stock-link {
  margin-top: 12px;
  width: 100%;
  min-height: 48px;
  border: 0;
  background: transparent;
  color: var(--muted);
  font-weight: 800;
  text-decoration: underline;
  box-shadow: none;
  font-size: 16px;
}
.wh-crumb { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin: 0 0 12px; }
.wh-now { font-size: 22px; font-weight: 800; }
.glue-table td { vertical-align: top; }
.glue-act { white-space: nowrap; }
.glue-act .btn-mini { min-height: 44px; margin: 2px 0; }
.data-table tr.qty-hit td { background: #dcfce7; }
.data-table tr.unit-mix td { background: #fee2e2; }
.unit-warn { color: #b91c1c; font-weight: 800; }
@media (max-width: 720px) {
  .wh-acts { grid-template-columns: 1fr; }
  .wh-act { min-height: 92px; font-size: 26px; }
}

/* Ждун → заявка поставщику (Excel) */
.zo-bar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: -4px 0 14px; padding: 10px 12px; background: #eef6ff; border: 2px solid #1e5a96; border-radius: 12px; }
.zo-bar .zo-make { background: #1e5a96; color: #fff; border-color: #1e5a96; font-weight: 900; }
.zo-bar .zo-make b { font-size: 1.1em; }
.zo-list { flex: 1 1 100%; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.zo-old { font-weight: 700; }
.zo-th { white-space: nowrap; }
.data-table td.zo-cell { white-space: nowrap; }
.zo-lab { display: flex; flex-direction: row; align-items: center; gap: 6px; font-size: 13px; font-weight: 800; color: var(--ink); cursor: pointer; margin: 2px 0; }
.zo-lab input[type="checkbox"] { width: 20px; height: 20px; min-height: 0; padding: 0; margin: 0; border-radius: 4px; accent-color: #1e5a96; }
.zo-lab.zo-an { color: #166534; }
.zo-lab.zo-an input[type="checkbox"] { accent-color: #16a34a; }
.data-table tr.zo-on td { box-shadow: inset 0 0 0 9999px rgba(30, 90, 150, .10); }
.zo-bar-ri { margin: 4px 0 16px; }
.zo-bar-ri .zo-title { flex: 1 1 100%; font-weight: 900; font-size: 16px; color: #1e5a96; }
.zo-bar-ri .zo-title .tiny { font-weight: 600; color: #475569; }
.data-table td.zo-cell.zo-off { color: #94a3b8; }
.data-table td.zo-cell.zo-off .tiny { color: #94a3b8; font-style: italic; }
.zo-was { display: block; margin-top: 3px; font-size: 12px; font-weight: 800; color: #b45309; white-space: nowrap; }
.zo-was.zo-was-off { color: #94a3b8; font-weight: 600; }

/* Склад: правила прихода/списания (28.09.2026) — крупно и понятно */
.banner.warn { background: #fef3c7; color: #92400e; border: 2px solid #f59e0b; font-size: 18px; }
.wh-avail { font-size: 20px; font-weight: 800; margin: 6px 0 8px; }
.wh-avail b { font-size: 24px; color: #166534; }
.wh-room { font-size: 20px; font-weight: 900; color: #166534; }
.wh-sum { font-size: 18px; font-weight: 800; margin-top: 6px; }
.wh-bad { color: #991b1b; background: #fee2e2; border-radius: 10px; padding: 8px 10px; margin-top: 6px; font-size: 18px; font-weight: 900; }
.wh-warn { color: #92400e; background: #fef3c7; border-radius: 10px; padding: 8px 10px; margin-top: 6px; font-size: 18px; font-weight: 800; }
.wh-warn-chip { display: inline-block; background: #fef3c7; color: #92400e; border: 1px solid #f59e0b; border-radius: 8px; padding: 0 6px; font-size: 13px; font-weight: 800; }
.wh-stop { background: #fee2e2; border: 3px solid #dc2626; color: #7f1d1d; font-size: 18px; }
.wh-stop b { font-size: 22px; }
.alloc-qty { font-size: 20px; min-height: 44px; }
.inp-bad { outline: 3px solid #dc2626; background: #fee2e2; }
.wh-onshelf { font-weight: 900; font-size: 18px; }
.wh-onshelf.neg { color: #b91c1c; }

.pill-await { color: #334155; background: #e2e8f0; border: 1px solid #94a3b8; border-radius: 8px; padding: 2px 8px; font-weight: 700; font-size: 12px; white-space: nowrap; display: inline-block; }
.await-box { background: #f1f5f9; border: 1px solid #cbd5e1; border-radius: 12px; padding: 10px 14px; margin: 10px 0; }
.await-box h3 { margin: 0 0 4px; }
.await-box .pick-row { cursor: pointer; }

/* ===== Холодильник: новые экраны Приход / Списание (29.09.2026). Телефон и компьютер, цели ≥48px, шрифт полей ≥16px ===== */
.fr-wrap { max-width: 1100px; margin: 0 auto; }
.fr-wrap * { min-width: 0; }
.fr-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 6px 0 14px; }
.fr-tab { border: 3px solid var(--line); background: #fff; color: var(--ink); border-radius: 16px; min-height: 64px; padding: 8px 12px; font-size: 22px; font-weight: 900; box-shadow: none; }
.fr-tab small { display: block; font-size: 14px; font-weight: 700; opacity: .85; }
.fr-tab.in.on { background: #15803d; border-color: #15803d; color: #fff; }
.fr-tab.out.on { background: #c2410c; border-color: #c2410c; color: #fff; }
.fr-cols { display: grid; grid-template-columns: 1fr; gap: 16px; align-items: start; }
@media (min-width: 900px) { .fr-cols { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.fr-step-t { font-weight: 900; font-size: 16px; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; margin: 4px 0 6px; }
.fr-search { width: 100%; min-height: 56px; font-size: 18px; padding: 10px 14px; border-radius: 14px; border: 3px solid var(--line); background: #fff; }
.fr-list { display: grid; gap: 8px; margin-top: 10px; }
.fr-row { text-align: left; width: 100%; min-height: 56px; border: 2px solid var(--line); background: #f3efe6; border-radius: 14px; padding: 10px 14px; box-shadow: none; color: var(--ink); }
.fr-row.on { border-color: var(--ink); background: #fff; }
.fr-row-name { display: block; font-size: 17px; font-weight: 800; word-break: break-word; }
.fr-row-sub { display: block; font-size: 15px; color: var(--muted); margin-top: 2px; }
.fr-empty, .fr-idle { padding: 16px; border-radius: 14px; background: #f3efe6; font-size: 16px; color: var(--muted); }
.fr-more { font-size: 14px; color: var(--muted); padding: 4px 6px; }
.fr-card, .fr-res { background: var(--paper); border: 3px solid var(--line); border-radius: 20px; padding: 16px; }
.fr-card.in { border-color: #15803d; } .fr-card.out { border-color: #c2410c; }
.fr-link { border: 0; background: transparent; color: var(--accent, #1e5a96); text-decoration: underline; font-size: 16px; font-weight: 800; min-height: 48px; padding: 0 4px; box-shadow: none; }
.fr-name { margin: 2px 0 2px; font-size: 22px; word-break: break-word; }
.fr-facts { margin: 10px 0; display: grid; gap: 8px; }
.fr-req { background: #f3efe6; border-radius: 12px; padding: 10px 12px; font-size: 16px; }
.fr-req-t { line-height: 1.4; word-break: break-word; }
.fr-split { margin-top: 8px; font-size: 15px; }
.fr-split input, .fr-split select { width: 100%; font-size: 18px; min-height: 52px; }
.fr-avail { font-size: 20px; } .fr-avail b { font-size: 26px; color: #9a3412; }
.fr-qtyrow { display: grid; grid-template-columns: 56px minmax(0, 1fr) 56px auto; gap: 8px; align-items: center; margin: 10px 0; }
.fr-qtyrow input { font-size: 28px; font-weight: 900; text-align: center; min-height: 56px; width: 100%; padding: 6px; }
.fr-step { min-height: 56px; min-width: 56px; border: 0; border-radius: 14px; background: var(--ink); color: #fff; font-size: 30px; font-weight: 900; box-shadow: none; padding: 0; }
.fr-unit { font-size: 20px; font-weight: 800; padding-left: 4px; }
.fr-hint { background: #fef9c3; border: 2px solid #eab308; border-radius: 12px; padding: 10px 12px; font-size: 16px; font-weight: 700; margin: 8px 0; color: #713f12; }
.fr-warn { background: #fef3c7; color: #92400e; border: 3px solid #f59e0b; border-radius: 12px; padding: 10px 12px; font-size: 17px; font-weight: 800; margin: 8px 0; }
.fr-warn.glow { animation: frGlow 1.2s ease-in-out infinite alternate; }
@keyframes frGlow { from { box-shadow: 0 0 0 0 rgba(245,158,11,.0); } to { box-shadow: 0 0 14px 4px rgba(245,158,11,.75); } }
.fr-need { font-size: 16px; font-weight: 800; color: var(--muted); margin: 8px 0; }
.fr-need.bad { color: #991b1b; background: #fee2e2; border-radius: 10px; padding: 8px 10px; }
.fr-bar { position: sticky; bottom: 0; padding: 10px 0 max(6px, env(safe-area-inset-bottom)); background: linear-gradient(to top, var(--paper) 70%, rgba(255,253,247,0)); margin-top: 8px; }
.fr-go { width: 100%; min-height: 64px; border: 0; border-radius: 16px; color: #fff; font-size: 24px; font-weight: 900; box-shadow: 0 6px 0 rgba(0,0,0,.18); }
.fr-go.in { background: #15803d; } .fr-go.out { background: #c2410c; }
.fr-go:disabled { background: #a8a29e; box-shadow: none; cursor: not-allowed; }
.fr-res.in { background: #ecfdf5; border-color: #15803d; } .fr-res.out { background: #fff7ed; border-color: #c2410c; } .fr-res.undone { background: #f3f4f6; border-color: #9ca3af; }
.fr-res-t { font-size: 24px; font-weight: 900; } .fr-res-n { font-size: 17px; font-weight: 700; margin: 4px 0; word-break: break-word; }
.fr-res-l { font-size: 17px; display: grid; gap: 4px; margin: 6px 0; }
.fr-back { display: inline-block; background: #fef3c7; color: #92400e; border-radius: 8px; padding: 2px 8px; font-weight: 800; font-size: 14px; }
.fr-rec { background: #e7e5e4; border-radius: 10px; padding: 10px 12px; font-size: 16px; margin: 8px 0; }
.fr-res-act { margin: 8px 0; }
.fr-undo, .fr-corr { min-height: 48px; border-radius: 12px; border: 2px solid #1e5a96; background: #fff; color: #1e5a96; font-weight: 900; font-size: 16px; padding: 8px 16px; box-shadow: none; }
.fr-corr { border-color: #92400e; color: #92400e; } .fr-corr.send { background: #92400e; color: #fff; }
.fr-st { font-size: 15px; color: var(--muted); font-weight: 700; }
.fr-corrform { display: grid; gap: 10px; background: #fffbeb; border: 2px solid #f59e0b; border-radius: 14px; padding: 12px; margin: 10px 0; }
.fr-corrform select, .fr-corrform textarea { width: 100%; font-size: 16px; }
.fr-corr-act { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.fr-journal { margin-top: 20px; } .fr-journal h3 { margin: 0 0 8px; }
.fr-jrow { background: #fff; border: 2px solid var(--line); border-radius: 14px; padding: 10px 12px; margin-bottom: 8px; }
.fr-jrow.undone { opacity: .6; } .fr-jmain { font-size: 16px; word-break: break-word; } .fr-jact { margin-top: 6px; }
.corr-panel { background: #fffbeb; border: 3px solid #f59e0b; border-radius: 16px; padding: 12px 14px; margin: 14px 0; }
.corr-panel .corr-pin input { font-size: 18px; max-width: 160px; }
.corr-act .btn-mini { min-height: 48px; }
@media (max-width: 480px) { .fr-tab { font-size: 19px; } .fr-qtyrow { grid-template-columns: 52px minmax(0, 1fr) 52px; } .fr-unit { grid-column: 1 / -1; padding: 0; } .fr-wrap.wrap { padding-left: 12px; padding-right: 12px; } }
.fr-wrap input, .fr-wrap select, .fr-wrap textarea, .corr-panel input { min-height: 48px; font-size: 16px; }
.fr-qtyrow input { min-height: 56px; font-size: 28px; }
.fr-search { min-height: 56px; font-size: 18px; }
