:root{--scarlet:#BA0C2F;--scarlet-dark:#8a0922;--scarlet-tint:#fdeceb;--bg:#f5f5f7;--surface:#ffffff;--surface-2:#f7f7f9;--border:#e6e6ea;--border-strong:#d4d4da;--text:#1d1d1f;--text-2:#6e6e73;--text-3:#9a9aa0;--blue:#185FA5;--blue-bg:#E6F1FB;--green:#3B6D11;--green-bg:#EAF3DE;--amber:#854F0B;--amber-bg:#FAEEDA;--red:#A32D2D;--red-bg:#FCEBEB;--radius:10px;--radius-lg:14px;--radius-pill:999px;--shadow-sm:0 1px 2px rgba(0,0,0,0.04),0 1px 3px rgba(0,0,0,0.06);--shadow-md:0 4px 12px rgba(0,0,0,0.08);--font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased}.page{min-height:100vh;padding:28px 0}.container{width:100%;max-width:1600px;margin:0 auto;padding:0 28px}.app-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.app-title{font-size:22px;font-weight:600;margin:0;letter-spacing:-.02em}.app-sub{font-size:13px;color:var(--text-2);margin:2px 0 0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 22px;box-shadow:var(--shadow-sm);margin-bottom:20px}.card-flush{padding:0;overflow:hidden}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:14px;gap:14px;margin-bottom:20px}.metric{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow-sm);transition:transform .15s ease,box-shadow .15s ease}.metric:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.metric-label{font-size:13px;color:var(--text-2);margin:0 0 6px}.metric-value{font-size:26px;font-weight:600;margin:0;letter-spacing:-.02em}.btn{background:var(--scarlet);color:#fff;border:none;border-radius:var(--radius);padding:10px 18px;font-size:14px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:background .14s ease,transform .12s ease;font-family:inherit}.btn:hover{background:var(--scarlet-dark);transform:translateY(-1px)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:default;transform:none}.btn-ghost{background:transparent;color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius);padding:10px 18px;font-size:14px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:background .14s ease,border-color .14s ease;font-family:inherit}.btn-ghost:hover{background:var(--surface-2);color:var(--text)}.btn-ghost:disabled{opacity:.5;cursor:default}.btn-tiny{padding:5px 12px;font-size:12px;border-radius:8px;background:transparent;color:var(--scarlet);border:1px solid var(--scarlet)}.btn-tiny:hover{background:var(--scarlet-tint);transform:none}.input{width:100%;height:40px;border:1px solid var(--border-strong);border-radius:var(--radius);padding:0 13px;font-size:14px;background:var(--surface);color:var(--text);font-family:inherit;transition:border-color .12s ease,box-shadow .12s ease}.input:focus{outline:none;border-color:var(--scarlet);box-shadow:0 0 0 3px rgba(186,12,47,.15)}.input::placeholder{color:var(--text-3)}.search{position:relative;flex:1 1;min-width:200px}.search .input{padding-left:44px}.search-icon{position:absolute;left:13px;top:50%;transform:translateY(-50%);font-size:24px;pointer-events:none}.chip,.search-icon{color:var(--text-2)}.chip{border:1px solid var(--border-strong);border-radius:var(--radius-pill);padding:7px 16px;font-size:13px;cursor:pointer;background:transparent;transition:all .12s ease;font-family:inherit}.chip:hover{color:var(--scarlet)}.chip.on,.chip:hover{border-color:var(--scarlet)}.chip.on{background:var(--scarlet);color:#fff}.tbl{width:100%;border-collapse:collapse;font-size:14px}.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--radius)}.tbl thead th{text-align:left;padding:10px 12px;font-weight:500;font-size:13px;color:var(--text-2);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:-webkit-sticky;position:sticky;top:0;background:var(--surface)}.tbl tbody td,.tbl thead th{border-bottom:1px solid var(--border)}.tbl tbody td{padding:11px 12px}.tbl tbody tr{transition:background .12s ease}.tbl tbody tr:hover{background:var(--surface-2)}.avatar{width:32px;height:32px;border-radius:50%;justify-content:center;font-weight:600;flex-shrink:0}.avatar,.badge{display:inline-flex;align-items:center;font-size:12px}.badge{padding:4px 10px;border-radius:var(--radius-pill);font-weight:500;gap:5px;white-space:nowrap}.badge-blue{background:var(--blue-bg);color:var(--blue)}.badge-green{background:var(--green-bg);color:var(--green)}.badge-amber{background:var(--amber-bg);color:var(--amber)}.badge-red{background:var(--red-bg);color:var(--red)}.badge-gray{background:var(--surface-2);color:var(--text-2)}.banner{padding:13px 16px;border-radius:var(--radius);margin-bottom:18px;font-size:14px}.banner-warn{background:#fff8e6;border:1px solid #f0d894;color:#7a5a00}.banner-live{background:var(--red-bg);border:1px solid #e2a0a0;color:#8a1f1f}.overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:50;animation:fade .15s ease}.sheet{position:fixed;top:0;right:0;height:100%;width:min(640px,100%);background:var(--surface);box-shadow:-8px 0 40px rgba(0,0,0,.18);z-index:51;display:flex;flex-direction:column;animation:slide .2s cubic-bezier(.2,.8,.2,1)}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes slide{0%{transform:translateX(100%)}to{transform:translateX(0)}}.sheet-head{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid var(--border)}.sheet-body{padding:18px 24px;overflow-y:auto;flex:1 1}.sheet-foot{padding:16px 24px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}.icon-btn{background:none;border:none;font-size:22px;cursor:pointer;color:var(--text-3);line-height:1;padding:4px}.icon-btn:hover{color:var(--text)}.section-title{font-size:16px;font-weight:600;margin:0 0 14px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{border-radius:var(--radius-lg);padding:32px;width:340px;box-shadow:var(--shadow-md)}.rider-meta{font-size:12px;margin-top:1px}.muted,.rider-meta{color:var(--text-2)}.add-row{border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px;margin-bottom:16px;background:var(--surface-2)}.add-row-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.add-row-title{font-size:13px;font-weight:600;color:var(--text)}.row-form{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.row-form .field{display:flex;flex-direction:column;gap:4px}.row-form .field-label{font-size:11px;color:var(--text-2);font-weight:500}.row-form .field-full{grid-column:1/-1}@media (max-width:520px){.row-form{grid-template-columns:1fr}}.spinner{display:inline-block;width:15px;height:15px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;vertical-align:-2px}@keyframes spin{to{transform:rotate(1turn)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}.metric{border-top:3px solid var(--border)}.metric-total{border-top-color:var(--scarlet)}.metric-sent{border-top-color:var(--blue)}.metric-new{border-top-color:var(--green)}.metric-route{border-top-color:var(--red)}.progress-track{height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:#2e9e44;border-radius:999px;transition:width .2s ease}.progress-fill.processing{animation:pulse 1.2s ease-in-out infinite}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:36px 32px;width:360px;box-shadow:0 8px 40px rgba(0,0,0,.1)}.login-logo{text-align:center}.password-wrap{position:relative}.password-wrap .input{padding-right:44px;width:100%}.password-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:6px 8px;line-height:0;color:var(--text-2);display:flex;align-items:center;opacity:.75;transition:opacity .12s ease,color .12s ease}.password-toggle:hover{opacity:1;color:var(--text)}.login-error{color:var(--scarlet);font-size:13px;margin:10px 0 0;display:flex;align-items:center;gap:6px}.shake{animation:shake .45s cubic-bezier(.36,.07,.19,.97)}@keyframes shake{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(2px)}30%,50%,70%{transform:translateX(-5px)}40%,60%{transform:translateX(5px)}}.riders-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}.riders-actions{display:flex;gap:8px}.filter-bar{gap:10px;align-items:center;margin-bottom:14px}.chip-row,.filter-bar{display:flex;flex-wrap:wrap}.chip-row{gap:8px}@media (max-width:640px){.container{padding:0 14px}.card{padding:16px 14px}.metrics{grid-template-columns:1fr 1fr;gap:10px}.metric{padding:12px 14px}.metric-value{font-size:22px}.riders-header{flex-direction:column;align-items:stretch}.riders-actions{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.riders-actions .btn,.riders-actions .btn-ghost{width:100%;justify-content:center;white-space:nowrap;padding:11px 8px}.riders-actions .btn{grid-column:1/-1}.filter-bar{flex-direction:column;align-items:stretch;gap:10px}.search{width:100%}.chip-row{justify-content:flex-start}.chip{flex:1 1;text-align:center;padding:8px 6px}.tbl{min-width:620px}.tbl td,.tbl th{padding:9px 10px}.avatar{width:30px;height:30px;font-size:11px}.app-title{font-size:19px}}body,html{overflow-x:hidden}@media (max-width:640px){.pagination{flex-direction:column;align-items:stretch;gap:12px}.pagination>div{justify-content:center}}