/* * Quick Order Page — FruitBank / CarHaven Theme * Design tokens inherited from themes/CarHaven/Content/css/styles.css :root * --theme-color : #2d7a3a (forest green) * --active-color: #f4a236 (amber / CTA) * --dark : #1a3c22 (dark green) * --light-bg : #f5f7f2 (off-white green tint) * --text-primary: #2c2c2c * --text-muted : #6b7c6e * --accent-lime : #8cb63c * --warm-bg : #faebd7 * font : 'DM Sans', sans-serif * radius : 8px */ /* ───────────────────────────────────────────── PAGE SHELL ───────────────────────────────────────────── */ .quick-order-page { width: 94%; max-width: 1400px; margin: 0 auto; padding: 24px 0 60px; font-family: 'DM Sans', sans-serif; color: #2c2c2c; } /* ───────────────────────────────────────────── SEARCH BAR ───────────────────────────────────────────── */ .qo-search-bar-wrapper { background: #fff; border: 1px solid #dde8da; border-radius: 8px; box-shadow: 0 2px 10px rgba(45, 122, 58, 0.08); padding: 18px 20px; margin-bottom: 24px; } .search-input-group { display: flex; align-items: center; gap: 0; } /* Mic button */ .mic-btn { flex-shrink: 0; width: 46px; height: 46px; border: 2px solid #2d7a3a; background: #fff; color: #2d7a3a; border-radius: 8px 0 0 8px; font-size: 18px; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: background 0.2s, color 0.2s; position: relative; } .mic-btn:hover { background: #2d7a3a; color: #fff; } .mic-btn-recording { background: #1a3c22; color: #f4a236; border-color: #1a3c22; animation: mic-pulse 1.4s ease-in-out infinite; } @keyframes mic-pulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(244,162,54,.5); } 50% { box-shadow: 0 0 0 8px rgba(244,162,54,0); } } .mic-pulse { display: none; } /* Search text input */ .qo-input { flex: 1; height: 46px; border: 2px solid #dde8da; border-left: none; border-right: none; border-radius: 0; padding: 0 16px; font-size: 15px; font-family: 'DM Sans', sans-serif; color: #2c2c2c; outline: none; transition: border-color 0.2s; } .qo-input:focus { border-color: #2d7a3a; z-index: 1; } .qo-input::placeholder { color: #6b7c6e; } /* Search button */ .qo-search-btn { flex-shrink: 0; height: 46px; padding: 0 22px; background: #2d7a3a; color: #fff; border: 2px solid #2d7a3a; border-radius: 0 8px 8px 0; font-size: 14px; font-family: 'DM Sans', sans-serif; font-weight: 600; letter-spacing: 0.3px; cursor: pointer; transition: background 0.2s; white-space: nowrap; } .qo-search-btn:hover { background: #1a3c22; border-color: #1a3c22; } /* Recording status bar */ .recording-status-bar { margin-top: 12px; display: flex; align-items: center; gap: 14px; background: #f5f7f2; border: 1px solid #dde8da; border-radius: 6px; padding: 8px 14px; } #statusText { font-size: 13px; color: #2d7a3a; font-weight: 600; min-width: 130px; white-space: nowrap; } .volume-bar-container { flex: 1; height: 6px; background: #dde8da; border-radius: 3px; overflow: hidden; } .volume-bar { height: 100%; width: 0; border-radius: 3px; transition: width 0.1s ease, background 0.2s; background: #dde8da; } .volume-bar-low { background: #f4a236; } .volume-bar-medium { background: #8cb63c; } .volume-bar-high { background: #2d7a3a; } .volume-bar-silent { background: #dde8da; } /* ───────────────────────────────────────────── TWO-COLUMN LAYOUT ───────────────────────────────────────────── */ .qo-layout { display: grid; grid-template-columns: 1fr 340px; gap: 24px; align-items: start; } /* ───────────────────────────────────────────── PRODUCTS PANEL (LEFT) ───────────────────────────────────────────── */ /* "I heard" transcription card */ .result-card { background: #fff; border: 1px solid #dde8da; border-left: 4px solid #2d7a3a; border-radius: 8px; padding: 14px 18px; margin-bottom: 16px; } .result-label { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.6px; color: #2d7a3a; margin-bottom: 4px; } .result-text { font-size: 15px; color: #2c2c2c; } /* No results / empty */ .no-results-card { background: #fff; border: 1px dashed #dde8da; border-radius: 8px; text-align: center; padding: 40px 20px; color: #6b7c6e; font-size: 15px; } .no-results-card .fa { font-size: 28px; color: #dde8da; margin-bottom: 10px; display: block; } /* Loading state */ .products-empty-state { background: #fff; border: 1px solid #dde8da; border-radius: 8px; text-align: center; padding: 48px 20px; color: #6b7c6e; } .products-empty-state .fa { font-size: 28px; color: #2d7a3a; margin-bottom: 10px; display: block; } /* Section header above product list */ .matches-label { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; color: #6b7c6e; margin-bottom: 10px; display: flex; align-items: center; gap: 6px; } .matches-label .fa { color: #2d7a3a; font-size: 14px; } /* Group label (search results grouped by keyword) */ .group-label { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; color: #f4a236; border-bottom: 1px solid #f5f7f2; padding: 4px 0 8px; margin: 12px 0 6px; display: flex; align-items: center; gap: 6px; } /* ───────────────────────────────────────────── PRODUCT LIST — full-width rows ───────────────────────────────────────────── */ .product-grid { display: flex; flex-direction: column; gap: 6px; } .product-card { background: #fff; border: 1px solid #dde8da; border-radius: 8px; padding: 10px 14px; display: flex; flex-direction: row; align-items: center; gap: 14px; transition: box-shadow 0.18s, border-color 0.18s; } .product-card:hover { box-shadow: 0 3px 12px rgba(45, 122, 58, 0.10); border-color: #2d7a3a; } .product-card.has-warning { border-left: 3px solid #f4a236; } /* Body — grows, holds name + meta inline */ .pc-body { flex: 1; min-width: 0; display: flex; align-items: center; flex-wrap: wrap; gap: 6px 14px; } /* Product name */ .pc-name { font-size: 14px; font-weight: 700; color: #1a3c22; line-height: 1.3; display: flex; align-items: flex-start; gap: 5px; flex: 1 1 200px; min-width: 0; } .pc-name .fa { color: #8cb63c; font-size: 12px; margin-top: 2px; flex-shrink: 0; } /* Meta row — stock + price inline */ .pc-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; flex-shrink: 0; } .pc-stock { font-size: 12px; color: #6b7c6e; background: #f5f7f2; border-radius: 4px; padding: 2px 8px; white-space: nowrap; } .pc-stock.stock-low { background: #fff8ee; color: #e8734a; } .pm-price { font-size: 13px; font-weight: 700; color: #2d7a3a; white-space: nowrap; } /* Badges */ .stock-warning-badge { font-size: 11px; color: #e8734a; display: flex; align-items: center; gap: 4px; white-space: nowrap; } .measurable-badge { font-size: 11px; background: #faebd7; color: #e8734a; border-radius: 4px; padding: 2px 8px; display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; } /* Actions — fixed width, right-aligned */ .pc-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; } /* Qty stepper */ .qty-stepper { display: flex; align-items: center; border: 1px solid #dde8da; border-radius: 8px; overflow: hidden; } .qty-btn { width: 34px; height: 36px; background: #f5f7f2; border: none; color: #2d7a3a; font-size: 12px; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: background 0.15s; flex-shrink: 0; } .qty-btn:hover { background: #dde8da; } .qty-input { width: 48px; height: 36px; border: none; border-left: 1px solid #dde8da; border-right: 1px solid #dde8da; text-align: center; font-size: 14px; font-weight: 700; color: #1a3c22; font-family: 'DM Sans', sans-serif; -moz-appearance: textfield; } .qty-input::-webkit-outer-spin-button, .qty-input::-webkit-inner-spin-button { -webkit-appearance: none; } /* Add to cart button */ .pc-add-btn { width: 36px; height: 36px; background: #2d7a3a; color: #fff; border: none; border-radius: 8px; font-size: 16px; display: flex; align-items: center; justify-content: center; cursor: pointer; flex-shrink: 0; transition: background 0.18s, transform 0.12s; } .pc-add-btn:hover { background: #1a3c22; transform: scale(1.06); } .pc-add-btn:disabled { background: #dde8da; cursor: default; transform: none; } .pc-add-btn.added { background: #8cb63c; } /* ───────────────────────────────────────────── CART PANEL (RIGHT) ───────────────────────────────────────────── */ .qo-cart-panel { background: #fff; border: 1px solid #dde8da; border-radius: 8px; box-shadow: 0 2px 10px rgba(45, 122, 58, 0.06); position: sticky; top: 16px; overflow: hidden; } .qo-section-title { background: #1a3c22; color: #fff; font-size: 15px; font-weight: 700; padding: 14px 18px; display: flex; align-items: center; gap: 8px; letter-spacing: 0.3px; } .qo-section-title .fa { color: #f4a236; font-size: 17px; } .cart-count-badge { background: #f4a236; color: #fff; font-size: 11px; font-weight: 700; border-radius: 12px; padding: 1px 7px; margin-left: auto; min-width: 24px; text-align: center; } .cart-empty { padding: 36px 20px; text-align: center; color: #6b7c6e; } .cart-empty .fa { font-size: 30px; color: #dde8da; display: block; margin-bottom: 10px; } .cart-empty p { font-size: 14px; line-height: 1.5; } .cart-items-list { padding: 4px 0; max-height: 400px; overflow-y: auto; } .cart-item { padding: 11px 18px; border-bottom: 1px solid #f5f7f2; display: flex; flex-direction: column; gap: 4px; } .cart-item:last-child { border-bottom: none; } .ci-name { font-size: 14px; font-weight: 600; color: #1a3c22; line-height: 1.3; } .ci-details { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } .ci-qty { font-size: 12px; background: #f5f7f2; color: #2d7a3a; font-weight: 700; border-radius: 4px; padding: 1px 7px; } .ci-price { font-size: 12px; color: #6b7c6e; } .line-total { font-size: 13px; font-weight: 700; color: #2d7a3a; margin-left: auto; } .measurable-badge-sm { font-size: 12px; color: #e8734a; margin-left: auto; } .cart-total-row { border-top: 1px solid #dde8da; padding: 14px 18px; background: #f5f7f2; } .cart-total-note { display: flex; align-items: flex-start; gap: 6px; font-size: 11px; color: #6b7c6e; line-height: 1.4; margin-bottom: 10px; } .cart-total-note .fa { color: #f4a236; margin-top: 1px; flex-shrink: 0; } .cart-total { display: flex; justify-content: space-between; align-items: center; font-size: 14px; color: #2c2c2c; } .cart-total strong { font-size: 18px; font-weight: 800; color: #1a3c22; } #cartActions { padding: 14px 18px; display: flex; flex-direction: column; gap: 8px; border-top: 1px solid #dde8da; } .btn-checkout { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 12px; background: #2d7a3a; color: #fff !important; border-radius: 8px; font-size: 14px; font-weight: 700; text-decoration: none; text-align: center; transition: background 0.18s; letter-spacing: 0.2px; } .btn-checkout:hover { background: #1a3c22; } .btn-checkout .fa { font-size: 16px; color: #f4a236; } .btn-view-cart { display: flex; align-items: center; justify-content: center; gap: 7px; padding: 10px; background: #f5f7f2; color: #2d7a3a !important; border: 1px solid #dde8da; border-radius: 8px; font-size: 13px; font-weight: 600; text-decoration: none; text-align: center; transition: background 0.18s; } .btn-view-cart:hover { background: #dde8da; } /* ───────────────────────────────────────────── TOAST NOTIFICATION ───────────────────────────────────────────── */ .qo-toast { position: fixed; bottom: 28px; right: 24px; background: #1a3c22; color: #fff; padding: 13px 20px; border-radius: 8px; font-size: 14px; font-family: 'DM Sans', sans-serif; box-shadow: 0 4px 20px rgba(26, 60, 34, 0.3); z-index: 9999; opacity: 0; transform: translateY(12px); transition: opacity 0.28s, transform 0.28s; max-width: 320px; border-left: 4px solid #f4a236; } .qo-toast.show { opacity: 1; transform: translateY(0); } .qo-toast .fa { color: #8cb63c; margin-right: 6px; } /* ───────────────────────────────────────────── RESPONSIVE ───────────────────────────────────────────── */ @media (max-width: 960px) { .qo-layout { grid-template-columns: 1fr; } .qo-cart-panel { position: static; } } @media (max-width: 600px) { .quick-order-page { width: 100%; padding: 12px 12px 40px; } .product-card { flex-wrap: wrap; } .pc-body { flex: 1 1 100%; } .pc-actions { width: 100%; justify-content: flex-end; } .qo-search-btn { padding: 0 14px; font-size: 13px; } }