.checkout-page { max-width:1160px; }
.checkout-heading { margin-bottom:28px; }
.checkout-heading h1 { margin:7px 0 6px; font-size:clamp(2.2rem,4vw,3.5rem); }
.checkout-heading p { margin:0; }
.checkout-page .checkout-steps { position:relative; display:grid; grid-template-columns:repeat(3,1fr); width:min(100%,720px); margin:0 auto 42px; padding:8px 0 28px; border:0; border-radius:0; background:transparent; box-shadow:none; list-style:none; }
.checkout-page .checkout-steps::before { content:""; position:absolute; z-index:0; top:31px; left:22px; right:22px; height:6px; background:#e9e7ef; transform:translateY(-50%); }
.checkout-steps li { position:relative; z-index:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; color:var(--muted); background:transparent !important; padding:0 !important; border-radius:0 !important; }
.checkout-steps li:not(:last-child)::after { display:none; }
.checkout-steps li > span { position:relative; z-index:1; display:grid; place-items:center; width:46px; height:46px; flex:0 0 46px; padding:0; border:6px solid #e6e4ed; border-radius:50%; background:#fff; color:#5f5b70; font-size:14px; font-weight:800; transition:transform .3s,background .3s,border-color .3s; }
.checkout-steps li > b { position:absolute; top:56px; left:50%; z-index:1; width:max-content; max-width:110px; padding:0; background:transparent; color:var(--muted); font-size:12px; font-weight:700; transform:translateX(-50%); }
.checkout-steps li.active { color:var(--purple); }
.checkout-steps li.active > span { border-color:#d7f35f; background:var(--purple); color:#fff; box-shadow:0 0 0 12px rgba(215,243,95,.18); animation:stepPulse 1.8s ease-in-out infinite; }
.checkout-steps li.active > b { color:var(--purple); }
.checkout-steps li.complete { color:var(--success); }
.checkout-steps li.complete > span { border-color:#c7ee4b; background:var(--purple); color:#fff; }
.checkout-steps li.complete > b { color:var(--purple-dark); }
@keyframes stepPulse { 0%,100% { box-shadow:0 0 0 9px rgba(215,243,95,.13); transform:scale(1); } 50% { box-shadow:0 0 0 15px rgba(215,243,95,.22); transform:scale(1.03); } }
.checkout-page .checkout-layout { align-items:start; }
.checkout-form { padding:32px; box-shadow:0 10px 35px rgba(43,0,110,.06); }
.checkout-section-heading { display:flex; gap:15px; align-items:center; margin-bottom:26px; }
.checkout-section-heading h2 { margin:0; font-size:24px; }
.checkout-section-heading p { margin:3px 0 0; font-size:13px; }
.checkout-icon { display:grid; place-items:center; width:44px; height:44px; flex:0 0 44px; border-radius:12px; background:var(--lavender); color:var(--purple); font-size:21px; font-weight:800; }
.checkout-options { display:grid; gap:12px; }
.address-choice { position:relative; display:flex; align-items:center; gap:14px; margin:0; padding:18px; border:1px solid var(--line); border-radius:13px; cursor:pointer; transition:border-color .2s,background .2s,box-shadow .2s; }
.address-choice:hover { border-color:#bda9ff; }
.address-choice:has(input:checked) { border-color:var(--purple); background:#faf8ff; box-shadow:0 0 0 2px rgba(91,46,255,.1); }
.address-choice input { position:absolute; opacity:0; pointer-events:none; }
.choice-marker { width:20px; height:20px; flex:0 0 20px; border:2px solid #aaa4ba; border-radius:50%; }
.address-choice input:checked + .choice-marker { border:6px solid var(--purple); }
.choice-content { display:block; min-width:0; }
.choice-content b,.choice-content small,.choice-content > span { display:block; }
.choice-content small { margin:3px 0; color:var(--muted); font-weight:500; }
.choice-content > span { color:var(--muted); font-weight:400; line-height:1.5; }
.checkout-next { margin-top:24px; min-width:210px; gap:10px; }
.checkout-fields { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.checkout-fields label { margin:0; }
.checkout-fields input,.checkout-fields select { margin-top:8px; height:48px; }
.checkout-note { display:flex; gap:12px; margin-top:22px; padding:14px; border-radius:11px; background:#f4f0ff; color:var(--purple-dark); }
.checkout-note p { margin:0; font-size:13px; color:inherit; }
.checkout-actions { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-top:24px; }
.checkout-actions > a { color:var(--purple); font-size:13px; font-weight:800; }
.checkout-actions .checkout-next { margin:0; }
.terms-check { display:flex; align-items:flex-start; gap:10px; margin:24px 0 0; padding:15px; border-radius:11px; background:var(--off); font-weight:500; line-height:1.5; }
.terms-check input { width:auto; margin:3px 0 0; }
.terms-check a { color:var(--purple); text-decoration:underline; }
.terms-error { margin:7px 0 0 15px; }
.terms-error:empty { display:none; }
.payment-methods{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0;padding:0;border:0}.payment-methods legend{grid-column:1/-1;margin-bottom:10px;font-size:13px;font-weight:800}.payment-method-card{position:relative;display:grid;grid-template-columns:20px 38px minmax(0,1fr);gap:11px;align-items:center;margin:0;padding:15px;border:1px solid var(--line);border-radius:13px;background:#fff;cursor:pointer;transition:border-color .2s,background .2s,box-shadow .2s}.payment-method-card:hover{border-color:#bda9ff}.payment-method-card:has(input:checked){border-color:var(--purple);background:#faf8ff;box-shadow:0 0 0 2px rgba(91,46,255,.1)}.payment-method-card input{position:absolute;opacity:0;pointer-events:none}.payment-radio{width:19px;height:19px;border:2px solid #aaa4ba;border-radius:50%}.payment-method-card input:checked+.payment-radio{border:6px solid var(--purple)}.payment-icon{display:grid;width:38px;height:38px;border-radius:10px;background:var(--lavender);color:var(--purple);font-size:18px;font-weight:800;place-items:center}.payment-icon-cash:before{content:'£'}.payment-icon-card:before{content:'▭'}.payment-icon-fawry:before{content:'F'}.payment-icon-wallet:before{content:'◫'}.payment-icon-transfer:before{content:'↔'}.payment-method-card b,.payment-method-card small{display:block}.payment-method-card b{font-size:13px}.payment-method-card small{margin-top:3px;color:var(--muted);font-size:10px;font-weight:500;line-height:1.35}.payment-preference{margin-top:20px}.payment-preference label{margin:0}.payment-preference select{margin-top:8px;height:48px}
.checkout-summary { position:sticky; top:24px; padding:26px; box-shadow:0 10px 35px rgba(43,0,110,.06); }
.summary-heading { display:flex; justify-content:space-between; align-items:center; }
.summary-heading h2 { margin:0; font-size:20px; }
.summary-heading a { color:var(--purple); font-size:12px; font-weight:800; }
.checkout-products { margin:20px 0; padding:14px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.checkout-products > div { display:grid; grid-template-columns:28px minmax(0,1fr) auto; gap:8px; padding:7px 0; align-items:start; font-size:12px; }
.checkout-products small { display:block; margin-top:2px; color:var(--muted); }
.summary-quantity { color:var(--purple); font-weight:800; }
.summary-costs p { margin:8px 0; font-size:13px; }
.summary-grand-total { display:flex; justify-content:space-between; align-items:center; margin-top:18px; padding-top:18px; border-top:1px solid var(--line); font-size:18px; }
.summary-grand-total b { color:var(--purple-dark); font-size:22px; }
.available-vouchers,.applied-voucher{margin:16px 0}.available-vouchers article,.applied-voucher{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:12px;border-radius:11px;background:#eee7ff}.available-vouchers article+article{margin-top:8px}.available-vouchers b,.applied-voucher b{display:block;font-size:13px}.available-vouchers small,.applied-voucher small{display:block;margin-top:3px;color:#57516a;font-size:11px}.available-vouchers form,.applied-voucher form{margin:0}.available-vouchers button,.applied-voucher button,.voucher-code-entry button{border:0;border-radius:9px;background:#5b2eff;color:#fff;padding:8px 13px;font-size:12px;font-weight:800;cursor:pointer}.applied-voucher{background:#edfbd1}.applied-voucher button{background:transparent;color:#b42318;padding:5px}.voucher-code-entry{margin:16px 0}.voucher-code-entry form{display:grid;grid-template-columns:30px minmax(0,1fr) 82px;align-items:center;border:1px solid #aaa3b4;border-radius:10px;background:#fff;overflow:hidden}.voucher-input-icon{display:block;width:20px;height:20px;margin-left:11px;padding:0;background:#5b2eff;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M20 13 13 20 4 11V4h7l9 9ZM8.5 8.5h.01'/%3E%3C/svg%3E") center/contain no-repeat;font-size:0;transform:none}.voucher-code-entry input{min-width:0;padding:13px 8px;border:0;border-radius:0;outline:0;font-size:12.5px}.voucher-code-entry input::placeholder{color:#77717d;opacity:1}.voucher-code-entry button{align-self:stretch;margin:5px;padding:0 12px;font-size:14px}.voucher-code-entry .field-error{display:block;margin-top:6px}.summary-costs .voucher-discount,.summary-costs .voucher-discount b{color:#087b18}
.secure-note { display:block; margin-top:18px; color:var(--muted); text-align:center; font-size:10px; }
.checkout-empty { padding:30px; border:1px dashed var(--line); border-radius:13px; text-align:center; }
.checkout-empty h3 { margin-top:0; }
.confirmation .actions { justify-content:center; align-items:center; }
.address-mode-tabs { display:grid; grid-template-columns:1fr 1fr; gap:5px; margin-bottom:20px; padding:5px; border-radius:12px; background:var(--off); }
.address-mode-tabs button { border:0; border-radius:9px; background:transparent; padding:11px; color:var(--muted); font-size:13px; font-weight:800; cursor:pointer; transition:background .2s,color .2s,box-shadow .2s; }
.address-mode-tabs button.active { background:#fff; color:var(--purple); box-shadow:0 4px 14px rgba(43,0,110,.09); }
.address-pane { display:none; animation:checkoutPaneIn .28s ease both; }
.address-pane.active { display:block; }
@keyframes checkoutPaneIn { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }
.map-search { display:grid; grid-template-columns:minmax(0,1fr) auto 44px; gap:8px; }
.map-search input { height:44px; }
.map-search button { border:0; border-radius:9px; background:var(--purple); color:#fff; padding:0 18px; font-weight:800; cursor:pointer; }
.map-search .location-button { padding:0; background:var(--lime); color:#111; font-size:22px; }
.map-status { min-height:20px; margin:7px 0 10px; font-size:11px; }
#checkout-map { height:320px; border:1px solid var(--line); border-radius:14px; overflow:hidden; background:var(--off); z-index:0; }
.new-address-fields { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-top:20px; }
.new-address-fields label { margin:0; }
.new-address-fields .wide { grid-column:1/-1; }
.phone-input { display:flex; align-items:center; margin-top:7px; border:1px solid #c9c5d5; border-radius:8px; background:#fff; overflow:hidden; }
.phone-input:focus-within { border-color:var(--purple); box-shadow:0 0 0 3px rgba(91,46,255,.1); }
.phone-input > span { align-self:stretch; display:flex; align-items:center; padding:0 13px; border-right:1px solid var(--line); background:var(--off); color:var(--purple-dark); font-weight:800; }
.phone-input input[type="tel"] { margin:0; border:0; border-radius:0; outline:0; }
.phone-error:empty { display:none; }
.save-address-check { display:flex; align-items:flex-start; gap:11px; margin:20px 0 0; padding:14px; border:1px solid var(--line); border-radius:11px; background:var(--off); cursor:pointer; }
.save-address-check input { width:auto; margin:3px 0 0; }
.save-address-check b,.save-address-check small { display:block; }
.save-address-check small { margin-top:2px; color:var(--muted); font-weight:400; }

@media (max-width:720px) {
    .checkout-heading { margin-bottom:22px; }
    .checkout-page .checkout-steps { width:calc(100% - 8px); margin-bottom:34px; padding:6px 0 28px; }
    .checkout-page .checkout-steps::before { top:27px; left:20px; right:20px; height:5px; }
    .checkout-steps li > span { width:42px; height:42px; flex-basis:42px; border-width:5px; font-size:13px; }
    .checkout-steps li > b { top:50px; font-size:11px; }
    .checkout-form { padding:22px 18px; }
    .checkout-fields { grid-template-columns:1fr; }
    .payment-methods { grid-template-columns:1fr; }
    .checkout-actions { align-items:stretch; flex-direction:column-reverse; }
    .checkout-actions .checkout-next,.checkout-next { width:100%; }
    .checkout-actions > a { text-align:center; padding:8px; }
    .checkout-summary { position:static; }
    .new-address-fields { grid-template-columns:1fr; }
    .new-address-fields .wide { grid-column:auto; }
    .map-search { grid-template-columns:minmax(0,1fr) 44px; }
    .map-search button[data-map-search-button] { grid-column:1/-1; grid-row:2; height:42px; }
    #checkout-map { height:280px; }
}

@media (prefers-reduced-motion:reduce) {
    .checkout-steps li.active > span { animation:none; }
    .address-pane { animation:none; }
}
