/* ═══════════════════════════════════════════════════════════════════════
   Тема «Олива й пісок» (вибір власника 02.09.2026) + Fixel (MacPaw, укр.).
   Синьо-білу гаму замінено: навігація — темна олива, робоча зона — пісок,
   дія — олива, семантика (успіх/увага/помилка) відведена окремими токенами.
   Шрифти лежать поруч у /fonts і віддаються з нашого домену: CSP дозволяє
   font-src 'self', зовнішній хост шрифтів не завантажився б узагалі.
   ═══════════════════════════════════════════════════════════════════════ */




@font-face{font-family:'Fixel Text';src:url(/fonts/FixelText-Regular.woff2) format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Fixel Text';src:url(/fonts/FixelText-Medium.woff2) format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Fixel Text';src:url(/fonts/FixelText-SemiBold.woff2) format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'Fixel Text';src:url(/fonts/FixelText-Bold.woff2) format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Fixel Display';src:url(/fonts/FixelDisplay-Bold.woff2) format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Fixel Display';src:url(/fonts/FixelDisplay-ExtraBold.woff2) format('woff2');font-weight:800;font-style:normal;font-display:swap}

:root{
  /* поверхні — тепла світла робоча зона */
  --canvas:#F5F3EF;        /* тло сторінки */
  --panel:#FFFFFF;         /* картки, таблиці, форми */
  --panel-2:#F0EDE7;       /* шапки таблиць, вкладені плитки */
  --line:#E3DED5;          /* межі */
  --line-soft:#EDE9E2;     /* межі рядків таблиці */
  /* навігація — майже чорний, теплий */
  --nav:#141312;
  --nav-2:#1C1A18;
  --nav-text:#E6E2DB;
  --nav-dim:#8B857C;
  /* темні панелі на світлому тлі: деталь рейсу, картка водія, підсумки */
  --ink:#1C1A18;
  --ink-2:#252220;
  --ink-text:#F0ECE5;
  --ink-dim:#9A938A;
  --ink-line:#332F2B;
  /* текст */
  --text:#1A1815;
  --muted:#6B655C;
  --faint:#8E877D;
  /* дія — теракота */
  --accent:#D4622A;
  --accent-ink:#A8471A;    /* текст акцентом на світлому */
  --accent-soft:#FBEADF;   /* підкладка акценту */
  --on-accent:#FFFFFF;     /* текст на акцентній заливці */
  --accent-light:#F08A52;  /* акцент, читний НА ТЕМНОМУ */
  /* семантика — окремо від акценту */
  --ok:#2E7D5B; --ok-soft:#DFF0E7;
  --warn:#8A6A12; --warn-soft:#F7EED6;
  --hot:#A8552B; --hot-soft:#F8E5D8;
  --bad:#AB2F24; --bad-soft:#F9DEDB;
  --neutral:#5F5A52; --neutral-soft:#EBE7E0;
  /* тінь і шрифт */
  --shadow:0 10px 30px rgba(28,26,24,.10);
  /* Системний стек: на Windows це Segoe UI — хінтований під саму систему,
     тому дрібний текст різкий, а нулі в табличних цифрах не перекреслені. */
  --font:'Segoe UI',system-ui,-apple-system,Roboto,'Helvetica Neue',Arial,sans-serif;
  /* Fixel лишається там, де кегль великий і розмитості не видно. */
  --font-head:'Fixel Display','Segoe UI',system-ui,sans-serif;
  --font-mono:ui-monospace,SFMono-Regular,Menlo,monospace;
}
/* Цифри в колонках мусять стояти одна під одною: ваги, місця, суми. */
table,.tile b,.metric strong,.kv b,.score strong{font-variant-numeric:tabular-nums}
h1,h2,h3,.brand span,.page-head h1,.login-hero h1{font-family:var(--font-head)}

html{font-family:var(--font);color:var(--text);background:var(--canvas)}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}.splash,.center{min-height:100vh;display:flex;align-items:center;justify-content:center;gap:12px;color:var(--muted)}.shell{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--nav);color:var(--nav-text);padding:22px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;gap:11px;align-items:center;padding:0 7px 25px}
.sidebar nav{display:flex;flex-direction:column;gap:4px}.sidebar nav a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:10px;color:var(--nav-text);font-size:14px}.sidebar nav a:hover,.sidebar nav a.active{background:rgba(255,255,255,.1);color:var(--panel)}.sidebar-user{margin-top:auto;border-top:1px solid rgba(255,255,255,.12);padding:16px 7px 0;display:flex;align-items:center;justify-content:space-between}.sidebar-user div{display:flex;flex-direction:column;min-width:0}.sidebar-user strong{font-size:13px}.sidebar-user span{font-size:11px;color:var(--nav-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.sidebar-user button{background:none;border:0;color:var(--nav-text);cursor:pointer;font-size:20px}.topbar{height:58px;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;z-index:10}.topbar>div:first-child{display:flex;flex-direction:column}.eyebrow{text-transform:uppercase;letter-spacing:.11em;font-size:10px;font-weight:700;color:var(--muted)}.topbar strong{font-size:14px}.top-status{font-size:12px;color:var(--ok);display:flex;align-items:center;gap:7px}.dot{width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 4px var(--ok-soft)}.content{padding:13px 18px 24px;max-width:1600px;margin:auto}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:10px}.page-head h1{font-size:21px;margin:2px 0 3px;letter-spacing:-.02em}.page-head p{margin:0;color:var(--muted);max-width:860px;font-size:12.5px;line-height:1.45}.btn{border:1px solid var(--line);background:var(--panel);padding:7px 13px;border-radius:8px;font-weight:650;cursor:pointer;color:var(--text);display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn:hover{border-color:var(--accent)}.btn:disabled{opacity:.55}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn-danger{background:var(--bad);border-color:var(--bad);color:var(--panel)}.btn-success{background:var(--ok);border-color:var(--ok);color:var(--panel)}.button-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.panel{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:12px;box-shadow:var(--shadow)}.panel h2{font-size:13.5px;margin:0 0 8px;letter-spacing:-.01em}.metric-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-bottom:10px}.metric-grid.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.metric{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:10px;display:flex;flex-direction:column;min-height:70px;box-shadow:var(--shadow)}.metric-icon{width:26px;height:26px;border-radius:8px;background:var(--accent-soft);color:var(--accent-ink);display:grid;place-items:center;margin-bottom:8px;font-size:13px}.metric span{color:var(--muted);font-size:12px}.metric strong{font-size:19px;margin-top:3px;letter-spacing:-.02em}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:14px 0}.priority-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:10px}.priority-list li{display:flex;align-items:center;gap:10px;background:var(--panel-2);border-radius:10px;padding:12px}.priority-list b{width:26px;height:26px;border-radius:8px;background:var(--accent-soft);color:var(--accent-ink);display:grid;place-items:center}.readiness{display:grid;grid-template-columns:1fr 1fr;gap:10px}.readiness span{padding:12px;border-radius:9px;font-size:13px}.readiness .ok{background:var(--ok-soft);color:var(--ok)}.readiness .warn{background:var(--warn-soft);color:var(--warn)}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:12px}.form-grid label,.login-card label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:650;color:var(--muted)}.form-grid input,.form-grid select,.form-grid textarea,.login-card input{border:1px solid var(--line);border-radius:8px;padding:7px 9px;background:var(--panel);color:var(--text);outline:none;width:100%}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.login-card input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.form-actions{grid-column:1/-1;display:flex;justify-content:flex-end}.table-wrap{overflow:auto;padding:0}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;padding:7px 10px;color:var(--muted);background:var(--panel-2);border-bottom:1px solid var(--line);font-size:11px;text-transform:uppercase;letter-spacing:.04em}td{padding:6px 10px;border-bottom:1px solid var(--line-soft);white-space:nowrap}tbody tr:hover{background:var(--panel-2)}.badge{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.035em}.badge-green{background:var(--ok-soft);color:var(--ok)}.badge-blue{background:var(--accent-soft);color:var(--accent-ink)}.badge-yellow{background:var(--warn-soft);color:var(--warn)}.badge-orange{background:var(--hot-soft);color:var(--hot)}.badge-red{background:var(--bad-soft);color:var(--bad)}.badge-gray{background:var(--neutral-soft);color:var(--neutral)}.card-list{display:flex;flex-direction:column;gap:10px}.request-card{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;padding:17px 19px;display:grid;grid-template-columns:1.1fr 2fr auto;align-items:center;gap:20px}.request-card h3{margin:7px 0 3px}.request-card p{margin:0;color:var(--muted);font-size:13px}.request-facts{display:flex;flex-wrap:wrap;gap:12px}.request-facts span{background:var(--panel-2);border-radius:8px;padding:9px 11px;font-size:12px}.pool-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.pool-head{display:flex;justify-content:space-between}.pool-head h3{margin:8px 0 2px}.pool-head span{color:var(--muted);font-size:12px}.score{text-align:right}.score small{display:block;color:var(--muted)}.score strong{font-size:25px}.capacity-bar{height:8px;background:var(--line-soft);border-radius:99px;overflow:hidden;margin:18px 0}.capacity-bar span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--ok));border-radius:99px}.pool-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:13px}.pool-metrics span{background:var(--panel-2);padding:9px;border-radius:8px;font-size:11px;display:flex;flex-direction:column}.pool-items{display:flex;flex-direction:column;border-top:1px solid var(--line);margin-bottom:15px}.pool-items>div{display:grid;grid-template-columns:1fr auto;gap:2px;padding:10px 0;border-bottom:1px solid var(--line-soft)}.pool-items span{font-size:11px;color:var(--muted)}.timeline{display:flex;flex-direction:column}.timeline>div{display:grid;grid-template-columns:17px 1fr auto;gap:10px;position:relative;padding-bottom:20px}.timeline>div:not(:last-child):before{content:"";position:absolute;left:6px;top:13px;bottom:0;border-left:2px solid var(--line)}.timeline-dot{width:13px;height:13px;border:3px solid var(--accent);background:var(--panel);border-radius:50%;z-index:1}.timeline b{font-size:13px}.timeline p{margin:2px 0;color:var(--muted);font-size:12px}.timeline small{color:var(--faint)}.allocation,.document-line,.incident-line{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line-soft);padding:11px 0;gap:12px}.allocation div,.document-line div,.incident-line div{display:flex;flex-direction:column}.allocation span,.document-line span,.incident-line span{font-size:11px;color:var(--muted)}.incident-line>strong{color:var(--bad)}.incident-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:var(--shadow)}.incident-card h3{margin:12px 0 5px}.incident-card p{color:var(--muted)}.incident-cost{display:flex;justify-content:space-between;padding:12px;background:var(--bad-soft);border-radius:9px;margin:12px 0}.icon-btn{width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--line);border-radius:8px}.alert{padding:9px 12px;border-radius:8px;margin:8px 0;font-size:12.5px}.alert-error{background:var(--bad-soft);color:var(--bad)}.alert-warning{background:var(--warn-soft);color:var(--warn)}.alert-success{background:var(--ok-soft);color:var(--ok)}.muted{color:var(--muted)}.empty,.driver-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:250px;color:var(--faint)}.spinner{width:36px;height:36px;border-radius:50%;border:4px solid var(--line);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-page{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr;background:var(--canvas)}.login-hero{background:var(--ink);color:var(--ink-text);display:flex;flex-direction:column;justify-content:center;padding:10vw}.login-hero h1{font-size:48px;margin:22px 0 10px;letter-spacing:-.04em}.login-hero p{font-size:18px;line-height:1.6;max-width:620px;color:var(--ink-dim)}.hero-points{display:flex;flex-direction:column;gap:9px;margin-top:25px;color:var(--ink-text)}.hero-points span:before{content:"✓";margin-right:9px;color:var(--accent-light)}.login-panel{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:30px}.login-card{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:35px;width:min(420px,100%);box-shadow:0 20px 60px rgba(28,26,24,.16);display:flex;flex-direction:column;gap:15px}.login-card h2{margin:4px 0 -8px}.login-card p,.login-card small{color:var(--muted)}.login-card .btn{margin-top:5px}.role-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.role-grid span{background:var(--panel-2);padding:12px;border-radius:9px}.driver-page{max-width:760px;margin:auto}.driver-head{display:flex;justify-content:space-between;align-items:flex-start}.driver-head h1{margin:5px 0}.driver-head p{color:var(--muted)}.driver-stop{background:var(--ink);color:var(--ink-text);border-radius:18px;padding:24px;margin:20px 0;box-shadow:var(--shadow)}.driver-stop h2{font-size:27px;margin:6px 0}.driver-stop p{color:var(--ink-dim)}.driver-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:11px;margin:16px 0}.driver-actions button{border:0;border-radius:13px;background:var(--panel);min-height:88px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center;font-weight:750;color:var(--text);cursor:pointer}.driver-actions .danger{background:var(--bad);color:var(--panel)}.driver-actions .success{background:var(--ok);color:var(--panel)}.toast{position:fixed;right:20px;bottom:20px;z-index:99;max-width:420px;padding:13px 16px;border-radius:10px;background:var(--text);color:var(--panel);box-shadow:0 12px 40px rgba(0,0,0,.18);animation:toast .25s ease}.toast.error{background:var(--bad)}.toast.success{background:var(--ok)}@keyframes toast{from{transform:translateY(10px);opacity:0}}details.form-details{margin-bottom:10px}details.form-details summary{list-style:none;cursor:pointer}details.form-details summary::-webkit-details-marker{display:none}.code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;background:var(--panel-2);padding:3px 6px;border-radius:5px}.nowrap{white-space:nowrap}@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(3,1fr)}.pool-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.shell{display:block}.sidebar{position:fixed;z-index:20;bottom:0;top:auto;width:100%;height:68px;padding:7px;background:var(--nav)}.brand,.sidebar-user{display:none}.sidebar nav{flex-direction:row;overflow-x:auto}.sidebar nav a{flex-direction:column;gap:2px;padding:6px 10px;min-width:72px;font-size:10px}.topbar{height:58px;padding:0 16px}.content{padding:19px 14px 90px}.page-head{flex-direction:column}.metric-grid,.metric-grid.compact{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.request-card{grid-template-columns:1fr}.pool-metrics{grid-template-columns:repeat(2,1fr)}.login-page{grid-template-columns:1fr}.login-hero{display:none}.login-panel{padding:18px}.driver-actions{grid-template-columns:repeat(2,1fr)}.role-grid{grid-template-columns:1fr 1fr}}@media(max-width:420px){.metric-grid,.metric-grid.compact{grid-template-columns:1fr}.page-head h1{font-size:26px}}.sidebar{overflow:hidden}.sidebar nav{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-right:4px;gap:2px}.sidebar nav::-webkit-scrollbar{width:6px}.sidebar nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:3px}.sidebar nav::-webkit-scrollbar-track{background:transparent}.sidebar nav{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.18) transparent}.sidebar nav a{color:var(--nav-text)}.sidebar nav a:hover{background:rgba(255,255,255,.14);color:var(--panel)}.sidebar nav a.active{background:var(--accent);color:var(--on-accent);font-weight:600;box-shadow:0 4px 14px rgba(212,98,42,.34)}.sidebar nav a .nav-ico{opacity:.85;width:18px;text-align:center;flex:none}.sidebar nav a.active .nav-ico{opacity:1}.nav-group{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}.nav-group-label{font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--nav-dim);padding:6px 12px 3px}@media(max-width:900px){.sidebar{overflow:visible}.sidebar nav{overflow-x:auto;overflow-y:hidden}.nav-group{flex-direction:row;margin-bottom:0;gap:0}.nav-group-label{display:none}}.doc-code{display:inline-block;font:600 10px/1.6 ui-monospace,monospace;letter-spacing:.06em;background:var(--accent-soft);color:var(--accent-ink);border:1px solid var(--line);border-radius:5px;padding:0 6px;margin-right:6px;vertical-align:1px}
/* Таблиці з багатьма колонками: шапка і колонка дій завжди на екрані,
   горизонтальний повзунок — на межі блоку, а не в кінці довгої сторінки. */
/* Без `overscroll-behavior:contain`: інакше колесо замикається в таблиці
   і сторінка не піднімається, коли таблиця вже вгорі. */
.table-wrap{max-height:72vh}
.table-wrap thead th{position:sticky;top:0;z-index:3}
.table-wrap th:last-child,.table-wrap td:last-child{position:sticky;right:0;background:var(--panel);box-shadow:-9px 0 12px -10px rgba(28,26,24,.26)}
.table-wrap thead th:last-child{z-index:4;background:var(--panel-2)}
.table-wrap tbody tr:hover td:last-child{background:var(--panel-2)}
.table-wrap td:last-child{max-width:230px;white-space:normal}
/* Компактні кнопки документів, щоб колонка дій не з'їдала екран */
.btn-ghost{border-color:var(--line);background:var(--panel-2);padding:5px 9px;font-size:11.5px;font-weight:600;border-radius:7px;margin:2px 3px 2px 0}
.btn-ghost:hover{background:var(--accent-soft);border-color:var(--accent)}
@media(max-width:760px){.table-wrap{max-height:none}.table-wrap th:last-child,.table-wrap td:last-child{position:static;box-shadow:none}}
.table-wrap td:last-child{max-width:264px;display:flex;flex-wrap:wrap;align-content:center;gap:0}

/* ── Мобільна верстка: правки за живим оглядом 12.08.2026 ─────────────────── */
@media(max-width:760px){
  /* Нижнє меню: не різати підписи — два рядки тексту, трохи вища панель */
  .sidebar{height:auto;min-height:64px;padding:5px 4px calc(5px + env(safe-area-inset-bottom))}
  .sidebar nav a{min-width:88px;max-width:112px;padding:6px 6px;font-size:10px;line-height:1.15;text-align:center}
  .sidebar nav a span:last-child{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}
  .content{padding:16px 12px 118px}
  /* Кнопки документів: горизонтально з переносом, а не стовпчиком на пів-екрана */
  .table-wrap td:last-child{display:table-cell;max-width:200px;white-space:normal}
  .btn-ghost{padding:8px 10px;font-size:12px;min-height:36px}
  td{padding:10px 10px;font-size:12.5px}
  th{padding:10px 10px}
  /* Плашка демо-режиму не витісняє заголовок */
  .top-status{font-size:10px;padding:4px 8px;max-width:46vw;text-align:right;line-height:1.25}
  .topbar{gap:8px}
  .topbar strong{font-size:13px}
  /* Форми і кнопки — зручні для пальця */
  .btn{min-height:42px}
  .form-grid input,.form-grid select,.form-grid textarea,.login-card input{min-height:42px}
  .page-head h1{font-size:24px}
  .metric{min-height:88px;padding:13px}
  .metric-icon{margin-bottom:8px}
  .metric strong{font-size:20px}
}
@media(max-width:420px){
  /* Дві метрики в ряд навіть на вузькому екрані — не сторінка-простирадло */
  .metric-grid,.metric-grid.compact{grid-template-columns:repeat(2,1fr);gap:9px}
}
@media(max-width:760px){
  /* Панелі не ширші за екран: внутрішні двоколонкові списки — в одну колонку */
  .grid-2>*{min-width:0}
  .panel{min-width:0;overflow-wrap:anywhere}
  .priority-list{grid-template-columns:1fr}
  .readiness{grid-template-columns:1fr}
}
@media(max-width:760px){
  /* Колонка документів не стискається до ширини літери: кнопки цілісні,
     таблиця скролиться всередині блока */
  .table-wrap td:last-child{min-width:168px}
  .btn-ghost{white-space:nowrap;overflow-wrap:normal;word-break:normal}
  td{overflow-wrap:normal}
}.filter-bar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;align-items:end;margin-bottom:11px;padding:11px 13px}.filter-bar label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:650;color:var(--muted)}.filter-bar input,.filter-bar select{border:1px solid var(--line);border-radius:9px;padding:9px;background:var(--panel);width:100%}.filter-actions{grid-column:1/-1;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.pick-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 0 2px;border-top:1px solid var(--line)}.metric-link{cursor:pointer;transition:border-color .15s,transform .15s}.metric-link:hover{border-color:var(--accent);transform:translateY(-2px)}.metric-warn{color:var(--bad);font-weight:750}.tab-bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.tab{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:7px 15px;font-size:13px;font-weight:650;color:var(--text);cursor:pointer}.tab:hover{border-color:var(--accent)}.tab-active{background:var(--nav);border-color:var(--nav);color:var(--panel)}.alert-info{background:var(--accent-soft);color:var(--accent-ink)}.list-plain{margin:0;padding-left:18px;color:var(--muted);font-size:13px;line-height:1.75}@media(max-width:1100px){.filter-bar{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.table-wrap input[type=checkbox]{width:22px;height:22px}.filter-bar{grid-template-columns:1fr;padding:14px}.tab{min-height:40px;padding:9px 16px}.pick-bar .btn{min-height:42px}.filter-actions .btn{flex:1;min-height:42px}}.day-bar{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;padding:14px 18px;margin-bottom:18px;font-size:13px}.day-bar strong{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.day-bar a{color:var(--text);border-bottom:1px dashed var(--line)}.day-bar a:hover{color:var(--accent);border-color:var(--accent)}.day-bar b{font-size:15px;margin-left:4px}.inline-list{margin-top:4px}.inline-list summary{cursor:pointer;font-size:11px;color:var(--accent)}.inline-list ul{margin:6px 0 0;padding-left:16px;font-size:11px;color:var(--muted);line-height:1.6}.day-pick{display:inline-flex;align-items:center;gap:6px;background:var(--panel-2);border:1px solid var(--line);border-radius:9px;padding:8px 12px;font-size:12px;font-weight:600;color:var(--text);cursor:pointer}.day-pick input{width:18px;height:18px}.today-queue{margin-bottom:18px}.today-queue h2{margin-bottom:12px}.queue{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;counter-reset:q}.queue li a{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:11px;background:var(--panel-2);transition:border-color .15s,transform .15s}.queue li a:hover{border-color:var(--accent);transform:translateX(2px)}.queue-ico{width:34px;height:34px;flex:none;display:grid;place-items:center;border-radius:9px;background:var(--accent-soft);color:var(--accent);font-size:16px}.queue-text{display:flex;flex-direction:column;gap:2px;min-width:0}.queue-text b{font-size:14px}.queue-text .muted{font-size:12px}.queue-go{margin-left:auto;color:var(--muted);font-size:18px;flex:none}.queue-warn a{background:var(--bad-soft);border-color:var(--bad)}.queue-warn .queue-ico{background:var(--bad-soft);color:var(--bad)}@media(max-width:760px){.queue li a{padding:14px 12px}.queue-text b{font-size:15px}}details.nav-old{margin-bottom:10px}details.nav-old>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:6px}details.nav-old>summary::-webkit-details-marker{display:none}details.nav-old>summary:before{content:'▸';font-size:9px;transition:transform .15s}details.nav-old[open]>summary:before{transform:rotate(90deg)}details.nav-old>summary:hover{color:var(--nav-text)}

/* Бейдж OS у назві: маленька плашка, як на зразку власника. */
.os-tag{display:inline-block;margin-left:6px;padding:1px 5px;border-radius:4px;background:var(--accent);color:var(--on-accent);font-size:.62em;letter-spacing:.06em;vertical-align:2px}
.os-tag.os-big{font-size:.34em;vertical-align:middle;padding:3px 8px;border-radius:6px;margin-left:12px}

/* У темному меню плашка OS читається гірше за контур. */


/* ═══ Знак і назва ═══════════════════════════════════════════════════════
   Зразок власника: квадратна рамка, всередині R світлим і L теракотовим,
   під назвою підпис DIRECT-TO-STORE OS. Малюємо розміткою, а не картинкою,
   щоб працював Fixel Display і щоб знак ріс разом із кеглем поруч. */
.mark{--mark:42px;width:var(--mark);height:var(--mark);flex:none;display:inline-grid;
  grid-auto-flow:column;place-content:center;align-items:baseline;
  border:1px solid currentColor;border-radius:calc(var(--mark)/3.6);
  font:800 calc(var(--mark)*.46)/1 var(--font-head);letter-spacing:-.04em}
.mark i{font-style:normal;color:currentColor}
.mark b{color:var(--accent);margin-left:-.07em}
.lockup{display:flex;align-items:center;gap:13px;min-width:0}
.lockup-text{display:flex;flex-direction:column;text-transform:uppercase;min-width:0}
.lu-1,.lu-2{font-family:var(--font-head);font-weight:800;letter-spacing:.13em;line-height:1.12}
.lu-3{font-size:9px;letter-spacing:.19em;opacity:.62;margin-top:4px;font-weight:600}
.lu-2{display:flex;align-items:center;gap:7px}
/* Знак у меню світлий, у картці входу — графітовий по тону тексту. */
.lockup-nav{color:var(--nav-text)}
.lockup-nav .mark{--mark:44px;border-color:rgba(255,255,255,.26)}
.lockup-nav .lu-1,.lockup-nav .lu-2{font-size:14px}
.login-card>.mark{--mark:40px;color:var(--text);border-color:var(--faint);margin-bottom:2px}
/* Локап-заголовок сторінки входу росте від ширини, але не безмежно. */
.hero-lockup{margin:0 0 clamp(14px,2vh,26px)}
.lockup-hero .mark{--mark:clamp(58px,5.4vw,78px);border-color:rgba(255,255,255,.3)}
.lockup-hero{gap:clamp(14px,1.5vw,20px)}
.lockup-hero .lu-1,.lockup-hero .lu-2{font-size:clamp(22px,2.5vw,34px);letter-spacing:.1em}
.lockup-hero .lu-3{font-size:clamp(9px,.75vw,11px)}
.os-tag{display:inline-flex;align-items:center;padding:1px 6px;border-radius:4px;
  background:var(--accent);color:var(--on-accent);font-size:.56em;letter-spacing:.08em;
  font-style:normal;line-height:1.5;margin:0}
.lockup-nav .os-tag{background:none;color:var(--accent-light);border:1px solid var(--accent);
  padding:0 4px;font-size:.62em}

/* ═══ Вхід уміщається в екран ноутбука ═══════════════════════════════════
   Було 48px заголовок, вільний абзац і пʼять пунктів у 10vw полях — на
   висоті 768 px це давало скрол. Розміри залежать від ширини (clamp), а на
   низьких екранах стискаються ще раз. */
.login-hero{padding:clamp(30px,4.4vw,74px);gap:0}
.login-hero p{font-size:clamp(14px,1.15vw,17px);line-height:1.55;
  max-width:58ch;margin:0 0 clamp(16px,2.4vh,26px)}
.hero-points{margin-top:0;gap:clamp(7px,1.1vh,11px);font-size:clamp(12.5px,1.02vw,14.5px);
  line-height:1.45}
.login-panel{padding:clamp(18px,2.4vh,30px);gap:clamp(10px,1.7vh,16px)}
.login-card{padding:clamp(22px,2.6vh,34px);gap:clamp(11px,1.5vh,15px)}
@media(max-height:820px){
  .lockup-hero .lu-1,.lockup-hero .lu-2{font-size:clamp(20px,2vw,26px)}
  .login-hero p{font-size:14px;line-height:1.5}
  .hero-points{font-size:12.5px}
  .login-card{padding:20px;gap:10px}
}

/* Заявка і демонстрація — одна картка: обидві про те, що доступу ще немає. */
.login-extra{gap:0}
.login-extra summary{cursor:pointer;font-weight:650;list-style:none}
.login-extra summary::-webkit-details-marker{display:none}
.login-extra summary:before{content:"▸ ";color:var(--accent)}
.login-extra details[open] summary:before{content:"▾ "}
.demo-row{display:flex;align-items:center;justify-content:space-between;gap:14px;
  border-top:1px solid var(--line-soft);margin-top:14px;padding-top:14px}
.demo-row strong{display:block;font-size:13.5px}
.demo-row small{color:var(--muted);font-size:11.5px}
.demo-row .btn{flex:none}

@media(max-height:660px){
  .login-hero{padding:26px 32px}
  .login-panel{padding:14px}
  .login-card{padding:17px;gap:9px}
  .hero-points{gap:6px}
  .demo-row{margin-top:11px;padding-top:11px}
}

.lockup-nav .lu-3{color:var(--nav-dim);opacity:1}

.hero-points span{padding-left:1.35em;text-indent:-1.35em}
.hero-points span:before{display:inline-block;width:1.35em;text-indent:0;margin-right:0}

/* ═══ Погляди адміністратора ═══════════════════════════════════════════════
   Смуга в шапці перемикає ПОДАННЯ, не права. Тому активний погляд позначений
   акцентом, а під шапкою висить плашка з поясненням: інакше адміністратор
   вирішить, що бачить справжні обмеження тієї сторони. */
.view-switch{display:flex;gap:4px;flex-wrap:wrap;background:var(--panel-2);border:1px solid var(--line);
  border-radius:11px;padding:3px}
.view-tab{border:0;background:none;color:var(--muted);font:600 12px/1 var(--font);cursor:pointer;
  padding:8px 11px;border-radius:8px;white-space:nowrap}
.view-tab:hover{color:var(--text);background:var(--panel)}
.view-tab-on{background:var(--accent);color:var(--on-accent)}
.view-banner{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--accent-soft);border:1px solid var(--accent);border-radius:9px;padding:7px 12px;margin-bottom:12px;font-size:12px}
.view-banner strong{color:var(--accent-ink);white-space:nowrap}
.view-banner span{color:var(--text);font-size:12px;flex:1;min-width:220px}
@media(max-width:1100px){.view-tab{padding:7px 8px;font-size:11px}}
@media(max-width:760px){.view-switch{display:none}}

/* ═══ Довідник торгових точок ══════════════════════════════════════════════
   Загальне правило для таблиць забороняє перенос — для дат і чисел так треба,
   але адреса через це розсувала таблицю за екран і давала повзунок при
   вільному місці збоку. Тут ширини задані пропорціями, а текст переноситься. */
.table-stores{table-layout:fixed;width:100%}
.table-stores th,.table-stores td{white-space:normal;overflow-wrap:anywhere;vertical-align:top}
.table-stores td:nth-child(1),.table-stores th:nth-child(1){width:10%}
.table-stores td:nth-child(2),.table-stores th:nth-child(2){width:7%}
.table-stores td:nth-child(3),.table-stores th:nth-child(3){width:6%}
.table-stores td:nth-child(4),.table-stores th:nth-child(4){width:11%}
.table-stores td:nth-child(5),.table-stores th:nth-child(5){width:26%}
.table-stores td:nth-child(6),.table-stores th:nth-child(6){width:10%}
.table-stores td:nth-child(7),.table-stores th:nth-child(7){width:11%}
.table-stores td:nth-child(8),.table-stores th:nth-child(8){width:10%}
.table-stores td:nth-child(9),.table-stores th:nth-child(9){width:9%;padding-left:0}
/* Колонка дій більше не липне: вона тримала праву смугу і зʼїдала місце. */
.table-stores td:last-child{position:static;box-shadow:none}
.table-stores .btn-ghost{padding:6px 8px;font-size:12px;white-space:nowrap}
@media(max-width:1200px){
  .table-stores td:nth-child(3),.table-stores th:nth-child(3),
  .table-stores td:nth-child(4),.table-stores th:nth-child(4){display:none}
}

/* ═══ Публічна сторінка ════════════════════════════════════════════════════ */
.lp{background:var(--canvas);color:var(--text);min-height:100vh}
.lp-top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:24px;
  padding:14px clamp(18px,4vw,64px);background:var(--nav);color:var(--nav-text)}
.lp-brand{margin-right:auto}
.lp-nav{display:flex;gap:22px}
.lp-nav a{color:var(--nav-dim);font-size:13px;letter-spacing:.04em}
.lp-nav a:hover{color:var(--nav-text)}
.lp-top-actions{display:flex;gap:8px}
.lp-top .btn{background:none;border-color:rgba(255,255,255,.28);color:var(--nav-text)}
.lp-top .btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.btn-lg{padding:13px 22px;font-size:15px}

.lp-hero{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(28px,4vw,64px);align-items:center;
  padding:clamp(40px,6vw,88px) clamp(18px,4vw,64px)}
.lp-eyebrow,.lp-num{display:inline-block;text-transform:uppercase;letter-spacing:.16em;font-size:11px;
  font-weight:700;color:var(--accent-ink)}
.lp-hero h1{font-size:clamp(34px,4.6vw,60px);line-height:1.06;letter-spacing:-.03em;margin:14px 0 18px}
.lp-lead{font-size:clamp(15px,1.3vw,18px);line-height:1.6;color:var(--muted);max-width:60ch;margin:0 0 24px}
.lp-tagline{margin-top:26px;color:var(--faint);font-size:13px;letter-spacing:.03em}

/* Картка рейсу: те саме, що диспетчер бачить у системі, лише спрощено. */
.lp-run{margin:0;background:var(--ink);color:var(--ink-text);border-radius:20px;
  padding:clamp(20px,2.4vw,30px);box-shadow:var(--shadow)}
.lp-run-head{display:flex;justify-content:space-between;align-items:center;
  text-transform:uppercase;letter-spacing:.12em;font-size:10px;color:var(--ink-dim)}
.lp-run-head strong{color:var(--accent-light)}
.lp-run-flow{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:22px 0}
.lp-run-flow span{display:flex;flex-direction:column;font-size:11px;color:var(--ink-dim);text-align:center}
.lp-run-flow b{font:800 26px/1.1 var(--font-head);color:var(--ink-text)}
.lp-run-core{border:1px solid var(--accent);border-radius:10px;padding:9px 13px;
  font:800 13px/1 var(--font-head);color:var(--accent-light)!important;letter-spacing:.08em}
.lp-run-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px;
  border-top:1px solid var(--ink-line);padding-top:16px}
.lp-run-steps li{font-size:13px;color:var(--ink-text)}
.lp-run-steps li:before{content:"✓";color:var(--accent-light);margin-right:9px}
.lp-run figcaption{margin-top:16px;font-size:12px;color:var(--ink-dim)}

.lp-section{padding:clamp(38px,5vw,76px) clamp(18px,4vw,64px);max-width:1280px;margin:auto;scroll-margin-top:84px}
.lp-section h2{font-size:clamp(22px,2.6vw,34px);line-height:1.22;letter-spacing:-.02em;
  margin:12px 0 16px;max-width:24ch;text-wrap:balance}
.lp-dark{background:var(--ink);color:var(--ink-text);max-width:none}
/* Фон на всю ширину, вміст — на тій самій лівій лінії, що у світлих секціях. */
.lp-dark{padding-left:0;padding-right:0}
.lp-inner{max-width:1280px;margin:0 auto;width:100%;padding:0 clamp(18px,4vw,64px)}
.lp-dark .lp-num{color:var(--accent-light)}
.lp-dark .lp-lead{color:var(--ink-dim)}
.lp-dark .lp-card{background:var(--ink-2);border-color:var(--ink-line);color:var(--ink-text)}
.lp-dark .lp-card p{color:var(--ink-dim)}

.lp-grid{display:grid;gap:16px;margin-top:26px}
.lp-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.lp-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.lp-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;
  padding:clamp(18px,2vw,26px);display:flex;flex-direction:column;gap:8px}
.lp-card strong{font-size:16px}
.lp-card p{margin:0;color:var(--muted);font-size:14px;line-height:1.55}
.lp-role{text-transform:uppercase;letter-spacing:.14em;font-size:10px;font-weight:700;color:var(--accent-ink)}
.lp-dark .lp-role{color:var(--accent-light)}
.lp-tag{margin-top:auto;padding-top:10px;text-transform:uppercase;letter-spacing:.12em;
  font-size:10px;font-weight:700;color:var(--faint)}
.lp-model-sign{display:flex;align-items:center;gap:10px;font:800 22px/1 var(--font-head);color:var(--accent)}
.lp-model-sign i{font-style:normal;color:var(--faint);font-size:17px}

/* Кроки: номер несе порядок, тому він великий і сам по собі. */
.lp-steps{list-style:none;margin:26px 0 0;padding:0;display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 34px}
.lp-steps li{display:flex;gap:16px;align-items:flex-start;
  border-top:1px solid var(--ink-line);padding-top:16px}
.lp-step-no{font:800 15px/1 var(--font-head);color:var(--accent-light);flex:none;padding-top:2px}
.lp-steps strong{display:block;font-size:16px;margin-bottom:5px}
.lp-steps p{margin:0;color:var(--ink-dim);font-size:14px;line-height:1.55}
.lp-scenario ul{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:9px}
.lp-scenario li{font-size:14px;padding-left:18px;position:relative}
.lp-scenario li:before{content:"—";position:absolute;left:0;color:var(--accent-light)}

.lp-cta{text-align:center;padding:clamp(44px,5vw,80px) 20px}
.lp-cta h2{margin:12px auto 22px;max-width:22ch}
.lp-cta .button-row{justify-content:center}
.lp-foot{background:var(--nav);color:var(--nav-dim);padding:clamp(26px,3vw,44px) clamp(18px,4vw,64px);
  display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.lp-foot p{margin:0;font-size:14px;color:var(--nav-text)}
.lp-foot small{font-size:11px;letter-spacing:.1em;text-transform:uppercase}

@media(max-width:960px){
  .lp-hero{grid-template-columns:1fr}
  .lp-grid-3,.lp-grid-2,.lp-steps{grid-template-columns:1fr}
  .lp-nav{display:none}
}

/* ═══ Кабінет постачальника ════════════════════════════════════════════════ */
.term-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.term-day{background:var(--panel-2);border-radius:10px;padding:12px 10px;text-align:center}
.term-day span{display:block;font-size:11px;color:var(--muted);text-transform:lowercase}
.term-day strong{display:block;font-size:20px;margin-top:4px;letter-spacing:-.02em}
.term-nets{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.term-nets span{background:var(--panel-2);border-radius:999px;padding:6px 12px;font-size:12px;
  display:inline-flex;gap:7px;align-items:center}
.term-nets b{color:var(--accent-ink)}
.term-pick{display:flex;flex-wrap:wrap;gap:8px}
.term-chk{display:inline-flex;align-items:center;gap:6px;background:var(--panel-2);border:1px solid var(--line);
  border-radius:999px;padding:7px 12px;font-size:13px;font-weight:500;color:var(--text);cursor:pointer}
.term-chk input{accent-color:var(--accent)}
.term-tag{display:inline-block;background:var(--accent-soft);color:var(--accent-ink);border-radius:999px;
  padding:3px 9px;font-size:11px;font-weight:650;margin:0 4px 4px 0}
/* День поза графіком мережі — не оформлення, а попередження. */
.term-tag-bad{background:var(--bad-soft);color:var(--bad)}
.term-warn{color:var(--bad);font-size:11px}
.table-terms{table-layout:fixed;width:100%}
.table-terms th,.table-terms td{white-space:normal;overflow-wrap:anywhere;vertical-align:top}
.table-terms td:nth-child(1),.table-terms th:nth-child(1){width:13%}
.table-terms td:nth-child(2),.table-terms th:nth-child(2){width:22%}
.table-terms td:nth-child(3),.table-terms th:nth-child(3){width:26%}
.table-terms td:nth-child(4),.table-terms th:nth-child(4){width:11%}
.table-terms td:nth-child(5),.table-terms th:nth-child(5){width:10%}
.table-terms td:nth-child(6),.table-terms th:nth-child(6){width:8%}
.table-terms td:nth-child(7),.table-terms th:nth-child(7){width:10%}
.table-terms td:last-child{position:static;box-shadow:none}
.table-terms .btn-ghost{padding:6px 8px;font-size:12px;white-space:nowrap;margin-bottom:4px}
@media(max-width:900px){.term-days{grid-template-columns:repeat(4,1fr)}}

/* ═══ Водій на маршруті ════════════════════════════════════════════════════
   Екран для кабіни: кнопки великі, бо натискають однією рукою і не дивлячись. */
.dl-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px}
.dl-btn{min-height:56px;font-size:14px;font-weight:650}
.dl-btn:hover{border-color:var(--accent);color:var(--accent-ink)}
.table-acts{table-layout:fixed;width:100%}
.table-acts th,.table-acts td{white-space:normal;overflow-wrap:anywhere;vertical-align:top}
.table-acts td:nth-child(1),.table-acts th:nth-child(1){width:14%}
.table-acts td:nth-child(2),.table-acts th:nth-child(2){width:10%}
.table-acts td:nth-child(3),.table-acts th:nth-child(3){width:16%}
.table-acts td:nth-child(4),.table-acts th:nth-child(4){width:18%}
.table-acts td:nth-child(5),.table-acts th:nth-child(5){width:11%}
.table-acts td:nth-child(6),.table-acts th:nth-child(6){width:17%}
.table-acts td:nth-child(7),.table-acts th:nth-child(7){width:14%}
.table-acts td:last-child{position:static;box-shadow:none}
.table-acts .btn-ghost{padding:6px 8px;font-size:12px;white-space:nowrap;margin-bottom:4px}
@media(max-width:760px){.dl-actions{grid-template-columns:repeat(2,1fr)}}

/* ═══ Маршрути постачальника ═══════════════════════════════════════════════
   Порядок правиться кнопками, а не перетягуванням: працюють часто з ноутбука
   в дорозі, де перетягування радше злить. */
.rt-stops{display:flex;flex-direction:column;margin-top:14px}
.rt-stop{display:grid;grid-template-columns:34px 1fr auto auto;gap:12px;align-items:center;
  padding:11px 0;border-bottom:1px solid var(--line-soft)}
.rt-stop:last-child{border-bottom:0}
.rt-no{width:28px;height:28px;border-radius:9px;background:var(--panel-2);color:var(--accent-ink);
  display:grid;place-items:center;font:700 12px/1 var(--font-head)}
.rt-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.rt-body strong{font-size:14px}
.rt-body span{font-size:12px}
.rt-vol{font-size:12px;color:var(--muted);white-space:nowrap}
.rt-ctl{display:flex;gap:4px}
.rt-ctl .btn-ghost{padding:5px 9px;min-width:32px}
/* Точка, чий день не входить у графік мережі: везти туди нікуди. */
.rt-stop-bad{background:var(--bad-soft);border-radius:10px;padding-left:8px;padding-right:8px}
.rt-add{display:flex;gap:10px;align-items:flex-end;margin-top:14px;padding-top:14px;
  border-top:1px solid var(--line)}
.rt-add label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:650;
  color:var(--muted);flex:1;min-width:0}
.rt-add select{border:1px solid var(--line);border-radius:9px;padding:10px;background:var(--panel);
  color:var(--text);width:100%}
@media(max-width:760px){.rt-stop{grid-template-columns:28px 1fr;row-gap:6px}
  .rt-vol,.rt-ctl{grid-column:2}}

/* ═══ Завантаження точок ═══════════════════════════════════════════════════ */
.ld-days{display:flex;flex-wrap:wrap;gap:6px}
.ld-day{display:inline-flex;align-items:baseline;gap:5px;background:var(--panel-2);border-radius:8px;
  padding:5px 9px;font-size:11px;color:var(--muted)}
.ld-day b{font-size:13px;color:var(--text)}
.ld-day i{font-style:normal;font-size:10px;opacity:.75}
/* Точка не встигне прийняти всіх — це не попередження, а зупинка планування. */
.ld-day-bad{background:var(--bad-soft);color:var(--bad)}
.ld-day-bad b{color:var(--bad)}
.ld-row-bad td:first-child{box-shadow:inset 3px 0 0 var(--bad)}
.table-load{table-layout:fixed;width:100%}
.table-load th,.table-load td{white-space:normal;overflow-wrap:anywhere;vertical-align:top}
.table-load td:nth-child(1),.table-load th:nth-child(1){width:18%}
.table-load td:nth-child(2),.table-load th:nth-child(2){width:16%}
.table-load td:nth-child(3),.table-load th:nth-child(3){width:15%}
.table-load td:nth-child(4),.table-load th:nth-child(4){width:39%}
.table-load td:nth-child(5),.table-load th:nth-child(5){width:12%}
.table-load td:last-child{position:static;box-shadow:none}
.act-photo{cursor:pointer;display:inline-flex;align-items:center}

/* ═══ Згорнутий рейс ══════════════════════════════════════════════════════
   У згорнутому вигляді лишається рядок, якого досить, щоб знайти потрібний
   рейс серед двох десятків. Кнопок тут немає навмисно: клік у summary
   перемикає згортання, і «Завантажити» спрацьовувало б випадково. */
.run-card{padding:0}
.run-card>*:not(summary){padding:0 20px}
.run-card>summary+*{padding-top:16px}
.run-card>*:last-child{padding-bottom:20px}
.run-sum{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding:16px 20px;cursor:pointer;list-style:none;border-radius:15px}
.run-sum::-webkit-details-marker{display:none}
.run-sum:before{content:"▸";color:var(--accent);margin-right:10px;font-size:13px}
.run-card[open]>.run-sum:before{content:"▾"}
.run-card[open]>.run-sum{border-bottom:1px solid var(--line);border-radius:15px 15px 0 0}
.run-sum:hover{background:var(--panel-2)}
.run-sum-main{font-size:15px;display:flex;align-items:center;gap:9px}
.run-sum-facts{color:var(--muted);font-size:13px;margin-left:auto}
@media(max-width:760px){.run-sum-facts{margin-left:0;width:100%}}

/* ═══ Щільність робочого інструмента ══════════════════════════════════════
   Згорнута панель дії («Сформувати за графіком оператора») — це рядок, який
   чекає натискання, а не картка з вмістом. У згорнутому стані вона займала
   125 px висоти на один напис; тепер 44. Розгорнута поводиться як звичайна
   панель, бо тоді в ній справді є що показувати. */
details.form-details.panel{padding:0}
details.form-details.panel>summary{padding:11px 15px;cursor:pointer;display:flex;align-items:center;
  gap:9px;border-radius:12px}
details.form-details.panel>summary:hover{background:var(--panel-2)}
details.form-details.panel>summary h2{margin:0;font-size:13.5px}
details.form-details.panel>summary:before{content:"▸";color:var(--accent);font-size:12px}
details.form-details.panel[open]>summary{border-bottom:1px solid var(--line);border-radius:12px 12px 0 0}
details.form-details.panel[open]>summary:before{content:"▾"}
details.form-details.panel>*:not(summary){padding:0 15px}
details.form-details.panel>summary+*{padding-top:13px}
details.form-details.panel>*:last-child{padding-bottom:15px}

/* Смуга фільтрів — службовий ряд, а не окремий екран. */
.filter-bar{padding:12px 15px}
.filter-bar label{font-size:11.5px}
.filter-actions{gap:7px}

/* Заголовок картки в списку: та сама роль, що й у панелі. */
.pool-head h3,.request-card h3,.incident-card h3{font-size:15px}

/* ═══ Прострочені подачі ═══════════════════════════════════════════════════
   Тривога має бути в одному рядку, а не в стіні тексту: сорок номерів із
   однаковим хвостом у дужках не дають ні порахувати, ні знайти потрібне. */
.od-alert{padding:11px 14px}
.od-top{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.od-top span{font-weight:400;opacity:.85}
.od-details{margin-top:9px}
.od-details>summary{cursor:pointer;font-size:12px;font-weight:650;list-style:none;
  display:inline-flex;align-items:center;gap:6px}
.od-details>summary::-webkit-details-marker{display:none}
.od-details>summary:before{content:"▸"}
.od-details[open]>summary:before{content:"▾"}
.od-group{margin-top:10px;padding-top:9px;border-top:1px solid rgba(171,47,36,.22)}
.od-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;font-size:12.5px}
.od-head span{opacity:.85}
.od-head b{margin-left:auto}
/* Номери — сітка однакових комірок: так їх видно як список, а не як абзац. */
.od-nums{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.od-nums span{background:var(--panel);border:1px solid rgba(171,47,36,.28);border-radius:6px;
  padding:2px 7px;font:600 11.5px/1.6 var(--font-mono);color:var(--bad)}

/* ═══ Карта шляху ══════════════════════════════════════════════════════════
   Крок показує число і дію. Поточний виділений акцентом — щоб погляд одразу
   падав туди, де людина зупинилась, а не на початок списку. */
.st-steps{display:flex;flex-direction:column;gap:2px}
.st-step{display:grid;grid-template-columns:30px 1fr auto;gap:13px;align-items:center;
  padding:11px 10px;border-radius:10px;border:1px solid transparent}
.st-step+.st-step{border-top:1px solid var(--line-soft);border-radius:0}
.st-no{width:26px;height:26px;border-radius:8px;background:var(--panel-2);color:var(--muted);
  display:grid;place-items:center;font:700 12px/1 var(--font-head)}
.st-done .st-no{background:var(--ok-soft);color:var(--ok)}
.st-current{background:var(--accent-soft);border-color:var(--accent);border-radius:10px}
.st-current+.st-step{border-top-color:transparent}
.st-current .st-no{background:var(--accent);color:var(--on-accent)}
.st-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.st-body strong{font-size:14px}
.st-body span{font-size:12px}
.st-state{color:var(--accent-ink);font-weight:650}
.st-done .st-state{color:var(--ok)}
/* Попередження на кроці — не прикраса: саме через це «побудували, а половина
   точок зникла». */
.st-warn{color:var(--bad);font-size:11.5px}
/* Підсумковий рядок таблиці — читається як межа, а не як ще один запис. */
.row-total td{border-top:2px solid var(--line);background:var(--panel-2)}
/* Пачка подачі — те, що затягнули одного дня. Межа групи читається одразу,
   бо саме змішування двох пачок і давало відмову «дедлайн минув». */
.pack-group{border:1px solid var(--line);border-radius:10px;margin-bottom:12px;overflow:hidden}
.pack-group table{margin:0}
.pack-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:9px 12px;background:var(--panel-2);border-bottom:1px solid var(--line)}
.pack-pick{display:flex;align-items:center;gap:8px;cursor:pointer}
.pack-late{border-color:var(--bad);opacity:.85}
.pack-late .pack-head{background:var(--bad-soft)}
/* Черга «чекає на вас» — те, через що рух зупинився саме на цій стороні. */
.queue-box{border-left:4px solid var(--accent)}
.queue-hot{border-left-color:var(--bad)}
.queue-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px;margin-top:10px}
.queue-item{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:9px;
  background:var(--panel-2);color:var(--text)}
.queue-item:hover{background:var(--accent-soft)}
.queue-item-hot{background:var(--bad-soft)}
.queue-n{font-family:var(--font-head);font-size:20px;font-weight:800;color:var(--accent-ink);min-width:32px}
.queue-item-hot .queue-n{color:var(--bad)}
.queue-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.queue-body strong{font-size:13px}
.queue-body span{font-size:11.5px}
.cell-hot{color:var(--bad);font-weight:600}
/* Хронологія рейсу: де ми в процесі і що тиснути зараз. Головна дія одна
   й велика; службові кнопки прибрані у «Ще», щоб «Розформувати» не стояло
   поруч із найчастішою дією дня. */
.run-flow{background:var(--panel-2);border-radius:10px;padding:11px 13px;margin:0 0 10px}
.flow-strip{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.flow-step{display:inline-flex;align-items:center;gap:6px}
.flow-step b{display:inline-flex;align-items:center;justify-content:center;width:19px;height:19px;
  border-radius:50%;background:var(--panel);color:var(--faint);font-size:11px}
.flow-done{color:var(--ok)}
.flow-done b{background:var(--ok-soft);color:var(--ok)}
.flow-now{color:var(--accent-ink);font-weight:700}
.flow-now b{background:var(--accent);color:var(--on-accent)}
.flow-arrow{color:var(--faint)}
.flow-act{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px}
.btn-lg{padding:10px 18px;font-size:14px}
.btn-secondary-row{gap:6px}
.run-more{display:inline-block}
.run-more summary{cursor:pointer;color:var(--muted);font-size:12px;padding:6px 10px}
/* Прострочене НЕ закреслюємо і не блокуємо: вантаж лежить на складі, його
   треба вивезти. Позначаємо як таке, що потребує уваги. */
.row-overdue{background:var(--bad-soft)}
.tag-overdue{display:inline-block;margin-top:2px;padding:1px 6px;border-radius:5px;
  background:var(--bad);color:#fff;font-size:11px;font-weight:600}
/* Кнопка-дія поруч із попередженням — веде прямо на форму конкретного
   запису, не просто на розділ (наказ власника 03.09: «людина не згадувала
   де це потрібно зробити, а одразу тиць»). */
.st-warn-fix{color:var(--bad);font-weight:650;text-decoration:underline;white-space:nowrap}
.st-warn-fix:hover{color:var(--accent-ink)}
.st-cycles{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.st-cycle{display:flex;flex-direction:column;gap:7px;background:var(--panel-2);border-radius:10px;
  padding:12px;color:var(--text)}
.st-cycle:hover{background:var(--accent-soft)}
.st-no-soft{background:var(--panel);color:var(--accent-ink)}
@media(max-width:1100px){.st-cycles{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.st-step{grid-template-columns:26px 1fr;row-gap:8px}
  .st-step .btn{grid-column:2}.st-cycles{grid-template-columns:1fr}}

/* Компактні кнопки в останній колонці таблиць: дія другорядна, рядок —
   головний. Повний розмір лишається кнопкам поза таблицями. */
.table-wrap td:last-child .btn{padding:3px 8px;font-size:11px;border-radius:6px;min-height:0}
.table-wrap td:last-child{gap:3px;padding:5px 8px}
.table-wrap td .btn-ghost{background:var(--panel-2);border-color:transparent}
.table-wrap td .btn-ghost:hover{border-color:var(--accent);background:var(--accent-soft)}
/* Багаторядкові клітинки (адреса + підпис) не мусять розтягувати рядок. */
.table-wrap td{line-height:1.35}

/* Ширина під дві компактні кнопки в ряд (заміряно: кнопка ~70 px + gap). */
.table-wrap td:last-child{min-width:196px}
.table-wrap th:last-child{min-width:196px}
/* Мітка документа: моноширинна, щоб «ВН» і «ТТН» стояли рівним рядком. */
.doc-btn{font:700 10px/1.5 var(--font-mono);letter-spacing:.03em;padding:3px 7px}

/* ═══ Робочий стіл дня ═══════════════════════════════════════════════════
   Щоденний ланцюг (замовлення → подача → рейс → водій) жив на чотирьох
   сторінках, і людина ходила між ними через меню, щоразу перевантажуючи
   екран. Тут він в одному вікні з вкладками — але головне не вкладки, а
   те, що стіл ТРИМАЄТЬСЯ В МЕЖАХ ЕКРАНА: скролиться лише робоча область,
   а смуга стану й перемикачі завжди на місці. Інакше вийшла б та сама
   простиня, тільки без меню. */
.content.content-desk{height:calc(100vh - 58px);max-width:none;padding:9px 14px 10px;
  display:flex;flex-direction:column;gap:7px;overflow:hidden}
.desk{flex:1;min-height:0;display:flex;flex-direction:column;gap:7px}

/* Смуга ланцюга. Це не лічильники — це кнопки: сегмент веде у вкладку,
   вже відфільтровану на свій стан. Стрілки між ними показують напрям
   руху вантажу, тому смуга читається як конвеєр, а не як панель цифр. */
.desk-chain{display:flex;align-items:stretch;gap:0;flex:none}
.dch{flex:1 1 0;min-width:0;display:flex;align-items:center;gap:9px;
  background:var(--panel);border:1px solid var(--line);border-right:0;
  padding:7px 11px 7px 13px;cursor:pointer;text-align:left;color:var(--text);
  font:inherit;position:relative}
.dch:first-child{border-radius:10px 0 0 10px}
.dch:last-child{border-right:1px solid var(--line);border-radius:0 10px 10px 0}
.dch:not(:last-child):after{content:"";position:absolute;right:-7px;top:50%;z-index:2;
  width:12px;height:12px;transform:translateY(-50%) rotate(45deg);
  border-top:1px solid var(--line);border-right:1px solid var(--line);
  background:var(--panel)}
.dch:hover{background:var(--panel-2)}
.dch:hover:not(:last-child):after{background:var(--panel-2)}
.dch b{font-size:21px;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums;flex:none}
.dch-t{display:flex;flex-direction:column;min-width:0;gap:1px}
.dch-t span{font-size:12px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dch-t i{font-style:normal;font-size:10.5px;color:var(--muted);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
/* Порожня ділянка ланцюга не повинна кричати — вона просто порожня. */
.dch-zero b,.dch-zero .dch-t span{color:var(--faint)}
/* Тут стоїть ВАША дія. Підсвічуємо один сегмент, не всі: екран із чотирьох
   акцентів не має акценту. */
.dch-mine{background:var(--accent-soft);border-color:var(--accent);z-index:1}
.dch-mine:after{background:var(--accent-soft);border-color:var(--accent)}
.dch-mine b{color:var(--accent-ink)}
.dch-mine .dch-t i{color:var(--accent-ink);font-weight:650}
.dch-alert{background:var(--warn-soft);border-color:var(--warn)}
.dch-alert:after{background:var(--warn-soft);border-color:var(--warn)}
.dch-alert b,.dch-alert .dch-t i{color:var(--warn)}
.dch-on{box-shadow:inset 0 -3px 0 var(--accent)}

/* Вкладки. Перемикання не міняє адресу й не перерендерює смугу — міняється
   лише робоча область, тому стіл не «блимає» цілком. */
.desk-tabs{display:flex;align-items:center;gap:6px;flex:none;min-height:34px}
.dtab{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:9px;
  border:1px solid var(--line);background:var(--panel);cursor:pointer;font:inherit;
  font-size:12.5px;font-weight:650;color:var(--text);white-space:nowrap}
.dtab:hover{border-color:var(--accent)}
.dtab-on{background:var(--accent);border-color:var(--accent);color:var(--on-accent);
  box-shadow:0 3px 12px rgba(212,98,42,.28)}
.dtab .dtab-n{font-size:11px;font-weight:800;padding:1px 6px;border-radius:99px;
  background:var(--accent-soft);color:var(--accent-ink);font-variant-numeric:tabular-nums}
.dtab-on .dtab-n{background:rgba(255,255,255,.22);color:var(--on-accent)}
.dtab-ico{opacity:.8}
.desk-ctx{margin-left:auto;display:flex;align-items:center;gap:8px;
  font-size:11.5px;color:var(--muted);white-space:nowrap}

/* Робоча область: єдине, що тут скролиться. Негативні поля з'їдають власні
   відступи вкладеної сторінки, щоб таблиця починалась одразу під вкладками. */
.desk-body{flex:1;min-height:0;overflow:auto;padding:1px 2px 6px;scrollbar-width:thin}
.desk-body>.panel:first-child,.desk-body>form:first-child{margin-top:0}
/* Кнопки, що жили в шапці сторінки, у вбудованому режимі стають окремою
   смужкою — губити їх не можна, а повний заголовок тут зайвий. */
.desk-actions{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 8px}
.desk-actions:empty{display:none}
/* На столі таблиці мають власну висоту — сторінка вже не росте вниз. */
.content-desk .table-wrap{max-height:none}

@media(max-width:1100px){
  .dch b{font-size:18px}
  .dch-t i{display:none}
}
@media(max-width:760px){
  .content.content-desk{height:auto;overflow:visible;padding:12px 12px 90px}
  .desk-body{overflow:visible}
  .desk-chain{flex-wrap:wrap;gap:6px}
  .dch{flex:1 1 45%;border-right:1px solid var(--line);border-radius:10px}
  .dch:after{display:none}
  .desk-tabs{flex-wrap:wrap}
}

/* Фільтр на столі. Виміряно на живому екрані: у звичайному вигляді панель
   із чотирьох полів займала 131px — п'яту частину робочої висоти, тобто
   два-три рядки таблиці, віддані за підписи. На окремій сторінці це
   дрібниця, бо там ще є куди прокрутити; на столі прокручувати нікуди,
   і кожен піксель шапки — це рядок, якого людина не бачить. */
.filter-bar{display:flex;flex-wrap:wrap;align-items:flex-end;
  gap:7px;margin-bottom:7px;padding:7px 9px}
.filter-bar label{flex:1 1 130px;min-width:0;gap:2px;font-size:10px;
  text-transform:uppercase;letter-spacing:.05em}
.filter-bar input,.filter-bar select{padding:5px 8px;
  border-radius:7px;font-size:12.5px}
.filter-bar .filter-actions{display:flex;gap:6px;align-items:center;flex:none}
.filter-bar .btn{padding:5px 11px}
/* Шапка таблиці лишається на місці, коли всередині гортають: без неї на
   двадцятому рядку вже не видно, де яка колонка. */
.table-wrap thead th{position:sticky;top:0;z-index:3}

/* Смуга, яка не змогла дізнатись стан дня. Показувати тут нулі не можна:
   чотири нулі поспіль читаються як «роботи немає», і замовлення, що
   стоїть, лишиться непоміченим. */
.desk-chain-err{align-items:center;gap:10px;background:var(--warn-soft);
  border:1px solid var(--warn);border-radius:10px;padding:7px 11px}
.dch-err{display:flex;align-items:center;gap:9px;flex:1;min-width:0}
.dch-err b{font-size:19px;color:var(--warn);width:26px;height:26px;flex:none;
  display:grid;place-items:center;border:2px solid var(--warn);border-radius:50%}
.dch-err .dch-t span{color:var(--warn)}

/* Шухляда форм на столі. Виміряно: на «Замовленнях» пʼять згорнутих форм
   займали 250px над таблицею - чверть робочої висоти на дії, потрібні раз
   на день. Тут закрита форма - кнопка в рядку, відкрита - панель під ним. */
.desk-drawer{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-start;margin:0 0 7px}
.desk-drawer>details.form-details{margin:0;flex:0 0 auto;padding:0;border-radius:8px;
  box-shadow:none}
.desk-drawer>details.form-details>summary{padding:5px 11px;font-size:12px;font-weight:650;
  border-radius:8px;display:flex;align-items:center;gap:6px;white-space:nowrap}
.desk-drawer>details.form-details>summary:hover{background:var(--panel-2)}
.desk-drawer>details.form-details>summary h2{font-size:12px;margin:0;font-weight:650;
  letter-spacing:0}
.desk-drawer>details.form-details>summary:before{content:"+";color:var(--accent);
  font-weight:800;font-size:14px;line-height:1}
/* Відкрита форма переходить під рядок кнопок і займає всю ширину - її
   заголовок лишається їй за шапку, а «+» стає «−». */
.desk-drawer>details.form-details[open]{flex-basis:100%;order:99;padding:10px 12px;
  box-shadow:var(--shadow)}
.desk-drawer>details.form-details[open]>summary{padding:0 0 8px;font-size:13px}
.desk-drawer>details.form-details[open]>summary:before{content:"−"}
.desk-drawer>details.form-details[open]>summary:hover{background:none}
/* Кнопки-перемикачі з шапки сторінки на столі дублюють шухляду - ховаємо
   лише їх; справжні дії, якщо такі є в шапці, лишаються. */
.desk-actions [data-toggle]{display:none}
.desk-actions:not(:has(:not([data-toggle]))){display:none}
.dch-quiet{cursor:default;border-right:1px solid var(--line)!important;border-radius:10px!important}
.dch-quiet:after{display:none}
.dch-quiet b,.dch-quiet .dch-t span{color:var(--faint)}
/* Форма всередині шухляди: поля в один ряд, кнопка поруч. Два поля
   з підписами і кнопка в окремому рядку - 180px; ті самі два поля в
   ряд із кнопкою - 70px. Форма від цього не стає менш зрозумілою. */
.desk-drawer>details.form-details[open] .form-grid{display:flex;flex-wrap:wrap;
  align-items:flex-end;gap:8px;margin-bottom:0}
.desk-drawer>details.form-details[open] .form-grid>label{flex:1 1 170px;min-width:0;
  gap:3px;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em}
.desk-drawer>details.form-details[open] .form-grid>label>textarea{min-height:64px}
.desk-drawer>details.form-details[open] .form-grid>label:has(textarea){flex-basis:100%}
.desk-drawer>details.form-details[open] .form-grid input,
.desk-drawer>details.form-details[open] .form-grid select{padding:6px 8px}
.desk-drawer>details.form-details[open] .form-actions{grid-column:auto;flex:none;
  justify-content:flex-start}
.desk-drawer>details.form-details[open] .form-grid>[style*="grid-column"],
.desk-drawer>details.form-details[open] .form-grid>.alert{flex-basis:100%}
/* Картки рейсів на столі. Заголовок картки з полями 16/20 і шрифтом 15
   давав 68px на рейс - шість рейсів на екран. Ті самі дані з полями 8/14
   вміщаються в 44px: девʼять-десять рейсів, і кожен так само читається. */
.run-card{border-radius:10px;margin-bottom:6px}
.run-sum{padding:8px 14px;gap:10px;border-radius:10px}
.run-sum-main{font-size:13.5px;gap:8px}
.run-sum-facts{font-size:12px}
.run-card>*:not(summary){padding:0 14px}
.run-card>summary+*{padding-top:10px}
.run-card>*:last-child{padding-bottom:12px}
.run-card[open]>.run-sum{border-radius:10px 10px 0 0}

/* Шапка сторінки. Виміряно по 22 сторінках: заголовок 21px і абзац опису
   на два рядки давали 66-84px на КОЖНІЙ - ще до фільтра й даних. Опис
   потрібен, коли сторінку відкривають уперше; щодня його не читають.
   Лишаємо один рядок, повний текст - у підказці при наведенні. */
.page-head{margin-bottom:8px;align-items:center;gap:12px}
.page-head h1{font-size:17px;margin:0 0 1px}
.page-head p{font-size:12px;line-height:1.35;max-width:none;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.page-head>div:first-child{min-width:0;flex:1}
.page-head .eyebrow{display:none}
/* На звичайній сторінці кнопки-перемикачі живуть у шапці, а не в
   desk-actions; коли під шапкою стоїть шухляда, вони її дублюють. */
.page-head:has(+ .desk-drawer) .button-row [data-toggle]{display:none}

/* ═══ Екран водія за посиланням ═══════════════════════════════════════════
   Телефон, одна рука, сонце на екрані, рукавиці. Тому: один стовпець,
   кнопки заввишки з великий палець, контраст без напівтонів, жодних
   таблиць. Кольори ті самі, що в системі, - водій бачить ту саму платформу,
   просто її найпростіший кут. */
.dl{max-width:520px;margin:0 auto;padding:12px 12px 40px;display:flex;flex-direction:column;gap:10px;
  min-height:100vh;background:var(--canvas);color:var(--text)}
.dl-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 2px}
.dl-head>div:first-child{display:flex;flex-direction:column;min-width:0}
.dl-head strong{font-size:15px;letter-spacing:-.01em}
.dl-head span{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dl-progress{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:none}
.dl-progress b{font-size:14px;font-variant-numeric:tabular-nums}
.dl-progress i{display:block;width:86px;height:6px;border-radius:99px;background:var(--line-soft);position:relative;overflow:hidden}
.dl-progress i:after{content:"";position:absolute;inset:0;width:var(--p,0%);background:var(--ok);border-radius:99px}
.dl-eyebrow{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700}
.dl-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:9px}
.dl-card input{border:1px solid var(--line);border-radius:10px;padding:13px 12px;font-size:16px;background:var(--panel);color:var(--text);width:100%}
.dl-card input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.dl-who{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.dl-dead{margin-top:20vh;text-align:center;color:var(--muted)}
.dl-dead strong{color:var(--bad);font-size:16px}
.dl-queued{background:var(--warn-soft);color:var(--warn);border-radius:10px;padding:9px 12px;font-size:13px;font-weight:650}
.dl-stop{background:var(--ink);color:var(--ink-text);border-radius:18px;padding:18px 18px 16px;display:flex;flex-direction:column;gap:4px;box-shadow:var(--shadow)}
.dl-stop .dl-eyebrow{color:var(--accent-light)}
.dl-stop h2{font-size:26px;margin:2px 0 0;line-height:1.15;letter-spacing:-.02em}
.dl-stop p{margin:0;color:var(--ink-dim);font-size:15px;line-height:1.35}
.dl-stop small{color:var(--ink-dim);font-size:12.5px;margin-top:6px}
.dl-stop.dl-done{background:var(--ok);color:#fff}.dl-stop.dl-done p,.dl-stop.dl-done .dl-eyebrow{color:rgba(255,255,255,.85)}
.dl-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.dl-btn{border:1px solid var(--line);border-radius:14px;background:var(--panel);min-height:84px;box-shadow:var(--shadow);
  display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;font-weight:750;font-size:17px;
  color:var(--text);cursor:pointer;font-family:inherit;width:100%;-webkit-tap-highlight-color:transparent}
.dl-btn span{font-size:22px;line-height:1}
.dl-btn:active{transform:scale(.98)}
.dl-btn:disabled{opacity:.45}
.dl-btn-go{background:var(--ok);border-color:var(--ok);color:#fff}
.dl-btn-warn{background:var(--warn-soft);border-color:var(--warn);color:var(--warn);min-height:60px;flex-direction:row;gap:10px}
.dl-btn-warn span{width:26px;height:26px;border:2px solid var(--warn);border-radius:50%;display:grid;place-items:center;font-size:16px}
.dl-problem summary{list-style:none}.dl-problem summary::-webkit-details-marker{display:none}
.dl-problem-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.dl-sub{border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:14px;font-size:15px;font-weight:650;
  text-align:left;color:var(--text);cursor:pointer;font-family:inherit;width:100%}
.dl-sub:active{background:var(--panel-2)}
.dl-locked{opacity:.5}
.dl-list{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.dl-row{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:10px;width:100%;text-align:left;
  border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:10px 12px;color:var(--text);cursor:pointer;font-family:inherit}
.dl-row b{width:28px;height:28px;border-radius:8px;background:var(--accent-soft);color:var(--accent-ink);display:grid;place-items:center;font-size:13px}
.dl-row span{display:flex;flex-direction:column;min-width:0}
.dl-row strong{font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dl-row small{color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dl-row i{font-style:normal;font-size:12px;color:var(--muted);white-space:nowrap}
.dl-row-done{opacity:.55}.dl-row-done b{background:var(--ok-soft);color:var(--ok)}
.dl-row-wrap{display:flex;align-items:stretch;gap:6px}
.dl-row-wrap .dl-row{flex:1;min-width:0;width:auto}
.dl-nav{flex:none;width:44px;display:grid;place-items:center;border:1px solid var(--line);background:var(--panel);
  border-radius:12px;color:var(--accent-ink);text-decoration:none;font-size:18px}
.dl-nav:active{background:var(--panel-2)}
.dl-nav-btn{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:12px;padding:12px;
  border-radius:12px;border:1px solid var(--accent);background:var(--accent-soft);color:var(--accent-ink);
  font-weight:650;font-size:14.5px;text-decoration:none}
.dl-nav-btn:active{opacity:.8}
.dl-nav-btn span{font-size:17px}
.dl-nav-btn em{font-style:normal;font-weight:500;font-size:12px;opacity:.75;margin-left:2px}
.dl-nav-btn em:before{content:"· "}
.dl-link{background:none;border:0;padding:0;color:var(--muted);font:inherit;font-size:12px;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.dl-sheet{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.45);display:flex;align-items:flex-end;justify-content:center}
.dl-sheet-card{width:100%;max-width:520px;background:var(--panel);border-radius:18px 18px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom));
  display:flex;flex-direction:column;gap:8px;box-shadow:0 -12px 40px rgba(0,0,0,.25)}
.dl-sheet-card strong{font-size:16px}.dl-sheet-card small{color:var(--muted);font-size:12.5px;margin-bottom:6px}
.dl-sheet-card .dl-sub.is-cur{border-color:var(--accent);background:var(--accent-soft)}
.dl-remember{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);margin:4px 2px}
.dl-remember input{width:18px;height:18px}
.dl-sheet-card .btn{margin-top:4px}
.dl-note{display:flex;gap:10px;font-size:13px;padding:6px 2px;border-bottom:1px solid var(--line-soft)}
.dl-note i{font-style:normal;color:var(--muted);flex:none;font-variant-numeric:tabular-nums}
.dl-foot{display:flex;justify-content:space-between;align-items:center;margin-top:14px;font-size:12px}
@media(prefers-color-scheme:dark){.dl-stop{background:var(--panel-2)}}

/* Панель «Посилання для водія» у кабінеті */
dialog.dlink{border:0;border-radius:14px;padding:0;max-width:640px;width:calc(100% - 32px);box-shadow:0 24px 80px rgba(0,0,0,.3);background:var(--panel);color:var(--text)}
dialog.dlink::backdrop{background:rgba(20,19,18,.45)}
.dlink-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line)}
.dlink-body{display:grid;grid-template-columns:230px 1fr;gap:18px;padding:16px}
.dlink-qr{background:#fff;border:1px solid var(--line);border-radius:10px;padding:6px;display:grid;place-items:center}
.dlink-qr svg{width:100%;height:auto}
.dlink-info{display:flex;flex-direction:column;gap:10px}
.dlink-info p{margin:0;font-size:13px;color:var(--muted)}
.dlink-url{border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:12.5px ui-monospace,monospace;width:100%;background:var(--panel-2);color:var(--text)}
@media(max-width:600px){.dlink-body{grid-template-columns:1fr}}
.dl-failed{background:var(--bad-soft);color:var(--bad);border-radius:10px;padding:10px 12px;font-size:13px;display:flex;flex-direction:column;gap:5px}
.dl-failed span{color:var(--text);font-size:12.5px}
.dl-failed .btn{align-self:flex-start;margin-top:4px}

/* ═══ Демо-вітрина: рекламні блоки ═══════════════════════════════════════
   Темна картка з акцентом - та сама мова, що в лендингу і в картці «наступна
   точка» у водія: одразу видно, що це не робоча панель, а пояснення. Живе
   лише для гостя; в робочих кабінетах її не існує. */
.dp{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;background:var(--ink);
  color:var(--ink-text);border-radius:14px;padding:14px 18px;margin:0 0 10px;box-shadow:var(--shadow)}
.dp-body{display:flex;flex-direction:column;gap:4px;min-width:0}
.dp-eyebrow{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-light);font-weight:700}
.dp h3{margin:1px 0 0;font-size:16px;letter-spacing:-.01em;line-height:1.25}
.dp p{margin:2px 0 0;color:var(--ink-dim);font-size:13px;line-height:1.45;max-width:78ch}
.dp-gos{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.dp-go{color:var(--ink-text);background:var(--ink-2);border:1px solid var(--ink-line);border-radius:8px;
  padding:5px 11px;font-size:12.5px;font-weight:650;text-decoration:none}
.dp-go:hover{border-color:var(--accent)}
.dp-toggle{flex:none;background:none;border:1px solid var(--ink-line);color:var(--ink-dim);border-radius:8px;
  padding:5px 10px;font:inherit;font-size:12px;cursor:pointer}
.dp-toggle:hover{color:var(--ink-text);border-color:var(--ink-dim)}
.dp-min{padding:7px 14px;align-items:center;gap:12px;justify-content:flex-start}
.dp-min strong{font-size:13px}
.dp-min .dp-toggle{margin-left:auto}
.dp-closed{background:var(--panel);border:1px dashed var(--line);border-radius:12px;padding:22px;
  text-align:center;color:var(--muted);font-size:13px}
.empty-demo{min-height:120px}
.content-desk .dp{margin-bottom:7px;padding:10px 16px}
.content-desk .dp p{font-size:12.5px}

/* ═══ Прохід «щоб було красиво» (скріншоти чистого гостя) ═══════════════ */
/* Стіл живе в межах екрана - рекламний блок на ньому має бути одним
   рядком, а не третиною висоти: заголовок і суть поруч, без кнопок. */
.content-desk .dp{padding:8px 16px;align-items:center;gap:14px}
.content-desk .dp-body{flex-direction:row;align-items:baseline;gap:12px;min-width:0}
.content-desk .dp-eyebrow{flex:none}
.content-desk .dp h3{font-size:14px;flex:none}
.content-desk .dp p{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:none;margin:0}
.content-desk .dp-gos{display:none}
/* Кнопки документів у розгорнутому рейсі: п'ять великих у два ряди
   виглядали як панель керування; тут це другорядні дії - робимо їх
   дрібнішими, щоб стали в один ряд і не сперечались зі смугою кроків. */
.btn-secondary-row{gap:6px}
.btn-secondary-row .btn{padding:5px 10px;font-size:12px;font-weight:600;border-radius:7px}
.btn-secondary-row .btn-primary{font-weight:650}
/* Причина відмови під бейджем - переноситься, а не вилазить за клітинку. */
.table-wrap td .reject-reason{display:block;white-space:normal;max-width:300px;line-height:1.3;font-size:12px;margin-top:2px}
/* На столі кожен піксель ширини - це колонка, яку не ховає липка колонка
   документів: паддінги клітинок трохи вужчі. */
.content-desk .table-wrap td,.content-desk .table-wrap th{padding-left:5px;padding-right:5px}
@media(max-width:760px){
  /* На телефоні рекламний блок - один рядок із заголовком; суть відкриється
     на десктопі, а тут кожен піксель потрібен даним. */
  .dp p,.dp-gos{display:none}
  .dp{padding:9px 14px;align-items:center}
  .dp h3{font-size:14px}
  .desk-ctx span{display:none}
  .filter-bar .btn{white-space:nowrap}
  .filter-bar .filter-actions{flex-basis:100%;justify-content:flex-start}
}
/* «Статус» і «Де зараз» - фрази ланцюга, а не коди: переносяться в межах
   колонки замість того, щоб розпирати таблицю до 1670px і ховатись під
   липкою колонкою документів. */
.table-wrap td.cell-status{white-space:normal;max-width:190px;line-height:1.3}
/* Одна дія одним рядком: «→ подати на міні-РЦ». Де лежить і хто чекає -
   у підказці при наведенні; в таблиці на 77 рядків це не читають. */
/* Стан і наступна дія - в одній клітинці двома рядками: бейдж і під ним
   «→ подати на міні-РЦ». Окрема колонка «Де зараз» разом із десятьма
   іншими не вміщалась у 1440px і ховалась під липкою колонкою документів. */
.table-wrap td.cell-status{white-space:nowrap;max-width:none;line-height:1.25}
.stage-next{display:block;color:var(--accent-ink);font-weight:650;font-size:11.5px;margin-top:2px}
.stage-next.stage-hot{color:var(--bad)}
/* Довгі підписи (адреса, назва міні-РЦ) на столі обрізаються трьома
   крапками - повна адреса є в картці точки, а ширина тут дорожча. */
.content-desk .table-wrap td .muted:not(.reject-reason){display:block;max-width:210px;overflow:hidden;text-overflow:ellipsis}
@media(max-width:760px){
  /* Нижнє меню ширше за екран - скролиться всередині себе, а не тягне
     за собою сторінку. */
  html,body{overflow-x:hidden}
  .dp .dp-eyebrow{display:none}
  .dp h3{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
  .dp-body{min-width:0;flex:1}
}
/* Останні 78px: назва міні-РЦ і адреса на столі - з обрізанням, повний
   текст у підказці. Після цього таблиця замовлень уміщається в 1440px без
   горизонтального скролу, і липка колонка документів нічого не накриває. */
.content-desk .table-wrap td.cell-clip{max-width:118px;overflow:hidden;text-overflow:ellipsis}
.content-desk .table-wrap td .muted:not(.reject-reason){max-width:186px}

/* ═══ Постійний перевізник ═══════════════════════════════════════════════ */
.rt-carrier{border:1px dashed var(--line);border-radius:10px;padding:8px 12px;margin:0 0 10px}
.rt-carrier-on{border-style:solid;border-color:var(--ok);background:var(--ok-soft)}
.rt-carrier summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.rt-carrier summary::-webkit-details-marker{display:none}
.rt-carrier-mark{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:12px;
  background:var(--panel);border:1px solid var(--line);color:var(--muted)}
.rt-carrier-on .rt-carrier-mark{background:var(--ok);border-color:var(--ok);color:#fff}
.rt-carrier summary strong{font-size:13px}.rt-carrier summary .muted{font-size:12px}
.rt-carrier-form{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-top:10px}
.rt-carrier-form label{display:flex;flex-direction:column;gap:3px;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;
  font-weight:650;color:var(--muted);flex:1 1 150px;min-width:0}
.rt-carrier-form input,.rt-carrier-form select{border:1px solid var(--line);border-radius:7px;padding:6px 8px;background:var(--panel);color:var(--text);font-size:13px}
.rt-carrier-actions{display:flex;gap:6px;flex:none}
.fit{color:var(--muted);font-size:11.5px}.fit-known{color:var(--ok)}.fit-new{color:var(--warn)}
.wd-picks{display:inline-flex;gap:4px;margin-left:8px;vertical-align:middle}
.wd-pick{display:inline-flex;align-items:center;gap:3px;border:1px solid var(--line);border-radius:6px;padding:2px 7px;font-size:12px;
  font-weight:600;cursor:pointer;text-transform:none;letter-spacing:0}
.wd-pick input{margin:0}
.dl-approach{margin-top:10px;padding:9px 11px;border-radius:10px;background:rgba(255,255,255,.07);border:1px solid var(--ink-line)}
.dl-approach .dl-eyebrow{color:var(--accent-light)}
.dl-approach p{margin:3px 0 0;font-size:13.5px;color:var(--ink-text);line-height:1.35}
.table-wrap td.cell-wrap{white-space:normal;min-width:220px;max-width:340px}
.hr-carrier summary{list-style:none;cursor:pointer;line-height:1.3}
.hr-carrier summary::-webkit-details-marker{display:none}
.hr-carrier-edit{font-size:11px;color:var(--accent-ink);font-weight:650;margin-left:6px;white-space:nowrap}
.hr-carrier[open] summary .hr-carrier-edit{display:none}
.hr-carrier .rt-carrier-form{margin-top:8px}
.hr-carrier .rt-carrier-form label{flex:1 1 120px}

/* Телефон: нижнє меню кабінету без логотипа й виходу - дорога назад має
   бути в шапці. Поза телефоном вихід є в бічній панелі. */
.top-exit{display:none;border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:8px;padding:6px 10px;
  font:inherit;font-size:12.5px;font-weight:650;cursor:pointer;white-space:nowrap;margin-left:auto}
@media(max-width:760px){
  .top-exit{display:inline-flex}
  .topbar{gap:10px}
  .topbar>div:first-child{min-width:0}
  .topbar strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}
.login-back{display:inline-flex;align-self:flex-start;color:var(--muted);font-size:13px;font-weight:650;margin-bottom:-6px}
.login-back:hover{color:var(--accent-ink)}

/* Індикатор завантаження: тонка смужка під шапкою замість спінера на весь
   екран. Стара сторінка лишається на місці, поки вантажиться нова, - меню
   й таблиці не мигають, і жоден стан екрана не губиться посередині. */
#app.is-loading .topbar{position:relative}
#app.is-loading .topbar:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;
  background:linear-gradient(90deg,var(--accent-soft),var(--accent),var(--accent-soft));background-size:200% 100%;
  animation:rl-load .9s linear infinite;z-index:11}
#app.is-loading .content{opacity:.6;pointer-events:none;transition:opacity .15s}
@keyframes rl-load{from{background-position:200% 0}to{background-position:-200% 0}}
@media(prefers-reduced-motion:reduce){#app.is-loading .topbar:after{animation:none}}

/* Плашка «є нова версія»: внизу, не заважає, зникне сама після перезавантаження. */
.build-stale{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:98;background:var(--text);color:var(--panel);
  border-radius:10px;padding:9px 14px;font-size:13px;display:flex;align-items:center;gap:12px;box-shadow:0 12px 40px rgba(0,0,0,.25);max-width:calc(100% - 24px)}
.build-stale button{background:var(--accent);color:var(--on-accent);border:0;border-radius:7px;padding:6px 11px;font:inherit;font-weight:650;cursor:pointer;white-space:nowrap}
@media(max-width:760px){.build-stale{bottom:78px}}

/* ── Юридичні сторінки (публічні) ── */
.legal{max-width:800px;margin:0 auto;padding:28px 20px 60px;font-size:15px;line-height:1.6;color:var(--text)}
.legal h1{font-size:26px;margin:14px 0 6px;letter-spacing:-.01em}.legal h2{font-size:17px;margin:26px 0 8px}
.legal p{margin:0 0 10px}.legal ul{margin:0 0 12px 18px;padding:0}.legal li{margin:0 0 6px}
.legal-meta{color:var(--muted);font-size:13px}.legal-nav{display:flex;gap:16px;flex-wrap:wrap;font-size:14px;margin-bottom:8px}
.legal-nav a{color:var(--muted);text-decoration:none}.legal-nav a.is-on{color:var(--text);font-weight:650}
.legal-todo{background:#fff3cd;color:#7a4b00;border-radius:6px;padding:1px 6px;font-size:13px}
.legal-foot{margin-top:36px;color:var(--muted);font-size:13px}
.login-legal{font-size:12px;color:var(--muted);margin-top:10px}.login-legal a{color:inherit}
.consent{display:flex;gap:8px;align-items:flex-start;font-size:13px;font-weight:400!important;line-height:1.35}.consent input{margin-top:3px}

/* ── Екран точки «приймання дня» (публічний, за QR) ── */
.sl{max-width:560px;margin:0 auto;padding:14px 14px 40px;font-size:15px}
.sl-head{display:flex;flex-direction:column;gap:2px;margin-bottom:12px}.sl-head b{font-size:19px}.sl-head span{color:var(--muted);font-size:13px}
.sl-day{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 12px}.sl-day b{font-size:16px}
.sl-day button{min-width:44px;height:40px;border-radius:10px;border:1px solid var(--border);background:var(--panel);font-size:18px;cursor:pointer}
.sl-day button:disabled{opacity:.35;cursor:default}
.sl-sum{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}.sl-sum div{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:10px 12px}
.sl-sum b{display:block;font-size:22px;line-height:1.1}.sl-sum span{font-size:12px;color:var(--muted)}
.sl-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin-bottom:10px;display:flex;flex-direction:column;gap:6px}
.sl-card.is-done{opacity:.6}.sl-card.is-blocked{background:var(--canvas);color:var(--muted)}
.sl-row{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.sl-row b{font-size:16px}.sl-time{font-family:ui-monospace,Menlo,monospace;font-size:14px}
.sl-meta{font-size:13px;color:var(--muted)}
.sl-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:4px}
.sl-btn{height:48px;border-radius:10px;border:1px solid var(--border);background:var(--panel);font:600 15px/1 inherit;cursor:pointer}
.sl-btn.is-go{background:#1f6f43;color:#fff;border-color:#1f6f43}.sl-btn.is-warn{background:transparent;color:#b45309;border-color:#f0c27b;grid-column:1/-1;height:40px;font-weight:500}
.sl-btn:disabled{opacity:.5;cursor:default}
.sl-state{font-size:13px;font-weight:650}.sl-state.arrived{color:#b45309}.sl-state.done{color:#1f6f43}.sl-state.missed{color:#b91c1c}
.sl-pending{background:var(--canvas);border:1px dashed var(--border);border-radius:12px;padding:10px 14px;font-size:13px;color:var(--muted);margin-bottom:10px}
.sl-foot{margin-top:14px;font-size:12px;color:var(--muted);display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
.sl-dead{padding:30px 16px;text-align:center;color:var(--muted)}

/* ── «Де посилка зараз» ── */
dialog.track{max-width:720px}
.tr-body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:14px}
.tr-eyebrow{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700}
.tr-now{background:var(--ink);color:var(--ink-text);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.tr-now .tr-eyebrow{color:var(--accent-light)}.tr-now b{font-size:17px}.tr-now small{color:var(--ink-dim);font-size:12.5px}
.tr-now.is-alert{background:var(--warn);color:#1a1200}.tr-now.is-alert .tr-eyebrow,.tr-now.is-alert small{color:rgba(0,0,0,.6)}
.tr-route{display:flex;align-items:stretch;gap:6px}
.tr-node{flex:1;min-width:0;border:1px solid var(--line);border-radius:10px;padding:9px 10px;display:flex;flex-direction:column;gap:1px;background:var(--panel)}
.tr-node.is-past{opacity:.6}.tr-node.is-here{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 3px var(--accent-soft)}
.tr-node-k{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700}
.tr-node b{font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tr-node small{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tr-arrow{align-self:center;color:var(--muted);font-style:normal;flex:none}
.tr-stages{list-style:none;margin:0;padding:0 0 0 6px;display:flex;flex-direction:column}
.tr-st{display:grid;grid-template-columns:18px 1fr auto;gap:10px;align-items:start;padding:7px 0;position:relative}
.tr-st:not(:last-child):after{content:"";position:absolute;left:8px;top:22px;bottom:-6px;border-left:2px solid var(--line-soft)}
.tr-st i{width:14px;height:14px;border-radius:50%;border:2px solid var(--line);background:var(--panel);margin-top:3px;position:relative;z-index:1}
.tr-done i{background:var(--ok);border-color:var(--ok)}.tr-current i{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
.tr-pending,.tr-skipped{color:var(--muted)}.tr-skipped{text-decoration:line-through}
.tr-st b{font-size:13.5px;font-weight:600}.tr-current b{color:var(--accent-ink)}.tr-st small{display:block;font-size:12px;color:var(--muted)}
.tr-st time{font-size:12px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.tr-st time em{font-style:normal;color:var(--faint)}
.tr-st time em:before{content:"≈ "}
.tr-trouble b{color:var(--warn)}
.tr-trouble i{background:var(--warn);border-color:var(--warn)}
.tr-trouble.tr-current i{box-shadow:0 0 0 4px var(--warn-soft)}
/* Шлях посилки на власній сторінці: та сама верстка, але без рамки діалогу. */
.track-panel{padding:0}
.track-panel .dlink-head{border-radius:12px 12px 0 0}
.track-panel .tr-body{padding:14px 16px 16px}
tr.row-alert td{background:var(--warn-soft)}.tr-current time{color:var(--accent-ink);font-weight:650}
.tr-events{display:flex;flex-direction:column;gap:4px;border-top:1px solid var(--line-soft);padding-top:10px}
.tr-ev{display:flex;gap:10px;font-size:12.5px}.tr-ev time{color:var(--muted);flex:none;font-variant-numeric:tabular-nums}
.tr-docs{display:flex;gap:6px;flex-wrap:wrap;border-top:1px solid var(--line-soft);padding-top:10px}
@media(max-width:640px){.tr-route{flex-direction:column}.tr-arrow{transform:rotate(90deg);align-self:flex-start;margin-left:10px}}
/* Supplier-owned addresses and unresolved imports. */
.address-inbox { border-top: 3px solid #b42318; margin: 16px 0; padding: 12px 0; }
.address-inbox h2 { font-size: 18px; }
.address-inbox td { vertical-align: top; white-space: normal; overflow-wrap: anywhere; }
.address-inbox .btn { display: block; margin-top: 8px; }
.address-dialog { width: min(620px, calc(100% - 32px)); max-height: 90vh; overflow: auto; border: 1px solid #aaa; border-radius: 6px; padding: 20px; }
.address-dialog::backdrop { background: #0006; }
.address-dialog h2 { font-size: 20px; }
.address-dialog label { display: block; margin: 12px 0; }
.address-dialog input:not([type=checkbox]), .address-dialog select, .address-dialog textarea { width: 100%; box-sizing: border-box; }
.address-dialog p { overflow-wrap: anywhere; }
.address-error { color: #b42318; }
.order-actions { margin: 16px 0; padding: 16px 0; border-block: 1px solid var(--line); }
.order-actions h2 { font-size: 18px; }
.order-action-filters, .order-action-toolbar { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; margin: 12px 0; }
.order-action-filters label { display: grid; gap: 4px; }
.order-action-table { max-height: 380px; overflow: auto; }
.order-action-table td { white-space: normal; overflow-wrap: anywhere; }
.order-action-table tr[hidden] { display: none; }
.order-action-dialog ul { max-height: 240px; overflow: auto; padding-left: 20px; }
.order-workspace { padding: 0; border: 0; margin-top: 12px; }
body:has(.order-workspace) { overflow-x: clip; overflow-y: visible; }
.order-command-bar { position: sticky; top: 58px; z-index: 8; background: var(--panel); border-block: 1px solid var(--line); padding: 12px; }
.desk-body .order-command-bar { top: 0; }
.order-command-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
.order-command-head h2 { margin: 0; font-size: 18px; letter-spacing: 0; }
.order-command-head strong { font-size: 14px; }
.order-tabs { display: flex; gap: 4px; margin: 10px 0; overflow-x: auto; }
.order-tabs button { border: 0; border-bottom: 3px solid transparent; border-radius: 0; background: transparent; color: var(--text); padding: 10px 12px; min-height: 44px; font: inherit; font-weight: 600; white-space: nowrap; cursor: pointer; }
.order-tabs button[aria-selected=true] { border-color: var(--accent); color: var(--accent-ink); }
.order-command-groups { display: flex; gap: 12px 20px; flex-wrap: wrap; align-items: end; }
.order-group-label { display: block; font-size: 11px; color: var(--muted); margin-bottom: 5px; }
.order-button-group { display: flex; flex-wrap: wrap; gap: 6px; }
.order-command-bar .btn, .order-command-bar select { min-height: 44px; font-size: 14px; border-radius: 6px; }
.order-command-bar select { max-width: 240px; padding: 8px; border: 1px solid var(--line); background: var(--panel); color: var(--text); }
.order-search { display: flex; align-items: center; gap: 12px; margin-top: 12px; font-size: 12px; color: var(--muted); }
.order-search input { min-height: 40px; flex: 1; min-width: 0; padding: 8px 12px; border: 1px solid var(--line); border-radius: 4px; background: var(--panel); color: var(--text); }
.order-workspace .order-action-table { max-height: 65vh; margin-top: 0; border-bottom: 1px solid var(--line); }
.order-workspace .order-action-table table { min-width: 950px; width: 100%; }
.order-workspace .order-action-table td:last-child { position: static; display: table-cell; box-shadow: none; max-width: 220px; }
.order-workspace .order-action-table td:nth-child(2) { white-space: nowrap; }
.order-workspace .order-action-table td:nth-child(3) { min-width: 260px; max-width: 430px; }
.order-workspace .order-action-table .badge { white-space: normal; }
.order-workspace input[type=checkbox] { width: 20px; height: 20px; }
.order-workspace [hidden] { display: none !important; }
.order-command-bar [data-order-tabpanel] { max-height: 40vh; overflow: auto; padding-bottom: 2px; }
.order-command-bar .panel { box-shadow: none; border: 0; border-radius: 0; padding: 0; background: transparent; }
.order-input-dialog { width: min(950px, calc(100% - 24px)); }
.order-input-dialog > .btn { float: right; }
.order-input-dialog > details { clear: both; border: 0; box-shadow: none; padding: 12px 0 0; }
.order-input-dialog > details > summary { pointer-events: none; }
.order-input-dialog .alert-info { display: none; }
.order-import-report { margin-top: 10px; font-size: 13px; }
.order-stages { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 12px; border-bottom: 1px solid var(--line); }
.order-stages button { min-height: 44px; padding: 8px 10px; background: transparent; color: var(--text); border: 0; border-bottom: 3px solid transparent; font: inherit; font-size: 14px; cursor: pointer; }
.order-stages button[aria-selected=true] { border-bottom-color: var(--accent); color: var(--accent-ink); font-weight: 700; }
.order-stages span { font-size: 12px; color: var(--muted); margin-left: 4px; }
.order-utilities button { font-size: 12px; min-height: 36px; padding: 6px 8px; }
.order-number { border: 0; background: transparent; color: var(--accent-ink); font: inherit; font-weight: 700; padding: 8px 0; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.order-command-groups { align-items: center; }
.order-corrections { position: relative; }
.order-tools { margin-top: 8px; font-size: 12px; }
.order-tools > summary { cursor: pointer; padding: 8px 0; }
.order-scope { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; margin-top: 10px; }
.order-scope label { display: flex; align-items: center; gap: 8px; font-size: 12px; }
.order-corrections summary { min-height: 44px; padding: 12px; cursor: pointer; border: 1px solid var(--line); border-radius: 6px; font-size: 14px; }
.order-correction-menu, .order-detail-actions { display: flex; flex-wrap: wrap; gap: 8px; padding-block: 10px; }
.order-correction-menu { flex-direction: column; position: absolute; top: 100%; right: 0; min-width: 260px; max-width: calc(100vw - 48px); padding: 10px; background: var(--panel); border: 1px solid var(--line); box-shadow: 0 4px 12px #0002; z-index: 12; }
.order-command-bar [data-order-tabpanel=actions] { max-height: none; overflow: visible; }
@media (max-width: 760px) {
  .order-stages button { font-size: 12px; padding: 6px; }
  .order-stages { flex-wrap: nowrap; overflow-x: auto; }
  .order-stages button { flex: 0 0 auto; }
  .order-corrections { grid-column: 1 / -1; }
  .order-detail-actions { flex-direction: column; }
}
@media (max-width: 760px) {
  .order-command-bar { padding: 8px; }
  .order-command-head strong { font-size: 12px; }
  .order-tabs { gap: 0; }
  .order-tabs button { font-size: 12px; padding: 8px; }
  .order-command-groups { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 6px; }
  .order-command-groups > div, .order-command-groups .order-button-group { display: contents; }
  .order-command-groups .order-group-label { display: none; }
  .order-command-bar .btn, .order-command-bar select { width: 100%; max-width: none; font-size: 12px; min-width: 0; padding: 8px 5px; }
  .order-search { display: block; }
  .order-search input { display: block; width: 100%; margin-top: 4px; }
  .order-input-dialog .form-grid { grid-template-columns: 1fr; }
}
#pack-orders td:nth-child(3) { white-space: normal; overflow-wrap: anywhere; min-width: 170px; }
#pack-orders .badge-red { white-space: normal; }
#pack-orders tr:has([data-pending="true"]) { background: #fff1f0; }
.address-inbox .table-wrap table { min-width: 780px; }
.address-inbox .table-wrap td:last-child { display: table-cell; position: static; box-shadow: none; }
.address-inbox .table-wrap td:nth-child(3) { white-space: nowrap; min-width: 90px; }
.address-inbox .table-wrap td:last-child .badge { white-space: normal; max-width: 220px; }
.address-dialog form input:not([type=checkbox]), .address-dialog form select, .address-dialog form textarea { border: 1px solid #aaa; border-radius: 4px; padding: 8px; font: inherit; }
@media (max-width: 600px) {
  .content:has(.address-inbox) .page-head { align-items: stretch; }
  .content:has(.address-inbox) .page-head > div { max-width: 100%; }
  .content:has(.address-inbox) .page-head h1 { white-space: normal; overflow-wrap: anywhere; letter-spacing: 0; }
  .address-inbox .table-wrap table { min-width: 0; width: 100%; }
  .address-inbox .table-wrap thead { display: none; }
  .address-inbox .table-wrap tr { display: block; border-bottom: 1px solid var(--line); padding: 8px 0; }
  .address-inbox .table-wrap td, .address-inbox .table-wrap td:last-child { display: block; min-width: 0; max-width: none; width: auto; border: 0; }
  .address-inbox .table-wrap td:nth-child(3)::before { content: "Місць / кг: "; }
}
