/* E2U Freight portal — self-contained design system (brand: E2U purple / blue / orange) */
:root{
  --brand:#513985; --brand-600:#46307a; --brand-700:#3E2B68; --brand-50:#f3effa; --brand-100:#e6ddf5;
  --blue:#5C9BE3; --blue-50:#eaf2fc; --orange:#F76843; --orange-50:#fff0eb; --amber:#FFBF00;
  --green:#01A368; --green-50:#e5f6ef; --red:#E5484D; --red-50:#fdecec; --info:#0099FF;
  --ink:#1b1830; --ink-2:#4a4760; --ink-3:#77738c; --line:#e6e3ee; --line-2:#f0eef5;
  --bg:#f6f5fa; --panel:#ffffff; --radius:10px; --shadow:0 1px 2px rgba(27,24,48,.06),0 4px 16px rgba(27,24,48,.05);
  --font:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 var(--font);-webkit-font-smoothing:antialiased}
a{color:var(--brand);text-decoration:none} a:hover{text-decoration:underline}
h1,h2,h3{margin:0;font-weight:700;letter-spacing:-.01em} h1{font-size:22px} h2{font-size:17px} h3{font-size:14px}
.muted{color:var(--ink-3)} .small{font-size:12px} .mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
.nowrap{white-space:nowrap} .right{text-align:right} .center{text-align:center} .grow{flex:1} .hide{display:none!important}

/* shell */
.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}
.side{background:linear-gradient(180deg,var(--brand-700),var(--brand) 60%,#5b3f95);color:#fff;position:sticky;top:0;height:100vh;overflow:auto;display:flex;flex-direction:column}
.side .brand{display:flex;gap:10px;align-items:center;padding:16px 16px 12px}
.side .brand img{width:38px;height:38px;border-radius:9px;object-fit:cover;background:#fff}
.side .brand b{font-size:15px;letter-spacing:.02em} .side .brand span{display:block;font-size:10px;opacity:.75;letter-spacing:.08em;text-transform:uppercase}
.side .role{margin:0 12px 8px;padding:6px 10px;border-radius:8px;background:rgba(255,255,255,.1);font-size:11px;text-transform:uppercase;letter-spacing:.08em}
.side nav{padding:4px 8px;flex:1}
.side nav .grp{margin:14px 10px 4px;font-size:10px;letter-spacing:.1em;text-transform:uppercase;opacity:.55}
.side nav a{display:flex;align-items:center;gap:10px;color:#ece7f7;padding:8px 10px;border-radius:8px;font-weight:500;text-decoration:none}
.side nav a:hover{background:rgba(255,255,255,.08)}
.side nav a.on{background:#fff;color:var(--brand-700)}
.side nav a .dot{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.5}
.side .me{padding:12px 16px;border-top:1px solid rgba(255,255,255,.12);font-size:12px}
.side .me a{color:#fff;opacity:.8}
.main{min-width:0;display:flex;flex-direction:column}
.topbar{height:56px;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 20px;position:sticky;top:0;z-index:20}
.topbar .burger{display:none;border:0;background:none;font-size:22px;cursor:pointer;color:var(--ink)}
.topbar .crumb{font-weight:600}
.content{padding:20px;max-width:1440px;width:100%}
.page-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.page-head .actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}

/* panels & grid */
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.panel-h{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line-2)}
.panel-b{padding:14px}
.grid{display:grid;gap:14px} .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))}
.split{display:grid;grid-template-columns:270px minmax(0,1fr);gap:14px;align-items:start}
.split-r{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:14px;align-items:start}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.stack>*+*{margin-top:10px}

/* stat tiles */
.stat{padding:14px;border-radius:var(--radius);background:var(--panel);border:1px solid var(--line)}
.stat .k{font-size:11px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em}
.stat .v{font-size:24px;font-weight:700;margin-top:4px;font-variant-numeric:tabular-nums}
.stat .s{font-size:12px;color:var(--ink-3)}
.stat.accent{border-left:4px solid var(--brand)} .stat.warn{border-left:4px solid var(--orange)} .stat.ok{border-left:4px solid var(--green)}

/* lane search bar (load board header) */
.lanebar{display:grid;grid-template-columns:1.2fr 28px 1.2fr .9fr .9fr .8fr auto;gap:8px;align-items:end;padding:12px 14px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:14px;box-shadow:var(--shadow)}
.lanebar .arrow{align-self:center;text-align:center;color:var(--orange);font-weight:700;font-size:18px;padding-top:18px}

/* forms */
label.f{display:block;font-size:11px;font-weight:600;color:var(--ink-2);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}
.inp,select.inp,textarea.inp{width:100%;height:36px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:#fff;font:inherit;color:var(--ink)}
textarea.inp{height:auto;min-height:80px;padding:8px 10px}
.inp:focus{outline:2px solid var(--brand-100);border-color:var(--brand)}
.field{margin-bottom:12px} .err{color:var(--red);font-size:12px;margin-top:3px}
.check{display:flex;align-items:center;gap:8px;font-size:13px;margin:6px 0}
.check input{width:16px;height:16px;accent-color:var(--brand)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}
.seg button{border:0;background:none;padding:7px 12px;font:inherit;font-weight:600;color:var(--ink-2);cursor:pointer}
.seg button.on{background:var(--brand);color:#fff}
fieldset.box{border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;margin:0 0 12px}
fieldset.box legend{font-weight:700;padding:0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--brand)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 14px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--ink);font:inherit;font-weight:600;cursor:pointer;text-decoration:none;white-space:nowrap}
.btn:hover{text-decoration:none;border-color:#cfc9de}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff} .btn.primary:hover{background:var(--brand-600)}
.btn.hot{background:var(--orange);border-color:var(--orange);color:#fff}
.btn.danger{color:var(--red);border-color:#f3c7c9} .btn.danger.solid{background:var(--red);color:#fff;border-color:var(--red)}
.btn.ghost{border-color:transparent;background:transparent}
.btn.sm{height:28px;padding:0 10px;font-size:12px}
.btn[disabled]{opacity:.5;cursor:not-allowed}

/* tables (load board density) */
.tbl-wrap{overflow:auto}
table.tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
.tbl th{position:sticky;top:0;background:#faf9fd;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:9px 10px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.tbl tr:hover td{background:#fbfaff}
.tbl tr.sel td{background:var(--brand-50)}
.tbl tr.click{cursor:pointer}
.lane{font-weight:600} .lane .to{color:var(--orange);margin:0 4px}
.num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.rate{font-weight:700;color:var(--green)}

/* badges */
.badge{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 8px;border-radius:999px;font-size:11px;font-weight:600;background:var(--line-2);color:var(--ink-2);white-space:nowrap}
.badge.brand{background:var(--brand-50);color:var(--brand)} .badge.blue{background:var(--blue-50);color:#2c6fbd}
.badge.green{background:var(--green-50);color:#017a4e} .badge.orange{background:var(--orange-50);color:#c2431f}
.badge.red{background:var(--red-50);color:#b42328} .badge.amber{background:#fff6d6;color:#8a6500}
.pill-strong{background:var(--green-50);color:#017a4e} .pill-moderate{background:#fff6d6;color:#8a6500} .pill-low{background:var(--red-50);color:#b42328}

/* detail drawer & timeline */
.kv{display:grid;grid-template-columns:140px 1fr;gap:6px 12px;font-size:13px} .kv dt{color:var(--ink-3)} .kv dd{margin:0;font-weight:500}
.timeline{list-style:none;margin:0;padding:0 0 0 14px;border-left:2px solid var(--line)}
.timeline li{position:relative;padding:0 0 12px 10px}
.timeline li:before{content:"";position:absolute;left:-20px;top:3px;width:10px;height:10px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 3px var(--brand-50)}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:12px;overflow:auto}
.tabs a{padding:8px 12px;font-weight:600;color:var(--ink-3);border-bottom:2px solid transparent;text-decoration:none;white-space:nowrap}
.tabs a.on{color:var(--brand);border-color:var(--brand)}

/* truck cards (fleet) */
.trucks{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.truck{padding:14px;border-radius:var(--radius);border:1px solid var(--line);background:#fff}
.meter{height:8px;border-radius:99px;background:var(--line-2);overflow:hidden;margin:4px 0 8px}
.meter>span{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--brand))}
.meter.full>span{background:linear-gradient(90deg,var(--orange),var(--red))}
.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ink-3);margin-right:6px}
.status-dot.on{background:var(--green);box-shadow:0 0 0 3px var(--green-50)}

/* flash / toast / empty */
.flash{padding:10px 14px;border-radius:8px;margin-bottom:12px;font-weight:500}
.flash.ok{background:var(--green-50);color:#017a4e} .flash.bad{background:var(--red-50);color:#b42328} .flash.info{background:var(--blue-50);color:#2c6fbd}
.toast{position:fixed;right:16px;bottom:16px;z-index:60;max-width:360px;padding:12px 14px;border-radius:10px;background:var(--ink);color:#fff;box-shadow:var(--shadow);opacity:0;transform:translateY(8px);transition:.2s}
.toast.show{opacity:1;transform:none} .toast.bad{background:var(--red)}
.empty{padding:40px 16px;text-align:center;color:var(--ink-3)}
.notice{border:1px dashed var(--line);border-radius:8px;padding:10px 12px;font-size:12px;color:var(--ink-3);background:#fcfbfe}

/* auth */
.auth{min-height:100vh;display:grid;place-items:center;background:radial-gradient(1000px 500px at 10% -10%,#6d4fb0 0,transparent 60%),linear-gradient(160deg,var(--brand-700),var(--brand))}
.auth .card{width:min(420px,calc(100vw - 32px));background:#fff;border-radius:16px;padding:28px;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.auth img{width:100%;border-radius:12px;margin-bottom:12px}

/* responsive */
@media (max-width:1100px){.split-r{grid-template-columns:1fr}.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.lanebar{grid-template-columns:1fr 1fr 1fr}.lanebar .arrow{display:none}}
@media (max-width:860px){
  .shell{grid-template-columns:1fr}
  .side{position:fixed;left:0;top:0;bottom:0;width:260px;z-index:50;transform:translateX(-100%);transition:transform .2s}
  body.nav-open .side{transform:none} body.nav-open .scrim{display:block}
  .scrim{display:none;position:fixed;inset:0;background:rgba(20,15,40,.45);z-index:40}
  .topbar .burger{display:block}
  .split,.g2,.g3{grid-template-columns:1fr}
}
@media (max-width:720px){
  .content{padding:12px}
  .g4{grid-template-columns:1fr 1fr}
  .lanebar{grid-template-columns:1fr}
  .kv{grid-template-columns:110px 1fr}
  /* tables become stacked cards on phones */
  table.tbl.cards thead{display:none}
  table.tbl.cards,table.tbl.cards tbody,table.tbl.cards tr,table.tbl.cards td{display:block;width:100%}
  table.tbl.cards tr{border:1px solid var(--line);border-radius:10px;margin:0 0 10px;background:#fff;padding:6px 0}
  table.tbl.cards td{border:0;padding:4px 12px;display:flex;justify-content:space-between;gap:12px;text-align:right}
  table.tbl.cards td:before{content:attr(data-l);color:var(--ink-3);font-size:11px;text-transform:uppercase;letter-spacing:.05em;text-align:left}
  table.tbl.cards td.num{justify-content:space-between}
  .page-head .actions{margin-left:0;width:100%}
  .bottomnav{display:flex}
  .content{padding-bottom:76px}
}
.bottomnav{display:none;position:fixed;left:0;right:0;bottom:0;height:62px;background:#fff;border-top:1px solid var(--line);z-index:30;justify-content:space-around;align-items:center}
.bottomnav a{flex:1;text-align:center;font-size:11px;font-weight:600;color:var(--ink-3);text-decoration:none;padding:6px 0}
.bottomnav a.on{color:var(--brand)} .bottomnav a b{display:block;font-size:18px;line-height:1.1}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:760px){.grid2{grid-template-columns:1fr}}
/* freight sign-in */
.fx-auth{min-height:100vh;display:grid;grid-template-columns:1.15fr 1fr;background:#f5f4fa}
.fx-hero{background:linear-gradient(160deg,#3B1FA0 0%,#513985 55%,#2b1a55 100%);color:#fff;padding:36px 40px;display:flex;flex-direction:column;justify-content:center;gap:18px}
.fx-brand{display:flex;gap:12px;align-items:center}.fx-brand img{width:48px;height:48px;border-radius:12px;margin:0}
.fx-brand b{display:block;font-size:22px;letter-spacing:.2px}.fx-brand span{font-size:12px;opacity:.8}
.fx-art{width:100%;height:auto;border-radius:14px;background:rgba(255,255,255,.05)}
.fx-points{list-style:none;padding:0;margin:0;display:grid;gap:10px;font-size:14px;line-height:1.45}
.fx-points li{padding-left:14px;border-left:3px solid #FFBF00}
.fx-form{display:flex;align-items:center;justify-content:center;padding:32px 20px}
.fx-card{width:min(400px,100%);background:#fff;border-radius:16px;padding:28px;box-shadow:0 12px 40px rgba(59,31,160,.12)}
.fx-card h1{font-size:22px;margin:0 0 4px}.fx-card .sub{color:#6b6880;font-size:13px;margin-bottom:18px}
.fx-card label{display:block;font-size:12px;font-weight:700;color:#4a4760;margin:12px 0 4px}
.fx-card input[type=email],.fx-card input[type=password]{width:100%;height:44px;border:1px solid #d9d6e6;border-radius:10px;padding:0 12px;font-size:15px}
.fx-card input:focus{outline:2px solid #5C9BE3;border-color:transparent}
.fx-btn{width:100%;height:46px;border:0;border-radius:10px;background:#513985;color:#fff;font-weight:800;font-size:15px;margin-top:16px;cursor:pointer}
.fx-btn:hover{background:#3B1FA0}.fx-err{color:#c0392b;font-size:12px;margin-top:4px}
.fx-roles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:18px}
.fx-roles a{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;border:1px solid #e6e3f0;border-radius:10px;font-size:11px;font-weight:700;color:#513985;text-decoration:none;text-align:center}
.fx-roles img{width:36px;height:36px;border-radius:8px}
.fx-legal{margin-top:18px;font-size:11px;color:#8a879c;text-align:center}.fx-legal a{color:#6b6880;margin:0 6px}
@media (max-width:860px){.fx-auth{grid-template-columns:1fr}.fx-hero{padding:22px 16px}.fx-points{display:none}.fx-art{max-height:170px}}
