/* Appily Fifteen — Chilled Pick Trolley cart page */ .page-pick-trolley { --trolley-accent: var(--teal, #1abc9c); --trolley-accent-dark: var(--teal-dark, #17a589); --trolley-accent-soft: var(--teal-light, #e8f8f5); --trolley-ink: #0f2f28; --trolley-canvas: #f4fbf8; background: linear-gradient(180deg, var(--trolley-canvas) 0%, #fff 300px); } /* Hero */ .trolley-hero { position: relative; padding: 32px 0 24px; overflow: hidden; } .trolley-hero-mist { position: absolute; inset: -30% -10% 0; background: radial-gradient(circle at 25% 40%, rgba(26, 188, 156, .12) 0%, transparent 45%), radial-gradient(circle at 75% 25%, rgba(255,255,255,.9) 0%, transparent 40%); pointer-events: none; } .trolley-hero-grid { position: relative; display: grid; grid-template-columns: 1fr minmax(180px, 220px); gap: 24px; align-items: center; } .trolley-kicker { margin: 0 0 8px; font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--trolley-accent); } .trolley-hero h1 { margin: 0 0 10px; font-size: clamp(1.85rem, 4vw, 2.55rem); line-height: 1.1; letter-spacing: -.03em; color: var(--trolley-ink); } .trolley-hero h1 em { font-style: normal; color: var(--trolley-accent-dark); } .trolley-lede { margin: 0; max-width: 520px; color: var(--ink-soft, #555); line-height: 1.65; } .trolley-gauge { position: relative; } .trolley-gauge-face { display: grid; justify-items: center; gap: 4px; padding: 22px 18px; border-radius: 20px; background: linear-gradient(160deg, #0d3d34 0%, #145246 100%); color: #fff; box-shadow: 0 18px 40px rgba(13, 61, 52, .22); text-align: center; } .trolley-gauge-icon { font-size: 1.5rem; opacity: .85; } .trolley-gauge-num { font-size: 2.2rem; font-weight: 800; line-height: 1; letter-spacing: -.03em; } .trolley-gauge-label { font-size: .68rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; opacity: .75; } .trolley-gauge-total { margin-top: 6px; padding-top: 8px; border-top: 1px solid rgba(255,255,255,.2); font-size: 1rem; font-weight: 700; width: 100%; } .trolley-cold-badge { position: absolute; top: -8px; right: -4px; padding: 5px 10px; border-radius: 999px; background: #fff; color: var(--trolley-accent-dark); font-size: .65rem; font-weight: 800; letter-spacing: .04em; box-shadow: 0 4px 12px rgba(0,0,0,.1); } /* Floor */ .trolley-floor { padding: 8px 0 72px; } /* Empty state */ .trolley-empty { text-align: center; padding: 48px 24px 64px; border: 2px dashed #d4e8e2; border-radius: 24px; background: rgba(255,255,255,.7); } .trolley-empty-basket { position: relative; width: 140px; height: 100px; margin: 0 auto 20px; } .trolley-basket-wire { position: absolute; inset: 10% 8% 20%; border: 2px solid #b8d4cc; border-radius: 0 0 18px 18px; border-top: none; } .trolley-basket-wire-2 { inset: 18% 18% 28%; opacity: .6; } .trolley-basket-label { position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--muted, #888); } .trolley-empty h2 { margin: 0 0 10px; font-size: 1.35rem; } .trolley-empty p { max-width: 420px; margin: 0 auto 22px; color: var(--muted, #888); } /* Layout */ .trolley-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 320px); gap: 24px; align-items: start; } .trolley-lane-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; } .trolley-lane-tag { padding: 6px 12px; border-radius: 999px; background: var(--trolley-accent-soft); color: var(--trolley-accent-dark); font-size: .72rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; } .trolley-lane-meta { font-size: .82rem; color: var(--muted, #888); font-weight: 600; } /* Crate cards */ .trolley-crates { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; } .trolley-crate { position: relative; padding-left: 36px; } .trolley-crate-slot { position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 28px; height: 28px; display: grid; place-items: center; border-radius: 8px; background: var(--trolley-accent); color: #fff; font-size: .72rem; font-weight: 800; } .trolley-crate-card { position: relative; display: grid; grid-template-columns: 88px 1fr auto auto; gap: 16px; align-items: center; padding: 16px 18px; border-radius: 18px; background: #fff; border: 1px solid var(--line, #e8e8e8); box-shadow: 0 8px 24px rgba(0,0,0,.04); overflow: hidden; } .trolley-crate-frame { position: absolute; inset: 0; border-radius: inherit; pointer-events: none; background: linear-gradient(135deg, rgba(26, 188, 156, .04) 0%, transparent 40%), repeating-linear-gradient(90deg, transparent 0 18px, rgba(0,0,0,.015) 18px 19px); } .trolley-crate-thumb { position: relative; z-index: 1; display: grid; place-items: center; width: 88px; height: 88px; border-radius: 14px; background: var(--trolley-accent-soft); overflow: hidden; } .trolley-crate-thumb img { width: 100%; height: 100%; object-fit: contain; padding: 8px; } .trolley-crate-fallback { font-size: 2rem; opacity: .5; } .trolley-crate-body { position: relative; z-index: 1; min-width: 0; } .trolley-crate-sku { display: inline-block; margin-bottom: 4px; font-size: .68rem; font-weight: 700; letter-spacing: .06em; color: var(--trolley-accent-dark); } .trolley-crate-body h2 { margin: 0 0 4px; font-size: 1rem; line-height: 1.3; } .trolley-crate-body h2 a:hover { color: var(--trolley-accent); } .trolley-crate-variant { margin: 0 0 4px; font-size: .82rem; color: var(--muted, #888); } .trolley-crate-unit { font-size: .82rem; font-weight: 600; color: var(--ink-soft, #555); } .trolley-crate-qty { position: relative; z-index: 1; display: grid; gap: 6px; text-align: center; } .trolley-crate-qty label { font-size: .68rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted, #888); } .trolley-qty-wrap input { width: 64px; padding: 10px 8px; border: 1px solid var(--line); border-radius: 10px; font: inherit; font-weight: 700; text-align: center; background: #fafcfb; } .trolley-qty-wrap input:focus { outline: none; border-color: var(--trolley-accent); box-shadow: 0 0 0 3px rgba(26, 188, 156, .15); } .trolley-crate-line { position: relative; z-index: 1; display: grid; gap: 2px; text-align: right; min-width: 72px; } .trolley-line-label { font-size: .68rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted, #888); } .trolley-crate-line strong { font-size: 1.05rem; color: var(--trolley-ink); } .trolley-form-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; } /* Receipt sidebar */ .trolley-receipt { position: sticky; top: 180px; border-radius: 20px; background: #fffdf9; border: 1px solid rgba(0,0,0,.07); box-shadow: 0 20px 48px rgba(0,0,0,.08); overflow: hidden; } .trolley-receipt-scallop { height: 12px; background: radial-gradient(circle at 10px -2px, transparent 10px, var(--trolley-accent-soft) 10px) 0 0 / 20px 12px repeat-x; border-bottom: 1px dashed rgba(26, 188, 156, .2); } .trolley-receipt-body { padding: 22px 22px 18px; } .trolley-receipt-store { margin: 0 0 2px; font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--trolley-accent); } .trolley-receipt-title { margin: 0 0 4px; font-size: 1.25rem; } .trolley-receipt-date { margin: 0 0 18px; font-size: .78rem; color: var(--muted, #888); } .trolley-receipt-rows { display: grid; gap: 10px; margin: 0 0 16px; } .trolley-receipt-rows div { display: flex; justify-content: space-between; gap: 12px; font-size: .9rem; } .trolley-receipt-rows dt { color: var(--ink-soft, #555); } .trolley-receipt-rows dd { margin: 0; font-weight: 700; } .trolley-receipt-perforation { height: 1px; margin: 0 0 14px; background: repeating-linear-gradient(90deg, transparent 0 4px, rgba(0,0,0,.14) 4px 8px); } .trolley-receipt-total { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-bottom: 16px; padding: 14px 16px; border-radius: 12px; background: var(--trolley-accent-soft); } .trolley-receipt-total span { font-size: .88rem; font-weight: 600; color: var(--ink-soft, #555); } .trolley-receipt-total strong { font-size: 1.35rem; color: var(--trolley-accent-dark); letter-spacing: -.02em; } .trolley-receipt-notes { list-style: none; margin: 0 0 20px; padding: 0; display: grid; gap: 8px; } .trolley-receipt-notes li { display: flex; align-items: center; gap: 8px; font-size: .78rem; font-weight: 600; color: var(--ink-soft, #555); } .trolley-receipt-actions { display: grid; gap: 10px; } .trolley-receipt-barcode { display: flex; align-items: flex-end; justify-content: center; gap: 2px; padding: 12px 16px 16px; background: #f8f8f6; border-top: 1px dashed var(--line); } .trolley-receipt-barcode span { width: 3px; background: #ccc; border-radius: 1px; } /* Buttons */ .trolley-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 13px 22px; border-radius: 12px; border: 0; font: inherit; font-size: .9rem; font-weight: 700; cursor: pointer; text-decoration: none; transition: transform .15s, filter .15s; } .trolley-btn-primary { background: var(--trolley-accent); color: #fff; box-shadow: 0 8px 20px rgba(26, 188, 156, .25); } .trolley-btn-primary:hover { filter: brightness(1.04); transform: translateY(-1px); } .trolley-btn-soft { background: var(--trolley-accent-soft); color: var(--trolley-accent-dark); border: 1px solid rgba(26, 188, 156, .2); } .trolley-btn-soft:hover { filter: brightness(.98); } .trolley-btn-ghost { background: #fff; color: var(--trolley-accent-dark); border: 1px solid var(--line); } .trolley-btn-ghost:hover { border-color: var(--trolley-accent); background: var(--trolley-accent-soft); } .trolley-btn-block { width: 100%; } @media (max-width: 900px) { .trolley-hero-grid { grid-template-columns: 1fr; } .trolley-gauge { max-width: 220px; } .trolley-layout { grid-template-columns: 1fr; } .trolley-receipt { position: static; } } @media (max-width: 640px) { .trolley-crate-card { grid-template-columns: 72px 1fr; grid-template-rows: auto auto; } .trolley-crate-qty, .trolley-crate-line { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; text-align: left; padding-top: 8px; border-top: 1px dashed var(--line); } .trolley-crate-thumb { width: 72px; height: 72px; } .trolley-form-actions { flex-direction: column; } .trolley-form-actions .trolley-btn { width: 100%; } }