@import url("https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700&family=Barlow:wght@400;500;600&family=IBM+Plex+Mono:wght@500&display=swap");:root{--paper:#f5f7f8;--surface:#fff;--ink:#16232e;--muted:#5b6b76;--line:#dde3e7;--accent:#e8630a;--steel:#33586e;--ok:#1e7f4f;--warn:#b07a0a;--bad:#b3352b;--radius:6px;--display:"Barlow Condensed","Arial Narrow",sans-serif;--body:"Barlow",system-ui,sans-serif;--mono:"IBM Plex Mono",ui-monospace,monospace}*{box-sizing:border-box}body,html{height:100%}body{margin:0;font-family:var(--body);font-size:15px;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--display);font-weight:600;letter-spacing:.02em;text-transform:uppercase;margin:0 0 12px}h1{font-size:28px}h2{font-size:20px}h3{font-size:16px;color:var(--muted)}a{color:var(--steel)}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:var(--ink);color:#fff}.brand{display:flex;align-items:baseline;gap:10px;min-width:0;flex-wrap:wrap}.brand-mark{color:var(--accent);font-size:18px}.brand-name{font-family:var(--display);font-weight:700;font-size:18px;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}.brand-org{color:#b9c4cc;font-size:13px}.mainnav{display:flex;gap:2px;padding:0 8px;background:var(--surface);border-bottom:2px solid var(--line);overflow-x:auto}.navlink{padding:12px 14px;text-decoration:none;color:var(--muted);font-family:var(--display);font-size:16px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;border-bottom:3px solid transparent;margin-bottom:-2px;white-space:nowrap}.navlink.active{color:var(--ink);border-bottom-color:var(--accent)}.navlink:focus-visible{outline:2px solid var(--steel);outline-offset:-2px}.content{flex:1 1;width:100%;max-width:1120px;margin:0 auto;padding:20px 16px 56px}.refplate{display:inline-block;font-family:var(--mono);font-weight:500;font-size:14px;letter-spacing:.05em;padding:2px 8px;border:1.5px solid var(--ink);border-radius:4px;background:#fff;box-shadow:2px 2px 0 var(--accent)}.refplate-sm{font-size:12px;padding:1px 6px;box-shadow:1.5px 1.5px 0 var(--accent)}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;letter-spacing:.02em;background:var(--line);color:var(--ink);white-space:nowrap}.badge-florida{background:#e3ecf2;color:var(--steel)}.badge-transit{background:#fbe0c8;color:#b54b03}.badge-jamaica{background:#e9e4f5;color:#5b4a9e}.badge-done{background:#def0e6;color:var(--ok)}.badge-unpaid{background:#f6dedc;color:var(--bad)}.badge-partial{background:#fbe9c8;color:var(--warn)}.badge-paid{background:#def0e6;color:var(--ok)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:16px}.card-title{font-family:var(--display);font-size:15px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 12px}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:12px;gap:12px;margin-bottom:20px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.stat b{display:block;font-family:var(--display);font-size:30px;line-height:1}.stat span{color:var(--muted);font-size:13px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;background:var(--surface)}th{text-align:left;font-family:var(--display);font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);border-bottom:2px solid var(--line)}td,th{padding:10px 12px}td{border-bottom:1px solid var(--line);vertical-align:middle}tr.rowlink{cursor:pointer}tr.rowlink:hover{background:#fbf6f1}.empty{padding:32px;text-align:center;color:var(--muted);border:1.5px dashed var(--line);border-radius:var(--radius);background:var(--surface)}.route{list-style:none;margin:0;padding:0}.route li{position:relative;padding:0 0 14px 26px;color:var(--muted)}.route li:before{content:"";position:absolute;left:6px;top:4px;width:10px;height:10px;border-radius:50%;background:var(--surface);border:2.5px solid var(--line)}.route li.done{color:var(--ink)}.route li.done:before{background:var(--ok);border-color:var(--ok)}.route li.now{color:var(--ink);font-weight:600}.route li.now:before{background:var(--accent);border-color:var(--accent)}.route li:not(:last-child):after{content:"";position:absolute;left:10px;top:18px;bottom:0;width:2px;background:var(--line)}.eventlog,.route .stop-name{font-size:14px}.eventlog{list-style:none;margin:0;padding:0}.eventlog li{padding:8px 0;border-bottom:1px solid var(--line);display:flex;gap:10px;flex-wrap:wrap;align-items:center}.eventlog time{color:var(--muted);font-size:13px;min-width:110px}.field{display:block;margin-bottom:12px}.field-label{display:block;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:4px}input,select,textarea{width:100%;padding:9px 10px;font:inherit;color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);background:#fff}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--steel);outline-offset:1px}.form-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:0 14px;gap:0 14px}.form-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:0 14px;gap:0 14px}@media (max-width:640px){.form-grid,.form-grid-3{grid-template-columns:1fr}}.btn{display:inline-block;padding:9px 16px;font:inherit;font-weight:600;border:1.5px solid transparent;border-radius:var(--radius);cursor:pointer;text-decoration:none;text-align:center}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{filter:brightness(.92)}.btn-secondary{background:#fff;color:var(--ink);border-color:var(--ink)}.btn-secondary:hover{background:var(--paper)}.btn-ghost{background:transparent;color:inherit;border-color:currentColor;padding:6px 12px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-block{display:block;width:100%}.error-note{color:var(--bad);background:#f9e8e6;border:1px solid #ebc5c1;padding:8px 12px;border-radius:var(--radius);font-size:14px}.hint{color:var(--muted);font-size:13px}.fullscreen-center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:var(--paper)}.auth-card{width:100%;max-width:420px}.auth-logo{font-family:var(--display);font-weight:700;font-size:26px;text-transform:uppercase;letter-spacing:.06em;text-align:center;margin-bottom:4px}.auth-logo .mark{color:var(--accent)}.auth-sub{text-align:center;color:var(--muted);margin:0 0 20px}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.stack-sm>*+*{margin-top:8px}.tabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}.tab{padding:7px 14px;border:1.5px solid var(--line);border-radius:999px;background:#fff;font:inherit;font-weight:600;color:var(--muted);cursor:pointer}.tab.active{border-color:var(--ink);color:var(--ink)}.label-sheet{display:none}@media print{body *{visibility:hidden}.label-sheet,.label-sheet *{visibility:visible}.label-sheet{display:block;position:fixed;inset:0;background:#fff;padding:24px}.label-ref{font-family:var(--mono);font-size:34px;border:3px solid #000;padding:10px 16px;display:inline-block}.label-bars{font-family:"Libre Barcode 39",var(--mono);font-size:64px}}@media (prefers-reduced-motion:reduce){*{animation-duration:1ms!important;transition:none!important}}