:root{--cream: #FAF6EC;--paper: #F1ECDD;--ink: #0E1A2B;--ink-soft: #5A6B85;--ink-faint: #94A3B8;--hi-vis: #F59E0B;--hi-vis-deep: #B45309;--in-blue: #1E40AF;--in-blue-soft: rgba(30, 64, 175, .1);--out-orange: #C2410C;--out-orange-soft: rgba(194, 65, 12, .1);--green: #15803D;--green-soft: rgba(21, 128, 61, .12);--red: #B91C1C;--hairline: rgba(14, 26, 43, .1);--hairline-strong: rgba(14, 26, 43, .22);--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--r-xl: 18px;--font-display: "Bricolage Grotesque", system-ui, sans-serif;--font-body: "IBM Plex Sans", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body{margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--cream);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;min-height:100vh;min-height:100dvh}input,textarea,select,button{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer}.app-shell{max-width:520px;margin:0 auto;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--cream)}.app-main{flex:1;padding:16px 18px 28px;display:flex;flex-direction:column;gap:16px}.app-header{padding:14px 18px 10px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--hairline)}.app-header .brand{font-family:var(--font-display);font-weight:700;font-size:14px;letter-spacing:.18em;text-transform:uppercase;display:flex;align-items:center;gap:8px}.brand-logo{width:24px;height:24px;border-radius:4px;object-fit:cover;flex-shrink:0}.brand-dot{color:var(--hi-vis)}.app-header .meta{font-family:var(--font-mono);font-size:11px;color:var(--ink-soft);text-align:right;letter-spacing:.04em}.app-header .meta .driver{font-weight:600;color:var(--ink)}.app-header .meta .swap{background:none;border:none;padding:0;margin-left:6px;color:var(--ink-soft);text-decoration:underline;font-size:10px}.trip-header{padding-bottom:4px}.trip-eyebrow{font-family:var(--font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft);margin-bottom:6px}.trip-title{font-family:var(--font-display);font-size:26px;font-weight:700;letter-spacing:-.015em;margin:0 0 4px;line-height:1.1}.trip-ref{font-family:var(--font-mono);font-size:14px;font-weight:600;letter-spacing:.05em}.action-list{display:flex;flex-direction:column;gap:12px;margin-top:8px}.action-card{display:flex;align-items:stretch;gap:14px;padding:18px;background:#fff;border:2px solid var(--hairline);border-radius:var(--r-lg);text-align:left;transition:border-color .12s,transform 80ms}.action-card:active{transform:scale(.99)}.action-card.completed{background:var(--green-soft);border-color:#15803d47}.action-card.completed .ac-icon{background:var(--green);color:#fff}.action-card .ac-icon{width:48px;height:48px;border-radius:var(--r-md);background:var(--ink);color:var(--cream);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-weight:700;font-size:22px;flex-shrink:0}.action-card.action-out .ac-icon{background:var(--out-orange);color:#fff}.action-card.action-in .ac-icon{background:var(--in-blue);color:#fff}.action-card.action-delivery .ac-icon,.action-card.action-pickup .ac-icon{background:var(--ink);color:var(--cream)}.action-card .ac-body{flex:1;min-width:0}.action-card .ac-title{font-family:var(--font-display);font-weight:600;font-size:17px;letter-spacing:-.005em;margin-bottom:2px}.action-card .ac-sub{font-size:12px;color:var(--ink-soft);line-height:1.35}.action-card .ac-status{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);margin-top:6px}.action-card.completed .ac-status{color:var(--green);font-weight:600}.form{display:flex;flex-direction:column;gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-family:var(--font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft)}.field-label .req{color:var(--red);margin-left:2px}.field-loading{display:inline-flex;align-items:center;gap:5px;margin-left:8px;font-size:10px;color:var(--hi-vis-deep);text-transform:none;letter-spacing:0;font-family:var(--font-body);font-weight:500}.field-loading .loading-pulse{width:10px;height:10px;border-width:1.5px}.input,.textarea{width:100%;border:2px solid var(--ink);border-radius:var(--r-md);padding:13px 14px;background:#fff;font-family:var(--font-mono);font-size:16px;font-weight:500;letter-spacing:.02em;color:var(--ink);outline:none;-webkit-appearance:none}.textarea{font-family:var(--font-body);font-weight:400;letter-spacing:0;resize:vertical;min-height:64px}.input::placeholder,.textarea::placeholder{color:var(--ink-faint);font-weight:400}.input:focus,.textarea:focus{border-color:var(--hi-vis)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:var(--r-md);padding:14px 18px;font-family:var(--font-display);font-weight:600;font-size:15px;letter-spacing:.01em;background:var(--ink);color:var(--cream);text-decoration:none;min-height:48px}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--ink);color:var(--cream)}.btn-success{background:var(--green);color:#fff}.btn-ghost{background:var(--paper);color:var(--ink)}.btn-danger{background:#fff;color:var(--red);border:2px solid var(--red)}.btn-block{width:100%}.btn-row{display:flex;gap:10px;margin-top:6px}.btn-row .btn{flex:1}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.photo-tile{aspect-ratio:1 / 1;border-radius:var(--r-md);overflow:hidden;position:relative;background:var(--paper)}.photo-tile img{width:100%;height:100%;object-fit:cover;display:block}.photo-tile .remove{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;background:#0e1a2bd9;color:#fff;display:flex;align-items:center;justify-content:center;border:none;font-size:13px;font-weight:700}.photo-add{aspect-ratio:1 / 1;border:2px dashed var(--hairline-strong);border-radius:var(--r-md);background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--ink-soft);font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em}.photo-add svg{width:22px;height:22px}.photo-add input{display:none}.photo-help{font-size:11px;color:var(--ink-soft);margin-top:4px}.sig-block{display:flex;flex-direction:column;gap:10px}.sig-pad-wrap{background:#fff;border:1.5px dashed var(--hairline-strong);border-radius:var(--r-md);position:relative;overflow:hidden}.sig-pad-wrap canvas{display:block;width:100%;height:180px;touch-action:none}.sig-pad-watermark{position:absolute;top:10px;right:12px;font-family:var(--font-mono);font-size:9px;color:var(--ink-faint);letter-spacing:.1em;pointer-events:none}.sig-baseline{position:absolute;left:14px;right:14px;bottom:22px;border-bottom:1px solid var(--hairline-strong);pointer-events:none}.sig-x{position:absolute;left:14px;bottom:6px;font-family:var(--font-mono);font-size:11px;color:var(--ink-soft);pointer-events:none}.alert{padding:12px 14px;border-radius:var(--r-md);font-size:13px;line-height:1.4}.alert-error{background:#b91c1c14;border-left:3px solid var(--red);color:var(--red)}.alert-info{background:var(--paper);border-left:3px solid var(--ink-soft);color:var(--ink)}.alert-warning{background:#f59e0b1a;border-left:3px solid var(--hi-vis);color:var(--hi-vis-deep);font-weight:500}.conn-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:8px;vertical-align:middle}.conn-dot.online{background:var(--green)}.conn-dot.offline{background:var(--hi-vis);box-shadow:0 0 #f59e0b80;animation:dot-pulse 1.6s ease-out infinite}@keyframes dot-pulse{0%{box-shadow:0 0 #f59e0b8c}70%{box-shadow:0 0 0 6px #f59e0b00}to{box-shadow:0 0 #f59e0b00}}.field-status{font-family:var(--font-mono);font-size:11px;margin-top:6px;color:var(--ink-soft);letter-spacing:.02em}.field-status.ok{color:var(--green)}.field-status.failed{color:var(--ink-soft);opacity:.7}.field-status.reading{color:var(--hi-vis-deep)}.success-frame{display:flex;flex-direction:column;align-items:center;text-align:center;padding:24px 16px;flex:1}.success-check{width:72px;height:72px;background:var(--green);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:16px auto 18px;box-shadow:0 0 0 8px var(--green-soft)}.success-check svg{width:36px;height:36px;stroke:#fff}.success-title{font-family:var(--font-display);font-size:24px;font-weight:700;margin:0 0 4px;letter-spacing:-.01em}.success-stamp{font-family:var(--font-mono);font-size:10px;color:var(--ink-soft);letter-spacing:.08em;margin-bottom:18px}.success-summary{width:100%;background:var(--paper);border-radius:var(--r-md);padding:12px 14px;margin-bottom:16px}.success-summary .row{display:flex;justify-content:space-between;padding:5px 0;font-size:12px}.success-summary .row+.row{border-top:1px solid var(--hairline)}.success-summary .k{font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft)}.success-summary .v{font-family:var(--font-mono);font-weight:600;font-size:12px}.driver-gate{display:flex;flex-direction:column;gap:14px;padding:12px 0}.driver-gate h2{font-family:var(--font-display);font-size:22px;font-weight:700;margin:4px 0 2px;letter-spacing:-.01em}.driver-gate p{font-size:13px;color:var(--ink-soft);margin:0 0 8px;line-height:1.45}.loading-pulse{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.landing{display:flex;flex-direction:column;gap:14px;padding:28px 4px}.landing h1{font-family:var(--font-display);font-size:28px;font-weight:700;letter-spacing:-.015em;margin:0 0 4px;line-height:1.1}.landing p{font-size:14px;color:var(--ink-soft);margin:0 0 8px;line-height:1.5}.landing code{font-family:var(--font-mono);font-size:12px;background:var(--paper);padding:2px 6px;border-radius:4px;word-break:break-all}.ref-badge{display:inline-flex;align-items:center;gap:6px;background:var(--paper);padding:6px 10px;border-radius:var(--r-sm);font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:.04em}.ref-badge .tag{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:2px 5px;border-radius:3px;color:#fff}.ref-badge .tag.outbound{background:var(--out-orange)}.ref-badge .tag.inbound{background:var(--in-blue)}
