<!-- SS · part 4 -->
fx .fx-info::backdrop{background:rgba(0,0,0,.7) !important}
/* receipt / boxes */
#fx .fx-box{margin:12px 0 !important;border:1px solid #3a2a12 !important;border-radius:12px !important;padding:16px !important;background:#0b0a0d !important}
#fx .fx-h1{font:700 clamp(24px,6vw,36px)/1.1 Georgia,serif !important;color:var(--g) !important;margin:4px 0 10px !important}
#fx .fx-kick{font-size:11px !important;font-weight:800 !important;letter-spacing:.2em !important;color:var(--r) !important}
#fx .fx-rlines{list-style:none !important;padding:0 !important;margin:10px 0 !important;display:flex !important;flex-direction:column !important;gap:8px !important}
#fx .fx-rlines li{display:grid !important;grid-template-columns:1fr auto !important;gap:6px 12px !important;align-items:center !important;border:1px solid #2e2412 !important;border-radius:10px !important;padding:10px !important}
#fx .fx-rlines li small{display:block !important;color:var(--mu) !important;font-size:11px !important}
#fx .fx-rlines li > :last-child{grid-column:1 / -1 !important}
#fx .fx-rlines .fx-buy{width:auto !important;padding:0 16px !important}
#fx .fx-st{font-size:11px !important;letter-spacing:.12em !important;text-transform:uppercase !important;color:var(--g) !important}
#fx .fx-ship{border:1px dashed var(--g3) !important;border-radius:10px !important;padding:10px !important;margin:10px 0 !important;font-size:14px !important}
#fx .fx-receipt a{color:var(--g2) !important}
@media (min-width:700px){#fx{padding:14px !important}
#fx .fx-top{grid-template-columns:auto 1fr auto !important;grid-template-areas:"brand search cart" !important;gap:18px !important;padding:12px 16px !important}
#fx .fx-crest{width:70px !important;height:70px !important}
#fx .fx-search{max-width:520px !important;justify-self:center !important;width:100% !important}
#fx .fx-grid{grid-template-columns:repeat(3,minmax(0,1fr)) !important}
#fx .fx-hero{flex-direction:row !important;align-items:center !important;min-height:300px !important}
#fx .fx-hero-t{background:none !important;flex:1 !important;padding:24px 30px !important}
#fx .fx-portal{width:46% !important;margin:0 10px 0 0 !important}
#fx .fx-drawer{left:auto !important;top:0 !important;bottom:0 !important;width:400px !important;max-height:none !important;border-radius:0 !important;border-top:0 !important;border-left:2px solid var(--g) !important}}
@media (min-width:1050px){#fx .fx-body{display:grid !important;grid-template-columns:200px minmax(0,1fr) !important;gap:14px !important}
#fx .fx-cats{flex-direction:column !important;overflow:visible !important;border:1px solid #3a2a12 !important;border-radius:12px !important;padding:10px !important;background:rgba(10,9,12,.85) !important;align-self:start !important;gap:0 !important}
#fx .fx-cats-h{display:block !important;font-size:12px !important;font-weight:800 !important;letter-spacing:.2em !important;color:var(--g) !important;padding:6px 8px 10px !important}
#fx .fx-cat{border-radius:6px !important;border:0 !important;border-top:1px solid #241b0d !important;background:none !important;padding:14px 8px !important}
#fx .fx-cat svg{width:28px !important;height:28px !important}
#fx .fx-cat em{margin-left:auto !important}
#fx .fx-deck{display:block !important;margin-top:14px !important;border:1px solid #3d2e12 !important;border-radius:10px !important;padding:10px !important;font-size:11px !important;letter-spacing:.14em !important;color:#ddd !important;position:relative !important}
#fx .fx-deck b{display:block !important;font-size:11px !important}
#fx .fx-deck small{display:block !important;font-size:9px !important;color:var(--mu) !important;margin:4px 0 8px !important}
#fx .fx-deck i{display:inline-block !important;width:7px !important;height:7px !important;border-radius:50% !important;background:var(--r) !important;margin-right:6px !important;box-shadow:0 0 6px var(--r) !important}
#fx .fx-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr)) !important}}
#fx .fx-search{display:flex !important;align-items:center !important;gap:8px !important}
#fx .fx-search input{flex:1 !important;min-width:0 !important}
#fx .fx-search .skb-toggle{flex:0 0 auto !important}

===== FILE: public/ss/fx.js =====
/* THE FLEET EXCHANGE — cart (localStorage), filters, drawer. Prices are re-checked on the server at checkout. */
(function () {
  'use strict';
  var root = document.getElementById('fx'); if (!root) return;
  var dataEl = document.getElementById('fx-data');
  var D = dataEl ? JSON.parse(dataEl.textContent) : { items: [] };
  var BY = {}; D.items.forEach(function (i) { BY[i.k] = i; });
  var KEY = 'fx_cart_v1';
  function load() { try { var c = JSON.parse(localStorage.getItem(KEY) || '{}'); return c && typeof c === 'object' ? c : {}; } catch (e) { return {}; } }
  function save(c) { localStorage.setItem(KEY, JSON.stringify(c)); render(); }
  function esc(s) { return String(s == null ? '' : s).replace(/[&<>"']/g, function (c) { return { '&': '&amp;', '<': '&l