<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<base target="_top">
<title>Buy Refurbished Computers, Laptops &amp; Phones in Eastcote | Subnet1</title>
<meta name="description" content="Buy fully tested, professionally refurbished computers, laptops, MacBooks, phones and consoles in Eastcote. 6-month warranty, local collection and 19+ years of trust at Subnet1.">
<link rel="canonical" href="https://subnet1.com/buy-from-us/">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<style>
:root{
  --orange:#F1530D; --orange-d:#d8470a; --ink:#10141B; --dark:#0C0F15; --dark2:#1D2530;
  --muted:#67768E; --line:#e7eaf0; --green:#1FAF54; --bg:#f6f8fb;
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:"Plus Jakarta Sans",sans-serif;color:var(--muted);background:#fff;line-height:1.6}
h1,h2,h3,h4{color:var(--ink);font-weight:800;line-height:1.2}
a{text-decoration:none;color:inherit}
.wrap{max-width:1720px;margin:0 auto;padding:0 48px}
@media(max-width:600px){.wrap{padding:0 18px}}
.eyebrow{color:var(--orange);font-weight:700;letter-spacing:.12em;text-transform:uppercase;font-size:13px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 24px;border-radius:12px;font-weight:700;font-size:15px;cursor:pointer;border:none;transition:.15s}
.btn svg{width:18px;height:18px;flex:none}
.btn-orange{background:var(--orange);color:#fff}.btn-orange:hover{background:var(--orange-d)}
.btn-green{background:var(--green);color:#fff}
.btn-dark{background:var(--dark);color:#fff}
.btn-ghost{background:#fff;color:var(--ink);border:1.5px solid var(--line)}
.section{padding:42px 0}
.center{text-align:center}

/* header (shared Buy/Sell — tight 1200px row) */
header{position:sticky;top:0;z-index:50;background:var(--dark);border-bottom:1px solid #1b212b}
header .wrap{max-width:1200px;padding:0 28px}
.nav{display:flex;align-items:center;justify-content:space-between;height:74px;gap:18px}
.logo{display:flex;align-items:center}
.logo img{height:42px;display:block}
.menu{display:flex;gap:22px;font-weight:700;font-size:13.5px;letter-spacing:.02em;color:#e7eaef}
.menu a.active{color:var(--orange)}.menu a:hover{color:var(--orange)}
.phonebox{display:flex;align-items:center;gap:10px;color:#fff}
.phonebox .circ{width:38px;height:38px;border-radius:50%;border:1.5px solid var(--orange);display:grid;place-items:center;color:var(--orange);flex:none}
.phonebox .circ svg{width:18px;height:18px}
.phonebox b{display:block;font-size:16px;font-weight:800;line-height:1.15}
.phonebox .st{font-size:11px;color:#36c46b}
.phonebox .st i{color:#9aa3b2;font-style:normal}
.burger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:6px}
.burger span{width:26px;height:2.5px;background:#fff;border-radius:2px}
@media(max-width:900px){.menu{display:none}.phonebox{display:none}.burger{display:flex}}
.mmenu{position:fixed;inset:0;background:rgba(9,12,17,.98);z-index:200;display:none;flex-direction:column;padding:78px 28px 28px;gap:2px}
.mmenu.open{display:flex}
.mmenu a{color:#e7eaef;font-weight:700;font-size:18px;padding:14px 0;border-bottom:1px solid #1b212b}
.mmenu a.active{color:var(--orange)}
.mmenu .mclose{position:absolute;top:20px;right:24px;background:none;border:none;color:#fff;font-size:34px;cursor:pointer;line-height:1}
.mmenu .mcall{margin-top:18px;background:var(--orange);color:#fff;text-align:center;border-radius:12px;border-bottom:none;padding:14px}
.wa-float{position:fixed;right:20px;bottom:20px;width:56px;height:56px;border-radius:50%;background:var(--green);display:grid;place-items:center;z-index:150;box-shadow:0 8px 24px rgba(0,0,0,.28)}
.wa-float svg{width:30px;height:30px;fill:#fff}

/* hero */
.hero{background:#0C0F15;color:#cfd6e2;position:relative;overflow:hidden}
.hero .hero-bg{position:absolute;inset:0;z-index:0;background:url('https://subnet1.com/wp-content/uploads/2026/07/buy-from-us-hero.png') center/cover no-repeat}
.hero .hero-bg:after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,rgba(10,13,18,.82) 0%,rgba(10,13,18,.66) 45%,rgba(10,13,18,.34) 100%)}
.hero .wrap{z-index:2}
.hero .wrap{padding:34px 48px;position:relative;display:grid;grid-template-columns:1.25fr .75fr;gap:20px 44px;align-items:start;max-width:1200px}
@media(max-width:980px){.hero .wrap{grid-template-columns:1fr;gap:28px}}
@media(max-width:600px){.hero .wrap{padding:30px 18px}}
.hero h1{color:#fff;font-size:37px;line-height:1.15}
.hero p.sub{color:#aab3c4;font-size:16px;margin:12px 0 18px;max-width:660px}
.searchbar{display:flex;gap:10px;background:#fff;border-radius:14px;padding:8px;max-width:600px;margin-bottom:18px}
.searchbar input{flex:1;border:none;outline:none;padding:12px 14px;font-family:inherit;font-size:15px;color:var(--ink);cursor:pointer}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:0;flex:none}
.hero-cta .btn{flex:1 1 0;white-space:nowrap}
.hero-actions{grid-column:1 / -1;display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:10px}
.hero-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;flex:1;min-width:340px}
.hero-stats .s{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:8px 5px}
.hero-stats .s .si{width:17px;height:17px;color:var(--orange);flex:none}
.hero-stats .s .si svg{width:100%;height:100%}
.hero-stats .s b{color:#fff;font-size:12px;font-weight:800;display:block;line-height:1.1}
.hero-stats .s span{font-size:9.5px;color:#9aa3b2;line-height:1.2}
@media(max-width:600px){.hero-stats{grid-template-columns:repeat(2,1fr);max-width:100%}}

/* trust strip */
.trust{background:var(--dark2);color:#cdd5e2;padding:16px 0}
.trust .wrap{display:flex;gap:30px;flex-wrap:wrap;justify-content:center}
.trust .ti{display:flex;align-items:center;gap:9px;font-weight:600;font-size:14px}
.trust .ti svg{width:18px;height:18px;color:var(--green);flex:none}

/* category tiles */
.cats{display:grid;grid-template-columns:repeat(6,1fr);gap:18px}
.cat{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px 14px;text-align:center;transition:.15s;cursor:pointer}
.cat:hover{border-color:var(--orange);transform:translateY(-3px);box-shadow:0 10px 24px rgba(16,20,27,.06)}
.cat .ic{width:36px;height:36px;color:var(--orange);margin:0 auto 8px;display:block}
.cat .ic svg{width:100%;height:100%}
.cat b{display:block;color:var(--ink);font-size:15px}
@media(max-width:900px){.cats{grid-template-columns:repeat(3,1fr)}}
@media(max-width:520px){.cats{grid-template-columns:repeat(2,1fr)}}

/* product card (used when WooCommerce supplies products) */
.card{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden}
.thumb{aspect-ratio:1/1;background:#f1f4f9;display:grid;place-items:center;position:relative;overflow:hidden}
.thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.grade{position:absolute;top:12px;left:12px;z-index:2;background:var(--green);color:#fff;font-size:12px;font-weight:700;padding:4px 10px;border-radius:20px}
.grade.b{background:#2f7de1}
.card .body{padding:14px}
.card h4{font-size:15px;margin-bottom:4px;line-height:1.25}
.card .spec{font-size:12.5px;color:var(--muted);min-height:32px;line-height:1.4}
.card .pr{display:flex;align-items:center;justify-content:space-between;margin-top:10px;gap:8px}
.card .price{color:var(--ink);font-weight:800;font-size:18px}
.card .buy{background:var(--orange);color:#fff;border:none;padding:8px 13px;border-radius:9px;font-weight:700;cursor:pointer;font-size:13px}

/* empty state */
.empty{text-align:center;padding:46px 22px;border:1px dashed #d3dae6;border-radius:16px;background:#fff;color:var(--muted)}
.empty .ei{width:52px;height:52px;margin:0 auto 12px;color:#b9c2d0}
.empty .ei svg{width:100%;height:100%}
.empty h4{font-size:18px;margin-bottom:6px}
.empty .ebtns{margin-top:16px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}

/* browse */
.browse{display:grid;grid-template-columns:260px 1fr;gap:26px;align-items:start}
@media(max-width:900px){.browse{grid-template-columns:1fr}}
.filters{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px 20px;will-change:transform}
.filters.fstick{overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.filters.fstick::-webkit-scrollbar{width:8px}
.filters.fstick::-webkit-scrollbar-thumb{background:#d3d9e2;border-radius:8px}
/* processor sub-controls */
.fsub{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.fsub label{display:block;font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#8a95a3;margin-bottom:5px}
.fsub select{width:100%;font:inherit;font-size:13px;color:#33404f;background:#fff;border:1px solid var(--line);border-radius:9px;padding:7px 9px;height:auto;cursor:pointer}
.fsub select:focus{outline:2px solid var(--orange);outline-offset:1px}
.fsub+.fsub{margin-top:10px;padding-top:0;border-top:none}
.fhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.fhead b{color:var(--ink);font-size:15px}
.fclear{font-size:13px;color:var(--orange);cursor:pointer;font-weight:700}
.fgroup{padding:14px 0;border-bottom:1px solid var(--line)}
.fgroup:last-child{border-bottom:none}
.fgroup h5{font-size:13px;color:var(--ink);font-weight:800;letter-spacing:.02em;margin-bottom:10px;text-transform:uppercase}
.fopt{display:flex;align-items:center;gap:9px;font-size:14px;margin-bottom:8px;cursor:pointer;color:#52606f}
.fopt input{width:16px;height:16px;accent-color:var(--orange)}
.frange{width:100%;accent-color:var(--orange)}
.bsearch{display:flex;gap:10px;background:#fff;border:2px solid var(--orange);border-radius:12px;padding:8px;max-width:1000px;margin:0 auto 24px;align-items:center}
.bsearch .si{width:20px;height:20px;color:var(--muted);margin-left:8px;flex:none}
.bsearch input{flex:1;border:none;outline:none;padding:13px 8px;font-family:inherit;font-size:16px;color:var(--ink)}
.bbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;font-size:14px;color:var(--muted)}
.bgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
@media(max-width:1250px){.bgrid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:1000px){.bgrid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.bgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:460px){.bgrid{grid-template-columns:1fr}}
/* auto-scroll marquee (Featured deals) */
.marquee{overflow:hidden;position:relative;width:100%}
.marquee:before,.marquee:after{content:"";position:absolute;top:0;bottom:0;width:56px;z-index:2;pointer-events:none}
.marquee:before{left:0;background:linear-gradient(90deg,#fff,rgba(255,255,255,0))}
.marquee:after{right:0;background:linear-gradient(270deg,#fff,rgba(255,255,255,0))}
.ftrack{display:flex;will-change:transform}
.ftrack .card{flex:0 0 210px;margin-right:16px}
.mqnote{margin-top:14px;font-size:12.5px;color:var(--muted)}
details.fgroup{padding:14px 0;border-bottom:1px solid var(--line)}
details.fgroup summary{font-size:13px;color:var(--ink);font-weight:800;letter-spacing:.02em;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center}
details.fgroup summary::-webkit-details-marker{display:none}
details.fgroup summary::after{content:"+";font-size:18px;color:var(--muted);font-weight:600}
details.fgroup[open] summary::after{content:"–"}
details.fgroup[open] summary{margin-bottom:10px}
.fprice2{display:flex;gap:10px;margin-top:12px}
.fprice2 > div{flex:1}
.fprice2 label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px}
.fprice2 input{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:8px;font-family:inherit;font-size:14px;color:var(--ink);outline:none}
.fprice2 input:focus{border-color:var(--orange)}
/* dual-handle price range */
.rangewrap{position:relative;height:32px;margin:12px 0 4px}
.rtrack{position:absolute;top:14px;left:0;right:0;height:4px;background:var(--line);border-radius:3px}
.rfill{position:absolute;top:14px;height:4px;background:var(--orange);border-radius:3px}
.rthumb{position:absolute;top:0;left:0;width:100%;height:32px;margin:0;background:none;-webkit-appearance:none;appearance:none;pointer-events:none}
.rthumb::-webkit-slider-runnable-track{background:none;border:none;height:32px}
.rthumb::-moz-range-track{background:none;border:none;height:32px}
.rthumb::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:#fff;border:3px solid var(--orange);cursor:pointer;pointer-events:auto;box-shadow:0 1px 4px rgba(16,20,27,.25);margin-top:7px}
.rthumb::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#fff;border:3px solid var(--orange);cursor:pointer;pointer-events:auto;box-shadow:0 1px 4px rgba(16,20,27,.25)}
.facet summary{margin-bottom:0}

/* features */
.feat{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
@media(max-width:900px){.feat{grid-template-columns:repeat(2,1fr)}}
.fcard{background:var(--bg);border-radius:16px;padding:22px}
.fcard .ic{width:30px;height:30px;color:var(--orange);display:block}
.fcard .ic svg{width:100%;height:100%}
.fcard h4{font-size:17px;margin:12px 0 6px}
.fcard p{font-size:14px}

/* reviews */
.revs{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
@media(max-width:900px){.revs{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.revs{grid-template-columns:1fr}}
.rev{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px}
.stars{color:#ffb400;font-size:14px;margin:6px 0}
.rev p{font-size:14px;color:#4b5566}
.rev .who{display:flex;align-items:center;gap:10px;margin-top:14px}
.rev .av{width:36px;height:36px;border-radius:50%;background:var(--dark2);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px}
.gbadge{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#5f6b7a;margin-top:10px}
.gbadge svg{width:16px;height:16px}

/* vertical dual box (hero cross-sell widget) */
.vdual{width:100%;max-width:380px;margin:0 auto;border-radius:22px;overflow:hidden;border:1px solid var(--line);box-shadow:0 16px 40px rgba(16,20,27,.10)}
.vdual .half{display:block;padding:26px;text-align:center;cursor:pointer;transition:.15s}
.vdual .half:hover{filter:brightness(1.05)}
.vdual .a{background:var(--orange);color:#fff}
.vdual .b{background:var(--dark);color:#fff}
.vdual .ic{width:38px;height:38px;margin:0 auto 8px;color:#fff;display:block}
.vdual .ic svg{width:100%;height:100%;display:block}
.vdual h3{color:#fff;font-size:22px;margin-bottom:6px}
.vdual p{font-size:14px;color:rgba(255,255,255,.9);margin-bottom:16px}
.vdual .go{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:#fff;background:rgba(255,255,255,.18);padding:10px 18px;border-radius:10px;font-size:14px}
.vdual .go svg{flex:none}
@media(max-width:520px){.vdual{width:100%}}

/* NEON dual — two SEPARATE boxes side by side (Lucide icons, RULE B) */
.nbwrap{display:flex;justify-content:center;align-items:stretch;gap:0;padding:6px 0 2px;width:474px;max-width:94vw;margin:0 auto}
.nb-frame{position:relative;flex:1 1 0;min-width:0;border-radius:20px;padding:1.6px;background:var(--c);transition:transform .4s cubic-bezier(.2,.7,.2,1)}
.nb-frame:first-child{border-top-right-radius:0;border-bottom-right-radius:0}
.nb-frame:first-child .nb-box{border-top-right-radius:0;border-bottom-right-radius:0}
.nb-frame:last-child{border-top-left-radius:0;border-bottom-left-radius:0}
.nb-frame:last-child .nb-box{border-top-left-radius:0;border-bottom-left-radius:0}
.nb-frame::before{content:"";position:absolute;inset:-7px;border-radius:26px;filter:blur(20px);opacity:0;z-index:-1;background:var(--cg);transition:opacity .45s ease}
.nb-box{border-radius:18.4px;background:#06080c;overflow:hidden;height:100%}
.nb-half{padding:22px 16px 18px;text-align:center;position:relative;overflow:hidden;height:100%}
.nb-half::after{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.045) 1px,transparent 1.3px);background-size:16px 16px;opacity:.5;pointer-events:none}
.nb-ic{margin:0 auto 10px;width:46px;height:46px;display:grid;place-items:center}
.nb-ic svg{width:40px;height:40px;stroke:var(--c);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 8px var(--cg));transition:filter .4s ease}
.nb-word{font-size:28px;font-weight:800;line-height:1;color:#fff;text-shadow:0 0 16px rgba(255,255,255,.14);transition:text-shadow .4s ease}
.nb-tagl{font-size:15px;font-weight:800;color:var(--c);margin-top:5px;text-shadow:0 0 12px var(--cg)}
.nb-line{width:34px;height:2px;background:var(--c);margin:10px auto;box-shadow:0 0 10px var(--cg)}
.nb-desc{color:#aeb6c2;font-size:12.5px;line-height:1.5;margin:0 auto;min-height:56px}
.nb-go{display:inline-flex;align-items:center;gap:7px;margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.08);color:var(--c);font-weight:700;font-size:14px;text-shadow:0 0 10px var(--cg);width:100%;justify-content:center;text-decoration:none;transition:gap .28s ease}
.nb-go svg{width:16px;height:16px;stroke:var(--c);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.nb-hit{position:absolute;inset:0;z-index:2;border-radius:inherit}
.nb-frame:hover{transform:scale(1.05);z-index:3}
.nb-frame:hover::before{opacity:.6}
.nb-frame:hover .nb-ic svg{filter:drop-shadow(0 0 13px var(--cg))}
.nb-frame:hover .nb-word{text-shadow:0 0 15px var(--cg)}
.nb-frame:hover .nb-go{gap:11px}
@media(prefers-reduced-motion:reduce){.nb-frame,.nb-ic svg,.nb-word,.nb-go{transition:none}.nb-frame:hover{transform:none}}
@media(max-width:520px){.nbwrap{flex-direction:column;width:100%;max-width:340px}.nb-frame:first-child{border-radius:20px 20px 0 0}.nb-frame:first-child .nb-box{border-radius:18.4px 18.4px 0 0}.nb-frame:last-child{border-radius:0 0 20px 20px}.nb-frame:last-child .nb-box{border-radius:0 0 18.4px 18.4px}}
/* hero-slot: two boxes fill the hero column */
.hero .nbwrap{padding:0;width:100%;max-width:474px}

.faq{max-width:900px;margin:0 auto}
details.faqitem{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 20px;margin-bottom:12px}
.faqitem summary{font-weight:700;color:var(--ink);cursor:pointer;font-size:16px;list-style:none}
.faqitem summary::-webkit-details-marker{display:none}
.faqitem p{margin-top:10px;font-size:14px}

.finalcta{background:var(--dark);color:#cdd5e2;border-radius:24px;padding:26px 34px;text-align:center}
.finalcta h2{color:#fff;font-size:34px}
.finalcta .row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin:22px auto 0;max-width:720px}
.finalcta .row{align-items:stretch}
.finalcta .row .btn{flex:1 1 0;min-width:0;white-space:nowrap}

/* ===== SHARED BUY/SELL FOOTER (logo left · columns center · map right) ===== */
footer{background:#070a0e;color:#9aa4b5;padding:46px 0 26px;border-top:1px solid #1b212b}
.fwrap{max-width:1200px;margin:0 auto;padding:0 28px}
.fgrid{display:grid;grid-template-columns:1.25fr .9fr .9fr 1fr 1.05fr;gap:26px;align-items:start}
@media(max-width:900px){.fgrid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.fgrid{grid-template-columns:1fr}}
.flogo img{height:40px;margin-bottom:12px}
.fblurb{font-size:13.5px;line-height:1.6;max-width:250px;margin-bottom:14px}
.fsoc{display:flex;gap:10px}
.fsoc a{width:34px;height:34px;border-radius:50%;border:1px solid #2b3340;display:grid;place-items:center;color:#9aa4b5;font-weight:700;font-size:13px}
.fsoc a:hover{background:var(--orange);color:#fff;border-color:var(--orange)}
footer h5{color:#fff;font-size:12px;letter-spacing:.07em;margin-bottom:14px}
footer ul{list-style:none}
footer li{margin-bottom:9px;font-size:13.5px}
footer a:hover{color:var(--orange)}
.fc a,.fc div{display:flex;gap:9px;align-items:flex-start;font-size:13.5px;margin-bottom:10px;line-height:1.4}
.fc svg{width:15px;height:15px;color:var(--orange);flex:none;margin-top:2px}
.fhh{color:#fff;font-weight:800;font-size:12px;letter-spacing:.07em;margin:14px 0 8px}
.hrow{display:flex;justify-content:space-between;font-size:13px;margin-bottom:6px;max-width:230px}
.hrow b{color:#fff;font-weight:600}
.fmap{margin-top:2px;border-radius:12px;overflow:hidden;border:1px solid #1b212b;height:172px}
.fmap iframe{width:100%;height:100%;border:0}
.copy{border-top:1px solid #1b212b;margin-top:30px;padding-top:18px;text-align:center;font-size:12.5px;color:#5f6b7a}
.copy a:hover{color:var(--orange)}

.sectlabel{margin-bottom:10px}
.h2c{font-size:34px}
@media(max-width:600px){.hero h1{font-size:34px}.h2c{font-size:26px}.finalcta{padding:34px}}
/* icon sizing fix — constrain svg wrappers so icons render at intended size */
.empty .ei,.cat .ic,.fcard .ic{display:block}
.hero-stats .s .si,.bsearch .si,.trust .ti svg,.btn svg{flex:none}
.empty .ei svg,.cat .ic svg,.fcard .ic svg,.hero-stats .s .si svg,.bsearch .si svg{width:100%;height:100%;display:block}
</style>
</head>
<body>

<style> @import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap'); header.bshdr{position:sticky;top:0;z-index:50;background:#0c0f15;border-bottom:1px solid #1b212b;font-family:'Plus Jakarta Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif} header.bshdr *{box-sizing:border-box;margin:0;padding:0} header.bshdr a{text-decoration:none;color:inherit} .bshdr .hd{max-width:1200px;margin:0 auto;padding:0 28px;display:flex;align-items:center;justify-content:space-between;height:72px;gap:24px} .bshdr .logo img{height:40px;display:block} .bshdr .menu{display:flex;gap:22px;font-weight:700;font-size:13.5px;letter-spacing:.02em;color:#e7eaef} .bshdr .menu a.active,.bshdr .menu a:hover{color:#f1530d} .bshdr .phonebox{display:flex;align-items:center;gap:10px;color:#fff} .bshdr .phonebox .circ{width:38px;height:38px;border-radius:50%;border:1.5px solid #f1530d;display:grid;place-items:center;color:#f1530d;flex:none} .bshdr .phonebox .circ svg{width:18px;height:18px} .bshdr .phonebox b{display:block;font-size:15px;font-weight:800;line-height:1.15} .bshdr .phonebox .st{display:block;font-size:11px;color:#36c46b;line-height:1.3} .bshdr .phonebox .st i{color:#9aa3b2;font-style:normal} .bshdr .phonebox .st.is-closed{color:#e05252} .bshdr .burger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:6px} .bshdr .burger span{width:26px;height:2.5px;background:#fff;border-radius:2px} @media(max-width:900px){.bshdr .menu,.bshdr .phonebox{display:none}.bshdr .burger{display:flex}} .bsmenu{position:fixed;inset:0;background:rgba(9,12,17,.98);z-index:200;display:none;flex-direction:column;padding:74px 28px 28px;gap:4px;font-family:'Plus Jakarta Sans',sans-serif} .bsmenu.open{display:flex} .bsmenu a{color:#e7eaef;font-weight:700;font-size:17px;padding:14px 6px;border-bottom:1px solid #1c2330;text-decoration:none} .bsmenu a.active{color:#f1530d} .bsmenu .mcall{color:#fff;background:#f1530d;border:none;border-radius:10px;text-align:center;margin-top:16px} .bsmenu .mclose{position:absolute;top:20px;right:24px;background:none;border:none;color:#fff;font-size:34px;line-height:1;cursor:pointer} </style><header class="bshdr"><div class="hd"><a class="logo" href="https://subnet1.com/"><img src="https://subnet1.com/wp-content/uploads/2026/06/subnet1-img-3.png" alt="Subnet1"></a><nav class="menu"><a href="https://subnet1.com/">REPAIR</a><a href="https://subnet1.com/buy-from-us/">BUY FROM US</a><a href="https://subnet1.com/sell-to-us/">SELL TO US</a><a href="https://subnet1.com/business-it-recycling">BUSINESS RECYCLING</a><a href="https://subnet1.com/about-subnet1/">ABOUT US</a></nav><a class="phonebox" href="tel:02088664644"><span class="circ"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 4.5h3l1.4 4-2 1.3a11 11 0 0 0 5.8 5.8l1.3-2 4 1.4v3c0 .9-.8 1.6-1.7 1.5C10.5 19.7 4.3 13.5 3.5 6.2 3.4 5.3 4.1 4.5 5 4.5z"/></svg></span><span><b>020 8866 4644</b><span class="st" id="bsopen">Open <i>&bull; Closes 6:30 pm</i></span></span></a><button class="burger" id="bsburger" aria-label="Open menu"><span></span><span></span><span></span></button></div></header><div class="bsmenu" id="bsmenu"><button class="mclose" id="bsmclose" aria-label="Close menu">&times;</button><a href="https://subnet1.com/">REPAIR</a><a href="https://subnet1.com/buy-from-us/">BUY FROM US</a><a href="https://subnet1.com/sell-to-us/">SELL TO US</a><a href="https://subnet1.com/business-it-recycling">BUSINESS RECYCLING</a><a href="https://subnet1.com/about-subnet1/">ABOUT US</a><a href="https://subnet1.com/contact-us/">CONTACT US</a><a class="mcall" href="tel:02088664644">020 8866 4644</a></div><script> (function(){var b=document.getElementById('bsburger'),m=document.getElementById('bsmenu'),c=document.getElementById('bsmclose');if(b&&m){b.addEventListener('click',function(){m.classList.add('open');});}if(c&&m){c.addEventListener('click',function(){m.classList.remove('open');});}if(m){var ls=m.querySelectorAll('a');for(var i=0;i<ls.length;i++){ls[i].addEventListener('click',function(){m.classList.remove('open');});}} /* current page highlight — works both in the page and inside the srcdoc iframe (reads the TOP url) */ var path=location.pathname;try{if(window.top!==window){path=top.location.pathname;}}catch(e){} var here=path.replace(/\/+$/,'');var links=document.querySelectorAll('.bshdr .menu a, .bsmenu a');for(var j=0;j<links.length;j++){try{var lp=new URL(links[j].href).pathname.replace(/\/+$/,'');if(lp&&lp===here){links[j].classList.add('active');}}catch(e){}} /* live Open/Closed — Europe/London, Mon-Sat 9:30-18:30, Sunday closed (same logic as the Repair header) */ var el=document.getElementById('bsopen'); if(el){try{var parts=new Intl.DateTimeFormat('en-GB',{timeZone:'Europe/London',weekday:'short',hour:'numeric',minute:'numeric',hour12:false}).formatToParts(new Date()); var g={};parts.forEach(function(x){g[x.type]=x.value;}); var day=g.weekday,mins=parseInt(g.hour,10)*60+parseInt(g.minute,10); var openNow=(day!=='Sun')&&mins>=570&&mins<1110; if(openNow){el.innerHTML='Open <i>&bull; Closes 6:30 pm</i>';el.classList.remove('is-closed');} else{var nxt=(day==='Sun'||(day==='Sat'&&mins>=1110))?'Mon 9:30 am':'9:30 am'; el.innerHTML='Closed <i>&bull; Opens '+nxt+'</i>';el.classList.add('is-closed');} }catch(e){}}})(); </script>

<a class="wa-float" href="https://wa.me/447413248784" target="_blank" rel="noopener" aria-label="Chat on WhatsApp"><svg viewBox="0 0 24 24"><path d="M12 2a10 10 0 0 0-8.6 15l-1.4 5 5.1-1.3A10 10 0 1 0 12 2zm0 2a8 8 0 0 1 0 16 8 8 0 0 1-4-1.1l-.3-.2-3 .8.8-2.9-.2-.3A8 8 0 0 1 12 4zm4.5 9.7c-.2-.1-1.4-.7-1.6-.8-.2-.1-.4-.1-.5.1l-.7.9c-.1.1-.3.2-.5.1a6.5 6.5 0 0 1-3.2-2.8c-.1-.2 0-.4.1-.5l.4-.5c.1-.2.1-.3 0-.5l-.7-1.7c-.2-.4-.4-.4-.5-.4h-.5c-.2 0-.4.1-.6.3-.2.2-.8.8-.8 1.9s.8 2.2.9 2.4c.1.2 1.6 2.5 4 3.4.6.2 1 .4 1.3.5.6.2 1.1.2 1.5.1.5-.1 1.4-.6 1.6-1.1.2-.5.2-1 .1-1.1z"/></svg></a>

<!-- HERO -->
<section class="hero">
  <div class="hero-bg"></div>
  <div class="wrap">
    <div>
      <div class="eyebrow">Buy refurbished with confidence</div>
      <h1>Refurbished Computers, Laptops &amp; Phones in Eastcote</h1>
      <p class="sub">Fully tested, professionally refurbished devices — backed by a 6-month warranty and 19+ years of local trust.</p>
      <div class="searchbar"><input id="heroSearch" placeholder="Search e.g. MacBook Air, iPhone, gaming PC…"><button class="btn btn-orange" id="heroBtn"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4-4"/></svg> Search</button></div>
    </div>
    <div class="nbwrap">
      <div class="nb-frame" style="--c:#f1530d;--cg:#ff7a3d"><div class="nb-box"><div class="nb-half"><div class="nb-ic"><svg viewBox="0 0 24 24"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg></div><div class="nb-word">REPAIR</div><div class="nb-tagl">By Us</div><div class="nb-line"></div><div class="nb-desc">Cracked screen, slow PC or broken phone — fast local repairs.</div><a class="nb-go" href="https://subnet1.com/">Repair now <svg viewBox="0 0 24 24"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></a></div></div></div>
      <div class="nb-frame" style="--c:#17c964;--cg:#3ff08a"><div class="nb-box"><div class="nb-half"><div class="nb-ic"><svg viewBox="0 0 24 24"><rect width="20" height="12" x="2" y="6" rx="2"/><circle cx="12" cy="12" r="2"/><path d="M6 12h.01M18 12h.01"/></svg></div><div class="nb-word">SELL</div><div class="nb-tagl">To Us</div><div class="nb-line"></div><div class="nb-desc">Sell your phone, laptop or console for cash. Same-day payment.</div><a class="nb-go" href="https://subnet1.com/sell-to-us/">Sell now <svg viewBox="0 0 24 24"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></a></div></div></div>
    </div>
    <div class="hero-actions">
      <div class="hero-cta">
        <a class="btn btn-orange" href="#browse"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4-4"/></svg> Browse all stock</a>
        <a class="btn btn-green" href="https://wa.me/447413248784" target="_blank" rel="noopener"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2a10 10 0 0 0-8.6 15l-1.4 5 5.1-1.3A10 10 0 1 0 12 2zm0 2a8 8 0 0 1 0 16 8 8 0 0 1-4-1.1l-.3-.2-3 .8.8-2.9-.2-.3A8 8 0 0 1 12 4zm4.5 9.7c-.2-.1-1.4-.7-1.6-.8-.2-.1-.4-.1-.5.1l-.7.9c-.1.1-.3.2-.5.1a6.5 6.5 0 0 1-3.2-2.8c-.1-.2 0-.4.1-.5l.4-.5c.1-.2.1-.3 0-.5l-.7-1.7c-.2-.4-.4-.4-.5-.4h-.5c-.2 0-.4.1-.6.3-.2.2-.8.8-.8 1.9s.8 2.2.9 2.4c.1.2 1.6 2.5 4 3.4.6.2 1 .4 1.3.5.6.2 1.1.2 1.5.1.5-.1 1.4-.6 1.6-1.1.2-.5.2-1 .1-1.1z"/></svg> WhatsApp us</a>
      </div>
      <div class="hero-stats">
        <div class="s"><span class="si"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 3l7 3v5c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6z"/></svg></span><span><b>6-month</b><span>warranty included</span></span></div>
        <div class="s"><span class="si"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M5 12l5 5 9-11"/></svg></span><span><b>100% tested</b><span>&amp; certified</span></span></div>
        <div class="s"><span class="si"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><path d="M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2"/><path d="M15 18H9"/><path d="M19 18h2a1 1 0 0 0 1-1v-3.6a1 1 0 0 0-.2-.6l-3.5-4.4A1 1 0 0 0 17.5 8H14"/><circle cx="17" cy="18" r="2"/><circle cx="7" cy="18" r="2"/></svg></span><span><b>Local</b><span>collection &amp; delivery</span></span></div>
        <div class="s"><span class="si"><svg viewBox="0 0 24 24"><path fill="#4285F4" d="M21.6 12.2c0-.6-.1-1.2-.2-1.7H12v3.3h5.4c-.2 1.2-.9 2.3-2 3v2.5h3.2c1.9-1.7 3-4.3 3-7.1z"/><path fill="#34A853" d="M12 22c2.7 0 4.9-.9 6.6-2.4l-3.2-2.5c-.9.6-2 .9-3.4.9-2.6 0-4.8-1.7-5.6-4.1H3.1v2.6A10 10 0 0 0 12 22z"/><path fill="#FBBC05" d="M6.4 13.9c-.2-.6-.3-1.2-.3-1.9s.1-1.3.3-1.9V7.5H3.1A10 10 0 0 0 2 12c0 1.6.4 3.2 1.1 4.5z"/><path fill="#EA4335" d="M12 6.1c1.5 0 2.8.5 3.8 1.5l2.8-2.8A10 10 0 0 0 12 2 10 10 0 0 0 3.1 7.5l3.3 2.6C7.2 7.7 9.4 6.1 12 6.1z"/></svg></span><span><b>4.9 / 5</b><span>438 Google reviews</span></span></div>
      </div>
    </div>
  </div>
</section>

<div class="trust"><div class="wrap">
  <span class="ti"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M5 12l5 5 9-11"/></svg>6-month warranty on every device</span>
  <span class="ti"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M5 12l5 5 9-11"/></svg>Fully data-wiped &amp; tested</span>
  <span class="ti"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M5 12l5 5 9-11"/></svg>Local collection &amp; delivery</span>
  <span class="ti"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M5 12l5 5 9-11"/></svg>Pay in store or online</span>
</div></div>

<!-- FEATURED DEALS -->
<section class="section">
  <div class="wrap">
    <div class="center sectlabel"><span class="eyebrow">In stock now</span></div>
    <h2 class="center h2c" style="margin-bottom:20px">Featured deals</h2>
    <!-- WooCommerce Store API populates this marquee (see script at end). -->
    <div class="marquee" id="mq"><div class="ftrack" id="featTrack"></div></div>
    <p class="center mqnote" id="mqNote">Auto-scrolling · hover to pause</p>
    <div class="empty" id="featEmpty" style="display:none">
      <span class="ei"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6"><path d="M3 9l1-4h16l1 4M4 9h16v10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1zM9 13h6"/></svg></span>
      <h4>New arrivals are on the way</h4>
      <p>We add refurbished stock regularly. Message us for current availability.</p>
      <div class="ebtns">
        <a class="btn btn-green" href="https://wa.me/447413248784" target="_blank" rel="noopener"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2a10 10 0 0 0-8.6 15l-1.4 5 5.1-1.3A10 10 0 1 0 12 2zm0 2a8 8 0 0 1 0 16 8 8 0 0 1-4-1.1l-.3-.2-3 .8.8-2.9-.2-.3A8 8 0 0 1 12 4zm4.5 9.7c-.2-.1-1.4-.7-1.6-.8-.2-.1-.4-.1-.5.1l-.7.9c-.1.1-.3.2-.5.1a6.5 6.5 0 0 1-3.2-2.8c-.1-.2 0-.4.1-.5l.4-.5c.1-.2.1-.3 0-.5l-.7-1.7c-.2-.4-.4-.4-.5-.4h-.5c-.2 0-.4.1-.6.3-.2.2-.8.8-.8 1.9s.8 2.2.9 2.4c.1.2 1.6 2.5 4 3.4.6.2 1 .4 1.3.5.6.2 1.1.2 1.5.1.5-.1 1.4-.6 1.6-1.1.2-.5.2-1 .1-1.1z"/></svg> WhatsApp us</a>
        <a class="btn btn-ghost" href="tel:02088664644"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 4.5h3l1.4 4-2 1.3a11 11 0 0 0 5.8 5.8l1.3-2 4 1.4v3c0 .9-.8 1.6-1.7 1.5C10.5 19.7 4.3 13.5 3.5 6.2 3.4 5.3 4.1 4.5 5 4.5z"/></svg> Call us</a>
      </div>
    </div>
  </div>
</section>

<!-- CATEGORIES -->
<section class="section" style="background:var(--bg)">
  <div class="wrap">
    <div class="center sectlabel"><span class="eyebrow">Shop by category</span></div>
    <h2 class="center h2c" style="margin-bottom:20px">Find your next device</h2>
    <div class="cats">
      <div class="cat"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="4" y="5" width="16" height="10" rx="1.5"/><path d="M2 19h20"/></svg></span><b>Laptops</b></div>
      <div class="cat"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="4" y="3" width="16" height="13" rx="2"/><path d="M9 20h6M12 16v4"/></svg></span><b>Desktops &amp; PCs</b></div>
      <div class="cat"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="11" rx="2"/><path d="M2 19h20"/></svg></span><b>MacBooks &amp; iMacs</b></div>
      <div class="cat"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="7" y="2.5" width="10" height="19" rx="2"/><path d="M11 18.5h2"/></svg></span><b>Phones</b></div>
      <div class="cat"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="5" y="3" width="14" height="18" rx="2"/><path d="M11 18h2"/></svg></span><b>Tablets</b></div>
      <div class="cat"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="7" width="20" height="10" rx="5"/><path d="M7 11v2M6 12h2M16 12h.01M18 13h.01"/></svg></span><b>Consoles</b></div>
    </div>
  </div>
</section>

<!-- BROWSE -->
<section class="section" id="browse">
  <div class="wrap">
    <div class="center sectlabel"><span class="eyebrow">Browse our stock</span></div>
    <h2 class="center h2c" style="margin-bottom:20px">Search devices &amp; parts</h2>
    <div class="bsearch"><span class="si"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4-4"/></svg></span><input id="browseSearch" placeholder="Search by model, spec or keyword — e.g. MacBook, i7 laptop, PS5…"><button class="btn btn-orange">Search</button></div>
    <div class="browse">
      <!-- WooCommerce: map these filters to product attributes (brand, cpu, ram, storage, condition) + price; wire to WooCommerce product-filter widgets/query. -->
      <aside class="filters">
        <div class="fhead"><b>Filters</b><span class="fclear">Clear all</span></div>
        <div class="fgroup dtgroup"><h5>Device type</h5>
          <label class="fopt"><input type="checkbox" class="dt">Laptops</label>
          <label class="fopt"><input type="checkbox" class="dt">Desktops &amp; PCs</label>
          <label class="fopt"><input type="checkbox" class="dt">MacBooks &amp; iMacs</label>
          <label class="fopt"><input type="checkbox" class="dt">Phones</label>
          <label class="fopt"><input type="checkbox" class="dt">Tablets</label>
          <label class="fopt"><input type="checkbox" class="dt">Consoles</label>
        </div>
        <div id="facetHost"></div>
        <div class="fgroup"><h5>Price</h5>
          <div class="rangewrap" id="priceRange">
            <div class="rtrack"></div><div class="rfill" id="rFill"></div>
            <input type="range" class="rthumb" id="rMin" min="0" max="1500" step="10" value="0">
            <input type="range" class="rthumb" id="rMax" min="0" max="1500" step="10" value="1500">
          </div>
          <div class="fprice2">
            <div><label>Min price</label><input type="number" id="pMin" value="0" min="0"></div>
            <div><label>Max price</label><input type="number" id="pMax" value="1500" min="0"></div>
          </div>
        </div>
      </aside>
      <div>
        <!-- WooCommerce Store API populates this grid (see script at end). -->
        <div class="bbar"><span id="bcount">Loading stock…</span></div>
        <div class="bgrid" id="bgrid"></div>
        <div class="empty" id="bEmpty" style="display:none">
          <span class="ei"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4-4"/></svg></span>
          <h4>No products match your filters</h4>
          <p>Try clearing some filters or check back soon — or message us for current availability.</p>
          <div class="ebtns">
            <a class="btn btn-green" href="https://wa.me/447413248784" target="_blank" rel="noopener"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2a10 10 0 0 0-8.6 15l-1.4 5 5.1-1.3A10 10 0 1 0 12 2zm0 2a8 8 0 0 1 0 16 8 8 0 0 1-4-1.1l-.3-.2-3 .8.8-2.9-.2-.3A8 8 0 0 1 12 4zm4.5 9.7c-.2-.1-1.4-.7-1.6-.8-.2-.1-.4-.1-.5.1l-.7.9c-.1.1-.3.2-.5.1a6.5 6.5 0 0 1-3.2-2.8c-.1-.2 0-.4.1-.5l.4-.5c.1-.2.1-.3 0-.5l-.7-1.7c-.2-.4-.4-.4-.5-.4h-.5c-.2 0-.4.1-.6.3-.2.2-.8.8-.8 1.9s.8 2.2.9 2.4c.1.2 1.6 2.5 4 3.4.6.2 1 .4 1.3.5.6.2 1.1.2 1.5.1.5-.1 1.4-.6 1.6-1.1.2-.5.2-1 .1-1.1z"/></svg> Ask about stock</a>
          </div>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- WHY REFURBISHED -->
<section class="section" style="background:var(--bg)">
  <div class="wrap">
    <div class="center sectlabel"><span class="eyebrow">Why buy from Subnet1</span></div>
    <h2 class="center h2c" style="margin-bottom:20px">Refurbished, not second-rate</h2>
    <div class="feat">
      <div class="fcard"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 3l7 3v5c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6z"/></svg></span><h4>6-month warranty</h4><p>Every device comes with a 6-month warranty for total peace of mind.</p></div>
      <div class="fcard"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></span><h4>Tested by experts</h4><p>Each unit is checked &amp; refurbished by our 19-year technicians.</p></div>
      <div class="fcard"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="5" y="11" width="14" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/></svg></span><h4>Data-wiped &amp; clean</h4><p>Secure wipe and fresh setup on every machine.</p></div>
      <div class="fcard"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="6" width="20" height="12" rx="2"/><circle cx="12" cy="12" r="2.5"/></svg></span><h4>Save up to 50%</h4><p>Top-quality tech for a fraction of the new price.</p></div>
    </div>
  </div>
</section>

<!-- REVIEWS -->
<section class="section">
  <div class="wrap">
    <div class="center sectlabel"><span class="eyebrow">What our customers say</span></div>
    <h2 class="center h2c" style="margin-bottom:20px">Trusted by 1000's in Eastcote</h2>
    <div class="revs">
      <div class="rev"><div class="stars">&#9733;&#9733;&#9733;&#9733;&#9733;</div><p>Bought a refurbished laptop — works like new and saved me a fortune.</p><div class="who"><div class="av">JL</div><b style="color:var(--ink)">James L.</b></div></div>
      <div class="rev"><div class="stars">&#9733;&#9733;&#9733;&#9733;&#9733;</div><p>Great MacBook at a great price, plus warranty. Highly recommend.</p><div class="who"><div class="av">PS</div><b style="color:var(--ink)">Priya S.</b></div></div>
      <div class="rev"><div class="stars">&#9733;&#9733;&#9733;&#9733;&#9733;</div><p>Honest advice and the phone was spotless. Will buy again.</p><div class="who"><div class="av">MT</div><b style="color:var(--ink)">Mark T.</b></div></div>
      <div class="rev"><div class="stars">&#9733;&#9733;&#9733;&#9733;&#9733;</div><p>Excellent value and friendly service. Trustworthy local shop.</p><div class="who"><div class="av">SK</div><b style="color:var(--ink)">Sarah K.</b></div></div>
    </div>
  </div>
</section>

<!-- NEON DUAL CROSS-SELL BOX (Repair + Sell) -->
<section class="section" style="background:var(--bg)">
  <div class="wrap">
    <div class="center sectlabel"><span class="eyebrow">More from Subnet1</span></div>
    <h2 class="center h2c" style="margin-bottom:18px">Looking for something else?</h2>
    <div class="nbwrap">
      <div class="nb-frame" style="--c:#f1530d;--cg:#ff7a3d"><div class="nb-box"><div class="nb-half"><div class="nb-ic"><svg viewBox="0 0 24 24"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg></div><div class="nb-word">REPAIR</div><div class="nb-tagl">By Us</div><div class="nb-line"></div><div class="nb-desc">Cracked screen, slow PC or broken phone — fast local repairs.</div><a class="nb-go" href="https://subnet1.com/">Repair now <svg viewBox="0 0 24 24"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></a></div></div></div>
      <div class="nb-frame" style="--c:#17c964;--cg:#3ff08a"><div class="nb-box"><div class="nb-half"><div class="nb-ic"><svg viewBox="0 0 24 24"><rect width="20" height="12" x="2" y="6" rx="2"/><circle cx="12" cy="12" r="2"/><path d="M6 12h.01M18 12h.01"/></svg></div><div class="nb-word">SELL</div><div class="nb-tagl">To Us</div><div class="nb-line"></div><div class="nb-desc">Sell your phone, laptop or console for cash. Same-day payment.</div><a class="nb-go" href="https://subnet1.com/sell-to-us/">Sell now <svg viewBox="0 0 24 24"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></a></div></div></div>
    </div>
  </div>
</section>

<!-- FAQ -->
<section class="section">
  <div class="wrap">
    <div class="center sectlabel"><span class="eyebrow">FAQ</span></div>
    <h2 class="center h2c" style="margin-bottom:20px">Buying refurbished — your questions</h2>
    <div class="faq">
      <details class="faqitem" open><summary>Do refurbished devices come with a warranty?</summary><p>Yes — every device sold by Subnet1 includes a 6-month warranty so you can buy with total confidence.</p></details>
      <details class="faqitem"><summary>What does "Grade A / Grade B" mean?</summary><p>Grade A is near-mint with minimal signs of use; Grade B has light cosmetic marks but works perfectly. All grades are fully tested.</p></details>
      <details class="faqitem"><summary>Can I see the device before I buy?</summary><p>Absolutely — pop into the shop in Pinner, or message us for photos and full specs of any device.</p></details>
      <details class="faqitem"><summary>Do you offer delivery in Eastcote, Ruislip and Pinner?</summary><p>Yes, local collection and delivery is available across HA4, HA5, HA6 and surrounding areas.</p></details>
    </div>
  </div>
</section>

<!-- FINAL CTA -->
<section class="section">
  <div class="wrap">
    <div class="finalcta">
      <h2>Ready to grab a great deal?</h2>
      <p style="margin-top:10px">Browse our latest stock or message us — we'll help you find the perfect device.</p>
      <div class="row">
        <a class="btn btn-orange" href="#browse"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4-4"/></svg> Browse stock</a>
        <a class="btn btn-green" href="https://wa.me/447413248784" target="_blank" rel="noopener"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2a10 10 0 0 0-8.6 15l-1.4 5 5.1-1.3A10 10 0 1 0 12 2zm0 2a8 8 0 0 1 0 16 8 8 0 0 1-4-1.1l-.3-.2-3 .8.8-2.9-.2-.3A8 8 0 0 1 12 4zm4.5 9.7c-.2-.1-1.4-.7-1.6-.8-.2-.1-.4-.1-.5.1l-.7.9c-.1.1-.3.2-.5.1a6.5 6.5 0 0 1-3.2-2.8c-.1-.2 0-.4.1-.5l.4-.5c.1-.2.1-.3 0-.5l-.7-1.7c-.2-.4-.4-.4-.5-.4h-.5c-.2 0-.4.1-.6.3-.2.2-.8.8-.8 1.9s.8 2.2.9 2.4c.1.2 1.6 2.5 4 3.4.6.2 1 .4 1.3.5.6.2 1.1.2 1.5.1.5-.1 1.4-.6 1.6-1.1.2-.5.2-1 .1-1.1z"/></svg> WhatsApp us</a>
        <a class="btn btn-ghost" href="tel:02088664644"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 4.5h3l1.4 4-2 1.3a11 11 0 0 0 5.8 5.8l1.3-2 4 1.4v3c0 .9-.8 1.6-1.7 1.5C10.5 19.7 4.3 13.5 3.5 6.2 3.4 5.3 4.1 4.5 5 4.5z"/></svg> Call 020 8866 4644</a>
      </div>
    </div>
  </div>
</section>

<footer>
  <div class="fwrap">
    <div class="fgrid">
      <!-- LEFT: logo + blurb + socials -->
      <div>
        <div class="flogo"><img src="https://subnet1.com/wp-content/uploads/2026/06/subnet1-img-4.png" alt="Subnet1"></div>
        <p class="fblurb">Buy &amp; sell quality refurbished tech in Eastcote — fair prices, warranty and same-day service.</p>
        <div class="fsoc"><a href="https://www.facebook.com/people/Subnet-Eastcote/100072022084041/" target="_blank" rel="noopener" aria-label="Facebook">f</a><a href="https://www.instagram.com/subnet1eastcote/" target="_blank" rel="noopener" aria-label="Instagram">&#9673;</a><a href="https://g.page/subnet1/review" aria-label="Google">G</a></div>
      </div>
      <!-- CENTER A: quick links -->
      <div>
        <h5>QUICK LINKS</h5>
        <ul>
          <li><a href="https://subnet1.com/">Repair</a></li>
          <li><a href="https://subnet1.com/buy-from-us/">Buy From Us</a></li>
          <li><a href="https://subnet1.com/sell-to-us/">Sell to Us</a></li>
          <li><a href="https://subnet1.com/business-it-recycling">Business Recycling</a></li>
          <li><a href="https://subnet1.com/about-subnet1/">About Us</a></li>
          <li><a href="https://subnet1.com/contact-us/">Contact Us</a></li>
        </ul>
      </div>
      <!-- CENTER B: buy & sell (replaces repair "Our Services") -->
      <div>
        <h5>BUY &amp; SELL</h5>
        <ul>
          <li><a href="https://subnet1.com/buy-from-us/">Browse Refurbished Stock</a></li>
          <li><a href="https://subnet1.com/sell-to-us/">Sell Your Device</a></li>
          <li><a href="https://subnet1.com/sell-to-us/">Get an Instant Quote</a></li>
          
          <li><a href="https://subnet1.com/sell-to-us/#quote">Trade-In Options</a></li>
        </ul>
      </div>
      <!-- CONTACT US -->
      <div>
        <h5>CONTACT US</h5>
        <div class="fc">
          <a href="tel:02088664644"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 4.5h3l1.4 4-2 1.3a11 11 0 0 0 5.8 5.8l1.3-2 4 1.4v3c0 .9-.8 1.6-1.7 1.5C10.5 19.7 4.3 13.5 3.5 6.2 3.4 5.3 4.1 4.5 5 4.5z"/></svg>020 8866 4644</a>
          <a href="https://wa.me/447413248784"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2a10 10 0 0 0-8.6 15l-1.4 5 5.1-1.3A10 10 0 1 0 12 2z"/></svg>07413 248 784</a>
          <a href="mailto:info@subnet1.com"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3.5" y="6" width="17" height="12" rx="2"/><path d="M4 7.5l8 5.5 8-5.5"/></svg>info@subnet1.com</a>
          <a href="https://www.google.com/maps?q=51.5767108,-0.3973633" target="_blank" rel="noopener"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 21s7-5.6 7-11a7 7 0 0 0-14 0c0 5.4 7 11 7 11z"/><circle cx="12" cy="10" r="2.5"/></svg>221 Field End Road, Eastcote, Pinner, HA5 1QZ</a>
        </div>
        <div class="fhh">OPENING HOURS</div>
        <div class="hrow"><span>Mon – Sat</span><b>9:30 – 18:30</b></div>
        <div class="hrow"><span>Sunday</span><b>Closed</b></div>
      </div>
      <!-- FIND US: map on the right -->
      <div>
        <h5>FIND US</h5>
        <div class="fmap"><iframe src="https://maps.google.com/maps?q=51.5767108,-0.3973633&z=15&output=embed" loading="lazy" title="Subnet1 location map"></iframe></div>
      </div>
    </div>
    <div class="copy">© 2026 Subnet1 Technology Solutions. All rights reserved. &nbsp;·&nbsp; <a href="https://subnet1.com/privacy-policy/">Privacy Policy</a> &nbsp;·&nbsp; <a href="https://subnet1.com/terms-services/">Terms &amp; Conditions</a></div>
  </div>
</footer>

<script>
(function(){
  var burger=document.getElementById('burger'), mmenu=document.getElementById('mmenu'), mclose=document.getElementById('mclose');
  if(burger) burger.addEventListener('click',function(){ mmenu.classList.add('open'); });
  if(mclose) mclose.addEventListener('click',function(){ mmenu.classList.remove('open'); });
  if(mmenu) [].slice.call(mmenu.querySelectorAll('a')).forEach(function(a){ a.addEventListener('click',function(){ mmenu.classList.remove('open'); }); });

  function go(e){ if(e) e.preventDefault();
    var b=document.getElementById('browse');
    if(b){ b.scrollIntoView({behavior:'smooth',block:'start'});
      var s=document.getElementById('browseSearch');
      if(s) setTimeout(function(){ s.focus(); },550);
    }
  }
  var hs=document.getElementById('heroSearch'), hb=document.getElementById('heroBtn');
  if(hs){ hs.addEventListener('focus',go); hs.addEventListener('click',go); }
  if(hb){ hb.addEventListener('click',go); }

  function updateCpu(){
    var brands=[].slice.call(document.querySelectorAll('.brand'));
    var apple=brands.some(function(c){return c.value==='Apple'&&c.checked;});
    var pc=brands.some(function(c){return c.value!=='Apple'&&c.checked;});
    var ryzen=document.querySelector('.cpu-ryzen'), mac=document.querySelector('.cpu-apple');
    if(ryzen) ryzen.style.display=(apple&&!pc)?'none':'';
    if(mac) mac.style.display=(pc&&!apple)?'none':'';
  }
  [].slice.call(document.querySelectorAll('.brand')).forEach(function(c){ c.addEventListener('change',updateCpu); });
  // in-page hash links must scroll within this iframe, not reload the top window (base target=_top)
  document.addEventListener('click',function(e){ var a=e.target.closest?e.target.closest('a[href^="#"]'):null; if(a){ var id=a.getAttribute('href'); if(id&&id.length>1){ var t=document.querySelector(id); if(t){ e.preventDefault(); t.scrollIntoView({behavior:'smooth',block:'start'}); } } } },false);
  // sticky filters within the Browse section (parent-scroll aware, because we live inside the srcdoc iframe)
  (function(){
    function stick(){
      var filters=document.querySelector('.filters'), browse=document.querySelector('.browse');
      if(!filters||!browse) return;
      if(window.innerWidth<=900){ filters.style.transform=''; return; }
      var f=null; try{ f=window.frameElement; }catch(e){}
      var br=browse.getBoundingClientRect();
      var topNow=f?(f.getBoundingClientRect().top+br.top):br.top;
      var maxD=Math.max(0, browse.offsetHeight - filters.offsetHeight - 8);
      var d=Math.min(Math.max(0, 20-topNow), maxD);
      filters.style.transform = d>0 ? ('translateY('+d+'px)') : '';
    }
    var f0=null; try{ f0=window.frameElement; }catch(e){}
    var tgt=(f0&&window.parent)?window.parent:window;
    try{ tgt.addEventListener('scroll',stick,{passive:true}); }catch(e){ window.addEventListener('scroll',stick,{passive:true}); }
    window.addEventListener('resize',stick);
    stick(); setTimeout(stick,900); setTimeout(stick,2000);
  })();
})();
</script>
<script>
/* ===== WooCommerce Store API — live catalog v5 (single device type · data-driven facets · dual price) ===== */
(function(){
  var API='https://subnet1.com/wp-json/wc/store/v1/products?per_page=100';
  var WA='https://wa.me/447413248784';
  var featGrid=document.getElementById('featGrid'), featEmpty=document.getElementById('featEmpty');
  var bgrid=document.getElementById('bgrid'), bEmpty=document.getElementById('bEmpty'), bcount=document.getElementById('bcount');
  var searchInput=document.getElementById('browseSearch');
  var facetHost=document.getElementById('facetHost');
  var rMin=document.getElementById('rMin'), rMax=document.getElementById('rMax'), rFill=document.getElementById('rFill');
  var pMin=document.getElementById('pMin'), pMax=document.getElementById('pMax');
  var PRODUCTS=[], PMIN=0, PMAX=1500, curMin=0, curMax=1500;
  var selectedDTs=[], selectedFacets={};
  var curGen='', curGhz=0;

  /* ---- processor grouping: family / generation / speed ---------------- */
  var CPUFAM=[
    ['Intel Core i9', /core\s*i9/i], ['Intel Core i7', /core\s*i7/i],
    ['Intel Core i5', /core\s*i5/i], ['Intel Core i3', /core\s*i3/i],
    ['Intel Core m3', /core\s*m3/i], ['Intel Core 2 Duo', /core\s*2\s*duo/i],
    ['Intel Xeon', /xeon/i], ['Intel Pentium', /pentium/i], ['Intel Celeron', /celeron/i],
    ['Apple M4', /\bm4\b/i], ['Apple M3', /\bm3\b(?!\s*6)/i],
    ['Apple M2', /\bm2\b/i], ['Apple M1', /\bm1\b/i],
    ['AMD Ryzen 9', /ryzen\s*9/i], ['AMD Ryzen 7', /ryzen\s*7/i],
    ['AMD Ryzen 5', /ryzen\s*5/i], ['AMD Ryzen 3', /ryzen\s*3/i],
    ['AMD Athlon', /athlon/i], ['AMD A-Series', /\bamd\s*a\d/i],
    ['Quad Core', /quad\s*core/i]
  ];
  var FAMORDER=CPUFAM.map(function(f){return f[0];}).concat(['Other']);
  function cpuFam(raw){ var s=String(raw||'');
    if(/core\s*m3/i.test(s)) return 'Intel Core m3';
    for(var i=0;i<CPUFAM.length;i++){ if(CPUFAM[i][1].test(s)) return CPUFAM[i][0]; }
    return 'Other'; }
  function cpuGen(raw){ var m=String(raw||'').match(/(\d{1,2})\s*(?:st|nd|rd|th)\s*gen/i);
    return m?parseInt(m[1],10):0; }
  function cpuGhz(raw){ var m=String(raw||'').match(/([\d.]+)\s*GHz/i);
    return m?parseFloat(m[1]):0; }
  function ord(n){ var r=n%100; if(r>=11&&r<=13) return n+'th';
    return n+({1:'st',2:'nd',3:'rd'}[n%10]||'th'); }
  function cpuRawOf(m){ return (m.attrs&&(m.attrs.cpu||m.attrs.processor))||[]; }
  var FLABEL={brand:'Brand',cpu:'Processor',processor:'Processor',ram:'RAM',storage:'Storage',colour:'Colour',color:'Colour',network:'Network',condition:'Condition',screen:'Screen size',generation:'Generation',model:'Model'};
  var FORDER=['brand','cpu','processor','ram','storage','screen','generation','colour','color','network','model','condition'];

  function decode(s){var t=document.createElement('textarea');t.innerHTML=s||'';return t.value;}
  function stripHtml(s){var t=document.createElement('div');t.innerHTML=s||'';return (t.textContent||'').replace(/\s+/g,' ').trim();}
  function norm(s){return (s||'').toString().toLowerCase().replace(/[^a-z0-9]/g,'');}
  function priceOf(p){try{var m=p.prices;return parseInt(m.price,10)/Math.pow(10,m.currency_minor_unit||2);}catch(e){return 0;}}
  function symOf(p){try{return decode(p.prices.currency_symbol)||'£';}catch(e){return '£';}}

  function model(p){
    var attrs={};
    (p.attributes||[]).forEach(function(a){var n=(a.name||'').toLowerCase().trim();
      attrs[n]=(a.terms||[]).map(function(t){return t.name;});});
    var catNames=(p.categories||[]).map(function(c){return c.name;});
    var mid=[];
    (p.attributes||[]).forEach(function(a){var n=(a.name||'').toLowerCase().trim();
      if(n==='brand'||n==='condition') return; (a.terms||[]).forEach(function(t){mid.push(t.name);});});
    var brand=(attrs['brand']||[])[0]||'', cond=(attrs['condition']||[])[0]||'';
    var line=[]; if(brand) line.push(brand); line=line.concat(mid); if(cond) line.push(cond);
    var descText=stripHtml(p.short_description||p.description||'');
    var spec=line.length?line.join(' · '):(descText.length>110?descText.slice(0,110)+'…':descText);
    var name=decode(p.name);
    return {id:p.id,name:name,url:p.permalink,img:(p.images&&p.images[0]&&p.images[0].src)||'',
      price:priceOf(p),sym:symOf(p),cond:cond,attrs:attrs,
      catTokens:catNames.map(norm),spec:spec,
      search:norm(name+' '+mid.join(' ')+' '+brand+' '+catNames.join(' ')+' '+descText)};
  }

  function badge(cond){var c=norm(cond);
    if(c.indexOf('gradeb')===0) return '<span class="grade b">'+cond+'</span>';
    if(cond) return '<span class="grade">'+cond+'</span>'; return '';}
  var ICON='<svg viewBox="0 0 24 24" fill="none" stroke="#b9c2d0" stroke-width="1.3" style="width:64px;height:64px"><rect x="3" y="4" width="18" height="12" rx="2"/><path d="M2 20h20"/></svg>';

  function card(m){
    var thumb=m.img?'<img src="'+m.img+'" alt="'+m.name.replace(/"/g,'&quot;')+'">':ICON;
    var wa=WA+'?text='+encodeURIComponent('Hi, is the '+m.name+' still available?');
    return '<div class="card">'
      +'<a class="thumb" href="'+m.url+'" target="_blank" rel="noopener">'+thumb+badge(m.cond)+'</a>'
      +'<div class="body"><h4>'+m.name+'</h4>'
      +'<div class="spec">'+(m.spec||'&nbsp;')+'</div>'
      +'<div class="pr"><span class="price">'+m.sym+m.price.toFixed(2)+'</span>'
      +'<a class="buy" href="'+wa+'" target="_blank" rel="noopener" style="text-decoration:none;display:inline-block">Enquire</a>'
      +'</div></div></div>';
  }

  function deviceProducts(){ if(!selectedDTs.length) return PRODUCTS.slice();
    return PRODUCTS.filter(function(m){return selectedDTs.some(function(d){return m.catTokens.indexOf(d)>-1;});}); }

  function buildFacets(){
    selectedFacets={};
    var prods=deviceProducts(), map={};
    prods.forEach(function(p){ Object.keys(p.attrs).forEach(function(k){
      if(!map[k]) map[k]=[]; p.attrs[k].forEach(function(t){ if(map[k].indexOf(t)<0) map[k].push(t); }); }); });
    var keys=Object.keys(map).sort(function(a,b){
      var ia=FORDER.indexOf(a); var ib=FORDER.indexOf(b); if(ia<0)ia=50; if(ib<0)ib=50; return ia-ib; });
    var CPUKEYS=['cpu','processor'];
    var cpuRaw=[]; CPUKEYS.forEach(function(k){ (map[k]||[]).forEach(function(t){ if(cpuRaw.indexOf(t)<0) cpuRaw.push(t); }); });
    keys=keys.filter(function(k){ return CPUKEYS.indexOf(k)<0; });

    var html=keys.map(function(k){
      var label=FLABEL[k]||(k.charAt(0).toUpperCase()+k.slice(1));
      var opts=map[k].map(function(t){
        return '<label class="fopt"><input type="checkbox" class="facetbox" data-facet="'+k+'" data-tok="'+norm(t)+'">'+t+'</label>';}).join('');
      if(k==='brand'||k==='condition') return '<div class="fgroup facet"><h5>'+label+'</h5>'+opts+'</div>';
      return '<details class="fgroup facet"><summary>'+label+'</summary>'+opts+'</details>';
    }).join('');

    if(cpuRaw.length){
      var fams=[], gens=[], ghzs=[];
      cpuRaw.forEach(function(t){
        var f=cpuFam(t); if(fams.indexOf(f)<0) fams.push(f);
        var g=cpuGen(t); if(g && gens.indexOf(g)<0) gens.push(g);
        var z=cpuGhz(t); if(z && ghzs.indexOf(z)<0) ghzs.push(z); });
      fams.sort(function(a,b){ return FAMORDER.indexOf(a)-FAMORDER.indexOf(b); });
      gens.sort(function(a,b){ return b-a; });
      var famOpts=fams.map(function(f){
        return '<label class="fopt"><input type="checkbox" class="facetbox" data-facet="cpufam" data-tok="'+norm(f)+'">'+f+'</label>';}).join('');
      var genOpts='<option value="">Any generation</option>'+gens.map(function(g){
        return '<option value="'+g+'">'+ord(g)+' Gen</option>';}).join('');
      var steps=[4,3.5,3,2.5,2,1.5,1].filter(function(v){
        return ghzs.some(function(z){return z>=v;}); });
      var ghzOpts='<option value="">Any speed</option>'+steps.map(function(v){
        return '<option value="'+v+'">'+v+' GHz and above</option>';}).join('');
      var cpuBlock='<details class="fgroup facet" open><summary>Processor</summary>'+famOpts+
        '<div class="fsub"><label for="cpuGen">Generation</label>'+
        '<select id="cpuGen">'+genOpts+'</select></div>'+
        '<div class="fsub"><label for="cpuGhz">Speed</label>'+
        '<select id="cpuGhz">'+ghzOpts+'</select></div>'+
        '</details>';
      var parts=html.split('<details');
      if(parts.length>1){ html=parts[0]+cpuBlock+'<details'+parts.slice(1).join('<details'); }
      else { html=html+cpuBlock; }
    }
    facetHost.innerHTML=html;
    [].slice.call(facetHost.querySelectorAll('.facetbox')).forEach(function(c){
      c.addEventListener('change',function(){
        var f=c.getAttribute('data-facet'), t=c.getAttribute('data-tok');
        if(!selectedFacets[f]) selectedFacets[f]={};
        if(c.checked) selectedFacets[f][t]=1; else delete selectedFacets[f][t];
        renderBrowse();
      });
    });
    var gSel=document.getElementById('cpuGen'), zSel=document.getElementById('cpuGhz');
    if(gSel) gSel.addEventListener('change',function(){ curGen=gSel.value; renderBrowse(); });
    if(zSel) zSel.addEventListener('change',function(){ curGhz=parseFloat(zSel.value)||0; renderBrowse(); });
    curGen=''; curGhz=0;
  }

  function passes(m){
    if(selectedDTs.length && !selectedDTs.some(function(d){return m.catTokens.indexOf(d)>-1;})) return false;
    for(var f in selectedFacets){ var sel=Object.keys(selectedFacets[f]); if(!sel.length) continue;
      var terms;
      if(f==='cpufam'){ terms=cpuRawOf(m).map(function(t){return norm(cpuFam(t));}); }
      else { terms=(m.attrs[f]||[]).map(norm); }
      if(!sel.some(function(t){return terms.indexOf(t)>-1;})) return false; }
    if(curGen){ var wantG=parseInt(curGen,10);
      if(!cpuRawOf(m).some(function(t){return cpuGen(t)===wantG;})) return false; }
    if(curGhz){ if(!cpuRawOf(m).some(function(t){return cpuGhz(t)>=curGhz;})) return false; }
    if(m.price<curMin||m.price>curMax) return false;
    var q=norm(searchInput?searchInput.value:''); if(q && m.search.indexOf(q)===-1) return false;
    return true;
  }

  function renderBrowse(){if(!bgrid) return; var list=PRODUCTS.filter(passes);
    bgrid.innerHTML=list.map(card).join('');
    if(bcount) bcount.textContent=list.length+(list.length===1?' product':' products')+' in stock';
    if(bEmpty) bEmpty.style.display=list.length?'none':'';}
  function renderFeatured(){var track=document.getElementById('featTrack'); if(!track) return;
    var list=PRODUCTS.slice(0,12);
    track.innerHTML=list.map(card).join('');
    var mq=document.getElementById('mq'); if(mq) mq.style.display=list.length?'':'none';
    var note=document.getElementById('mqNote'); if(note) note.style.display=list.length?'':'none';
    if(featEmpty) featEmpty.style.display=list.length?'none':'';
    initMarquee();}
  function initMarquee(){
    var track=document.getElementById('featTrack'), mq=document.getElementById('mq');
    if(!track||!mq||track.__mq) return;
    var orig=[].slice.call(track.children); if(!orig.length) return;
    track.__mq=true;
    for(var k=0;k<2;k++){ orig.forEach(function(n){ track.appendChild(n.cloneNode(true)); }); }
    var setW=0; function measure(){ setW=track.children[orig.length].offsetLeft-track.children[0].offsetLeft; }
    measure(); window.addEventListener('resize',measure);
    var x=0,paused=false,speed=0.5;
    function frame(){ if(!paused) x-=speed; if(setW>0){ if(x<=-setW) x+=setW; if(x>0) x-=setW; } track.style.transform='translateX('+x+'px)'; requestAnimationFrame(frame); }
    requestAnimationFrame(frame);
    mq.addEventListener('mouseenter',function(){paused=true;});
    mq.addEventListener('mouseleave',function(){paused=false;});
  }

  function updateFill(){ var span=(PMAX-PMIN)||1;
    var l=((curMin-PMIN)/span)*100, r=((curMax-PMIN)/span)*100;
    if(rFill){ rFill.style.left=l+'%'; rFill.style.width=Math.max(0,r-l)+'%'; } }
  function setupPrice(){
    var prices=PRODUCTS.map(function(p){return p.price;}).filter(function(v){return isFinite(v);});
    if(prices.length){ PMIN=Math.floor(Math.min.apply(null,prices)/10)*10; PMAX=Math.ceil(Math.max.apply(null,prices)/10)*10; }
    if(!(PMAX>PMIN)) PMAX=PMIN+100;
    curMin=PMIN; curMax=PMAX;
    if(rMin){ rMin.min=PMIN; rMin.max=PMAX; rMin.step=10; rMin.value=PMIN; }
    if(rMax){ rMax.min=PMIN; rMax.max=PMAX; rMax.step=10; rMax.value=PMAX; }
    if(pMin){ pMin.value=PMIN; pMin.min=PMIN; pMin.max=PMAX; }
    if(pMax){ pMax.value=PMAX; pMax.min=PMIN; pMax.max=PMAX; }
    updateFill();
  }
  function wirePrice(){
    if(rMin) rMin.addEventListener('input',function(){ var a=parseInt(rMin.value,10),b=parseInt(rMax.value,10);
      if(a>b){a=b; rMin.value=b;} curMin=a; if(pMin)pMin.value=a; updateFill(); renderBrowse(); });
    if(rMax) rMax.addEventListener('input',function(){ var a=parseInt(rMin.value,10),b=parseInt(rMax.value,10);
      if(b<a){b=a; rMax.value=a;} curMax=b; if(pMax)pMax.value=b; updateFill(); renderBrowse(); });
    if(pMin) pMin.addEventListener('input',function(){ var v=parseFloat(pMin.value); if(isNaN(v))v=PMIN;
      curMin=v; if(rMin)rMin.value=Math.max(PMIN,Math.min(v,PMAX)); updateFill(); renderBrowse(); });
    if(pMax) pMax.addEventListener('input',function(){ var v=parseFloat(pMax.value); if(isNaN(v))v=PMAX;
      curMax=v; if(rMax)rMax.value=Math.max(PMIN,Math.min(v,PMAX)); updateFill(); renderBrowse(); });
  }

  function dtToken(box){return norm(box.parentElement.textContent);}
  function wire(){
    var dtBoxes=[].slice.call(document.querySelectorAll('.dtgroup input.dt'));
    function syncDT(){ selectedDTs=dtBoxes.filter(function(b){return b.checked;}).map(dtToken); buildFacets(); renderBrowse(); }
    dtBoxes.forEach(function(box){ box.addEventListener('change',syncDT); });
    if(searchInput) searchInput.addEventListener('input',renderBrowse);
    var sbtn=document.querySelector('.bsearch .btn'); if(sbtn) sbtn.addEventListener('click',function(e){e.preventDefault();renderBrowse();});
    var clr=document.querySelector('.fclear'); if(clr) clr.addEventListener('click',function(){
      dtBoxes.forEach(function(b){b.checked=false;}); selectedDTs=[];
      if(searchInput) searchInput.value='';
      if(rMin)rMin.value=PMIN; if(rMax)rMax.value=PMAX; curMin=PMIN; curMax=PMAX;
      if(pMin)pMin.value=PMIN; if(pMax)pMax.value=PMAX; updateFill();
      buildFacets(); renderBrowse();
    });
    [].slice.call(document.querySelectorAll('.cats .cat')).forEach(function(tile){ tile.style.cursor='pointer';
      tile.addEventListener('click',function(){ var label=norm(tile.textContent); var matched=false;
        dtBoxes.forEach(function(b){ if(dtToken(b)===label){ b.checked=true; matched=true; } else b.checked=false; });
        selectedDTs=matched?[label]:[]; buildFacets(); renderBrowse();
        var bsec=document.getElementById('browse'); if(bsec) bsec.scrollIntoView({behavior:'smooth'});
      }); });
    wirePrice();
  }

  function fetchAll(){var acc=[];function go(p){return fetch(API+'&page='+p,{headers:{'Accept':'application/json'}}).then(function(r){return r.json();}).then(function(d){if(!Array.isArray(d))d=[];acc=acc.concat(d);if(d.length>=100&&p<20)return go(p+1);return acc;});}return go(1);}
  function load(){fetchAll()
    .then(function(d){ if(!Array.isArray(d)) d=[]; PRODUCTS=d.map(model);
      setupPrice(); buildFacets(); renderFeatured(); renderBrowse(); })
    .catch(function(){ if(featGrid)featGrid.style.display='none'; if(featEmpty)featEmpty.style.display='';
      if(bgrid)bgrid.innerHTML=''; if(bcount)bcount.textContent=''; if(bEmpty)bEmpty.style.display=''; });}
  wire(); load();
})();
</script>
<script>(function(){var h=document.querySelectorAll('.nb-half');for(var i=0;i<h.length;i++){var g=h[i].querySelector('.nb-go');if(!g){continue;}var a=document.createElement('a');a.className='nb-hit';a.href=g.getAttribute('href');var w=h[i].querySelector('.nb-word');a.setAttribute('aria-label',w?w.textContent:'Open');h[i].insertBefore(a,h[i].firstChild);}})();</script>
<script>
/* ── sticky filter rail ─────────────────────────────────────────────────
   This page is served inside an <iframe scrolling="no"> whose height is set
   to the FULL document height, so the iframe has no scrollport of its own —
   position:sticky and 100vh are both dead inside it. The real scroller is the
   PARENT window. srcdoc inherits the parent origin, so we can read the parent
   scroll directly and translate the rail ourselves.                        */
(function(){
  var GAP=16, MOBILE=900;
  function init(){
    var rail=document.querySelector('.filters');
    var grid=rail&&rail.parentNode;
    if(!rail||!grid) return;
    var fe=null, pw=null;
    try{ fe=window.frameElement; pw=window.parent; }catch(e){ return; }
    if(!fe||!pw||pw===window) return;          /* standalone preview: no-op */
    var raf=0;
    function apply(){
      raf=0;
      if(window.innerWidth<=MOBILE||grid.offsetHeight<=rail.offsetHeight+40){
        rail.style.transform=''; rail.style.maxHeight=''; rail.classList.remove('fstick'); return; }
      var bar=0;
      try{ var ab=pw.document.getElementById('wpadminbar');
           if(ab) bar=ab.getBoundingClientRect().height; }catch(e){}
      var frameTop=fe.getBoundingClientRect().top;
      var avail=pw.innerHeight-bar-GAP*2;
      if(avail<240) avail=240;
      rail.style.maxHeight=avail+'px';
      rail.classList.add('fstick');
      var gridTop=grid.offsetTop;
      var want=(-frameTop)+bar+GAP-gridTop;
      var max=grid.offsetHeight-rail.offsetHeight-8;
      if(max<0) max=0;
      if(want<0) want=0;
      if(want>max) want=max;
      rail.style.transform='translateY('+Math.round(want)+'px)';
    }
    function tick(){ if(!raf) raf=requestAnimationFrame(apply); }
    /* the wheel must scroll the RAIL, not the page, while the pointer is over it.
       A synthetic/child-frame wheel does not always chain into an iframe's inner
       scroller, so drive it explicitly and hand the page back at the two ends. */
    rail.addEventListener('wheel',function(e){
      if(!rail.classList.contains('fstick')) return;
      var dy=e.deltaY; if(!dy) return;
      var atTop=rail.scrollTop<=0;
      var atEnd=rail.scrollTop+rail.clientHeight>=rail.scrollHeight-1;
      if((dy<0&&atTop)||(dy>0&&atEnd)) return;
      rail.scrollTop+=dy; e.preventDefault();
    },{passive:false});
    pw.addEventListener('scroll',tick,{passive:true});
    pw.addEventListener('resize',tick);
    window.addEventListener('resize',tick);
    if(window.ResizeObserver){ new ResizeObserver(tick).observe(grid); new ResizeObserver(tick).observe(rail); }
    setTimeout(apply,300); setTimeout(apply,1200); apply();
  }
  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',init);
  else init();
})();
</script>
</body>
</html>
