/* OrdersRedesign.css - Premium Aesthetics & Micro-Animations */ /* ============================================== */ /* Pickup / Drop Location Panel (Redesign) */ /* ============================================== */ .location-panel { position: relative; padding: 12px 14px; border-radius: 12px; border: 1px solid #eef2f6; background: linear-gradient(180deg, #ffffff 0%, #fbfcff 100%); transition: box-shadow 0.3s ease, transform 0.3s ease; height: 100%; } .location-panel:hover { box-shadow: 0 10px 30px -10px rgba(62, 73, 84, 0.10); } .location-panel::before { content: ''; position: absolute; left: 0; top: 22px; bottom: 22px; width: 4px; border-radius: 0 4px 4px 0; } .pickup-panel::before { background: linear-gradient(180deg, #1890ff, #096dd9); } .drop-panel::before { background: linear-gradient(180deg, #a855f7, #65387a); } .lp-header { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; padding-bottom: 10px; border-bottom: 1px dashed #e2e8f0; } .lp-header-actions { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; } /* Completion pill in panel header */ .lp-completion-pill { display: inline-flex; align-items: center; font-size: 11.5px; font-weight: 700; letter-spacing: 0.5px; text-transform: uppercase; padding: 4px 11px; border-radius: 999px; background: rgba(148, 163, 184, 0.14); color: #64748b; border: 1px solid rgba(148, 163, 184, 0.25); line-height: 1; } .lp-completion-pill--ok { background: rgba(34, 197, 94, 0.12); color: #15803d; border-color: rgba(34, 197, 94, 0.30); } .lp-completion-pill--ok::before { content: '✓'; margin-right: 4px; font-weight: 900; } /* Distance pill — sits alongside the completion pill in each panel header. Same shape language as the completion pill so the header reads as a coherent row of chips. */ .lp-distance-pill { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; font-weight: 700; letter-spacing: 0.3px; padding: 4px 10px; border-radius: 999px; background: linear-gradient(135deg, rgba(24, 144, 255, 0.10), rgba(168, 85, 247, 0.10)); color: #1e293b; border: 1px solid rgba(101, 56, 122, 0.20); line-height: 1; white-space: nowrap; } .lp-distance-pill .lp-distance-arrow { color: #94a3b8; font-weight: 600; } .pickup-panel .lp-distance-pill { border-color: rgba(24, 144, 255, 0.25); } .drop-panel .lp-distance-pill { border-color: rgba(101, 56, 122, 0.25); } /* Compact icon-only swap button placed inside each panel header's action row. Color follows the panel's accent so it doesn't look like a generic floating button. */ .lp-swap-btn { width: 32px !important; height: 32px !important; border-radius: 10px !important; border: 1px solid #e2e8f0 !important; background: #ffffff !important; color: #475569 !important; transition: all 0.2s ease; } .lp-swap-btn:hover { background: #f8fafc !important; border-color: #cbd5e1 !important; color: #1e293b !important; transform: rotate(180deg); } .pickup-panel .lp-swap-btn:hover { color: #1890ff !important; border-color: rgba(24, 144, 255, 0.35) !important; } .drop-panel .lp-swap-btn:hover { color: #65387a !important; border-color: rgba(101, 56, 122, 0.35) !important; } .lp-swap-btn.Mui-disabled { background: #f8fafc !important; border-color: #eef2f6 !important; color: #cbd5e1 !important; } .lp-header-title { display: flex; align-items: center; gap: 12px; } .lp-badge { width: 34px; height: 34px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 15px; color: #fff; flex-shrink: 0; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.10); } .pickup-panel .lp-badge { background: linear-gradient(135deg, #1890ff, #096dd9); box-shadow: 0 6px 14px rgba(24, 144, 255, 0.30); } .drop-panel .lp-badge { background: linear-gradient(135deg, #a855f7, #65387a); box-shadow: 0 6px 14px rgba(101, 56, 122, 0.30); } .lp-title { font-size: 15px; font-weight: 700; color: #1e293b; line-height: 1.2; } .lp-subtitle { font-size: 11.5px; color: #94a3b8; margin-top: 1px; } .lp-action-btn { text-transform: none !important; font-weight: 600 !important; font-size: 12px !important; border-radius: 8px !important; padding: 5px 11px !important; letter-spacing: 0.2px !important; min-height: 30px !important; } .pickup-panel .lp-action-btn { color: #1890ff !important; background: rgba(24, 144, 255, 0.08) !important; } .pickup-panel .lp-action-btn:hover { background: rgba(24, 144, 255, 0.16) !important; } .drop-panel .lp-action-btn { color: #65387a !important; background: rgba(168, 85, 247, 0.10) !important; } .drop-panel .lp-action-btn:hover { background: rgba(168, 85, 247, 0.18) !important; } .lp-action-btn.Mui-disabled { color: #cbd5e1 !important; background: #f8fafc !important; } /* Ghost variant used for secondary actions (e.g. "Same as Pickup") */ .lp-action-btn--ghost { color: #475569 !important; background: transparent !important; border: 1px dashed #cbd5e1 !important; } .lp-action-btn--ghost:hover { color: #1e293b !important; background: #f8fafc !important; border-color: #94a3b8 !important; } .lp-action-btn--ghost.Mui-disabled { color: #cbd5e1 !important; background: transparent !important; border-color: #e2e8f0 !important; } /* Inline helper under the address search input — replaces the boxed wrapper */ .address-search-helper { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 13px !important; font-weight: 500 !important; margin-top: 6px !important; margin-left: 2px !important; } .address-search-helper.pickup-helper { color: #1890ff !important; } .address-search-helper.drop-helper { color: #65387a !important; } /* Field group caption */ .field-group-caption { display: flex; align-items: center; gap: 8px; font-size: 10.5px; font-weight: 700; letter-spacing: 0.7px; text-transform: uppercase; color: #64748b; margin-bottom: 8px; } .field-group-caption::after { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg, #e2e8f0 0%, transparent 100%); } .field-group-dot { width: 7px; height: 7px; border-radius: 50%; display: inline-block; } .pickup-panel .field-group-dot { background: #1890ff; } .drop-panel .field-group-dot { background: #65387a; } /* Address search highlight */ .address-search-block { background: rgba(24, 144, 255, 0.04); border-radius: 12px; padding: 16px; border: 1px solid rgba(24, 144, 255, 0.12); transition: border-color 0.2s ease; } .drop-panel .address-search-block { background: rgba(168, 85, 247, 0.04); border: 1px solid rgba(101, 56, 122, 0.12); } .address-search-block:focus-within { border-color: rgba(24, 144, 255, 0.4); } .drop-panel .address-search-block:focus-within { border-color: rgba(101, 56, 122, 0.4); } .address-search-hint { display: flex; align-items: center; gap: 6px; font-size: 11.5px; color: #64748b; margin-bottom: 12px; font-weight: 500; } /* Save-for-later pill */ .save-later-pill { display: inline-flex; align-items: center; gap: 6px; background: linear-gradient(135deg, rgba(34, 197, 94, 0.10), rgba(34, 197, 94, 0.04)); border: 1px dashed #86efac; border-radius: 999px; padding: 4px 12px 4px 8px; margin-top: 4px; } .save-later-pill .MuiFormControlLabel-root { margin: 0; } .save-later-pill .MuiCheckbox-root { padding: 4px; color: #22c55e; } .save-later-pill .MuiTypography-root { font-size: 13.5px; font-weight: 600; color: #15803d; } /* ============================================== */ /* Vertical Route Flow (Pickup -> Drop) */ /* ============================================== */ .route-flow { display: flex; flex-direction: column; gap: 18px; } .route-flow-link { display: flex; align-items: center; justify-content: flex-start; position: relative; padding: 22px 0 22px 31px; gap: 18px; min-height: 80px; } .route-flow-link::before { content: ''; position: absolute; left: 46px; top: 0; bottom: 0; width: 2px; background: repeating-linear-gradient(to bottom, #cbd5e1, #cbd5e1 4px, transparent 4px, transparent 8px); z-index: 1; } .route-flow-arrow { position: relative; z-index: 2; display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 50%; background: #ffffff; border: 2px solid #cbd5e1; color: #64748b; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04); transition: all 0.25s ease; } .route-flow-arrow:hover { background: linear-gradient(135deg, #1890ff, #65387a); color: #fff; border-color: transparent; transform: scale(1.05); } .route-flow-distance { display: inline-flex; align-items: center; gap: 8px; background: linear-gradient(135deg, rgba(24, 144, 255, 0.08), rgba(168, 85, 247, 0.08)); border: 1px dashed rgba(101, 56, 122, 0.25); border-radius: 999px; padding: 6px 16px; font-size: 14px; font-weight: 600; color: #475569; } .route-flow-distance .dist-value { color: #1890ff; font-weight: 700; font-size: 14.5px; } .route-flow-distance .dist-label { color: #64748b; font-weight: 500; font-size: 13.5px; } .route-flow-distance .dist-route { display: inline-flex; align-items: center; gap: 5px; margin-right: 2px; } .route-flow-distance .dist-dot { width: 7px; height: 7px; border-radius: 50%; display: inline-block; } .route-flow-distance .dist-dot--pick { background: #1890ff; box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.18); } .route-flow-distance .dist-dot--drop { background: #65387a; box-shadow: 0 0 0 2px rgba(101, 56, 122, 0.18); } .route-flow-distance .dist-arrow { color: #94a3b8; font-size: 11px; line-height: 1; } .route-flow-distance .dist-placeholder { color: #94a3b8; font-weight: 500; font-style: italic; font-size: 13.5px; } /* Swap pickup ↔ drop button in the route connector */ .route-flow-swap { margin-left: auto !important; display: inline-flex !important; align-items: center !important; gap: 6px !important; text-transform: none !important; font-weight: 600 !important; font-size: 13.5px !important; letter-spacing: 0.2px !important; color: #475569 !important; background: #ffffff !important; border: 1px solid #e2e8f0 !important; border-radius: 999px !important; padding: 6px 14px !important; min-width: 0 !important; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04); transition: all 0.2s ease; } .route-flow-swap:hover { color: #1e293b !important; background: #f8fafc !important; border-color: #cbd5e1 !important; transform: translateY(-1px); box-shadow: 0 4px 10px -2px rgba(0, 0, 0, 0.08); } .route-flow-swap.Mui-disabled { color: #cbd5e1 !important; border-color: #eef2f6 !important; background: #ffffff !important; box-shadow: none; } /* Workspace background — dashboard shell. Outer page is locked to 100vh on md+, no body scroll. Columns scroll internally. sx-level rules on the JSX wrapper drive height/overflow per breakpoint — keep this class background-only so it doesn't fight inline styles. */ .orders-workspace-bg { background: linear-gradient(135deg, #f8fafc 0%, #edf2f7 100%) !important; } /* Internal-scroll columns: thin, on-hover scrollbar that doesn't intrude on the design */ .dashboard-scroll-col { scrollbar-width: thin; scrollbar-color: rgba(148, 163, 184, 0.4) transparent; } .dashboard-scroll-col::-webkit-scrollbar { width: 8px; } .dashboard-scroll-col::-webkit-scrollbar-track { background: transparent; } .dashboard-scroll-col::-webkit-scrollbar-thumb { background-color: rgba(148, 163, 184, 0.35); border-radius: 999px; border: 2px solid transparent; background-clip: padding-box; } .dashboard-scroll-col:hover::-webkit-scrollbar-thumb { background-color: rgba(100, 116, 139, 0.55); background-clip: padding-box; } /* Card section title with a leading gradient accent strip. Used by "Other Details" and "Schedule" cards (and any other card section that wants a premium-feeling left-edge accent before its h5 title). */ .section-title-bar { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; } .section-title-bar::before { content: ''; width: 4px; height: 22px; border-radius: 4px; background: linear-gradient(180deg, #1890ff, #096dd9); flex-shrink: 0; } /* Accent variant for the Schedule card — uses the purple/violet gradient from the drop-panel so users get a subtle visual cue distinguishing sections without needing labels. */ .section-title-bar--accent::before { background: linear-gradient(180deg, #a855f7, #65387a); } .section-title-bar .MuiTypography-root { margin-bottom: 0 !important; line-height: 1.2; } /* Service Configuration Horizontal Header Row */ .service-config-bar { background: rgba(255, 255, 255, 0.75) !important; backdrop-filter: blur(16px) !important; -webkit-backdrop-filter: blur(16px) !important; border: 1px solid rgba(255, 255, 255, 0.6) !important; border-radius: 12px !important; box-shadow: 0 4px 20px -5px rgba(148, 163, 184, 0.1) !important; padding: 12px 20px !important; margin-bottom: 12px !important; flex-shrink: 0; } /* Main Dashboard 3-Column Console Wrapper */ .console-dashboard-layout { display: flex; gap: 16px; flex: 1; overflow: hidden; } /* Balanced Left & Right Panes */ .console-left-pane { flex: 1.7; /* ~63% width */ display: flex; flex-direction: column; gap: 12px; overflow-y: auto; padding-right: 4px; } .console-right-pane { flex: 1; /* ~37% width */ display: flex; flex-direction: column; gap: 12px; overflow-y: auto; padding-right: 4px; } /* Custom Scrollbar for Individual Columns to keep console extremely clean */ .console-left-pane::-webkit-scrollbar, .console-right-pane::-webkit-scrollbar { width: 4px; } .console-left-pane::-webkit-scrollbar-track, .console-right-pane::-webkit-scrollbar-track { background: transparent; } .console-left-pane::-webkit-scrollbar-thumb, .console-right-pane::-webkit-scrollbar-thumb { background: rgba(148, 163, 184, 0.3); border-radius: 99px; } .console-left-pane::-webkit-scrollbar-thumb:hover, .console-right-pane::-webkit-scrollbar-thumb:hover { background: rgba(148, 163, 184, 0.5); } /* Glassmorphism Card Style */ .glass-card { background: rgba(255, 255, 255, 0.8) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border: 1px solid rgba(255, 255, 255, 0.5) !important; border-radius: 12px !important; box-shadow: 0 10px 25px -5px rgba(62, 73, 84, 0.04), 0 4px 12px -2px rgba(62, 73, 84, 0.02) !important; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important; } .glass-card:hover { box-shadow: 0 16px 35px -8px rgba(62, 73, 84, 0.07), 0 6px 16px -3px rgba(62, 73, 84, 0.03) !important; border-color: rgba(255, 255, 255, 0.8) !important; } /* Premium Focus Glows inside Location Panel inputs */ .pickup-panel .MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline { border-color: #0ea5e9 !important; box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.12); } .drop-panel .MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline { border-color: #a855f7 !important; box-shadow: 0 0 0 3px rgba(168, 85, 247, 0.12); } /* Glowing active weight selector card variants */ .weight-card-btn.active.weight-light { background: rgba(14, 165, 233, 0.04) !important; border-color: #0ea5e9 !important; box-shadow: 0 6px 16px rgba(14, 165, 233, 0.15) !important; } .weight-card-btn.active.weight-light::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: #0ea5e9; } .weight-card-btn.active.weight-medium { background: rgba(168, 85, 247, 0.04) !important; border-color: #a855f7 !important; box-shadow: 0 6px 16px rgba(168, 85, 247, 0.15) !important; } .weight-card-btn.active.weight-medium::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: #a855f7; } .weight-card-btn.active.weight-heavy { background: rgba(99, 102, 241, 0.04) !important; border-color: #6366f1 !important; box-shadow: 0 6px 16px rgba(99, 102, 241, 0.15) !important; } .weight-card-btn.active.weight-heavy::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: #6366f1; } /* Premium Card Overrides */ .orders-card { background: #ffffff !important; border: 1px solid #eef2f6 !important; border-radius: 12px !important; box-shadow: 0 10px 25px -5px rgba(62, 73, 84, 0.04), 0 4px 12px -2px rgba(62, 73, 84, 0.02) !important; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important; overflow: hidden; } /* ============================================== */ /* MUI Field Sizing — Readable on large screens */ /* ============================================== */ /* Compact TextField input + label sizes inside Pickup/Drop panels and order cards */ .location-panel .MuiOutlinedInput-root, .orders-card .MuiOutlinedInput-root { font-size: 13px !important; border-radius: 10px !important; } .location-panel .MuiOutlinedInput-input, .orders-card .MuiOutlinedInput-input { font-size: 13px !important; padding-top: 9px !important; padding-bottom: 9px !important; } .location-panel .MuiInputLabel-root, .orders-card .MuiInputLabel-root { font-size: 13px !important; } /* When label is shrunk (floating up), keep it slightly smaller for the float effect */ .location-panel .MuiInputLabel-root.MuiInputLabel-shrink, .orders-card .MuiInputLabel-root.MuiInputLabel-shrink { font-size: 11.5px !important; } /* MUI helper text (validation / hints under fields) */ .location-panel .MuiFormHelperText-root, .orders-card .MuiFormHelperText-root { font-size: 11px !important; margin-top: 3px !important; } /* Autocomplete options dropdown */ .MuiAutocomplete-popper .MuiAutocomplete-option { font-size: 13px !important; padding-top: 6px !important; padding-bottom: 6px !important; min-height: 34px !important; } /* Card section titles (h5 / h6) inside order cards — tighter hierarchy */ .orders-card .MuiTypography-h5 { font-size: 15px !important; } .orders-card .MuiTypography-h6 { font-size: 13.5px !important; } .orders-card:hover { box-shadow: 0 16px 35px -8px rgba(62, 73, 84, 0.08), 0 6px 16px -3px rgba(62, 73, 84, 0.03) !important; } /* Glassmorphic elements */ .glass-panel { background: rgba(255, 255, 255, 0.8) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border: 1px solid rgba(255, 255, 255, 0.5) !important; } /* Trip Route Visual Connector */ .connector-line-wrapper { position: relative; display: flex; align-items: center; justify-content: center; height: 100%; } .connector-line { position: absolute; top: 15%; bottom: 15%; width: 2px; background: repeating-linear-gradient(to bottom, #1890ff, #1890ff 6px, transparent 6px, transparent 12px); z-index: 1; } .connector-icon-wrapper { background: #ffffff; border: 2px solid #1890ff; border-radius: 50%; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 10px rgba(24, 144, 255, 0.15); z-index: 2; transition: all 0.3s ease; } .connector-line-wrapper:hover .connector-icon-wrapper { transform: scale(1.15) rotate(15deg); box-shadow: 0 6px 14px rgba(24, 144, 255, 0.25); } /* Custom Interactive Cargo Weight Selector */ .weight-selector-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; width: 100%; margin: 8px 0; } .weight-card-btn { background: #ffffff; border: 1.5px solid #eef2f6; border-radius: 10px; padding: 10px 8px; display: flex; flex-direction: column; align-items: center; justify-content: center; cursor: pointer; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); text-align: center; user-select: none; position: relative; overflow: hidden; } .weight-card-btn:hover { transform: translateY(-1.5px); border-color: #cbd5e1; background-color: #f8fafc; } .weight-card-btn.active { background: rgba(24, 144, 255, 0.04); border-color: #1890ff; box-shadow: 0 4px 12px -2px rgba(24, 144, 255, 0.12); } .weight-card-btn.active::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: #1890ff; } .weight-card-icon { font-size: 18px; margin-bottom: 4px; color: #64748b; transition: all 0.3s ease; } .weight-card-btn.active .weight-card-icon { color: #1890ff; transform: scale(1.08); } .weight-card-label { font-size: 12.5px; font-weight: 600; color: #334155; margin-bottom: 2px; } .weight-card-desc { font-size: 9.5px; color: #64748b; line-height: 1.2; } /* Live Map Preview Container */ .map-preview-wrapper { position: relative; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05); border: 1px solid #eef2f6; height: 260px; min-height: 260px; } .map-preview-wrapper .leaflet-container { height: 100% !important; min-height: 0 !important; } .map-preview-wrapper > div { min-height: 0 !important; } /* Premium Cost & Metrics Dashboard — compact professional layout */ .pricing-summary-card { background: linear-gradient(135deg, #ffffff 0%, #fafbfc 100%) !important; border: 1px solid #eef2f6 !important; border-radius: 14px !important; padding: 14px 16px !important; } .pricing-header { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid #f1f5f9; } .pricing-title { font-size: 14px !important; font-weight: 700 !important; color: #1e293b !important; letter-spacing: -0.01em; } .pricing-subtitle { font-size: 11px !important; font-weight: 500 !important; color: #94a3b8 !important; text-transform: uppercase; letter-spacing: 0.6px; } .price-metric-item { display: flex; align-items: center; justify-content: space-between; padding: 7px 0; border-bottom: 1px solid #f5f7fa; } .price-metric-item:last-of-type { border-bottom: none; padding-bottom: 4px; } .price-metric-label { font-size: 12.5px; color: #475569; font-weight: 500; display: flex; align-items: center; gap: 10px; min-width: 0; } .price-metric-icon { width: 26px; height: 26px; flex-shrink: 0; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; font-size: 12px; } .price-metric-icon.icon-distance { background: rgba(24, 144, 255, 0.10); color: #1890ff; } .price-metric-icon.icon-base { background: rgba(34, 197, 94, 0.10); color: #16a34a; } .price-metric-icon.icon-rate { background: rgba(245, 158, 11, 0.12); color: #d97706; } .price-metric-sub { color: #94a3b8; font-weight: 500; font-size: 11.5px; } .price-metric-value { font-size: 13.5px; font-weight: 700; color: #1e293b; display: inline-flex; align-items: baseline; gap: 2px; white-space: nowrap; } .price-metric-value.highlight { color: #1890ff; } .price-metric-unit { font-size: 11px; font-weight: 500; color: #94a3b8; margin-left: 2px; } .total-charge-badge { background: linear-gradient(135deg, rgba(24, 144, 255, 0.08) 0%, rgba(101, 56, 122, 0.10) 100%); border: 1px solid rgba(101, 56, 122, 0.18); border-radius: 10px; padding: 10px 14px; display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 12px; } .total-charge-left { display: inline-flex; align-items: center; gap: 8px; min-width: 0; } .total-charge-icon { font-size: 13px; color: #65387A; flex-shrink: 0; } .total-charge-label { font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.6px; color: #65387A; } .total-charge-val { font-size: 20px; font-weight: 800; color: #65387A; line-height: 1.1; letter-spacing: -0.01em; white-space: nowrap; } /* Gradient Action Button — compact professional */ .gradient-btn-create { background: linear-gradient(135deg, #1890ff 0%, #65387a 100%) !important; color: #ffffff !important; font-weight: 600 !important; font-size: 13px !important; letter-spacing: 0.01em !important; text-transform: none !important; border-radius: 10px !important; padding: 8px 18px !important; min-height: 38px !important; box-shadow: 0 4px 12px -3px rgba(24, 144, 255, 0.30), 0 2px 4px rgba(101, 56, 122, 0.10) !important; transition: all 0.22s cubic-bezier(0.4, 0, 0.2, 1) !important; border: none !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; gap: 8px !important; } .gradient-btn-create .MuiButton-startIcon, .gradient-btn-create .MuiButton-endIcon { margin: 0 !important; } .gradient-btn-create:hover { filter: brightness(1.04); box-shadow: 0 8px 18px -4px rgba(24, 144, 255, 0.40), 0 3px 8px rgba(101, 56, 122, 0.18) !important; } .gradient-btn-create:active { filter: brightness(0.98); } .gradient-btn-create.Mui-disabled, .gradient-btn-create:disabled { background: #e2e8f0 !important; color: #94a3b8 !important; box-shadow: none !important; cursor: not-allowed !important; } /* Completion checklist */ .completion-checklist { margin: 16px 0; padding: 0; list-style: none; } .completion-item { display: flex; align-items: center; gap: 12px; font-size: 14.5px; color: #64748b; margin-bottom: 10px; transition: all 0.3s ease; line-height: 1.4; } .completion-item.completed { color: #0f172a; font-weight: 600; } .completion-bullet { width: 10px; height: 10px; border-radius: 50%; background-color: #cbd5e1; flex-shrink: 0; transition: all 0.3s ease; } .completion-item.completed .completion-bullet { background-color: #10b981; box-shadow: 0 0 8px #10b981; } /* Saved Address Modal Cards */ .address-card-btn { width: 100%; border: 1.5px solid #eef2f6 !important; border-radius: 12px !important; padding: 16px !important; background: #ffffff !important; text-transform: none !important; transition: all 0.2s ease !important; margin-bottom: 12px; } .address-card-btn:hover { border-color: #1890ff !important; background-color: rgba(24, 144, 255, 0.02) !important; transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.03); } .address-card-btn:disabled { background-color: #f8fafc !important; border-color: #e2e8f0 !important; opacity: 0.7; } /* Status pulses */ .pulse-indicator { width: 8px; height: 8px; border-radius: 50%; background: #10b981; box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7); animation: pulse-green 2s infinite; } @keyframes pulse-green { 0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7); } 70% { transform: scale(1); box-shadow: 0 0 0 6px rgba(16, 185, 129, 0); } 100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); } } .pulse-yellow { background: #f59e0b; box-shadow: 0 0 0 0 rgba(245, 158, 11, 0.7); animation: pulse-yellow-anim 2s infinite; } @keyframes pulse-yellow-anim { 0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(245, 158, 11, 0.7); } 70% { transform: scale(1); box-shadow: 0 0 0 6px rgba(245, 158, 11, 0); } 100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(245, 158, 11, 0); } } /* Form layout responsiveness adjustments */ @media (max-width: 959px) { .connector-line-wrapper { display: none; } } /* ============================================== */ /* Side-by-Side Pickup / Drop (md+ breakpoint) */ /* At md+ the route flow rotates to horizontal: */ /* [ PICKUP ] [ vertical connector ] [ DROP ] */ /* ============================================== */ @media (min-width: 900px) { .route-flow { flex-direction: row; align-items: stretch; gap: 16px; } /* Each panel takes equal share of the row; min-width: 0 prevents flex blow-out */ .route-flow > .location-panel { flex: 1 1 0; min-width: 0; } /* Stack the inner field grids vertically — at ~340px panel width, side-by-side fields don't have room for label + icon adornment + input. Force one column per panel. */ .route-flow > .location-panel .MuiGrid-container > .MuiGrid-item { flex-basis: 100% !important; max-width: 100% !important; } /* Connector becomes a narrow vertical strip between the two panels */ .route-flow-link { flex-direction: column; align-items: center; justify-content: center; padding: 8px 4px; min-height: 0; min-width: 92px; flex-shrink: 0; gap: 14px; } /* The vertical dashed line was a guide for the vertical layout — hide it in row mode. The arrow circle + colored panel borders carry enough visual cue on their own. */ .route-flow-link::before { display: none; } /* Rotate the down-arrow to point right (pickup → drop direction) */ .route-flow-arrow svg { transform: rotate(-90deg); transition: transform 0.25s ease; } /* Swap button no longer floats right — it stacks beneath the distance pill */ .route-flow-swap { margin-left: 0 !important; margin-top: 0 !important; } /* Distance pill: stack vertically inside the narrow connector column — route dots on top, value below — and drop the "Distance" label since the pill's existence is self-explanatory in this position. */ .route-flow-distance { flex-direction: column; gap: 4px; padding: 8px 10px; text-align: center; line-height: 1.2; } .route-flow-distance .dist-label { display: none; } /* Compact the placeholder text so it fits when no addresses are set yet */ .route-flow-distance .dist-placeholder { font-size: 11px; line-height: 1.3; } } /* On very wide screens (xl+), restore the 2-col inner grid inside each panel — panels are now wide enough (~440px+) for label + icon + input pairs. */ @media (min-width: 1536px) { .route-flow > .location-panel .MuiGrid-container > .MuiGrid-item.MuiGrid-grid-sm-6 { flex-basis: 50% !important; max-width: 50% !important; } } /* Act as senior frontend engineer and UI/UX specialist: Scale down visual elements, paddings, and font sizes on laptop screens to reclaim precious screen space and maintain a high-density, premium look. */ @media (max-width: 1400px) { .orders-card .MuiTypography-h5 { font-size: 17px !important; } .orders-card .MuiTypography-h6 { font-size: 14.5px !important; } .lp-title { font-size: 15.5px; } .lp-subtitle { font-size: 12px; margin-top: 1px; } .lp-badge { width: 36px; height: 36px; border-radius: 10px; font-size: 15px; } .lp-action-btn { font-size: 12.5px !important; padding: 5px 10px !important; } .route-flow-link { padding: 16px 0 16px 26px; min-height: 60px; } .route-flow-link::before { left: 41px; } .route-flow-arrow { width: 28px; height: 28px; } .route-flow-distance { padding: 4px 12px; font-size: 12.5px; } .route-flow-swap { font-size: 12px !important; padding: 4px 10px !important; } .map-preview-wrapper { height: 220px; min-height: 220px; } .weight-card-btn { padding: 8px 6px; } .weight-card-label { font-size: 11.5px; } .weight-card-desc { font-size: 9px; } .orders-card { padding: 16px !important; /* Tighten general card padding from 24px */ } .orders-card.page-header-row { padding: 10px 16px !important; /* Tighten the header row padding */ } } /* Reclaim unused screen space around the workspace card on desktop and laptop viewports */ @media (min-width: 900px) { /* Expand the maximum width of the layout container so it spans the screen and removes empty margins */ .MuiContainer-root:has(.orders-workspace-bg) { max-width: 1600px !important; padding-left: 16px !important; padding-right: 16px !important; } /* Reduce the spacing outside the page container */ main:has(.orders-workspace-bg) { padding: 16px !important; } } /* ============================================== */ /* Compact header dropdowns (Location / Client / Business Location) */ /* ============================================== */ .header-compact-tf .MuiOutlinedInput-root { border-radius: 10px !important; height: 40px !important; padding-left: 10px !important; font-size: 12.5px !important; background: #ffffff; } .header-compact-tf .MuiOutlinedInput-input { padding-top: 6px !important; padding-bottom: 6px !important; font-size: 12.5px !important; } .header-compact-tf .MuiInputLabel-root { font-size: 11.5px !important; letter-spacing: 0.02em; font-weight: 600; color: #64748b !important; } .header-compact-tf .MuiInputLabel-shrink { transform: translate(12px, -7px) scale(0.82) !important; background: #ffffff; padding: 0 4px; } .header-compact-tf .MuiOutlinedInput-notchedOutline { border-color: #e2e8f0; } .header-compact-tf:hover .MuiOutlinedInput-notchedOutline { border-color: #cbd5e1; } .header-compact-tf .Mui-focused .MuiOutlinedInput-notchedOutline { border-width: 1.5px !important; } /* Autocomplete-specific tweaks: vertically center the clear / popup icons */ .header-compact-input .MuiAutocomplete-endAdornment { top: 50%; transform: translateY(-50%); right: 8px; display: inline-flex; align-items: center; height: auto; gap: 2px; } .header-compact-input .MuiAutocomplete-endAdornment .MuiSvgIcon-root { font-size: 16px; display: block; } .header-compact-input .MuiAutocomplete-clearIndicator, .header-compact-input .MuiAutocomplete-popupIndicator { padding: 3px !important; width: 22px; height: 22px; display: inline-flex; align-items: center; justify-content: center; color: #94a3b8 !important; } .header-compact-input .MuiAutocomplete-clearIndicator:hover, .header-compact-input .MuiAutocomplete-popupIndicator:hover { background: rgba(148, 163, 184, 0.12) !important; color: #475569 !important; } .header-compact-input .MuiAutocomplete-popupIndicator { margin-right: 0; } .header-compact-input .MuiOutlinedInput-root { padding-top: 0 !important; padding-bottom: 0 !important; padding-right: 60px !important; } .header-compact-input .MuiAutocomplete-input { padding: 4px 4px 4px 0 !important; height: auto !important; } /* Title row alignment tweak for tighter header */ .page-header-row { min-height: 0 !important; } /* ============================================== */ /* Delivery Preferences Card */ /* (Special Dispatch Notes + SMS Updates) */ /* ============================================== */ .delivery-prefs-card { background: linear-gradient(135deg, #ffffff 0%, #fbfcff 100%) !important; border: 1px solid #eef2f6 !important; border-radius: 14px !important; } .delivery-prefs-header { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid #f1f5f9; } .delivery-prefs-title { font-size: 14px !important; font-weight: 700 !important; color: #1e293b !important; letter-spacing: -0.01em; line-height: 1.2; } .delivery-prefs-sub { font-size: 10.5px !important; font-weight: 500 !important; color: #94a3b8 !important; text-transform: uppercase; letter-spacing: 0.55px; text-align: right; line-height: 1.2; } .delivery-prefs-row { display: flex; flex-direction: column; gap: 10px; } .delivery-prefs-field { display: flex; flex-direction: column; gap: 5px; } .delivery-prefs-label { display: inline-flex; align-items: center; gap: 5px; font-size: 10.5px; font-weight: 700; letter-spacing: 0.55px; text-transform: uppercase; color: #64748b; } /* SMS toggle tile — a card-like clickable strip */ .sms-toggle-tile { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 12px; border-radius: 10px; border: 1px solid #eef2f6; background: #fafbfc; cursor: pointer; user-select: none; transition: border-color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease; } .sms-toggle-tile:hover { border-color: #cbd5e1; background: #ffffff; } .sms-toggle-tile.is-active { background: linear-gradient(135deg, rgba(24, 144, 255, 0.06) 0%, rgba(101, 56, 122, 0.05) 100%); border-color: rgba(24, 144, 255, 0.28); box-shadow: 0 3px 10px -3px rgba(24, 144, 255, 0.18); } .sms-toggle-left { display: inline-flex; align-items: center; gap: 9px; min-width: 0; } .sms-toggle-icon { width: 28px; height: 28px; flex-shrink: 0; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; background: #eef2f6; color: #94a3b8; transition: all 0.2s ease; } .sms-toggle-tile.is-active .sms-toggle-icon { background: linear-gradient(135deg, #1890ff, #65387a); color: #ffffff; box-shadow: 0 3px 10px rgba(101, 56, 122, 0.22); } .sms-toggle-title { font-size: 12.5px !important; font-weight: 700 !important; color: #1e293b !important; line-height: 1.2 !important; letter-spacing: -0.005em; } .sms-toggle-sub { font-size: 10.5px !important; color: #94a3b8 !important; font-weight: 500 !important; margin-top: 1px !important; line-height: 1.2 !important; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .sms-toggle-tile .MuiSwitch-root { flex-shrink: 0; } /* ============================================== */ /* Pickup → Drop Two-Step Stepper */ /* ============================================== */ .route-stepper { display: flex; align-items: stretch; gap: 0; padding: 4px; margin-bottom: 12px; background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); border: 1px solid #e2e8f0; border-radius: 12px; } .route-step { flex: 1; display: flex; align-items: center; gap: 10px; padding: 6px 10px; border-radius: 9px; cursor: pointer; transition: background-color 0.22s ease, box-shadow 0.22s ease, transform 0.22s ease; user-select: none; background: transparent; outline: none; } .route-step:hover { background: rgba(255, 255, 255, 0.6); } .route-step.is-active { background: #ffffff; box-shadow: 0 6px 18px -8px rgba(15, 23, 42, 0.12), 0 2px 6px -2px rgba(15, 23, 42, 0.06); transform: translateY(-1px); } .route-step.is-locked { cursor: not-allowed; opacity: 0.6; } .route-step.is-locked:hover { background: transparent; } .route-step-index { width: 26px; height: 26px; flex-shrink: 0; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: 12px; color: #94a3b8; background: #ffffff; border: 1.5px solid #e2e8f0; transition: all 0.22s ease; } .step-pickup.is-active .route-step-index { background: linear-gradient(135deg, #1890ff, #096dd9); border-color: transparent; color: #ffffff; box-shadow: 0 4px 12px rgba(24, 144, 255, 0.32); } .step-drop.is-active .route-step-index { background: linear-gradient(135deg, #a855f7, #65387a); border-color: transparent; color: #ffffff; box-shadow: 0 4px 12px rgba(101, 56, 122, 0.32); } .step-pickup.is-done:not(.is-active) .route-step-index { background: rgba(34, 197, 94, 0.12); border-color: rgba(34, 197, 94, 0.35); color: #16a34a; } .route-step-text { display: flex; flex-direction: column; line-height: 1.2; } .route-step-title { font-size: 13px !important; font-weight: 700 !important; color: #1e293b !important; letter-spacing: -0.01em; } .route-step.is-locked .route-step-title { color: #94a3b8 !important; } .route-step-sub { font-size: 10.5px !important; font-weight: 500 !important; color: #94a3b8 !important; margin-top: 1px !important; } .route-step-connector { flex-shrink: 0; display: flex; align-items: center; justify-content: center; padding: 0 6px; position: relative; min-width: 28px; } .route-step-line { width: 100%; height: 2px; background: #e2e8f0; border-radius: 2px; transition: background 0.3s ease; } .route-step-connector.is-done .route-step-line { background: linear-gradient(90deg, #1890ff, #a855f7); } .route-step-line-arrow { position: absolute; display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: #ffffff; border: 1.5px solid #e2e8f0; color: #cbd5e1; font-size: 10px; transition: all 0.3s ease; } .route-step-connector.is-done .route-step-line-arrow { border-color: rgba(168, 85, 247, 0.4); color: #a855f7; } /* Step navigation footer inside each panel */ .step-nav { margin-top: 12px; padding-top: 10px; border-top: 1px dashed #e2e8f0; display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; } .step-nav-hint { font-size: 11.5px !important; color: #64748b !important; font-weight: 500 !important; } .step-nav-btn { text-transform: none !important; font-weight: 600 !important; border-radius: 8px !important; padding: 6px 14px !important; font-size: 12px !important; letter-spacing: 0.01em !important; transition: all 0.22s ease !important; min-height: 32px !important; } .step-nav-next { background: linear-gradient(135deg, #1890ff, #65387a) !important; color: #ffffff !important; box-shadow: 0 6px 18px -6px rgba(101, 56, 122, 0.35) !important; } .step-nav-next:hover { filter: brightness(1.05); transform: translateY(-1px); box-shadow: 0 10px 22px -8px rgba(101, 56, 122, 0.45) !important; } .step-nav-next.Mui-disabled { background: #e2e8f0 !important; color: #94a3b8 !important; box-shadow: none !important; } .step-nav-back { color: #475569 !important; background: #f1f5f9 !important; border: 1px solid #e2e8f0 !important; } .step-nav-back:hover { background: #e2e8f0 !important; color: #1e293b !important; } @media (max-width: 599px) { .route-step-sub { display: none !important; } .route-step { padding: 8px 10px; gap: 8px; } .route-step-index { width: 28px; height: 28px; font-size: 13px; } .step-nav { flex-direction: column-reverse; align-items: stretch; } .step-nav-btn { width: 100%; } }