:root{--green:#184830;--accent:#6e9e3a;--paper:#f5f8f3;--white:#fff;--text:#222c26;--muted:#607066;--line:#d5dfd2;--error:#a32b2b;--warning:#865b0d;--radius:18px;font-family:"Segoe UI",Arial,sans-serif;color:var(--text);background:var(--paper)}
.login-card{max-width:520px;margin:30px auto}.login-card label{display:block;font-weight:650;margin:22px 0 8px}.login-card form>button{width:100%;margin:22px 0}.login-card details{margin-top:20px;border-top:1px solid var(--line);padding-top:18px}.login-card summary{cursor:pointer;color:var(--muted)}#account{display:flex;align-items:center;gap:8px;flex-wrap:wrap}@media(max-width:850px){.top{flex-wrap:wrap}#account{width:100%}.login-card{margin:0 auto}}
.office-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:24px}.office-actions{display:grid;gap:12px;margin:20px 0}.button-link{display:inline-block;padding:16px 20px;min-height:52px;text-align:center;background:var(--green);color:white;border-radius:12px;font-weight:650}.button-link.secondary{background:#e8efdf;color:var(--green)}textarea{width:100%;padding:16px;border:2px solid var(--line);border-radius:12px;font:inherit;resize:vertical}form>label{display:block;margin:15px 0}form label>input,form label>select{margin-top:8px}table{border-collapse:collapse;width:100%;margin:18px 0}th,td{text-align:left;padding:14px 10px;border-bottom:1px solid var(--line);vertical-align:top}thead{background:#eff4e8}td button{min-height:42px;padding:8px 12px;font-size:13px}.verification td{width:36%}.verification input{margin-top:8px;font-size:15px}.check{display:flex;align-items:center;gap:12px}.check input{width:22px;min-height:22px}.inline-form{display:grid;grid-template-columns:minmax(120px,1fr) 100px auto;gap:12px}.print-meta{display:grid;grid-template-columns:200px 1fr;gap:10px}.print-meta dt{font-weight:700}.print-meta dd{margin:0}.print-sheet h2{margin-top:28px}.print-state{font-weight:750;font-size:18px}.table-scroll{overflow:auto}pre{white-space:pre-wrap;overflow-wrap:anywhere}dialog{max-width:550px;border:1px solid var(--line);border-radius:18px;padding:28px}dialog::backdrop{background:#12332466}@media(max-width:950px){.office-layout{grid-template-columns:1fr}.verification{font-size:13px}.inline-form{grid-template-columns:1fr}.print-meta{grid-template-columns:1fr}}@media print{@page{size:A4;margin:15mm}.no-print,#account{display:none!important}.print-sheet{border:0;padding:0}.print-sheet table{font-size:10pt}.print-sheet thead{display:table-header-group}.print-sheet tr{break-inside:avoid}.print-meta{grid-template-columns:150px 1fr}.print-sheet h1,.print-sheet h2{break-after:avoid}.print-sheet{break-inside:auto}}
*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer;min-height:52px;border:0;border-radius:12px;font-weight:650;padding:12px 22px;background:var(--green);color:white}button:disabled{opacity:.5;cursor:not-allowed}.secondary{background:#e8efdf;color:var(--green)}.text-button{background:transparent;color:var(--green);padding:8px}.top{background:white;border-bottom:1px solid var(--line);padding:22px 5vw;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{font-weight:800;letter-spacing:1px;color:var(--green);font-size:22px}.brand small{display:block;font-size:11px;letter-spacing:3px;margin-top:5px}nav{display:flex;gap:26px;font-weight:650}nav a:hover{color:var(--accent)}.demo{background:#e9f0de;padding:10px 5vw;font-size:13px;color:var(--green)}main{max-width:1450px;margin:auto;padding:34px 5vw 48px}h1{font-size:clamp(28px,4vw,42px);margin:0 0 10px;color:var(--green)}h2{font-size:22px;margin:0 0 20px}h3{margin:0 0 12px}.muted{color:var(--muted)}.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:1.7px;color:var(--muted);font-weight:700}.card{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:24px}.identity{display:flex;align-items:end;gap:18px;flex-wrap:wrap;margin:28px 0}.identity label{flex:1;max-width:370px}.identity input{margin-top:8px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:18px}.ramp{text-align:left;display:block;padding:25px;min-height:210px;width:100%;background:white;color:var(--text);border:1px solid var(--line);border-radius:var(--radius);font-weight:400}.ramp:hover{border-color:var(--accent);box-shadow:0 6px 20px #1848300d}.ramp strong{display:block;font-size:36px;color:var(--green);margin:12px 0}.ramp .destination{display:block;font-size:22px;font-weight:650;margin:14px 0 6px}.ramp.unavailable{opacity:.65}.badge{display:inline-block;padding:6px 11px;border-radius:20px;font-size:12px;font-weight:700;background:#ecf5e7;color:var(--green)}.badge.warn{background:#fff2d5;color:var(--warning)}.badge.danger{background:#ffefec;color:var(--error)}.heading{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:25px}.scanner-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr);gap:24px}.progress-top{display:flex;align-items:baseline;justify-content:space-between;gap:14px}.total{font-size:50px;font-weight:750;letter-spacing:-2px;color:var(--green);white-space:nowrap}progress{appearance:none;width:100%;height:12px;border:0;border-radius:20px;overflow:hidden;background:#e9efdf}progress::-webkit-progress-bar{background:#e9efdf}progress::-webkit-progress-value{background:var(--accent)}progress::-moz-progress-bar{background:var(--accent)}input,select{width:100%;padding:15px 16px;background:white;color:var(--text);border:2px solid var(--line);border-radius:12px;min-height:56px}input:focus{border-color:var(--green);outline:3px solid #6e9e3a33}#code{font-size:26px;min-height:74px;margin:10px 0 14px}.scan-form{margin:24px 0}.scan-form button{width:100%}.feedback{padding:16px 18px;border-radius:12px;border:1px solid var(--line);min-height:60px;margin-top:16px;font-weight:650}.feedback.ok{background:#ecf5e7;color:var(--green)}.feedback.error{background:#ffefec;color:var(--error)}.feedback.pending{background:#fff2d5;color:var(--warning)}.notice{border-left:5px solid var(--accent);background:#f2f7eb;border-radius:10px;padding:18px;margin:16px 0}.notice.urgent{border-color:var(--warning);background:#fff6e3}.notice button{margin-top:14px}.plan-item{padding:18px 0;border-bottom:1px solid var(--line)}.plan-item:last-child{border-bottom:0}.plan-item .line{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:9px}.plan-item strong{font-size:20px}.extras{margin-top:24px}.extras button{font-size:15px;padding:10px 14px}.scan-list{list-style:none;padding:0;margin:0;max-height:450px;overflow:auto}.scan-list li{display:flex;justify-content:space-between;gap:15px;padding:16px 0;border-bottom:1px solid var(--line)}.scan-list code{font-size:17px;overflow-wrap:anywhere}.scan-list small{display:block;color:var(--muted);margin-top:6px}.empty{padding:26px 0;color:var(--muted)}.toolbar{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}.toolbar button{flex:1}.board-card .destination{font-size:24px;font-weight:700;margin:18px 0}.board-card .total{font-size:36px}.board-card .ramp-number{font-size:30px;color:var(--green);font-weight:750}.board-card p{line-height:1.5}.transport-info{display:flex;gap:20px;flex-wrap:wrap;margin-top:14px;color:var(--muted)}footer{padding:18px 5vw;color:var(--muted);font-size:13px;border-top:1px solid var(--line);display:flex;gap:14px;justify-content:space-between;align-items:center;flex-wrap:wrap}.offline-test{margin-top:25px;padding:18px;background:#eaf0e3;border-radius:12px}.offline-test label{display:flex;align-items:center;gap:12px}.offline-test input{width:22px;min-height:22px}.offline-test button{margin-top:12px}.session-closed{font-size:20px;margin-top:24px;color:var(--green)}:focus-visible{outline:3px solid var(--accent);outline-offset:4px}@media(max-width:850px){.scanner-layout{grid-template-columns:1fr}.top{align-items:start}.top nav{flex-direction:column;gap:10px;font-size:14px}.heading{align-items:start;flex-direction:column}.total{font-size:42px}.card{padding:20px}main{padding-top:26px}}@media print{.top,.demo,footer,.toolbar,.offline-test,button,.scan-form{display:none}main{padding:0}.card{break-inside:avoid}.scanner-layout{display:block}.scan-list{max-height:none;overflow:visible}body{background:white}}
/* Status is always read from transport data. Each state has its own palette. */
.badge.status-0{background:#e8edf2;color:#34465c}.badge.status-1{background:#fff0be;color:#775100}.badge.status-2{background:#d7f3ee;color:#006659}.badge.status-3{background:#ffe1c5;color:#894000}.badge.status-4{background:#ece0ff;color:#613399}.badge.status-5{background:#d3ecd1;color:#26591e}
[hidden]{display:none!important}th input{margin-top:8px;min-width:90px;max-width:180px;font-size:13px;padding:8px}.ramp-filters{margin-bottom:24px;display:flex;gap:24px;align-items:start;flex-wrap:wrap}.ramp-filters details{min-width:230px}.ramp-filters input[type=checkbox]{width:20px;min-height:20px}.ramp-filters .check{display:flex;gap:10px;align-items:center}
.column-filter{padding:3px 7px;min-height:28px;margin-left:8px;border-radius:4px;background:#edf1eb;color:#455348;font-size:12px}.column-filter.active{background:#184830;color:white}.excel-filter{width:min(440px,90vw);padding:24px}.excel-filter h2{font-size:20px}.excel-filter .check{display:flex;align-items:center;gap:10px;margin:12px 0}.excel-filter input[type=checkbox]{width:19px;min-height:19px;flex-shrink:0}.filter-values{max-height:300px;overflow:auto;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:4px 0}.excel-filter .toolbar button{font-size:13px;padding:10px;min-height:40px}
