/* KC-TMS — "Consignment desk" visual system
   Display: Barlow Condensed (road-sign lettering) · Body: IBM Plex Sans · Numbers: IBM Plex Mono
   Signature: every document number is printed as a docket tag with a perforated edge. */
:root{--navy:#17324D;--amber:#E8A317;--ink:#16202A;--ink2:#4A5560;--mute:#7C868F;--paper:#F4F5F2;--card:#FFFFFF;--line:#DADCD5;--line2:#ECEDE8;
--ok:#2F7D5B;--ok-bg:#E4F2EA;--warn:#A86A0B;--warn-bg:#FBF0DA;--bad:#B23A2C;--bad-bg:#F8E3E0;--info:#2F5E8C;--info-bg:#E4EDF6;
--r:6px;--fd:'Barlow Condensed',Impact,'Arial Narrow',sans-serif;--fb:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;--fm:'IBM Plex Mono',ui-monospace,Consolas,monospace}
*{box-sizing:border-box}html,body{margin:0}body{font:14px/1.5 var(--fb);color:var(--ink);background:var(--paper);display:flex;min-height:100vh}
a{color:var(--navy)}h1,h2,h3,h4{font-family:var(--fd);letter-spacing:.01em;margin:0;font-weight:600}
.ic{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
/* sidebar */
.side{width:238px;background:var(--navy);color:#C9D3DC;position:fixed;inset:0 auto 0 0;overflow-y:auto;z-index:20;scrollbar-width:thin}
.brand{display:flex;gap:10px;align-items:center;padding:18px 16px 14px;color:#fff;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.08)}
.brand .mark{font-family:var(--fd);font-weight:700;font-size:20px;background:var(--amber);color:var(--navy);width:38px;height:38px;display:grid;place-items:center;border-radius:4px}
.brand b{font-family:var(--fd);font-size:20px;letter-spacing:.04em;display:block;line-height:1}.brand small{font-size:11px;opacity:.7}
.nav-grp{padding:10px 8px 2px}.nav-grp h6{font:600 11px var(--fd);letter-spacing:.14em;text-transform:uppercase;color:#7F93A6;margin:6px 10px}
.nav-grp a{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:4px;color:#D4DCE3;text-decoration:none;font-size:13.5px;position:relative}
.nav-grp a:hover{background:rgba(255,255,255,.06);color:#fff}.nav-grp a.on{background:rgba(232,163,23,.14);color:#fff}
.nav-grp a.on::before{content:"";position:absolute;left:-8px;top:6px;bottom:6px;width:3px;background:var(--amber);border-radius:0 2px 2px 0}
.nav-grp a em{margin-left:auto;font:600 11px var(--fm);background:var(--amber);color:var(--navy);border-radius:9px;padding:0 6px;font-style:normal}
.main{margin-left:238px;flex:1;min-width:0;display:flex;flex-direction:column}
.top{height:58px;display:flex;align-items:center;gap:14px;padding:0 24px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
.burger{display:none;background:none;border:0;font-size:20px;cursor:pointer}
.gsearch{flex:1;max-width:460px;display:flex;align-items:center;gap:8px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:0 10px;color:var(--mute)}
.gsearch input{border:0;background:none;height:36px;flex:1;font:inherit;outline:0}
.top-r{margin-left:auto;display:flex;align-items:center;gap:8px}.who{text-align:right;line-height:1.2;margin:0 6px}.who small{display:block;color:var(--mute);font-size:12px}
.tbtn{position:relative;width:36px;height:36px;display:grid;place-items:center;border-radius:var(--r);color:var(--ink2)}.tbtn:hover{background:var(--paper)}
.tbtn em{position:absolute;top:3px;right:2px;background:var(--bad);color:#fff;font:600 10px var(--fm);border-radius:8px;padding:0 4px;font-style:normal}
.page{padding:22px 26px 60px;max-width:1500px;width:100%}
.crumb{font-size:12px;color:var(--mute);margin-bottom:4px}.crumb a{color:var(--mute)}.crumb span{margin:0 4px}
.ph{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:18px}.ph h1{font-size:30px;line-height:1.1;font-weight:700;color:var(--navy)}
.ph-act{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
/* buttons */
.btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;border-radius:var(--r);border:1px solid var(--navy);background:var(--navy);color:#fff;font:500 13.5px var(--fb);text-decoration:none;cursor:pointer;white-space:nowrap}
.btn:hover{filter:brightness(1.12)}.btn.ghost{background:transparent;color:var(--navy);border-color:var(--line)}.btn.ghost:hover{background:var(--card);border-color:var(--navy)}
.btn.amber{background:var(--amber);border-color:var(--amber);color:var(--navy);font-weight:600}.btn.danger{background:var(--card);color:var(--bad);border-color:#E6B8B1}
.btn.ok{background:var(--ok);border-color:var(--ok)}.btn.sm{height:28px;padding:0 10px;font-size:12.5px}.btn[disabled]{opacity:.5;pointer-events:none}
form.inline{display:inline}
/* flash */
.flash{padding:10px 40px 10px 14px;border-radius:var(--r);margin-bottom:12px;position:relative;border-left:4px solid}
.flash button{position:absolute;right:8px;top:6px;border:0;background:none;font-size:18px;cursor:pointer;color:inherit}
.flash-success{background:var(--ok-bg);border-color:var(--ok);color:#1E5A40}.flash-error{background:var(--bad-bg);border-color:var(--bad);color:#7F2419}
.flash-warn{background:var(--warn-bg);border-color:var(--amber);color:#6E4608}.flash-info{background:var(--info-bg);border-color:var(--info);color:#1E4166}
/* cards & grid */
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;margin-bottom:18px;min-width:0}
.card>header{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line2)}.card>header h3{font-size:18px;color:var(--navy)}
.card>header>*:last-child:not(h3){margin-left:auto}.card-b{padding:14px 16px}.card-b.flush{padding:0}
.grid{display:grid;gap:18px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g-side{grid-template-columns:minmax(0,2fr) minmax(300px,1fr)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:18px}
.stat-a{text-decoration:none;color:inherit}.stat{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:12px 14px;height:100%;position:relative;overflow:hidden}
.stat small{display:block;color:var(--ink2);font-size:12.5px}.stat b{display:block;font:600 26px var(--fd);color:var(--navy);margin-top:2px;letter-spacing:.02em}
.stat span{font-size:12px;color:var(--mute)}.stat.alert{border-color:#E9C27A;background:linear-gradient(0deg,var(--warn-bg),#fff 70%)}.stat.bad b{color:var(--bad)}
/* tables */
.tbl-wrap{overflow-x:auto}.tbl{width:100%;border-collapse:collapse;font-size:13.3px}
.tbl th{font:600 12px var(--fd);letter-spacing:.08em;text-transform:uppercase;color:var(--ink2);text-align:left;padding:9px 10px;border-bottom:2px solid var(--line);background:#FAFAF8;white-space:nowrap;position:sticky;top:0}
.tbl td{padding:8px 10px;border-bottom:1px solid var(--line2);vertical-align:top}.tbl tr:hover td{background:#FBFBF7}
.tbl .r,.r{text-align:right}.tbl .num,.num{font-family:var(--fm);font-size:12.5px;text-align:right;white-space:nowrap}.tbl .c{text-align:center}
.empty-row{padding:26px;text-align:center;color:var(--mute)}.muted{color:var(--mute)}
.pager{display:flex;gap:8px;align-items:center;padding:10px 12px;font-size:12.5px;color:var(--mute)}.pager span{margin-right:auto}
/* signature: docket tag */
.tagno{font:500 12.5px var(--fm);display:inline-block;padding:2px 8px 2px 12px;background:#FFF8E6;border:1px solid #EACB86;border-radius:3px;color:#5A3D05;position:relative;white-space:nowrap;letter-spacing:.02em}
.tagno::before{content:"";position:absolute;left:3px;top:3px;bottom:3px;width:3px;background:radial-gradient(circle,#EACB86 1.2px,transparent 1.4px) 0 0/3px 4px repeat-y}
a.tagno-a{text-decoration:none}a.tagno-a:hover .tagno{background:var(--amber);color:var(--navy);border-color:var(--amber)}
.tagno.big{font-size:18px;padding:5px 14px 5px 18px}.tagno.big::before{left:5px;width:4px}
/* badges */
.bdg{display:inline-block;font:600 11.5px var(--fb);padding:1px 8px;border-radius:10px;background:var(--line2);color:var(--ink2);white-space:nowrap}
.bdg.ok{background:var(--ok-bg);color:var(--ok)}.bdg.bad{background:var(--bad-bg);color:var(--bad)}.bdg.warn{background:var(--warn-bg);color:var(--warn)}.bdg.info{background:var(--info-bg);color:var(--info)}
/* forms */
.form{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px 16px}.form .wide{grid-column:1/-1}.form .w2{grid-column:span 2}
.fld{display:flex;flex-direction:column;gap:4px;min-width:0}.fld>span{font-size:12.5px;font-weight:500;color:var(--ink2)}.fld small{color:var(--mute);font-size:11.5px}
.fld.req>span::after{content:" *";color:var(--bad)}
input,select,textarea{font:inherit;color:var(--ink);background:#fff;border:1px solid #C9CCC3;border-radius:5px;padding:7px 9px;min-height:34px;width:100%}
input:focus,select:focus,textarea:focus{border-color:var(--navy);outline:2px solid rgba(23,50,77,.12)}input[readonly]{background:#F6F6F2}
input[type=checkbox],input[type=radio]{width:auto;min-height:0;accent-color:var(--navy)}input[type=file]{padding:5px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row>input,.row>select{width:auto;flex:1 1 140px}
.form-foot{display:flex;gap:10px;justify-content:flex-end;padding-top:14px;margin-top:6px;border-top:1px dashed var(--line)}
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:10px}
.filters input,.filters select{width:auto;min-width:130px;flex:0 1 180px}
.fieldset{border:1px solid var(--line2);border-radius:8px;padding:12px 14px 14px;margin-bottom:14px}.fieldset legend{font:600 14px var(--fd);letter-spacing:.08em;text-transform:uppercase;color:var(--navy);padding:0 6px}
.chk{display:flex;gap:8px;align-items:center;font-size:13.5px;padding:3px 0}
.kv{display:grid;grid-template-columns:150px 1fr;gap:6px 12px;font-size:13.5px}.kv dt{color:var(--mute)}.kv dd{margin:0}
.totals{font-family:var(--fm);font-size:13px;min-width:260px}.totals div{display:flex;justify-content:space-between;padding:3px 0}.totals .gt{border-top:2px solid var(--ink);margin-top:4px;padding-top:6px;font-weight:600;font-size:15px}
/* journey strip */
.journey{list-style:none;display:flex;padding:6px 0 2px;margin:0 0 6px;counter-reset:s}
.journey li{flex:1;position:relative;text-align:center;font-size:12px;color:var(--mute)}
.journey li i{display:block;width:14px;height:14px;border-radius:50%;border:2px solid #C4C8C0;background:#fff;margin:0 auto 6px;position:relative;z-index:1}
.journey li::before{content:"";position:absolute;top:6px;left:-50%;right:50%;height:2px;background:#D6D9D1}.journey li:first-child::before{display:none}
.journey li.done i{background:var(--navy);border-color:var(--navy)}.journey li.done::before,.journey li.now::before{background:var(--navy)}
.journey li.now i{background:var(--amber);border-color:var(--amber);box-shadow:0 0 0 4px rgba(232,163,23,.25)}.journey li.now{color:var(--ink);font-weight:600}
.journey.cancelled{opacity:.45;filter:grayscale(1)}
/* misc */
.note{border-top:1px solid var(--line2);padding:8px 0;font-size:13px}.note p{margin:4px 0}.note-form textarea{margin-bottom:6px}
.hist{font-size:12.5px;padding:6px 0;border-bottom:1px dashed var(--line2)}.hist span{color:var(--mute);margin-right:6px}.hist code{background:var(--paper);padding:0 4px;border-radius:3px}
.att{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.att a{font-size:12.5px;padding:4px 8px;border:1px solid var(--line);border-radius:4px;text-decoration:none;background:var(--paper)}
.tabs{display:flex;gap:2px;border-bottom:2px solid var(--line);margin-bottom:16px;overflow-x:auto}.tabs a{padding:8px 14px;text-decoration:none;color:var(--ink2);font:600 15px var(--fd);letter-spacing:.05em;text-transform:uppercase;border-bottom:3px solid transparent;margin-bottom:-2px;white-space:nowrap}
.tabs a.on{color:var(--navy);border-color:var(--amber)}
.scanbox{display:flex;gap:10px;align-items:center;background:var(--navy);padding:14px;border-radius:8px;margin-bottom:14px}
.scanbox input{font:500 20px var(--fm);height:48px;letter-spacing:.06em;border:2px solid var(--amber)}.scanbox .btn{height:48px}
.scanlog{font:12.5px var(--fm);max-height:160px;overflow:auto;margin-top:8px}.scanlog div{padding:3px 6px}.scanlog .ok{color:var(--ok)}.scanlog .bad{color:var(--bad)}
.empty{text-align:center;padding:60px 20px;color:var(--ink2)}.empty h2{font-size:28px;color:var(--navy);margin-bottom:6px}
.intg{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.intg .card{margin:0;display:flex;flex-direction:column}.intg .card-b{flex:1;font-size:13px}.intg .meta{font-size:12px;color:var(--mute);margin-top:6px}
.sw{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;background:#C4C8C0}.sw.on{background:var(--ok)}
.mapbox{height:460px;border-radius:8px;border:1px solid var(--line)}
.perm td,.perm th{text-align:center}.perm td:first-child{text-align:left}
.login-wrap{flex:1;display:grid;grid-template-columns:1.1fr 1fr;min-height:100vh}
.login-art{background:var(--navy);color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}
.login-art h2{font:700 56px/0.95 var(--fd);letter-spacing:.01em;max-width:520px}.login-art h2 em{color:var(--amber);font-style:normal}
.login-art .road{position:absolute;left:0;right:0;bottom:120px;height:4px;background:repeating-linear-gradient(90deg,var(--amber) 0 44px,transparent 44px 76px);opacity:.8}
.login-art p{color:#B9C6D2;max-width:460px}
.login-box{display:grid;place-items:center;padding:30px}.login-box form{width:100%;max-width:360px}.login-box h1{font-size:32px;color:var(--navy);margin-bottom:4px}
.login-box .fld{margin-bottom:12px}.login-box .btn{width:100%;justify-content:center;height:42px;font-size:15px}
.print-only{display:none}
@media print{.side,.top,.ph-act,.no-print,.filters,.flash,.note-form{display:none!important}.main{margin:0}.page{padding:0}.card{border:0}.print-only{display:block}body{background:#fff}}
@media(max-width:1100px){.g3,.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.g-side{grid-template-columns:1fr}}
@media(max-width:820px){.side{transform:translateX(-100%);transition:transform .2s}.nav-open .side{transform:none;box-shadow:0 0 0 100vmax rgba(0,0,0,.35)}.main{margin-left:0}.burger{display:block}
.who{display:none}.page{padding:16px}.g2,.g3,.g4{grid-template-columns:1fr}.login-wrap{grid-template-columns:1fr}.login-art{display:none}.kv{grid-template-columns:120px 1fr}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.nw{white-space:nowrap}
