*,*:before,*:after{box-sizing:border-box}body{margin:0;padding:0;font-family:DM Sans,-apple-system,BlinkMacSystemFont,sans-serif;background:#f8fafc;color:#0d2137;-webkit-font-smoothing:antialiased}button,input,textarea,select{font-family:inherit}.topbar{background:#0d2137;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 24px;height:52px;flex-shrink:0}.topbar-brand{display:flex;align-items:center;gap:10px}.topbar-logo{background:#028090;color:#fff;font-weight:800;font-size:13px;letter-spacing:1px;padding:4px 8px;border-radius:4px}.topbar-name{font-weight:700;font-size:15px;letter-spacing:.2px}.topbar-sub{font-size:13px;color:#94a3b8;font-weight:400}.topbar-right{display:flex;align-items:center;gap:10px}.user-badge{background:#028090;border-radius:6px;padding:5px 12px;font-size:13px;font-weight:600;color:#fff}.franchisee-badge{background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:6px;padding:5px 12px;font-size:13px;font-weight:500;color:#e2e8f0}.status-badge{display:inline-block;padding:3px 10px;border-radius:20px;border:1px solid;font-size:12px;font-weight:600;letter-spacing:.3px;white-space:nowrap}.job-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:16px;cursor:pointer;transition:box-shadow .15s,transform .15s;display:flex;flex-direction:column;gap:8px}.job-card:hover{box-shadow:0 4px 16px #0000001a;transform:translateY(-1px)}.job-card-completed{opacity:.7;background:#f8fafc}.job-card-top{display:flex;align-items:center;justify-content:space-between}.job-card-number{font-size:15px;font-weight:700;color:#0d2137;display:flex;align-items:center;gap:8px}.today-pill{background:#028090;color:#fff;font-size:10px;font-weight:700;padding:2px 7px;border-radius:20px;letter-spacing:.5px}.job-card-customer{font-size:16px;font-weight:600;color:#0d2137}.job-card-address{font-size:13px;color:#475569}.job-card-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:4px}.job-card-meta{font-size:13px;color:#475569}.job-card-volume{font-size:13px;font-weight:600;color:#028090}.job-card-truck{font-size:12px;color:#94a3b8;border-top:1px solid #f1f5f9;padding-top:8px;margin-top:2px}.job-list{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;background:#f8fafc}.filter-bar{display:flex;gap:8px;flex-wrap:wrap}.filter-btn{padding:7px 16px;border-radius:20px;border:1px solid #cbd5e1;background:#fff;color:#475569;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s}.filter-btn:hover{border-color:#028090;color:#028090}.filter-active{background:#028090;border-color:#028090;color:#fff!important}.search-bar{display:flex;align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:8px 12px;gap:8px}.search-icon{font-size:14px;flex-shrink:0}.search-input{flex:1;border:none;outline:none;font-size:14px;color:#0d2137;background:transparent}.search-input::placeholder{color:#94a3b8}.search-clear{background:none;border:none;color:#94a3b8;cursor:pointer;padding:0;font-size:13px}.job-cards{display:flex;flex-direction:column;gap:12px}.job-empty{text-align:center;padding:48px 24px;color:#94a3b8}.job-empty-icon{font-size:40px;margin-bottom:12px}.job-empty-text{font-size:16px;font-weight:600;color:#475569;margin-bottom:4px}.job-empty-sub{font-size:13px;color:#94a3b8}.refresh-btn{align-self:center;background:none;border:1px solid #cbd5e1;border-radius:8px;padding:10px 20px;font-size:13px;color:#475569;cursor:pointer;margin-top:8px;transition:all .15s}.refresh-btn:hover{border-color:#028090;color:#028090}.action-btn{width:100%;padding:16px;border-radius:12px;border:none;font-size:16px;font-weight:700;cursor:pointer;transition:all .15s;letter-spacing:.2px}.action-btn:hover:not(:disabled){filter:brightness(1.05);transform:translateY(-1px)}.action-btn:disabled{cursor:default;transform:none}.btn-accept{background:#028090;color:#fff}.btn-depart{background:#1d4ed8;color:#fff}.btn-arrive{background:#d97706;color:#fff}.btn-complete{background:#16a34a;color:#fff}.btn-done{background:#dcfce7;color:#166534;border:1px solid #16a34a}.btn-cancelled{background:#f3f4f6;color:#6b7280;border:1px solid #d1d5db}.action-btn-locked{cursor:default;opacity:.8}.actuals-form{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:16px}.actuals-title{font-size:14px;font-weight:700;color:#0d2137;margin:0}.actuals-field{display:flex;flex-direction:column;gap:6px}.actuals-label{font-size:13px;font-weight:600;color:#475569}.actuals-volume-row{display:flex;align-items:center;gap:8px}.actuals-input{flex:1;padding:10px 12px;border:1px solid #cbd5e1;border-radius:8px;font-size:18px;font-weight:700;color:#0d2137;outline:none;transition:border-color .15s}.actuals-input:focus{border-color:#028090}.actuals-input:disabled{background:#f1f5f9;color:#475569}.actuals-unit{font-size:16px;font-weight:600;color:#475569}.actuals-variance{font-size:12px;font-weight:600;padding:4px 10px;border-radius:6px;width:fit-content}.variance-ok{background:#dcfce7;color:#166534}.variance-warn{background:#fef3c7;color:#92400e}.variance-high{background:#fee2e2;color:#991b1b}.actuals-textarea{padding:10px 12px;border:1px solid #cbd5e1;border-radius:8px;font-size:14px;color:#0d2137;font-family:inherit;resize:vertical;outline:none;transition:border-color .15s}.actuals-textarea:focus{border-color:#028090}.actuals-textarea:disabled{background:#f1f5f9;color:#475569}.actuals-charcount{font-size:11px;color:#94a3b8;text-align:right}.photo-capture{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:12px}.photo-header{display:flex;align-items:center;justify-content:space-between}.photo-title{font-size:14px;font-weight:700;color:#0d2137;margin:0}.photo-count{font-size:12px;font-weight:600;padding:3px 10px;border-radius:20px}.photo-count-empty{background:#fee2e2;color:#991b1b}.photo-count-ok{background:#dcfce7;color:#166534}.photo-required{font-size:12px;color:#991b1b;background:#fee2e2;border-radius:6px;padding:6px 10px}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.photo-thumb{position:relative;aspect-ratio:1;border-radius:8px;overflow:hidden;border:1px solid #e2e8f0}.photo-thumb img{width:100%;height:100%;object-fit:cover}.photo-remove{position:absolute;top:4px;right:4px;background:#0009;color:#fff;border:none;border-radius:50%;width:22px;height:22px;font-size:11px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.photo-btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px;border:2px dashed #cbd5e1;border-radius:8px;font-size:14px;font-weight:600;color:#475569;cursor:pointer;transition:all .15s}.photo-btn:hover{border-color:#028090;color:#028090;background:#f0fdfa}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:flex-end;justify-content:center;z-index:1000;padding:0}.modal{background:#fff;border-radius:20px 20px 0 0;padding:24px;width:100%;max-width:520px;display:flex;flex-direction:column;gap:20px;animation:slide-up .25s ease}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-header{text-align:center}.modal-icon{font-size:40px;margin-bottom:8px}.modal-title{font-size:20px;font-weight:700;color:#0d2137;margin:0 0 4px}.modal-sub{font-size:14px;color:#64748b;margin:0}.modal-summary{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:10px}.modal-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.modal-row-label{font-size:13px;color:#64748b;font-weight:500;flex-shrink:0}.modal-row-value{font-size:13px;font-weight:600;color:#0d2137;text-align:right}.modal-value-diff{color:#d97706}.modal-row-notes{flex-direction:column;gap:4px}.modal-notes-text{text-align:left;color:#475569;font-weight:400;font-size:12px}.modal-warning{background:#fef3c7;border:1px solid #f59e0b;border-radius:8px;padding:10px 14px;font-size:13px;color:#92400e;font-weight:500}.modal-footer{display:flex;gap:12px}.modal-btn-cancel{flex:1;padding:14px;border-radius:10px;border:1px solid #e2e8f0;background:#fff;color:#475569;font-size:15px;font-weight:600;cursor:pointer}.modal-btn-confirm{flex:2;padding:14px;border-radius:10px;border:none;background:#16a34a;color:#fff;font-size:15px;font-weight:700;cursor:pointer;transition:all .15s}.modal-btn-confirm:disabled{background:#d1d5db;color:#9ca3af;cursor:not-allowed}.modal-btn-confirm:hover:not(:disabled){background:#15803d}.job-detail{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#f8fafc}.detail-header{background:#0d2137;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;flex-shrink:0;gap:12px}.detail-back{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#fff;border-radius:8px;padding:6px 12px;font-size:13px;cursor:pointer;white-space:nowrap}.detail-header-center{display:flex;flex-direction:column;align-items:center;gap:4px}.detail-job-number{font-size:16px;font-weight:700;color:#fff}.detail-truck{font-size:12px;color:#94a3b8;white-space:nowrap}.detail-scroll{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}.detail-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:10px}.detail-card-amber{background:#fffbeb;border-color:#f59e0b}.detail-card-title{font-size:12px;font-weight:700;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px}.detail-customer-name{font-size:18px;font-weight:700;color:#0d2137}.detail-link-btn{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:10px 14px;font-size:14px;color:#028090;font-weight:500;cursor:pointer;text-align:left;transition:all .15s}.detail-link-btn:hover{background:#f0fdfa;border-color:#028090}.detail-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.detail-row-label{font-size:13px;color:#64748b;font-weight:500}.detail-row-value{font-size:13px;font-weight:600;color:#0d2137;text-align:right}.detail-site-notes{font-size:14px;color:#92400e;font-weight:500;line-height:1.5}.detail-action-bar{padding:12px 16px;background:#fff;border-top:1px solid #e2e8f0;display:flex;flex-direction:column;gap:8px;flex-shrink:0}.detail-photo-warning{font-size:13px;color:#92400e;background:#fef3c7;border-radius:8px;padding:8px 12px;text-align:center}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);padding:12px 24px;border-radius:8px;font-size:14px;font-weight:500;z-index:9999;box-shadow:0 4px 16px #00000026;white-space:nowrap;animation:toast-in .2s ease}.toast-success{background:#dcfce7;color:#166534;border:1px solid #16a34a}.toast-error{background:#fee2e2;color:#991b1b;border:1px solid #ef4444}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}*{box-sizing:border-box;margin:0;padding:0}body{font-family:DM Sans,-apple-system,BlinkMacSystemFont,sans-serif;background:#f8fafc;color:#0d2137}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}
