/* v3-freight.css — грузовые экраны по design-canvas (1 в 1): Freight / DarkFreight,
   FreightCal, Archive, Kits. Значения — из разметки артбордов, цвета — токены кита. */
.v3f { display: flex; flex-direction: column; gap: 14px; height: 100%; min-height: 0; min-width: 0; }
.v3f.v3f-scroll { overflow: auto; scrollbar-width: none; }
.v3f.v3f-scroll::-webkit-scrollbar { display: none; }
.v3f-body { flex-grow: 1; min-height: 0; display: flex; gap: 14px; }
.v3f-empty { color: var(--t-ink-3); padding: 14px 6px; text-align: center; font-size: 13px; }

/* ── Шапка ── */
.v3f-head { flex-shrink: 0; display: flex; align-items: center; gap: 14px; padding: 16px 16px 16px 24px;
  background: var(--t-surface); border: 1px solid var(--t-line); border-radius: 30px; box-shadow: var(--sh-panel); }
.v3f-head .v3-h1 { flex-shrink: 0; }
.v3f-hsub { font-size: 14px; color: var(--t-ink-3); white-space: nowrap; }
.v3f-btn { flex-shrink: 0; display: flex; align-items: center; gap: 7px; white-space: nowrap; height: 40px; padding: 0 18px 0 14px;
  border-radius: 20px; border: 1px solid var(--t-line); background: var(--t-surface); color: var(--t-ink); font: inherit;
  font-size: 14px; font-weight: 600; box-shadow: 0 1px 2px rgba(22,26,36,.06); cursor: pointer; text-decoration: none; }
.v3f-btn svg { color: var(--t-blue); }
.v3f-btn:hover { background: var(--t-row); }
.v3f-btn, .v3f-send, .v3f-pri { transition: background-color .16s ease, box-shadow .16s ease, transform .12s ease; }
.v3f-btn:active, .v3f-send:active, .v3f-pri:active { transform: scale(.96); }
.v3f-btn.pad { padding: 0 18px; }
.v3f-btn.sm { height: 32px; padding: 0 14px; border-radius: 16px; font-size: 13px; }
.v3f-send, .v3f-pri { flex-shrink: 0; display: flex; align-items: center; justify-content: center; gap: 7px; white-space: nowrap;
  height: 40px; padding: 0 20px; border: 0; border-radius: 20px; background: var(--t-blue-grad); color: #fff; font: inherit;
  font-size: 14.5px; font-weight: 650; box-shadow: var(--sh-pri); cursor: pointer; }
.v3f-send:hover, .v3f-pri:hover { background: linear-gradient(180deg, #5cb0ff, #1a7cea); }
.v3f-pri.sm { height: 32px; padding: 0 16px 0 12px; border-radius: 16px; font-size: 13px; }

/* полоса дней */
.v3f-stripw { flex-grow: 1; min-width: 0; display: flex; align-items: center; gap: 6px; }
.v3f-arr { width: 34px; height: 34px; border-radius: 17px; border: 1px solid var(--t-line); background: var(--t-surface);
  color: var(--t-ink-2); box-shadow: 0 1px 2px rgba(22,26,36,.06); display: flex; align-items: center; justify-content: center;
  flex-shrink: 0; cursor: pointer; padding: 0; }
.v3f-arr:hover { background: var(--t-row); }
.v3f-strip { flex-grow: 1; display: flex; gap: 5px; padding: 4px; border-radius: 22px; background: rgba(60,66,78,.06); min-width: 0; }
.v3f-dc { flex: 1 1 0; min-width: 48px; height: 58px; box-sizing: border-box; border-radius: 17px; background: var(--t-surface);
  color: var(--t-ink); border: 1px solid var(--t-line); display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: 1px; cursor: pointer; font: inherit; padding: 0; }
.v3f-dc .w { font-size: 10px; font-weight: 750; letter-spacing: .08em; opacity: .75; }
.v3f-dc .n { font-size: 17px; font-weight: 750; line-height: 1.05; }
.v3f-dc .c { min-width: 18px; box-sizing: border-box; padding: 0 5px; border-radius: 7px; font-size: 10.5px; font-weight: 750;
  background: var(--t-nested); color: var(--t-ink-2); }
.v3f-dc .c.hot { background: rgba(232,137,12,.16); color: var(--t-warn-ink); }
.v3f-dc.today { border: 2px solid var(--t-blue); }
.v3f-dc.on { background: var(--t-blue-grad); color: #fff; border: 1px solid transparent; box-shadow: 0 8px 18px -8px rgba(10,95,208,.85); }
.v3f-dc.on .c { background: rgba(255,255,255,.22); color: #fff; }
.v3f-dc.off { background: transparent; color: #a3a8b0; border: 1px dashed rgba(60,66,78,.2); }
.v3f-dc.off .c { background: none; color: #a3a8b0; }

/* ── Левая панель: заявки без машины ── */
.v3f-pool { width: 310px; flex-shrink: 0; display: flex; flex-direction: column; overflow: hidden; }
.v3f-poolin { padding: 16px 14px; display: flex; flex-direction: column; gap: 10px; min-height: 0; flex-grow: 1; overflow: auto;
  scrollbar-width: none; border-radius: 30px; }
.v3f-poolin::-webkit-scrollbar { display: none; }
.v3f-poolin.drop { box-shadow: inset 0 0 0 2px var(--t-blue); background: var(--t-blue-soft); }
.v3f-sh { display: flex; align-items: center; gap: 8px; }
.v3f-sh.gap { margin-top: 6px; }
.v3f-shl { font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--t-ink-3); flex-grow: 1; }
.v3f-cnt { min-width: 22px; height: 22px; padding: 0 7px; box-sizing: border-box; border-radius: 11px; font-size: 12px; font-weight: 750;
  display: flex; align-items: center; justify-content: center; background: var(--t-nested); color: var(--t-ink-2); }
.v3f-cnt, .v3f-mst b, .v3f-dc .n, .v3f-dc .c, .v3f-adt b { font-variant-numeric: tabular-nums; }
.v3f-cnt.bad { background: #e0313f; color: #fff; }
.v3f-list { display: flex; flex-direction: column; gap: 8px; }
.v3f-card { flex-shrink: 0; width: 100%; display: flex; flex-direction: column; gap: 4px; padding: 12px 13px; border-radius: 22px;
  text-align: left; color: var(--t-ink); background: var(--t-surface); border: 1px solid var(--t-line);
  box-shadow: 0 1px 2px rgba(22,26,36,.05); font: inherit; cursor: pointer; box-sizing: border-box; }
.v3f-card:hover { border-color: var(--t-line-2); }
.v3f-card[draggable="true"] { cursor: grab; }
.v3f-card.dragging, .v3f-stop.dragging { opacity: .4; }
.v3f-cardacts { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; margin-top: 5px; padding-top: 8px; border-top: 1px solid var(--t-line); }
.v3f-actions-label { color: var(--t-ink-3); font-size: 11px; font-weight: 650; margin-right: 2px; }
.v3f-mpill { min-height: 30px; padding: 3px 9px; border: 1px solid color-mix(in srgb, var(--mc) 32%, var(--t-line)); border-radius: 11px;
  background: color-mix(in srgb, var(--mc) 10%, var(--t-surface)); color: var(--t-ink); font: inherit; font-size: 12px; font-weight: 750; cursor: pointer; }
.v3f-mpill:hover { background: color-mix(in srgb, var(--mc) 20%, var(--t-surface)); }
.v3f-inline-btn { min-height: 30px; display: inline-flex; align-items: center; justify-content: center; gap: 5px; padding: 4px 9px; border: 1px solid var(--t-line);
  border-radius: 11px; background: var(--t-surface); color: var(--t-ink-2); font: inherit; font-size: 12px; font-weight: 650; cursor: pointer; }
.v3f-inline-btn.pri { color: var(--t-blue-ink); background: var(--t-blue-soft); border-color: color-mix(in srgb, var(--t-blue) 24%, var(--t-line)); }
.v3f-inline-btn.more { width: 32px; padding: 0; margin-left: auto; }
.v3f-cr1 { display: flex; align-items: center; gap: 8px; min-width: 0; }
.v3f-kp { font-size: 11.5px; font-weight: 700; padding: 3px 9px; border-radius: 9px; white-space: nowrap; overflow: hidden;
  text-overflow: ellipsis; max-width: 190px; background: var(--t-nested); color: var(--t-ink-2); }
.v3f-kp.k-install { background: rgba(20,150,79,.12); color: #16733e; }
.v3f-kp.k-remove { background: rgba(210,43,57,.1); color: #b3202e; }
.v3f-kp.k-replace { background: rgba(201,117,15,.14); color: #8a4b00; }
.v3f-kp.k-sale { background: rgba(168,120,240,.16); color: #6a3fb5; }
.v3f-kp.k-short_term { background: rgba(10,111,224,.12); color: var(--t-blue); }
.v3f-mgr { font-size: 12.5px; color: var(--t-ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 96px; }
.v3f-ct { font-size: 15.5px; font-weight: 750; }
.v3f-cs { font-size: 12.5px; color: var(--t-ink-3); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.v3f-tag { align-self: flex-start; padding: 3px 9px 4px; border-radius: 10px; font-size: 12px; font-weight: 600; color: #8a5a10;
  background: rgba(240,160,75,.22); max-width: 100%; box-sizing: border-box; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ── Карта ── */
.v3f-mapw { flex-grow: 1; min-width: 0; position: relative; border-radius: 30px; overflow: hidden; border: 1px solid var(--t-line);
  box-shadow: var(--sh-panel); isolation: isolate; }
.v3f-map { position: absolute; inset: 0; background: #e9ecef; }
.v3f-qbar { position: absolute; left: 14px; right: 14px; top: 14px; z-index: 500; display: flex; gap: 8px; padding: 6px;
  border-radius: 26px; background: rgba(255,255,255,.86); border: 1px solid var(--t-line); box-shadow: 0 14px 32px -14px rgba(22,26,36,.45);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
.v3f-qin { flex-grow: 1; display: flex; align-items: center; gap: 8px; height: 40px; padding: 0 14px; border-radius: 20px;
  background: var(--t-surface); border: 1px solid var(--t-line); color: var(--t-ink-3); box-sizing: border-box; min-width: 0; }
.v3f-qin input { border: 0; outline: none; background: transparent; min-width: 0; flex-grow: 1; font: inherit; font-size: 14px; color: var(--t-ink); }
.v3f-qadd { width: 40px; height: 40px; border-radius: 20px; border: 0; background: linear-gradient(180deg, #4aa5ff, #0a6fe0); color: #fff;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 7px 16px -5px rgba(10,111,224,.7); display: flex; align-items: center;
  justify-content: center; flex-shrink: 0; cursor: pointer; padding: 0; }
.v3f-leg { position: absolute; left: 14px; bottom: 14px; z-index: 500; display: flex; flex-direction: column; gap: 6px; padding: 10px 13px;
  border-radius: 22px; background: var(--t-surface); border: 1px solid var(--t-line); font-size: 12.5px; font-weight: 650; color: var(--t-ink); }
.v3f-leg[hidden] { display: none; }
.v3f-lr { display: flex; align-items: center; gap: 8px; white-space: nowrap; }
.v3f-lr i { width: 22px; height: 4px; border-radius: 2px; }
.v3f-lr span { color: var(--t-ink-3); font-weight: 600; }
.v3f-mapw .leaflet-bottom.leaflet-right { margin: 0 6px 6px 0; }
.v3f-fit { position: absolute; z-index: 500; top: 66px; right: 14px; min-height: 36px; display: flex; align-items: center; gap: 6px;
  padding: 0 12px; border: 1px solid var(--t-line); border-radius: 18px; background: var(--t-surface); color: var(--t-ink-2); box-shadow: var(--sh-panel);
  font: inherit; font-size: 12.5px; font-weight: 700; cursor: pointer; }
.v3f-fit:hover { color: var(--t-blue-ink); border-color: var(--t-blue); }
/* метки точек и базы на карте — .pm-* в v3-fleet.css (как в полуручном) */

/* ── Правая панель: машины дня ── */
.v3f-routes { width: 380px; flex-shrink: 0; display: flex; flex-direction: column; overflow: hidden; }
.v3f-rscroll { padding: 16px 14px; display: flex; flex-direction: column; gap: 12px; overflow: auto; flex-grow: 1; scrollbar-width: none; }
.v3f-rscroll::-webkit-scrollbar { display: none; }
.v3f-mg { display: flex; flex-direction: column; gap: 6px; border-radius: 23px; }
.v3f-mg.drop { box-shadow: 0 0 0 2px var(--mc); }
.v3f-mg.idle { opacity: .55; }
.v3f-mh { display: flex; flex-direction: column; gap: 8px; padding: 11px 12px; border-radius: 23px;
  background: color-mix(in srgb, var(--mc) 8%, var(--t-surface)); border: 1px solid color-mix(in srgb, var(--mc) 24%, transparent); }
.v3f-mt { display: flex; align-items: center; gap: 9px; min-width: 0; }
.v3f-mdot { width: 10px; height: 10px; border-radius: 5px; background: var(--mc); flex-shrink: 0;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--mc) 22%, transparent); }
.v3f-mn { font-size: 16px; font-weight: 750; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.v3f-mm { width: 28px; height: 28px; border-radius: 14px; border: 1px solid var(--t-line); background: var(--t-surface); color: var(--t-ink-2);
  box-shadow: 0 1px 2px rgba(22,26,36,.06); display: flex; align-items: center; justify-content: center; flex-shrink: 0; cursor: pointer; padding: 0; }
.v3f-mm.nest { background: var(--t-nested); box-shadow: none; }
.v3f-mm:hover { background: var(--t-row); }
.v3f-ms { display: flex; gap: 6px; }
.v3f-mst { flex: 1 1 0; padding: 5px 9px; border-radius: 14px; background: var(--t-surface); border: 1px solid var(--t-line);
  display: flex; align-items: baseline; gap: 5px; min-width: 0; }
.v3f-mst b { font-size: 17px; font-weight: 750; font-variant-numeric: tabular-nums; }
.v3f-mst span { font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--t-ink-3); white-space: nowrap; }
.v3f-stop { display: flex; gap: 10px; padding: 10px 11px; border-radius: 20px; background: var(--t-surface); border: 1px solid var(--t-line);
  cursor: pointer; }
.v3f-stop:hover { border-color: var(--t-line-2); }
.v3f-stop[draggable="true"] { cursor: grab; }
.v3f-stop.done { opacity: .6; }
.v3f-sn { width: 28px; height: 28px; flex-shrink: 0; box-sizing: border-box; border-radius: 14px; box-shadow: inset 0 0 0 2px var(--k);
  color: var(--t-ink); font-size: 13px; font-weight: 800; display: flex; align-items: center; justify-content: center; }
.v3f-stop.done .v3f-sn { background: #14964f; color: #fff; box-shadow: none; }
.v3f-sb { display: flex; flex-direction: column; gap: 2px; flex-grow: 1; min-width: 0; }
.v3f-sr { display: flex; align-items: center; gap: 6px; min-width: 0; }
.v3f-st { font-size: 14.5px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.v3f-pp { font-size: 11.5px; font-weight: 700; padding: 3px 9px; border-radius: 9px; white-space: nowrap; flex-shrink: 0;
  background: rgba(10,111,224,.12); color: var(--t-blue); }
.v3f-pp.mute { background: #eef1f5; color: #3a4a5c; }
.v3f-ss { font-size: 12.5px; color: var(--t-ink-3); }
.v3f-foot { padding: 12px 14px 14px; border-top: 1px solid rgba(60,66,78,.1); display: flex; gap: 8px; flex-shrink: 0; }

/* ── Всплывающее меню ── */
.v3f-pop { position: fixed; z-index: 3000; min-width: 220px; max-width: 320px; max-height: 70vh; overflow: auto; padding: 6px;
  border-radius: 18px; background: var(--t-surface); border: 1px solid var(--t-line); box-shadow: var(--t-sh-pop);
  display: flex; flex-direction: column; gap: 1px; font-family: var(--t-font); }
.v3f-poph { font-size: 11px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--t-ink-3); padding: 7px 10px 4px; }
.v3f-popi { display: flex; align-items: center; gap: 9px; text-align: left; border: 0; background: none; padding: 9px 10px; border-radius: 12px;
  font: inherit; font-size: 14px; font-weight: 550; color: var(--t-ink); cursor: pointer; white-space: nowrap; }
.v3f-popi:hover { background: var(--t-row); }
.v3f-popi i { width: 10px; height: 10px; border-radius: 5px; flex-shrink: 0; }
.v3f-popi.bad { color: var(--t-bad-ink); }
.v3f-popsep { height: 1px; background: var(--t-line); margin: 4px 6px; }

/* ═══ Календарь грузовых ═══ */
.v3f-cal { flex-shrink: 0; padding: 18px; display: flex; flex-direction: column; gap: 8px; overflow: hidden; }
#v3fc-day.v3f-cal { gap: 10px; }
.v3f-ch { display: flex; align-items: baseline; gap: 10px; }
.v3f-ch h3 { margin: 0; font-size: 18px; font-weight: 750; letter-spacing: -.015em; flex-grow: 1; }
.v3f-ch .v3f-pri { align-self: center; }
.v3f-chl { display: flex; gap: 12px; font-size: 12.5px; color: var(--t-ink-3); white-space: nowrap; }
.v3f-chl .hot { color: var(--t-warn-ink); font-weight: 650; }
.v3f-cgrid { display: grid; grid-template-columns: 90px repeat(14, minmax(0, 1fr)); gap: 5px; align-items: center; }
.v3f-cgrid + .v3f-cgrid { margin-top: 8px; }
.v3f-cdays { font-size: 11.5px; font-weight: 750; color: var(--t-ink-3); text-align: center; align-items: stretch; }
.v3f-cd { display: flex; flex-direction: column; align-items: center; border: 0; background: none; padding: 0; font: inherit;
  color: inherit; cursor: pointer; }
.v3f-cd b { font-size: 15px; font-weight: 750; color: var(--t-ink); }
.v3f-cd.sun { color: #a3a8b0; }
.v3f-cd.sel, .v3f-cd.sel b { color: var(--t-blue-ink); }
.v3f-crow { display: flex; align-items: center; gap: 7px; font-weight: 750; white-space: nowrap; overflow: hidden; }
.v3f-crow i { width: 10px; height: 10px; border-radius: 5px; flex-shrink: 0; }
.v3f-cc { height: 76px; width: 100%; box-sizing: border-box; border-radius: 16px; font: inherit; cursor: pointer; padding: 0 9px; min-width: 0; }
.v3f-cc.off { border: 1px dashed rgba(60,66,78,.18); background: none; display: flex; align-items: center; justify-content: center;
  color: #a3a8b0; font-size: 12px; }
.v3f-cc.free { border: 0; background: var(--t-row); display: flex; align-items: center; justify-content: center; color: var(--t-ink-3);
  font-size: 12px; font-weight: 600; }
.v3f-cc.busy { display: flex; flex-direction: column; justify-content: center; gap: 5px; text-align: left; color: var(--t-ink);
  border: 1px solid var(--t-line); background: color-mix(in srgb, var(--mc) var(--tint), var(--t-surface)); }
.v3f-cc.sel { border: 2px solid var(--t-blue); background: var(--t-blue-soft); }
.v3f-ccn { display: flex; align-items: baseline; gap: 4px; }
.v3f-ccn b { font-size: 17px; font-weight: 760; }
.v3f-ccn span { font-size: 11.5px; color: var(--t-ink-3); white-space: nowrap; }
.v3f-bars { display: flex; gap: 2px; }
.v3f-bars i { flex: 1; height: 4px; border-radius: 2px; background: rgba(60,66,78,.12); }
.v3f-bars i.on { background: var(--mc); }
.v3f-bars i.hot { background: #e8890c; }
.v3f-bcs-row { display: flex; gap: 10px; flex-wrap: wrap; }
.v3f-bc { display: flex; flex-direction: column; gap: 6px; padding: 14px; border-radius: 22px; border: 1px solid var(--t-line);
  flex: 1 1 0; min-width: 260px; box-sizing: border-box; }
.v3f-bc.sel { border-color: var(--t-blue); }
.v3f-bch { display: flex; align-items: center; gap: 8px; font-weight: 750; }
.v3f-bch i { width: 10px; height: 10px; border-radius: 5px; flex-shrink: 0; }
.v3f-bcs { font-size: 12.5px; color: var(--t-ink-3); font-weight: 600; white-space: nowrap; }
.v3f-bl { display: flex; gap: 8px; font-size: 13px; }
.v3f-bl i { width: 8px; height: 8px; border-radius: 4px; margin-top: 5px; flex-shrink: 0; }
.v3f-bl b { white-space: nowrap; max-width: 45%; overflow: hidden; text-overflow: ellipsis; }

/* ═══ Архив ═══ */
.v3f-srch { display: flex; align-items: center; gap: 8px; height: 40px; width: 280px; box-sizing: border-box; padding: 0 14px;
  border-radius: 20px; background: var(--t-nested); border: 1px solid var(--t-line); flex-shrink: 0; color: var(--t-ink-3); }
.v3f-srch input { border: 0; outline: none; background: transparent; flex-grow: 1; min-width: 0; font: inherit; font-size: 14px; color: var(--t-ink); }
.v3f-seg { display: flex; gap: 3px; padding: 3px; border-radius: 17px; background: var(--t-nested); border: 1px solid var(--t-line); flex-shrink: 0; }
.v3f-seg button { white-space: nowrap; border: 0; padding: 7px 12px; border-radius: 14px; font: inherit; font-size: 13.5px; font-weight: 650;
  background: transparent; color: var(--t-ink-2); cursor: pointer; }
.v3f-seg button.on { background: var(--t-surface); color: var(--t-blue-ink); box-shadow: 0 1px 3px rgba(22,26,36,.16); }
.v3f-machine-filter { min-width: 130px; height: 40px; padding: 0 32px 0 12px; border: 1px solid var(--t-line); border-radius: 14px; background: var(--t-surface); color: var(--t-ink); font: inherit; font-size: 13px; }
.v3f-astats { flex-shrink: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 10px 18px 0; }
.v3f-astat { display: flex; align-items: baseline; flex-wrap: wrap; gap: 5px 12px; padding: 8px 12px; border-radius: 14px; background: var(--t-nested); color: var(--t-ink-2); font-size: 12px; }
.v3f-astat b { color: var(--t-ink); font-size: 12px; }
.v3f-astat small { margin-left: auto; color: var(--t-ink-3); font-size: 11px; }
.v3f-btn.mon { padding: 0 14px; }
.v3f-btn.mon svg:last-child { color: var(--t-ink-3); }
.v3f-adays { width: 270px; flex-shrink: 0; display: flex; flex-direction: column; overflow: hidden; }
.v3f-adin { padding: 16px 14px; display: flex; flex-direction: column; gap: 6px; overflow: auto; flex-grow: 1; scrollbar-width: none; }
.v3f-adin::-webkit-scrollbar { display: none; }
#v3fa-days { display: flex; flex-direction: column; gap: 6px; }
.v3f-ad { flex-shrink: 0; display: flex; align-items: center; gap: 10px; padding: 11px 12px; border-radius: 18px; text-align: left;
  color: var(--t-ink); border: 1px solid var(--t-line); background: var(--t-surface); margin: 1px; font: inherit; cursor: pointer; }
.v3f-ad.on { border: 2px solid var(--t-blue); background: var(--t-blue-soft); margin: 0; }
.v3f-adt { display: flex; flex-direction: column; flex-grow: 1; min-width: 0; }
.v3f-adt b { font-weight: 700; font-size: 15px; }
.v3f-adt span { font-size: 12px; color: var(--t-ink-3); }
.v3f-adp { display: flex; gap: 5px; }
.v3f-aday { flex-grow: 1; min-width: 0; display: flex; flex-direction: column; overflow: hidden; }
.v3f-aempty { margin: auto; display: flex; flex-direction: column; align-items: center; gap: 10px; color: var(--t-ink-3); }
.v3f-adh { display: flex; align-items: center; gap: 10px; padding: 18px 18px 14px 22px; border-bottom: 1px solid rgba(60,66,78,.1); }
.v3f-adtt { display: flex; flex-direction: column; flex-grow: 1; min-width: 0; }
.v3f-adtt b { font-size: 22px; font-weight: 750; }
.v3f-adtt span { font-size: 13px; color: var(--t-ink-3); }
.v3f-adb { padding: 16px 18px; display: flex; flex-direction: column; gap: 12px; overflow: auto; flex-grow: 1; }
.v3f-ag { display: flex; flex-direction: column; border-radius: 20px; border: 1px solid var(--t-line); overflow: hidden; flex-shrink: 0; }
.v3f-agh { display: flex; align-items: center; gap: 9px; padding: 10px 14px; background: color-mix(in srgb, var(--mc) 7%, var(--t-surface));
  border-bottom: 1px solid rgba(60,66,78,.1); }
.v3f-agh i { width: 10px; height: 10px; border-radius: 5px; background: var(--mc); }
.v3f-agh b { font-weight: 750; }
.v3f-agh a { font-size: 13px; font-weight: 650; color: var(--t-blue); text-decoration: none; }
.v3f-ar { display: grid; grid-template-columns: 28px minmax(0, 1fr) 36px 130px 64px; gap: 12px; align-items: center; padding: 10px 14px;
  border-bottom: 1px solid rgba(60,66,78,.08); }
.v3f-ar:last-child { border-bottom: 0; }
.v3f-arr2 { width: 24px; height: 24px; border-radius: 12px; box-shadow: inset 0 0 0 2.5px var(--k); }
.v3f-arb { display: flex; flex-direction: column; min-width: 0; }
.v3f-arb b { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.v3f-arb span { font-size: 12.5px; color: var(--t-ink-3); }
.v3f-arb span.bad { color: #b3202e; font-weight: 600; }
.v3f-aph { display: flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 650; color: var(--t-ink-3); }
.v3f-arm { display: flex; gap: 4px; justify-content: flex-end; }
.v3f-abody { min-height: 0; display: grid; grid-template-columns: minmax(360px, 1.15fr) minmax(260px, .85fr); flex-grow: 1; overflow: hidden; }
.v3f-amap { min-height: 280px; position: relative; border-left: 1px solid var(--t-line); background: #e9ecef; }
.v3f-amap > div { position: absolute; inset: 0; }
.v3f-amap .v3f-fit { top: 12px; right: 12px; }
.v3f-arows { min-height: 0; overflow: auto; padding: 14px; display: flex; flex-direction: column; gap: 10px; }
.v3f-arc { display: grid; grid-template-columns: 28px minmax(0,1fr) auto auto 32px; gap: 10px; align-items: center; padding: 11px 12px; border: 1px solid var(--t-line);
  border-radius: 16px; background: var(--t-surface); cursor: pointer; }
.v3f-arc:hover, .v3f-arc.sel { border-color: var(--t-blue); background: var(--t-blue-soft); }
.v3f-arc .v3f-arb { gap: 2px; }
.v3f-arc-status { white-space: nowrap; }
@media (max-width: 1180px) {
  .v3f-abody { grid-template-columns: minmax(300px, 1.25fr) minmax(220px, .75fr); }
  .v3f-arc { grid-template-columns: 28px minmax(0,1fr) auto 32px; gap: 8px; }
  .v3f-aph { display: none; }
}
@media (max-width: 900px) {
  .v3f-abody { grid-template-columns: 1fr; grid-template-rows: minmax(220px, 1fr) minmax(210px, 35vh); overflow: auto; }
  .v3f-amap { min-height: 210px; border-left: 0; border-top: 1px solid var(--t-line); }
}

/* ═══ Комплекты ═══ */
.v3f-kleft { width: 320px; flex-shrink: 0; display: flex; flex-direction: column; overflow: hidden; }
.v3f-klin { padding: 16px 14px; display: flex; flex-direction: column; gap: 12px; flex-grow: 1; overflow: auto; scrollbar-width: none; }
.v3f-klin::-webkit-scrollbar { display: none; }
.v3f-drop { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 26px 18px; border-radius: 24px;
  border: 2px dashed rgba(10,95,208,.4); background: var(--t-blue-soft); text-align: center; flex-shrink: 0; }
.v3f-dropi { width: 52px; height: 52px; border-radius: 26px; background: var(--t-surface); color: var(--t-blue); display: flex;
  align-items: center; justify-content: center; box-shadow: 0 1px 3px rgba(22,26,36,.12); }
.v3f-dropt { font-size: 16px; font-weight: 750; }
.v3f-drops { font-size: 13px; color: var(--t-ink-2); }
.v3f-docs { display: flex; flex-direction: column; gap: 6px; }
.v3f-docs.row { flex-direction: row; flex-wrap: wrap; }
.v3f-doc { display: flex; align-items: center; gap: 8px; padding: 7px 10px; border-radius: 13px; background: var(--t-row);
  border: 1px solid rgba(60,66,78,.1); color: var(--t-ink); text-decoration: none; font: inherit; text-align: left; cursor: pointer;
  box-sizing: border-box; min-width: 0; }
a.v3f-doc:hover, button.v3f-doc:hover { border-color: var(--t-line-2); }
span.v3f-doc { cursor: default; }
.v3f-doc.warn { background: rgba(232,137,12,.12); border: 1px solid rgba(200,130,40,.35); }
.v3f-doc.warn .v3f-dtx span { color: var(--t-warn-ink); }
.v3f-dic { width: 24px; height: 28px; border-radius: 6px; color: #fff; font-size: 8.5px; font-weight: 800; display: flex;
  align-items: flex-end; justify-content: center; padding-bottom: 3px; box-sizing: border-box; flex-shrink: 0; letter-spacing: -.02em; }
.v3f-dtx { display: flex; flex-direction: column; min-width: 0; }
.v3f-dtx b { font-size: 12.5px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 220px; }
.v3f-dtx span { font-size: 11.5px; color: var(--t-ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 220px; }
.v3f-docs.row .v3f-dtx b, .v3f-docs.row .v3f-dtx span { max-width: 150px; }
.v3f-khint { font-size: 12.5px; color: var(--t-ink-3); }
.v3f-kright { flex-grow: 1; min-width: 0; display: flex; flex-direction: column; overflow: hidden; }
.v3f-krin { padding: 16px 18px; display: flex; flex-direction: column; gap: 10px; overflow: auto; flex-grow: 1; }
.v3f-kg { display: flex; flex-direction: column; gap: 10px; }
.v3f-kg.next { margin-top: 6px; }
.v3f-kgh { display: flex; align-items: center; gap: 10px; padding: 4px 4px 2px; }
.v3f-kgh i { width: 10px; height: 10px; border-radius: 5px; background: var(--mc); flex-shrink: 0; }
.v3f-kgh b { font-size: 16px; font-weight: 750; white-space: nowrap; }
.v3f-kgh .grow { font-size: 13px; color: var(--t-ink-3); }
.v3f-ks { display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; border-radius: 20px; background: var(--t-surface);
  border: 1px solid var(--t-line); }
.v3f-ksh { display: flex; align-items: center; gap: 10px; min-width: 0; }
.v3f-ksh > b { font-weight: 700; flex-grow: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.v3f-ksn { width: 26px; height: 26px; box-sizing: border-box; border-radius: 13px; box-shadow: inset 0 0 0 2.5px var(--k); font-size: 12.5px;
  font-weight: 800; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.v3f-ksk { font-size: 12.5px; color: var(--t-ink-3); white-space: nowrap; }
.v3f-kw { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 16px; background: rgba(232,137,12,.14);
  color: #6e4300; font-size: 13px; font-weight: 600; }
.v3f-kw button { border: 0; background: var(--t-surface); color: var(--t-ink); border-radius: 12px; padding: 5px 10px; font: inherit;
  font-weight: 650; font-size: 12.5px; cursor: pointer; white-space: nowrap; }

/* ── Тёмная тема: то, что в макете не токенами (DarkFreight) ── */
[data-theme="dark"] .v3f-strip { background: rgba(255,255,255,.05); }
[data-theme="dark"] .v3f-dc.off { border-color: rgba(255,255,255,.14); }
[data-theme="dark"] .v3f-kp.k-install { color: #6fdc9a; }
[data-theme="dark"] .v3f-kp.k-remove { color: #ff8a94; }
[data-theme="dark"] .v3f-kp.k-replace { color: #ffc070; }
[data-theme="dark"] .v3f-kp.k-sale { color: #d9adff; }
[data-theme="dark"] .v3f-kp.k-short_term, [data-theme="dark"] .v3f-pp { color: #6cb2ff; }
[data-theme="dark"] .v3f-pp.mute { background: rgba(255,255,255,.1); color: var(--t-ink-2); }
[data-theme="dark"] .v3f-tag { color: #ffc070; background: rgba(240,160,75,.16); }
[data-theme="dark"] .v3f-map { background: #15171a; }
[data-theme="dark"] .v3f-qbar { background: rgba(31,33,38,.86); }
[data-theme="dark"] .v3f-cc.off { border-color: rgba(255,255,255,.14); }
[data-theme="dark"] .v3f-bars i { background: rgba(255,255,255,.12); }
[data-theme="dark"] .v3f-bars i.on { background: var(--mc); }
[data-theme="dark"] .v3f-bars i.hot { background: #e8890c; }
[data-theme="dark"] .v3f-arb span.bad { color: var(--t-bad-ink); }
[data-theme="dark"] .v3f-kw { background: rgba(255,178,60,.14); color: #ffcf85; }
[data-theme="dark"] .v3f-cnt.bad { background: #e0313f; color: #fff; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .v3f-strip { background: rgba(255,255,255,.05); }
  :root:not([data-theme]) .v3f-kp.k-install { color: #6fdc9a; }
  :root:not([data-theme]) .v3f-kp.k-remove { color: #ff8a94; }
  :root:not([data-theme]) .v3f-kp.k-replace { color: #ffc070; }
  :root:not([data-theme]) .v3f-tag { color: #ffc070; background: rgba(240,160,75,.16); }
  :root:not([data-theme]) .v3f-map { background: #15171a; }
  :root:not([data-theme]) .v3f-qbar { background: rgba(31,33,38,.86); }
}

/* ═══════════ Любая ширина компьютера (861…1920+) ═══════════
   Экран подстраивается под СВОЮ ширину (контейнер .v3f), а не под окно:
   1440 — как в макете; уже — колонки у́же, потом карта уходит наверх правой колонки,
   шапка — в две строки. Контент при 1280 — 1002px, при 1100 — 990, при 861 — 751. */
.v3f { container: v3f / inline-size; }
.v3f-routes { container: v3fr / inline-size; }
.v3f-kright { container: v3fkr / inline-size; }
.v3f-aday { container: v3fad / inline-size; }
.v3f-ksh { flex-wrap: wrap; row-gap: 6px; }
.v3f-ksh > b { flex: 1 1 160px; }
.v3f-ksh > .v3-pill { min-width: 0; max-width: 100%; box-sizing: border-box; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v3f-kgh b { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.v3f-kgh .grow { white-space: nowrap; }
.v3f-ch { flex-wrap: wrap; row-gap: 8px; }
.v3f-ch h3 { min-width: 0; }
/* календарь: сетке 14 дней нужна ширина — уже неё прокручивается внутри своего блока,
   а столбец машин стоит на месте */
#v3fc-grid { overflow-x: auto; scrollbar-width: thin; }
.v3f-cgrid { min-width: 960px; }
.v3f-cgrid > :first-child { position: sticky; left: 0; z-index: 1; align-self: stretch; background: var(--t-surface); }

@container v3f (max-width: 1100px) {
  .v3f-pool { width: 272px; }
  .v3f-routes { width: 320px; }
  .v3f-kleft { width: 280px; }
  .v3f-adays { width: 240px; }
  .v3f-cgrid { grid-template-columns: 76px repeat(14, minmax(0, 1fr)); }
  .v3f-cc { padding: 0 6px; }
  .v3f-cc.free { font-size: 11px; padding: 0 3px; }
  /* архив: поиск тянется, отбор по итогу — второй строкой */
  #v3fa .v3f-head { flex-wrap: wrap; row-gap: 12px; }
  #v3fa .v3f-srch { flex: 1 1 200px; width: auto; max-width: 360px; }
  #v3fa .v3f-head > .grow { order: 4; flex: 0 0 100%; height: 0; }
  #v3fa .v3f-seg { order: 5; }
  #v3fa .v3f-btn.mon { margin-left: auto; }
}
@container v3f (max-width: 1000px) {
  /* «Грузовые»: заявки слева во всю высоту, справа — карта над машинами дня */
  #v3f .v3f-body { display: grid; grid-template-columns: 272px minmax(0, 1fr);
    grid-template-rows: minmax(260px, 1fr) minmax(0, 1fr); }
  #v3f .v3f-pool { grid-row: 1 / 3; width: auto; }
  #v3f .v3f-mapw { grid-column: 2; grid-row: 1; }
  #v3f .v3f-routes { grid-column: 2; grid-row: 2; width: auto; }
}
@container v3f (max-width: 900px) {
  /* шапка в две строки: заголовок и кнопка, под ними — полоса дней */
  .v3f-head { flex-wrap: wrap; row-gap: 12px; }
  .v3f-head > .v3f-stripw { order: 5; flex: 1 0 100%; }
  .v3f-head > .v3f-btn:last-child, .v3f-head > .v3f-send:last-child { margin-left: auto; }
  .v3f-hsub { white-space: normal; flex: 1 1 160px; min-width: 0; }
}
/* машины дня в узкой колонке: метки «пропуск», «не отправлено» — под названием, а не вместо него */
@container v3fr (max-width: 360px) {
  .v3f-sr { flex-wrap: wrap; row-gap: 4px; }
}
@container v3fkr (max-width: 520px) {
  .v3f-kgh { flex-wrap: wrap; row-gap: 4px; }
}
/* архив, день в узкой панели: итог и фото — второй строкой под объектом */
@container v3fad (max-width: 600px) {
  .v3f-adh { flex-wrap: wrap; row-gap: 12px; }
  .v3f-adtt { flex: 1 1 100%; }
  .v3f-ar { display: flex; flex-wrap: wrap; align-items: center; column-gap: 12px; row-gap: 6px; }
  .v3f-arr2 { flex-shrink: 0; }
  .v3f-arb { flex: 1 1 calc(100% - 76px); order: 1; }
  .v3f-arm { order: 2; }
  .v3f-aph { order: 3; margin-left: 36px; }
  .v3f-ar > span:nth-child(4) { order: 4; }
}

/* ═══════════ Телефон: MobFreight, MobFreightCal, MobArchive, MobKits ═══════════
   Размеры — из макетов 390×844. Только под телефоном, классы .v3xm-*: компьютер
   эти правила не видит. */
@media (max-width: 860px) {
  .v3xm { display: flex; flex-direction: column; min-height: 100%; color: var(--t-ink); font-size: 15px; line-height: normal; }
  .v3xm.has-cta { padding-bottom: 70px; }
  :where(.v3xm) button { font: inherit; cursor: pointer; }   /* нулевой вес: размеры ниже задают классы */
  .v3xm-top { padding: 16px 16px 10px; display: flex; flex-direction: column; gap: 8px; flex-shrink: 0; }
  .v3xm-bar { display: flex; align-items: center; gap: 10px; min-height: 40px; }
  .v3xm-sub { font-size: 14px; font-weight: 650; color: var(--t-ink-3); flex-grow: 1; min-width: 0;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  button.v3xm-sub { display: flex; align-items: center; gap: 4px; min-height: 44px; padding: 0; border: 0; background: none;
    text-align: left; font-size: 14px; font-weight: 650; color: var(--t-ink-3); }
  button.v3xm-sub svg { flex-shrink: 0; }
  .v3xm-title { font-size: 30px; font-weight: 760; letter-spacing: -.03em; line-height: 1.1; }
  .v3xm-back { width: 40px; height: 40px; border-radius: 20px; background: var(--t-surface); color: var(--t-ink); border: 0; padding: 0;
    display: flex; align-items: center; justify-content: center; box-shadow: 0 1px 2px rgba(22,26,36,.08); flex-shrink: 0; }
  .v3xm-btn { flex-shrink: 0; height: 40px; padding: 0 14px; border-radius: 20px; border: 1px solid var(--t-line);
    background: var(--t-surface); color: var(--t-ink); font-weight: 650; white-space: nowrap; }
  .v3xm-ic { width: 40px; height: 40px; border-radius: 20px; border: 0; padding: 0; flex-shrink: 0; display: flex; align-items: center;
    justify-content: center; background: var(--t-blue-grad); color: #fff; box-shadow: 0 8px 18px -8px rgba(10,95,208,.85); }
  .v3xm-in { padding: 0 14px 14px; display: flex; flex-direction: column; gap: 10px; }
  .v3xm-list { display: flex; flex-direction: column; gap: 10px; }
  .v3xm-list > .v3f-empty { padding: 24px 6px; }

  /* большая кнопка над нижними вкладками */
  .v3xm-cta { position: fixed; left: 0; right: 0; bottom: var(--v3xm-tb, 62px); z-index: 79; padding: 10px 14px 26px;
    display: flex; flex-direction: column; gap: 8px; background: var(--t-nested); }
  .v3xm-ctab { display: flex; align-items: center; justify-content: center; gap: 8px; height: 56px; border-radius: 28px; border: 0;
    font-size: 17px; font-weight: 700; background: var(--t-blue-grad); color: #fff; box-shadow: var(--sh-pri); }

  /* полоса дней */
  .v3xm-strip { display: flex; gap: 5px; flex-shrink: 0; }
  .v3xm-dc { flex: 1 1 0; min-width: 0; height: 64px; box-sizing: border-box; border-radius: 17px; padding: 0;
    background: var(--t-surface); color: var(--t-ink); border: 1px solid rgba(60,66,78,.12);
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; }
  .v3xm-dc .w { font-size: 10px; font-weight: 750; letter-spacing: .06em; opacity: .75; }
  .v3xm-dc .n { font-size: 17px; font-weight: 750; line-height: 1.05; }
  .v3xm-dc .c { min-width: 16px; box-sizing: border-box; padding: 0 4px; border-radius: 7px; font-size: 10.5px; font-weight: 750;
    background: var(--t-nested); color: var(--t-ink-2); }
  .v3xm-dc .c.hot { background: rgba(232,137,12,.16); color: var(--t-warn-ink); }
  .v3xm-dc.today { border: 2px solid var(--t-blue); }
  .v3xm-dc.on { background: var(--t-blue-grad); color: #fff; border: 1px solid transparent; }
  .v3xm-dc.on .c { background: rgba(255,255,255,.22); color: #fff; }
  .v3xm-dc.off { background: transparent; color: #a3a8b0; border: 1px dashed rgba(60,66,78,.2); }
  .v3xm-dc.off .c { background: none; color: #a3a8b0; }

  /* Машины / Карта / Без даты */
  .v3xm-seg { display: flex; gap: 3px; padding: 3px; border-radius: 17px; background: var(--t-nested); border: 1px solid var(--t-line);
    overflow-x: auto; scrollbar-width: none; }
  .v3xm-seg::-webkit-scrollbar { display: none; }
  .v3xm-seg button { white-space: nowrap; border: 0; padding: 8px 14px; border-radius: 14px; font-size: 13.5px; font-weight: 650;
    background: transparent; color: var(--t-ink-2); }
  .v3xm-seg button.on { background: var(--t-surface); color: var(--t-blue-ink); box-shadow: 0 1px 3px rgba(22,26,36,.16); }

  /* шапка машины */
  .v3xm-mh { display: flex; align-items: center; gap: 9px; padding: 11px 13px; border-radius: 18px; width: 100%; box-sizing: border-box;
    text-align: left; color: var(--t-ink); background: color-mix(in srgb, var(--mc) 9%, var(--t-surface));
    border: 1px solid color-mix(in srgb, var(--mc) 26%, transparent); }
  .v3xm-mh > i { width: 10px; height: 10px; border-radius: 5px; background: var(--mc); flex-shrink: 0; }
  .v3xm-mn { font-size: 16px; font-weight: 750; flex-grow: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .v3xm-ms { font-size: 13px; font-weight: 650; color: var(--t-ink-2); white-space: nowrap; flex-shrink: 0; }
  .v3xm-mh.idle { opacity: .55; }

  /* точка маршрута / строка архива */
  .v3xm-stop { display: flex; gap: 11px; padding: 11px 12px; border-radius: 18px; background: var(--t-surface); border: 0;
    width: 100%; box-sizing: border-box; text-align: left; color: var(--t-ink); }
  .v3xm-stop.done { opacity: .6; }
  .v3xm-stop.ar { align-items: center; gap: 10px; padding: 11px 13px; }
  .v3xm-sn { width: 30px; height: 30px; flex-shrink: 0; box-sizing: border-box; border-radius: 15px; box-shadow: inset 0 0 0 2.5px var(--k);
    font-size: 13.5px; font-weight: 800; display: flex; align-items: center; justify-content: center; color: var(--t-ink); }
  .v3xm-sn.pool { box-shadow: none; border: 2.5px dashed var(--k); }
  .v3xm-stop.done .v3xm-sn { background: #14964f; color: #fff; box-shadow: none; }
  .v3xm-sb { display: flex; flex-direction: column; gap: 2px; flex-grow: 1; min-width: 0; }
  .v3xm-sr { display: flex; align-items: center; gap: 6px; min-width: 0; }
  .v3xm-st { font-size: 15.5px; font-weight: 700; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
  .v3xm-sr .v3xm-st { white-space: nowrap; }
  .v3xm-stop.ar .v3xm-sb { gap: 0; }
  .v3xm-stop.ar .v3xm-st { font-size: 15px; }
  .v3xm-ss { font-size: 13px; color: var(--t-ink-3); }
  .v3xm-ss.bad { color: var(--t-bad-ink); font-weight: 600; }
  .v3xm-tag { align-self: flex-start; max-width: 100%; box-sizing: border-box; padding: 3px 9px 4px; border-radius: 10px;
    font-size: 12.5px; font-weight: 600; color: #8a5a10; background: rgba(240,160,75,.22);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .v3xm-pill { font-size: 11.5px; font-weight: 700; padding: 3px 9px; border-radius: 9px; white-space: nowrap; flex-shrink: 0; }
  .v3xm-pill.ok { background: rgba(20,150,79,.12); color: var(--t-ok-ink); }
  .v3xm-pill.bad { background: rgba(224,49,63,.12); color: var(--t-bad-ink); max-width: 55%; overflow: hidden; text-overflow: ellipsis; }
  .v3xm-pill.mute { background: var(--t-nested); color: var(--t-ink-2); }
  .v3xm-pill.blue { background: rgba(10,111,224,.12); color: var(--t-blue); }

  /* карта дня */
  .v3xm-mapw { position: relative; height: calc(100dvh - 400px); min-height: 300px; border-radius: 22px; overflow: hidden;
    border: 1px solid var(--t-line); isolation: isolate; }
  .v3xm-mapw .v3f-leg { left: 10px; bottom: 10px; padding: 8px 11px; border-radius: 18px; font-size: 12px; }

  /* меню действий — шторка снизу */
  .v3xm-sheetbg { position: fixed; inset: 0; z-index: 2999; background: rgba(0,0,0,.28); }
  .v3f-pop.v3xm-sheet { left: 8px; right: 8px; top: auto; bottom: calc(8px + env(safe-area-inset-bottom, 0px)); min-width: 0; max-width: none;
    max-height: 70dvh; padding: 8px; border-radius: 26px; }
  .v3xm-sheet .v3f-popi { min-height: 48px; padding: 0 14px; border-radius: 16px; font-size: 16px; white-space: normal; }
  .v3xm-sheet .v3f-poph { padding: 10px 14px 6px; }

  /* ── Календарь ── */
  .v3xm-card { display: flex; flex-direction: column; gap: 8px; padding: 14px; border-radius: 22px; background: var(--t-surface); }
  .v3xm-cg { display: grid; grid-template-columns: 40px repeat(7, minmax(0, 1fr)); gap: 4px; align-items: center; }
  .v3xm-cgh { font-size: 11px; font-weight: 750; color: var(--t-ink-3); text-align: center; align-items: stretch; }
  .v3xm-cgd { border: 0; background: none; padding: 0; color: var(--t-ink-3); font-size: 11px; font-weight: 750; min-height: 32px; }
  .v3xm-cgd b { font-size: 14px; color: var(--t-ink); }
  .v3xm-cgd.sun { color: #a3a8b0; }
  .v3xm-cgd.sel, .v3xm-cgd.sel b { color: var(--t-blue-ink); }
  .v3xm-cgr { display: flex; align-items: center; gap: 4px; font-size: 13px; font-weight: 750; white-space: nowrap; overflow: hidden; }
  .v3xm-cgr i { width: 8px; height: 8px; border-radius: 4px; flex-shrink: 0; }
  .v3xm-cc { height: 44px; width: 100%; min-width: 0; box-sizing: border-box; border-radius: 12px; padding: 0; color: var(--t-ink);
    display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 760;
    border: 1px solid rgba(60,66,78,.1); background: color-mix(in srgb, var(--mc) var(--tint), var(--t-surface)); }
  .v3xm-cc.full { background: color-mix(in srgb, #e8890c 28%, var(--t-surface)); }
  .v3xm-cc.free { border: 0; background: var(--t-row); color: #a3a8b0; font-size: 12px; font-weight: 600; }
  .v3xm-cc.off { border: 1px dashed rgba(60,66,78,.18); background: none; color: #a3a8b0; font-size: 10.5px; font-weight: 600; }
  .v3xm-cc.sel { border: 2px solid var(--t-blue); background: var(--t-blue-soft); }
  .v3xm-sect { display: flex; align-items: baseline; gap: 8px; padding: 6px 4px 0; font-size: 18px; font-weight: 750; }
  .v3xm-sect:empty { display: none; }
  .v3xm-bc { display: flex; align-items: center; gap: 12px; padding: 13px 14px; border-radius: 20px; background: var(--t-surface);
    color: var(--t-ink); border: 0; width: 100%; box-sizing: border-box; text-align: left; }
  .v3xm-bc.sel { box-shadow: inset 0 0 0 2px var(--t-blue); }
  .v3xm-bc > i { width: 10px; height: 10px; border-radius: 5px; flex-shrink: 0; }
  .v3xm-bct { display: flex; flex-direction: column; flex-grow: 1; min-width: 0; }
  .v3xm-bct b { font-size: 16px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .v3xm-bct span { font-size: 13.5px; color: var(--t-ink-3); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .v3xm-chev { color: var(--t-ink-4); flex-shrink: 0; }

  /* ── Архив ── */
  .v3xm-srch { display: flex; align-items: center; gap: 8px; height: 44px; padding: 0 14px; border-radius: 22px; box-sizing: border-box;
    background: var(--t-surface); border: 1px solid rgba(60,66,78,.12); flex-shrink: 0; color: var(--t-ink-3); }
  .v3xm-srch input { border: 0; outline: none; background: transparent; flex-grow: 1; min-width: 0; font: inherit; font-size: 16px; color: var(--t-ink); }
  .v3xm-achips { position: relative; display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; flex-shrink: 0; }
  .v3xm-achips::-webkit-scrollbar { display: none; }
  .v3xm-ac { flex-shrink: 0; display: flex; flex-direction: column; align-items: center; gap: 2px; width: 72px; padding: 8px 0;
    border-radius: 16px; background: var(--t-surface); color: var(--t-ink); border: 1px solid rgba(60,66,78,.12); }
  .v3xm-ac .w { font-size: 12px; font-weight: 700; opacity: .8; }
  .v3xm-ac .n { font-size: 16px; font-weight: 750; }
  .v3xm-ac .c { font-size: 11px; font-weight: 700; color: var(--t-ok-ink); white-space: nowrap; max-width: 66px; overflow: hidden; text-overflow: ellipsis; }
  .v3xm-ac .c.bad { color: var(--t-bad-ink); }
  .v3xm-ac .c.mute { color: var(--t-ink-3); }
  .v3xm-ac.on { background: var(--t-blue); color: #fff; border-color: transparent; }
  .v3xm-ac.on .c { color: #fff; }
  .v3xm-ac.mon { background: transparent; border-style: dashed; color: var(--t-ink-2); }
  .v3xm-ac.mon .c { color: var(--t-ink-3); }

  /* ── Комплекты ── */
  .v3xm-drop { display: flex; align-items: center; gap: 12px; padding: 14px; border-radius: 20px; width: 100%; box-sizing: border-box;
    border: 2px dashed rgba(10,95,208,.4); background: var(--t-blue-soft); color: var(--t-blue-ink); font-weight: 700; text-align: left; }
  .v3xm-drop svg { flex-shrink: 0; }
  .v3xm-drop > span { display: flex; flex-direction: column; min-width: 0; }
  .v3xm-drop small { font-size: 13px; font-weight: 500; color: var(--t-ink-2); }
  .v3xm-ks { display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; border-radius: 20px; background: var(--t-surface); }
  .v3xm-ksh { display: flex; align-items: center; gap: 9px; min-width: 0; }
  .v3xm-ksh > b { font-weight: 700; flex-grow: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .v3xm-docs { display: flex; flex-wrap: wrap; gap: 6px; }
  .v3xm-doc { display: flex; align-items: center; gap: 8px; padding: 7px 10px; border-radius: 13px; background: var(--t-row); border: 0;
    color: var(--t-ink); text-align: left; min-width: 0; max-width: 100%; box-sizing: border-box; }
  .v3xm-doc.warn { background: rgba(232,137,12,.12); }
  .v3xm-dic { width: 22px; height: 26px; border-radius: 6px; color: #fff; font-size: 8px; font-weight: 800; display: flex; align-items: flex-end;
    justify-content: center; padding-bottom: 3px; box-sizing: border-box; flex-shrink: 0; letter-spacing: -.02em; }
  .v3xm-dtx { display: flex; flex-direction: column; min-width: 0; }
  .v3xm-dtx b { font-size: 13px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .v3xm-dtx span { font-size: 11.5px; color: var(--t-ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

  /* тёмная тема: то, что в макете не токенами */
  [data-theme="dark"] .v3xm-tag { color: #ffc070; background: rgba(240,160,75,.16); }
  [data-theme="dark"] .v3xm-dc, [data-theme="dark"] .v3xm-srch, [data-theme="dark"] .v3xm-ac { border-color: rgba(255,255,255,.08); }
  [data-theme="dark"] .v3xm-dc.today { border-color: var(--t-blue); }
  [data-theme="dark"] .v3xm-dc.off, [data-theme="dark"] .v3xm-cc.off, [data-theme="dark"] .v3xm-ac.mon { border-color: rgba(255,255,255,.14); }
  [data-theme="dark"] .v3xm-cc { border-color: rgba(255,255,255,.08); }
  [data-theme="dark"] .v3xm-cc.sel { border-color: var(--t-blue); background: rgba(77,163,255,.16); }
  [data-theme="dark"] .v3xm-pill.blue { color: #6cb2ff; }
  [data-theme="dark"] .v3xm-drop { background: rgba(77,163,255,.1); color: #8cc2ff; border-color: rgba(77,163,255,.4); }
  [data-theme="dark"] .v3xm-doc.warn { background: rgba(255,178,60,.14); }
}
/* телефон пошире (600–860): карточки машин дня в календаре — плиткой, а не растянутой лентой */
@media (min-width: 600px) and (max-width: 860px) {
  #v3xm-fcday { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
  #v3xm-fcday > .v3f-empty { grid-column: 1 / -1; }
}
@media (max-width: 860px) and (prefers-color-scheme: dark) {
  :root:not([data-theme]) .v3xm-tag { color: #ffc070; background: rgba(240,160,75,.16); }
  :root:not([data-theme]) .v3xm-dc, :root:not([data-theme]) .v3xm-srch, :root:not([data-theme]) .v3xm-ac { border-color: rgba(255,255,255,.08); }
  :root:not([data-theme]) .v3xm-dc.today { border-color: var(--t-blue); }
  :root:not([data-theme]) .v3xm-dc.off, :root:not([data-theme]) .v3xm-cc.off, :root:not([data-theme]) .v3xm-ac.mon { border-color: rgba(255,255,255,.14); }
  :root:not([data-theme]) .v3xm-cc { border-color: rgba(255,255,255,.08); }
  :root:not([data-theme]) .v3xm-cc.sel { border-color: var(--t-blue); background: rgba(77,163,255,.16); }
  :root:not([data-theme]) .v3xm-pill.blue { color: #6cb2ff; }
  :root:not([data-theme]) .v3xm-drop { background: rgba(77,163,255,.1); color: #8cc2ff; border-color: rgba(77,163,255,.4); }
  :root:not([data-theme]) .v3xm-doc.warn { background: rgba(255,178,60,.14); }
}

/* ── «Сегодня пусто — на завтра N заявок →» в шапке «Грузовых» ── */
.v3f-hint { flex-shrink: 1; min-width: 0; display: flex; align-items: center; gap: 8px; font-size: 13.5px; color: var(--t-ink-3); white-space: nowrap; }
.v3f-hint[hidden] { display: none; }
.v3f-hint button { height: 32px; padding: 0 14px; border-radius: 16px; border: 0; background: color-mix(in srgb, var(--t-blue) 12%, var(--t-surface));
  color: var(--t-blue); font: inherit; font-weight: 650; cursor: pointer; white-space: nowrap; }
.v3f-hint button:hover { background: color-mix(in srgb, var(--t-blue) 18%, var(--t-surface)); }
.v3xm-hint { width: 100%; box-sizing: border-box; display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 12px 14px; border-radius: 18px; border: 0; background: color-mix(in srgb, var(--t-blue) 10%, var(--t-surface));
  color: var(--t-ink-3); font: inherit; font-size: 14px; text-align: left; cursor: pointer; }
.v3xm-hint b { color: var(--t-blue); font-weight: 700; white-space: nowrap; }

/* ── машина в ремонте: срок и причина + «Раздать N точек» ── */
.v3f-broken { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; padding: 7px 10px; border-radius: 14px;
  background: color-mix(in srgb, var(--t-bad, #d22b39) 10%, var(--t-surface)); color: var(--t-bad, #d22b39); font-size: 13px; font-weight: 650; }
.v3f-broken button { height: 28px; padding: 0 12px; border-radius: 14px; border: 1px solid color-mix(in srgb, var(--t-bad, #d22b39) 35%, transparent);
  background: var(--t-surface); color: var(--t-bad, #d22b39); font: inherit; font-size: 12.5px; font-weight: 700; cursor: pointer; }
.v3f-broken button:hover { background: color-mix(in srgb, var(--t-bad, #d22b39) 8%, var(--t-surface)); }

/* ── карточка, к которой привели из «Нужно решить» ── */
.v3f-focus { box-shadow: 0 0 0 3px var(--t-blue), 0 8px 24px -10px color-mix(in srgb, var(--t-blue) 60%, transparent) !important;
  animation: v3f-focus 1.2s ease-in-out 2; }
@keyframes v3f-focus { 50% { box-shadow: 0 0 0 6px color-mix(in srgb, var(--t-blue) 35%, transparent); } }
@media (prefers-reduced-motion: reduce) { .v3f-focus { animation: none; } }

/* ── окна «Сломалась…» и «На другой день» ── */
.v3f-dlg { display: flex; flex-direction: column; gap: 14px; margin: 6px 0 18px; }
.v3f-dl { display: flex; flex-direction: column; gap: 6px; font-size: 13px; font-weight: 650; color: var(--t-ink-2); }
.v3f-dl textarea.inp { min-height: 64px; resize: vertical; }
.v3f-dn { margin: 0; font-size: 13px; color: var(--t-ink-3); line-height: 1.4; }

/* «Задания дня — в чат»: поле на 10 строк (общий textarea.inp сжимал его до одной) */
textarea.inp.fr-chat-txt { min-height: calc(10 * 1.45em + 24px); }
